
[CVPR 2025-ADVML] Repositório Oficial para `Attacking Attention of Foundation Models Effectively Disrupts Downstream Tasks`
Implementação oficial em PyTorch do artigo "Atacar a Atenção de Modelos de Fundação Interrompe Eficazmente Tarefas Downstream", aceite no Workshop Adversarial Machine Learning on Computer Vision: Foundation Models + X (ADVML) da CVPR 2025.
# Atacar a Atenção de Modelos de Fundação Interrompe Eficazmente Tarefas Downstream"
Hondamunige Prasanna Silva, Federico Becattini e Lorenzo SeidenariResumo: Os modelos de fundação representam a mudança de paradigma mais proeminente e recente na inteligência artificial. Os modelos de fundação são modelos grandes, treinados em dados abrangentes, que entregam alta precisão em muitas tarefas downstream, muitas vezes sem ajuste fino. Por esta razão, modelos como CLIP, DINO ou Vision Transformers (ViT) estão a tornar-se a base de muitas aplicações industriais baseadas em IA. No entanto, a dependência de modelos de fundação pré-treinados também introduz preocupações significativas de segurança, pois esses modelos são vulneráveis a ataques adversariais. Esses ataques envolvem entradas deliberadamente elaboradas para enganar os sistemas de IA, comprometendo a sua confiabilidade. Este artigo estuda as vulnerabilidades de modelos de fundação de visão, focando especificamente em CLIP e ViTs, e explora a transferibilidade de ataques adversariais para tarefas downstream. Apresentamos um novo ataque, visando a estrutura de arquiteturas baseadas em transformadores de forma agnóstica à tarefa. Demonstramos a eficácia do nosso ataque em várias tarefas downstream: classificação, legendagem, recuperação de imagem/texto, segmentação e estimativa de profundidade
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
Crie a pasta checkpoint dentro da pasta raiz e baixe os modelos TCL e ALBEF.
Os checkpoints dos modelos VLP ajustados estão acessíveis em ALBEF, TCL.
Crie a pasta data dentro da pasta raiz e baixe FLICKR30K, MSCOCO.
Verifique readme.md dentro da SGA folder.
Para avaliar o ataque without trasferability
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;
Para avaliar o ataque com transferibilidade (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
Para avaliar o ataque com transferibilidade (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
Para avaliar o ataque com transferibilidade (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 você achar este trabalho útil, considere citá-lo:
@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}
}
| Argumento | Padrão | Tipo | Descrição |
|---|
--config | ./configs/Retrieval_flickr.yaml | str | Caminho para o arquivo de configuração YAML. |
--seed | 42 | int | Semente para a geração de números aleatórios, a fim de garantir a reprodutibilidade. |
--source_model | ViT-B/16 | str | Nome do modelo de origem usado para avaliação. |
--source_text_encoder | bert-base-uncased | str | Arquitetura do codificador de texto para o modelo de origem. |
--source_ckpt | None | str | Caminho para o checkpoint do modelo de origem, se houver. |
--target_model | ALBEF | str | Modelo alvo para avaliação. |
--target_text_encoder | bert-base-uncased | str | Codificador de texto para o modelo alvo. |
--target_ckpt | ./checkpoint/albef/flickr30k.pth | str | Caminho para o checkpoint do modelo alvo. |
--original_rank_index_path | ./std_eval_idx/flickr30k/ | str | Caminho para o arquivo que contém os índices de classificação originais. |
--alpha | 90 | int | Peso da função de perda durante a otimização adversarial. |
--loss | atn | str | Tipo de função de perda a usar. |
--method | 1 | int | Identificador do método de ataque; consulte a função my_attack para obter detalhes. |
--index | 11 | int | Índice da camada a atacar no modelo alvo. |