
remove-ai-watermarks v0.37.1
Rimuovi i watermark AI visibili e invisibili e i metadati di provenienza da immagini e video. Libreria Python e CLI per SynthID, C2PA, EXIF, IPTC, XMP e i comuni marchi dell'IA generativa.
Rimuovere i watermark AI
Rimuovi i marchi di provenienza AI dalle immagini e dai video che hai generato tu stesso:
- etichette visibili note come il watermark a scintilla di Google Gemini e i marchi testuali dei fornitori;
- watermark invisibili a livello di pixel tramite interruzione diretta del formato locale o rigenerazione con diffusione;
- C2PA, EXIF, XMP, IPTC e metadati AI correlati.
Il supporto video copre l'identificazione della provenienza, la pulizia completa di elementi visibili più metadati, le elaborazioni in batch di directory, la rimozione dei marchi visibili di Sora, Veo, Seedance, Doubao, Dola, Hailuo AI e Kling AI, e la rigenerazione VAE certificata da oracle per la rimozione di SynthID nei video.
raiw.cc esegue questa libreria come servizio ospitato, con la GPU inclusa e nulla da installare. La rimozione dei marchi visibili e dei metadati con output Standard fino a 12 MP è gratuita; la risoluzione originale superiore a 12 MP e la rimozione dei watermark invisibili sono a pagamento.
Questo progetto è destinato a un uso lecito su contenuti di tua proprietà. Non è rivolto alle anteprime delle agenzie di stock o ad altri watermark che proteggono contenuti a pagamento di terze parti. Consulta ambito, sicurezza e note legali.
Scegli cosa vuoi fare
| Obiettivo | Comando | GPU |
|---|---|---|
| Trovare segnali di provenienza e watermark | identify | No |
| Classificare una fotografia dai pixel (opt-in, non provenienza) | classify | No |
| Rimuovere marchi AI visibili noti | visible | No |
| Cancellare una regione selezionata | erase | No |
| Rimuovere i metadati AI | metadata | No |
| Identificare la provenienza video supportata | video identify | No |
| Rimuovere marchi visibili e metadati AI dal video | video all | No |
| Rimuovere i metadati AI dal video | video metadata | No |
| Rimuovere un marchio AI visibile registrato dal video | video visible | No |
| Elaborare una directory di video | video batch | Dipende dalla modalità |
| Applicare il profilo calibrato di rimozione SynthID sui pixel video | video invisible | Consigliata |
| Rigenerare un'immagine per disturbare i watermark invisibili | invisible | Richiesta (CUDA) |
| Eseguire la rimozione di elementi visibili, invisibili e metadati | all | Consigliata |
| Elaborare una directory | batch | Dipende dalla modalità |
Le dichiarazioni InvisMark di Microsoft Paint e Photos vengono indirizzate automaticamente
alla rigenerazione dei pixel. Il comando all rimuove sia il watermark nascosto nei pixel sia
il relativo manifest C2PA collegato; la sola rimozione dei metadati elimina unicamente il manifest. Un'API Python specializzata può ispezionare e disturbare il payload locale validato
Watermarker.dll senza diffusione.
Modalità di installazione
| Esigenza | Installazione |
|---|---|
| Ispezione e rimozione dei metadati | remove-ai-watermarks |
| Classificazione fotografia AI-versus-fotocamera | remove-ai-watermarks[classify] |
| Classificazione di esportazioni da sorgenti OpenAI/Google/sconosciute | remove-ai-watermarks[source-classify] |
| Rilevamento e rimozione dei marchi visibili | remove-ai-watermarks[visible] |
| Elaborazione video dei marchi visibili | remove-ai-watermarks[video] |
| Rimozione SynthID nei video | remove-ai-watermarks[video,diffusion] |
| Rilevamento DWT-DCT senza Torch | remove-ai-watermarks[detect] |
| Disturbo diretto locale di Paint InvisMark | remove-ai-watermarks[pixels] |
| Rimozione invisibile nelle immagini (richiede CUDA) | remove-ai-watermarks[qwen-zimage] |
| Tutte le funzionalità di produzione disponibili sul Python attivo | remove-ai-watermarks[all] |
Gli extra di livello inferiore e specializzati includono pixels, heif, trustmark,
migan, lama, diffusion, classify-onnx e source-classify. La
guida all'installazione documenta la loro esatta
composizione delle dipendenze, la compatibilità con Python e i requisiti dei modelli.
Avvio rapido
Installa la CLI predefinita orientata ai metadati:```bash uv tool install remove-ai-watermarks
Ispeziona un'immagine:```bash
remove-ai-watermarks identify image.png
Per classificare una fotografia dai pixel (AI versus fotocamera, provider opzionale),
installa l'extra e chiama classify. identify non lo avvia mai:```bash
uv tool install --force "remove-ai-watermarks[classify]"
remove-ai-watermarks classify image.png
Guida: [photo pixel classification](https://github.com/wiltodelta/remove-ai-watermarks/blob/main/docs/photo-classify.md).
Per un segnale leggero e con astensione di esportazione da fonte OpenAI/Google/sconosciuta dopo
la rimozione dei metadati, usa la API Python separata. Non è un rilevatore SynthID:```python
import remove_ai_watermarks as raiw
result = raiw.classify_source("image.png")
print(result.label, result.reason)
Installa remove-ai-watermarks[source-classify]. Guida:
classificazione della pipeline dei sorgenti.
La provenienza firmata è la via supportata per SynthID e identify la legge.
Non esiste un rilevatore locale di pixel SynthID nel pacchetto. La ricerca su un
esperto di reticolo periodico è in scripts/synthid_runtime/ e
synthid-detector-research.md.
Per la rimozione di watermark visibili, installa le dipendenze dei pixel:```bash uv tool install --force "remove-ai-watermarks[visible]"
Poi rimuovi un watermark visibile noto e i metadati AI:```bash
remove-ai-watermarks visible image.png -o clean.png
Rimuovi i metadati senza eseguire inpainting o diffusione visibili:```bash remove-ai-watermarks metadata image.png --remove -o clean.png
Senza `-o` questo comando sovrascrive il file sorgente sul posto.
Ispeziona o rimuovi i metadati AI da un file MP4, MOV, M4V, WebM, MKV, AVI o FLV:```bash
remove-ai-watermarks video metadata input.mp4 --check
remove-ai-watermarks video metadata input.mp4 --remove -o clean.mp4
Il comando video metadata non transcodifica flussi video o audio. A differenza
del comando image sopra, quando -o è omesso scrive <source>_clean e
preserva l'originale. L'ispezione di MP4 e MOV
include il tag nativo TC260 AIGC in
moov.udta.meta.keys/ilst, incluso un moov posizionato dopo il payload multimediale,
più le varianti meta in formato QuickTime scritte dall'export iOS di Doubao (un box
meta nudo come figlio diretto di moov, e una lista di metadati hdlr=mdir senza chiavi).
Anche le voci con chiave workflow e prompt nella stessa struttura di lista di metadati
vengono rilevate e rimosse, inclusi gli export di ComfyUI.
L'ispezione di MKV e WebM legge il posizionamento normativo
Segment.Tags.Tag.SimpleTag. AVI usa LIST/INFO/AIGC, mentre FLV
usa script.onMetaData.AIGC. I formati non-ISOBMFF vengono rimuxati con stream
copy per la rimozione.
Usa il percorso video orientato al prodotto per identificare o pulire un file:```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` rimuove un marchio visibile registrato stabile quando presente e rimuove sempre
i metadati AI verificati. Se nessuno dei due segnali viene trovato, scrive comunque un
passthrough nello stesso contenitore, così i chiamanti dell'applicazione ottengono un contratto
di output prevedibile. La rimozione proprietaria di video invisibili è esclusa per impostazione predefinita.
`--invisible` attiva il profilo SynthID video con perdita, certificato dall'oracolo.
Elabora una directory con lo stesso contratto:```bash
remove-ai-watermarks video batch ./videos --mode all
Rimuovi un watermark video visibile supportato:```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
Questo percorso analizza l'intera sequenza prima di modificare i pixel. Accetta solo un
marchio che si ripete in una posizione stabile tra fotogrammi adiacenti, poi riutilizza
gli stessi backend di riempimento OpenCV, MI-GAN o LaMa come per la rimozione di immagini. L'audio viene copiato
senza ricodifica ed è lasciato raggiungere la sua fine naturale; il flusso video
viene transcodificato perché i suoi pixel cambiano. Per impostazione predefinita, un passaggio protetto di flusso ottico
allinea al movimento il riempimento accettato precedente e lo fonde solo quando
il contesto sorgente vicino è d'accordo; usa `--no-temporal-consistency` per disabilitarlo.
L'encoder preserva il campionamento cromatico sorgente a 8 bit supportato,
i tag di colore e la scala temporale delle tracce MP4/MOV invece
di affidarsi ai valori predefiniti impliciti raw-BGR di ffmpeg. Gli intervalli di fotogrammi variabili sono
preservati attraverso un bridge NUT in memoria con timestamp invece di essere appiattiti
alla frequenza media dei fotogrammi. I timestamp di inizio sorgente diversi da zero vengono mantenuti
insieme all'offset audio copiato. Il valore predefinito `--mark auto`
analizza tutti i provider in un'unica passata di decodifica e seleziona la prima corrispondenza stabile
nell'ordine di specificità mostrato di seguito. Passa un marchio esplicito per limitare il rilevamento
a un solo provider.
Sora copre la mascotte Sora 2 in movimento e il wordmark. Veo copre sia l'attuale
diamante a quattro punti sia il testo legacy `Veo`. Seedance copre l'etichetta fissa incorniciata
`AI`, Dola copre il testo fisso `Dola AI`, Hailuo AI copre l'etichetta composita
`MINIMAX | hailuo AI`, e Kling AI copre l'etichetta in basso a destra `KLING AI` o
`KlingAI` con il suo suffisso di versione. Una codifica completata viene pubblicata
atomicamente. Nessun output viene scritto quando non viene trovato alcun marchio stabile.
Input HDR, PQ/HLG e superiori a 8 bit vengono rifiutati prima della codifica anziché
essere ridotti silenziosamente attraverso il confine BGR a 8 bit di OpenCV.
Applica il profilo calibrato di rimozione SynthID per pixel video:```bash
uv tool install --force "remove-ai-watermarks[video,diffusion]"
remove-ai-watermarks video invisible input.mp4 -o clean.mp4
Questo percorso rigenera la sequenza completa con un unico campo di rumore latente condiviso
nel tempo, copia l'audio completo, rimuove i metadati di origine e pubblica
la codifica completata in modo atomico. Il profilo predefinito noise_std=0.15 ha superato sia
la calibrazione a due portanti sia un controllo completo dell'oracolo Veo pubblico di otto secondi. Google non pubblica un decoder locale, quindi un controllo fresco del provider
rimane utile per file insolitamente importanti o dopo modifiche al provider, ma non
è uno stato di risultato del prodotto. La CLI quindi descrive la rigenerazione dei pixel video invece di rivendicare un verdetto SynthID per file, e segnala la
filigrana audio copiata come UNVERIFIED.
Per la rimozione invisibile della filigrana tramite la CLI o l'API di alto livello, installare
l'extra qwen-zimage. È richiesta una GPU NVIDIA: tutti i profili di diffusione sono
solo CUDA, e non esiste un fallback CPU o MPS. L'API locale specializzata Paint
utilizza l'extra pixels senza CUDA.```bash
uv tool install --force "remove-ai-watermarks[qwen-zimage]"
remove-ai-watermarks invisible image.png -o clean.png
Se i rilevatori locali non riescono a confermare la presenza di una filigrana invisibile ma sai che l'immagine proviene da un generatore AI, aggiungi `--force`:```bash
remove-ai-watermarks invisible image.png -o clean.png --force
Le immagini ad alta densità tipografica possono optare per il post-pass sperimentale di testo verificato.
Accetta stringhe e riquadri di riga revisionati manualmente oppure un manifest
geometrico verificato dall'operatore; non considera mai l'output OCR grezzo come ground truth né viene eseguito
automaticamente:```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
Consulta la [guida CLI](https://github.com/wiltodelta/remove-ai-watermarks/blob/main/docs/cli.md#restore-operator-verified-text) per lo schema del manifest, le restrizioni di compatibilità e le avvertenze sull'oracle.
Consulta la [guida all'installazione](https://github.com/wiltodelta/remove-ai-watermarks/blob/main/docs/installation.md) per Homebrew, uv, funzionalità opzionali e configurazione di sviluppo.
## Esempi
### Marchio Gemini visibile
| Prima | Dopo |
| --- | --- |
|  |  |
Il raster `after` è generato dal raster `before` tracciato tramite il percorso pubblico:```bash
uv run remove-ai-watermarks visible demo_banana_before.png \
--backend cv2 -o demo_banana_after.png
Rimozione invisibile di alta qualità
qwen-zimage è il profilo predefinito: un passaggio Qwen-Image-2512 Lightning sotto Canny
ControlNet, seguito dalla riparazione Z-Image mascherata con SAM di qualsiasi volto rilevato. L'alternativa, sdxl-zimage, sostituisce lo stadio globale con SDXL e mantiene lo stesso stadio
per i volti. Un terzo profilo, chroma-zimage, utilizza il passaggio globale Chroma1 con licenza Apache-2.0
con i propri limiti minimi specifici del fornitore; consultare docs/chroma1-engine-research.md per la
calibrazione. --pipeline auto seleziona sdxl-zimage per Google, chroma-zimage per
Microsoft e qwen-zimage in tutti gli altri casi. Tutti funzionano solo su CUDA.```bash
uv tool install --force "remove-ai-watermarks[qwen-zimage]"
remove-ai-watermarks invisible image.png -o clean.png --force
| Esempio OpenAI prima | Esempio OpenAI dopo |
| --- | --- |
| [](data/synthid/originals/ChatGPT%20Image%20May%2030,%202026,%2010_31_08%20AM.png) | [](docs/images/qwen-zimage/ChatGPT/ChatGPT%20Image%20May%2030,%202026,%2010_31_08%20AM_full_clean.png) |
| Esempio Gemini prima | Esempio Gemini dopo |
| --- | --- |
| [](data/synthid/originals/Gemini_Generated_Image_633uuy633uuy633u.png) | [](docs/images/qwen-zimage/Gemini/Gemini_Generated_Image_633uuy633uuy633u_full_clean.png) |
Questi esatti file di output sono stati verificati con i verificatori del provider corrispondente. Il
risultato si applica a questi file, non a ogni seed, immagine o futura versione
di watermark.
## Ricette comuni
### Rimuovere ogni marchio visibile rilevato```bash
remove-ai-watermarks visible image.png -o clean.png
Il valore predefinito --mark auto controlla tutti i mark visibili registrati e rimuove ogni
corrispondenza. Se il mark è visibile a te ma il rilevatore non lo individua, seleziona la sua
regione esplicitamente:```bash
remove-ai-watermarks erase image.png
--region 1640,1930,400,100
-o clean.png
`--region` usa `x,y,width,height` e può essere ripetuto.
### Usare un backend di riempimento appreso
L'extra `visible` usa l'inpainting di OpenCV quando non è installato alcun backend appreso.
Per sfondi più difficili, gli extra del backend appreso includono automaticamente
le stesse dipendenze a livello di pixel:```bash
uv tool install --force "remove-ai-watermarks[migan]"
remove-ai-watermarks visible image.png -o clean.png --backend migan
Utilizzo
python3 CVE-2025-55182.py -u <URL> -c <COMMAND>
Esempi
# Esegui il comando 'id' sul server di destinazione
python3 CVE-2025-55182.py -u http://target.com -c "id"
# Esegui un comando personalizzato
python3 CVE-2025-55182.py -u http://target.com -c "whoami"
# Specifica un percorso personalizzato
python3 CVE-2025-55182.py -u http://target.com -p /custom/path -c "ls -la"
Come funziona
- Rilevamento dell'endpoint: tenta di individuare un endpoint server action valido
- Costruzione del payload: crea un payload multipart form-data con la struttura richiesta
- Iniezione del comando: incorpora il comando all'interno del payload
- Invio della richiesta: invia la richiesta POST all'endpoint di destinazione
- Analisi della risposta: estrae l'output del comando dalla risposta
Requisiti
- Python 3.6+
- Libreria
requests
Installa le dipendenze:
pip install requests
Mitigazione
Per proteggersi dalla CVE-2025-55182:
- Aggiorna React: esegui l'aggiornamento all'ultima versione patchata
- Aggiorna Next.js: esegui l'aggiornamento all'ultima versione patchata
- Valida l'input: implementa una rigorosa validazione dell'input per tutti i dati dei form
- Monitora i log: controlla i log del server per attività sospette
- WAF: implementa regole WAF per rilevare tentativi di iniezione di comandi
Riferimenti
Esclusione di responsabilità
Questo strumento è fornito solo a scopo educativo e per test di sicurezza autorizzati. Gli autori non sono responsabili per qualsiasi uso improprio o danno causato da questo software. Usalo in modo responsabile e solo su sistemi che possiedi o per cui hai un'autorizzazione esplicita a testare.
Licenza
Questo progetto è concesso in licenza sotto la Licenza MIT - consulta il file LICENSE per i dettagli.
Riconoscimenti
- Grazie alla comunità di sicurezza per la ricerca e la divulgazione
- Riferimenti alle divulgazioni originali e ai ricercatori```bash uv tool install --force "remove-ai-watermarks[lama]" remove-ai-watermarks visible image.png -o clean.png --backend lama
### Ridurre l'uso della memoria CUDA```bash
remove-ai-watermarks invisible image.png -o clean.png \
--cpu-offload --force
L'offload sulla CPU riduce la pressione sulla memoria CUDA spostando i componenti del modello tra CPU e GPU, a scapito della velocità.
Elaborare una directory```bash
remove-ai-watermarks batch ./images --mode visible remove-ai-watermarks batch ./images --mode all
## Cosa può riconoscere lo strumento
Il supporto per i watermark visibili include:
- watermark a scintilla visibile di Google Gemini e Nano Banana;
- Doubao, il wordmark Jimeng e la pillola `AI生成` in alto a sinistra, Qwen, Kling AI,
Yuanbao, Baidu, il wordmark in basso al centro di LiblibAI e la pillola compatta in alto a sinistra,
ed etichette RunningHub;
- una variante calibrata del badge AI bianco in alto a destra di Microsoft;
- una variante calibrata dell'etichetta Samsung Galaxy AI.
L'ispezione dei metadati e della provenienza copre C2PA, EXIF, XMP, IPTC, parametri
generatori comuni nei contenitori di immagini e video, etichette AIGC TC260 cinesi,
e diversi segnali specifici dei fornitori. Decoder opzionali aggiungono il supporto per
watermark DWT-DCT aperti e Adobe TrustMark.
La matrice di supporto esatta, incluse importanti limitazioni su locale e rilevatori, si trova
in [supported signals](https://github.com/wiltodelta/remove-ai-watermarks/blob/main/docs/supported-signals.md). La
[galleria di esempi sintetici](https://github.com/wiltodelta/remove-ai-watermarks/blob/main/data/fixtures/visible/README.md) contiene un campione
canonico per ogni marchio registrato di immagini e video.
## Come funziona
La rimozione visibile segue tre passaggi:
1. Rilevare un marchio registrato nella sua area prevista.
2. Costruire una maschera attorno al marchio.
3. Riempire solo la regione mascherata con OpenCV, MI-GAN o LaMa.
La rimozione dei metadati utilizza uno stripping consapevole del formato. La rimozione dei metadati JPEG preserva
la scansione dell'immagine codificata invece di ricomprimerla. I valori nativi TC260 di MP4/MOV
e i parametri di generazione con chiave vengono azzerati senza modificare le dimensioni dei box o
gli offset dei media. Gli altri contenitori supportati utilizzano il corrispondente percorso
dei metadati.
La rimozione invisibile tramite CLI e API di alto livello rigenera l'immagine attraverso
una pipeline di diffusione. I chiamanti specializzati possono invece decodificare e disturbare
il formato localmente identificato positivamente di Microsoft Paint con modifiche ai pixel molto più piccole.
Nessuno dei due percorsi può garantire che ogni verificatore proprietario rifiuti ogni output.
Vedi [supported signals](https://github.com/wiltodelta/remove-ai-watermarks/blob/main/docs/supported-signals.md) e
[known limitations](https://github.com/wiltodelta/remove-ai-watermarks/blob/main/docs/known-limitations.md) per il confine tecnico completo.
## API Python
L'API di rimozione visibile richiede `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 di alto livello accetta un percorso di file o un array NumPy BGR. Per gli input da percorso legge anche i metadati di provenienza, preserva l'alpha e può rimuovere i metadati AI dal risultato scritto.
Consulta la guida all'API Python per la rimozione visibile, la pipeline completa
remove_all e remove_batch, l'ispezione della provenienza, la rimozione dei metadati
e l'utilizzo con la diffusione.
Agent skill
Gli agenti di codifica possono installare la skill pubblicata e pilotare questa CLI:```bash npx skills add wiltodelta/remove-ai-watermarks
Claude Code può aggiungere questo repository come marketplace di plugin:```text
/plugin marketplace add wiltodelta/remove-ai-watermarks
/plugin install remove-ai-watermarks@remove-ai-watermarks
La skill rifiuta i marchi di agenzie di stock e altri asset a pagamento di terze parti. Vedi la guida alla skill dell'agente.
ComfyUI
Il pacchetto separato ComfyUI Remove AI Watermarks fornisce nodi per la rimozione visibile, il rilevamento, la cancellazione di regioni e la rimozione invisibile.
Limitazioni importanti
- Un segnale locale mancante significa sconosciuto, non pulito. Le filigrane proprietarie a livello di pixel possono rimanere dopo che i metadati sono stati rimossi.
- La rimozione visibile ricostruisce una piccola regione. I risultati dipendono dallo sfondo e dal backend di riempimento selezionato.
- La rimozione invisibile modifica l'intera immagine e può alterare volti, testo o dettagli fini.
- La rimozione visibile dai video riconosce il wordmark mobile Sora 2, il diamante Veo
attuale più il testo legacy
Veo, l'etichettaAIincorniciata di Seedance e le etichette fisse Doubao, Dola, Hailuo AI e Kling AI. Non riconosce il vecchio vortice nell'angolo di Sora Turbo né i layout non registrati di quei fornitori. Il backend classico OpenCV può sbavare gli sfondi strutturati; usa MI-GAN o LaMa quando la qualità del recupero è importante. - La rigenerazione di Video SynthID cambia risoluzione, frame rate e dettaglio dell'immagine. Il profilo fornito è certificato da oracle, ma nessun decoder locale pubblico può certificare un output arbitrario a runtime. Ricontrolla gli output particolarmente importanti dopo modifiche del fornitore.
- La rimozione delle filigrane invisibili tramite la CLI e l'API di alto livello richiede CUDA.
Tutti i profili di diffusione rifiutano qualsiasi altro dispositivo in fase di costruzione
anziché ripiegare su uno che non possa eseguirli. L'API locale specializzata Paint,
la rimozione visibile, la rimozione dei metadati e
identifyfunzionano senza CUDA. - I sistemi di filigrana dei fornitori possono cambiare. Convalida gli output importanti con il verificatore del fornitore stesso, quando disponibile.
Il comando fornito video invisible usa il profilo certificato noise_std=0.15.
Il banco di ricerca complementare scripts/video_synthid_sweep.py costruisce
un controllo di ricodifica abbinato più candidati rigenerati via VAE e lascia
vuoto il verdetto del verificatore:```bash
uv run --extra video --extra diffusion python scripts/video_synthid_sweep.py input.mp4 -o sweep/
Per valutare quanto sia effettivamente costato un output, usa `scripts/video_fidelity_probe.py`:
il PSNR del motore stesso viene misurato dopo il ridimensionamento dell'input e prima della codifica
finale, quindi solo la sonda vede l'immagine consegnata.```bash
uv run --extra video python scripts/video_fidelity_probe.py input.mp4 input_clean.mp4
Il controllo deve comunque risultare SynthID-positivo prima che un candidato negativo possa valere come prova di rimozione. Nella calibrazione a due clip del 2026-07-29, entrambi i controlli abbinati sono risultati positivi nel verificatore SynthID integrato di Gemini; il candidato più forte è risultato negativo su entrambi i carrier, mentre un candidato più debole è risultato negativo su uno solo. Un successivo follow-up avversariale che ha chiesto a Gemini ordinario di reinterpretare il risultato a livello di pixel ha restituito UNAVAILABLE; quel follow-up non era una ri-esecuzione del verificatore e non invalida i verdetti integrati. Un controllo sull'intera clip del 2026-07-31 su un campione Veo pubblico di otto secondi ha rilevato che 0.10 era ancora rilevato e 0.15 non rilevato, quindi 0.15 è ora il default certificato. Gli hash riproducibili e i verdetti per quel controllo sull'intera clip -- un carrier, due righe -- si trovano in data/evaluations/video-synthid-oracle.csv. La precedente calibrazione a due clip è solo narrativa: i suoi verdetti non sono stati registrati in un manifest tracciato, quindi considera il default certificato come basato sulle righe del 2026-07-31.
Documentazione
Inizia dall'indice della documentazione.
- Installazione
- Guida CLI
- API Python
- Segnali supportati
- Limitazioni note
- Note su ambito, sicurezza e aspetti legali
- Interni dei moduli
- Rilascio e distribuzione
- Agent skill
Le note di ricerca e gli esperimenti storici sono elencati separatamente nell'indice della documentazione. Spiegano decisioni passate ma non definiscono l'attuale API pubblica.
Contribuire
Installa l'ambiente di sviluppo ed esegui il gate del progetto:```bash uv sync --frozen --extra dev bash maintain.sh
Consulta [module internals](https://github.com/wiltodelta/remove-ai-watermarks/blob/main/docs/module-internals.md) prima di modificare un sottosistema
con invarianti documentate.
## Licenza
[Apache 2.0](https://github.com/wiltodelta/remove-ai-watermarks/blob/main/LICENSE). Copyright 2025-2026 wiltodelta.