【深度學習】基於MatConvNet框架的CNN卷積層與特徵圖可視化

版權聲明:本文爲博主原創文章,歡迎轉載。轉載請註明出處http://blog.csdn.net/jsgaobiao https://blog.csdn.net/jsgaobiao/article/details/80361494

程序下載鏈接:https://download.csdn.net/download/jsgaobiao/10422273
VGG-f模型鏈接:http://www.vlfeat.org/matconvnet/models/imagenet-vgg-f.mat

【題目】
編程實現可視化卷積神經網絡的特徵圖,並探究圖像變換(平移,旋轉,縮放等)對特徵圖的影響。選擇AlexNet等經典CNN網絡的Pre-trained模型,可視化每個卷積層的特徵圖(網絡輸入圖片自行選擇)。其中,第一層全部可視化,其餘層選取部分特徵圖進行可視化。然後對圖像進行變換,觀察圖像變換後特徵圖的變化。

 【方法概述】
本次實驗使用了VGG-f作爲預先加載的模型,通過MATLAB中的load方法將imagenet-vgg-f中的參數加載進程序。
imagenet-vgg-f是一個21層的卷積神經網絡,其參數在ImageNet數據集上進行了訓練。它的網絡結構包括了5層卷積層、3層全連接層,輸出的類別可達1000種。網絡結構圖太長了放在文章最後。

實驗中共有6個輸入圖像,分別是原圖input.jpg以及對它進行平移、縮放、旋轉、水平翻轉、垂直翻轉後的圖像
這裏寫圖片描述
首先將輸入圖像進行歸一化操作,也就是將圖片resize到網絡的標準輸入大小224*224,並且將圖片的每個像素與均值圖片的每個像素相減,再輸入網絡。
接下來,可視化卷積核的時候,將網絡第一層卷積核的參數net.layers{1}.weights{1}提取出來,並使用vl_imarraysc函數進行可視化。第一層卷積核的3個通道在可視化的過程中就被當作RGB三個通道。
對於feature map的可視化任務,需要先使用vl_simplenn將圖片輸入神經網絡並獲取其輸出結果。我們需要可視化的是每個卷積層後經過ReLU的結果,每個輸入圖像對應5個特徵圖。

 【結果分析】
由於卷積核的參數是預訓練得到的,與輸入圖片無關,所以只展現一幅圖就夠了。如下圖所示,第一層卷積核學到了圖片中一些基礎性的特徵,比如各種方向的邊緣和角點。
這裏寫圖片描述
下面展示的是原始圖片輸入後,5個卷積層的可視化結果。需要說明的是,第二層之後的特徵圖數量較多,因此每層只選取了64個進行可視化。另外,特徵圖是單通道的灰度圖片,爲了可視化的效果更好,我將灰度值映射到了“藍-黃”的顏色區間內,進行了僞彩色的處理,得到了如下的可視化結果。

其中,第一層特徵圖的細節比較清晰和輸入圖片較爲相似,提取出了輸入圖片的邊緣(包括刺蝟身上的刺)。第2、3、4層特徵圖的分辨率較低,已經難以看出輸入圖片的特徵,但是可以發現有些特徵圖對背刺區域激活顯著,有些特徵圖對刺蝟的外輪廓、背景等區域激活顯著。可以猜測,它們提取了圖片中比邊緣和角點更高層的語義信息。最後一層特徵圖中有少量對背刺區域激活顯著,少量幾乎沒有被激活。可以猜測,刺蝟的背刺特徵是網絡判斷其類別的顯著特徵,因此被分類爲刺蝟的圖片在最後一個特徵層的背刺區域激活最爲明顯。
這裏寫圖片描述
這裏寫圖片描述

 【對比分析】
由於篇幅限制,這裏只放置較小的略縮圖,高清圖片可以運行程序自行查看。

我們先對比最清晰的第一層特徵圖的可視化結果。
可以看出除了縮放的圖片以外,其他特徵圖都隨着輸入圖片的變化而變化:平移的圖片作爲輸入,特徵圖也產生了相對的平移;翻轉、旋轉都有類似的效果。只有縮放的輸入圖片並不影響特徵圖的表現,其原因應該是VGG-f採用固定大小的輸入數據,因此不論圖片是否經過縮放,在輸入VGG-f之前都會被歸一化爲同樣的大小,所以直觀上看並不影響特徵圖的表現。但是由於分辨率的不同,經過resize之後的圖片可能會有像素級別的細微差異,人眼不容易分辨出來。

從另一方面來說,雖然特徵圖對於輸入圖片的變換產生了相同的變換,但是特徵圖中的激活區域並沒有顯著的變化。這說明VGG-f在圖片分類的任務中,對輸入圖片的大小、旋轉、翻轉、平移等變化是不敏感的,並不會顯著影響其分類結果的準確性。也說明了CNN網絡具有一定程度的旋轉/平移不變性。
這裏寫圖片描述
這裏寫圖片描述
與第一層特徵圖類似,其他層的特徵圖也產生了類似的表現,即除了縮放的圖片以外,其他作用於輸入圖片的變換均體現在了特徵圖上。由於篇幅所限,這裏不再單獨放出。運行程序即可得到結果。

附上程序下載鏈接:https://download.csdn.net/download/jsgaobiao/10422273

VGG-f網絡結構圖

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