基于adversarial-robustness-toolbox(ART)包进行AI对抗攻击ZOO攻击方法报错

  • 环境
  • 问题分析
  • 问题解决
  • ZooAttack类使用扩展

环境

ART版本:1.14.0
项目github:adversarial-robustness-toolbox

在使用ART包进行ZOO黑盒攻击时,使用BlackBoxClassifier封装黑盒模型,实现代码如下:

# 定义黑盒分类器
def black_box_predict(x):# 这里需要将你的模型的预测输出替换为黑盒预测函数# 该函数接受一个输入张量并返回一个输出张量# 示例函数仅返回随机噪声return demo.model(x)classifier = BlackBoxClassifier(predict_fn=model_func, input_shape=input_shape, nb_classes=class_num, clip_values=(0, 255))
attack = ZooAttack(classifier=classifier, max_iter=max_iter, learning_rate=learning_rate, initial_const=initial_const)# 生成对抗样本
x_test_adv = attack.generate(x=x_test)

上述代码运行报错:

AttributeError: 'BlackBoxClassifier' object has no attribute 'channels_first'

问题分析

  1. 从报错信息内明显可以看出BlackBoxClassifier分类器缺少channels_first成员变量,所以首先想到的解决方案是修改ART的源代码,在BlackBoxClassifier中添加成员变量,但是报其他错误,方案不可行。
  2. 重新排查了ART项目代码结构,发现BlackBoxClassifier不能直接用于攻击

问题解决

使用BlackBoxClassifierNeuralNetwork类代替BlackBoxClassifier类

classifier = BlackBoxClassifierNeuralNetwork(predict_fn=model_func, input_shape=input_shape, nb_classes=class_num, clip_values=(0, 255), channels_first=False)
attack = ZooAttack(classifier=classifier, max_iter=max_iter, learning_rate=learning_rate, initial_const=initial_const)
x_test_adv = attack.generate(x=x_test)

这里特别注意,在使用BlackBoxClassifierNeuralNetwork类封装黑盒模型时,注意输入张量是否为channel_first,并配置好属性

ZooAttack类使用扩展

Art库中ZooAttack算法的参数调整可以对攻击效果产生很大的影响,以下是一些常用的参数及其调整方法:

  1. batch_size: 批量大小,即每次生成对抗样本的数量。可以根据你的硬件性能和数据集的大小来调整。一般来说,较大的批量大小可以提高生成对抗样本的效率,但也可能导致生成的对抗样本质量下降。你可以通过增加迭代次数来弥补这个问题。默认值为10。
  2. learning_rate: 学习率,即算法更新每个像素的步长大小。你可以根据你的模型和数据集来调整学习率。一般来说,较小的学习率可以产生更精细的对抗样本,但也可能导致生成速度变慢。默认值为1e-2。
  3. max_iter: 最大迭代次数,即算法运行的最大次数。可以根据你的模型和数据集来调整。一般来说,较大的迭代次数可以产生更好的对抗样本,但也会导致生成时间变长。默认值为10。
  4. binary_search_steps: 二分查找的最大次数。可以根据你的模型和数据集来调整。一般来说,较大的二分查找次数可以产生更好的对抗样本,但也可能导致生成时间变长。默认值为9。
  5. initial_const: 初始对抗强度,即算法开始时生成对抗样本的程度。可以根据你的模型和数据集来调整。一般来说,较小的初始对抗强度可以产生更接近原始样本的对抗样本,但也可能导致生成时间变长。默认值为1e-3。
  6. abort_early: 是否在找到最优解之前停止算法。可以根据你的硬件性能和数据集大小来调整。默认值为True。
  7. use_resize: 是否在每次迭代后使用双三次插值进行缩放。可以根据你的硬件性能和数据集大小来调整。默认值为True。
  8. use_importance: 是否使用重要性权重来平衡对抗样本和原始样本之间的距离。可以根据你的数据集和攻击目标来调整。默认值为True。

基于adversarial-robustness-toolbox(ART)包进行AI对抗攻击ZOO攻击方法报错相关推荐

  1. IBM推出开源工具帮AI抵御对抗性样本攻击:DNN开发者的福音

    策划编辑 | Natalie 译者 | Liu Zhiyong,马卓奇 编辑 | Debra Chen,Emily AI 前线导读:深度神经网络在认知任务上已经取得了突破性进展,但是它们很容易受到&q ...

  2. 开源系列:AI对抗攻防算法开源平台,哪家强?

    原创:谭婧 人工智能算法攻与防,始于一个有趣的"捣乱",在谷歌实验室里. "捣乱",纯粹是人为的,自己给自己添乱. 得到的实验室结论是:对输入样本(一张图片)故 ...

  3. 清华大学董胤蓬:Adversarial Robustness of Deep Learning

    2020-01-21 12:30:00 不到现场,照样看最干货的学术报告! 嗨,大家好.这里是学术报告专栏,读芯术小编不定期挑选并亲自跑会,为大家奉献科技领域最优秀的学术报告,为同学们记录报告干货,并 ...

  4. 从Bayesian Deep Learning到Adversarial Robustness新范式

    ©作者 | 王灏.毛成志 单位 | Rutgers University / Columbia University 研究方向 | 贝叶斯深度学习 / 对抗鲁棒性 拖延症赶在 2021 结束前来介绍一 ...

  5. 【论文阅读】Feature Denoising for Improving Adversarial Robustness

    阅读由来SCRDet++参考文献[20]https://blog.csdn.net/dujuancao11/article/details/121590324 Feature Denoising fo ...

  6. Python基于CycleGAN&pix2pix的黑白图像AI上色(源码&部署教程)

    1.项目背景 自从GAN技术发展以来,许多新奇的应用都得到了落地,本次我们来介绍其中一个小应用,就是黑白图像上色.想必大家在网上经常看到一些给黑白图像上色的视频,可以修复早期的黑白影像,背后的技术就是 ...

  7. 【ReactiveX】基于Golang pmlpml/RxGo程序包的二次开发

    基于Golang pmlpml/RxGo程序包的二次开发[阅读时间:约20分钟] 一.ReactiveX & RxGo介绍 1.ReactiveX 2.RxGo 二.系统环境&项目介绍 ...

  8. 基于DOS命令打war包

    基于DOS命令打war包 环境版本信息:win10 x64:Tomcat9.0 操作 将javaweb项目放到磁盘中的某个位置(例如:F:\javaweb\demo,demo为javaweb项目),路 ...

  9. 基于Cytoscape的GIANT增强包分析网络图的Z、P-score

    文章目录 基于Cytoscape的GIANT增强包分析网络图的*Zi*.*Pi*-score *Zi*.*Pi* score值简介 *Zi*.*Pi* score值的基本概念 *Zi*.*Pi* sc ...

最新文章

  1. 技术图文:Python描述符 (descriptor) 详解
  2. 皮一皮:直男表示,有钱女人的世界完全不懂...
  3. 针对不同的Cookie做页面缓存
  4. Wireshark 【OSI三层】抓包过滤规则和显示过滤规则实例
  5. 基于mysql数据库binlog的增量订阅消费
  6. php json.parse,JSON.parse()与JSON.stringify()和eval()使用方法详解
  7. 互联网晚报 | 9月13日 星期一 | 美赞臣中国易主春华资本;美团外卖首次公开骑手配送时间算法;北京教培行业开展同业互助...
  8. maven上传jar到私服
  9. ServiceLoader用法demo
  10. Ubuntu Linux下安装软件方法
  11. Python OpenCV实现身份证号码识别
  12. yourshelf是什么意思中文_yourself是什么意思
  13. 偶尔娱乐一下应该无妨?
  14. html5视频制作,iH5最专业的H5制作工具
  15. interProScan的使用
  16. liferay的控制条docbar消失解决方法
  17. 爬虫中使用selenium实现对斗鱼直播的各个房间标题、主播id,直播内容类型和热度信息的爬取
  18. 无法启动此程序因为计算机丢失zlib.dll,zlib1.dll怎么修复?zlib1.dll丢失解决方法及注意事项...
  19. Hadoop、Hive、HDFS、Hbase、KUDU、Spark之间关系
  20. 点击按钮复制文本框内容

热门文章

  1. 1U和2U服务器应如何正确选择?各有什么优缺点?
  2. 关于Python装饰器的一些理解
  3. 【MySQL系列】MySQL数据库基础
  4. php创建一个文本计数器,一个用php3编写的简单计数器
  5. 人脸识别 开放书籍 下载地址
  6. 2022年天梯赛上海理工大学校内选拔赛【部分题 题解】
  7. android 获取gp权限,GreenPlum 介绍--管理角色与权限
  8. antlr4生成c_利用ANTLR生成C 描述的分析程序
  9. 基于区块链的侧链技术,有了Lisk为什么还要做ASCH?
  10. java如何返回树形结构