tictoc正方形网络模型_反卷积:可视化并理解卷积网络
可視化與理解卷積網絡的探討
卷積網絡模型自問世以來,對AI技術的發展起了很大的推動作用。但其復雜的模型結構,龐大的參數規模也給模型優化帶來很多問題。如果問某個參數的值問什么是3而不是6,很難得到有根據的回答。發表于2013年11月的論文《Visualizing and Understanding Convolutional Networks》系統展示了如何可視化卷積網絡,并根據可視化后觀察到的現象優化模型取得更好識別結果。本文根據個人的理解,對論文闡述的方法和實踐作粗淺總結。
問題的提出
Convolutional Networks卷積網絡由LeCun等于1989年提出,并在手寫數字的識別上展示出其優異性能。在過去18個月(論文發表時)在圖像分類任務應用上也取得出色表現。在ImageNet 2012 上,Krizhevsky使用卷積網絡降低到16.4%的錯誤率,而第二名的錯誤率達到26.1%。盡管取得了很多進展,仍然對復雜的卷積模型的內部操作缺乏了解,也不能明確是如何取得好的表現。如果不理解它們如何工作和為什么有效,也就意味著開發更好的模型需要更多多的試錯。
針對這個問題,文中所做的研究包括
1.對每一層模型的輸入特征,觀察訓練過程中特征的演化。作者使用了Zeiler2011提出的多層反卷積網絡,投射出輸入層的像素空間。
2.進行敏感性分析,即通過遮蓋圖像的部分區域,找到圖像的哪個部分是對分類結果是重要的。
通過這些研究,從Krizhevsky的模型架構開始優化,發現在ImageNet上更好表現的模型。
相關工作:
可視化,可視化化特征可以得到對網絡的直覺,一般都只在第一層的圖像,更高層的可視化非常復雜,簡單的二次近似很難做到。
特征泛化,作者演示了卷積網絡如何用于Caltech101的圖像分類和PASCAL VOC的對象識別。
解決方法
作者在文中所使用的方式有:
卷積模型是LeCun等人定義,通過不同卷積層映射2維圖像,最后的結果向量預測y值。
每一層的組成:
上一層輸出
激活函數,通常為(relu(x)=max(x,0))
最大池化
局部對比度標準化
訓練模型使用了大量標注過標簽的圖片,得到的訓練結果是圖片類別標簽,交叉熵用于評估結果的誤差損失。訓練過程中需要優化的網絡模型參數包括卷積層的卷積核參數、全聯接層的權重weight與偏置bias,每次訓練迭代后通過損失的反向傳播更新這些參數。
1.通過反卷積網絡可視化,可以理解中間層的卷積操作發生了什么。反卷積網絡使用了卷積模型相同的組件(激活,池化),但是相反的方向。通過在每一層卷積層關聯反卷積網絡,提供了一直回溯到圖片像素的路徑。為了檢驗卷積的某個激活,把這個層上其它激活置為0,并輸入到反卷積層,然后不斷反池化,反激活,反卷積直到輸入的像素空間。
- 反池化:卷積操作中的最大池化是不可逆的,然而我們可以通過記錄一組開關變量的每個池化區域的最大值得到近似反向值。
- 反激活:卷積網絡使用relu非線性激活函數,保證特征映射到正值,重建的特征也需要是保證正值,所以也使用了relu非線性激活函數。
- 反卷積:卷積網絡學習過的過濾器卷積每一層的特征。為了近似反向操作,反卷積網絡使用正向操作相同過濾器但經過轉置操作,通過開關設置逐漸還原原始圖像的一小片區域
這張圖顯示了作者實現卷積可視化的整體結構,右邊是正向的卷積訓練,左邊是反卷積重建。可以看到右邊輸入圖片的不同區域卷積之后,在左邊經過反卷積重建出圖片。
訓練細節
作者訓練所使用的模型架構如下:
整個卷積模型分為8層。輸入層是邊長224*224的RGB正方形圖片,第一層的卷積核共有96個,每個大小是7*7,x和y方向的步長都是2.結果特征圖會經過:ReLU激活,3*3的最大池化,對比度標準化。同樣的操作在2,3,4,5層重復。最后2層全聯接層,輸入向量為6*6*256=9216個維度,最終通過C-way softmax輸出結果。
于Krizhevsky的訓練模型相比,作者在3,4,5層使用了稠密連接而不是稀疏連接,第1,2層過濾器和步長也有所不同。每個批次訓練128次,學習率是0.01,權重初始化為0.01,偏置設置為0.
卷積可視化
在使用以上模型的同時,我們使用反卷積可視化在ImageNet驗證數據集上的特征激活。
特征可視化
對每個特征圖,作者挑選了9個激活區域,每個對應像素空間的不同區域。從中可以觀察到不同區域對激活的影響。
文中所舉例說明,紅色框內的圖片顯示原始圖中的草地對激活影響更大,而不是草地前的待識別對象。
模型中 每一層的映射也顯示出被識別對象的特性層次。如第2層反映出角和其它邊/顏色的交匯,第3層捕捉到紋理模式,第4層顯示了狗的臉或鳥的腿,第5層 就顯示出整個物體,如鍵盤,狗等。。
訓練過程中的特征演化
通過可視化和觀察訓練過程中的特征圖變化,在模型靠前層少數幾個epoch,而靠后的層需要比較多的epoch(40-50)才會充分匯集特征。
架構選擇
通過可視化預訓練模型的內部操作,可以幫助選擇更好的模型架構。作者通過可視化Krizhevsky所用模型的第1,2 層,發現了不同問題。第1層 混合了特別高頻和低頻的信息 ,同時覆蓋了部分 中頻信息。(這里的高頻低頻是指圖像中灰度變化劇烈程度的指標)
第2層的可視化表現出鋸齒假影,是由第一層卷積采用較大的4步長有關。為了解決這些問題,作者采取以下措施:1,把第一層的卷積核從11*11改為7*7; 2,把步長從4改為2。
新的架構在訓練中保留了更多信息,也在改進了分類結果的表現。
作者對CNN網絡內中間特征和分類操作提供了一種新的可視化方法,研究了不同模型層對模型表現的貢獻。優化之后的模型架構,也表現出較好的泛化能力。作者就對ImageNet訓練后,在Caltech-101 and Caltech-256上也取得了較好的效果。
遮蓋敏感度
在圖片分類中,一個基本問題是模型是否真正的識別了目標對象,還是用背景環境做出的判斷。為了找到答案,文中使用灰色方塊遮蓋了圖片中的不同位置,然后觀察輸出的分類。如果遮住識別對象后分類成功率下降,說明模型實在使用正確的識別對象。
實驗對比
作者分別使用了2個模型,一個是Krizhevsky在論文《ImageNet Classification with Deep Convolutional
Neural Networks》中所使用的
一個是作者設計的模型,在前面訓練細節中有描述。然后分別使用可視化卷積方法后優化調整模型的的對應參數,都取得了明顯改進。
另外,為了檢驗模型的泛化能力,作者把ImageNet數據集訓練過的模型到Caltech256上測試。測試之前先把每個類別中的6個樣本做了訓練,并在測試集合上取得較好的結果。
延伸閱讀
作者開創性的使用反卷積模型觀察和優化卷積模型的表現,Arxiv上顯示被引用次數高達9576,可見對卷積模型的應用和發展產生巨大影響。例如這篇《ImageNet Classification with Deep Convolutional Neural Networks》,嘗試把反卷積模型接在正向卷積模型之后,在還原出的圖片上做分段標注,改進了原來只用正向卷積模型無法 識別圖片中較小對象的問題。
Visualizing and Understanding Convolutional Networks:
ImageNet Classification with Deep Convolutional Neural Networks:
https://papers.nips.cc/paper/4824-imagenet-classification-with-deep-convolutional-neural-networks.pdf?papers.nips.cc文中所提到的數據說明:
Caltech101 這個數據集包含了101類的圖像,每類大約有40~800張圖像,大部分是50張/類; 在2003年由lifeifei收集,每張圖像的大小大約是300x200。
Caltech256 共 30607 張圖片,256個分類,其中 29 個分類與Caltech-101重合.
ImageNet項目是一個大型視覺數據庫,用于視覺目標識別軟件研究。該項目已手動注釋了1400多萬張圖像,以指出圖片中的對象,并在至少100萬張圖像中提供了邊框。ImageNet包含2萬多個典型類別,例如“氣球”或“草莓”,每一類包含數百張圖像。
總結
以上是生活随笔為你收集整理的tictoc正方形网络模型_反卷积:可视化并理解卷积网络的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c++读取图片_手工计算神经网络第三期:
- 下一篇: supervisor nginx_Sup