語義分割--(DeepLabv3+)Encoder-Decoder with Atrous Separable Convolution for Semantic ..
DeepLabv3+
Encoder-Decoder with Atrous Separable Convolution for Semantic Image Segmentation
論文在提出了DeepLabv3+架構。主要以DeepLabv3做encoder架構,decoder採用一個簡單卻有效的模組。並探索了了改進的Xception和深度分離卷積在模型中的應用,進一步提升模型在語義分割任務上的效能。
Abstract
空間金字塔模組在輸入feature上應用多采樣率擴張卷積、多接收野卷積或池化,探索多尺度上下文資訊。 Encoder-Decoder結構通過逐漸恢復空間資訊來捕捉清晰的目標邊界。
DeepLabv3+結合了這兩者的優點,具體來說,以DeepLabv3為encoder架構,在此基礎上添加了簡單卻有效的decoder模組用於細化分割結果。此外論文進一步探究了以Xception結構為模型主幹,並探討了Depthwise separable convolution在ASPP和decoder模組上的應用,最終得到了更快更強大的encoder-decoder網路。
論文在PASCAL VOC 2012上驗證了模型的有效性,在沒有新增任何後端處理的情況下達到了89%mIoU.
Introduction
在DeepLabv3+中,使用了兩種型別的神經網路,使用空間金字塔模組和
- 空間金字塔:通過在不同解析度上以池化操作捕獲豐富的上下文資訊
- encoder-decoder架構:逐漸的獲得清晰的物體邊界
DeepLabv3+結合這兩者的優點,在DeepLabv3的基礎上拓展了一個簡單有效的模組用於恢復邊界資訊。如下圖所示:
- (a): 即DeepLabv3的結構,使用ASPP模組獲取多尺度上下文資訊,直接上取樣得到預測結果
- (b): encoder-decoder結構,高層特徵提供語義,decoder逐步恢復邊界資訊
- (c): DeepLabv3+結構,以DeepLabv3為encoder,decoder結構簡單
DeepLabv3的top layer輸出的feature中有豐富的語義資訊,可通過擴張卷積依據計算資源限制控制計算密度,配合一個decoder模組用於逐漸恢復邊界資訊。
在上述的encoder-decoder架構上,論文受到Xception等工作啟發,將深度分離卷積應用到ASPP和decoder模組,用於快速計算並保持模型的強大學習能力。最終得到的模型在沒有新增後端處理的情況下,達到了新的state-of-the-art.
論文的主要貢獻在於:
- 論文提出了一個全新的encoder-decoder架構,使用DeepLabv3作為encoder模組,並添加了一個簡單卻有效的decoder模組
- 在我們提出的encoder-decoder架構中,可通過擴張卷積直接控制提取encoder特徵的解析度,用於平衡精度和執行時間
- 論文將Xception結構應用於分割任務中,在ASPP和decoder模組中加入深度分離卷積,獲得到強大又快速的模型
- 模型達到了新的state-of-the-art,同時我們給出了模型設計分析細節和模型變體
- 以後開源TensorFlow程式碼(估計得等到2018CVPR或者ECCV完全結束~)
Related Work
近幾年基於全卷積神經網路的模型在語義分割任務上表現成功。有幾種變體模型提出利用上下文資訊包括多尺度輸入在內的做分割,也有采用概率圖模型細化分割結果。本文主要討論使用空間金字塔池化和encoder-decoder結構、並討論了基於Xception為主體的強大特徵提取層,和基於深度分離卷積快速計算。
空間金字塔池化:如PSPNet使用多個不同gird的池化,DeepLab的ASPP模組平行的使用不同擴張率的擴張卷積,執行空間金字塔合併獲取多尺度資訊。在多個benchmark獲得不錯的結果。
Encoder-Decoder: encoder-decoder結構在多個計算機視覺任務上獲得成功,例如人類姿態估計、目標檢測和語義分割。通常,encoder-decoder網路包含:
- encoder模組逐步減少feature map解析度,捕獲高階語義資訊
- decoder模組逐漸恢復空間資訊
在這領域上基礎上,我們使用DeepLabv3作為encoder模組,並增加一個簡單又有效的的decoder模組獲取空間資訊。
深度分離卷積: 深度分離卷積和組卷積能夠減少計算消耗和引數量的同時維持相似的表現。深度分離卷積已應用在多個神經網路中,特別的,我們探索了Xception架構,在語義分割任務上展現了精度和速度上的雙重提升。
Methods
本節簡單回顧DeepLabv3架構,提出改進後的Xception模型,介紹擴張卷積和深度分離卷積。
Encoder-Decoder with Atrous Convolution
DeepLabv3 as encoder:
DeepLabv3中也使用擴張卷積提取特徵,我們將輸入和輸出的解析度比值稱為,對於語義分割任務,使用擴張卷積替換下采樣,使得輸出的feature的。
DeepLabv3的ASPP模組使用了多個平行的擴張卷積,配合了影象級特徵(即全域性平均池化)。我們將DeepLabv3的logit前的輸出特徵作為encoder-decoder模型的encoder輸出。此時輸出的feature通道為256,可依據計算資源限制合理使用擴張卷積。
Proposed decoder:
在原先的DeepLabv3中,取預測的feature 直接雙線性上取樣16倍到期望尺寸,這樣的簡易的decoder模組不能成功的恢復分割細節(這個問題在Understand Convolution for Semantic Segmentation重點討論過~)
DeepLabv3+的整體的架構如下圖所示:
簡單說一下decoder的組成:
- encoder輸出的feature的,經過雙線性上取樣4倍得到,的
- 再取encoder中對應著相同解析度(即)的特徵層,經過卷積降通道,此時輸出的feature記為。這裡為什麼要經過卷積降通道,是因為此解析度的特徵通道較多(256或512),而輸出只有256,故降通道以保持與所佔比重,利於模型學習。
- 將和做concat,再經過一個卷積細化feature,最終再雙線性上取樣4倍得到預測結果
在實驗部分展示了是在速度和精度上最佳的平衡點,使用能夠進一步提升精度,伴隨著是更大的計算消耗。
使用分離卷積改進Xcetpion
擴張分離卷積
Atrous Convolution:
考慮到二維訊號上使用空洞卷積,對於位置,在輸入為上應用濾波器,輸出為:
其中速率在取樣點之間引入個零,有效的將感受野從擴充套件到,而不增加引數和計算量。
Depthwise separable convolution:
深度分離卷積在MobileNet裡面重點講過,這裡簡單說一下:
深度可分離卷積乾的活是:把標準卷積分解成深度卷積(depthwise convolution)和逐點卷積(pointwise convolution)。深度卷積對每個通道獨立使用空間卷積,逐點卷積用於結合深度卷積的輸出。深度分離卷積可以大幅度降低引數量和計算量。
我們將擴張卷積核深度分離卷積結合到一起,即擴張分離卷積。擴張分離卷積能夠顯著的減少模型的計算複雜度並維持相似的表現。
Modified Aligned Xcetpion
論文受到近期MSRA組在Xception上改進工作可變形卷積(Deformable-ConvNets)啟發,Deformable-ConvNets對Xception做了改進,能夠進一步提升模型學習能力,新的結構如下:
論文進一步改進了MSRA的工作以適應語義分割任務,具體如下:
- 更深的Xception結構,不同的地方在於不修改entry flow network的結構,為了快速計算和有效的使用記憶體
- 所有的最大池化操作替換成帶下采樣的深度分離卷積,這能夠應用擴張分離卷積擴充套件feature的解析度
- 在每個的深度卷積後增加BN層和ReLU
改進後的Xception整體結構如下:
改進後的Xception為encodet網路主體,替換原本DeepLabv3的ResNet101.
Experiment
論文使用modified aligned Xception改進後的ResNet-101,在ImageNet-1K上做預訓練,通過擴張卷積做密集的特徵提取。採用DeepLabv3的訓練方式(poly學習策略,crop).注意在decoder模組同樣包含BN層。
Decoder Design Choise
用DeepLabv3作為encoder,對於個的卷積操作記為,先前DeepLabv3是在輸出結果上繼續雙線性上取樣16倍得到預測結果,這在PASCAL VOC2012 驗證集上達到了77.21%。論文在此基礎上,提出了改進的decoder模組。關於decoder的設計有多個方案:
使用卷積減少來自低階feature的通道數
下圖示意部分為卷積:
為了評估卷積的重要性,在encoder中取了