晓查 发自 凹非寺 
量子位 报道 | 公众号 QbitAI

你能看出下面两张图有什么区别吗?

 点击查看大图

它们看起来一样,都是广场风景照。只是右边的仔细一看,会发现有些“奇怪的点阵”。

但在AI的眼里,右边的照片却是一只哈士奇。为什么?

问题就出在那些“奇怪的点阵”里,原来把点阵重新组合,就能看到哈士奇的缩略图。

这种骗过AI的方法其实并不新鲜,也不复杂。AI技术还未流行的时候,已经有网友在泡论坛的时候发现了这种技巧:

把一张正常图片缩小后在色情图片里,没点进帖子,缩略图上看到的是一张无害照片。但是如果你当众点开了这个帖子,一张黄图显示在眼前,立刻让你“社会性死亡”。

比如把著名的花花公子封面女郎Lena稍微伪装一下,缩略图就变成了一个长发男子。

在今年的USENIX安全研讨会上,来自德国布伦瑞克大学的团队提出了这种攻击AI的方法:图片缩放攻击(image scaling attack)。

骗过AI和人眼

图片缩放攻击的操作原理很简单,把需要隐藏的图像按比例插在新图像的像素中,一般大图是小图的5到10倍。

当图像交给AI模型处理时,出于计算成本考虑,系统一般会进行预处理,也就是图片压缩到比较小的尺寸。而且卷积神经网络本身处理图像时,还会进行池化(pooling)。

不仅AI,人眼也会过滤掉图像像素中的“少数派”,被这种攻击方法骗过。

下面,我们来看看把文章开头的右侧图片用OpenCV的图像压缩预处理一下的结果:

广场照真的变成了哈士奇。缩小的图片和原来的图片完全不一样!

除了OpenCV外,该团队还测试了PyTorch的Pillow和TensorFlow的tf.image,几种常见的图像滤波器全部都中招了。

原理

缩放攻击的根本原因是,下采样卷积相互作用的结果。通俗来说,就是算法没有同等地考虑源图像中的所有像素。

因此,攻击者只需修改一小部分权重较高的像素,就能改变缩略图,图片其余大部分像素保持不变。

下面以一维情况来简单说明一下攻击的基本原理。

压缩图的像素是这样算出来的:滤波器窗口在图片源信号s上移动,将窗口中的每个像素值(图中圆圈)乘以该位置窗口上的权重,得到缩略后的点值。

可以看到,输出缩略图图中的第一个像素是s第三、第四个像素的平均结果,而第二个像素仅考虑了s第七个像素。导致9个像素中只有3个被用于计算缩略图。

只有那些靠近内核中心(三角形部分)的像素会获得较高的权重,而其他像素对缩略图的作用有限。

如果算法的步长超过窗口宽度,甚至有些像素还会被忽略。因此,攻击的成功取决于高权重像素的稀疏性。

如果要进行图像缩放攻击,需要做到两点。首先,修改少数影响压缩算法的像素;其次,攻击图像在视觉上与源图像匹配。

如何预防

图像缩放攻击原理简单,能同时骗过人眼和AI,因此布伦瑞克大学团队认为这种攻击具有一定的迷惑性。

经过处理的图像中,在后端,可以逃过AI对图片的审查;在前端,可以骗过收集数据集的人,污染AI训练数据集。

如果有人把这些图像掺进自动驾驶训练数据集,那么我们用训练出来的自动驾驶系统可靠吗?在这种情况下,汽车会不会发生意外?

当然,这种方法并非不可预防。

既然问题出在图像压缩的滤波器上,那么我们只要选择合适的滤波器就能抵御攻击。

实验表明,中值滤波和随机滤波对非自适应攻击提供了有效的防御。

具体到代码上,如果你在使用OpenCV,可以通过在调用resize API时使用interpolation参数来解决,而不要使用默认值。

TensorFlow 2.0依然容易受到攻击,双线性和双三次缩放对图像缩放攻击具有鲁棒性,可将参数antialias设置为true,但是此举会影响网络性能。

源代码:
https://github.com/EQuiw/2019-scalingattack

论文地址:
https://www.sec.cs.tu-bs.de/pubs/2020-sec.pdf

参考链接:
https://embracethered.com/blog/posts/2020/husky-ai-image-rescaling-attacks/
https://scaling-attacks.net/

本文系网易新闻•网易号特色内容激励计划签约账号【量子位】原创内容,未经账号授权,禁止随意转载。

榜单征集!7大奖项锁定AI TOP企业

「2020中国人工智能年度评选」报名中!评选将从公司、人物、产品、社区四大维度共7个奖项寻找优秀的AI企业,欢迎大家扫码报名参与。

评选报名截止于11.20,并将于12月16日揭晓,也期待与百万从业者们,共同见证这些优秀企业的荣誉!

量子位 QbitAI · 头条号签约作者

վ'ᴗ' ի 追踪AI技术和产品新动态

一键三连「分享」、「点赞」和「在看」

科技前沿进展日日相见~

打开正经图片,你可能会看到一张黄图,这种造假方法能同时骗过AI和人眼相关推荐

  1. opencv双线程图片处理_打开正经图片,你可能会看到一张黄图,这种造假方法能同时骗过 AI 和人眼...

    程序员爱码士点击右侧关注,探讨技术话题! 晓查 发自 凹非寺  量子位 报道 | 公众号 QbitAI 你能看出下面两张图有什么区别吗? △ 点击查看大图 它们看起来一样,都是广场风景照.只是右边的仔 ...

  2. 如何将几张图片拼成一张长图,多方法详解

    如何将几张图片拼成一张长图?遇到这个问题,我们首先想到是用手机上的工具来进行,比如秀秀就可以实现,但是要注意的是手机软件进行操作的时候很有可能会压缩图片,而且图片上传也是有限制的.限制拼接图片的大小. ...

  3. 图片如何做成高清gif动图?一个方法教你快速制作gif动画

    相信大家都知道多张图片可以制作成一张gif动图吧!但是,很多小伙伴却不知道应该用什么软件来制作.这时候,可以用[GIF中文网]的gif制作(https://www.gif.cn/)功能,上传jpg.p ...

  4. 这 28 张精炼图,将吴恩达的 deeplearning.ai 总结得恰到好处!

    点击上方"AI有道",选择"星标"公众号 重磅干货,第一时间送达 吴恩达--人工智能领域的大 IP,他在 Coursera 上开设的 deeplearning. ...

  5. 在html中加入一个动态图,图片上加gif图片 图片某个角落贴个gif动态图,如何在静态图片上面加一张GIF动态图...

    喜欢上网的小伙伴就会知道网上流传灰常广泛一种搞笑gif动态图片,这类图片大部分是视频转gif的,就是截取视频经典搞笑画面制作而成,还加了些搞笑文字.使用网络聊天工具尤其是QQ就最常见了,那些搞笑的表情 ...

  6. 工具软件 PYUV打开raw图片

    引自:http://blog.csdn.net/lavenderss/article/details/51495648 [pYUV]如何打开YUV/RGB图片 pYUV工具本身使用起来比较简单,但如果 ...

  7. php合并多张gif图,多张静态图片合成一张动态图-静图合成动图制作

    现如今制作gif图片也不是什么难事了,巧用动态图合成软件,即能轻松将多张静态图片合成一张动态图.动态图片是由多张不同的静态图片组合而成的gif格式图片,它会按照一定的顺序和时间进行逐帧播放.做好的动态 ...

  8. fopen是python内置函数吗_Python内置的open函数,打开文件的时候可能会产生异常_学小易找答案...

    [简答题]模仿操作一回. 上传JPG. [单选题]关于唐.宋诗之间的差异,缪钺.钱钟书.启功等学者都曾有过论述,请问以下哪一项评论出自钱钟书的<谈艺录>? [单选题]"羌笛何须怨 ...

  9. Android打开.pgm图片

    1.关于.pgm图片 .pgm图片格式:参见   点击打开链接 .pgm图片格式非常简单,它没有对图片进行压缩,因此一张.pgm图片会比其他显示内容相当的图片大很多.直接在java里面打开是很容易点击 ...

最新文章

  1. LeetCode:937. Reorder Log Files
  2. inux 后台执行命令
  3. Html 内联元素、外联元素 和 可变元素
  4. 苹果7plus电池寿命查询_iPhone真实电池寿命快速检测,比苹果官方测的还准!
  5. linux c语言定位显示字符,Linux c语言实现修改文本字符串
  6. 计算机常用英文句子,英文简历常用句子
  7. 第十一届蓝桥杯A组省赛填空试题 A: 门牌制作(Java)
  8. [转载]抓大放小,要事为先
  9. 怎么将短连接修改为长连接_回音壁怎么选?Redmi这个还不错
  10. linux系统获取光盘信息api,C++ 通过WIN32 API 获取逻辑磁盘详细信息的几种方法
  11. eclipse 64位_Eclipse安装教程
  12. 7.Oracle数据库SQL开发之 算术运算
  13. 分布式系统的基本特征
  14. Unity3D脚本编程——使用C#语言开发跨平台游戏
  15. 使用requests post请求爬取申万一级行业指数行情
  16. c语言 格雷码构造问题,格雷码剖析
  17. 360安全浏览器支持国密功能
  18. top1-Accuracy,top5-Accuracy举例精析
  19. 利用telemetry进行权限维持
  20. Dichotomy poj River Hopscotch

热门文章

  1. 如何使用Node.js获取当前脚本的路径?
  2. spring--源码分析
  3. docker本地仓库镜像
  4. 牛客网平台常州大学新生寒假训练会试
  5. web实现QQ第三方登录 开放平台-web实现QQ第三方登录
  6. jQuery基础:keydown( ) 与 keypress( ) 区别
  7. Android Studio 三种添加插件的方式,androidstudio
  8. 【RHCE学习笔记】基于安全的NFS认证(kerberos)
  9. 常见排序7--基数排序
  10. 设置在桌面上不显示计算机,怎么在桌面上显示我的电脑 我的电脑桌面不显示怎么办...