天天看點

CNN基礎論文 精讀+複現----ZFnet(一)

文章目錄

  • ​​前言​​
  • ​​第1頁​​
  • ​​第2-3頁​​
  • ​​反池化:​​
  • ​​反激活:​​
  • ​​反卷積:​​
  • ​​第3-4頁​​
  • ​​Layer 1​​
  • ​​Layer 2:​​
  • ​​Layer 3、 Layer 4、 Layer 5:​​

前言

原文下載下傳位址:​​https://arxiv.org/pdf/1311.2901.pdf​​

前幾天看的VGG,今天搞一下ZFnet吧,按照順序應該是 Alexnet然後 ZFnet,之後再VGG的。不過都一樣,ZF裡有個反卷積我還挺想看看是咋回事的。

簡單介紹一下這個論文,ZFnet(Matthew Zeiler和Rob Fergus)是2013 年 ILSVRC 圖像分類的冠軍,ZFnet是在Alexnet(2012)上做的改進(前兩天看的VGG也是Alex上的修改,看來Alex有點強啊,不過這篇也很強,卷積可視化領域鼻祖~)。

是以先看一下Alex再看這個會比較輕松。

​​CNN基礎論文 精讀+複現----AlexNet(一)​​

論文标題:Visualizing and Understanding Convolutional Networks(可視化并了解卷積神經網絡)

第1頁

開頭的摘要就直接提出了這篇論文的中心 找到了一種​

​很巧妙的可視化網絡中間層特征的方法​

​。使用這個技巧就打破了在此之前的卷積操作的黑箱,然後利用它改進之前的網絡(比如Alexnet)。

摘要中有個單詞 ​

​ablation​

​ 翻譯成消融的意思,我還挺費解消融研究是個啥意思,查了查資料,就是 對比試驗 的意思。。。

摘要的最後作者說 改進之後的網絡模型有很好的 泛化能力 ,既 遷移學習能力(僅改變最後一層的softmax分類器) 并在Caltech-101和Caltech-256資料集上表現很好。

引言部分提出了我們常說的深度學習三大馬車:

  • 更大規模的資料集
  • 更強的GPU
  • 更好的正則化政策

之後說明了作者在提出的可視化過程叫做 反卷積 Deconvo-lutional Network (deconvnet)。

第2-3頁

1.1說了一些有的沒的,從第二章就開始介紹可視化方法-反卷積了。

首先構造正常的網絡,就還是Alexnet那一套,卷積+Relu+池化+随機梯度下降+反向傳播,然後進行正常的卷積操作,我們想看某一層的可視化結果,就指定該層的 feature map不為0,其餘的全設為0。然後反向傳回到輸入(不是梯度的那個反向傳播)。

是以 :

正常的是 : 卷積 -> Relu -> 池化

回傳: 反池化 -> 反Relu -> 反卷積

反池化:

反池化就是正常池化的反向操作,在Alex裡采用的是最大池化操作。

在正常的最大池化中,提取某一個小區域的最大值作為結果,像下面這樣:

CNN基礎論文 精讀+複現----ZFnet(一)

可以發現,在正常操作時,假設現在操作的是紅色區域,就是最後一個四方塊格子的時候,裡面的最大值是0.5。

當進行反池化操作時,我們隻知道 0.5這個最大值,對于其他的 -0.1,-0.2,0.3這三個元素則不可避免的丢失。

論文中作者使用了一個方法,在正向最大池化操作時,提取出最大值的同時記錄了該最大值在原矩陣中的位置,這個操作稱為 switches。 什麼?switch?突然不想學了

反向操作回去:

除了最大值之外的其他元素不可避免的丢失,像下面這樣:

CNN基礎論文 精讀+複現----ZFnet(一)

是以反池化并沒有真正意義上的完全還原,隻是一種近似而已。

反激活:

反激活函數,像上面那樣反着推一邊Relu嗎?并不是i,而是繼續使用一邊Relu函數,看一下Relu公式就明白了 f(x) = max(0,x),在正向卷積層中,利用relu這一非線性函數來校正feature maps,使得特征值均為正值,是以根據公式,再用一下Relu就好了。

反卷積:

在正常卷積中,用卷積核和原像素中的視窗點進行相乘再相加,反向卷積過程也是如此,隻不過反卷積中的卷積核使用的是原卷積核的轉置,就是線性代數裡的那個矩陣轉置的轉置。

卷積過程:

下面藍色為輸入,上面綠色為輸出

CNN基礎論文 精讀+複現----ZFnet(一)

反卷積過程:

下面藍色為輸入,上面綠色為輸出

CNN基礎論文 精讀+複現----ZFnet(一)

這一系列的反操作并不是樣本圖像,也沒有生成新的圖像,就是一個中間層的投影得到的。

第3-4頁

第三章訓練細節,使用的也是ImageNet資料集,整體和Alexnet很像。不同點是,Alex将整個資料集放到了兩塊GPU上,而ZFnet沒用兩塊。

其他的 資料預處理、資料增強、優化器、各種超參數、正則化dropout等 都和Alexnet一樣,就不說了。

第四章就是論文的重點了–可視化。

第四頁一堆圖,直接拿出來說。

Layer 1

可以看到 經過第一層卷積,上面小九宮格(卷積核)的每一個都對應後面九個格子(原圖中的top-9)。

既能使上面9個卷積核Feature Map中的數值最大的原圖top-9。

CNN基礎論文 精讀+複現----ZFnet(一)

Layer 2:

左邊的圖是第二層卷積核得到的特征圖通過 反卷積 deconvnet之後映射回原像素空間可視化得到的圖像。

CNN基礎論文 精讀+複現----ZFnet(一)

是以在這裡可以明白,這篇論文就是要看到每一層中間層所提取到的 Feature Map 到底是什麼樣的。

Feature Map:卷積核卷出來的。

Layer 3、 Layer 4、 Layer 5:

第3,4,5層都是同理。

  • 網絡越深 越關注語義資訊。
  • 網絡越淺 越關注空間資訊。

繼續閱讀