2014 ECCV
紐約大學 Matthew D. Zeiler, Rob Fergus
簡單介紹(What)
- 提出了一種可視化的技巧,能夠看到CNN中間層的特征功能和分類操作。
- 通過對這些可視化信息進行分析,我們可以
- 直觀了解和分析CNN學到的特征(中間層特征對應什么樣的圖像)
- 可以找到提升模型的辦法(觀察中間層特征,分析模型可以改進的地方)
- 分析CNN的遮掩敏感性(遮住某一塊區域后對分類結果的影響)
- 這種可視化技巧主要用到反卷積的技術,把中間層的激活特征映射回輸入空間。
論文動機(Why)
- 雖然CNN在圖像任務上取得了優秀的表現,但是看不到CNN的內部操作和復雜模型的表現行為,不清楚它們為何會取得這么好的效果。
- 在科學的角度上,這是不能接收的,沒有清晰地理解CNN是如何工作以及為什么這樣運作,那么它的發展和進步就只能靠不斷地“試錯”。
- 所以論文提出了可視化的技巧,可以觀察到訓練過程中特征的演化和影響,可以分析模型潛在的問題。
怎么做的(How)
- 論文的網絡結構和alexNet很類似,做了一些改動,比如stride變成2,11x11的卷積核變成7x7的卷積核。
- 為了把中間層的激活塊映射回輸入空間,使用了反卷積的技術,如下圖所示,右邊是卷積網,左邊是反卷積網。
- 反池化:由於池化操作不可逆,使用了一個近似可逆的方法,用Switches記錄每個池化塊最大值的位置,如下圖所示,這樣就可以利用Switches和池化后的特征圖,反池化成Unpooled Maps
- relu:反池化后,為了獲得有效的特征重建,也使用relu,得到Rectified Unpooled Maps
- 反卷積:用原來卷積核的轉置版本,進行卷積操作,得到重建的Reconstruction
特征可視化
- 下圖是對ImageNet訓練完成后,在驗證集數據進行反卷積得到的各層的可視化結果。
- 對於某個給定的feature map,在數據集上選取激活值最強的9張圖,畫成一個九宮格。把它們映射回輸入空間后可以看到不同結構的重建特征圖(灰色的那些圖),以及這些特征圖對應圖像塊(那些彩色圖)。
- 可以看到彩色圖的變化比灰色圖更大,因為灰色圖是集中於給出那些具有區分性的信息。
- 可以看到每一層似乎在學習不同的東西,第二層學習邊緣,角落信息;第三層學到了一些比較復雜的模式,網狀,輪胎;第四層展示了一些比較明顯的變化,但是與類別更加相關了,比如狗臉,鳥腿;第五層則看到了整個物體,比如鍵盤,狗。
訓練過程的特征演化
- 下圖是隨着訓練的迭代,特征圖的變化,每一層里面的8列表示不同epoch時的特征圖。
- 列出的特征圖是,對於該層的某個feature map,在所有訓練集中激活最強的那個樣本的feature map。
- 可以看到,低層的特征圖收斂地比較快,而高層的特征圖要到后面的epoch才開始變動。
幫助提升模型
- 通過可視化可以看到alexNet模型中第一層和第二層(下圖中的b和d)存在一些問題,比如第二層有一些重疊和混亂
- 通過把第一層的11x11卷積核變成7x7,然后stride從4變成2,得到的結果如圖c和e所示,得到了更多的獨特的特征。
- 這樣的改動也提升了模型的效果。
遮擋敏感性
- 如下圖所示,以第一張小狗圖為例,b圖表示第5層激活最強的feature map,每個位置的顏色表示那個位置被遮擋后的激活,可以看到遮住狗臉后,激活值最低,也就是藍色那塊區域,說明遮擋對模型有影響。
- c圖表示被遮住不同區域后,第5層激活最強的feature map,第一個圖表示遮住狗臉后的。
- d圖中每個位置的顏色表示那個位置被遮擋后,正確類別的概率。可以看到遮住狗臉后,概率很低,藍色那一塊,說明遮擋對模型有影響。
- e圖中每個位置的顏色表示那個位置被遮擋后,最可能的標簽,可以看到如果遮擋其它區域,模型都能識別出為博美犬,但是如果遮住了狗臉,而不遮住球,模型就會將樣本分類為球。
- 這展示了模型的遮擋敏感性,模型確實學到了物體的位置,而不是說只學到物體的環境上下文。
實驗
- 基於可視化后對AlexNet模型進行了修改,提升了表現,說明可以通過可視化的技巧分析和改善模型。
- 對模型(alextNet以及自己修改后的模型)進行刪除層,修改層神經元大小,對比實驗結果,觀察變化。
- 把ImageNet訓練好的模型用於Caltech-101,Caltech-256和PASCAL 2012數據集的訓練,發現ImageNet預訓練過的模型表現要(比沒預訓練過的)好很多,而且擊敗了一些前人的工作,說明了CNN提取的特征的泛化能力,以及ImageNet特征的強大。
- 通過逐漸提升(預訓練模型中保留的)層數(比如1層,2層,3層升到7層),把這些特征送到SVM和softmax中去分類,得到的結果對比,發現層數越深,學到的特征越有用。
總結
- 提出了一種可視化CNN的方法,說明了內部特征並不是隨機的,是可以解釋的。
- 通過可視化CNN了解到了一些直覺上的特性,比如隨着增加層數,類別的可區分度越高,特征越有用。
- 通過可視化CNN可以對模型進行分析和改善。
- 通過可視化CNN的遮蔽實驗,發現模型對局部結構是敏感的,並不是只用到了廣闊的場景信息。
- 展示了ImageNet的預訓練模型可以很好地泛化到其它數據集。