有没有过一个瞬间,你恨不得自己变成一团空气?
物理上做不到,真是遗憾。
但现在,你可以在AI面前练成“隐身术”,只需要在肚子上贴一张图片。
虽然肉眼看得到你在挥手,目标检测算法已经当你不存在了:
YOLOv2被骗了
划重点,是隐身不是变身,AI没有把你识别成其他物件,而是全然忽视你的存在,只看到旁边的兄弟。
如果,你想把“隐身术”传给小伙伴,把“隐身衣”递给他就好了:
这下,AI终于看出了你的身型,小伙伴就成了空气。
被骗的这只AI是目标检测界的翘楚YOLOv2。骗它的两位少年,来自比利时鲁汶大学。
如此一来,是不是就能逃过智能监控系统,潜入某个空间,做奇怪的事情也不被察觉……人类真危险。
谷歌大脑的科学家David Ha安利了这篇研究,已有4,200多人类盛情点赞,大胆的想法也接二连三。
未来,是赛博朋克的未来
“什么时候印成T恤啊?”
“对啊对啊,卫衣更好。”
不过,在图片变成衣服的印花之前,还是先来看看图上有什么玄机。
这不是“乌龟变步枪”
大家可能早就听过“乌龟变步枪”的故事。
悄悄改动乌龟身上的纹路,人类看起来依然是乌龟,AI却认成了步枪:
这样的欺骗,就是著名的对抗攻击 (Adversarial Attacks) 。
比利时少年的“隐身术”,也是一种对抗攻击,但和前辈们非常不同。
最主要的差别在于,人类和从前那些加了纹理的物体 (比如停车标志) 不一样:虽然每个人都是人,但个体之间差异很大。
停车标的个体差异,很小很小
在这样多变的情况下,少年们依然成功生产出了通用的对抗图像,并非针对某个人类而设计,穿在谁身上都有隐身功效,YOLOv2看不到。
他们用了三步的优化 (Optimization) ,来解决这个问题:
- 首先要保证,定制的纹理图打印出来还能被AI捕捉到。如果纹理用到了许多打印不出的颜色,就不太乐观了。所以,要测量一个“不可打印”的分值。
- 第二要保证,定制纹理图上的颜色过度平滑,避免噪点过多。所以,需要测量一张图像的总变化值 (Total Variation) ,任意两个像素的色彩越相近,这个值就越小。
- 第三最重要,就是让YOLOv2看不出人来。也就是让AI给出的分类结果,分值降低,变成不太确定的分类。
那么问题来了,怎么才能让AI的检测便得不自信呢?
这和YOLOv2的工作原理有关:它会输出一个目标存在感 (Objectness) 的分值,和一个类别 (Class) 的分值。
而团队的目标,一是要降低“人类”这个类别的分值,二是不能让其他类别的分值超过“人类”。
比如,一个数据集里有“泰迪熊”这个类别,而另一个数据集里没有。如果是“泰迪熊”的分值超过“人类”,就没办法推广到另外的数据集里去了。
最终,团队没有选择降低“人类”的分值,而是直接降低了目标的存在感 (Objectness) 。这样,就不会有其他类别取代“人类”了。
你看,如果想屏蔽街上的情侣:
炫彩的对抗贴纸,就是直接降低存在感的结果,从几种方式中脱颖而出,把识别人类的准确率降到了26%。
开头展示的,把隐身衣直接穿在身上,比贴在视频里的隐身难度更大,但依然成功了:
“隐身T恤虽好,但以后可能就不用穿衣服,有全息投影的服装了哟。”谷歌大脑的研究员说。
如果你还有什么伟大的想法,可以自己生成对抗图像,开源代码在这里:GitHub