總結-空洞卷積(Dilated/Atrous Convolution)、gridding問題以及解決方案、訓練技巧BN和PReLU、CReLU

https://zhuanlan.zhihu.com/p/50369448

https://www.zhihu.com/question/54149221/answer/192025860

注意:解決辦法大概就是:使得卷積前後的每組結果能進行相互交錯,相互依賴,解決空洞卷積局部信息丟失問題。或者捕獲多尺度信息、獲得局部信息依賴,以此解決局部信息不一致的問題。

1.例如[1, 2, 5, 1, 2, 5]這樣的循環結構;dilated rate[1, 2, 5] with 3*3 kernel;

2.太繁瑣,部分看不懂;

3.在最後生成的4組卷積結果之後,經過一層組交錯層第二種方法爲在空洞卷積之前進行局部信息依賴,即增加一層分離卷積操作;

4.增加圖像級特徵,使用全局池化獲取圖像全局信息,沒有仔細說明,需要補充學習;

5.ESPNet利用分解卷積的思想,先用1*1卷積將通道數降低減少計算量,後面再加上基於空洞卷積的金字塔模型,捕獲多尺度信息。所有卷積後都使用BN和PReLU(PReLU(Parametric Rectified Linear Unit)。很多實時分割小網絡都使用了PReLU;使用Adam訓練,很多小網絡使用這個;消融實驗表明,在一維卷積之間加入BN+PReLU,精度會增加1.4%;

6.Kronecker convolution,參數量是不增加的總體效果mIOU提升了1%左右。提出了一個TFA模塊,利用樹形分層結構進行多尺度與上下文信息整合。結構簡單,但十分有效,精度提升4-5%。沒有仔細說明,需要補充學習、

7.看不懂。

8.未細說。

;

目錄

dilation conv

空洞卷積的作用

空洞卷積gridding問題

解決方案

1. Panqu Wang,Pengfei Chen, et al.Understanding Convolution for Semantic Segmentation.//WACV 2018

2. Fisher Yu, et al. Dilated Residual Networks. //CVPR 2017

3. Zhengyang Wang,et al.Smoothed Dilated Convolutions for Improved Dense Prediction.//KDD 2018.

4. Liang-Chieh Chen,et al.Rethinking Atrous Convolution for Semantic Image Segmentation//2017

5. Sachin Mehta,et al. ESPNet: Efficient Spatial Pyramid of DilatedConvolutions for Semantic Segmentation.//ECCV 2018

6. Tianyi Wu,et al.Tree-structured Kronecker Convolutional Networks for Semantic Segmentation.//AAAI2019

7. Hyojin Park,et al.Concentrated-Comprehensive Convolutionsfor lightweight semantic segmentation.//2018

8. Efficient Smoothing of Dilated Convolutions for Image Segmentation.//2019


dilation conv

首先空洞卷積的目的是爲了在擴大感受野的同時,不降低圖片分辨率和不引入額外參數及計算量(一般在CNN中擴大感受野都需要使用s>1的conv或者pooling,導致分辨率降低,不利於segmentation。而如果使用大卷積核來增加感受野,會引入額外的參數及計算量)。可以代替降採樣(pooling或s2/conv),標準卷積可以看做空洞卷積的特殊形式。

空洞卷積(Dilated/Atrous Convolution),廣泛應用於語義分割與目標檢測等任務中

  • 空洞卷積:在3*3卷積核中間填充0,有兩種實現方式,第一,卷積核填充0,第二,輸入等間隔採樣。

 

空洞卷積的作用

  • 擴大感受野:(不影響微調的,也就是改了之後之前的模型可以繼續訓練)
  • 捕獲多尺度上下文信息:空洞卷積有一個參數可以設置dilation rate,具體含義就是在卷積核中填充dilation rate-1個0,因此,當設置不同dilation rate時,感受野就會不一樣,也即獲取了多尺度信息。多尺度信息在視覺任務中相當重要啊。

空洞卷積可以任意擴大感受野,且不需要引入額外參數,但如果把分辨率增加了,算法整體計算量肯定會增加。

空洞卷積實際卷積核大小:

 d爲空洞卷積參數空洞率dilation rate;(d - 1) 的值則爲塞入的空格數,假定原來的卷積核大小爲 k,那麼塞入了 (d - 1) 個空格後的卷積核大小 n 爲:

因此輸出feature map尺寸是

width=[\tfrac{W+2p-k-(k-1)\times (d-1)}{S}]+1

same的話需要pad的像素點是(new_width-1)*S + k - W_ori

以三個r=2的3*3/s1空洞卷積爲例計算感受野:

K=k+(k-1)(r-1)=3+2*1=5
R=1+4+4+4=13

而語義分割由於需要獲得較大的分辨率圖,因此經常在網絡的最後兩個stage,取消降採樣操作,之後採用空洞卷積彌補丟失的感受野。

以語義分割中常使用的VGG和ResNet50爲例,計算其空洞前與空洞後的感受野。

VGG16:將FC6層使用7*7卷積替換,其他不變,此版本我們稱爲VGG_Conv,根據deeplabv1的設置,我們使用DeepLab-CRF-7x7,即取消pool4和pool5的降採樣操作,改爲了3*3/s1,同時將 conv5_1-conv5_3使用r=2的空洞卷積。FC的空洞率r=4。

VGG_Conv:R=1+6)*2+2+2+2)*2+2+2+2)*2+2+2+2)*2+2+2)*2+2+2=404
DeepLab-CRF-7x7:R=1+24)+2+4+4+4)+2+2+2+2)*2+2+2+2)*2+2+2)*2+2+2=412

兩者和感受野近似相等,從deeplab實驗結果可以看出,感受野不一定和之前完全一樣,但感受野大了效果會好一些。表中結果和自己計算的不一樣,不知道表中感受野怎麼計算的。。

空洞卷積gridding問題

空洞卷積得到的某一層的結果中,鄰近的像素是從相互獨立的子集中卷積得到的,相互之間缺少依賴。

  • 局部信息丟失:由於空洞卷積的計算方式類似於棋盤格式,某一層得到的卷積結果,來自上一層的獨立的集合,沒有相互依賴,因此該層的卷積結果之間沒有相關性,即局部信息丟失。
  • 遠距離獲取的信息沒有相關性:由於空洞卷積稀疏的採樣輸入信號,使得遠距離卷積得到的信息之間沒有相關性,影響分類結果。設計更像是用於獲取long-range information,這樣或許對一些大物體有較好的分割效果,而對於小物體來說可能是有弊無利了。如何同時處理好大小物體的關係,則是設計好dilated convolution網絡的關鍵。

通過圖a解釋了空洞卷積存在的問題,從左到右屬於top-bottom關係,(從右依次卷積到左)三層卷積均爲r=2的dilatedConv,可以看出最上層的紅色像素的感受野爲13且參與實際計算的只有75%,很容易看出其存在的問題。

解決方案

使得卷積前後的每組結果能進行相互交錯,相互依賴,解決空洞卷積局部信息丟失問題。或者捕獲多尺度信息、獲得局部信息依賴,以此解決局部信息不一致的問題。

1. Panqu Wang,Pengfei Chen, et al.Understanding Convolution for Semantic Segmentation.//WACV 2018

使用HDC(混合膨脹卷積)的方案解決該問題,不同於採用相同的空洞率的deeplab方案,該方案將一定數量的layer形成一個組,然後每個組使用連續增加的空洞率,其他組重複。如deeplab使用rate=2,而HDC採用r=1,r=2,r=3三個空洞率組合,這兩種方案感受野都是13。但HDC方案可以從更廣闊的像素範圍獲取信息,避免了grid問題。同時該方案也可以通過修改rate任意調整感受野。

對比膨脹卷積,主要包含以下三方面的特徵:

1)疊加的膨脹卷積的膨脹率dilated rate不能有大於1的公約數(比如[2, 4, 6]),不然會產生柵格效應;
2)膨脹率dilated rate設計成了鋸齒狀結構,例如[1, 2, 5, 1, 2, 5]這樣的循環結構;
3)膨脹率dilated rate需要滿足:M_i = \max\left [ M_{i+1} -2r_i, M_{i+1}-2(M_{i+1}-r_i), r_i\right ],其中是第i層的膨脹率dilated rate,Mi是指在i層的最大dilation rate,假設總共有n層,那麼M_n = r_n,比如:dilated rate[1, 2, 5] with 3*3 kernel
 

2. Fisher Yu, et alDilated Residual Networks. //CVPR 2017

如果特徵map有比空洞率更高頻的內容,則grid問題更明顯。

提出了三種方法:

Removing max pooling:由於maxpool會引入更高頻的激活,這樣的激活會隨着卷積層往後傳播,使得grid問題更明顯。

Adding layers:在網絡最後增加更小空洞率的殘參block, 有點類似於HDC。(todo ?????)

Removing residual connections:去掉殘參連接,防止之前層的高頻信號往後傳播。

3. Zhengyang Wang,et al.Smoothed Dilated Convolutions for Improved Dense Prediction.//KDD 2018.

空洞卷積的分解觀點,在原始特徵圖上週期性採樣形成4組分辨率降低的特徵圖,然後使用原始的空洞卷積參數(去掉了空洞0)分別進行卷積,之後將卷積的結果進行上採樣組合。從該分解觀點可以看出,卷積前後的4個組之間沒有相互依賴,使得收集到不一致的局部信息。

從上面分解的觀點出發:

(1) 在最後生成的4組卷積結果之後,經過一層組交錯層類似於ShuffleNet,使得每組結果能進行相互交錯,相互依賴,以此解決局部信息不一致的問題。(變異的全連接?)

(2) 第二種方法爲在空洞卷積之前進行局部信息依賴,即增加一層卷積操作,卷積利用了分離卷積,並且所有通道共享參數。

 

4. Liang-Chieh Chen,et al.Rethinking Atrous Convolution for Semantic Image Segmentation//2017

deeplabv3在v2基礎上進一步探索空洞卷積,分別研究了級聯ASPP與並聯ASPP兩種結構。

deeplabv3不同於deeplabv2,在resnet101基礎上級聯了更深的網絡,隨着深度的增加,使用了不同的空洞率的卷積,這些卷積保證分辨率不降低的情況下,感受野可以任意控制,一般讓空洞率成倍增加。同時使用了Multigrid策略,在同一個blocks的不同層使用分層的空洞率,如2,4,8,而不是都使用2,這樣使得感受野相比原來的有所增加。但這樣同樣會存在grid問題。

 

ASPP存在的問題,當使用的空洞率增大時,有效的濾波參數數量逐漸減小。極端的,當r等於特徵圖大小時,該卷積沒有捕獲整幅圖像的上下文信息,而是退化爲1*1卷積。

解決方案:增加圖像級特徵,使用全局池化獲取圖像全局信息,而其他部分的卷積爲了捕獲多尺度信息,這裏的卷積不同於deeplabv2,加了batch normalization。

5. Sachin Mehta,et al. ESPNet: Efficient Spatial Pyramid of DilatedConvolutions for Semantic Segmentation.//ECCV 2018

ESPNet利用分解卷積的思想,先用1*1卷積將通道數降低減少計算量,後面再加上基於空洞卷積的金字塔模型,捕獲多尺度信息。

之前的方法都是通過引入新的計算量,學習新的參數來解決grid問題。而這裏直接使用了特徵分層的思想直接將不同rate的空洞卷積的輸出分層sum,其實就是將不同的感受野相加,彌補了空洞帶來的網格效應。從結果上看效果不錯。

訓練技巧:

所有卷積後都使用BN和PReLU(PReLU(Parametric Rectified Linear Unit), 顧名思義:帶參數的ReLU。很多實時分割小網絡都使用了PReLU;使用Adam訓練,很多小網絡使用這個;如果ai=0,那麼PReLU退化爲ReLU;如果ai是一個很小的固定值(如ai=0.01),則PReLU退化爲Leaky ReLU(LReLU)。 有實驗證明,與ReLU相比,LReLU對最終的結果幾乎沒什麼影響。

(1) PReLU只增加了極少量的參數,也就意味着網絡的計算量以及過擬合的危險性都只增加了一點點。特別的,當不同channels使用相同的ai時,參數就更少了。

(2) BP更新ai時,採用的是帶動量的更新方式,如下圖:

帶動量更新

上式的兩個係數分別是動量和學習率。 
需要特別注意的是:更新ai時不施加權重衰減(L2正則化),因爲這會把ai很大程度上push到0。事實上,即使不加正則化,試驗中ai也很少有超過1的。

(3) 整個論文,ai被初始化爲0.25。

 

PReLU vs. ReLU

 

6. Tianyi Wu,et al.Tree-structured Kronecker Convolutional Networks for Semantic Segmentation.//AAAI2019

使用Kronecker convolution來解決空洞卷積局部信息丟失問題,以r1=4、r2=3爲例,KConv將每個標準卷積的元素都乘以個相同的矩陣,該矩陣由0,1組成,這樣參數量是不增加的。該矩陣爲:

 

這樣每個元素乘以矩陣後變爲上面右圖所示的圖。因此,可以看出r1控制空洞的數量,也即擴大了感受野,而r2控制的是每個空洞卷積忽視的局部信息。當r2=1時,其實就是空洞卷積,當r2=r1=1時就是標準卷積。

總體效果mIOU提升了1%左右。除此之外,提出了一個TFA模塊,利用樹形分層結構進行多尺度與上下文信息整合。結構簡單,但十分有效,精度提升4-5%。

7. Hyojin Park,et al.Concentrated-Comprehensive Convolutionsfor lightweight semantic segmentation.//2018

 

 

針對實時語義分割提出的網絡結構,深度分離卷積與空洞卷積的組合,在ESPNet上做的實驗。並且說明簡單的組合會帶來精度的降低,由於局部信息的丟失。爲此,在深度分離空洞卷積之前,使用了兩級一維分離卷積捕獲局部信息

網絡結構上與ESPNet保持一致,其中,並行分支結果直接Cat,不需要後處理,每個分支不需要bn+relu。消融實驗表明,在一維卷積之間加入BN+PReLU,精度會增加1.4%。

8. Efficient Smoothing of Dilated Convolutions for Image Segmentation.//2019

 這裏寫圖片描述 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章