精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

CNN到底學到了什么?到底是什么樣的特征在影響著CNN的性能?

電子工程師 ? 來源:lq ? 2019-01-29 10:24 ? 次閱讀

開門見山。最近閱讀了一篇論文,加上看了一些之前的工作。記錄一下,CNN 到底學到了什么東西,或者換句話講。到底是什么樣的特征在影響著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》中寫道,“時至今日,當科學家們探討人工智能時,他們通常是在講一門能執行人們所希望機器表現的智能藝術”。這是我比較喜歡的關于人工智能的定義。因為它避免了大談特談如今的人工智能技術離真正的智能化有多遠。而是享受當下。不過,作為一名研究人員,我覺得揭開大腦的運作原理和創造真正的智能機器是非常重要的。目前深度學習主要做的研究是關于從數據中學到規則并將其自動化的一個過程。這已經帶來了非常多的好處,舉一個簡單的例子。在醫學領域引入深度學習技術,可以將許多診斷過程全自動化,因此可以讓貧窮地區或國家的人們享受到頂級的治療。

開篇完畢,現在進入正題。盡管深度學習技術的到來給人們的生活帶來了更多的便利。但是神經網絡看待和解釋世界的方式仍然是一個黑盒子。因此我們需要嘗試更好的理解它,以便我們對深度學習網絡做出進一步的改進,以及嘗試去解釋某些深度學習行為。有兩種主要的方法可以嘗試理解神經網絡。一種是在數據集中查找導致特征圖有高激活響應值的圖片,另一種是在隨機的一張圖片中,通過優化像素值來生成模式。接下來,通過一些例子來展示一下,CNN 到底學到了什么?

特征可視化

這本書《Deep Learning with Python》里面講了如何生成模式。包括濾波器是如何響應模式(紋理)等。接下來我們先觀察一下這些模式。以 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)——網絡頂部

256,261,265,277,286,462(從左到右,從上到下)

這些得到的中間結果看著非常漂亮。方法就是在網絡中最大化某個激活值就可以得到這些結果。看一下第 40 層的幾張圖。已經有了明顯的形狀。比如羽毛、鐵鏈等。接下來我們分析一下這些結果。

模式識別

我們先從下面這張圖片開始吧。這張圖片看著像是拱門。于是去數據集里面找來了一張拱門的圖片,也就是右圖。

接下來我們來檢驗一下,是不是由這張圖來確定的圖片的分類。首先記住,這張圖是最后一層的第 286 個濾波器。如何檢驗呢?我們只需要將這張圖片輸入進網絡,并繪制第 40 層的平均激活響應,如下圖。

可以看到在特征圖第 286 的地方,出現了強烈的飆升。顯然它就是檢測拱形結構的濾波器。但是注意,這樣的形狀結構可能對應著幾個不同的類別。

那我們再看一個例子吧。左邊這個看著像是雞頭(最后一層,第 256 個)。因此找了右邊這一張圖片來測試。同樣的測試方法。

我們來看一看特征響應圖。

好像似乎也印證了我的想法,可能是某種形狀導致了最后的輸出類別。也就是說,影響 CNN 效果的其實是形狀特征(猜想)。

不過讓我們再關注一個例子,用同樣的方法。輸入一張鳥類的圖。

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

我們發現了多個高響應的特征圖。上面的特征圖有像是鳥腿、眼睛和喙的東西?但是下面的特征圖,看不出來是什么,可能與圖像的背景有關,或者一些只有網絡能理解的東西。這部分現在仍然是黑匣子。也許之前的猜想是錯的。

接下來放一下代碼(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.size10img=np.uint8(np.random.uniform(150,180,(sz,sz,3)))/255#generaterandomimage11activations=SaveFeatures(list(self.model.children())[layer])#registerhook1213for_inrange(self.upscaling_steps):#scaletheimageupupscaling_stepstimes14train_tfms,val_tfms=tfms_from_model(vgg16,sz)15img_var=V(val_tfms(img)[None],requires_grad=True)#convertimagetoVariablethatrequiresgrad16optimizer=torch.optim.Adam([img_var],lr=lr,weight_decay=1e-6)17forninrange(opt_steps):#optimizepixelvaluesforopt_stepstimes18optimizer.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=img25sz=int(self.upscaling_factor*sz)#calculatenewimagesize26img=cv2.resize(img,(sz,sz),interpolation=cv2.INTER_CUBIC)#scaleimageup27ifblurisnotNone:img=cv2.blur(img,(blur,blur))#blurimagetoreducehighfrequencypatterns28self.save(layer,filter)29activations.close()3031defsave(self,layer,filter):32plt.imsave("layer_"+str(layer)+"_filter_"+str(filter)+".jpg",np.clip(self.output,0,1))333435pytorch_hook.py3637classSaveFeatures():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()444546filter_visualizer.py4748layer=4049filter=26550FV=FilterVisualizer(size=56,upscaling_steps=12,upscaling_factor=1.2)51FV.visualize(layer,filter,blur=5)52

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

看標題,就知道。我們之前的猜想是錯誤的!CNN 學到的應該是紋理特征。真讓人頭疼!

作者以一個問題入手,一只披著象皮的貓,神經網絡會把它識別為大象還是貓?最后根據實驗結果得出結論。神經網絡應該是根據物體的紋理特征來進行識別,而并非我們以為的形狀特征。也就是說我們常了解的一些可視化技術如 Deconv 都是具有誤導性的,它們的結果僅僅只是圖像的重建部分,而與網絡如何做出最后的決策關系不大。

其實接觸過圖像風格遷移技術的技術人員應該都非常清楚,深度學習模型在里面提取的圖像的繪畫風格就是紋理特征。貼上一張經典圖片,生成的是一張具有梵高《星月夜》圖畫風格的建筑圖片。

在論文里面,作者為了更清楚的了解,圖像識別到底是基于形狀還是基于紋理。做了以下的實驗。使用三張生成的圖片,分別是帶有大象紋理的貓 , 帶有鐘表紋理的汽車 和 帶有水瓶紋理的熊

作者通過實驗,采用了多個神經網絡(AlexNet、VGG-16、GoogLeNet、ResNet-50、ResNet-152、DenseNet-121、SqueezeNet1_1)進行輸出結果。為了對照,還召集了大約 100 名人類來做對照實驗。這個實驗結果就是一只帶有象皮紋理的貓被深度神經網絡判斷為大象,但對人類來說仍然是貓。帶有時鐘紋理的汽車被深度神經網絡判斷為時鐘,帶有水瓶紋理的熊被深度神經網絡判斷為水瓶。顯然!該實驗支持了這一說法,即目前用于物體識別的深度學習技術主要依賴紋理,而不是物體形狀。

當然,作者還做了更多的對比實驗。得出了一些具有啟發性的結論。比如對于只包含紋理圖片的數據集,神經網絡能取得特別高的準確率。采用原圖和灰度圖,神經網絡都可以取得非常高的準確率,而對于只包含輪廓和只包含邊緣的圖片,神經網絡的預測準確率則顯著降低。

更多的實驗細節,可以查看論文。總結一下,有幾點結論還是很有啟發性的:

第一、回答了影響CNN識別性能的是形狀還是紋理的問題。

第二、如何針對性的引導神經網絡訓練或者學習想要它學習的特征。(有意的抑制某個特征)

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 神經網絡
    +關注

    關注

    42

    文章

    4765

    瀏覽量

    100566
  • 人工智能
    +關注

    關注

    1791

    文章

    46896

    瀏覽量

    237670
  • cnn
    cnn
    +關注

    關注

    3

    文章

    351

    瀏覽量

    22178

原文標題:到底是什么特征影響著CNN的性能?

文章出處:【微信號:rgznai100,微信公眾號:rgznai100】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    蘋果新專利解析:全固態電池到底是何種技術?

    那么到底全固態電池到底是一種什么樣的技術,會引起蘋果公司的重點關注呢?
    發表于 01-22 10:46 ?6901次閱讀

    單點并聯接地與多點串聯接地到底是什么樣的接法

    最近看PCB布局的規則,地線方面老是存在疑惑,地線低頻時,要用單點并聯接地,高頻時用多點串聯接地,但是這兩種接法到底是什么樣子的,心里
    發表于 04-25 00:21

    這是到底是什么元件?

    開關電源一個小貼片,k2717前端。絲印MY還有133字。這到底是什么元件?什么原理?
    發表于 05-26 15:06

    TF之CNNCNN實現mnist數據集預測

    TF之CNNCNN實現mnist數據集預測 96%采用placeholder用法+2層C及其max_pool法+隱藏層dropout法+輸出層softmax法+目標函數cross_entropy法+
    發表于 12-19 17:02

    變頻電源的原理到底是什么樣的?

    變頻電源的原理到底是什么樣的?為什么會有如此多的行業要用到ZGYS變頻電源?下面我就一下分解變頻電源的原理性吧--中港揚盛專業分享通常時候,為了產生可變的電壓和頻率,這個設備首先要把電源的交流電變換
    發表于 11-16 06:03

    變頻電源的原理到底是什么樣

    變頻電源的原理到底是什么樣的?為什么會有如此多的行業要用到ZGYS變頻電源?下面我就一下分解變頻電源的原理性吧--中港揚盛專業分享通常時候,為了產生可變的電壓和頻率,這個設備首先要把電源的交流電變換
    發表于 11-17 07:26

    如何將DS_CNN_S.pb轉換為ds_cnn_s.tflite?

    MIMRTX1064(SDK2.13.0)的KWS demo中放置了ds_cnn_s.tflite文件,提供demo中使用的模型示例。 read.me 中,聲明我可以找到腳本,但是,該文檔中的腳本
    發表于 04-19 06:11

    一文詳解CNN

    1 CNN簡介 CNN即卷積神經網絡(Convolutional Neural Networks),是一類包含卷積計算的神經網絡,是深度學習(deep learning)的代表算法之一,圖像識別
    發表于 08-18 06:56

    解析ARM到底是一家什么樣的公司?

    ARM到底是一家什么樣的公司?
    的頭像 發表于 03-01 12:29 ?7204次閱讀

    PyTorch教程-14.8。基于區域的 CNN (R-CNN)

    Studio 實驗室 SageMaker Studio Lab 中打開筆記本 除了第 14.7 節中描述的單次多框檢測之外,基于區域的 CNN 或具有 CNN 特征的區域 (R-
    的頭像 發表于 06-05 15:44 ?629次閱讀
    PyTorch教程-14.8。基于區域的 <b class='flag-5'>CNN</b> (R-<b class='flag-5'>CNN</b>)

    可視化CNN特征

    作者:AhzamEjaz來源:DeepHubIMBA卷積神經網絡(cnn)是一種神經網絡,通常用于圖像分類、目標檢測和其他計算機視覺任務。CNN的關鍵組件之一是特征圖,它是通過對圖像應用卷積濾波器
    的頭像 發表于 04-19 10:33 ?962次閱讀
    可視化<b class='flag-5'>CNN</b>和<b class='flag-5'>特征</b>圖

    CNN到底是怎么回事?

    它用TensorFlow.js加載了一個10層的預訓練模型,相當于在你的瀏覽器上跑一個CNN模型,只需要打開電腦,就能了解CNN究竟是怎么回事。
    的頭像 發表于 06-28 14:47 ?4023次閱讀
    <b class='flag-5'>CNN</b><b class='flag-5'>到底是</b>怎么回事?

    cnn卷積神經網絡原理 cnn卷積神經網絡的特點是什么

    ,具有非常強的表征能力。本文中,我們將詳細介紹CNN的原理和特點。 一、CNN的原理 1. 卷積操作 CNN最顯著的特點是卷積操作。卷積是一種數學運算,它通過一個濾波器
    的頭像 發表于 08-21 17:15 ?1578次閱讀

    cnn卷積神經網絡簡介 cnn卷積神經網絡代碼

    以解決圖像識別問題為主要目標,但它的應用已經滲透到了各種領域,從自然語言處理、語音識別、到物體標記以及醫療影像分析等。在此,本文將對CNN的原理、結構以及基礎代碼進行講解。 1. CNN的原理
    的頭像 發表于 08-21 17:16 ?2632次閱讀

    單片機的“性能到底是什么?

    單片機的“性能到底是什么?
    的頭像 發表于 10-24 16:58 ?549次閱讀
    單片機的“<b class='flag-5'>性能</b>”<b class='flag-5'>到底是</b>什么?