Visualizing and Understanding Convolutional Networks
一.abstract
本篇論文是可視化卷積神經網路的開山始祖,作者是卷積網路的發明者Yann Lecun的得意門生Matthew Zeiler,主要藉由提出來的可視化方法優化Alexnet網路,文中結果表示經過修改後的網路在勝過原始Alex網路1.7%(single model,test-top5),應用本文提供的方法可以很清楚的看出每一層到底學了什麼特徵,同時本篇論文也是2013年Imagenet分類任務的冠軍,是很值得學習的一篇文章。
二.main idea
文中說提出的方法很類似於[1],不同之處在於那篇文章是從全連接層去做映射,而此文章從卷積核去做映射。
底下為架構一個卷積神經網路的經典順序:
Input(pic) -> conv -> relu -> maxpool
而反卷積網路就將以上動作反著做以求出卷積核對圖片的哪些部分擁有最大激發值
Input(pic) -> conv -> relu -> maxpool -> unpool -> unrelu -> deconv
unpool:
學過卷積網路池化層的都知道,要還原池化層是不可能的事,因此這裡只能做大概還原的動作,如下圖所示是一個3x3卷積核的池化層,還原的時候就只有傳遞到當初最大激發值得那個位置,其他地方就通通設置為0
unrelu:
文中提出relu這個激發函數是為了讓網路都保持正值,因此反激活也是一樣,確保讓網路保持正值就行了,所以relu = unrelu
deconv:
反卷積部分也很簡單,只要將卷積核上下顛倒、左右相反,然後再對unrelu map做一個卷積的動作就可以得到和原始輸入圖片相同大小的圖
三.structure
下圖為本文所更改的網路,不同的地方有兩個,第一點,作者將第一層的卷積核從1111改成77,第二點,作者將第一層第二層網路的stride由4改成2
作者經由可視化把卷積核所學到的特徵顯現出來,b、d圖是原始Alexnet網路的第一、二層,c、e圖是更改後的Alexnet網路所學到的特徵,從b和c圖比較可以發現,b圖中存在很多無效的濾波器(dead filter),相對的c圖就較少,d和e圖的比較結果中也可以看出同樣的效果
作者還經由可視化證明出隨著訓練次數的變多,特徵就會越來越明顯。每一列代表不同卷積核,每一行代表訓練的不同次
數(epoch),分別是[1,2,5,10,20,30,40,64]
四.result
五.reference
1.Deep Inside Convolutional Networks: Visualising Image Classification Models and Saliency Maps
2.Adaptive Deconvolutional Networks for Mid and High Level Feature Learning(Deconv network)
3.https://github.com/guruucsd/CNN_visualization
4.http://nbviewer.jupyter.org/github/guruucsd/CNN_visualization/blob/master/urban_tribe/caffe/deconv_demo.ipynb
5.https://www.zybuluo.com/lutingting/note/459569
6.https://github.com/kvfrans/feature-visualization
7.https://github.com/mcogswell/cnn_treevis
8.http://mcogswell.io/blog/why_cat_2/
留言列表