0

0

Python 模型鲁棒性测试的 adversarial 攻击

舞夢輝影

舞夢輝影

发布时间:2026-02-19 15:34:03

|

658人浏览过

|

来源于php中文网

原创

用foolbox快速运行pgd攻击:先确保模型输出logits、输入归一化到[0,1],调用fb.pytorchmodel(model,bounds=(0,1))和fb.attacks.projectedgradientdescent(),再执行attack(fmodel,images,labels,epsilons=8/255)。

python 模型鲁棒性测试的 adversarial 攻击

怎么用 foolbox 快速跑一个对抗样本攻击

直接上手最常用的白盒攻击,比如 ProjectedGradientDescent(PGD),它对 PyTorch/TensorFlow 模型兼容好、收敛稳,适合快速验证鲁棒性缺口。
关键不是调参多精细,而是先让攻击“动起来”,确认模型真能被扰动误导。

  • 确保模型输出是未归一化的 logits(不是 softmax 后概率),foolbox 默认按 logits 计算梯度
  • 输入张量必须是 [0, 1] 归一化范围(不是 [-1, 1] 或 ImageNet 标准化),否则攻击方向会偏
  • 别跳过 model.eval()torch.no_grad() —— 训练模式下 BatchNorm/ Dropout 会导致攻击结果不可复现
  • 示例片段:
    import foolbox as fb<br>fmodel = fb.PyTorchModel(model, bounds=(0, 1))<br>attack = fb.attacks.ProjectedGradientDescent()<br>_, advs, success = attack(fmodel, images, labels, epsilons=8/255)

FGSM 为什么经常“打不中”,以及什么时候该换别的攻击

FGSM 是单步攻击,只走一次梯度方向,对很多现代模型(尤其是加了 BN 或用了 ReLU6 的)几乎无效——不是你写错了,是它本身太弱。

  • 如果 success 返回全是 False,先别怀疑数据预处理,直接换 PGDDeepFool
  • FGSM 对 ResNet 类模型的攻击成功率常低于 5%,但对浅层 CNN 可能达 40%+,说明它测的是“最粗粒度脆弱性”,不是真实鲁棒下限
  • 它不迭代、不裁剪中间扰动,所以 eps 设大了容易溢出(如 16/255 导致像素值超 [0,1]),必须手动 clip

测试时要不要关掉 DropoutBatchNorm

要,而且必须显式关。对抗攻击依赖确定性梯度,而 Dropout 和训练态 BatchNorm 会让每次前向结果抖动,导致攻击失败或扰动不收敛。

Ink For All
Ink For All

AI写作和营销助手,精心设计的 UI

下载
  • model.eval() 能关 DropoutBatchNorm 的训练行为,但注意:有些自定义 BN 层可能没遵循这个协议,得手动设 bn.training = False
  • 如果模型里嵌了 torch.nn.functional.dropout 这种函数式调用,eval() 不起作用,得临时 patch 或重构
  • 漏关 BatchNorm 的典型现象:同一张图多次攻击,生成的 advs 完全不同,且 success 波动剧烈

对抗样本保存后加载再测,准确率突然回升?

大概率是图像读写过程破坏了扰动精度——PNG 压缩、PIL 默认转 uint8 再读回 float,会四舍五入丢掉 1~2 个 LSB,而对抗扰动本身就在 1~3/255 量级。

立即学习Python免费学习笔记(深入)”;

  • 保存时用 np.savetorch.save 存原始 tensor,别用 cv2.imwritePIL.Image.save
  • 如果非得存图片,用无损格式(TIFF)、禁用压缩,并指定 dtype=np.float32 保存,读取时也保持 float 精度
  • 加载后立刻检查:torch.allclose(saved_advs, loaded_advs, atol=1e-5),不通过就说明精度已失

对抗测试真正难的不是跑通攻击,而是确保每一步数值路径都可控——从模型 forward 的确定性,到 tensor 保存加载的 bit 级一致,漏掉任何一环,测出来的“鲁棒性”就是假阳性。

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
css中float用法
css中float用法

css中float属性允许元素脱离文档流并沿其父元素边缘排列,用于创建并排列、对齐文本图像、浮动菜单边栏和重叠元素。想了解更多float的相关内容,可以阅读本专题下面的文章。

591

2024.04.28

C++中int、float和double的区别
C++中int、float和double的区别

本专题整合了c++中int和double的区别,阅读专题下面的文章了解更多详细内容。

105

2025.10.23

css中float用法
css中float用法

css中float属性允许元素脱离文档流并沿其父元素边缘排列,用于创建并排列、对齐文本图像、浮动菜单边栏和重叠元素。想了解更多float的相关内容,可以阅读本专题下面的文章。

591

2024.04.28

C++中int、float和double的区别
C++中int、float和double的区别

本专题整合了c++中int和double的区别,阅读专题下面的文章了解更多详细内容。

105

2025.10.23

Python AI机器学习PyTorch教程_Python怎么用PyTorch和TensorFlow做机器学习
Python AI机器学习PyTorch教程_Python怎么用PyTorch和TensorFlow做机器学习

PyTorch 是一种用于构建深度学习模型的功能完备框架,是一种通常用于图像识别和语言处理等应用程序的机器学习。 使用Python 编写,因此对于大多数机器学习开发者而言,学习和使用起来相对简单。 PyTorch 的独特之处在于,它完全支持GPU,并且使用反向模式自动微分技术,因此可以动态修改计算图形。

27

2025.12.22

Python 深度学习框架与TensorFlow入门
Python 深度学习框架与TensorFlow入门

本专题深入讲解 Python 在深度学习与人工智能领域的应用,包括使用 TensorFlow 搭建神经网络模型、卷积神经网络(CNN)、循环神经网络(RNN)、数据预处理、模型优化与训练技巧。通过实战项目(如图像识别与文本生成),帮助学习者掌握 如何使用 TensorFlow 开发高效的深度学习模型,并将其应用于实际的 AI 问题中。

125

2026.01.07

TensorFlow2深度学习模型实战与优化
TensorFlow2深度学习模型实战与优化

本专题面向 AI 与数据科学开发者,系统讲解 TensorFlow 2 框架下深度学习模型的构建、训练、调优与部署。内容包括神经网络基础、卷积神经网络、循环神经网络、优化算法及模型性能提升技巧。通过实战项目演示,帮助开发者掌握从模型设计到上线的完整流程。

11

2026.02.10

pytorch是干嘛的
pytorch是干嘛的

pytorch是一个基于python的深度学习框架,提供以下主要功能:动态图计算,提供灵活性。强大的张量操作,实现高效处理。自动微分,简化梯度计算。预构建的神经网络模块,简化模型构建。各种优化器,用于性能优化。想了解更多pytorch的相关内容,可以阅读本专题下面的文章。

449

2024.05.29

pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法
pixiv网页版官网登录与阅读指南_pixiv官网直达入口与在线访问方法

本专题系统整理pixiv网页版官网入口及登录访问方式,涵盖官网登录页面直达路径、在线阅读入口及快速进入方法说明,帮助用户高效找到pixiv官方网站,实现便捷、安全的网页端浏览与账号登录体验。

660

2026.02.13

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
最新Python教程 从入门到精通
最新Python教程 从入门到精通

共4课时 | 22.4万人学习

Django 教程
Django 教程

共28课时 | 4.4万人学习

SciPy 教程
SciPy 教程

共10课时 | 1.6万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号