『高性能模型』卷積網絡可視化與理解


『cs231n』卷積神經網絡的可視化與進一步理解

一、反卷積可視化

這是一篇14年的老文章:Visualizing and Understanding Convolutional Networks,文中針對的模型為12年的 AlexNet,從可視化的角度對卷積神經網絡的理解提出了一個新的視角。

作者可視化卷積網絡的手段為添加新的反卷積模塊,如下圖所示:

將感興趣層的卷積網絡輸出的特征中選取一個激活單元(一般取最大的),特征中其他單元全部置零,送入一個等效的反卷積網絡,還原輸出大小。

1、反向池化

網上找到的示意圖,出處見水印,展示了反最大池化的流程。

2、反激活

relu 函數的反向仍為 relu 函數,各個框架反向傳播的實現也確實是這么寫的。

3、反卷積

反卷積實現邏輯如上圖(出處見水印),不過本文種描述的方法是將對應層的卷積核轉置即可,和印象中的處理不太一致,不過這不是本文重點,我們只要知道這里可以還原卷積即可,權且略過,轉置卷積邏輯見:『TensotFlow』轉置卷積

二、可視化分析

作者首先對比了不同 layer 提取到的特征:

作者給我們顯示了在網絡訓練過程中每一層學習到的特征是怎么變化的,上面每一整張圖片是網絡的某一層特征圖,然后每一行有8個小圖片,分別表示網絡epochs次數為:1、2、5、10、20、30、40、64的特征圖 :

(1) 從層與層之間做比較,我們可以看到,低層在訓練的過程中基本沒啥變化,比較容易收斂,高層的特征學習則變化很大,收斂需要較多輪數

(2) 從高層網絡conv5的變化過程,我們可以看到,剛開始幾次的迭代,基本變化不是很大,但是到了40~50的迭代的時候,變化很大,說明高層會在高輪數后快速收斂(訓練時不要心急233)

然后討論了不同層 layer 提取特征的不變性:

上圖解釋:

第一列表示原圖的各種變換(a為平移,b為放縮,c為旋轉)
第二列表示layer1層特征在原圖變換前后的像素歐式距離,橫坐標為平移像素距離/放縮倍數/旋轉角度
第三列表示layer5層特征的變換前后像素間歐式距離
第四列表示真實類別的得分變化情況

作者希望說明底層特征對原圖的變換很敏感 高層特征對原圖的某些變換並不敏感,平移變換和放縮變換時高層特征歐式距離變化近似線性 卷積神經網絡對平移和放縮不變性較好,但是除了特定圖片(本身形狀特殊)外,旋轉對網絡影響很大。

再之后作者探討了圖像特定位置對分類的貢獻:

 

上圖解釋:

第一列表示原圖及遮擋示意圖 
第二列表示遮擋中心所在不同位置時layer5最大激活值變化 
第三列簡單的可視化layer5的最大激活值 
第四列表示遮擋中心所在不同位置時真實類別得分的變化 
第五列表示遮擋中心所在不同位置時最高得分類別的變換

這里面我們需要注意,layer5 並不是最高層,也就是 layer5 和 classifier 之間還有其他的高層語義信息存儲層。

對於第一行:

c圖可見layer5特征主要針對狗頭
b圖可見遮擋住狗頭,那么layer5的激活單元最大值會明顯降低
d圖可見遮擋住狗頭,分類為狗的得分會明顯降低
e圖可見遮擋其他位置最高得分都是分類為狗,但是遮擋住狗頭后最高得分為網球

對於第二行:

c圖可見layer5特征主要針對車身標語
b圖可見遮擋住車身標語,那么layer5的激活單元最大值會明顯降低
d圖可見遮擋住車輪,分類為車輪的得分會明顯降低
e圖可見分類為車輪這一決定是很脆弱的,隨隨便便就會分給其他類別

對於第三行:

c圖可見layer5特征主要針對人臉
b圖可見遮擋住人臉,那么layer5的激活單元最大值會明顯降低
d圖可見遮擋住狗,分類為狗的得分會明顯降低
e圖可見雖然layer5特征針對人臉,但是分類器很好的學到了狗的特征,只要不遮擋住狗,分類器可以很好的識別出狗的類別(由標簽可見這是一個單獨識別狗種類的數據集,所以人臉特征沒什么干擾)

進一步的驗證 layer5 和 最終 layer7 的特征信息實驗如下:

狗種類隨機遮擋分類實驗,layer5 在遮擋眼睛或鼻子后激活值相比隨機遮擋下降明顯,layer7則沒什么變化,由此推測:layer5較為具體的檢測狗頭,layer7更側重抽象的狗類別信息。

由於是篇老文,我感覺本文的很多部分(包括指導設計更高效網絡的部分)對當下已經沒什么參考意義了(誰知道15、16年分類網絡精度上天了),所以僅將我覺得對當下比較有學習價值的部分展示出來,從側面一窺黑箱里的秘密。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM