CVPR 2025 の Adversarial Machine Learning on Computer Vision: Foundation Models + X (ADVML) ワークショップで採択された論文 "ファウンデーションモデルの注意機構への攻撃は下流タスクを効果的に破壊する" の公式 PyTorch 実装です。
# ファウンデーションモデルの注意機構への攻撃は下流タスクを効果的に破壊する"
Hondamunige Prasanna Silva, Federico Becattini and Lorenzo Seidenari概要: ファウンデーションモデルは、人工知能における最も顕著で最新のパラダイムシフトを表しています。ファウンデーションモデルは、広範なデータで学習された大規模モデルであり、多くの下流タスクにおいて微調整なしで高い精度を発揮します。そのため、CLIP、DINO、Vision Transformer(ViT)などのモデルは、多くの産業用AIアプリケーションの基盤となりつつあります。しかし、事前学習済みファウンデーションモデルへの依存は、これらのモデルが敵対的攻撃に対して脆弱であることから、重大なセキュリティ上の懸念も引き起こします。そのような攻撃は、AIシステムを欺くために意図的に作成された入力を含み、それらの信頼性を損ないます。本稿では、特にCLIPとViTに焦点を当て、視覚ファウンデーションモデルの脆弱性を研究し、敵対的攻撃の下流タスクへの転移可能性を探ります。我々は、Transformerベースのアーキテクチャの構造をタスク非依存の方法で標的とする新しい攻撃を導入します。分類、キャプショニング、画像/テキスト検索、セグメンテーション、奥行き推定など、複数の下流タスクにおける攻撃の有効性を示します。
conda env create -f environment.yml
pip install .
pip instlal -e . # If you want in edit mode!
attack-attention
├─ .gitignore
├─ .pre-commit-config.yaml
├─ LICENSE
├─ README.md
├─ checkpoint
│ ├─ albef
│ └─ tcl
├─ data
│ ├─ flickr30k-images
│ └─ val2014
├─ SGA
│ └─ ...
├─ data_annotation
│ ├─ coco_test.json
│ └─ flickr30k_test.json
├─ environment.yml
├─ eval_clip-vit2albef.py
├─ eval_clip-vit2clip-cnn.py
├─ eval_clip.py
├─ models
│ ├─ __init__.py
│ ├─ clip_model
│ │ ├─ model.py
│ │ └─ ..
│ └─ ..
└─ std_eval_idx
├─ flickr30k
└─ mscoco
ルートフォルダ内に checkpoint フォルダを作成し、TCL と ALBEF モデルをダウンロードします。
微調整済み VLP モデルのチェックポイントは ALBEF と TCL から入手できます。
ルートフォルダ内に data フォルダを作成し、FLICKR30K と MSCOCO をダウンロードします。
SGA フォルダ内の readme.md を確認してください。
転移なしの攻撃を評価する場合
python eval_clip.py --config ./configs/Retrieval_coco.yaml \
--source_model ViT-B/16 --original_rank_index ./std_eval_idx/mscoco/ \
--loss atn --method 1;
転移可能性ありの攻撃を評価する場合(ALBEF)
python eval_clip-vit2albef.py --config ./configs/Retrieval_flickr.yaml \
--source_model ViT-B/16 --target_model ALBEF --target_ckpt ./checkpoint/albef/flickr30k.pth \
--original_rank_index ./std_eval_idx/flickr30k/ --loss atn --method 1
転移可能性ありの攻撃を評価する場合(TCL)
python eval_clip-vit2albef.py --config ./configs/Retrieval_flickr.yaml \
--source_model ViT-B/16 --target_model TCL --target_ckpt ./checkpoint/tcl/checkpoint_flickr_finetune.pth \
--original_rank_index ./std_eval_idx/flickr30k/ --loss atn --method 1
転移可能性ありの攻撃を評価する場合(CLIP-CNN)
python eval_clip-vit2clip-cnn.py --config ./configs/Retrieval_flickr.yaml \
--source_model ViT-B/16 --target_model RN101 \
--original_rank_index ./std_eval_idx/flickr30k/ --loss atn --method 1
--source_model ViT-B/16 --method 3 --loss emb
この研究が役に立った場合は、引用を検討してください:
@InProceedings{Silva_2025_CVPR,
author = {Silva, Hondamunige Prasanna and Becattini, Federico and Seidenari, Lorenzo},
title = {Attacking Attention of Foundation Models Disrupts Downstream Tasks},
booktitle = {Proceedings of the Computer Vision and Pattern Recognition Conference (CVPR) Workshops},
month = {June},
year = {2025},
pages = {3534-3543}
}
| 引数 | デフォルト | 型 | 説明 |
|---|
--config | ./configs/Retrieval_flickr.yaml | str | 設定YAMLファイルへのパス。 |
--seed | 42 | int | 再現性を確保するための乱数生成のシード。 |
--source_model | ViT-B/16 | str | 評価に使用するソースモデルの名前。 |
--source_text_encoder | bert-base-uncased | str | ソースモデルのテキストエンコーダのアーキテクチャ。 |
--source_ckpt | None | str | ソースモデルのチェックポイントへのパス(あれば)。 |
--target_model | ALBEF | str | 評価の対象モデル。 |
--target_text_encoder | bert-base-uncased | str | ターゲットモデルのテキストエンコーダ。 |
--target_ckpt | ./checkpoint/albef/flickr30k.pth | str | ターゲットモデルのチェックポイントへのパス。 |
--original_rank_index_path | ./std_eval_idx/flickr30k/ | str | 元のランクインデックスを含むファイルへのパス。 |
--alpha | 90 | int | 敵対的最適化中の損失関数の重み。 |
--loss | atn | str | 使用する損失関数の種類。 |
--method | 1 | int | 攻撃手法の識別子。詳細は my_attack 関数を参照。 |
--index | 11 | int | ターゲットモデル内で攻撃するレイヤーのインデックス。 |