RobustBench核心功能深度解析:从模型库到排行榜的完整工作流
RobustBench核心功能深度解析:从模型库到排行榜的完整工作流
【免费下载链接】robustbenchRobustBench: a standardized adversarial robustness benchmark [NeurIPS 2021 Benchmarks and Datasets Track]项目地址: https://gitcode.com/gh_mirrors/ro/robustbench
RobustBench是一个标准化的对抗鲁棒性基准测试平台,旨在系统追踪对抗鲁棒性研究的真实进展。在对抗机器学习领域,已有超过3000篇相关论文,但哪些方法真正有效、哪些只是过度估计了鲁棒性,往往难以分辨。RobustBench通过提供标准化的评估框架和模型库,帮助研究者和开发者准确衡量和比较不同防御方法的实际效果。
📊 RobustBench是什么?
RobustBench是一个对抗鲁棒性评估基准平台,包含两个核心组件:
- 在线排行榜- 展示不同模型在各种对抗攻击下的性能排名
- 模型库- 提供经过验证的鲁棒模型,可一键加载使用
该项目支持多种数据集(CIFAR-10、CIFAR-100、ImageNet)和多种威胁模型(L∞、L₂、常见损坏),是目前对抗鲁棒性研究领域最权威的基准测试平台之一。
图:CIFAR-10数据集上的L∞对抗鲁棒性排行榜截图
🔧 快速开始:一键加载鲁棒模型
使用RobustBench非常简单,只需几行代码即可加载最先进的鲁棒模型:
pip install git+https://github.com/RobustBench/robustbench.gitfrom robustbench.data import load_cifar10 from robustbench.utils import load_model # 加载CIFAR-10测试数据 x_test, y_test = load_cifar10(n_examples=50) # 加载Carmon2019Unlabeled模型(CIFAR-10上L∞鲁棒性59.53%) model = load_model(model_name='Carmon2019Unlabeled', dataset='cifar10', threat_model='Linf')📈 三大核心功能详解
1. 标准化对抗鲁棒性评估
RobustBench的核心价值在于提供标准化的评估流程。在对抗鲁棒性研究中,不同论文使用不同的攻击方法和评估标准,导致结果难以直接比较。RobustBench通过统一的评估协议解决了这一问题:
- 标准攻击方法:默认使用AutoAttack进行L∞和L₂评估
- 统一评估指标:清洁准确率和鲁棒准确率
- 可重复的实验设置:确保不同模型的结果具有可比性
图:CIFAR-10数据集上对抗鲁棒性随时间的变化趋势
2. 模型库(Model Zoo)
RobustBench的模型库包含了数百个经过严格评估的鲁棒模型,涵盖:
- CIFAR-10:75个L∞鲁棒模型、20个L₂鲁棒模型、17个常见损坏鲁棒模型
- CIFAR-100:37个L∞鲁棒模型、12个常见损坏鲁棒模型
- ImageNet:25个L∞鲁棒模型、12个常见损坏鲁棒模型
每个模型都包含详细的元数据:
- 论文引用和作者信息
- 模型架构和参数
- 清洁准确率和鲁棒准确率
- 评估使用的威胁模型和参数
3. 全面的排行榜系统
RobustBench提供多个维度的排行榜:
L∞威胁模型排行榜(ε=8/255):
- CIFAR-10:Bartoldson2024Adversarial_WRN-94-16以73.71%的鲁棒准确率位居第一
- CIFAR-100:Wang2023Better_WRN-70-16以42.67%的鲁棒准确率领先
- ImageNet:Amini2024MeanSparse以59.64%的鲁棒准确率排名第一
L₂威胁模型排行榜(ε=0.5):
- CIFAR-10:Wang2023Better_WRN-70-16以84.97%的鲁棒准确率领先
常见损坏鲁棒性排行榜:
- CIFAR-10:Diffenderfer2021Winning_LRR_CARD_Deck以92.78%的鲁棒准确率最佳
- ImageNet:Tian2022Deeper_DeiT-B以67.55%的鲁棒准确率领先
图:CIFAR-10数据集上的L₂对抗鲁棒性排行榜
🚀 完整工作流程指南
步骤1:安装和配置
# 安装最新版本 pip install git+https://github.com/RobustBench/robustbench.git # 或安装稳定版本 pip install git+https://github.com/RobustBench/robustbench.git@v1.0步骤2:选择数据集和威胁模型
RobustBench支持三种主要数据集:
- CIFAR-10(自动下载)
- CIFAR-100(自动下载)
- ImageNet(需手动下载)
以及三种威胁模型:
Linf:L∞范数约束的对抗攻击L2:L₂范数约束的对抗攻击corruptions:常见图像损坏
步骤3:加载和评估模型
import torch from robustbench import benchmark from myrobust_model import MyRobustModel # 初始化模型 model = MyRobustModel() model_name = "YourModelName2024" # 运行基准测试 clean_acc, robust_acc = benchmark( model, model_name=model_name, n_examples=10000, dataset="cifar10", threat_model="Linf", eps=8/255, device=torch.device("cuda:0"), to_disk=True # 保存结果到JSON文件 )步骤4:提交结果到排行榜
提交模型到RobustBench需要准备:
- 模型定义文件:位于
robustbench/model_zoo/ - 模型检查点:上传到Google Drive
- 评估结果JSON文件:包含清洁准确率和鲁棒准确率
📁 项目结构解析
RobustBench的项目结构清晰,便于扩展和维护:
robustbench/ ├── __init__.py # 主要导入接口 ├── data.py # 数据集加载模块 ├── eval.py # 评估功能模块 ├── utils.py # 工具函数 ├── loaders.py # 数据加载器 ├── zenodo_download.py # 模型下载 └── model_zoo/ # 模型库核心 ├── __init__.py ├── architectures/ # 模型架构定义 ├── cifar10.py # CIFAR-10模型 ├── cifar100.py # CIFAR-100模型 └── imagenet.py # ImageNet模型图:常见图像损坏鲁棒性排行榜截图
🔍 深入分析功能
对抗鲁棒性趋势分析
RobustBench提供了丰富的分析工具,可以生成各种可视化图表:
# 分析不同年份的鲁棒性进展 # 查看 images/aa_robustness_vs_years.png图:论文报告的鲁棒性与标准评估结果的对比
跨数据集和威胁模型比较
项目支持多种分析维度:
- 不同会议/期刊的模型性能对比
- 清洁准确率vs鲁棒准确率的权衡分析
- 不同架构(CNN vs Transformer)的鲁棒性比较
🎯 最佳实践建议
1. 选择合适的模型
根据您的需求选择模型:
- 最高鲁棒性:选择排行榜顶部的模型
- 平衡性能:考虑清洁准确率和鲁棒准确率的权衡
- 计算资源:注意模型大小和推理速度
2. 正确使用评估协议
# 使用AutoAttack进行标准评估 from autoattack import AutoAttack adversary = AutoAttack(model, norm='Linf', eps=8/255) x_adv = adversary.run_standard_evaluation(x_test, y_test)3. 处理不同威胁模型
# 评估常见损坏鲁棒性 from robustbench.data import load_cifar10c from robustbench.utils import clean_accuracy corruptions = ['fog', 'snow', 'frost'] x_test, y_test = load_cifar10c(n_examples=1000, corruptions=corruptions, severity=5) acc = clean_accuracy(model, x_test, y_test)📊 性能指标解读
关键指标说明
- 清洁准确率:在原始干净测试集上的准确率
- 鲁棒准确率:在对抗攻击下的准确率
- 鲁棒性差距:清洁准确率与鲁棒准确率的差值
典型性能范围
- CIFAR-10 L∞:最佳模型鲁棒准确率约74%,清洁准确率约94%
- CIFAR-100 L∞:最佳模型鲁棒准确率约43%,清洁准确率约75%
- ImageNet L∞:最佳模型鲁棒准确率约60%,清洁准确率约78%
图:不同学术会议/期刊发表的模型在对抗鲁棒性上的表现对比
🔮 未来发展方向
RobustBench持续演进,支持更多功能:
- 3D常见损坏评估:新增ImageNet-3DCC基准
- 自适应攻击集成:支持自定义攻击方法
- 更多数据集扩展:计划支持更多视觉和自然语言任务
- 实时排行榜更新:自动集成新提交的模型
💡 实用技巧
快速验证模型性能
# 快速验证模型在少量样本上的性能 from robustbench.utils import clean_accuracy clean_acc = clean_accuracy(model, x_test[:100], y_test[:100]) print(f"Clean accuracy on 100 samples: {clean_acc:.2%}")批量评估多个模型
# 批量评估多个模型 model_names = ['Carmon2019Unlabeled', 'Rebuffi2021Fixing_70_16_cutmix_extra', 'Wang2023Better_WRN-70-16'] results = {} for name in model_names: model = load_model(model_name=name, dataset='cifar10', threat_model='Linf') clean_acc = clean_accuracy(model, x_test, y_test) results[name] = clean_acc🎉 总结
RobustBench为对抗鲁棒性研究提供了标准化、可重复、易用的评估框架。通过其丰富的模型库和全面的排行榜系统,研究者和开发者可以:
- 快速比较不同防御方法的实际效果
- 轻松集成最先进的鲁棒模型到自己的应用中
- 标准化评估确保结果的可比性和可重复性
- 跟踪进展了解对抗鲁棒性研究的最新动态
无论您是研究人员需要评估新方法,还是工程师需要部署鲁棒模型,RobustBench都是对抗机器学习领域不可或缺的工具。🚀
图:RobustBench提供的各种分析图表汇总
【免费下载链接】robustbenchRobustBench: a standardized adversarial robustness benchmark [NeurIPS 2021 Benchmarks and Datasets Track]项目地址: https://gitcode.com/gh_mirrors/ro/robustbench
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考