
[ICCV 2025] Protezione anti-manomissione contro la generazione non autorizzata di immagini individuali
Codice Ufficiale per l'Articolo ICCV 2025
📄 Protezione Anti-Manomissione per la Generazione Non Autorizzata di Immagini Individuali
conda create --name ATP --file requirements.txt
conda activate ATP
Scarica i dataset CelebA-HQ e VGGFace2. I link per i dataset sono disponibili su CelebA-HQ, VGGFace2. Per l'addestramento del modello di autorizzazione, è necessario scaricare anche FFHQ
Scarica i pesi del modello di autorizzazione e la maschera guida
Imposta il percorso di weights in configs/authorization.yaml e il percorso di mask in configs/protection.yaml
Esegui
python perturb.py --device cuda:0 --input_dir path_to_cleanData --output_dir path_to_perturbedData --method CAAT --input-mask path_to_mask
Consigliamo di integrare CAAT con ATP, che offre un buon equilibrio tra efficienza di generazione e prestazioni di protezione. Forniamo anche il codice per integrare MetaCloak, Anti-DreamBooth e AdvDM.
output_dir/
├── Authorized/ # Authorized images
| ├ {id}/ # Authorized images separated by id
| ├ Authorization_messages/ # Authorization messages for each image
└── ATP_{method}/ # Protected Images by ATP+{method}
├ {id}/ # ATP Perturbed images separated by id
Imposta il percorso di weights in configs/verification.yaml
✅ Senza Purificazione: Esegui
cd authorization
python verify.py --message_dir path_to_authorization_messages --input_dir path_to_atp_protected_image --method CAAT
cd authorization
python verify.py --message_dir path_to_authorization_messages --input_dir path_to_atp_protected_image --method CAAT --noise-args 2 --noise-type Resize
cd authorization
python verify.py --message_dir path_to_authorization_messages --input_dir path_to_atp_protected_image --method CAAT --noise-args 70 --noise-type JPEG
cd authorization
python verify.py --message_dir path_to_authorization_messages --input_dir path_to_atp_protected_image --method GridPure
Output di esempio:
Average Bit-Error: 0.44984375 Unauthorized image Ratio: 1.0 Pass Verification Identity Num: 0
"Pass Verification Identity Num" può essere utilizzato per calcolare il Protect Success Rate (PSR). Quando avviene la purificazione e l'identità non supera la verifica, consideriamo la protezione riuscita.
Se le immagini superano la verifica, possono essere utilizzate per la generazione.
cd generation
python generate.py --input_dir path_to_image_for_generation --method CAAT --device cuda:0
I risultati vengono salvati nella directory "DREAMBOOTH".
Sebbene le immagini purificate non vengano utilizzate per la generazione nei nostri esperimenti a causa del loro completo fallimento nel superare la verifica, includiamo comunque il codice per gli algoritmi di base per consentire il confronto.
Per JPEG e Resize, esegui:
cd generation
python generate.py --input_dir path_to_image_for_generation --method CAAT --device cuda:0 --purification naive
Per GridPure, devi prima eseguire GridPure, quindi utilizzare le immagini purificate per eseguire:
cd generation
python generate.py --input_dir path_to_image_for_generation --method CAAT --device cuda:0 --purification gridpure
Modifica le impostazioni definite in ./configs/metrics.yaml. Devi definire il percorso dell'immagine da valutare (instance_dir), il percorso della directory per salvare il file di registrazione dei risultati di valutazione (output_dir), il prompt utilizzato per la generazione e il percorso dell'ID embedding(id_emb_path).
Scarica LIQE.pt da url. Posizionalo in ./metrics/LIQE/checkpoints
cd metrics
python eval_dir.py --dataset CelebA-HQ --method CAAT
Il risultato della valutazione verrà salvato nella output_dir definita in metrics.yaml
python show.py --path evaluation_results
Output di esempio:
CLIP-IQAC LIQE ISM FDFR PSR
-0.176525 1.033371 0.489084 0.406250 0.859375
(Modificando il codice di eval_dir.py dalle righe 67 a 68 (commentate), puoi anche valutare il risultato della generazione purificata dalla trasformazione naive.)
Puoi anche addestrare il tuo modello di autorizzazione.
Modifica le impostazioni in ./configs/authorization.yaml
cd authorization
bash scripts/train.sh
Per costruire questo progetto, abbiamo preso in prestito codice da: LIQE, GridPure, ANTIDB, METACLOAK, CAAT, HiDDeN, BasicSR.
Grazie per il loro eccellente lavoro!
📌 Se trovi utile questo progetto per la tua ricerca, considera di citare il nostro articolo.
© 2025 The Board of Trustees of the University of Illinois. Tutti i diritti riservati.
| Argument | Description | Example |
|---|
--device | Decide su quale GPU eseguire il modello | cuda:0, cuda:1 |
--input_dir | Percorso delle immagini di input pulite | ./data/clean/ |
--output_dir | Percorso in cui salvare le immagini perturbate | ./data/perturbed/ |
--method | Metodo di perturbazione della protezione | CAAT, ANTIDB, ADVDM,METACLOAK |
--input-mask | Percorso della maschera | ./mask/050_mask.pt |
| Argument | Description | Example |
|---|
--message_dir_dir | Percorso della directory dei messaggi di autorizzazione | ./data/Authorization_messages |
--input_dir | Percorso delle immagini per la verifica | ./data/perturbed/ |
--method | Metodo di perturbazione della protezione | CAAT, ANTIDB, ADVDM,METACLOAK |
--noise-args | Metodo di perturbazione della protezione | 2, 50 |
--noise-type | Metodo di perturbazione della protezione | JPEG, Resize |
| Argument | Description | Example |
|---|
--dataset | Dataset per la valutazione | CelebA-HQ, VGGFace2 |
--method | Metodo di perturbazione della protezione | CAAT, ANTIDB, ADVDM,METACLOAK |