RobustBench: a standardized adversarial robustness benchmark

February 5, 2025 · View on GitHub

Francesco Croce* (University of Tübingen), Maksym Andriushchenko* (EPFL), Vikash Sehwag* (Princeton University), Edoardo Debenedetti* (EPFL), Nicolas Flammarion (EPFL), Mung Chiang (Purdue University), Prateek Mittal (Princeton University), Matthias Hein (University of Tübingen)

Leaderboard: https://robustbench.github.io/

Paper: https://arxiv.org/abs/2010.09670

❗Note❗: if you experience problems with the automatic downloading of the models from Google Drive, install the latest version of RobustBench via pip install git+https://github.com/RobustBench/robustbench.git.

News

  • May 2022: We have extended the common corruptions leaderboard on ImageNet with 3D Common Corruptions (ImageNet-3DCC). ImageNet-3DCC evaluation is interesting since (1) it includes more realistic corruptions and (2) it can be used to assess generalization of the existing models which may have overfitted to ImageNet-C. For a quickstart, click here. Note that the entries in leaderboard are still sorted according to ImageNet-C performance.

  • May 2022: We fixed the preprocessing issue for ImageNet corruption evaluations: previously we used resize to 256x256 and central crop to 224x224 which wasn't necessary since the ImageNet-C images are already 224x224 (see this issue). Note that this changed the ranking between the top-1 and top-2 entries.

Main idea

The goal of RobustBench is to systematically track the real progress in adversarial robustness. There are already more than 3'000 papers on this topic, but it is still often unclear which approaches really work and which only lead to overestimated robustness. We start from benchmarking the Linf, L2, and common corruption robustness since these are the most studied settings in the literature.

Evaluation of the robustness to Lp perturbations in general is not straightforward and requires adaptive attacks (Tramer et al., (2020)). Thus, in order to establish a reliable standardized benchmark, we need to impose some restrictions on the defenses we consider. In particular, we accept only defenses that are (1) have in general non-zero gradients wrt the inputs, (2) have a fully deterministic forward pass (i.e. no randomness) that (3) does not have an optimization loop. Often, defenses that violate these 3 principles only make gradient-based attacks harder but do not substantially improve robustness (Carlini et al., (2019)) except those that can present concrete provable guarantees (e.g. Cohen et al., (2019)).

To prevent potential overadaptation of new defenses to AutoAttack, we also welcome external evaluations based on adaptive attacks, especially where AutoAttack flags a potential overestimation of robustness. For each model, we are interested in the best known robust accuracy and see AutoAttack and adaptive attacks as complementary to each other.

RobustBench consists of two parts:

  • a website https://robustbench.github.io/ with the leaderboard based on many recent papers (plots below 👇)
  • a collection of the most robust models, Model Zoo, which are easy to use for any downstream application (see the tutorial below after FAQ 👇)

FAQ

Q: How does the RobustBench leaderboard differ from the AutoAttack leaderboard? 🤔
A: The AutoAttack leaderboard was the starting point of RobustBench. Now only the RobustBench leaderboard is actively maintained.

Q: How does the RobustBench leaderboard differ from robust-ml.org? 🤔
A: robust-ml.org focuses on adaptive evaluations, but we provide a standardized benchmark. Adaptive evaluations have been very useful (e.g., see Tramer et al., 2020) but they are also very time-consuming and not standardized by definition. Instead, we argue that one can estimate robustness accurately mostly without adaptive attacks but for this one has to introduce some restrictions on the considered models. However, we do welcome adaptive evaluations and we are always interested in showing the best known robust accuracy.

Q: How is it related to libraries like foolbox / cleverhans / advertorch? 🤔
A: These libraries provide implementations of different attacks. Besides the standardized benchmark, RobustBench additionally provides a repository of the most robust models. So you can start using the robust models in one line of code (see the tutorial below 👇).

Q: Why is Lp-robustness still interesting? 🤔
A: There are numerous interesting applications of Lp-robustness that span transfer learning (Salman et al. (2020), Utrera et al. (2020)), interpretability (Tsipras et al. (2018), Kaur et al. (2019), Engstrom et al. (2019)), security (Tramèr et al. (2018), Saadatpanah et al. (2019)), generalization (Xie et al. (2019), Zhu et al. (2019), Bochkovskiy et al. (2020)), robustness to unseen perturbations (Xie et al. (2019), Kang et al. (2019)), stabilization of GAN training (Zhong et al. (2020)).

Q: What about verified adversarial robustness? 🤔
A: We mostly focus on defenses which improve empirical robustness, given the lack of clarity regarding which approaches really improve robustness and which only make some particular attacks unsuccessful. However, we do not restrict submissions of verifiably robust models (e.g., we have Zhang et al. (2019) in our CIFAR-10 Linf leaderboard). For methods targeting verified robustness, we encourage the readers to check out Salman et al. (2019) and Li et al. (2020).

Q: What if I have a better attack than the one used in this benchmark? 🤔
A: We will be happy to add a better attack or any adaptive evaluation that would complement our default standardized attacks.

Model Zoo: quick tour

The goal of our Model Zoo is to simplify the usage of robust models as much as possible. Check out our Colab notebook here 👉 RobustBench: quick start for a quick introduction. It is also summarized below 👇.

First, install the latest version of RobustBench (recommended):

pip install git+https://github.com/RobustBench/robustbench.git

or the latest stable version of RobustBench (it is possible that automatic downloading of the models may not work):

pip install git+https://github.com/RobustBench/robustbench.git@v1.0

Now let's try to load CIFAR-10 and some quite robust CIFAR-10 models from Carmon2019Unlabeled that achieves 59.53% robust accuracy evaluated with AA under eps=8/255:

from robustbench.data import load_cifar10

x_test, y_test = load_cifar10(n_examples=50)

from robustbench.utils import load_model

model = load_model(model_name='Carmon2019Unlabeled', dataset='cifar10', threat_model='Linf')

Let's try to evaluate the robustness of this model. We can use any favourite library for this. For example, FoolBox implements many different attacks. We can start from a simple PGD attack:

!pip install -q foolbox
import foolbox as fb
fmodel = fb.PyTorchModel(model, bounds=(0, 1))

_, advs, success = fb.attacks.LinfPGD()(fmodel, x_test.to('cuda:0'), y_test.to('cuda:0'), epsilons=[8/255])
print('Robust accuracy: {:.1%}'.format(1 - success.float().mean()))
>>> Robust accuracy: 58.0%

Wonderful! Can we do better with a more accurate attack?

Let's try to evaluate its robustness with a cheap version AutoAttack from ICML 2020 with 2/4 attacks (only APGD-CE and APGD-DLR):

# autoattack is installed as a dependency of robustbench so there is not need to install it separately
from autoattack import AutoAttack
adversary = AutoAttack(model, norm='Linf', eps=8/255, version='custom', attacks_to_run=['apgd-ce', 'apgd-dlr'])
adversary.apgd.n_restarts = 1
x_adv = adversary.run_standard_evaluation(x_test, y_test)
>>> initial accuracy: 92.00%
>>> apgd-ce - 1/1 - 19 out of 46 successfully perturbed
>>> robust accuracy after APGD-CE: 54.00% (total time 10.3 s)
>>> apgd-dlr - 1/1 - 1 out of 27 successfully perturbed
>>> robust accuracy after APGD-DLR: 52.00% (total time 17.0 s)
>>> max Linf perturbation: 0.03137, nan in tensor: 0, max: 1.00000, min: 0.00000
>>> robust accuracy: 52.00%

Note that for our standardized evaluation of Linf-robustness we use the full version of AutoAttack which is slower but more accurate (for that just use adversary = AutoAttack(model, norm='Linf', eps=8/255)).

What about other types of perturbations? Is Lp-robustness useful there? We can evaluate the available models on more general perturbations. For example, let's take images corrupted by fog perturbations from CIFAR-10-C with the highest level of severity (5). Are different Linf robust models perform better on them?

from robustbench.data import load_cifar10c
from robustbench.utils import clean_accuracy

corruptions = ['fog']
x_test, y_test = load_cifar10c(n_examples=1000, corruptions=corruptions, severity=5)

for model_name in ['Standard', 'Engstrom2019Robustness', 'Rice2020Overfitting',
                   'Carmon2019Unlabeled']:
 model = load_model(model_name, dataset='cifar10', threat_model='Linf')
 acc = clean_accuracy(model, x_test, y_test)
 print(f'Model: {model_name}, CIFAR-10-C accuracy: {acc:.1%}')
>>> Model: Standard, CIFAR-10-C accuracy: 74.4%
>>> Model: Engstrom2019Robustness, CIFAR-10-C accuracy: 38.8%
>>> Model: Rice2020Overfitting, CIFAR-10-C accuracy: 22.0%
>>> Model: Carmon2019Unlabeled, CIFAR-10-C accuracy: 31.1%

As we can see, all these Linf robust models perform considerably worse than the standard model on this type of corruptions. This curious phenomenon was first noticed in Adversarial Examples Are a Natural Consequence of Test Error in Noise and explained from the frequency perspective in A Fourier Perspective on Model Robustness in Computer Vision.

However, on average adversarial training does help on CIFAR-10-C. One can check this easily by loading all types of corruptions via load_cifar10c(n_examples=1000, severity=5), and repeating evaluation on them.

*New*: Evaluating robustness of ImageNet models against 3D Common Corruptions (ImageNet-3DCC)

3D Common Corruptions (3DCC) is a recent benchmark by Kar et al. (CVPR 2022) using scene geometry to generate realistic corruptions. You can evaluate robustness of a standard ResNet-50 against ImageNet-3DCC by following these steps:

  1. Download the data from here using the provided tool. The data will be saved into a folder named ImageNet-3DCC.

  2. Run the sample evaluation script to obtain accuracies and save them in a pickle file:

import torch 
from robustbench.data import load_imagenet3dcc
from robustbench.utils import clean_accuracy, load_model

corruptions_3dcc = ['near_focus', 'far_focus', 'bit_error', 'color_quant', 
                   'flash', 'fog_3d', 'h265_abr', 'h265_crf',
                   'iso_noise', 'low_light', 'xy_motion_blur', 'z_motion_blur'] # 12 corruptions in ImageNet-3DCC

device = torch.device("cuda:0")
model = load_model('Standard_R50', dataset='imagenet', threat_model='corruptions').to(device)
for corruption in corruptions_3dcc:
    for s in [1, 2, 3, 4, 5]:  # 5 severity levels
        x_test, y_test = load_imagenet3dcc(n_examples=5000, corruptions=[corruption], severity=s, data_dir=$PATH_IMAGENET_3DCC)
        acc = clean_accuracy(model, x_test.to(device), y_test.to(device), device=device)
        print(f'Model: {model_name}, ImageNet-3DCC corruption: {corruption} severity: {s} accuracy: {acc:.1%}')

Model Zoo

In order to use a model, you just need to know its ID, e.g. Carmon2019Unlabeled, and to run:

from robustbench import load_model

model = load_model(model_name='Carmon2019Unlabeled', dataset='cifar10', threat_model='Linf')

which automatically downloads the model (all models are defined in model_zoo/models.py).

Reproducing evaluation of models from the Model Zoo can be done directly from the command line. Here is an example of an evaluation of Salman2020Do_R18 model with AutoAttack on ImageNet for eps=4/255=0.0156862745:

python -m robustbench.eval --n_ex=5000 --dataset=imagenet --threat_model=Linf --model_name=Salman2020Do_R18 --data_dir=/tmldata1/andriush/imagenet --batch_size=128 --eps=0.0156862745

The CIFAR-10, CIFAR-10-C, CIFAR-100, and CIFAR-100-C datasets are downloaded automatically. However, the ImageNet datasets should be downloaded manually due to their licensing:

  • ImageNet: Obtain the download link here (requires just signing up from an academic email, the approval system there is automatic and happens instantly) and then follow the instructions here to extract the validation set in a pytorch-compatible format into folder val.
  • ImageNet-C: Please visit here for the instructions.
  • ImageNet-3DCC: Download the data from here using the provided tool. The data will be saved into a folder named ImageNet-3DCC.

In order to use the models from the Model Zoo, you can find all available model IDs in the tables below. Note that the full leaderboard contains a bit more models which we either have not yet added to the Model Zoo or their authors don't want them to appear in the Model Zoo.

CIFAR-10

Linf, eps=8/255

#Model IDPaperClean accuracyRobust accuracyArchitectureVenue
1Bartoldson2024Adversarial_WRN-94-16Adversarial Robustness Limits via Scaling-Law and Human-Alignment Studies93.68%73.71%WideResNet-94-16ICML 2024
2Amini2024MeanSparse_S-WRN-94-16MeanSparse: Post-Training Robustness Enhancement Through Mean-Centered Feature Sparsification93.60%73.10%MeanSparse WideResNet-94-16arXiv, Jun 2024
3Bartoldson2024Adversarial_WRN-82-8Adversarial Robustness Limits via Scaling-Law and Human-Alignment Studies93.11%71.59%WideResNet-82-8ICML 2024
4Peng2023RobustRobust Principles: Architectural Design Principles for Adversarially Robust CNNs93.27%71.07%RaWideResNet-70-16BMVC 2023
5Wang2023Better_WRN-70-16Better Diffusion Models Further Improve Adversarial Training93.25%70.69%WideResNet-70-16ICML 2023
6Bai2024MixedNUTSMixedNUTS: Training-Free Accuracy-Robustness Balance via Nonlinearly Mixed Classifiers95.19%69.71%ResNet-152 + WideResNet-70-16TMLR, Aug 2024
7Amini2024MeanSparse_Ra_WRN_70_16MeanSparse: Post-Training Robustness Enhancement Through Mean-Centered Feature Sparsification93.24%68.94%MeanSparse RaWideResNet-70-16arXiv, Jun 2024
8Bai2023Improving_edmImproving the Accuracy-Robustness Trade-off of Classifiers via Adaptive Smoothing95.23%68.06%ResNet-152 + WideResNet-70-16 + mixing networkSIMODS 2024
9Cui2023Decoupled_WRN-28-10Decoupled Kullback-Leibler Divergence Loss92.16%67.73%WideResNet-28-10NeurIPS 2024
10Wang2023Better_WRN-28-10Better Diffusion Models Further Improve Adversarial Training92.44%67.31%WideResNet-28-10ICML 2023
11Rebuffi2021Fixing_70_16_cutmix_extraFixing Data Augmentation to Improve Adversarial Robustness92.23%66.56%WideResNet-70-16arXiv, Mar 2021
12Gowal2021Improving_70_16_ddpm_100mImproving Robustness using Generated Data88.74%66.10%WideResNet-70-16NeurIPS 2021
13Gowal2020Uncovering_70_16_extraUncovering the Limits of Adversarial Training against Norm-Bounded Adversarial Examples91.10%65.87%WideResNet-70-16arXiv, Oct 2020
14Huang2022Revisiting_WRN-A4Revisiting Residual Networks for Adversarial Robustness: An Architectural Perspective91.58%65.79%WideResNet-A4arXiv, Dec. 2022
15Rebuffi2021Fixing_106_16_cutmix_ddpmFixing Data Augmentation to Improve Adversarial Robustness88.50%64.58%WideResNet-106-16arXiv, Mar 2021
16Rebuffi2021Fixing_70_16_cutmix_ddpmFixing Data Augmentation to Improve Adversarial Robustness88.54%64.20%WideResNet-70-16arXiv, Mar 2021
17Kang2021StableStable Neural ODE with Lyapunov-Stable Equilibrium Points for Defending Against Adversarial Attacks93.73%64.20%WideResNet-70-16, Neural ODE blockNeurIPS 2021
18Xu2023Exploring_WRN-28-10Exploring and Exploiting Decision Boundary Dynamics for Adversarial Robustness93.69%63.89%WideResNet-28-10ICLR 2023
19Gowal2021Improving_28_10_ddpm_100mImproving Robustness using Generated Data87.50%63.38%WideResNet-28-10NeurIPS 2021
20Pang2022Robustness_WRN70_16 Robustness and Accuracy Could Be Reconcilable by (Proper) Definition89.01%63.35%WideResNet-70-16ICML 2022
21Rade2021Helper_extraHelper-based Adversarial Training: Reducing Excessive Margin to Achieve a Better Accuracy vs. Robustness Trade-off91.47%62.83%WideResNet-34-10OpenReview, Jun 2021
22Sehwag2021Proxy_ResNest152Robust Learning Meets Generative Models: Can Proxy Distributions Improve Adversarial Robustness?87.30%62.79%ResNest152ICLR 2022
23Gowal2020Uncovering_28_10_extraUncovering the Limits of Adversarial Training against Norm-Bounded Adversarial Examples89.48%62.76%WideResNet-28-10arXiv, Oct 2020
24Huang2021Exploring_emaExploring Architectural Ingredients of Adversarially Robust Deep Neural Networks91.23%62.54%WideResNet-34-RNeurIPS 2021
25Huang2021ExploringExploring Architectural Ingredients of Adversarially Robust Deep Neural Networks90.56%61.56%WideResNet-34-RNeurIPS 2021
26Dai2021ParameterizingParameterizing Activation Functions for Adversarial Robustness87.02%61.55%WideResNet-28-10-PSSiLUarXiv, Oct 2021
27Pang2022Robustness_WRN28_10 Robustness and Accuracy Could Be Reconcilable by (Proper) Definition88.61%61.04%WideResNet-28-10ICML 2022
28Rade2021Helper_ddpmHelper-based Adversarial Training: Reducing Excessive Margin to Achieve a Better Accuracy vs. Robustness Trade-off88.16%60.97%WideResNet-28-10OpenReview, Jun 2021
29Rebuffi2021Fixing_28_10_cutmix_ddpmFixing Data Augmentation to Improve Adversarial Robustness87.33%60.73%WideResNet-28-10arXiv, Mar 2021
30Sridhar2021Robust_34_15Improving Neural Network Robustness via Persistency of Excitation86.53%60.41%WideResNet-34-15ACC 2022
31Sehwag2021ProxyRobust Learning Meets Generative Models: Can Proxy Distributions Improve Adversarial Robustness?86.68%60.27%WideResNet-34-10ICLR 2022
32Wu2020Adversarial_extraAdversarial Weight Perturbation Helps Robust Generalization88.25%60.04%WideResNet-28-10NeurIPS 2020
33Sridhar2021RobustImproving Neural Network Robustness via Persistency of Excitation89.46%59.66%WideResNet-28-10ACC 2022
34Zhang2020GeometryGeometry-aware Instance-reweighted Adversarial Training89.36%59.64%WideResNet-28-10ICLR 2021
35Carmon2019UnlabeledUnlabeled Data Improves Adversarial Robustness89.69%59.53%WideResNet-28-10NeurIPS 2019
36Gowal2021Improving_R18_ddpm_100mImproving Robustness using Generated Data87.35%58.50%PreActResNet-18NeurIPS 2021
37Chen2024Data_WRN_34_20Data filtering for efficient adversarial training86.10%58.09%WideResNet-34-20Pattern Recognition 2024
38Addepalli2021Towards_WRN34Scaling Adversarial Training to Large Perturbation Bounds85.32%58.04%WideResNet-34-10ECCV 2022
39Addepalli2022Efficient_WRN_34_10Efficient and Effective Augmentation Strategy for Adversarial Training88.71%57.81%WideResNet-34-10NeurIPS 2022
40Chen2021LTD_WRN34_20LTD: Low Temperature Distillation for Robust Adversarial Training86.03%57.71%WideResNet-34-20arXiv, Nov 2021
41Rade2021Helper_R18_extraHelper-based Adversarial Training: Reducing Excessive Margin to Achieve a Better Accuracy vs. Robustness Trade-off89.02%57.67%PreActResNet-18OpenReview, Jun 2021
42Jia2022LAS-AT_70_16LAS-AT: Adversarial Training with Learnable Attack Strategy85.66%57.61%WideResNet-70-16arXiv, Mar 2022
43Debenedetti2022Light_XCiT-L12A Light Recipe to Train Robust Vision Transformers91.73%57.58%XCiT-L12arXiv, Sep 2022
44Chen2024Data_WRN_34_10Data filtering for efficient adversarial training86.54%57.30%WideResNet-34-10Pattern Recognition 2024
45Debenedetti2022Light_XCiT-M12A Light Recipe to Train Robust Vision Transformers91.30%57.27%XCiT-M12arXiv, Sep 2022
46Sehwag2020HydraHYDRA: Pruning Adversarially Robust Neural Networks88.98%57.14%WideResNet-28-10NeurIPS 2020
47Gowal2020Uncovering_70_16Uncovering the Limits of Adversarial Training against Norm-Bounded Adversarial Examples85.29%57.14%WideResNet-70-16arXiv, Oct 2020
48Rade2021Helper_R18_ddpmHelper-based Adversarial Training: Reducing Excessive Margin to Achieve a Better Accuracy vs. Robustness Trade-off86.86%57.09%PreActResNet-18OpenReview, Jun 2021
49Cui2023Decoupled_WRN-34-10Decoupled Kullback-Leibler Divergence Loss85.31%57.09%WideResNet-34-10NeurIPS 2024
50Chen2021LTD_WRN34_10LTD: Low Temperature Distillation for Robust Adversarial Training85.21%56.94%WideResNet-34-10arXiv, Nov 2021
51Gowal2020Uncovering_34_20Uncovering the Limits of Adversarial Training against Norm-Bounded Adversarial Examples85.64%56.82%WideResNet-34-20arXiv, Oct 2020
52Rebuffi2021Fixing_R18_ddpmFixing Data Augmentation to Improve Adversarial Robustness83.53%56.66%PreActResNet-18arXiv, Mar 2021
53Wang2020ImprovingImproving Adversarial Robustness Requires Revisiting Misclassified Examples87.50%56.29%WideResNet-28-10ICLR 2020
54Jia2022LAS-AT_34_10LAS-AT: Adversarial Training with Learnable Attack Strategy84.98%56.26%WideResNet-34-10arXiv, Mar 2022
55Wu2020AdversarialAdversarial Weight Perturbation Helps Robust Generalization85.36%56.17%WideResNet-34-10NeurIPS 2020
56Debenedetti2022Light_XCiT-S12A Light Recipe to Train Robust Vision Transformers90.06%56.14%XCiT-S12arXiv, Sep 2022
57Sehwag2021Proxy_R18Robust Learning Meets Generative Models: Can Proxy Distributions Improve Adversarial Robustness?84.59%55.54%ResNet-18ICLR 2022
58Hendrycks2019UsingUsing Pre-Training Can Improve Model Robustness and Uncertainty87.11%54.92%WideResNet-28-10ICML 2019
59Pang2020BoostingBoosting Adversarial Training with Hypersphere Embedding85.14%53.74%WideResNet-34-20NeurIPS 2020
60Cui2020Learnable_34_20Learnable Boundary Guided Adversarial Training88.70%53.57%WideResNet-34-20ICCV 2021
61Zhang2020AttacksAttacks Which Do Not Kill Training Make Adversarial Learning Stronger84.52%53.51%WideResNet-34-10ICML 2020
62Rice2020OverfittingOverfitting in adversarially robust deep learning85.34%53.42%WideResNet-34-20ICML 2020
63Huang2020SelfSelf-Adaptive Training: beyond Empirical Risk Minimization83.48%53.34%WideResNet-34-10NeurIPS 2020
64Zhang2019TheoreticallyTheoretically Principled Trade-off between Robustness and Accuracy84.92%53.08%WideResNet-34-10ICML 2019
65Cui2020Learnable_34_10Learnable Boundary Guided Adversarial Training88.22%52.86%WideResNet-34-10ICCV 2021
66Addepalli2022Efficient_RN18Efficient and Effective Augmentation Strategy for Adversarial Training85.71%52.48%ResNet-18NeurIPS 2022
67Chen2020AdversarialAdversarial Robustness: From Self-Supervised Pre-Training to Fine-Tuning86.04%51.56%ResNet-50
(3x ensemble)
CVPR 2020
68Chen2020EfficientEfficient Robust Training via Backward Smoothing85.32%51.12%WideResNet-34-10arXiv, Oct 2020
69Addepalli2021Towards_RN18Scaling Adversarial Training to Large Perturbation Bounds80.24%51.06%ResNet-18ECCV 2022
70Sitawarin2020ImprovingImproving Adversarial Robustness Through Progressive Hardening86.84%50.72%WideResNet-34-10arXiv, Mar 2020
71Engstrom2019RobustnessRobustness library87.03%49.25%ResNet-50GitHub,
Oct 2019
72Zhang2019YouYou Only Propagate Once: Accelerating Adversarial Training via Maximal Principle87.20%44.83%WideResNet-34-10NeurIPS 2019
73Andriushchenko2020UnderstandingUnderstanding and Improving Fast Adversarial Training79.84%43.93%PreActResNet-18NeurIPS 2020
74Wong2020FastFast is better than free: Revisiting adversarial training83.34%43.21%PreActResNet-18ICLR 2020
75Ding2020MMAMMA Training: Direct Input Space Margin Maximization through Adversarial Training84.36%41.44%WideResNet-28-4ICLR 2020
76StandardStandardly trained model94.78%0.00%WideResNet-28-10N/A

L2, eps=0.5

#Model IDPaperClean accuracyRobust accuracyArchitectureVenue
1Wang2023Better_WRN-70-16Better Diffusion Models Further Improve Adversarial Training95.54%84.97%WideResNet-70-16arXiv, Feb 2023
2Amini2024MeanSparse_S-WRN-70-16MeanSparse: Post-Training Robustness Enhancement Through Mean-Centered Feature Sparsification95.51%84.33%MeanSparse WideResNet-70-16arXiv, Jun 2024
3Wang2023Better_WRN-28-10Better Diffusion Models Further Improve Adversarial Training95.16%83.68%WideResNet-28-10ICML 2023
4Rebuffi2021Fixing_70_16_cutmix_extraFixing Data Augmentation to Improve Adversarial Robustness95.74%82.32%WideResNet-70-16arXiv, Mar 2021
5Gowal2020Uncovering_extraUncovering the Limits of Adversarial Training against Norm-Bounded Adversarial Examples94.74%80.53%WideResNet-70-16arXiv, Oct 2020
6Rebuffi2021Fixing_70_16_cutmix_ddpmFixing Data Augmentation to Improve Adversarial Robustness92.41%80.42%WideResNet-70-16arXiv, Mar 2021
7Rebuffi2021Fixing_28_10_cutmix_ddpmFixing Data Augmentation to Improve Adversarial Robustness91.79%78.80%WideResNet-28-10arXiv, Mar 2021
8Augustin2020Adversarial_34_10_extraAdversarial Robustness on In- and Out-Distribution Improves Explainability93.96%78.79%WideResNet-34-10ECCV 2020
9Sehwag2021ProxyRobust Learning Meets Generative Models: Can Proxy Distributions Improve Adversarial Robustness?90.93%77.24%WideResNet-34-10ICLR 2022
10Augustin2020Adversarial_34_10Adversarial Robustness on In- and Out-Distribution Improves Explainability92.23%76.25%WideResNet-34-10ECCV 2020
11Rade2021Helper_R18_ddpmHelper-based Adversarial Training: Reducing Excessive Margin to Achieve a Better Accuracy vs. Robustness Trade-off90.57%76.15%PreActResNet-18OpenReview, Jun 2021
12Rebuffi2021Fixing_R18_cutmix_ddpmFixing Data Augmentation to Improve Adversarial Robustness90.33%75.86%PreActResNet-18arXiv, Mar 2021
13Gowal2020UncoveringUncovering the Limits of Adversarial Training against Norm-Bounded Adversarial Examples90.90%74.50%WideResNet-70-16arXiv, Oct 2020
14Sehwag2021Proxy_R18Robust Learning Meets Generative Models: Can Proxy Distributions Improve Adversarial Robustness?89.76%74.41%ResNet-18ICLR 2022
15Wu2020AdversarialAdversarial Weight Perturbation Helps Robust Generalization88.51%73.66%WideResNet-34-10NeurIPS 2020
16Augustin2020AdversarialAdversarial Robustness on In- and Out-Distribution Improves Explainability91.08%72.91%ResNet-50ECCV 2020
17Engstrom2019RobustnessRobustness library90.83%69.24%ResNet-50GitHub,
Sep 2019
18Rice2020OverfittingOverfitting in adversarially robust deep learning88.67%67.68%PreActResNet-18ICML 2020
19Rony2019DecouplingDecoupling Direction and Norm for Efficient Gradient-Based L2 Adversarial Attacks and Defenses89.05%66.44%WideResNet-28-10CVPR 2019
20Ding2020MMAMMA Training: Direct Input Space Margin Maximization through Adversarial Training88.02%66.09%WideResNet-28-4ICLR 2020
21StandardStandardly trained model94.78%0.00%WideResNet-28-10N/A

Common Corruptions

#Model IDPaperClean accuracyRobust accuracyArchitectureVenue
1Diffenderfer2021Winning_LRR_CARD_DeckA Winning Hand: Compressing Deep Networks Can Improve Out-Of-Distribution Robustness96.56%92.78%WideResNet-18-2NeurIPS 2021
2Diffenderfer2021Winning_LRRA Winning Hand: Compressing Deep Networks Can Improve Out-Of-Distribution Robustness96.66%90.94%WideResNet-18-2NeurIPS 2021
3Diffenderfer2021Winning_Binary_CARD_DeckA Winning Hand: Compressing Deep Networks Can Improve Out-Of-Distribution Robustness95.09%90.15%WideResNet-18-2NeurIPS 2021
4Kireev2021Effectiveness_RLATAugMixOn the effectiveness of adversarial training against common corruptions94.75%89.60%ResNet-18arXiv, Mar 2021
5Hendrycks2020AugMix_ResNeXtAugMix: A Simple Data Processing Method to Improve Robustness and Uncertainty95.83%89.09%ResNeXt29_32x4dICLR 2020
6Modas2021PRIMEResNet18PRIME: A Few Primitives Can Boost Robustness to Common Corruptions93.06%89.05%ResNet-18arXiv, Dec 2021
7Hendrycks2020AugMix_WRNAugMix: A Simple Data Processing Method to Improve Robustness and Uncertainty95.08%88.82%WideResNet-40-2ICLR 2020
8Kireev2021Effectiveness_RLATAugMixNoJSDOn the effectiveness of adversarial training against common corruptions94.77%88.53%PreActResNet-18arXiv, Mar 2021
9Diffenderfer2021Winning_BinaryA Winning Hand: Compressing Deep Networks Can Improve Out-Of-Distribution Robustness94.87%88.32%WideResNet-18-2NeurIPS 2021
10Rebuffi2021Fixing_70_16_cutmix_extra_L2Fixing Data Augmentation to Improve Adversarial Robustness95.74%88.23%WideResNet-70-16arXiv, Mar 2021
11Kireev2021Effectiveness_AugMixNoJSDOn the effectiveness of adversarial training against common corruptions94.97%86.60%PreActResNet-18arXiv, Mar 2021
12Kireev2021Effectiveness_Gauss50percentOn the effectiveness of adversarial training against common corruptions93.24%85.04%PreActResNet-18arXiv, Mar 2021
13Kireev2021Effectiveness_RLATOn the effectiveness of adversarial training against common corruptions93.10%84.10%PreActResNet-18arXiv, Mar 2021
14Rebuffi2021Fixing_70_16_cutmix_extra_LinfFixing Data Augmentation to Improve Adversarial Robustness92.23%82.82%WideResNet-70-16arXiv, Mar 2021
15Addepalli2022Efficient_WRN_34_10Efficient and Effective Augmentation Strategy for Adversarial Training88.71%80.12%WideResNet-34-10CVPRW 2022
16Addepalli2021Towards_WRN34Towards Achieving Adversarial Robustness Beyond Perceptual Limits85.32%76.78%WideResNet-34-10arXiv, Apr 2021
17StandardStandardly trained model94.78%73.46%WideResNet-28-10N/A

CIFAR-100

Linf, eps=8/255

#Model IDPaperClean accuracyRobust accuracyArchitectureVenue
1Wang2023Better_WRN-70-16Better Diffusion Models Further Improve Adversarial Training75.22%42.66%WideResNet-70-16ICML 2023
2Amini2024MeanSparse_S-WRN-70-16MeanSparse: Post-Training Robustness Enhancement Through Mean-Centered Feature Sparsification75.13%42.25%MeanSparse WideResNet-70-16arXiv, Jun 2024
3Bai2024MixedNUTSMixedNUTS: Training-Free Accuracy-Robustness Balance via Nonlinearly Mixed Classifiers83.08%41.80%ResNet-152 + WideResNet-70-16TMLR, Aug 2024
4Cui2023Decoupled_WRN-28-10Decoupled Kullback-Leibler Divergence Loss73.85%39.18%WideResNet-28-10NeurIPS 2024
5Wang2023Better_WRN-28-10Better Diffusion Models Further Improve Adversarial Training72.58%38.77%WideResNet-28-10ICML 2023
6Bai2023Improving_edmImproving the Accuracy-Robustness Trade-off of Classifiers via Adaptive Smoothing85.21%38.72%ResNet-152 + WideResNet-70-16 + mixing networkSIMODS 2024
7Gowal2020Uncovering_extraUncovering the Limits of Adversarial Training against Norm-Bounded Adversarial Examples69.15%36.88%WideResNet-70-16arXiv, Oct 2020
8Bai2023Improving_tradesImproving the Accuracy-Robustness Trade-off of Classifiers via Adaptive Smoothing80.18%35.15%ResNet-152 + WideResNet-70-16 + mixing networkSIMODS 2024
9Debenedetti2022Light_XCiT-L12A Light Recipe to Train Robust Vision Transformers70.76%35.08%XCiT-L12arXiv, Sep 2022
10Rebuffi2021Fixing_70_16_cutmix_ddpmFixing Data Augmentation to Improve Adversarial Robustness63.56%34.64%WideResNet-70-16arXiv, Mar 2021
11Debenedetti2022Light_XCiT-M12A Light Recipe to Train Robust Vision Transformers69.21%34.21%XCiT-M12arXiv, Sep 2022
12Pang2022Robustness_WRN70_16 Robustness and Accuracy Could Be Reconcilable by (Proper) Definition65.56%33.05%WideResNet-70-16ICML 2022
13Cui2023Decoupled_WRN-34-10_autoaugDecoupled Kullback-Leibler Divergence Loss65.93%32.52%WideResNet-34-10NeurIPS 2024
14Debenedetti2022Light_XCiT-S12A Light Recipe to Train Robust Vision Transformers67.34%32.19%XCiT-S12arXiv, Sep 2022
15Rebuffi2021Fixing_28_10_cutmix_ddpmFixing Data Augmentation to Improve Adversarial Robustness62.41%32.06%WideResNet-28-10arXiv, Mar 2021
16Jia2022LAS-AT_34_20LAS-AT: Adversarial Training with Learnable Attack Strategy67.31%31.91%WideResNet-34-20arXiv, Mar 2022
17Cui2023Decoupled_WRN-34-10Decoupled Kullback-Leibler Divergence Loss65.76%31.91%WideResNet-34-10NeurIPS 2024
18Addepalli2022Efficient_WRN_34_10Efficient and Effective Augmentation Strategy for Adversarial Training68.75%31.85%WideResNet-34-10NeurIPS 2022
19Cui2020Learnable_34_10_LBGAT9_eps_8_255Learnable Boundary Guided Adversarial Training62.99%31.20%WideResNet-34-10ICCV 2021
20Sehwag2021ProxyRobust Learning Meets Generative Models: Can Proxy Distributions Improve Adversarial Robustness?65.93%31.15%WideResNet-34-10ICLR 2022
21Chen2024Data_WRN_34_10Data filtering for efficient adversarial training64.32%31.13%WideResNet-34-10Pattern Recognition 2024
22Pang2022Robustness_WRN28_10 Robustness and Accuracy Could Be Reconcilable by (Proper) Definition63.66%31.08%WideResNet-28-10ICML 2022
23Jia2022LAS-AT_34_10LAS-AT: Adversarial Training with Learnable Attack Strategy64.89%30.77%WideResNet-34-10arXiv, Mar 2022
24Chen2021LTD_WRN34_10LTD: Low Temperature Distillation for Robust Adversarial Training64.07%30.59%WideResNet-34-10arXiv, Nov 2021
25Addepalli2021Towards_WRN34Scaling Adversarial Training to Large Perturbation Bounds65.73%30.35%WideResNet-34-10ECCV 2022
26Cui2020Learnable_34_20_LBGAT6Learnable Boundary Guided Adversarial Training62.55%30.20%WideResNet-34-20ICCV 2021
27Gowal2020UncoveringUncovering the Limits of Adversarial Training against Norm-Bounded Adversarial Examples60.86%30.03%WideResNet-70-16arXiv, Oct 2020
28Cui2020Learnable_34_10_LBGAT6Learnable Boundary Guided Adversarial Training60.64%29.33%WideResNet-34-10ICCV 2021
29Rade2021Helper_R18_ddpmHelper-based Adversarial Training: Reducing Excessive Margin to Achieve a Better Accuracy vs. Robustness Trade-off61.50%28.88%PreActResNet-18OpenReview, Jun 2021
30Wu2020AdversarialAdversarial Weight Perturbation Helps Robust Generalization60.38%28.86%WideResNet-34-10NeurIPS 2020
31Rebuffi2021Fixing_R18_ddpmFixing Data Augmentation to Improve Adversarial Robustness56.87%28.50%PreActResNet-18arXiv, Mar 2021
32Hendrycks2019UsingUsing Pre-Training Can Improve Model Robustness and Uncertainty59.23%28.42%WideResNet-28-10ICML 2019
33Addepalli2022Efficient_RN18Efficient and Effective Augmentation Strategy for Adversarial Training65.45%27.67%ResNet-18NeurIPS 2022
34Cui2020Learnable_34_10_LBGAT0Learnable Boundary Guided Adversarial Training70.25%27.16%WideResNet-34-10ICCV 2021
35Addepalli2021Towards_PARN18Scaling Adversarial Training to Large Perturbation Bounds62.02%27.14%PreActResNet-18ECCV 2022
36Chen2020EfficientEfficient Robust Training via Backward Smoothing62.15%26.94%WideResNet-34-10arXiv, Oct 2020
37Sitawarin2020ImprovingImproving Adversarial Robustness Through Progressive Hardening62.82%24.57%WideResNet-34-10arXiv, Mar 2020
38Rice2020OverfittingOverfitting in adversarially robust deep learning53.83%18.95%PreActResNet-18ICML 2020

Corruptions

#Model IDPaperClean accuracyRobust accuracyArchitectureVenue
1Diffenderfer2021Winning_LRR_CARD_DeckA Winning Hand: Compressing Deep Networks Can Improve Out-Of-Distribution Robustness79.93%71.08%WideResNet-18-2NeurIPS 2021
2Diffenderfer2021Winning_Binary_CARD_DeckA Winning Hand: Compressing Deep Networks Can Improve Out-Of-Distribution Robustness78.50%69.09%WideResNet-18-2NeurIPS 2021
3Modas2021PRIMEResNet18PRIME: A Few Primitives Can Boost Robustness to Common Corruptions77.60%68.28%ResNet-18arXiv, Dec 2021
4Diffenderfer2021Winning_LRRA Winning Hand: Compressing Deep Networks Can Improve Out-Of-Distribution Robustness78.41%66.45%WideResNet-18-2NeurIPS 2021
5Diffenderfer2021Winning_BinaryA Winning Hand: Compressing Deep Networks Can Improve Out-Of-Distribution Robustness77.69%65.26%WideResNet-18-2NeurIPS 2021
6Hendrycks2020AugMix_ResNeXtAugMix: A Simple Data Processing Method to Improve Robustness and Uncertainty78.90%65.14%ResNeXt29_32x4dICLR 2020
7Hendrycks2020AugMix_WRNAugMix: A Simple Data Processing Method to Improve Robustness and Uncertainty76.28%64.11%WideResNet-40-2ICLR 2020
8Addepalli2022Efficient_WRN_34_10Efficient and Effective Augmentation Strategy for Adversarial Training68.75%56.95%WideResNet-34-10CVPRW 2022
9Gowal2020Uncovering_extra_LinfUncovering the Limits of Adversarial Training against Norm-Bounded Adversarial Examples69.15%56.00%WideResNet-70-16arXiv, Oct 2020
10Addepalli2021Towards_WRN34Towards Achieving Adversarial Robustness Beyond Perceptual Limits65.73%54.88%WideResNet-34-10OpenReview, Jun 2021
11Addepalli2021Towards_PARN18Towards Achieving Adversarial Robustness Beyond Perceptual Limits62.02%51.77%PreActResNet-18OpenReview, Jun 2021
12Gowal2020Uncovering_LinfUncovering the Limits of Adversarial Training against Norm-Bounded Adversarial Examples60.86%49.46%WideResNet-70-16arXiv, Oct 2020

ImageNet

Note: the values (even clean accuracy) might have small fluctuations depending on the version of the packages e.g. torchvision.

Linf, eps=4/255

#Model IDPaperClean accuracyRobust accuracyArchitectureVenue
1Xu2024MIMIR_Swin-LMIMIR: Masked Image Modeling for Mutual Information-based Adversarial Robustness78.62%59.68%Swin-LarXiv, Dec 2023
2Liu2023Comprehensive_Swin-LA Comprehensive Study on Robustness of Image Classification Models: Benchmarking and Rethinking78.92%59.56%Swin-LarXiv, Feb 2023
3Amini2024MeanSparse_Swin-LMeanSparse: Post-Training Robustness Enhancement Through Mean-Centered Feature Sparsification78.80%58.92%MeanSparse Swin-LarXiv, Jun 2024
4Bai2024MixedNUTSMixedNUTS: Training-Free Accuracy-Robustness Balance via Nonlinearly Mixed Classifiers81.48%58.50%ConvNeXtV2-L + Swin-LTMLR, Aug 2024
5Liu2023Comprehensive_ConvNeXt-LA Comprehensive Study on Robustness of Image Classification Models: Benchmarking and Rethinking78.02%58.48%ConvNeXt-LarXiv, Feb 2023
6Amini2024MeanSparse_ConvNeXt-LMeanSparse: Post-Training Robustness Enhancement Through Mean-Centered Feature Sparsification77.92%58.22%MeanSparse ConvNeXt-LarXiv, Jun 2024
7Singh2023Revisiting_ConvNeXt-L-ConvStemRevisiting Adversarial Training for ImageNet: Architectures, Training and Generalization across Threat Models77.00%57.70%ConvNeXt-L + ConvStemNeurIPS 2023
8Liu2023Comprehensive_Swin-BA Comprehensive Study on Robustness of Image Classification Models: Benchmarking and Rethinking76.16%56.16%Swin-BarXiv, Feb 2023
9Singh2023Revisiting_ConvNeXt-B-ConvStemRevisiting Adversarial Training for ImageNet: Architectures, Training and Generalization across Threat Models75.90%56.14%ConvNeXt-B + ConvStemNeurIPS 2023
10Xu2024MIMIR_Swin-BMIMIR: Masked Image Modeling for Mutual Information-based Adversarial Robustness76.62%55.90%Swin-BarXiv, Dec 2023
11Liu2023Comprehensive_ConvNeXt-BA Comprehensive Study on Robustness of Image Classification Models: Benchmarking and Rethinking76.02%55.82%ConvNeXt-BarXiv, Feb 2023
12Singh2023Revisiting_ViT-B-ConvStemRevisiting Adversarial Training for ImageNet: Architectures, Training and Generalization across Threat Models76.30%54.66%ViT-B + ConvStemNeurIPS 2023
13RodriguezMunoz2024Characterizing_Swin-LCharacterizing Model Robustness via Natural Input Gradients79.36%53.82%Swin-LarXiv, Sep 2024
14Singh2023Revisiting_ConvNeXt-S-ConvStemRevisiting Adversarial Training for ImageNet: Architectures, Training and Generalization across Threat Models74.10%52.42%ConvNeXt-S + ConvStemNeurIPS 2023
15RodriguezMunoz2024Characterizing_Swin-BCharacterizing Model Robustness via Natural Input Gradients77.76%51.56%Swin-BarXiv, Sep 2024
16Singh2023Revisiting_ConvNeXt-T-ConvStemRevisiting Adversarial Training for ImageNet: Architectures, Training and Generalization across Threat Models72.72%49.46%ConvNeXt-T + ConvStemNeurIPS 2023
17Peng2023RobustRobust Principles: Architectural Design Principles for Adversarially Robust CNNs73.44%48.94%RaWideResNet-101-2BMVC 2023
18Singh2023Revisiting_ViT-S-ConvStemRevisiting Adversarial Training for ImageNet: Architectures, Training and Generalization across Threat Models72.56%48.08%ViT-S + ConvStemNeurIPS 2023
19Debenedetti2022Light_XCiT-L12A Light Recipe to Train Robust Vision Transformers73.76%47.60%XCiT-L12arXiv, Sep 2022
20Debenedetti2022Light_XCiT-M12A Light Recipe to Train Robust Vision Transformers74.04%45.24%XCiT-M12arXiv, Sep 2022
21Debenedetti2022Light_XCiT-S12A Light Recipe to Train Robust Vision Transformers72.34%41.78%XCiT-S12arXiv, Sep 2022
22Chen2024Data_WRN_50_2Data filtering for efficient adversarial training68.76%40.60%WideResNet-50-2Pattern Recognition 2024
23Mo2022When_Swin-BWhen Adversarial Training Meets Vision Transformers: Recipes from Training to Architecture74.66%38.30%Swin-BNeurIPS 2022
24Salman2020Do_50_2Do Adversarially Robust ImageNet Models Transfer Better?68.46%38.14%WideResNet-50-2NeurIPS 2020
25Salman2020Do_R50Do Adversarially Robust ImageNet Models Transfer Better?64.02%34.96%ResNet-50NeurIPS 2020
26Mo2022When_ViT-BWhen Adversarial Training Meets Vision Transformers: Recipes from Training to Architecture68.38%34.40%ViT-BNeurIPS 2022
27Engstrom2019RobustnessRobustness library62.56%29.22%ResNet-50GitHub,
Oct 2019
28Wong2020FastFast is better than free: Revisiting adversarial training55.62%26.24%ResNet-50ICLR 2020
29Salman2020Do_R18Do Adversarially Robust ImageNet Models Transfer Better?52.92%25.32%ResNet-18NeurIPS 2020
30Standard_R50Standardly trained model76.52%0.00%ResNet-50N/A

Corruptions (ImageNet-C & ImageNet-3DCC)

#Model IDPaperClean accuracyRobust accuracyArchitectureVenue
1Tian2022Deeper_DeiT-BDeeper Insights into the Robustness of ViTs towards Common Corruptions81.38%67.55%DeiT BasearXiv, Apr 2022
2Tian2022Deeper_DeiT-SDeeper Insights into the Robustness of ViTs towards Common Corruptions79.76%62.91%DeiT SmallarXiv, Apr 2022
3Erichson2022NoisyMix_newNoisyMix: Boosting Robustness by Combining Data Augmentations, Stability Training, and Noise Injections76.90%53.28%ResNet-50arXiv, Feb 2022
4Hendrycks2020ManyThe Many Faces of Robustness: A Critical Analysis of Out-of-Distribution Generalization76.86%52.90%ResNet-50ICCV 2021
5Erichson2022NoisyMixNoisyMix: Boosting Robustness by Combining Data Augmentations, Stability Training, and Noise Injections76.98%52.47%ResNet-50arXiv, Feb 2022
6Hendrycks2020AugMixAugMix: A Simple Data Processing Method to Improve Robustness and Uncertainty77.34%49.33%ResNet-50ICLR 2020
7Geirhos2018_SIN_INImageNet-trained CNNs are biased towards texture; increasing shape bias improves accuracy and robustness74.98%45.76%ResNet-50ICLR 2019
8Geirhos2018_SIN_IN_INImageNet-trained CNNs are biased towards texture; increasing shape bias improves accuracy and robustness77.56%42.00%ResNet-50ICLR 2019
9Geirhos2018_SINImageNet-trained CNNs are biased towards texture; increasing shape bias improves accuracy and robustness60.08%39.92%ResNet-50ICLR 2019
10Standard_R50Standardly trained model76.72%39.48%ResNet-50N/A
11Salman2020Do_50_2_LinfDo Adversarially Robust ImageNet Models Transfer Better?68.64%36.09%WideResNet-50-2NeurIPS 2020
12AlexNetImageNet Classification with Deep Convolutional Neural Networks56.24%21.12%AlexNetNeurIPS 2012

Notebooks

We host all the notebooks at Google Colab:

  • RobustBench: quick start: a quick tutorial to get started that illustrates the main features of RobustBench.
  • RobustBench: json stats: various plots based on the jsons from model_info (robustness over venues, robustness vs accuracy, etc).

Feel free to suggest a new notebook based on the Model Zoo or the jsons from model_info. We are very interested in collecting new insights about benefits and tradeoffs between different perturbation types.

How to contribute

Contributions to RobustBench are very welcome! You can help to improve RobustBench:

  • Are you an author of a recent paper focusing on improving adversarial robustness? Consider adding new models (see the instructions below 👇).
  • Do you have in mind some better standardized attack? Do you want to extend RobustBench to other threat models? We'll be glad to discuss that!
  • Do you have an idea how to make the existing codebase better? Just open a pull request or create an issue and we'll be happy to discuss potential changes.

Adding a new evaluation

In case you have some new (potentially, adaptive) evaluation that leads to a lower robust accuracy than AutoAttack, we will be happy to add it to the leaderboard. The easiest way is to open an issue with the "New external evaluation(s)" template and fill in all the fields.

Adding a new model

Public model submission (Leaderboard + Model Zoo)

The easiest way to add new models to the leaderboard and/or to the model zoo, is by opening an issue with the "New Model(s)" template and fill in all the fields.

In the following sections there are some tips on how to prepare the claim.

Claim

The claim can be computed in the following way (example for cifar10, Linf threat model):

import torch

from robustbench import benchmark
from myrobust model import MyRobustModel

threat_model = "Linf"  # one of {"Linf", "L2", "corruptions"}
dataset = "cifar10"  # one of {"cifar10", "cifar100", "imagenet"}

model = MyRobustModel()
model_name = "<Name><Year><FirstWordOfTheTitle>"
device = torch.device("cuda:0")

clean_acc, robust_acc = benchmark(model, model_name=model_name, n_examples=10000, dataset=dataset,
                                  threat_model=threat_model, eps=8/255, device=device,
                                  to_disk=True)

In particular, the to_disk argument, if True, generates a json file at the path model_info/<dataset>/<threat_model>/<Name><Year><FirstWordOfTheTitle>.json which is structured in the following way (example from model_info/cifar10/Linf/Rice2020Overfitting.json):

{
  "link": "https://arxiv.org/abs/2002.11569",
  "name": "Overfitting in adversarially robust deep learning",
  "authors": "Leslie Rice, Eric Wong, J. Zico Kolter",
  "additional_data": false,
  "number_forward_passes": 1,
  "dataset": "cifar10",
  "venue": "ICML 2020",
  "architecture": "WideResNet-34-20",
  "eps": "8/255",
  "clean_acc": "85.34",
  "reported": "58",
  "autoattack_acc": "53.42"
}

The only difference is that the generated json will have only the fields "clean_acc" and "autoattack_acc" (for "Linf" and "L2" threat models) or "corruptions_acc" (for the "corruptions" threat model) already specified. The other fields have to be filled manually.

If the given threat_model is corruptions, we also save unaggregated results on the different combinations of corruption types and severities in this csv file (for CIFAR-10).

For ImageNet benchmarks, the users should specify what preprocessing should be used (e.g. resize and crop to the needed resolution). There are some preprocessings already defined in robustbench.data.PREPROCESSINGS, which can be used by specifying the key as the preprocessing parameter of benchmark. Otherwise, it's possible to pass an arbitrary torchvision transform (or torchvision-compatible transform), e.g.:

transform = transforms.Compose([
        transforms.Resize(256),
        transforms.CenterCrop(224),
        transforms.ToTensor()
    ])
clean_acc, robust_acc = benchmark(model, model_name=model_name, n_examples=10000, dataset=dataset,
                                  threat_model=threat_model, eps=8/255, device=device,
                                  to_disk=True, preprocessing=transform)
Model definition

In case you want to add a model in the Model Zoo by yourself, then you should also open a PR with the new model(s) you would like to add. All the models of each <dataset> are saved in robustbench/model_zoo/<dataset>.py. Each file contains a dictionary for every threat model, where the keys are the identifiers of each model, and the values are either class constructors, for models that have to change standard architectures, or lambda functions that return the constructed model.

If your model is a standard architecture (e.g., WideResNet), does not apply any normalization to the input nor has to do things differently from the standard architecture, consider adding your model as a lambda function, e.g.

('Cui2020Learnable_34_10', {
    'model': lambda: WideResNet(depth=34, widen_factor=10, sub_block1=True),
    'gdrive_id': '16s9pi_1QgMbFLISVvaVUiNfCzah6g2YV'
})

If your model is a standard architecture, but you need to do something differently (e.g. applying normalization), consider inheriting the class defined in wide_resnet.py or resnet.py. For example:

class Rice2020OverfittingNet(WideResNet):
    def __init__(self, depth, widen_factor):
        super(Rice2020OverfittingNet, self).__init__(depth=depth, widen_factor=widen_factor,
                                                     sub_block1=False)
        self.mu = torch.Tensor([0.4914, 0.4822, 0.4465]).float().view(3, 1, 1).cuda()
        self.sigma = torch.Tensor([0.2471, 0.2435, 0.2616]).float().view(3, 1, 1).cuda()

    def forward(self, x):
        x = (x - self.mu) / self.sigma
        return super(Rice2020OverfittingNet, self).forward(x)

If instead you need to create a new architecture, please put it in robustbench/model_zoo/archietectures/<my_architecture>.py.

Model checkpoint

You should also add your model entry in the corresponding <threat_model> dict in the file robustbench/model_zoo/<dataset>.py. For instance, let's say your model is robust against common corruptions in CIFAR-10 (i.e. CIFAR-10-C), then you should add your model to the common_corruptions dict in robustbench/model_zoo/cifar10.py.

The model should also contain the Google Drive ID with your PyTorch model so that it can be downloaded automatically from Google Drive:

    ('Rice2020Overfitting', {
        'model': Rice2020OverfittingNet(34, 20),
        'gdrive_id': '1vC_Twazji7lBjeMQvAD9uEQxi9Nx2oG-',
})

Private model submission (leaderboard only)

In case you want to keep your checkpoints private for some reasons, you can also submit your claim by opening an issue with the same "New Model(s)" template, specifying that the submission is private, and sharing the checkpoints with the email address adversarial.benchmark@gmail.com. In this case, we will add your model to the leaderboard but not to the Model Zoo and will not share your checkpoints publicly.

License of the models

By default, the models are released under the MIT license, but you can also tell us if you want to release your model under a customized license.

Automatic tests

In order to run the tests, run:

  • python -m unittest discover tests -t . -v for fast testing
  • RUN_SLOW=true python -m unittest discover tests -t . -v for slower testing

For example, one can test if the clean accuracy on 200 examples exceeds some threshold (70%) or if clean accuracy on 10'000 examples for each model matches the ones from the jsons located at robustbench/model_info.

Note that one can specify some configurations like batch_size, data_dir, model_dir in tests/config.py for running the tests.

Citation

Would you like to reference the RobustBench leaderboard or you are using models from the Model Zoo?
Then consider citing our whitepaper:

@inproceedings{croce2021robustbench,
  title     = {RobustBench: a standardized adversarial robustness benchmark},
  author    = {Croce, Francesco and Andriushchenko, Maksym and Sehwag, Vikash and Debenedetti, Edoardo and Flammarion, Nicolas and Chiang, Mung and Mittal, Prateek and Matthias Hein},
  booktitle = {Thirty-fifth Conference on Neural Information Processing Systems Datasets and Benchmarks Track},
  year      = {2021},
  url       = {https://openreview.net/forum?id=SSKZPJCt7B}
}

Contact

Feel free to contact us about anything related to RobustBench by creating an issue, a pull request or by email at adversarial.benchmark@gmail.com.