到底是什么特征影響著CNN的性能愈捅?

作者 | 劉暢?

編輯 | Jane

出品 | AI科技大本營(yíng)(ID:rgznai100)

開門見山。最近閱讀了一篇論文翩腐,加上看了一些之前的工作。記錄一下膏燃,CNN 到底學(xué)到了什么東西茂卦,或者換句話講。到底是什么樣的特征在影響著CNN 的性能组哩?

先放論文:

IMAGENET-TRAINED CNNS ARE BIASED TOWARDS TEXTURE; INCREASING SHAPE BIAS IMPROVES ACCURACY AND ROBUSTNESS

論文地址:

https://openreview.net/pdf?id=Bygh9j09KX

JeremyRifkin 在書《The end of Work》中寫道等龙,“時(shí)至今日,當(dāng)科學(xué)家們探討人工智能時(shí)伶贰,他們通常是在講一門能執(zhí)行人們所希望機(jī)器表現(xiàn)的智能藝術(shù)”蛛砰。這是我比較喜歡的關(guān)于人工智能的定義。因?yàn)樗苊饬舜笳勌卣勅缃竦娜斯ぶ悄芗夹g(shù)離真正的智能化有多遠(yuǎn)黍衙。而是享受當(dāng)下泥畅。不過,作為一名研究人員琅翻,我覺得揭開大腦的運(yùn)作原理和創(chuàng)造真正的智能機(jī)器是非常重要的位仁。目前深度學(xué)習(xí)主要做的研究是關(guān)于從數(shù)據(jù)中學(xué)到規(guī)則并將其自動(dòng)化的一個(gè)過程。這已經(jīng)帶來了非常多的好處方椎,舉一個(gè)簡(jiǎn)單的例子聂抢。在醫(yī)學(xué)領(lǐng)域引入深度學(xué)習(xí)技術(shù),可以將許多診斷過程全自動(dòng)化棠众,因此可以讓貧窮地區(qū)或國(guó)家的人們享受到頂級(jí)的治療琳疏。

開篇完畢,現(xiàn)在進(jìn)入正題。盡管深度學(xué)習(xí)技術(shù)的到來給人們的生活帶來了更多的便利空盼。但是神經(jīng)網(wǎng)絡(luò)看待和解釋世界的方式仍然是一個(gè)黑盒子书幕。因此我們需要嘗試更好的理解它,以便我們對(duì)深度學(xué)習(xí)網(wǎng)絡(luò)做出進(jìn)一步的改進(jìn)我注,以及嘗試去解釋某些深度學(xué)習(xí)行為按咒。有兩種主要的方法可以嘗試?yán)斫馍窠?jīng)網(wǎng)絡(luò)。一種是在數(shù)據(jù)集中查找導(dǎo)致特征圖有高激活響應(yīng)值的圖片但骨,另一種是在隨機(jī)的一張圖片中励七,通過優(yōu)化像素值來生成模式。接下來奔缠,通過一些例子來展示一下掠抬,CNN 到底學(xué)到了什么?

特征可視化

這本書《Deep Learning with Python》里面講了如何生成模式校哎。包括濾波器是如何響應(yīng)模式(紋理)等两波。接下來我們先觀察一下這些模式。以 VGG16 為例闷哆。

第7層卷積(64,128)

濾波器12腰奋,16,86抱怔,110(從左到右劣坊,從上到下)

第14層卷積(128,256)

濾波器1, 6屈留,31局冰,32,54, 77(從左到右灌危,從上到下)

第20層卷積(256,256)

濾波器3康二,34,39勇蝙,55沫勿,62,105(從左到右浅蚪,從上到下)

第30層卷積(512,512)

濾波器54藕帜,62,67惜傲,92洽故,123,141(從左到右盗誊,從上到下)

第40層卷積(512,512)——網(wǎng)絡(luò)頂部

256时甚,261隘弊,265,277荒适,286梨熙,462(從左到右,從上到下)

這些得到的中間結(jié)果看著非常漂亮刀诬。方法就是在網(wǎng)絡(luò)中最大化某個(gè)激活值就可以得到這些結(jié)果咽扇。看一下第 40 層的幾張圖陕壹。已經(jīng)有了明顯的形狀质欲。比如羽毛、鐵鏈等糠馆。接下來我們分析一下這些結(jié)果嘶伟。

模式識(shí)別

我們先從下面這張圖片開始吧。這張圖片看著像是拱門又碌。于是去數(shù)據(jù)集里面找來了一張拱門的圖片九昧,也就是右圖。

接下來我們來檢驗(yàn)一下毕匀,是不是由這張圖來確定的圖片的分類铸鹰。首先記住,這張圖是最后一層的第 286 個(gè)濾波器皂岔。如何檢驗(yàn)?zāi)氐粞伲课覀冎恍枰獙⑦@張圖片輸入進(jìn)網(wǎng)絡(luò),并繪制第 40 層的平均激活響應(yīng)凤薛,如下圖。

可以看到在特征圖第 286 的地方诞仓,出現(xiàn)了強(qiáng)烈的飆升缤苫。顯然它就是檢測(cè)拱形結(jié)構(gòu)的濾波器。但是注意墅拭,這樣的形狀結(jié)構(gòu)可能對(duì)應(yīng)著幾個(gè)不同的類別活玲。

那我們?cè)倏匆粋€(gè)例子吧。左邊這個(gè)看著像是雞頭(最后一層谍婉,第 256 個(gè))舒憾。因此找了右邊這一張圖片來測(cè)試。同樣的測(cè)試方法穗熬。

我們來看一看特征響應(yīng)圖镀迂。

好像似乎也印證了我的想法,可能是某種形狀導(dǎo)致了最后的輸出類別唤蔗。也就是說探遵,影響 CNN 效果的其實(shí)是形狀特征(猜想)窟赏。

不過讓我們?cè)訇P(guān)注一個(gè)例子,用同樣的方法箱季。輸入一張鳥類的圖涯穷。

濾波器172,288藏雏,437拷况,495(從左到右,從上到下)

我們發(fā)現(xiàn)了多個(gè)高響應(yīng)的特征圖掘殴。上面的特征圖有像是鳥腿赚瘦、眼睛和喙的東西?但是下面的特征圖杯巨,看不出來是什么蚤告,可能與圖像的背景有關(guān),或者一些只有網(wǎng)絡(luò)能理解的東西服爷。這部分現(xiàn)在仍然是黑匣子杜恰。也許之前的猜想是錯(cuò)的。

接下來放一下代碼(PyTorch):

1generate_image.py

2classFilterVisualizer():

3def__init__(self,?size=56,?upscaling_steps=12,?upscaling_factor=1.2):

4self.size,?self.upscaling_steps,?self.upscaling_factor?=?size,?upscaling_steps,?upscaling_factor

5self.model?=?vgg16(pre=True).cuda().eval()

6set_trainable(self.model,False)

7

8defvisualize(self,?layer,?filter,?lr=0.1,?opt_steps=20,?blur=None):

9sz?=?self.size

10img?=?np.uint8(np.random.uniform(150,180,?(sz,?sz,3)))/255#?generate?random?image

11activations?=?SaveFeatures(list(self.model.children())[layer])#?register?hook

12

13for_inrange(self.upscaling_steps):#?scale?the?image?up?upscaling_steps?times

14train_tfms,?val_tfms?=?tfms_from_model(vgg16,?sz)

15img_var?=?V(val_tfms(img)[None],?requires_grad=True)#?convert?image?to?Variable?that?requires?grad

16optimizer?=?torch.optim.Adam([img_var],?lr=lr,?weight_decay=1e-6)

17forninrange(opt_steps):#?optimize?pixel?values?for?opt_steps?times

18optimizer.zero_grad()

19self.model(img_var)

20loss?=?-activations.features[0,?filter].mean()

21loss.backward()

22optimizer.step()

23img?=?val_tfms.denorm(img_var.data.cpu().numpy()[0].transpose(1,2,0))

24self.output?=?img

25sz?=?int(self.upscaling_factor?*?sz)#?calculate?new?image?size

26img?=?cv2.resize(img,?(sz,?sz),?interpolation?=?cv2.INTER_CUBIC)#?scale?image?up

27ifblurisnotNone:?img?=?cv2.blur(img,(blur,blur))#?blur?image?to?reduce?high?frequency?patterns

28self.save(layer,?filter)

29activations.close()

30

31defsave(self,?layer,?filter):

32plt.imsave("layer_"+str(layer)+"_filter_"+str(filter)+".jpg",?np.clip(self.output,0,1))

33

34

35pytorch_hook.py

36

37classSaveFeatures():

38def__init__(self仍源,module):

39self.hook=module.register_forward_hook(self.hook_fn)

40defhook_fn(self心褐,module,input笼踩,output):

41self.features=torch.tensor(output逗爹,requires_grad=True).cuda()

42defclose(self):

43self.hook.remove()

44

45

46filter_visualizer.py

47

48layer=?40

49filter=?265

50FV=FilterVisualizer(size=56,?upscaling_steps=12,?upscaling_factor=1.2)

51FV.visualize(layer,?filter,?blur=5)

52

你以為到這里就完了嗎?還沒到這篇文章的重點(diǎn)內(nèi)容嚎于,新鮮出爐的 2019 ICLR 的論文:《Imagenet-trained?CNNs?are biased towards texture; Increasing shape bias improves accuracy and robustness》

看標(biāo)題掘而,就知道。我們之前的猜想是錯(cuò)誤的于购!CNN 學(xué)到的應(yīng)該是紋理特征袍睡。真讓人頭疼!

作者以一個(gè)問題入手肋僧,一只披著象皮的貓斑胜,神經(jīng)網(wǎng)絡(luò)會(huì)把它識(shí)別為大象還是貓?最后根據(jù)實(shí)驗(yàn)結(jié)果得出結(jié)論嫌吠。神經(jīng)網(wǎng)絡(luò)應(yīng)該是根據(jù)物體的紋理特征來進(jìn)行識(shí)別止潘,而并非我們以為的形狀特征。也就是說我們常了解的一些可視化技術(shù)如 Deconv 都是具有誤導(dǎo)性的辫诅,它們的結(jié)果僅僅只是圖像的重建部分凭戴,而與網(wǎng)絡(luò)如何做出最后的決策關(guān)系不大。

其實(shí)接觸過圖像風(fēng)格遷移技術(shù)的技術(shù)人員應(yīng)該都非常清楚炕矮,深度學(xué)習(xí)模型在里面提取的圖像的繪畫風(fēng)格就是紋理特征簇宽。貼上一張經(jīng)典圖片勋篓,生成的是一張具有梵高《星月夜》圖畫風(fēng)格的建筑圖片。

在論文里面魏割,作者為了更清楚的了解譬嚣,圖像識(shí)別到底是基于形狀還是基于紋理。做了以下的實(shí)驗(yàn)钞它。使用三張生成的圖片拜银,分別是帶有大象紋理的貓 , 帶有鐘表紋理的汽車 和 帶有水瓶紋理的熊

作者通過實(shí)驗(yàn)遭垛,采用了多個(gè)神經(jīng)網(wǎng)絡(luò)(AlexNet尼桶、VGG-16、GoogLeNet锯仪、ResNet-50泵督、ResNet-152、DenseNet-121庶喜、SqueezeNet1_1)進(jìn)行輸出結(jié)果小腊。為了對(duì)照,還召集了大約 100 名人類來做對(duì)照實(shí)驗(yàn)久窟。這個(gè)實(shí)驗(yàn)結(jié)果就是一只帶有象皮紋理的貓被深度神經(jīng)網(wǎng)絡(luò)判斷為大象秩冈,但對(duì)人類來說仍然是貓。帶有時(shí)鐘紋理的汽車被深度神經(jīng)網(wǎng)絡(luò)判斷為時(shí)鐘斥扛,帶有水瓶紋理的熊被深度神經(jīng)網(wǎng)絡(luò)判斷為水瓶入问。顯然!該實(shí)驗(yàn)支持了這一說法,即目前用于物體識(shí)別的深度學(xué)習(xí)技術(shù)主要依賴紋理,而不是物體形狀。

當(dāng)然,作者還做了更多的對(duì)比實(shí)驗(yàn)缎患。得出了一些具有啟發(fā)性的結(jié)論。比如對(duì)于只包含紋理圖片的數(shù)據(jù)集,神經(jīng)網(wǎng)絡(luò)能取得特別高的準(zhǔn)確率。采用原圖和灰度圖,神經(jīng)網(wǎng)絡(luò)都可以取得非常高的準(zhǔn)確率窜锯,而對(duì)于只包含輪廓和只包含邊緣的圖片张肾,神經(jīng)網(wǎng)絡(luò)的預(yù)測(cè)準(zhǔn)確率則顯著降低。

更多的實(shí)驗(yàn)細(xì)節(jié)锚扎,可以查看論文吞瞪。總結(jié)一下驾孔,有幾點(diǎn)結(jié)論還是很有啟發(fā)性的:

第一芍秆、回答了影響CNN識(shí)別性能的是形狀還是紋理的問題惯疙。

第二、如何針對(duì)性的引導(dǎo)神經(jīng)網(wǎng)絡(luò)訓(xùn)練或者學(xué)習(xí)想要它學(xué)習(xí)的特征妖啥。(有意的抑制某個(gè)特征)

原文鏈接:

https://blog.csdn.net/u012395979/article/details/86651808

作者:AI科技大本營(yíng)

鏈接:http://www.reibang.com/p/9f2322027cad

來源:簡(jiǎn)書

簡(jiǎn)書著作權(quán)歸作者所有霉颠,任何形式的轉(zhuǎn)載都請(qǐng)聯(lián)系作者獲得授權(quán)并注明出處。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末荆虱,一起剝皮案震驚了整個(gè)濱河市蒿偎,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌怀读,老刑警劉巖诉位,帶你破解...
    沈念sama閱讀 211,743評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異菜枷,居然都是意外死亡苍糠,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門啤誊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來岳瞭,“玉大人,你說我怎么就攤上這事坷衍∏抻牛” “怎么了?”我有些...
    開封第一講書人閱讀 157,285評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵枫耳,是天一觀的道長(zhǎng)乏矾。 經(jīng)常有香客問我,道長(zhǎng)迁杨,這世上最難降的妖魔是什么钻心? 我笑而不...
    開封第一講書人閱讀 56,485評(píng)論 1 283
  • 正文 為了忘掉前任,我火速辦了婚禮铅协,結(jié)果婚禮上捷沸,老公的妹妹穿的比我還像新娘。我一直安慰自己狐史,他們只是感情好痒给,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,581評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著骏全,像睡著了一般苍柏。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上姜贡,一...
    開封第一講書人閱讀 49,821評(píng)論 1 290
  • 那天试吁,我揣著相機(jī)與錄音,去河邊找鬼楼咳。 笑死熄捍,一個(gè)胖子當(dāng)著我的面吹牛烛恤,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播余耽,決...
    沈念sama閱讀 38,960評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼缚柏,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了宾添?” 一聲冷哼從身側(cè)響起船惨,我...
    開封第一講書人閱讀 37,719評(píng)論 0 266
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎缕陕,沒想到半個(gè)月后粱锐,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,186評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡扛邑,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,516評(píng)論 2 327
  • 正文 我和宋清朗相戀三年怜浅,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蔬崩。...
    茶點(diǎn)故事閱讀 38,650評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡恶座,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出沥阳,到底是詐尸還是另有隱情跨琳,我是刑警寧澤,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布桐罕,位于F島的核電站脉让,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏功炮。R本人自食惡果不足惜溅潜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,936評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望薪伏。 院中可真熱鬧滚澜,春花似錦、人聲如沸嫁怀。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽塘淑。三九已至萝招,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間朴爬,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評(píng)論 1 266
  • 我被黑心中介騙來泰國(guó)打工橡淆, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留召噩,地道東北人母赵。 一個(gè)月前我還...
    沈念sama閱讀 46,370評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像具滴,于是被迫代替她去往敵國(guó)和親凹嘲。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,527評(píng)論 2 349

推薦閱讀更多精彩內(nèi)容