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" ディレクトリに保存されます。
浄化された画像は検証を完全に通過できなかったため、私たちの実験では生成に使用されませんでしたが、比較を可能にするためにベースラインアルゴリズムのコードも含めています。
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)を定義する必要があります。
LIQE.pt を url からダウンロードします。./metrics/LIQE/checkpoints に配置します。
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 行目(コメントアウトされています)を変更することで、単純変換による浄化後の生成結果も評価できます。)
独自の認証モデルをトレーニングすることもできます。
./configs/authorization.yaml の設定を変更します。
cd authorization
bash scripts/train.sh
このプロジェクトを構築するにあたり、以下のコードを借用しました: LIQE、GridPure、ANTIDB、METACLOAK、CAAT、HiDDeN、BasicSR。
彼らの素晴らしい仕事に感謝します!
📌 このプロジェクトが研究に役立つ場合は、論文の引用をご検討ください。
© 2025 The Board of Trustees of the University of Illinois. 不許複製・無断転載を禁じます。
| 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 |