AI识别彻底懵逼!这到底是「牛」还是「鲨」?

news/2024/11/22 12:09:27/

点击上方“CVer”,选择加"星标"置顶

重磅干货,第一时间送达

本文转载自:AI科技评论

作者 | 耳洞打三金

看到封面和标题,PA的一下我就点进来了,很快啊......

大家好我是三金,求大家快来帮帮我

我和编辑部的同事因为上图到底是牛还是鲨吵了起来,我说这张图更像,同事说更像,我们差点儿就GAN了一架!

现求大家来评评理这到底是牛还是鲨......

案发当天是这样的:

昨日下午,风和日丽,诚诚恳恳、兢兢业业的我,在完成当天的文章之后,趁老板不注意于是开始偷偷上班摸,那摸的叫一个开心啊,真是大呼直爽。

我就刷推特,一直刷一直刷,我一不小心就把推特刷到了11月29日(注意哈昨天案发当天是12月10日),突然我刷到一张图片:

我看到这张图就不禁大笑了起来:

旁边同事问我怎么发生肾么事了,我当时看的投入就敷衍了一句说没啥,刚刚想起了开心的事情。

我接着往下看,发现有一位身在法国的奥地利AI研究科学家,一位老同志,名叫Christian Wolf,他闲来无事,把上面的这张不只是牛还是鲨的图片喂给了在pytorch上经过ImageNet数据集预训练的ResNet-101模型,结果AI识别Top 5结果显示如下:

虎鲨:23%、双髻鲨(又称锤头鲨):21% 、大白鲨:16%、长嘴硬鳞鱼(又称雀鳝):11%、鲟:3%......

Christian Wolf说自己得到了一个结论:外形>[纹理+山脉的背景],意思就是说对AI识别而言,这张图的外形特征更突出,明显大于纹理的特征。

我对这个结果有些不服,我觉得这个头,这简直也太了吧,怎么就因为外形像是就是鲨呢,于是我就让旁边同事扭过头来看这玩意儿到底像啥。

同事看了眼说这是鲨鱼,我说你看看它的头、还那奶牛皮肤纹理,对了它还有小牛角......

同事说我这不管用,这形状、这鱼鳍、这性感的尾巴、咋看咋都是鲨鱼啊...

本来我还心里没啥气,但是听到同事说我这不管用,我PA的一下站起来了,我说我这个管用,我说你有种别走在这等着,同事冷地笑了笑说还没下班呢他想走也走不掉。

他主动出击,随便搜了一张虎鲨的图,告诉我说这外形是个人就看得出来是鲨鱼。

我大E了,心想得赶紧shan,我赶紧百度谷歌一顿操作找找奶牛的图片:

我找啊找,突然找到上面这张图片,我顿时心理就乐开了花,我把这俩货的图片拼在一起甩到同事脸上质问他你看看这两个带着微笑的小眼神是不是一模一样,这是不是牛,是不是???

同事不服,坚持说还是更像鲨鱼,于是我俩就吵了起来......要不是因为我还欠他两顿饭,我们差点儿就GAN了一架(他怕我不请客了就没敢对我动手)!

唉,就不能做个牛脸识别吗,也罢,我大人有大量就原谅了他,姑且就先把这货叫作牛鲨吧。

我接着翻这条推特,发现除了上面的一只“牛鲨",还有下面一只紫色的牛鲨,它和上面那只模样无差,只是换了个紫色马甲,另外牛鲨的背上多了个不知道什么的广告语。

Christian Wolf同样用经过ResNet 101预训练的AI模型来识别它,Top5识别结果如下:双髻鲨:53%、大白鲨:14%、三角龙:8%、飞艇:6%、虎鲨:3%。

之后三金我一不小心又貌似找到了这张牛鲨图片里的原牛:

来来来,今天我们一镜到底!我又找到了一张牛鲨图hhh......

       

老实说三金我找到这张图的时候吓了一跳,但是内心直呼好家伙。

此时的我内心的求知欲与好奇心爆棚!有种跃跃欲试的冲动,我想赶紧知道AI会把上面这货识别成个啥,说做就做,为了图个快,我先是用到了Google cloud vision API来识别:

我对上图这个识别结果不甚满意,虽然它Top1的识别出来是鱼了,但是没有说具体是个sha鱼,因为我知道这是个鲨鱼,另外它也没有按照Softmax概率加总为1的输出分类。

唉,靠人不如靠己啊,自己动手丰衣足食,说淦就淦!

本着控制变量&对照试验法的原则,三金我这时同样给安排上了Resnet-101(预训练数据集是ImageNet)来进行识别:

纳尼?English foxhound是个啥?Walker foxhound、beagle又是个啥?

英语八级的我愣了一秒之后就知道这是英国猎狐犬的意思。

可是。。。 这只牛鲨怎么就是猎狐犬了, 牛和鲨好歹沾一样吧?

我承认我急了,我赶紧摸了摸头上的天线,也许是模型不够大,我急中生智。

于是我也不管控制变量和对照试验了,我把Resnet-101换成更大的DenseNet-201(预训练数据集同样是ImageNet)模型重新识别,事实证明我是对的:

Top1的识别结果是鲟(sturgeon),Top2的识别结果是长体蛇鲭(barracouta),鲟长这样:

长体蛇鲭(barracouta)长这样:

好吧,虽然没有识别出来是鲨鱼,但上面两种鱼好得和鲨鱼有些形态相似,总比识别成猎犬要好一些。另外Top 3的识别结果终于出现了(ox)了,这让心心念叨是牛的我很是欣慰!

众所周知,潘朵拉的墨盒一旦打开就很难关上,此时的我已经玩嗨,我赶紧做了个鲨雕识别(使用DenseNet-201模型,下同)。

说来就来,这次Top5的结果分别是:大白鲨、虎鲨、双髻鲨、虎鲨、风筝?

哦不!英语八级的我知道这里kite还有另一个意思是鸢,也就是猛禽的一种,和鹰差不多,这次识别结果还算不错哈~

另外我相信大家心中的虎鲨应该是长成下面这样才对吧:

再来一个鲨狗识别!

这次Top5的结果分别是:大白鲨、儒艮、虎鲨、双髻鲨、河豚。

儒艮长下面这样,AI厉害了!以我人眼来观察,这只鲨狗的狗头之外的部分原型应该就是儒艮

那接下来当然是再来一个鲨猫识别啦!

‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍

这次Top5的结果分别是:虎鲸、三角龙、牛仔靴、双髻鲨、虎鲨。

不做过多评价,我这次把票投给牛仔靴!

下面还有更多的鲨猫,可惜三金今天跑的程序不支持多物体识别。

图作:Yogin 2020/09/19

     

图作:Yogin 2020/09/14

到这里大家肯定会发现AI好像特别容易识别出来鲨和鲸,那么最明显的特征是什么呢,有人说是鳍。

这件案子的始作俑者Christian Wolf也是这样想的,看看下面他只对鳍进行识别的结果,Top5结果分别是:双髻鲨、大白鲨、虎鲨、虎鲸、海狮,这很ok,毕竟这5种动物都有鳍嘛。

这时三金我也要自己试试啊,我只截取了牛头和牛背,把鳍和尾巴给隐藏了,我把下图喂给神经网络:

识别结果如下图所示,桥豆麻袋?第一个结果sorrel是个啥动物?

我咋不知道,我英语八级没过的事实好像要暴露了,那就乖乖百度一下吧。

我草!一种草本植物,原来是酸模/酸叶草的意思,这可真是草了哈

原来AI把牛鲨背后的植物给优先识别了,不过这前景背景的,也不能全赖AI哈。

但是好歹Top2识别结果是牛,hhhh,我立马把这个结果告诉了同事,同事不吱声,只是默默地摔起了鼠标。

下图则是Christian Wolf分别用ResNet-101模型和BagNet模型识别结果的完整对比:

我输了我输了,我们上面玩的这么嗨,无一不是在打我的脸,显然是在说外形对AI识别来说真的非常重要,我认为牛鲨更像牛,但是对AI而言它明显优先识别的是鲨鱼的轮廓和它的鳍、尾巴等特征。

(可能有些读者会疑惑,那人脸识别咋做的,不能类似人脸识别一样只识别牛鲨的头部吗,当然能,但是这就相当一增加了一个分割操作,要先把头部分割出来之后再识别,但是我们现在要研究的是没有任何分割操作的、一次性把整张图片喂给神经网络的单识别工作。)

但是外形对AI来说一直都是最重要最优先被识别的特征吗?牛的皮肤和纹理呢?

三金我不服,我不甘心,纹理就那么不重要吗?

那么请看下图,下图是什么动物?

哦!这肯定是一只傻猫啊...

错X  对AI而言这是一只大象! 

而且Top 5识别结果分别是印度象、非洲象、长牙象......

hhh打脸不?就问你打脸不? 什么?你说你早已知道这个结果了?

好吧好吧,这其实是一篇发表在机器学习顶级会议ICLR 2019 上的论文里研究的工作:

论文链接:https://openreview.net/pdf?id=Bygh9j09KX

接下来就让我们“愉快”地来看一下这篇论文相关的技术问题吧。

这时有朋友告诉我说:“三金老师婷婷!太技术的东西我不看,我忙了一周了,每天搞科研/工作累的一匹,现在只想看看轻松有趣的爽文来缓解一下压力,看完乐呵呵的多好,你好我好大家好。”

我说可以的,你可以选择不看,但是我得写,毕竟我是讲究人,这篇文章我不能水太多啊,不然被老板发现了怎么办,我还能@老板然后对他说:【那你退群啊】不成?

这好吗?这不好,毕竟我还是个读书人。

其实大家都知道的,AI眼里的图片和人类是不一样的,对机器而言,图片不过是一堆像素的排列组合。

那么神经网络会如何识别一只猫呢?

似乎是通过检测它的形状?这种假设的证据来源于像 DeconvNet(《Visualizing and Understanding Convolutional Networks》)这样的可视化工作。

这种技术工作表明,神经网络是由底层到高层来是识别的,在不同的神经网络层,神经网络试图识别一张图像中越来越大的图案,从第一层中简单的边缘和轮廓到更复杂的形状(比如汽车轮子和车身),直到最后轻松地识别出该目标是一辆车。

而纹理这样的元素属于底层,形状这样的元素属于高层,下图为物体识别的详细可视化过程:

单独来一张鸟的可视化的过程图:

说回论文,在这篇论文中作者提出了纹理假设:即人工智能识别物体过程中最重要的因素不是形状,而是纹理。

下图包含了三列图片:

第一行是真实的物体图片:傻猫、汽车、棕熊。

第二行是准备做神经风格迁移的图片:大象皮、钟表、瓶子。

第三行是把第二行的风格给初步迁移填充到傻猫、汽车和棕熊上。

第四行是风格迁移成功之后得到的三张图片。

披着大象皮的傻猫我们之前已经检测过了,确实是识别成大象了,接下来三金我亲自跑程序(同样用的DenseNet-201模型,下同)来识别汽车和傻熊。

很神奇!AI的Top 1结果把下图左汽车识别成了墙钟!

再来看傻熊的Top 3识别结果:分别是玩具店、玩具拼图、鞋店,呃,貌似有些翻车了,这个结果把我傲娇的内心给蹭了一下,AI说它是乱识别的,我说不是,你这明显是有Bear而来啊。

不过不碍事,好歹有些相似不是吗,而且没识别成傻熊不就是另一种成功对吗?

最后,论文作者在Conclusion中表明:

“根据我们提供的证据,当今的AI机器识别过分依赖于物体纹理,而不是通常假定的全局物体形状。我们展示了基于形状的表示进行鲁棒推理的优势(使用我们的Stylized-ImageNet数据集在神经网络中induce此类表征)。

我们设想我们的发现以及我们公开可用的模型权重、代码和行为数据集得以实现三个目标:首先,对CNN表示和偏见的更好理解。第二,迈向更合理的人类视觉目标识别模型。第三,对于未来的工作而言,一个有用的起点是领域知识表明基于形状的表示可能比基于纹理的表示更有益。

对此,我们能做些什么让人工智能的物体识别更接近人类吗?我们能教它利用形状而不是纹理识别物体吗?

答案是肯定的。深度神经网络在学习物体分类时会利用任何能用到的信息。在通常的图像中,纹理已经揭示了很多关于物体特征的信息,因此这时AI可能根本不需要了解更多的关于物体形状的信息。

如果轮胎的轮廓和光滑的表面已经能够让神经网络识别出该物体,为什么还要再次检查形状是否匹配呢?

现在想想牛鲨没有被识别成牛,也许是牛的皮肤纹理不够明显或者鲨鱼的特征太多强烈,那性感豹纹的纹理够不够明显?

这里有个哑谜:

说,有一个东西,远看像沙发,细看像豹纹,打它它不走,骂它不还手,拖它它就走,这是什么?

三金老师,这我猜不到,难道是死狗吗?

喂给神经网络看看就知道了,原来是沙发!天呐!怎么能是沙发而不是豹子呢?

或许纹理不是指的人看到的纹理,而是指的神经网络底层看到的纹理?

哦是吗?是因为上面风格迁移之后的图比如那只猫里面包含了大象皮的风格吗,然后才容易被神经网络识别出来是大象,怪不得上图这个沙发还是被识别成沙发,因为这是一张真实的图片,上面的豹纹是本来就有的,而不是风格迁移之后产生的。

真的是这样吗?我心想,其实我不懂,我只是一个外行。

作者在论文中也设计了一种新的方法,使得神经网络重点关注形状特征而不是纹理,以希望消除它们的纹理偏好。作者再次使用了风格迁移技术将图像的原始纹理替换为任意不同的其他纹理(见下图)。

在生成的图像中,纹理不再提供主要的信息,因此物体的形状是剩下的唯一有用信息(其实也只是对人类而言,AI也可能会识别出一堆无法言说的别的未知特征)。

如果此时神经网络想要利用新的训练数据集学会对物体进行分类,它必须需要学习形状特征。

这篇论文的工作很棒啊,但是我总感觉好像缺少一些更深刻的东西。

我接着借助这位身在法国的奥地利AI研究科学家Christian Wolf的帮助,发现了一篇刚被国际AI机器学习领域排行第一的NeurIPS 2020接收的论文,论文其中一位作者是 Ting chen,我寻思这位作者我眼熟啊。

论文链接:https://proceedings.neurips.cc/paper/2020/file/db5f9f42a7157abe65bb145000b5871a-Paper.pdf

Ting chen何许人也?

简单给大家查了查:Ting Chen于2019年加入谷歌大脑,担任研究科学家。他本科毕业于北京邮电大学CS专业,本科毕业后,Ting Chen 赴美留学,前三年在美国东北大学(Northeastern University),其后跟随导师转至加州大学洛杉矶分校获得CS博士学位。

2017年开始,他先后在谷歌AI、谷歌大脑等部门实习,2019年正式成为谷歌大脑的研究科学家。他曾和深度学习之父、图灵奖得主Geoffrey Hinton合作过多篇论文,是Hinton所在谷歌大脑团队大名鼎鼎的自监督学习框架SimCLR的一作,

他也是同样发表在NeurIPS 2020上另一篇论文《Big Self-Supervised Models are Strong Semi-Supervised Learners》的一作。

在《The Origins and Prevalence of Texture Bias in Convolutional Neural Networks》(卷积神经网络中纹理偏差的起源与流行)这篇论文中,作者表明【ImageNet训练的cnn倾向于按纹理而不是形状对图像进行分类】的这种观点是种偏见。

直接上论文结论:

作者的研究结果表明,在一些分布外测试集上,喜欢按形状而不是纹理对图像进行分类的模型的性能优于Baseline。

本文提出了减少纹理偏差的实用方法,例如使用颜色失真、模糊、加噪、中心裁剪等数据增强操作。

人类和ImageNet训练的CNN处理图像的方式上的明显差异可能主要是由于他们看到的数据的不同,虽然结构和训练目标都会影响模型中纹理偏差的程度,但训练数据集的统计特性是最重要的因素,本文中的不同数据增强操作证明了这点。

这个观点我支持,如果你给我100张或者哪怕十张牛鲨的图片让我来打标签训练我肯定能识别出来啊。

另外我想知道,如果训练集是一堆正常的图片,那训练之后的AI模型能识别对应物体的只有线条轮廓的简笔画吗?

本文研究的人类视觉和机器视觉之间的差异可能导致用户在预期和推理计算机视觉系统的行为时犯重大错误。

大错误不好说,有个小错误三金我可以举例!

在前几天苏格兰足球冠军联赛的一场比赛上,场边的AI摄像机将裁判员的光头识别成了足球,疯狂追了一整场。

无论哪支球队进攻,无论哪个球员带球,AI摄像机都选择了视而不见。

相反,它却不弃不离地跟着一名边裁,并不时给出锃光瓦亮的光头C位特写。

所以电视机前的球迷们压根看不到任何球员的跑位,而是欣赏了一整场的光头盛宴。

说回本文,本文的发现有助于描述人与机器视觉之间的差异,并为将两个系统的紧密结合提供了途径:这能允许具有不同背景的人员制作安全、可预测和公平的模型,这也要求视觉系统至少能够大致上符合人类的期望,而制作与人类具有相同归纳偏差的计算机视觉模型正是朝着这一目标迈出的重要一步。

文章发出之前,我又一次看了下文章开头的牛鲨图片,我的脑海中不知觉响起了儿时哪吒传奇里面的主题歌:

说一段神话,话说一只虎鲨,这鲨有鳍俩 ,像一只牛娃娃,

扎两只牛天角,没有小脚丫,脸带着牛微笑,牛皮遮不住鲨......

是鲨是鲨就是鲨,我们的朋友小虎鲨,上天(吹牛)好比天好高,下海(鲨)要比海更大......

我知道牛鲨可以算是一种新物种,所以AI识别起来难免会和我的观点有偏差,可是我还是想搞清楚这到底是牛还是鲨呢?难道是外星生物

AI不讲5德,目前还是小学生阶段,我要是用对抗攻击去识别又会怎样?

什么时候神经网络的可解释能得到进一步发展呢,在AI眼里我又是个啥?

看似对这个世界的真相了解的越多,我内心深处反而越是疑惑、迷茫和恐慌......

“嘿!兄歹,快醒醒,想Peach呢?还搁着做白日梦呢?赶紧把文章发了,别耽误今晚请我火锅哈”-- 旁边同事对我说。

“哦哦好的,咦,鲨?我啥时候答应请你了?”

“别废话,你欠我的,就今晚啦。”--同事说道。

“额,那好吧(好个der啊),今晚就今晚吧,那我们就去吃牛鲨火锅吧”

“。。。你魔怔了吧???”

留个课后作业:请问下面这两张图会被AI识别成什么字母?

参考链接:https://chriswolfvision.medium.com/cow-sharks-exploring-the-shape-vs-texture-biases-in-deep-neural-networks-15d551910656

下载:CVPR /  ECCV 2020开源代码

后台回复:CVPR2020,即可下载CVPR 2020代码开源的论文合集

后台回复:ECCV2020,即可下载ECCV 2020代码开源的论文合集

重磅!CVer-论文写作与投稿交流群成立

扫码添加CVer助手,可申请加入CVer-论文写作与投稿 微信交流群,目前已满2400+人,旨在交流顶会(CVPR/ICCV/ECCV/NIPS/ICML/ICLR/AAAI等)、顶刊(IJCV/TPAMI/TIP等)、SCI、EI、中文核心等写作与投稿事宜。

同时也可申请加入CVer大群和细分方向技术群,细分方向已涵盖:目标检测、图像分割、目标跟踪、人脸检测&识别、OCR、姿态估计、超分辨率、SLAM、医疗影像、Re-ID、GAN、NAS、深度估计、自动驾驶、强化学习、车道线检测、模型剪枝&压缩、去噪、去雾、去雨、风格迁移、遥感图像、行为识别、视频理解、图像融合、图像检索、论文投稿&交流、PyTorch和TensorFlow等群。

一定要备注:研究方向+地点+学校/公司+昵称(如论文写作+上海+上交+卡卡),根据格式备注,可更快被通过且邀请进群

▲长按加微信群

▲长按关注CVer公众号

整理不易,请给CVer点赞和在看


http://www.ppmy.cn/news/697581.html

相关文章

Linux文本处理工具cut(截切数据)

文章目录 Linux文本处理工具cut(剪切数据)1. 数据文件cut.txt1. 取cut.txt第一列2. 取cut.txt第一列和第二列3. 取cut.tx第二列到第四列4. 取cut.txt前三列5. 取cut.txt的前三个字符6. 在cut.txt文件中切割出Lily7. 取出系统PATH变量值,第2个…

c++红与黑(DFS之连通性模型)

连通性是图论中一个重要的概念,用于描述图中的点与点之间是否存在路径。在连通图中,任意两个点之间都存在至少一条路径。而在非连通图中,存在一些点与其它点没有连通的路径。 在使用深度优先搜索(DFS)算法解决图论问题…

如何更改计算机名?

1、计算机的用户名用来标识在网络中这台计算机的名称。 2、在局域网中,在一开机的时候,会自动搜索关于这台计算机的用户名称,也就相当于IP地址。 3、有了计算机名,指定IP地址的时候也会相当的方便。 4、在局域网络中,计…

如何取得计算机名

程序说明: 这个程序比较简单,大家自己看吧 计算机名就是你打开 控制面板-系统-网络标识-完整的计算机名称 程序代码: Form1 Private Declare Function GetComputerName Lib "kernel32" Alias "GetComputerNameA" (ByVal lpBuffer As String, nSize As…

【系统篇 / 配置】❀ 01. 修改计算机名 ❀ Windows Server 2016

【简介】系统安装完成后,会自动给计算机随机取一个不会重复的名称,在计算机比较多的情况下,给计算机取一个容易识别的名称就很重要了。 更改计算机名 建议在系统安装完成后的第一步就给计算机取名称,用来区分网络上的其它计算机。…

通过IP地址查看计算机名

通过开始菜单查找cmd,进入命令提示符。 或者通过所有程序,附件,命令提示符。 在命令提示符输入ipconfig,按回车键。查看IP地址。创作中心 IP地址是172.16.101.238。 输入nbtstat -A 172.16.101.238,按回车键。查看…

Windows Server 2016修改计算机名

【简介】系统安装完成后,会自动给计算机随机取一个不会重复的名称,在计算机比较多的情况下,给计算机取一个容易识别的名称就很重要了。 更改计算机名 建议在系统安装完成后的第一步就给计算机取名称,用来区分网络上的其它计算机。…

windows 更改计算机名

控制面板->系统和安全->系统->更改设置->系统属性窗口->计算机名标签->更改按钮