《ParseNet》論文閱讀

  • 2019 年 12 月 9 日
  • 筆記

論文原文

https://arxiv.org/pdf/1506.04579.pdf

需要解決的問題

這篇文章首先提出一個問題,理論感受野是真的嗎?我們在前面講過的PSPNet中已經知道,感受野對於語義分割網路有很大影響,我們也是盡量去增大網路的感受野,讓網路可以看見的區域更多,從而讓語義分割更加精確。然而論文首先擺出了一個質疑,理論感受野代表了演算法的實際感受野嗎?在實際應用中,很多網路的理論感受野是很大的。比如帶VGG的FCN網路中的fc7層,其理論感受野為404*404像素。但是,事實上並沒有辦法看到這麼大的區域,論文做了一個實驗:

其中,(a)是原圖,(b)是某個神經元輸出的Activation map或者說特徵圖,文章對原圖上滑動一個窗口,對這個窗口內部的影像加入隨機雜訊並觀察加入雜訊後該神經元的輸出是否有較大的變化,當產生較大的變化時,代表這個神經元可以感受到這部分影像,由此得到實際的感受野,如圖(d)所示。經過試驗發現,實際感受野只有原圖的約1/4大小。在另一篇論文《Object detectors emerge in deep scene cnns》也得到了類似的結論。既然有了這樣的現象,那很自然就會想到加入全局資訊去提升神經網路的分割能力。

網路結構

這裡我們再通過全局平均池化(Global Average Pooling)後,就要考慮如何將得到的全局資訊加入網路。論文中一共提到了2種方式,一種叫做Early Fusion,就是對得到全局資訊進行反池化(Unpool),得到和原特徵圖相同維度的全局特徵,再把兩者拼起來,一起送入分類器中。由於文章使用的是平均池化,在UnPool的時候就把得到的結果複製編,得到一張的特徵圖。而另外一種方式就是Late Fusion,如果使用合適的歸一化,結果並不會有太大的不同。注意這裡進行了L2 Norm,這是因為這是因為多層feature map的激活值大小分布差距比較大,如果沒有經過 norm,會導致激活值普遍較大的 feature map 對融合後的結果影響更大。關於L2 Norm的實現以及反向傳播的推導可以看這篇文章:https://blog.csdn.net/hust_lmj/article/details/79903658 。

為什麼要進行L2 Norm

如上圖所示,不同層之間的特徵的尺度是不同的,而且這種不同可能很顯著。(不同顏色代表不同層上的特徵)。很顯然這些特徵的尺度(scale)和範數是顯然不同的。如果直接把這些特徵進行級聯,可能會導致大特徵控制小特徵,使得分割的效果變差。儘管在訓練過程中,網路的權重可能會對這種情況進行調整,但是這要求非常小心的調參和數據集選取。所以論文提出了L2範數來歸一化特徵的融合過程。這裡還需要注意的一個點是如果只是對所有輸入層進行歸一化,不僅會減慢網路的訓練速度,同時也會改變該層的尺度。因此,還需要對其增加一個尺度參數gamma,將歸一化的結果進行尺度縮放(縮放結果為y)。

訓練細節

L2 Norm的Scale參數十分難以調整,初始化方式稍微變化會引起較大的結果變化,難以復現論文結果,調參需要小心細緻。要結合全局資訊的話可能更多還是直接使用eltwise sum或者 concatenation 不加任何norm直接融合多個特徵圖的效果。論文達到的精度接近於DeppLab+CRF的精度。

程式碼

在caffe的Model Zoom中提供了源碼,WeiLiu大神實現了L2 Norm層,可以使用他的caffe-ssd框架進行訓練和測試。