影像分割論文 | DRN膨脹殘差網路 | CVPR2017
- 2021 年 1 月 21 日
- 筆記
- Python與深度學習(Pytorch), 機器學習常見演算法入門
文章轉自:同作者個人微信公眾號【機器學習煉丹術】。歡迎交流溝通,共同進步,作者微信:cyx645016617
- 論文名稱:『Dilated Residual Networks』
- 論文鏈接://arxiv.org/pdf/1705.09914.pdf
0 綜述

這篇文章的最大特色自然是提出了DRN,Dilated Residual Networks,在殘差網路的基礎上加入了膨脹卷積。
膨脹卷積,又叫做空洞卷積,是在卷積核參數不變的基礎上,增加視野域的一種手段。通過使用膨脹卷積,可以放大最深層特徵圖的尺寸並且保持視野域大小不變,說白了就是少了幾個池化層,然後用膨脹卷積維持同樣大小的視野域。比方說,resnet眾所周知,包括stem中的下取樣和4個layer的下取樣,5次下取樣,整體的步長為32;但是DRN中,整體步長僅為8。
當然文章如果僅僅是把碰撞卷積代替一般卷積,那麼這篇文章就毫無特色了。碰撞卷積會引出一個degridding效應,如何解決這個問題才是文章的核心。
再加上一句,雖然模型的參數沒有改變,但是因為增加了特徵圖的尺寸,計算量和記憶體消耗必然有增加,請大家仁者見仁。
1 空洞卷積
這個長話短說,直接看圖:

dilation是一個參數,如果是1的話,就是上圖左圖的常規卷積核,如果dilation是2的畫,就變成右邊的膨脹卷積的樣子。dilation表示卷積核中參數相鄰的距離。
2 結構變化
先來看Resnet的結構圖:

輸入的圖片是224×224大小的,第一次下取樣在stem中(圖中的conv1),隨後的下取樣在每一層layer的第一個卷積層前面。
DRN結構沒有了resnet最後的兩次下取樣,也就是說,特徵圖在28×28的大小之後就不再變小了。不再減小特徵圖尺寸,那麼就要增加卷積核的膨脹係數

上圖中展示的是後兩次下取樣的resnet和DRN的區別,可以看到,DRN沒有後兩次下取樣,因此特徵圖的尺寸都相同。
- 但是DRN在本該第四次取樣的卷積過程中,將膨脹係數改成2,這樣保持相同的視野域;
- 在本該第五次取樣的卷積過程中,將膨脹係數改成4,這樣保持相同的視野域。
3 degridding
使用膨脹卷積來代替下取樣,會產生degriding柵格化問題

這種情況產生的原因在原文中有這樣的一句解釋:
Gridding artifacts occur when a feature map has higher-frequency content than the sampling rate of the dilated convolution.
就是說,當一某一個特徵的重要性超過取樣率。作者給出了這樣的一個例子:

上面圖(a)是一個單個像素異常重要的特徵圖,然後經過一個膨脹卷積,變成(c),變成網格狀的輸出。可以說gridding artifiacts是膨脹卷積性質產生的現象。
為了解決這樣的問題,作者對DRN作出了改進:

- DRN-B,DRN-C取消了pooling層,改用stride=2的卷積作為下取樣,因為作者發現pooling會讓degridding更加嚴重
- 此外,作者在DRN-B和DRN-C的最後加上了膨脹係數為2和1的幾層卷積層,來消除degridding現象。其中DRN-C取消了最後幾層卷積的跳層結構。這個非常好理解,畢竟膨脹卷積會產生degridding,那麼我就讓最後的輸出是用一般的卷積輸出就避免了這種結構,然後跳層結構會讓degridding直接連入最後的輸出結果,所以取消了
因此在上面的展示圖匯中,DRN-C的輸出的語義分割效果圖,非常絲滑。
4 總結

效果有非常大的提高。這個不降低特徵圖的尺寸,從而提高了小物體的目標檢測的效果。值得嘗試。
5 如何實現
這個也挺好實現的,我們記住:
- 用stride=2的卷積層代替pooling層;
- 後面兩個下取樣取消,使用膨脹係數2和4的卷積代替;
- 最後在加上膨脹係數為2和1的卷積層消除degridding現象。


