Attacking Image Classification Models¶
Overview¶
This repository contains the code to evaluate adversarial robustness on classification models. This project provides 19 adversarial attacks (e.g., PGD, FGSM) and 65 robust models.
Preparation¶
Dataset
We use
ImageNet Validation Set
as the default dataset to evaluate adversarial robustness of classification models. Please download ImageNet dataset first. If you want to use your own datasets, please define theirtorch.utils.data.Dataset
class and correspondingtransform
.Classification Models
To build a image classification model, you can create a model class from timm library or you can define custom network of
torch.nn.Module
.
Adversarial Attack¶
Before start, modify the corresponding parameters in attack_configs.py
if needed. The configs will be automatically loaded in the attack script.
Then, you can run the following command to start.
cd classification
python run_attack.py --gpu 0 --crop_pct 0.875 --input_size 224 --interpolation 'bilinear' --data_dir DATA_PATH --label_file LABEL_PATH --batchsize 20 --num_workers 16 --model_name 'resnet50_at' --attack_name 'pgd'
All adversarial attacks can be accessed by Registry
class as following:
from ares.utils.registry import registry
attacker_cls = registry.get_attack(attack_name)
attacker = attacker_cls(model)
We also provide model zoo of robust models on ImageNet and Cifar10. Taking ImageNet model as an example, the model can be loaded as following:
model_cls = registry.get_model('ImageNetCLS')
model = model_cls(model_name)