AI識別徹底懵逼,這到底是“牛”還是“鯊”?

來源:AI科技評論

作者:耳洞打三金

本文約6200字,建議閱讀15分鐘

是牛or鯊魚?

看到封面和標題,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

編輯:王菁

校對:林亦霖

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章