Remove-AI-Watermarks - CLI et bibliothèque pour supprimer les filigranes IA des images
(github.com/wiltodelta)- Remove-AI-Watermarks est un CLI et une bibliothèque Python qui traitent en une seule fois les filigranes visibles, les filigranes invisibles et les métadonnées de génération IA sur des images créées avec Google Gemini (Nano Banana), ChatGPT/DALL-E, Stable Diffusion, Adobe Firefly, Midjourney, etc.
- La suppression des filigranes visibles cible le logo sparkle de Gemini/Nano Banana et s’appuie sur un inverse alpha blending avec une alpha map connue ainsi que sur un inpainting par masque de gradient ; le traitement prend environ 0,05 seconde par image et ne nécessite pas de GPU.
- La suppression des filigranes invisibles atténue des motifs dans les domaines pixel et fréquentiel comme SynthID, StableSignature et TreeRing via une régénération basée sur la diffusion ; le profil par défaut utilise SDXL et un pipeline natif d’environ 1024 px.
- Le nettoyage des métadonnées cible EXIF, les PNG text chunks, XMP
DigitalSourceTypeet les C2PA Content Credentials ; il supprime les champs liés à l’IA qui déclenchent les libellés « Made with AI » sur Instagram, Facebook et X(Twitter), tout en conservant les métadonnées standard comme Author, Copyright et Title. - La prise en charge inclut le logo sparkle, SynthID et C2PA/EXIF de Google Gemini/Nano Banana/Gemini 3 Pro, le C2PA de OpenAI DALL-E 3/ChatGPT, les PNG text chunks et les filigranes stéganographiques de Stable Diffusion, les Content Credentials d’Adobe Firefly, ainsi que les EXIF/XMP de Midjourney.
- Smart Face Protection détecte les personnes avec YOLO avant le traitement par diffusion pour extraire les visages, puis réintègre les visages d’origine après traitement avec un masque elliptique doux afin de réduire la déformation des traits.
- Analog Humanizer ajoute en option du grain de film et une aberration chromatique pour donner au résultat l’apparence d’une photo prise d’un écran, et est présenté comme un moyen de contourner les classificateurs d’images IA.
- L’installation recommandée est
pipx install git+https://github.com/wiltodelta/remove-ai-watermarks.gitouuv tool install git+https://github.com/wiltodelta/remove-ai-watermarks.git, et l’installation par défaut inclut la suppression des filigranes visibles et des métadonnées. - Les prérequis sont Python 3.10+ ; la suppression des filigranes visibles et le traitement des métadonnées peuvent fonctionner uniquement sur CPU, tandis qu’un GPU CUDA ou MPS est recommandé pour la suppression des filigranes invisibles, même si cela fonctionne aussi lentement sur CPU.
- La suppression des filigranes invisibles télécharge automatiquement un modèle d’environ 2 Go au premier lancement, et le périphérique est détecté automatiquement dans l’ordre CUDA (Linux/Windows) > MPS (macOS) > CPU, avec possibilité de le définir via
--device. - Le CLI s’utilise par exemple avec
remove-ai-watermarks all image.png -o clean.png, et pour le traitement par lot d’un répertoire avecremove-ai-watermarks batch ./images/ --mode all; des sous-commandesvisible,invisibleetmetadatasont aussi fournies. - L’API Python peut utiliser
GeminiEnginepour détecter et supprimer des filigranes, ethas_ai_metadata,remove_ai_metadatapour vérifier et supprimer les métadonnées IA d’une image. - La feuille de route mentionne des tests de régression automatiques pour SynthID-Image v2, les limites de suppression des EXIF/XMP internes dans AVIF/HEIF/JPEG-XL, ainsi qu’un pipeline vidéo prévu dans un package séparé ; la suppression de Nightshade/Glaze/PhotoGuard n’est pas prise en charge car elle est considérée comme une attaque contre les protections des artistes.
- La section juridique indique que l’indication d’origine IA est réglementée dans plusieurs juridictions, que supprimer ces informations dans l’intention de tromper sur la provenance peut enfreindre la loi, le DMCA ou les conditions des plateformes, et que la responsabilité du respect de ces règles incombe à l’utilisateur.
- Le modèle de menace se concentre sur l’aide à des images IA déjà diffusées pour faire face aux systèmes de détection automatique et aux libellés « Made with AI », tout en avertissant que si le fichier source a transité par le compte du créateur ou par les systèmes de Google, cela ne permet pas d’anonymiser les traces côté serveur.
1 commentaires
Commentaires sur Hacker News
Je trouve que les commentaires d’un autre fil à propos de SynthID et d’OpenAI ont été sous-estimés, alors qu’ils saisissent bien ce que devrait être l’esprit hacker dans cette affaire
Nous attachons de l’importance à la vie privée, donc nous ne devrions pas accepter des outils qui apposent un code-barres sur chaque action numérique. L’argument « ils ne le font pas encore comme ça » n’est pas très convaincant non plus
L’esprit hacker devrait avant tout consister à faire tourner des modèles open source en local sans dépendre des entreprises
Elles finissent par vouloir les moyens d’identifier et de punir ceux qui menacent leur pouvoir
Si la vie privée est importante, il faut utiliser des modèles locaux
S’il y a une indication claire que quelque chose est de l’IA, je trouve même ça plutôt bien, parce qu’on peut alors ignorer tout le reste provenant de cette source
Cet outil est un bon moyen de le montrer aux gens
Par exemple, dans le cas d’une suppression d’objet plus complexe dans un éditeur photo
C’est amusant de voir ce billet juste une ligne au-dessus de OpenAI Adopts SynthID Watermarks
Apposer un watermark sur des images générées à partir de données d’entraînement issues de contenus protégés volés me semble quand même poser problème, même si je comprends l’idée de vouloir distinguer le vrai du faux
Dans le cas de Gemini, cette explication est un peu trompeuse. Ce qui est réellement supprimé, ce sont seulement les watermarks visibles
Pour retirer SynthID, il faut régénérer l’image avec SDXL à un faible niveau de bruit, ce qui risque d’abîmer beaucoup de petits détails et ne fonctionnera probablement pas correctement en haute résolution. NB2 et GPT Image 2 prennent en charge des sorties d’image jusqu’à 4K
Au-delà, c’est de l’upscaling, donc similaire à SDXL. GPT Image 2 prend nativement en charge la 4K, mais c’est encore expérimental
Pour supprimer le watermark de Gemini, il suffit d’ouvrir les outils de développement et de bloquer la requête HTTP vers
watermarkC’est juste un logo superposé côté client
L’explication « cas d’usage adapté au modèle de menace : préserver l’art ou les archives historiques contre des étiquettes “généré par IA” faussement positives » me paraît difficile à avaler
Je ne vois pas ce que la génération d’images par IA a à voir avec ça. Un générateur d’images ne peut pas insérer un watermark dans quelque chose qu’il n’a pas créé, et si, comme le dit le README, il s’agit d’un watermark d’une fidélité suffisante pour remonter jusqu’à un identifiant de session précis, alors il semble aussi très peu probable qu’un faux positif apparaisse sur une œuvre créée par un humain. En plus, modifier une image pour effacer son watermark altère inévitablement l’objet même qu’on prétend « préserver »
Plus je lis le README, plus je suis convaincu que ses cas d’usage sont du baratin, et que l’objectif réel est de fournir un outil permettant de contourner les étiquettes “généré par IA” pour publier des images d’IA de mauvaise qualité sur les réseaux sociaux
En pratique, il est très facile de prendre une vraie image et de demander à Gemini ou ChatGPT de ne modifier qu’une toute petite partie. Cela peut être un changement mineur comme l’éclairage ou les ombres, et l’image obtenue est souvent détectée par l’outil de watermarking concerné. De cette manière, on peut facilement présenter n’importe quelle image réelle comme une image générée par IA
Indépendamment de ce qu’on pense de ce projet en particulier, je crois que la voie à suivre est davantage du côté de la preuve d’authenticité des ressources non-IA que des tentatives de mettre des watermarks sur tout ce qui est généré par IA
Le watermarking ne fonctionne vraiment bien que si la méthode reste secrète
Intégrer un texte chiffré dans du bruit haute fréquence est une vieille approche. Dans le domaine des modèles génératifs, il serait bien plus intéressant d’exploiter la flexibilité de la génération pour encoder dans des structures macroscopiques
Pourquoi ne pas simplement utiliser des modèles open source ?