只需修改一个像素,让神经网络连猫都认不出 | 论文+代码
夏乙 编译整理
量子位 出品 | 公众号 QbitAI
想骗过神经网络,让它认错图像,需要对图像做多少修改?
一个像素就够了。
一项来自日本的研究表明,改动图片上的一个像素,就能让神经网络认错图,甚至还可以诱导它返回特定的结果。
研究由日本九州大学的Jiawei Su、Danilo Vasconcellos Vargas和Kouichi Sakurai三人共同完成,他们不仅写论文详细介绍了这项改一个像素就骗过神经网络的神技,还开源了相应的Keras实现。这项技术被称为“一像素攻击”(One Pixel Attack)。
△ 可惜了VGG一世英名,连猫都认错
在CIFAR-10和ImageNet两个数据集上,一像素攻击分别实现了68.36%和41.22%的成功率。
一个像素,怎么攻击神经网络?
实验在CIFAR-10和ImageNet数据集上进行,我们以CIFAR-10为例来做一下说明。CIFAR-10是一个图像识别数据集,包含60000张32×32像素的RGB彩色图片,共10类。神经网络在这个数据集上的任务,就是正确预测图片所属的分类。
而一像素攻击的目标,是通过从图片上选定一个像素,更改它的颜色来制造对抗性图像,改变神经网络输出的类别标签,降低对正确类别的置信度,提高对其他某个类别的置信度。也就是说,让神经网络将它分到错误的类别。
任务看似简单,但是,32×32=1024个像素,该选哪一个?改成什么颜色?
这些研究人员用了一种名叫差分进化(Differential Evolution,简称DE)的进化算法(Evolutionary Algorithm)。
具体来说,首先要通过随机修改像素来生成400个对抗样本,输入到神经网络中;然后,将这些修改像素的位置和颜色结合起来,再生成400个对抗样本,输入到神经网络中;接下来,如果某个新样本与父代相比,降低了神经网络对正确类别的置信度,就将用这个样本上修改的像素替换父代,作为目前已知的最优解。
之后就要多次重复以上三步,然后在最后一次迭代时,选出将神经网络对正确类别的置信度降得最低的对抗样本。
如果有其他类别的置信度高于正确类别最终的置信度,我们就成功了。最后选出的样本就是我们所要的结果。
在对全卷积神经网络(AllConv)、Network
in Network(NiN)、VGG16、和AlexNet的测试中,这种方法取得的成功率如下表所示:
△ 表中的targeted attack,指的是在攻击中让神经网络将图像误认为特定某个类别
几位研究人员还把这种方法用在了ImageNet上,将图像大小统一为227×227,大约是CIFAR-10图像尺寸的50倍。
在ImageNet上的测试表明,这种欺骗神经网络的方法也适用于分辨率比较高的图像。
据论文介绍,DE方法不会像基于梯度的方法那么容易陷入局部最小值,也不需要关于攻击目标系统的太多信息,因此生成的对抗样本适用于多种神经网络。
相关链接
论文 One pixel attack for fooling deep neural networks
https://arxiv.org/pdf/1710.08864.pdf
Keras实现
https://github.com/Hyperparticle/one-pixel-attack-keras
开头提到的迷幻贴 Adversarial Patch
https://arxiv.org/pdf/1712.09665.pdf
— 完 —
加入社群
量子位AI社群13群开始招募啦,欢迎对AI感兴趣的同学,加小助手微信qbitbot5入群;
此外,量子位专业细分群(自动驾驶、CV、NLP、机器学习等)正在招募,面向正在从事相关领域的工程师及研究人员。
进群请加小助手微信号qbitbot5,并务必备注相应群的关键词~通过审核后我们将邀请进群。(专业群审核较严,敬请谅解)
诚挚招聘
量子位正在招募编辑/记者,工作地点在北京中关村。期待有才气、有热情的同学加入我们!相关细节,请在量子位公众号(QbitAI)对话界面,回复“招聘”两个字。
量子位 QbitAI · 头条号签约作者
վ'ᴗ' ի 追踪AI技术和产品新动态
只需修改一个像素,让神经网络连猫都认不出 | 论文+代码相关推荐
- 一行代码指定python下载源为清华源【只需修改一次】
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
- 使用卷积神经网络实现猫狗分类任务
一.数据集下载链接 二.基础环境配置 三.训练及测试过程 使用卷积神经网络在猫狗分类数据集上实现分类任务. 一.数据集下载链接 猫狗分类数据集链接 → 提取码:1uwy. 二.基础环境配置 W ...
- 第十二章 卷积神经网络实战--猫狗识别
1.介绍 我们已经学习了如何用传统的神经网络进行机器学习,在本章我们学习一下如何使用简单的神经网络进行图像分类.数据集用的是Kaggle的猫狗数据集.这里只有前100张,如果需要更多的可以去Kaggl ...
- 卷积神经网络基础(最详细)+如何写代码(Pytorch)+推荐学习顺序+心得感悟
目录 卷积神经网络 为什么要使用卷积神经网络? 神经网络中的各层 卷积操作 权重共享 填充 步幅 3 维数据的卷积运算 激活函数 输出层的激活函数 卷积层的激活函数 池化 重叠池化 池化层的特征 BN ...
- 基于Keras的卷积神经网络用于猫狗分类(未进行数据增强)+卷积层可视化
首先看数据集路径: cats和dogs存放的就是各种大小的猫狗图片. 读取数据集代码: import os import matplotlib.pyplot as plt ""&q ...
- TensorFlow 卷积神经网络之猫狗识别(二)
本文是TensorFlow 卷积神经网络之猫狗识别 的姊妹篇,是加载上一篇博客训练好的模型,进行猫狗识别 本文逻辑: 我从网上下载了十几张猫和狗的图片,用于检验我们训练好的模型. 处理我们下载的图片 ...
- 循环神经网络RNN 2—— attention注意力机制(附代码)
attention方法是一种注意力机制,很明显,是为了模仿人的观察和思维方式,将注意力集中到关键信息上,虽然还没有像人一样,完全忽略到不重要的信息,但是其效果毋庸置疑,本篇我们来总结注意力机制的不同方 ...
- 基于卷积神经网络的猫狗识别
卷积神经网络的猫狗识别 任务需求 环境配置 识别猫狗实例 首先导入库 数据预处理: 读取数据: 定义网络: 调整机器学习率 定义训练过程 训练开始 训练结果 用于测试代码 结果 任务需求 按照 htt ...
- 深度学习实战——利用卷积神经网络对手写数字二值图像分类(附代码)
系列文章目录 深度学习实战--利用卷积神经网络对手写数字二值图像分类(附代码) 目录 系列文章目录 前言 一.案例需求 二.MATLAB算法实现 三.MATLAB源代码 参考文献 前言 本案例利用MA ...
最新文章
- StringUtils.isEmpty和StringUtils.isBlank的区别
- Camelyon Challenge: 癌症细胞区域检测竞赛
- LeetCode-链表-19. 删除链表的倒数第 N 个结点
- 【Tools】Windows安装CMake工具
- CentOS多网卡重命名配置
- idea无法忍受_不要成为无法忍受的软件开发人员
- 前端学习(46):页面导入样式时,使用link和@import有什么区别?
- linux 使用ssh-keygen生成ssh公钥和私钥
- 动态时间规整算法(DTW)通俗易懂
- 量子计算机可以预测未来吗,这台量子计算机可以同时预测16种不同的未来
- SpringCloud从入门到精通——微服务注册中心
- After Effects CC 2019 中文版软件下载 /破解教程
- 【NOIP模拟】夕阳
- 东华考研复试21-30oj
- 织梦微信小程序一键生成插件(资讯案例模板),整合织梦CMS一切数据信息
- 刚性仿射变换算法_图像的仿射变换
- 石沉大海的简历和优质简历的差别
- ROS2-Foxy-配置
- 日报系统、周报系统如何便捷使用?——员工篇
- (转载)物联网平台 分类CMP、DMP、AEP、BAP
热门文章
- 远程键盘 App 被曝漏洞,成 Intel 弃子!
- 初学编程者如何摆脱搭建开发环境的困扰?
- 熬了整整30天,java递归阶乘求和
- mendeley 笔记_免费文献管理器 Mendeley,其实比你想象的好用!
- linux qt 系统时间,QT在linux环境下读取和设置系统时间
- python查天气预报_一个用Python编写抓取天气预报的代码示例
- python字典统计排序 统计各省份大学数量_1641统计字典排序元音字符串的数量(递归,递归),数目,递推...
- 如何面试一位前端工程师
- 计算机组成原理计算tag,计算机组成原理计算题
- 华为系统里的计算机,一个屏幕操作两个系统 让你的手机装进华为MateBook 14电脑里...