《Understanding Convolution for Semantic Segmentation》

Understanding Convolution for Semantic Segmentation

Abstract

  首先,我們設計了密集卷積上採樣(dense upssampling convolution DUC)可以獲得像素級別的上採樣,DUC可以獲取並解碼一些細節信息,這些細節信息是雙線性插值上採樣不能獲取的。第二,在編碼部分我們提出了混合空洞卷積(Hybrid dilated convolution HDC)框架,這個框架由兩個優點1)、有效的增加了感受野(receptive fields RF),可以綜合全局的信息,2)、解決了網格問題(“gridding issue”),這是由於標準的空洞卷積造成的。我們在城市數據集上進行了測試,並且取得了soa的效果mIOU=80.1%,並且也在KITTI以及PASCAL VOC2012上進行了測試。

1. Introduction

  語義分割的目的是解決圖像中像素的分類問題,這在圖像理解和無人駕駛中具有非常重要的意義。現在大多數解決語義分割的框架有三個關鍵的思路:1)、全卷積(FCN)把分類網絡的全連接層換成卷積層,這樣可以獲得一個end-to-end的模型並且支持任意大小的輸入。2)、條件隨機場(CRF),爲了獲得局部以及長程信息來優化分割結果,3)、空洞卷積,在同樣的計算量的情況下,增大卷積核的感受野,生成更加準確的預測結果。

  自從FCN問世以來,全監督語義分割模型主要在兩個點上進行改進,1)、加深模型,從VGG-16到Resnet-101到ResNet-152模型逐漸加深,mIOU也逐漸提高。2)、CRF的應用,把CRF集成至神經網絡中,以及配合其它信息,比如邊緣或者目標檢測。

  我們從另外一個角度出發來提高語義分割的性能-Convolution,分別從編碼(輸入到中間feature map)和解碼(中間feature map到最終的label map)。在解碼部分,大部分語義分割模型主要採用雙線性插值上採樣來獲得輸出label map。但是雙線性插值不是可學習的而且會丟失信息。受超分辨率的啓發,我們採用密集上採樣卷積(DUC),來一次性恢復label map的全部分辨率,我們學習了一系列上採樣濾波器來對下采樣的feature map進行恢復到要求的分辨率。DUC通過實現端到端的訓練自然而然地適合FCN框架,並且它顯着增加了城市景觀數據集[5]上的像素級語義分割的mIOU,特別是對於相對較小的對象。

  對於編碼部分,空洞卷積由於其可以增大感受野、控制分辨率從而消除了下采樣的需要。然後空洞卷積固有的問題就是gridding現象,因爲卷積核中間加入了0(空洞),感受野只獲取了非0區域的信息,丟失了一些鄰居(局部)信息。當rate逐漸增大,這個問題越來越嚴重,通常是在深層網絡中,感受野特別大,造成卷積核中兩個非0權重的距離太遠,卷積核太稀疏以至於不能覆蓋任何局部信息。某個固定位置像素的信息總是來自與具有空格的模式下。因此,作者提出混合空洞卷積,使用一系列空洞卷積然後把feature map級聯在一起。這個方法有效的減輕了gridding問題。而且選擇合適的rate可以提高感受野和精確度。

3. Our Approach

3.1. Dense Upsampling Convolution(DUC)

  假設輸入的圖像大小是HxWxC,分割目的是獲得HxW大小的label map。把圖像送入FCN之後,在分類之前獲得h*w*c的feature map,h=H/d,w=W/d,d代表下采樣的倍數。之前的很多模型都會採用雙線性插值或者反捲積來進行上採樣。而作者是直接在feature map上DUC操作來獲得逐像素的預測類別。圖1中有DUC層。

這裏寫圖片描述

  DUC操作全是基於卷積的。ResNet輸入爲H*W的圖像,輸出的feature map爲h*w*c,經過DUC之後變爲h*w*d^{2}*L,L代表分割的類別個數。然後將輸出reshape爲H*W*L,就可以獲得分割結果,然後再對上述分割結果進行argmax即可得到最終的label map。DUC的主要思想就是將整個label map劃分成與輸入的feature map等尺寸的子部分。所有的子部分被疊加d^2次就可以產生整個label map了。這種變化允許我們直接作用在輸出的feature map上而不用像deconvolution和unpooling那樣還需要一些額外的信息。

  因爲DUC是科學習的,它能夠捕獲和恢復雙線性插值操作中通常缺少的細節信息。例如,如果一個模型的下采樣倍數爲16,但是一個物體的長或者寬小於16個像素,下采樣之後雙線性插值就很難恢復這個物體了。這樣最終的label map就會丟失細節信息了。DUC的輸出和輸入分辨率是一致的,而且可以集成至FCN中,完美的實現了端到端的分割。

3.2 Hybrid Dilated Convolution(HDC)

  HDC就是帶孔卷積的集合,帶孔卷積在DeepLab系列中已經介紹過了。帶孔卷積可以增大模型的感受野,假設標準的(r=1)卷積核感受野爲k*k,帶孔卷積的感受野爲k_{d}*k_{d},k_{d}=k+(k-1)(r-1)。帶孔卷積集替代了傳統模型中的maxpooling和卷積中的stride來控制feature map的分辨率。

  然而帶孔卷積存在一個問題,就是gridding現象。當dilated convolution在高層使用的rate變大時,對輸入的採樣將變得很稀疏,將不利於學習。因爲一些局部信息完全丟失了,而長距離上的一些信息可能並不相關;並且gridding效應可能會打斷局部信息之間的連續性。如圖5所示。

所以作者對帶孔卷積提出了改進,不採用完全一致的rate。

圖a. 所有帶孔卷積層的rate=2

圖b. rate分別爲1,2,3

  從圖中也可以看出,HDC不僅可以增大感受野,而且覆蓋面也密集,其實可以簡單的理解爲rate=2的卷積核在計算時可能會漏過一些點,但是rate=3的卷積核在計算時可能就會把這寫漏過的點覆蓋上,這也是削弱gridding現象的一個原因。而且作者指出,rate之間的因子不能相同,即rate=2, 4, 8這種就不能去除gridding現象。這就是HDC和ASPP最大的不同。

這裏寫圖片描述

4. Experimrnts and Results

4.1.1 Baseline Model

  作者採用DeepLab-V2 ResNet101作爲對比實驗。因爲Cityscapes的數據集size爲1024*2048,這非常佔用GPU的內存,我們把這個圖像分成12個800*800的圖像塊,圖像塊之間有部分重合,因此訓練集增加到了35700。這種數據增強方式是保證圖像中的每一個區域都能被訪問到,這比隨機裁剪要好,因爲隨機裁剪相鄰的區域會被重複的訪問。

  訓練採用隨機梯度下降,輸入數據從800800的圖像中隨機裁剪爲544544的圖像塊。batch=12,lr=2.5*10^{-4}, power=0.9,訓練20個epochs之後,驗證集上的mIOU=72.3%。

4.1.2 Dense Upsampling COnvolution(DUC)

  作者在baseline上測試了DUC的效果。只改變了模型的最頂層的卷積層。舉個例子,如果baseline的最頂層的feature map爲68*68*19(19爲類別個數),而採用DUC的話,頂層的feature map爲68*68*r^2*19,r代表模型的下採樣率。然後直接直接把feature map進行reshap,恢復到544*544*19。DUC會增加頂層的參數,對ResNet-DUC訓練了20epochs,mIOU增加到74.3%。

  Ablation Studies,作者對實驗進行了中設置,分別是1)、下采樣的比率,這個決定了頂層feature map的分辨率。2)、是否採用ASPP,以及ASPP的並行個數。3)、是否進行12倍的數據增強。4)、cell size,cell size決定預測一個像素時是否考慮其周邊的像素(cell*cell)。逐像素的DUC應該設置cell=1,但是ground truth也不能達到逐像素的精度,所以作者嘗試了cell=2的方式。可以看出減少下采樣的比例會降低分割精度,而且會提高計算量,因爲feature map的分辨率變大了。ASPP有助於提高精度,作者測試了提高ASPP的並行個數從4增加到6,精度提高了0.2%。數據增強使精度提高了1.5%。cell=2比cell=1精度稍微的提高了一點。而且cell=2降低了計算量,這個地方我不是很明白?

這裏寫圖片描述

  Bigger Patch Size 作者考慮到cell=2可以降低計算量,而且原始的圖像大小是1024x2048,這個模型使用越大的圖像效果越好,這樣就可以包含更多的局部和全局上下文信息。因此作者把圖像塊變大爲880x880,但是12倍數據增強得到的圖像大小隻有800x800所以作者重新進行了數據增強。進行了7倍數據增強,在原始數據中以x=512, y={256,512,768…1792}確定7個座標,然後以這7個座標爲中心,畫160x160的矩形,從這7個矩形中隨機選取中心點,在原圖上裁剪880x880的區域。這種數據增強方式使得精確度提高至75.7%。

  Compared with Deconvolution 作者在實驗中和Deconv進行了對比,1)直接從8倍下采樣的feature map進行deconv恢復至原始分辨率。2)、先2倍deconv,再進行4倍上採樣恢復至原始分辨率。這兩種方式分別獲得mIOU爲75.1%和75.0%。比ResNet-DUC低(75.7%)。

CRF 在ResNet-DUC上採樣CRF,mIOU=76.7%。

4.1.3. Hybrid Dilated Convolution(HDC)

  作者使用101層的ResNet-DUC作爲基本模型,來測試HDC以及HDC的各種變體。

  不使用dilation

  dilation-conv:兩個block作爲一個group,第一個block中rate=2,第二個block中rate=1

  dilation-RF:對於res4b由23個block,作者把每3個block作爲一組,設置rate分別爲1,2,3。做後兩個block設置rate=2。對於res5b包含3個block,設置rate分別爲3,4,5。

dilation-bigger:對於res4b由23個block,作者把每4個block作爲一  組,設置rate分別爲1,2,5,9。最後三個block設置rate=1,2,5。對於res5b包含3個block,設置rate分別爲5,9,17。
這裏寫圖片描述

這裏寫圖片描述

從結果中可以看出感受野的增大,可以提高分割的精度。

4.1.4 Test Set Results

  作者訓練模型時分別額採用了精細的label和粗糙與精細混合的label兩種數據。在ResNet-DUC-HDC的模型上分別達到了77.6%,78.5%的精度。

  受VGG模型的啓發,在VGG模型中作者用兩個3x3的卷積核代替一個5x5的卷積何來增強模型的表達能力。作者把ResNet中7x7的卷積核用3個3x3的卷積核替代。重新訓練模型在測試集上mIOU達到80.1%,而且沒有使用CRF後處理。比deeplab模型高9.7%。

5. Conclusion

  作者提出了簡單但是有效的卷積模型來提高語義分割的精度。DUC有助於像素級別的預測,HDC解決了帶孔卷積中的gridding現象,並有效的增大了感受野。

  這兩大貢獻都簡單易懂,而且效果比較好。DUC是開創性的,以一種”自產自銷”或者“自給自足”的思路來完成上採樣,就是我不引入任何的額外信息,僅僅通過我產生的feature map就可以恢復到原始分辨率。HDC就是對ASPP的改進,去除了gridding現象。
  這篇文章很好的提出了幾個語義分割常見的問題:
1、反捲積或者雙線性插值都是不可學習的,並且引入額外的信息,造成恢復的label沒有那麼精細。
2、圖像中存在小物體時,經過多次下采樣很難重建,特別是當小物體的大小比下采樣的倍數還小的時候,基本是不能重建出來的。
3、DeepLab的遺留問題,就是dilate convolution造成gridding現象。
4、採用大的dilate convolution針對大的物體還是有效的,但是小物體可能就是災難了。

所以針對以上問題,作者進行了改進,DUC解決了第一個問題,HDC解決了2、3、4問題,很完美。

  文章理解的有不足之處,還請各位指出,謝謝。

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