基于adversarial-robustness-toolbox(ART)包进行AI对抗攻击ZOO攻击方法报错
基于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'
问题分析
- 从报错信息内明显可以看出BlackBoxClassifier分类器缺少channels_first成员变量,所以首先想到的解决方案是修改ART的源代码,在BlackBoxClassifier中添加成员变量,但是报其他错误,方案不可行。
- 重新排查了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算法的参数调整可以对攻击效果产生很大的影响,以下是一些常用的参数及其调整方法:
- batch_size: 批量大小,即每次生成对抗样本的数量。可以根据你的硬件性能和数据集的大小来调整。一般来说,较大的批量大小可以提高生成对抗样本的效率,但也可能导致生成的对抗样本质量下降。你可以通过增加迭代次数来弥补这个问题。默认值为10。
- learning_rate: 学习率,即算法更新每个像素的步长大小。你可以根据你的模型和数据集来调整学习率。一般来说,较小的学习率可以产生更精细的对抗样本,但也可能导致生成速度变慢。默认值为1e-2。
- max_iter: 最大迭代次数,即算法运行的最大次数。可以根据你的模型和数据集来调整。一般来说,较大的迭代次数可以产生更好的对抗样本,但也会导致生成时间变长。默认值为10。
- binary_search_steps: 二分查找的最大次数。可以根据你的模型和数据集来调整。一般来说,较大的二分查找次数可以产生更好的对抗样本,但也可能导致生成时间变长。默认值为9。
- initial_const: 初始对抗强度,即算法开始时生成对抗样本的程度。可以根据你的模型和数据集来调整。一般来说,较小的初始对抗强度可以产生更接近原始样本的对抗样本,但也可能导致生成时间变长。默认值为1e-3。
- abort_early: 是否在找到最优解之前停止算法。可以根据你的硬件性能和数据集大小来调整。默认值为True。
- use_resize: 是否在每次迭代后使用双三次插值进行缩放。可以根据你的硬件性能和数据集大小来调整。默认值为True。
- use_importance: 是否使用重要性权重来平衡对抗样本和原始样本之间的距离。可以根据你的数据集和攻击目标来调整。默认值为True。
基于adversarial-robustness-toolbox(ART)包进行AI对抗攻击ZOO攻击方法报错相关推荐
- IBM推出开源工具帮AI抵御对抗性样本攻击:DNN开发者的福音
策划编辑 | Natalie 译者 | Liu Zhiyong,马卓奇 编辑 | Debra Chen,Emily AI 前线导读:深度神经网络在认知任务上已经取得了突破性进展,但是它们很容易受到&q ...
- 开源系列:AI对抗攻防算法开源平台,哪家强?
原创:谭婧 人工智能算法攻与防,始于一个有趣的"捣乱",在谷歌实验室里. "捣乱",纯粹是人为的,自己给自己添乱. 得到的实验室结论是:对输入样本(一张图片)故 ...
- 清华大学董胤蓬:Adversarial Robustness of Deep Learning
2020-01-21 12:30:00 不到现场,照样看最干货的学术报告! 嗨,大家好.这里是学术报告专栏,读芯术小编不定期挑选并亲自跑会,为大家奉献科技领域最优秀的学术报告,为同学们记录报告干货,并 ...
- 从Bayesian Deep Learning到Adversarial Robustness新范式
©作者 | 王灏.毛成志 单位 | Rutgers University / Columbia University 研究方向 | 贝叶斯深度学习 / 对抗鲁棒性 拖延症赶在 2021 结束前来介绍一 ...
- 【论文阅读】Feature Denoising for Improving Adversarial Robustness
阅读由来SCRDet++参考文献[20]https://blog.csdn.net/dujuancao11/article/details/121590324 Feature Denoising fo ...
- Python基于CycleGAN&pix2pix的黑白图像AI上色(源码&部署教程)
1.项目背景 自从GAN技术发展以来,许多新奇的应用都得到了落地,本次我们来介绍其中一个小应用,就是黑白图像上色.想必大家在网上经常看到一些给黑白图像上色的视频,可以修复早期的黑白影像,背后的技术就是 ...
- 【ReactiveX】基于Golang pmlpml/RxGo程序包的二次开发
基于Golang pmlpml/RxGo程序包的二次开发[阅读时间:约20分钟] 一.ReactiveX & RxGo介绍 1.ReactiveX 2.RxGo 二.系统环境&项目介绍 ...
- 基于DOS命令打war包
基于DOS命令打war包 环境版本信息:win10 x64:Tomcat9.0 操作 将javaweb项目放到磁盘中的某个位置(例如:F:\javaweb\demo,demo为javaweb项目),路 ...
- 基于Cytoscape的GIANT增强包分析网络图的Z、P-score
文章目录 基于Cytoscape的GIANT增强包分析网络图的*Zi*.*Pi*-score *Zi*.*Pi* score值简介 *Zi*.*Pi* score值的基本概念 *Zi*.*Pi* sc ...
最新文章
- 技术图文:Python描述符 (descriptor) 详解
- 皮一皮:直男表示,有钱女人的世界完全不懂...
- 针对不同的Cookie做页面缓存
- Wireshark 【OSI三层】抓包过滤规则和显示过滤规则实例
- 基于mysql数据库binlog的增量订阅消费
- php json.parse,JSON.parse()与JSON.stringify()和eval()使用方法详解
- 互联网晚报 | 9月13日 星期一 | 美赞臣中国易主春华资本;美团外卖首次公开骑手配送时间算法;北京教培行业开展同业互助...
- maven上传jar到私服
- ServiceLoader用法demo
- Ubuntu Linux下安装软件方法
- Python OpenCV实现身份证号码识别
- yourshelf是什么意思中文_yourself是什么意思
- 偶尔娱乐一下应该无妨?
- html5视频制作,iH5最专业的H5制作工具
- interProScan的使用
- liferay的控制条docbar消失解决方法
- 爬虫中使用selenium实现对斗鱼直播的各个房间标题、主播id,直播内容类型和热度信息的爬取
- 无法启动此程序因为计算机丢失zlib.dll,zlib1.dll怎么修复?zlib1.dll丢失解决方法及注意事项...
- Hadoop、Hive、HDFS、Hbase、KUDU、Spark之间关系
- 点击按钮复制文本框内容