
[ICCV 2025] Protection anti-altération pour la génération non autorisée d'images individuelles
Code officiel pour l'article ICCV 2025
📄 Protection anti-altération pour la génération non autorisée d'images individuelles
conda create --name ATP --file requirements.txt
conda activate ATP
Téléchargez les jeux de données CelebA-HQ et VGGFace2. Les liens pour ces jeux de données se trouvent sur CelebA-HQ, VGGFace2. Pour l'entraînement du modèle d'autorisation, FFHQ doit également être téléchargé
Téléchargez les poids du modèle d'autorisation et le masque de guidage
Définissez le chemin weights dans configs/authorization.yaml et le chemin mask dans configs/protection.yaml
Exécutez
python perturb.py --device cuda:0 --input_dir path_to_cleanData --output_dir path_to_perturbedData --method CAAT --input-mask path_to_mask
Nous recommandons d'intégrer CAAT avec ATP, ce qui offre un bon équilibre entre l'efficacité de génération et les performances de protection. Mais nous fournissons également du code pour intégrer MetaCloak, Anti-DreamBooth et 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
Définissez le chemin weights dans configs/verification.yaml
✅ Sans purification : exécutez
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
Exemple de sortie :
Average Bit-Error: 0.44984375 Unauthorized image Ratio: 1.0 Pass Verification Identity Num: 0
« Pass Verification Identity Num » peut être utilisé pour calculer le taux de succès de protection (PSR). Une fois que la purification a eu lieu et que l'identité ne parvient pas à passer la vérification, nous considérons qu'il s'agit d'une protection réussie.
Si les images passent la vérification, elles peuvent être utilisées pour la génération.
cd generation
python generate.py --input_dir path_to_image_for_generation --method CAAT --device cuda:0
Les résultats sont enregistrés dans le répertoire « DREAMBOOTH ».
Bien que les images purifiées ne soient pas utilisées pour la génération dans nos expériences en raison de leur échec complet à passer la vérification, nous incluons tout de même le code des algorithmes de référence pour permettre la comparaison.
Pour JPEG et Resize, exécutez :
cd generation
python generate.py --input_dir path_to_image_for_generation --method CAAT --device cuda:0 --purification naive
Pour GridPure, vous devez d'abord exécuter le GridPure, puis utiliser les images purifiées pour exécuter :
cd generation
python generate.py --input_dir path_to_image_for_generation --method CAAT --device cuda:0 --purification gridpure
Téléchargez les embeddings d'identité depuis celebahq, vggface.
Modifiez les paramètres définis dans ./configs/metrics.yaml. Vous devez définir le chemin vers l'image à évaluer(instance_dir) et le chemin du répertoire pour stocker le fichier d'enregistrement des résultats d'évaluation(output_dir), le prompt utilisé pour la génération, le chemin de l'embedding d'identité(id_emb_path).
Téléchargez LIQE.pt depuis url. Placez-le dans ./metrics/LIQE/checkpoints
cd metrics
python eval_dir.py --dataset CelebA-HQ --method CAAT
Le résultat de l'évaluation sera enregistré dans le output_dir que vous définissez dans metrics.yaml
python show.py --path evaluation_results
Exemple de sortie :
CLIP-IQAC LIQE ISM FDFR PSR
-0.176525 1.033371 0.489084 0.406250 0.859375
(En modifiant le code eval_dir.py des lignes 67 à 68 (commentées), vous pouvez également évaluer le résultat de génération purifié issu de la transformation naïve.)
Vous pouvez également entraîner votre propre modèle d'autorisation.
Modifiez les paramètres dans ./configs/authorization.yaml
cd authorization
bash scripts/train.sh
Pour construire ce projet, nous avons emprunté des codes à : LIQE, GridPure, ANTIDB, METACLOAK, CAAT, HiDDeN, BasicSR.
Merci pour leur excellent travail !
📌 Si vous trouvez ce projet utile pour vos recherches, merci de considérer citer notre article.
© 2025 The Board of Trustees of the University of Illinois. Tous droits réservés.
| Argument | Description | Exemple |
|---|
--device | Décide sur quel GPU exécuter le modèle | cuda:0, cuda:1 |
--input_dir | Chemin vers les images d'entrée propres | ./data/clean/ |
--output_dir | Chemin pour enregistrer les images perturbées | ./data/perturbed/ |
--method | Méthode de perturbation de protection | CAAT, ANTIDB, ADVDM,METACLOAK |
--input-mask | Chemin vers le masque | ./mask/050_mask.pt |
| Argument | Description | Exemple |
|---|
--message_dir_dir | Chemin vers le répertoire des messages d'autorisation | ./data/Authorization_messages |
--input_dir | Chemin vers les images à vérifier | ./data/perturbed/ |
--method | Méthode de perturbation de protection | CAAT, ANTIDB, ADVDM,METACLOAK |
--noise-args | Méthode de perturbation de protection | 2, 50 |
--noise-type | Méthode de perturbation de protection | JPEG, Resize |
| Argument | Description | Exemple |
|---|
--dataset | Jeu de données pour l'évaluation | CelebA-HQ, VGGFace2 |
--method | Méthode de perturbation de protection | CAAT, ANTIDB, ADVDM,METACLOAK |