
[ICCV 2025] 허가되지 않은 개인 이미지 생성을 위한 변조 방지 보호
ICCV 2025 논문 공식 코드
📄 무단 개인 이미지 생성을 위한 변조 방지 보호
conda create --name ATP --file requirements.txt
conda activate ATP
CelebA-HQ 및 VGGFace2 데이터셋을 다운로드합니다. 데이터셋 링크는 CelebA-HQ, VGGFace2에서 확인할 수 있습니다. 인증 모델 학습을 위해 FFHQ도 다운로드해야 합니다.
configs/authorization.yaml에서 weights 경로를 설정하고 configs/protection.yaml에서 mask 경로를 설정합니다.
실행
python perturb.py --device cuda:0 --input_dir path_to_cleanData --output_dir path_to_perturbedData --method CAAT --input-mask path_to_mask
생성 효율과 보호 성능 사이의 좋은 균형을 제공하는 CAAT와 ATP의 통합을 권장합니다. 또한 MetaCloak, Anti-DreamBooth 및 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
configs/verification.yaml에서 weights 경로를 설정합니다.
✅ 정제 없이: 실행
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
예제 출력:
Average Bit-Error: 0.44984375 Unauthorized image Ratio: 1.0 Pass Verification Identity Num: 0
"Pass Verification Identity Num"은 보호 성공률(PSR) 계산에 사용할 수 있습니다. 정제가 발생하고 해당 신원이 검증을 통과하지 못하면, 이를 성공적인 보호로 간주합니다.
이미지가 검증을 통과하면 생성에 사용할 수 있습니다.
cd generation
python generate.py --input_dir path_to_image_for_generation --method CAAT --device cuda:0
결과는 "DREAMBOOTH" 디렉터리에 저장됩니다.
정제된 이미지는 검증 통과에 완전히 실패하여 실험에서 생성에 사용되지 않았지만, 비교를 위해 기준(baseline) 알고리즘 코드도 포함했습니다.
JPEG 및 Resize의 경우 실행:
cd generation
python generate.py --input_dir path_to_image_for_generation --method CAAT --device cuda:0 --purification naive
GridPure의 경우 먼저 GridPure를 실행한 다음, 정제된 이미지를 사용하여 실행해야 합니다:
cd generation
python generate.py --input_dir path_to_image_for_generation --method CAAT --device cuda:0 --purification gridpure
./configs/metrics.yaml에 정의된 설정을 수정합니다. 평가할 이미지 경로(instance_dir), 평가 결과 기록 파일을 저장할 디렉터리 경로(output_dir), 생성에 사용할 프롬프트, ID 임베딩 경로(id_emb_path)를 정의해야 합니다.
cd metrics
python eval_dir.py --dataset CelebA-HQ --method CAAT
평가 결과는 metrics.yaml에 정의한 output_dir에 저장됩니다.
python show.py --path evaluation_results
예제 출력:
CLIP-IQAC LIQE ISM FDFR PSR
-0.176525 1.033371 0.489084 0.406250 0.859375
(eval_dir.py 코드의 67~68행(주석 처리됨)을 수정하면 기본 변환(naive transformation)에서 생성된 정제 결과도 평가할 수 있습니다.)
자체 인증 모델을 학습할 수도 있습니다.
./configs/authorization.yaml의 설정을 수정합니다.
cd authorization
bash scripts/train.sh
이 프로젝트를 구축하기 위해 다음 프로젝트의 코드를 활용했습니다: LIQE, GridPure, ANTIDB, METACLOAK, CAAT, HiDDeN, BasicSR.
훌륭한 작업에 감사드립니다!
📌 이 프로젝트가 연구에 유용하다면, 저희 논문을 인용해 주시기 바랍니다.
© 2025 일리노이 대학교 이사회. 모든 권리 보유.
| Argument | Description | Example |
|---|
--device | 모델을 실행할 GPU 결정 | cuda:0, cuda:1 |
--input_dir | 깨끗한 입력 이미지 경로 | ./data/clean/ |
--output_dir | 변조된 이미지를 저장할 경로 | ./data/perturbed/ |
--method | 보호 변조 방법 | CAAT, ANTIDB, ADVDM,METACLOAK |
--input-mask | 마스크 경로 | ./mask/050_mask.pt |
| Argument | Description | Example |
|---|
--message_dir_dir | 인증 메시지 디렉터리 경로 | ./data/Authorization_messages |
--input_dir | 검증할 이미지 경로 | ./data/perturbed/ |
--method | 보호 변조 방법 | CAAT, ANTIDB, ADVDM,METACLOAK |
--noise-args | 보호 변조 방법 | 2, 50 |
--noise-type | 보호 변조 방법 | JPEG, Resize |
| Argument | Description | Example |
|---|
--dataset | 평가할 데이터셋 | CelebA-HQ, VGGFace2 |
--method | 보호 변조 방법 | CAAT, ANTIDB, ADVDM,METACLOAK |