Retour aux mises à jour
New releaseSep 4, 2026

remove-ai-watermarks v0.37.1

Supprimez les filigranes IA visibles et invisibles ainsi que les métadonnées de provenance des images et des vidéos. Bibliothèque Python et CLI pour SynthID, C2PA, EXIF, IPTC, XMP et les marques courantes d'IA générative.

Partager

Supprimer les filigranes IA

Supprimez les marques de provenance IA des images et vidéos que vous avez générées vous-même :

  • les étiquettes visibles connues telles que le filigrane en forme d'étincelle de Google Gemini et les marques textuelles des fournisseurs ;
  • les filigranes invisibles dans les pixels via une perturbation directe du format local ou une régénération par diffusion ;
  • les métadonnées C2PA, EXIF, XMP, IPTC et les métadonnées IA associées.

La prise en charge vidéo couvre l'identification de la provenance, le nettoyage complet des éléments visibles et des métadonnées, les traitements par lots de répertoires, la suppression des marques visibles de Sora, Veo, Seedance, Doubao, Dola, Hailuo AI et Kling AI, ainsi que la régénération VAE certifiée par oracle pour la suppression du SynthID vidéo.

raiw.cc exécute cette bibliothèque en tant que service hébergé, avec le GPU inclus et rien à installer. La suppression des marques visibles et des métadonnées en sortie Standard jusqu'à 12 MP y est gratuite ; la résolution d'origine au-delà de 12 MP et la suppression des filigranes invisibles sont payantes.

PyPI Python Downloads License Tests Sponsor skills.sh

Ce projet est destiné à un usage licite sur du contenu que vous possédez. Il ne cible pas les aperçus d'agences de stock ou d'autres filigranes qui protègent du contenu payant tiers. Voir portée, sécurité et notes juridiques.

Choisissez ce que vous voulez faire

ObjectifCommandeGPU
Trouver les signaux de provenance et les filigranesidentifyNon
Classifier une photographie à partir des pixels (opt-in, pas de provenance)classifyNon
Supprimer les marques IA visibles connuesvisibleNon
Effacer une région que vous sélectionnezeraseNon
Retirer les métadonnées IAmetadataNon
Identifier la provenance vidéo prise en chargevideo identifyNon
Supprimer les marques visibles et les métadonnées IA d'une vidéovideo allNon
Retirer les métadonnées IA d'une vidéovideo metadataNon
Supprimer une marque IA visible enregistrée d'une vidéovideo visibleNon
Traiter un répertoire de vidéosvideo batchDépend du mode
Appliquer le profil calibré de suppression du SynthID des pixels vidéovideo invisibleRecommandé
Régénérer une image pour perturber les filigranes invisiblesinvisibleRequis (CUDA)
Exécuter la suppression des éléments visibles, invisibles et des métadonnéesallRecommandé
Traiter un répertoirebatchDépend du mode

Les déclarations InvisMark de Microsoft Paint et Photos sont automatiquement routées vers la régénération des pixels. La commande all supprime à la fois le filigrane invisible dans les pixels et son manifeste C2PA associé ; le simple retrait des métadonnées ne supprime que le manifeste. Une API Python spécialisée peut inspecter et perturber la charge utile locale validée Watermarker.dll sans diffusion.

Modes d'installation

BesoinInstallation
Inspection et retrait des métadonnéesremove-ai-watermarks
Classification photographie IA versus appareil photoremove-ai-watermarks[classify]
Classification des exports sources OpenAI/Google/inconnuesremove-ai-watermarks[source-classify]
Détection et suppression des éléments visiblesremove-ai-watermarks[visible]
Traitement vidéo des éléments visiblesremove-ai-watermarks[video]
Suppression du SynthID vidéoremove-ai-watermarks[video,diffusion]
Détection DWT-DCT sans Torchremove-ai-watermarks[detect]
Perturbation directe locale de Paint InvisMarkremove-ai-watermarks[pixels]
Suppression des filigranes invisibles d'image (nécessite CUDA)remove-ai-watermarks[qwen-zimage]
Toutes les fonctionnalités de production disponibles sur le Python actifremove-ai-watermarks[all]

Les extras de niveau inférieur et spécialisés incluent pixels, heif, trustmark, migan, lama, diffusion, classify-onnx et source-classify. Le guide d'installation documente leur composition exacte en dépendances, leur compatibilité Python et leurs exigences de modèles.

Démarrage rapide

Installez la CLI par défaut axée sur les métadonnées :```bash uv tool install remove-ai-watermarks

Inspecter une image :```bash
remove-ai-watermarks identify image.png

Pour classifier une photographie à partir des pixels (IA versus appareil photo, fournisseur facultatif), installez l'extra et appelez classify. identify ne le démarre jamais :```bash uv tool install --force "remove-ai-watermarks[classify]" remove-ai-watermarks classify image.png

Guide : [classification de pixels de photos](https://github.com/wiltodelta/remove-ai-watermarks/blob/main/docs/photo-classify.md).

Pour un signal léger et avec abstention, propre aux exports OpenAI/Google/inconnus après
suppression des métadonnées, utilisez l'API Python séparée. Ce n'est pas un détecteur SynthID :```python
import remove_ai_watermarks as raiw

result = raiw.classify_source("image.png")
print(result.label, result.reason)

Installez remove-ai-watermarks[source-classify]. Guide : source-pipeline classification.

La provenance signée est la voie prise en charge pour SynthID et identify la lit. Il n'existe aucun détecteur local de pixels SynthID dans le paquet. La recherche sur un expert en réseau périodique se trouve dans scripts/synthid_runtime/ et synthid-detector-research.md.

Pour la suppression de filigrane visible, installez les dépendances de pixels :```bash uv tool install --force "remove-ai-watermarks[visible]"

Puis supprimez une marque visible connue et les métadonnées IA :```bash
remove-ai-watermarks visible image.png -o clean.png

Supprimer les métadonnées sans exécuter d'inpainting visible ni de diffusion :```bash remove-ai-watermarks metadata image.png --remove -o clean.png

Sans `-o`, cette commande écrase la source sur place.

Inspecter ou supprimer les métadonnées IA d'un fichier MP4, MOV, M4V, WebM, MKV, AVI ou FLV :```bash
remove-ai-watermarks video metadata input.mp4 --check
remove-ai-watermarks video metadata input.mp4 --remove -o clean.mp4

La commande video metadata ne transcode pas les flux vidéo ou audio. Contrairement à la commande image ci-dessus, lorsque -o est omis, elle écrit <source>_clean et préserve l'original. L'inspection MP4 et MOV inclut la balise native TC260 AIGC dans moov.udta.meta.keys/ilst, y compris un moov placé après la charge utile média, ainsi que les variantes meta au format QuickTime écrites par l'export iOS de Doubao (une boîte meta nue comme enfant direct de moov, et une liste de métadonnées hdlr=mdir sans clé). Les entrées workflow et prompt à clé dans la même structure de liste de métadonnées sont également détectées et supprimées, y compris les exports ComfyUI. L'inspection MKV et WebM lit le placement normatif Segment.Tags.Tag.SimpleTag. AVI utilise LIST/INFO/AIGC, tandis que FLV utilise script.onMetaData.AIGC. Les formats non-ISOBMFF sont remuxés avec copie de flux pour la suppression.

Utilisez le chemin vidéo orienté produit pour identifier ou nettoyer un fichier :```bash uv tool install --force "remove-ai-watermarks[video]" remove-ai-watermarks video identify input.mp4 remove-ai-watermarks video all input.mp4 -o clean.mp4

`video all` supprime une marque visible enregistrée stable lorsqu'elle est présente et retire toujours les métadonnées IA vérifiées. Si aucun des deux signaux n'est trouvé, il écrit quand même un passthrough dans le même conteneur, afin que les appelants de l'application obtiennent un contrat de sortie prévisible. La suppression propriétaire de vidéo invisible est exclue par défaut.
`--invisible` active le profil SynthID vidéo avec perte, certifié par oracle.

Traiter un répertoire avec le même contrat :```bash
remove-ai-watermarks video batch ./videos --mode all

Supprimer une marque vidéo visible prise en charge :```bash remove-ai-watermarks video visible input.mp4 -o clean.mp4 remove-ai-watermarks video visible veo.mp4 --mark veo -o veo_clean.mp4 remove-ai-watermarks video visible seedance.mp4 --mark seedance -o seedance_clean.mp4 remove-ai-watermarks video visible dola.mp4 --mark dola -o dola_clean.mp4 remove-ai-watermarks video visible hailuo.mp4 --mark hailuo -o hailuo_clean.mp4 remove-ai-watermarks video visible kling.mp4 --mark kling -o kling_clean.mp4

Ce chemin analyse la séquence complète avant de modifier les pixels. Il n'accepte qu'une marque qui se répète à une position stable sur des images adjacentes, puis réutilise les mêmes backends de remplissage OpenCV, MI-GAN ou LaMa que pour la suppression d'image. L'audio est copié sans ré-encodage et est autorisé à atteindre sa fin naturelle ; le flux vidéo est transcodé car ses pixels changent. Par défaut, une passe de flux optique sous garde aligne en mouvement le remplissage accepté précédent et le mélange uniquement lorsque le contexte source voisin est cohérent ; utilisez `--no-temporal-consistency` pour la désactiver.
L'encodeur préserve l'échantillonnage de chroma source 8 bits pris en charge, les balises de couleur et l'échelle de temps des pistes MP4/MOV au lieu de s'appuyer sur les valeurs par défaut implicites raw-BGR de ffmpeg. Les intervalles d'images variables sont préservés via un pont NUT en mémoire horodaté au lieu d'être aplatis au débit d'images moyen. Les horodatages de début source non nuls sont conservés avec le décalage audio copié. Le `--mark auto` par défaut analyse tous les fournisseurs en une seule passe de décodage et sélectionne la première correspondance stable dans l'ordre de spécificité indiqué ci-dessous. Passez une marque explicite pour restreindre la détection à un seul fournisseur.
Sora couvre la mascotte Sora 2 en mouvement et le logotype. Veo couvre à la fois le losange à quatre points actuel et le texte hérité `Veo`. Seedance couvre l'étiquette encadrée fixe `AI`, Dola couvre le texte fixe `Dola AI`, Hailuo AI couvre l'étiquette composite `MINIMAX | hailuo AI`, et Kling AI couvre l'étiquette en bas à droite `KLING AI` ou `KlingAI` avec son suffixe de version. Un encodage terminé est publié de manière atomique. Aucune sortie n'est écrite lorsqu'aucune marque stable n'est trouvée.
Les entrées HDR, PQ/HLG et supérieures à 8 bits sont rejetées avant l'encodage plutôt que silencieusement réduites via la frontière BGR 8 bits d'OpenCV.

Appliquez le profil calibré de suppression SynthID sur les pixels vidéo :```bash
uv tool install --force "remove-ai-watermarks[video,diffusion]"
remove-ai-watermarks video invisible input.mp4 -o clean.mp4

Ce chemin régénère la séquence complète avec un champ de bruit latent partagé dans le temps, copie l'audio complet, supprime les métadonnées source et publie l'encodage terminé de manière atomique. Le profil par défaut noise_std=0.15 a passé à la fois la calibration à deux porteuses et une vérification oracle Veo publique complète de huit secondes. Google ne publie pas de décodeur local, donc une vérification fraîche auprès du fournisseur reste utile pour les fichiers particulièrement importants ou après des changements de fournisseur, mais ce n'est pas un état de résultat produit. La CLI décrit donc une régénération des pixels vidéo au lieu de revendiquer un verdict SynthID par fichier, et rapporte le filigrane audio copié comme UNVERIFIED.

Pour la suppression de filigrane invisible via la CLI ou l'API de haut niveau, installez l'extra qwen-zimage. Un GPU NVIDIA est requis : tous les profils de diffusion sont CUDA uniquement, et il n'y a pas de repli CPU ou MPS. L'API locale spécialisée Paint utilise l'extra pixels sans CUDA.```bash uv tool install --force "remove-ai-watermarks[qwen-zimage]" remove-ai-watermarks invisible image.png -o clean.png

Si les détecteurs locaux ne peuvent pas confirmer un filigrane invisible mais que vous savez que l'image provient d'un générateur d'IA, ajoutez `--force` :```bash
remove-ai-watermarks invisible image.png -o clean.png --force

Les images à forte composante typographique peuvent activer la passe expérimentale de vérification du texte après coup. Elle accepte des chaînes et des boîtes de lignes revues manuellement ou un manifeste géométrique uniquement vérifié par un opérateur ; elle ne traite jamais la sortie OCR brute comme vérité de référence et ne s'exécute pas automatiquement :```bash uv tool install --force "remove-ai-watermarks[text-restoration]" remove-ai-watermarks invisible image.png -o clean.png
--text-manifest verified-lines.json --force

Consultez le [guide CLI](https://github.com/wiltodelta/remove-ai-watermarks/blob/main/docs/cli.md#restore-operator-verified-text) pour le schéma du manifeste, les restrictions de compatibilité et les mises en garde relatives à l'oracle.

Consultez le [guide d'installation](https://github.com/wiltodelta/remove-ai-watermarks/blob/main/docs/installation.md) pour Homebrew, uv, les fonctionnalités optionnelles et la configuration de développement.

## Exemples

### Marque Gemini visible

| Avant | Après |
| --- | --- |
| ![Image avec un filigrane Gemini visible](https://assets.kitploit.com/production/public/readmes/7369/4f6643f46057e4a4ec503f5bf0daf7243768915090f2d7fc5ac183c2d928c5ca.png) | ![Image après suppression du filigrane visible](https://assets.kitploit.com/production/public/readmes/7369/45193ef965a27342b183a1834b01ef812f653da2ec356a81fce1aed79f1ef814.png) |

Le raster `after` est généré à partir du raster `before` suivi par le chemin public :```bash
uv run remove-ai-watermarks visible demo_banana_before.png \
  --backend cv2 -o demo_banana_after.png

Suppression invisible de haute qualité

qwen-zimage est le profil par défaut : une passe Qwen-Image-2512 Lightning sous Canny ControlNet, suivie d'une réparation Z-Image masquée par SAM de tout visage détecté. L'alternative, sdxl-zimage, remplace l'étape globale par SDXL et conserve la même étape de visage. Un troisième profil, chroma-zimage, utilise la passe globale Chroma1 sous Apache-2.0 avec ses propres seuils minimaux de fournisseur ; voir docs/chroma1-engine-research.md pour la calibration. --pipeline auto sélectionne sdxl-zimage pour Google, chroma-zimage pour Microsoft, et qwen-zimage sinon. Tous sont CUDA uniquement.```bash uv tool install --force "remove-ai-watermarks[qwen-zimage]" remove-ai-watermarks invisible image.png -o clean.png --force

| Exemple OpenAI avant | Exemple OpenAI après |
| --- | --- |
| [![Grille de portraits OpenAI avant qwen-zimage](https://assets.kitploit.com/production/public/readmes/7369/28ff8732b037f98a4ef5bc277bbcdaa32e5eb9ccbd00b6c8c616e46ef68ae8a0.png)](data/synthid/originals/ChatGPT%20Image%20May%2030,%202026,%2010_31_08%20AM.png) | [![Grille de portraits OpenAI après qwen-zimage](https://assets.kitploit.com/production/public/readmes/7369/8066deab6162ef4fba352ffb475a119bfe94f097a4f5531e0fe141cbb8e089b5.png)](docs/images/qwen-zimage/ChatGPT/ChatGPT%20Image%20May%2030,%202026,%2010_31_08%20AM_full_clean.png) |

| Exemple Gemini avant | Exemple Gemini après |
| --- | --- |
| [![Panneau Gemini avant qwen-zimage](https://assets.kitploit.com/production/public/readmes/7369/4affd7f27767a445db6abf741355743ba8d95108ad922c9fff045feed8492236.png)](data/synthid/originals/Gemini_Generated_Image_633uuy633uuy633u.png) | [![Panneau Gemini après qwen-zimage](https://assets.kitploit.com/production/public/readmes/7369/42858417874f6cd8bc7c9bdb39f6bde8aa32310a3e219e7ee2dff23a4742c7b1.png)](docs/images/qwen-zimage/Gemini/Gemini_Generated_Image_633uuy633uuy633u_full_clean.png) |

Ces fichiers de sortie exacts ont été vérifiés avec les vérificateurs du fournisseur correspondant. Ce
résultat s'applique à ces fichiers, et non à chaque seed, image ou future version
de filigrane.

## Recettes courantes

### Supprimer toutes les marques visibles détectées```bash
remove-ai-watermarks visible image.png -o clean.png

Le --mark auto par défaut vérifie toutes les marques visibles enregistrées et supprime chaque correspondance. Si la marque vous est visible mais que le détecteur la manque, sélectionnez explicitement sa région :```bash remove-ai-watermarks erase image.png
--region 1640,1930,400,100
-o clean.png

`--region` utilise `x,y,width,height` et peut être répété.

### Utiliser un backend de remplissage appris

L'extra `visible` utilise l'inpainting OpenCV lorsqu'aucun backend appris n'est installé.
Pour les arrière-plans plus difficiles, les extras de backend appris incluent automatiquement
les mêmes dépendances de pixels :```bash
uv tool install --force "remove-ai-watermarks[migan]"
remove-ai-watermarks visible image.png -o clean.png --backend migan
  • -p, --port : Port d'écoute (défaut : 8080).
  • -t, --threads : Nombre de threads (défaut : 100).
  • -d, --debug : Activer le mode debug.
  • -h, --help : Afficher l'aide.```bash uv tool install --force "remove-ai-watermarks[lama]" remove-ai-watermarks visible image.png -o clean.png --backend lama
### Réduire l'utilisation de la mémoire CUDA```bash
remove-ai-watermarks invisible image.png -o clean.png \
  --cpu-offload --force

Le déchargement CPU réduit la pression sur la mémoire CUDA en déplaçant les composants du modèle entre le CPU et le GPU, au prix de la vitesse.

Traiter un répertoire```bash

remove-ai-watermarks batch ./images --mode visible remove-ai-watermarks batch ./images --mode all

## Ce que l'outil peut reconnaître

La prise en charge des marques visibles inclut :

- le filigrane scintillant visible de Google Gemini et Nano Banana ;
- Doubao, le logotype Jimeng et la pastille `AI生成` en haut à gauche, Qwen, Kling AI,
  Yuanbao, Baidu, le logotype en bas au centre et la pastille compacte en haut à gauche de LiblibAI,
  et les étiquettes RunningHub ;
- une variante calibrée du badge IA blanc en haut à droite de Microsoft ;
- une variante calibrée de l'étiquette Samsung Galaxy AI.

L'inspection des métadonnées et de la provenance couvre C2PA, EXIF, XMP, IPTC, les
paramètres de générateur courants dans les conteneurs d'images et de vidéos, les étiquettes
AIGC TC260 de Chine, et plusieurs signaux propres à certains fournisseurs. Des décodeurs
optionnels ajoutent la prise en charge des filigranes ouverts DWT-DCT et d'Adobe TrustMark.

La matrice de prise en charge exacte, y compris les limites importantes liées aux locales et
aux détecteurs, se trouve dans [supported signals](https://github.com/wiltodelta/remove-ai-watermarks/blob/main/docs/supported-signals.md). La
[galerie d'exemples synthétiques](https://github.com/wiltodelta/remove-ai-watermarks/blob/main/data/fixtures/visible/README.md) contient un échantillon
canonique pour chaque marque d'image et de vidéo enregistrée.

## Comment ça fonctionne

La suppression des marques visibles suit trois étapes :

1. Détecter une marque enregistrée dans sa zone attendue.
2. Construire un masque autour de la marque.
3. Remplir uniquement la région masquée avec OpenCV, MI-GAN ou LaMa.

La suppression des métadonnées utilise un effacement adapté au format. La suppression des
métadonnées JPEG préserve le scan d'image encodé au lieu de le recompresser. Les valeurs
TC260 natives MP4/MOV et les paramètres de génération à clé sont effacés sans modifier la
taille des boîtes ni les décalages des médias. Les autres conteneurs pris en charge utilisent
leur chemin de métadonnées correspondant.

La suppression invisible via la CLI et l'API de haut niveau régénère l'image à travers
un pipeline de diffusion. Des appelants spécialisés peuvent plutôt décoder et perturber le
format local Microsoft Paint positivement identifié avec des modifications de pixels bien plus
faibles. Aucun des deux chemins ne peut garantir que chaque vérificateur propriétaire
rejettera chaque sortie.

Voir [supported signals](https://github.com/wiltodelta/remove-ai-watermarks/blob/main/docs/supported-signals.md) et
[known limitations](https://github.com/wiltodelta/remove-ai-watermarks/blob/main/docs/known-limitations.md) pour la frontière technique complète.

## API Python

L'API de suppression des marques visibles nécessite `remove-ai-watermarks[visible]`.```python
import remove_ai_watermarks as raiw

result, removed = raiw.remove_visible("watermarked.png", "clean.png")
print(removed)

report = raiw.remove_visible_detailed("watermarked.png", "clean.png")
print(report.status)  # cleaned | partial | unvalidated | no_watermark

complete = raiw.remove_all("watermarked.png", "clean.png")
print(complete.visible_status, complete.visible_marks)

images = raiw.remove_batch("images", "images_clean", mode="visible")
for item in images.items:
    print(item.source, item.visible_status, item.visible_marks)

provenance = raiw.identify_video("input.mp4")
report = raiw.inspect_video_metadata("input.mp4")
complete = raiw.remove_video_all("input.mp4", "clean.mp4")
print(complete.visual_invisible_action, complete.audio.watermark_status)
batch = raiw.remove_video_batch("videos", "videos_clean")
cleaned = raiw.remove_video_metadata("input.mp4")
synthid_cleaned = raiw.remove_video_invisible("input.mp4", "synthid_clean.mp4")
print(synthid_cleaned.visual_invisible_action, synthid_cleaned.audio.watermark_status)
visible = raiw.remove_video_visible("input.mp4", "clean.mp4")
print(visible.mark)
veo = raiw.remove_video_visible("veo.mp4", "veo_clean.mp4", mark="veo")
seedance = raiw.remove_video_visible(
    "seedance.mp4",
    "seedance_clean.mp4",
    mark="seedance",
)
dola = raiw.remove_video_visible("dola.mp4", "dola_clean.mp4", mark="dola")

L'API de haut niveau accepte un chemin de fichier ou un tableau NumPy BGR. Pour les entrées par chemin, elle lit également les métadonnées de provenance, préserve le canal alpha et peut supprimer les métadonnées IA du résultat écrit.

Consultez le guide de l'API Python pour la suppression visible, le pipeline complet remove_all et remove_batch, l'inspection de la provenance, la suppression des métadonnées et l'utilisation de la diffusion.

Compétence d'agent

Les agents de codage peuvent installer la compétence publiée et piloter cette CLI :```bash npx skills add wiltodelta/remove-ai-watermarks

Claude Code peut ajouter ce dépôt en tant que marketplace de plugins :```text
/plugin marketplace add wiltodelta/remove-ai-watermarks
/plugin install remove-ai-watermarks@remove-ai-watermarks

La compétence refuse les marques d'agences de stock et autres marques d'actifs payants tierces. Voir le guide de compétence de l'agent.

ComfyUI

Le paquet séparé ComfyUI Remove AI Watermarks fournit des nœuds pour la suppression visible, la détection, l'effacement de régions et la suppression invisible.

Limitations importantes

  • Un signal local manquant signifie inconnu, pas propre. Les filigranes pixel propriétaires peuvent subsister après la suppression des métadonnées.
  • La suppression visible reconstruit une petite région. Les résultats dépendent de l'arrière-plan et du backend de remplissage sélectionné.
  • La suppression invisible modifie toute l'image et peut altérer les visages, le texte ou les détails fins.
  • La suppression vidéo visible reconnaît le mot-symbole mobile Sora 2, le losange Veo actuel plus le texte hérité Veo, l'étiquette AI encadrée de Seedance, et les étiquettes fixes Doubao, Dola, Hailuo AI et Kling AI. Elle ne reconnaît pas l'ancienne spirale d'angle Sora Turbo ni les dispositions non enregistrées de ces fournisseurs. Le backend classique OpenCV peut étaler les arrière-plans structurés ; utilisez MI-GAN ou LaMa lorsque la qualité de récupération importe.
  • La régénération Video SynthID modifie la résolution, la fréquence d'images et les détails de l'image. Le profil fourni est certifié par oracle, mais aucun décodeur local public ne peut certifier une sortie arbitraire à l'exécution. Revérifiez les sorties particulièrement importantes après les changements de fournisseur.
  • La suppression de filigrane invisible via la CLI et l'API de haut niveau nécessite CUDA. Tous les profils de diffusion refusent tout autre dispositif à la construction plutôt que de se rabattre sur un dispositif qui ne peut pas les exécuter. L'API locale spécialisée Paint, la suppression visible, la suppression des métadonnées et identify fonctionnent sans CUDA.
  • Les systèmes de filigrane des fournisseurs peuvent changer. Validez les sorties importantes avec le vérificateur propre du fournisseur lorsqu'il en existe un.

La commande fournie video invisible utilise le profil certifié noise_std=0.15. Le harnais de recherche compagnon scripts/video_synthid_sweep.py construit un contrôle de ré-encodage apparié plus des candidats régénérés par VAE et laisse le verdict du vérificateur vide :```bash uv run --extra video --extra diffusion python scripts/video_synthid_sweep.py input.mp4 -o sweep/

Pour évaluer ce qu'une sortie a réellement coûté, utilisez `scripts/video_fidelity_probe.py` :
le PSNR propre au moteur est mesuré après le redimensionnement de l'entrée et avant l'encodage
final, de sorte que seule la sonde voit l'image livrée.```bash
uv run --extra video python scripts/video_fidelity_probe.py input.mp4 input_clean.mp4

Le contrôle doit toujours être SynthID-positif avant qu'un candidat négatif puisse compter comme preuve de suppression. Dans la calibration à deux clips du 2026-07-29, les deux contrôles appariés étaient positifs dans le vérificateur SynthID intégré de Gemini ; le candidat le plus fort était négatif sur les deux porteurs, tandis qu'un candidat plus faible était négatif sur un seul. Un suivi adversarial ultérieur qui demandait à Gemini ordinaire de réinterpréter le résultat au niveau des pixels a renvoyé UNAVAILABLE ; ce suivi n'était pas une réexécution du vérificateur et n'invalide pas les verdicts intégrés. Une vérification sur clip complet du 2026-07-31 sur un échantillon Veo public de huit secondes a trouvé que 0.10 était encore détecté et que 0.15 ne l'était pas, donc 0.15 est désormais la valeur par défaut certifiée. Les hachages reproductibles et les verdicts pour cette vérification sur clip complet -- un porteur, deux lignes -- se trouvent dans data/evaluations/video-synthid-oracle.csv. La calibration antérieure à deux clips est purement narrative : ses verdicts n'ont pas été consignés dans un manifeste suivi, donc considérez que la valeur par défaut certifiée repose sur les lignes du 2026-07-31.

Documentation

Commencez par l'index de la documentation.

Les notes de recherche et les expériences historiques sont listées séparément dans l'index de la documentation. Elles expliquent des décisions passées mais ne définissent pas l'API publique actuelle.

Contribution

Installez l'environnement de développement et exécutez la porte de projet :```bash uv sync --frozen --extra dev bash maintain.sh

Voir [module internals](https://github.com/wiltodelta/remove-ai-watermarks/blob/main/docs/module-internals.md) avant de modifier un sous-système dont les invariants sont documentés.

## Licence

[Apache 2.0](https://github.com/wiltodelta/remove-ai-watermarks/blob/main/LICENSE). Copyright 2025-2026 wiltodelta.

Catégories