
[CVPR 2025-ADVML] Repository ufficiale per `Attacking Attention of Foundation Models Effectively Disrupts Downstream Tasks`
Implementazione ufficiale in PyTorch dell'articolo "Attacking Attention of Foundation Models Effectively Disrupts Downstream Tasks", accettato al workshop Adversarial Machine Learning on Computer Vision: Foundation Models + X (ADVML) di CVPR 2025.
# Attaccare l'attenzione dei modelli foundation interrompe efficacemente i task downstream"
Hondamunige Prasanna Silva, Federico Becattini e Lorenzo SeidenariAbstract: I modelli foundation rappresentano il cambiamento di paradigma più importante e recente nell'intelligenza artificiale. I modelli foundation sono modelli di grandi dimensioni, addestrati su dati ampi, che forniscono alta precisione in molti task downstream, spesso senza fine-tuning. Per questo motivo, modelli come CLIP, DINO o Vision Transformer (ViT), stanno diventando il fondamento di molte applicazioni industriali basate sull'IA. Tuttavia, la dipendenza da modelli foundation pre-addestrati introduce anche significative preoccupazioni per la sicurezza, poiché questi modelli sono vulnerabili ad attacchi avversari. Tali attacchi coinvolgono input deliberatamente progettati per ingannare i sistemi di IA, compromettendone l'affidabilità. Questo articolo studia le vulnerabilità dei modelli foundation per la visione, concentrandosi specificamente su CLIP e ViT, ed esplora la trasferibilità degli attacchi avversari ai task downstream. Introduciamo un nuovo attacco, che mira alla struttura delle architetture basate su transformer in modo agnostico rispetto al task. Dimostriamo l'efficacia del nostro attacco su diversi task downstream: classificazione, generazione di didascalie, recupero immagine/testo, segmentazione e stima della profondità.
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
Crea la cartella checkpoint nella cartella root e scarica i modelli TCL e ALBEF.
I checkpoint dei modelli VLP fine-tunati sono accessibili in ALBEF, TCL.
Crea la cartella data nella cartella root e scarica FLICKR30K, MSCOCO.
Controlla readme.md all'interno di SGA folder.
Per valutare l'attacco senza trasferibilità
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;
Per valutare l'attacco con trasferibilità (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
Per valutare l'attacco con trasferibilità (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
Per valutare l'attacco con trasferibilità (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
Se ritieni utile questo lavoro, considera di citarlo:
@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}
}
| Argomento | Predefinito | Tipo | Descrizione |
|---|
--config | ./configs/Retrieval_flickr.yaml | str | Percorso del file YAML di configurazione. |
--seed | 42 | int | Seed per la generazione di numeri casuali per garantire la riproducibilità. |
--source_model | ViT-B/16 | str | Nome del modello sorgente utilizzato per la valutazione. |
--source_text_encoder | bert-base-uncased | str | Architettura dell'encoder di testo per il modello sorgente. |
--source_ckpt | None | str | Percorso del checkpoint per il modello sorgente, se presente. |
--target_model | ALBEF | str | Modello target per la valutazione. |
--target_text_encoder | bert-base-uncased | str | Encoder di testo per il modello target. |
--target_ckpt | ./checkpoint/albef/flickr30k.pth | str | Percorso del checkpoint per il modello target. |
--original_rank_index_path | ./std_eval_idx/flickr30k/ | str | Percorso del file contenente gli indici di ranking originali. |
--alpha | 90 | int | Peso per la funzione di perdita durante l'ottimizzazione avversaria. |
--loss | atn | str | Tipo di funzione di perdita da utilizzare. |
--method | 1 | int | Identificatore del metodo di attacco; fare riferimento alla funzione my_attack per i dettagli. |
--index | 11 | int | Indice del layer da attaccare nel modello target. |