【CV+DL學習路02】CNN視覺化學習2——Visualizing and Understanding Convolutional Networks
第二篇論文記錄,對於第一次搜尋文獻的本小白和為圖偷懶第一篇論文直接看的翻譯的本童鞋來說,真的是。。。。做科研不能偷懶,不然後面是真有點麻煩,在經過了三天的谷歌加百度加CSDN下載了10多篇文章不知道先看那一篇之後,我終於確定了要看的第二篇和第三篇論文。。。。也是無語了
這篇論文這是我繼Learning Deep Features for Discriminative Localization之後看的有關視覺化的第二篇論文,來自ECCV 2014的論文。
Visualizing and Understanding Convolutional Networks ECCV 2014
論文翻譯稍後會新寫一篇放上來,
網上有很多的閱讀筆記,對我理解論文起了很大幫助。閱讀筆記1、閱讀筆記2、閱讀筆記3、閱讀筆記4
一、介紹
這篇論文算是視覺化CNN的開篇之作,形成了很多對卷積神經網路的普遍認識。文章主要講了兩個問題:1)為什麼卷積網路表現這麼好;2)如何提升網路的表現
文章介紹了利用反捲積視覺化技術可以深入觀察中間特徵層函式的作用以及分類器的行為。並在Imagenet分類資料集上做了更進一步的研究,發現了不同層對結果的影響。當softmax分類器重訓練後,AlexNet在Imagenet資料集上的結果可以很好地泛化到其他資料集。
論文使用是有監督的預訓練方式,對AlexNet模型進行視覺化,並逐步探索了其他不同模型的體系結構,發現他們的效能優於Imagenet上的結果。文章還探索了不同資料集上模型的泛化能力,僅依靠重訓練softmax層。使用的視覺化方法是Zeiler在2011年提出的多層的反捲積網路,把特徵啟用映射回輸入畫素的空間。作者還進行了一項研究,通過遮擋輸入影象的一部分,來說明哪一部分是對分類最有影響的。
2、方法
訓練過程:
論文使用AlexNet模型,模型結構為:對前一層的輸入進行卷積-> relu -> max pooling(可選) -> 區域性對比操作(可選) -> 全連線層 -> softmax分類器。
我們使用大量個標記影象來訓練這些模型,其中標籤是指示真實類別的離散變數。交叉熵損失函式適用於影象分類,比較和。通過隨機梯度下降演算法更新引數(卷積層中的濾波器,完全連線層中的權重矩陣和偏差)來訓練模型。
2.1、反捲積視覺化:
一個反捲積被認為是一個使用相同元件(過濾,池化)但相反的卷積模型,所以不是將畫素對映到要素而是相反。輸入是feature map,輸出是影象畫素。
首先,將輸入影象呈現給卷積,並在整個圖層中計算特徵。為了檢查給定的卷積啟用,我們將圖層中的所有其他啟用設定為零,並將該功能圖作為輸入傳遞給附加的反捲積層。然後通過(i)反池化,(ii)Relu非線性糾正和(iii)卷積濾波三步,重新構建所選啟用下的圖層中的活動。然後重複此操作直至達到輸入畫素空間。
反池化:嚴格意義上的反池化是無法實現的,但是我們可以通過在一組開關變數中記錄每個池區中最大值的位置來獲得近似的實現。在訓練過程中記錄每一個池化操作輸入最大值的位置,這樣在反池化的時候,就將最大值返回到其應該在的位置,其他位置的值補0。
Relu非線性糾正:卷積神經網路使用relu非線性函式來保證輸出的feature map總是為正數。在反捲積的時候,也需要保證每一層的feature map都是正值,所以這裡還是使用relu作為非線性啟用函式。
卷積濾波:網路使用學習過的濾波器來卷積上一層的特徵對映。反捲積使用相同過濾器的轉置版本,與矯正之後的特徵進行卷積,從而實現反捲積。
具體實現過程如下圖所示:
頂部:一個反捲積層(左側)連線一個卷積層(右側)。反捲積層將從下面的圖層中重建一個大致的卷積特徵版本。底部:在反捲積中使用交換機進行反池化操作的示意圖,該交換機記錄了在卷積中進行池化期間每個池區中的本地max(彩色區域)的位置。
3、訓練細節
網路結構類似於AlexNet,有兩點不同,一是將3,4,5層的稀疏連線變成了緊密連線,二是第一層卷積核的大小11*11->7*7。
模型的資料集是ImageNet 2012訓練集。對影象進行了一些預處理。
資料集。模型使用的資料集是ImageNet 2012 training set (130萬張照片, 1000個種類),將最小尺寸調整為256,裁剪中心256x256區域,減去每畫素平均值(橫跨所有影象),然後使用10個不同尺寸為224x224的子影象(角落+中心與水平(外))預處理每個RGB影象FL IPS)。通過使用隨機梯度下降,最小批量為128,用於更新引數。
訓練。初始學習率0.01,使用SGD隨機梯度下降法,最小樣本數為128,結合動量項為0.9,當驗證錯誤平穩時對學習速率進行調節,在全連線層(6和7)我們使用dropout(速度為0.5)。所有權重初始化為0.01,偏差設定為0。
訓練過程中第一層過濾器的視覺化表明他們中有一些占主導地位。為了解決這個問題,我們將RMS值超過固定半徑的卷積層中的每個濾波器重新歸一化到這個固定的半徑。 這是至關重要的,特別是在模型的第一層,輸入影象大致在範圍內。正如AlexNet模型那樣,我們在每個訓練樣例中生成多個的子影象來提高訓練集的大小。
4、卷積網路視覺化(Convnet Visualization)
特徵視覺化:通過對各層卷積核學習到的特徵進行視覺化發現神經網路學習到的特徵存在層級結構。如下圖。第二層是學習到邊緣和角點檢測器,第三層學習到了一些紋理特徵,第四層學習到了對於指定類別影象的一些不變性的特徵,例如狗臉、鳥腿,第五層得到了目標更顯著的特徵並且獲取了位置變化資訊。
訓練過程中的特徵演化:低層特徵經過較少epoch的訓練過程之後就學習的比較穩定了,層數越高越需要更多的epoch進行訓練。因此需要足夠多的epoch過程來保證順利的模型收斂。前面層變化更快,後面層收斂慢。
特徵不變性:探究特徵不變性的實驗。對影象進行平移、放大和旋轉的操作,觀察特徵對映的變化。實驗證明,第一層對於影象變化非常敏感,第七層就接近於線性變化了,最後的輸出變化就相對較小了。CNN模型具有平移和縮放不變性,並且層數越高不變性越強。但是不具有旋轉不變性。對影象的平移和縮放具有較強的魯棒性,但旋轉操作對CNN的特徵對映影響較大。
4.1特徵結構選擇:
作者通過視覺化AlexNet第一層和第二層的特徵,發現比較大的步長和卷積核提取的特徵不理想,所以作者將第一層的卷積核從11*11減小到7*7,將步長從4減小到2,實驗說明,這樣有助於分類效能的提升。
4.2遮擋實驗:
遮擋實驗對模型的部分割槽域進行遮擋,從而證明模型是真的定位出了影象中的物件,而不是依靠其周圍環境進行分類。影象的關鍵區域被遮擋之後對分類效能有很大的影響。
4.3一致性分析:
不同影象的指定目標區域性塊之間是否存在一致性的關聯,作者認為深度模型可能隱含的學習到了這種關聯關係。作者通過對五張不同的狗的影象進行區域性遮擋,然後分析原圖和遮擋後的影象的特徵之間的漢明距離的和值,值越小說明一致性越大。實驗表明,對不同的狗的影象遮擋左眼、右眼和鼻子之後的漢明距離小於隨機遮擋,證明存在一定的關聯性。
5、實驗
5.1ImageNet 2012
實驗使用的資料集是ImageNet 2012訓練集,驗證集和測試集。作者首先實現AlexNet在ImageNet上的結果,然後使用4.1中改變後的模型進行實驗,證明效果比原模型要好。
調整模型大小:改變AlexNet模型的結構,測試對結果的影響。結果證明模型的深度會對分類準確度有很大影響。改變全連線層的大小或移除之對結果影響不大,增加中建卷積層的大小會提高效能,但卷積層過大又會導致過擬合。
5.2.特徵泛化(FeatureGeneralization)
這部分用了兩種方法,第一種是1-7層不變,只改變softmax層的類別數。第二種方法是從頭開始訓練網路,所有引數都重新訓練。
在Caltech-101資料集上,第一種方法效能很好(86.5%),第二種方法效果很不好(46.5%)。
在Caltech-256資料集上,和101的結論一樣。使用第一種方法的預訓練模型,只使用6張影象的分類效能就超過了使用60張影象的當時最好的結果。
使用PASCAL 2012資料集,結果有一些變化。在ImageNet預訓練網路頂部訓練20類softmax。結果並不理想,可能是因為PASCAL影象是一個完整的場景,影象中有很多不同類的物件,而我們的模型僅為每個影象提供一個單獨的預測。我們的平均表現比領先的結果低3.2%,但是我們確實在5類的結果上擊敗了他們,有時甚至大幅度上漲。
5.3.特徵分析(Feature Analysis)
這部分研究Imagenet預訓練模型在每一層是如何區分特徵的。試驗方法是改變ImageNet模型中的層數,並將線性SVM或softmax分類器置於頂層。下表顯示了Caltech101和Caltech-256的結果。對於這兩個資料集,隨著我們提升模型,可以看到一個穩定的改進,使用所有層可以獲得最佳結果。說明,隨著特徵層次越來越深,網路將學習越來越強大的特徵。
6.討論(Discussion)與結論
論文提出了一種新穎的方式(Deconvolution)來視覺化模型中的活動。然後,通過一系列的實驗,展示瞭如何使用這些視覺化來除錯模型的問題以獲得更好的結果。對該模型的進一步研究表明,對網路而言,具有最小的深度而不是任何單獨的部分對模型的效能至關重要。
這篇論文我最大的收穫是反捲積,不過實驗部分幫助讀者更好的理解了深度神經網路。