
[ICCV 2025] Proteção Anti-Adulteração para Geração Não Autorizada de Imagens Individuais
Código Oficial para o Artigo ICCV 2025
📄 Proteção Anti-Adulteração para Geração Não Autorizada de Imagens Individuais
conda create --name ATP --file requirements.txt
conda activate ATP
Baixe os datasets CelebA-HQ e VGGFace2. Os links para os datasets podem ser encontrados em CelebA-HQ, VGGFace2. Para o treinamento do modelo de autorização, o FFHQ também deve ser baixado.
Baixe os pesos do modelo de autorização e a máscara de orientação.
Defina o caminho de weights em configs/authorization.yaml e o caminho de mask em configs/protection.yaml.
Execute
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 o CAAT com o ATP, que alcança um bom equilíbrio entre eficiência de geração e desempenho de proteção. Mas também fornecemos código para integrar 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
Defina o caminho de weights em configs/verification.yaml
✅ Sem Purificação: Execute
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
Exemplo de Saída:
Average Bit-Error: 0.44984375 Unauthorized image Ratio: 1.0 Pass Verification Identity Num: 0
Pass Verification Identity Num pode ser usado para calcular a Taxa de Sucesso de Proteção (PSR). Quando a purificação acontece e a identidade não passa na verificação, consideramos isso uma proteção bem-sucedida.
Se as imagens passarem na verificação, elas podem ser usadas para geração.
cd generation
python generate.py --input_dir path_to_image_for_generation --method CAAT --device cuda:0
Os resultados são salvos no diretório "DREAMBOOTH".
Embora as imagens purificadas não sejam utilizadas para geração em nossos experimentos, devido à falha completa em passar na verificação, ainda incluímos código para os algoritmos de linha de base para permitir comparação.
Para JPEG e Resize, execute:
cd generation
python generate.py --input_dir path_to_image_for_generation --method CAAT --device cuda:0 --purification naive
Para GridPure, você precisa primeiro executar o GridPure, depois usar as imagens purificadas para executar:
cd generation
python generate.py --input_dir path_to_image_for_generation --method CAAT --device cuda:0 --purification gridpure
Modifique as configurações definidas em ./configs/metrics.yaml. Você precisa definir o caminho para a imagem a ser avaliada (instance_dir), o caminho para o diretório onde será armazenado o arquivo de registro de resultados de avaliação (output_dir), o prompt usado para gerar a imagem, o caminho do embedding de ID (id_emb_path).
Baixe o LIQE.pt do url. Coloque-o em ./metrics/LIQE/checkpoints
cd metrics
python eval_dir.py --dataset CelebA-HQ --method CAAT
O resultado da avaliação será salvo no output_dir que você definir no metrics.yaml
python show.py --path evaluation_results
Exemplo de Saída:
CLIP-IQAC LIQE ISM FDFR PSR
-0.176525 1.033371 0.489084 0.406250 0.859375
(Modificando o código do eval_dir.py nas linhas 67 a 68 (comentadas), você também pode avaliar o resultado da geração purificada a partir da transformação ingênua.)
Você também pode treinar seu próprio modelo de autorização.
Modifique as configurações em ./configs/authorization.yaml
cd authorization
bash scripts/train.sh
Para construir este projeto, utilizamos códigos de: LIQE, GridPure, ANTIDB, METACLOAK, CAAT, HiDDeN, BasicSR.
Agradecemos pelo excelente trabalho deles!
📌 Se você achar este projeto útil para sua pesquisa, considere citar nosso artigo.
© 2025 The Board of Trustees of the University of Illinois. Todos os direitos reservados.
| Argument | Description | Example |
|---|
--device | Decide em qual GPU executar o modelo | cuda:0, cuda:1 |
--input_dir | Caminho para as imagens de entrada limpas | ./data/clean/ |
--output_dir | Caminho para salvar as imagens perturbadas | ./data/perturbed/ |
--method | Método de perturbação de proteção | CAAT, ANTIDB, ADVDM,METACLOAK |
--input-mask | Caminho para a máscara | ./mask/050_mask.pt |
| Argument | Description | Example |
|---|
--message_dir_dir | Caminho para o diretório de mensagens de autorização | ./data/Authorization_messages |
--input_dir | Caminho para as imagens a serem verificadas | ./data/perturbed/ |
--method | Método de perturbação de proteção | CAAT, ANTIDB, ADVDM,METACLOAK |
--noise-args | Método de perturbação de proteção | 2, 50 |
--noise-type | Método de perturbação de proteção | JPEG, Resize |
| Argument | Description | Example |
|---|
--dataset | Dataset para avaliação | CelebA-HQ, VGGFace2 |
--method | Método de perturbação de proteção | CAAT, ANTIDB, ADVDM,METACLOAK |