
[ICCV 2025] Protección anti-manipulación para la generación no autorizada de imágenes individuales
Código Oficial para el Artículo de ICCV 2025
📄 Protección Anti-Manipulación para la Generación no Autorizada de Imágenes Individuales
conda create --name ATP --file requirements.txt
conda activate ATP
Descarga los datasets CelebA-HQ y VGGFace2. Los enlaces para los datasets se pueden encontrar en CelebA-HQ, VGGFace2. Para el entrenamiento del modelo de autorización, también se debe descargar FFHQ
Descarga los pesos del modelo de autorización y la máscara de guía
Establece la ruta de weights en configs/authorization.yaml y la ruta de mask en configs/protection.yaml
Ejecuta
python perturb.py --device cuda:0 --input_dir path_to_cleanData --output_dir path_to_perturbedData --method CAAT --input-mask path_to_mask
Recomendamos integrar CAAT con ATP, lo que logra un buen equilibrio entre la eficiencia de generación y el rendimiento de protección. Pero también proporcionamos código para integrar MetaCloak, Anti-DreamBooth y 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
Establece la ruta de weights en configs/verification.yaml
✅ Sin Purificación: Ejecuta
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
Salida de Ejemplo:
Average Bit-Error: 0.44984375 Unauthorized image Ratio: 1.0 Pass Verification Identity Num: 0
"Pass Verification Identity Num" se puede utilizar para calcular la Tasa de Éxito de Protección (PSR). Una vez que ocurre la purificación y la identidad no puede pasar la verificación, lo consideramos una protección exitosa.
Si las imágenes pasan la verificación, se pueden utilizar para la generación.
cd generation
python generate.py --input_dir path_to_image_for_generation --method CAAT --device cuda:0
Los resultados se guardan en el directorio "DREAMBOOTH".
Aunque las imágenes purificadas no se utilizaron para la generación en nuestros experimentos debido a que no pasaron la verificación, aún incluimos código para los algoritmos de referencia para permitir la comparación.
Para JPEG y Resize, ejecuta:
cd generation
python generate.py --input_dir path_to_image_for_generation --method CAAT --device cuda:0 --purification naive
Para GridPure, primero debes ejecutar el GridPure, y luego usar las imágenes purificadas para ejecutar:
cd generation
python generate.py --input_dir path_to_image_for_generation --method CAAT --device cuda:0 --purification gridpure
Modifica la configuración definida en ./configs/metrics.yaml. Debes definir la ruta a la imagen a evaluar(instance_dir) y la ruta al directorio para almacenar el archivo de registro de resultados de evaluación(output_dir), el prompt utilizado para la generación y la ruta del embedding de ID(id_emb_path).
Descarga LIQE.pt desde url. Colócalo en ./metrics/LIQE/checkpoints
cd metrics
python eval_dir.py --dataset CelebA-HQ --method CAAT
El resultado de la evaluación se guardará en el output_dir que definas en metrics.yaml
python show.py --path evaluation_results
Salida de Ejemplo:
CLIP-IQAC LIQE ISM FDFR PSR
-0.176525 1.033371 0.489084 0.406250 0.859375
(Al modificar el código en las líneas 67 a 68 de eval_dir.py (comentadas), también puedes evaluar el resultado de generación purificado de la transformación naive.)
También puedes entrenar tu propio modelo de autorización.
Modifica la configuración en ./configs/authorization.yaml
cd authorization
bash scripts/train.sh
Para construir este proyecto, tomamos prestados códigos de: LIQE, GridPure, ANTIDB, METACLOAK, CAAT, HiDDeN, BasicSR.
¡Gracias por su excelente trabajo!
📌 Si encuentras este proyecto útil en tu investigación, considera citar nuestro artículo.
© 2025 The Board of Trustees of the University of Illinois. Todos los derechos reservados.
| Argumento | Descripción | Ejemplo |
|---|
--device | Decide en qué GPU ejecutar el modelo | cuda:0, cuda:1 |
--input_dir | Ruta a las imágenes de entrada limpias | ./data/clean/ |
--output_dir | Ruta para guardar las imágenes perturbadas | ./data/perturbed/ |
--method | Método de perturbación de protección | CAAT, ANTIDB, ADVDM,METACLOAK |
--input-mask | Ruta a la máscara | ./mask/050_mask.pt |
| Argumento | Descripción | Ejemplo |
|---|
--message_dir_dir | Ruta al directorio de mensajes de autorización | ./data/Authorization_messages |
--input_dir | Ruta a las imágenes para verificación | ./data/perturbed/ |
--method | Método de perturbación de protección | CAAT, ANTIDB, ADVDM,METACLOAK |
--noise-args | Método de perturbación de protección | 2, 50 |
--noise-type | Método de perturbación de protección | JPEG, Resize |
| Argumento | Descripción | Ejemplo |
|---|
--dataset | Dataset para evaluación | CelebA-HQ, VGGFace2 |
--method | Método de perturbación de protección | CAAT, ANTIDB, ADVDM,METACLOAK |