Encoder-Decoder-with-Atrous-Separable-Convolution-for-Semantic-Image-Segmentation

總結

when

  • ECCV 2018

what

  • 空間金字塔池模塊或編碼 - 解碼器結構用於深度神經網絡中解決語義分割任務。
  • 前一種網絡能夠通過利用多個速率和多個有效視場的過濾器或池化操作探測輸入特徵來編碼多尺度上下文信息,而後一種網絡可以通過逐漸恢復空間信息來捕獲更清晰的對象邊界。
  • 在這項工作中,我們建議結合兩種方法的優點。具體來說,我們提出的模型DeepLabv3 +通過添加一個簡單而有效的解碼器模塊來擴展DeepLabv3,以優化分割結果,尤其是沿着對象邊界。我們進一步探索Xception模型並將深度可分離卷積應用於Atrous Spatial Pyramid Pooling和解碼器模塊,從而產生更快更強的編碼器-解碼器網絡。
  • 我們證明了所提出的模型在PASCAL VOC 2012語義圖像分割數據集上的有效性,並且在沒有任何後處理的情況下在測試集上實現了89%的性能。我們的論文附有Tensorflow中提出的模型的公開參考實現。

who (動機)

  • 語義分割的目的是爲圖像中的每個像素分配語義標籤[17,25,13,83,5],這是計算機視覺中的基本主題之一。 基於完全卷積神經網絡[64,49]的深度卷積神經網絡[41,38,64,68,70]顯示出依賴於手工製作特徵的系統在基準任務上的顯着改進[28,65,36,39,22,79]。在這項工作中,我們考慮使用空間金字塔池模塊[23,40,26]或編碼器-解碼器結構[61,3]進行語義分割的兩種類型的神經網絡,其中前者通過在不同的分辨率上彙集特徵來捕獲豐富的上下文信息。而後者能夠獲得銳利的物體邊界。

  • 爲了捕獲多個尺度的上下文信息,DeepLabv3 [10]應用具有不同速率的幾個並行的atrous卷積(稱爲Atrous Spatial Pyramid Pooling,或ASPP),而PSPNet [81]執行不同網格尺度的池化操作。即使在最後的特徵映射中編碼了豐富的語義信息,由於在網絡主幹內具有跨步操作的池化或卷積,因此缺少與對象邊界相關的詳細信息。通過應用atrous卷積來提取更密集的特徵映射可以減輕這種情況。然而,考慮到現有神經網絡[38,68,70,27,12]的設計和有限的GPU內存,提取比輸入分辨率小8甚至4倍的輸出特徵映射在計算上是禁止的。以ResNet-101 [27]爲例,當應用atrous卷積提取比輸入分辨率小16倍的輸出特徵時,最後3個殘餘塊(9層)內的特徵必須擴大。更糟糕的是,如果需要比輸入小8倍的輸出特徵,則會影響26個殘餘塊(78層!)。因此,如果爲這種類型的模型提取更密集的輸出特徵,則計算密集。另一方面,編碼器 - 解碼器模型[61,3]使其自身在編碼器路徑中更快地計算(因爲沒有特徵被擴張)並且逐漸恢復解碼器路徑中的尖銳對象邊界。試圖結合兩種方法的優點,我們建議通過結合多尺度上下文信息來豐富編碼器 - 解碼器網絡中的編碼器模塊。

  • 特別是,我們提出的模型,稱爲DeepLabv3 +,通過添加一個簡單但有效的解碼器模塊來擴DeepLabv3[10],以恢復對象邊界,如圖1所示。豐富的語義信息在DeepLabv3的輸出中進行編碼,帶有atrous卷積允許人們根據計算資源的預算來控制編碼器特徵的密度。 此外,解碼器模塊允許詳細的對象邊界恢復。

img

  • 由於最近深度可分離卷積的成功[67,71,12,31,80],對於語義分割的任務我們也通過調整Xception模型[12]來探索這種操作,並在速度和準確性方面表現出改進,類似於[60],並將atrous可分離卷積應用於ASPP和解碼器模塊。最後,我們證明了所提出的模型在PASCAL VOC 2012語義分割基準測試中的有效性,並且在沒有任何後處理的情況下在測試集上獲得了89.0%的性能,從而創造了一種新的最新技術。

where

看點

  • 實驗部分寫的很精彩

創新點

  • 我們提出了一種新穎的編碼器-解碼器結構,它採用DeepLabv3作爲功能強大的編碼器模塊和簡單而有效的解碼器模塊。
  • 在我們提出的編碼器 - 解碼器結構中,可以通過atrous卷積任意控制提取的編碼器特徵的分辨率,以折中精度和運行時間,這對於現有的編碼器解碼器模型是不可能的。
  • 我們將Xception模型用於分割任務,並將深度可分離卷積應用於ASPP模塊和解碼器模塊,從而產生更快更強的編碼器-解碼器網絡。
  • 我們提出的模型在PASCAL VOC 2012數據集上獲得了新的最新性能。我們還提供設計選擇和模型變體的詳細分析。
  • 我們公開提供基於Tensorflow的提議模型實現。

相關工作

基於完全卷積網絡(FCNs)[64,49]的模型已經證明了在幾個分割基準[17,52,13,83,5]上的顯着改進。提出了幾種模型變體來利用上下文信息進行分割[28,65,36,39,22,79,51,14],包括那些採用多尺度輸入的模型(即圖像金字塔)[18,16,58,44,11,9]或那些採用概率圖模型(如DenseCRF [37]和有效推理算法[2])[8,4,82,44,48,55,63,34,72,6] ,7,9]。 在這項工作中,我們主要討論使用空間金字塔池化和編碼器-解碼器結構的模型。

空間金字塔池化:模型,如PSPNet [81]或DeepLab [9,10],在幾個網格尺度(包括圖像級池[47])執行空間金字塔池[23,40]或應用幾個並行的atrous卷積與不同的費率(稱爲Atrous Spatial PyramidPooling,或ASPP)。 通過利用多尺度信息,這些模型已經在幾個分割基準上顯示出有希望的結果。

編碼器-解碼器:編碼器-解碼器網絡已成功應用於許多計算機視覺任務,包括人體姿態估計[53],物體檢測[45,66,19]和語義分割[49,54,61,3,43,59,57,33,76,20]。通常,編碼器-解碼器網絡包含(1)逐漸減少特徵圖並捕獲更高語義信息的編碼器模塊,以及(2)逐漸恢復空間信息的解碼器模塊。基於這個想法,我們建議使用DeepLabv3 [10]作爲編碼器模塊,並添加一個簡單而有效的解碼器模塊,以獲得更清晰的分割。

深度可分卷積:深度可分卷積[67,71]或羣卷積[38,78],是一種強大的操作,可以在保持相似(或略微更好)的性能的同時降低計算成本和參數數量。這個操作已經被許多最近的神經網絡設計採用[35,74,12,31,80,60,84]。特別是,我們探索了Xception模型[12],類似於[60]用於COCO2017檢測挑戰的提交,並在語義分割任務的準確性和速度方面表現出改進。

how

具有Atrous卷積的編碼器-解碼器

Atrous卷積:Atrous卷積,一種強大的工具,允許我們明確控制深度卷積神經網絡計算的特徵的分辨率,並調整濾波器的視野以捕獲多尺度信息,推廣標準卷積運算。特別地,在二維信號的情況下,對於輸出特徵映射y和卷積濾波器w上的每個位置i,如下在輸入特徵映射x上應用atrous卷積:

y\left[ i\right]=\sum_{k}^{}{x[i+r\cdot k]\omega [k]}

其中,atrous rate r決定了我們對輸入信號進行採樣的步幅。 有興趣的讀者可以參考[9]瞭解更多細節。注意,標準卷積是速率r = 1的特殊情況。通過改變速率值自適應地修改濾波器的視野。

**深度可分卷積:**深度可分卷積,將標準卷積分解爲深度卷積,然後是逐點卷積(即1×1卷積),大大降低了計算複雜度。具體地,深度卷積對於每個輸入信道獨立地執行空間卷積,而逐點卷積用於組合來自深度卷積的輸出。在深度可分卷積的TensorFlow [1]實現中,在深度卷積(即空間卷積)中支持了atrous卷積。在這項工作中,我們將得到的卷積稱爲atrous可分卷積,並發現atrous可分離卷積顯着降低了所提出模型的計算複雜度,同時保持了相似(或更好)的性能。

DeepLabv3作爲編碼器:DeepLabv3 [10]採用了atrous卷積[30,21,64,56]來提取由任意分辨率的深度卷積神經網絡計算的特徵。在這裏,我們將輸出步幅表示爲輸入圖像空間分辨率與最終輸出分辨率的比率(在全局池化或完全連接層之前)。對於圖像分類的任務,最終特徵圖的空間分辨率通常比輸入圖像分辨率小32倍,因此輸出stride=32.對於語義分割的任務,可以採用輸出stride=16(或8)通過去除最後一個(或兩個)塊中的步幅並相應地應用atrous卷積來進行更密集的特徵提取(例如,我們分別對輸出步幅= 8的最後兩個塊應用rate = 2和rate = 4)。此外,DeepLabv3增強了Atrous空間金字塔池化模塊,該模塊通過應用具有不同速率的atrous卷積和圖像級特徵來探測多尺度的卷積特徵[47]。在我們提出的編碼器 - 解碼器結構中,我們在原始DeepLabv3中作爲編碼器輸出進行登錄之前使用最後一個特徵映射。請注意,編碼器輸出要素圖包含256個通道和豐富的語義信息。此外,根據計算預算,可以通過應用atrous卷積以任意分辨率提取特徵。

**提出的解碼器:**DeepLabv3的編碼器功能通常用輸出stride=16計算。在[10]的工作中,這些特徵被雙線性上採樣16倍,這可以被認爲是一個最初的解碼器模塊。但是,這個最初的解碼器模塊可能無法成功恢復對象分割細節。因此,我們提出了一個簡單而有效的解碼器模塊,如圖2所示。編碼器特徵首先進行雙線性上採樣4倍,然後與具有相同功能的網絡主幹中具有相同空間分辨率(例如,在ResNet-101 [27]中跨步之前的Conv2)的低級特徵[25]連接起來。我們在低級特徵上應用另一個1×1卷積來減少通道數,因爲相應的低級特徵通常包含大量通道(例如,256或512),這可能超過富編碼特徵的重要性(我們的模型中只有256個通道),使訓練更加困難。在連接之後,我們應用幾個3×3的卷積來細化特徵,然後進行另一個簡單的雙線性上採樣4倍。我們在第4節使用輸出stride= 16作爲編碼器模塊在速度和精度之間取得最佳平衡。當使用輸出stride = 8作爲編碼器模塊時,以額外的計算複雜性爲代價,性能略有提高。

img

修改的對齊Xception

  • Xception模型[12]在ImageNet[62]上展示了具有快速計算能力的圖像分類結果。最近,MSRA團隊[60]修改了Xception模型(稱爲Aligned Xception),並進一步推動了對象檢測任務的性能。在這些發現的推動下,我們以相同的方向努力使Xception模型適應語義圖像分割的任務。特別是,我們在MSRA的修改之上做了一些更改,即
    1. 與[60]中更深的Xception相似,除了我們不修改入口流網絡結構以實現快速計算和內存效率,
    2. 所有最大值池化操作被深度可分離卷積替換爲striding,這使我們能夠應用atrous可分離卷積以任意分辨率提取特徵映射(另一種選擇是將atrous算法擴展到最大池化操作),
    3. 額外的批量歸一化[32]和在每次3×3深度卷積之後添加ReLU激活,類似於MobileNet設計[31]。修改後的Xception結構如圖3所示。

img

how much

實驗評估

  • 我們採用ResNet-101 [27]或修改後的對齊Xception [12,60],它們在ImageNet-1k數據集[62]上預先訓練,通過atrous卷積提取密集特徵圖。我們的實施基於TensorFlow [1]並公開發布。
  • 所提出的模型在PASCAL VOC 2012語義分割基準[17]上進行評估,其中包含20個前景對象類和一個背景類。 原始數據集包含1 464(訓練),1449(驗證)和1456(測試)像素級註釋圖像。 我們通過[24]提供的額外註釋來擴充數據集,從而生成10582(訓練增強)訓練圖像。性能是根據21個類別(mIOU)平均的像素交叉結合來衡量的。
  • 我們遵循[10]中的相同訓練協議,感興趣的讀者可以看引用[10]瞭解詳情。 簡而言之,我們採用相同的學習率計劃(即“poly”策略[47]和相同的初始學習率0.007),crop大小513×513,當輸出stride=16時微調批量標準化參數[32],以及訓練期間的隨機比例數據增加。請注意,我們還在建議的解碼器模塊中包含批量標準化參數。 我們提出的模型是端到端訓練的,沒有對每個組件進行分段預訓練。

1 解碼器設計選擇

  • 我們首先將“DeepLabv3特徵圖”定義爲DeepLabv3計算的最後一個特徵圖(即包含ASPP特徵,圖像級特徵等的特徵)和[k×k; f]作爲內核大小爲k×k和f濾波器的卷積運算。當使用輸出stride = 16時,基於ResNet-101的DeepLabv3 [10]在訓練和評估期間對logits進行雙線性上採樣16。 這種簡單的雙線性上採樣可以被認爲是一種天真的解碼器設計,在PASCAL VOC2012上設置的性能達到77.21%[10]並且比在訓練期間不使用這種天真解碼器好1.2%(即,下采樣groundtruth 在訓練中)。 爲了改善這個原始的基線,我們提出的模型“DeepLabv3 +”在編碼器輸出的頂部添加了解碼器模塊,如圖2所示。在解碼器模塊中,我們考慮三個不同設計選擇的位置,即(1) 1×1卷積用於減少來自編碼器模塊的低級特徵映射的通道,(2)用於獲得更清晰分割結果的3×3卷積,以及(3)應當使用什麼編碼器低級特徵。

img

表1. 用於減少來自編碼器模塊的低級特徵映射的通道的解碼器1×1卷積的效果。 我們將解碼器結構中的其他組件固定爲使用[3×3; 256]和Conv2(striding前)的VOC 2012 val set的性能。

爲了評估1×1卷積在解碼器模塊中的效果,我們採用[3×3;256]及來自ResNet-101網絡主幹的Conv2特徵,即res2x殘差塊中的最後一個特徵圖(具體來說,我們在跨步之前使用特徵圖)。 如表格1所示,將低級特徵映射的通道從編碼器模塊減少到48或32導致更好的性能。 因此我們採用[1×1,減少通道。

然後,我們爲解碼器模塊設計3×3卷積結構,並在表2中報告結果。我們發現在使用DeepLabv3特徵圖連接Conv2特徵圖(在跨步之前)之後,使用兩個3×3卷積的256個濾波器比使用簡單的一個或三個卷積更有效。將過濾器的數量從256更改爲128或將內核大小從3×3更改爲1×1會降低性能。我們還試驗了在解碼器模塊中利用Conv2和Conv3特徵映射的情況。在這種情況下,解碼器特徵圖以步長2逐漸上採樣,首先與Conv3連接,然後與Conv2連接,並且每個將由[3×3,256]操作。然後整個解碼過程類似於UNet / SegNet設計[61,3]。但是,我們沒有觀察到顯着的改善。因此,最後,我們採用了非常簡單但有效的解碼器模塊:DeepLabv3特徵映射和通道縮減的Conv2特徵映射的串聯由兩個[3×3; 256]操作。請注意,我們提出的DeepLabv3 +模型的輸出stride = 4.在GPU資源有限的情況下,我們不再追求更密集的輸出特徵映射(即輸出步幅<4)。

img

表2.固定[1×1,48]以減少編碼器特徵通道時解碼器結構的影響。 我們發現使用Conv2(striding前)特徵圖和兩個額外的[3×3,256]操作是最有效的。 VOC 2012 val set的性能。

2 ResNet-101作爲網絡骨幹

  • 爲了在準確性和速度方面比較模型變體,我們在表3中報告了mIOU和Multiply-Adds。在建議的DeepLabv3 +模型中使用ResNet-101 [27]作爲網絡主幹。由於激烈的卷積,我們能夠在訓練和評估過程中使用單一模型獲得不同分辨率的特徵。

img

表3.使用ResNet 101作爲特徵提取器時,PASCAL VOC 2012 val設置的推理策略。 訓練OS:訓練期間使用的輸出步幅。 eval OS:評估期間使用的輸出步幅。 解碼器:採用所提出的解碼器結構。 MS:評估期間的多尺度輸入。 翻轉:添加左右翻轉輸入。

基線:Tab中的第一個行塊。 圖3包含[10]的結果,表明在評估期間提取更密集的特徵圖(即,eval輸出步幅= 8)並採用多尺度輸入提高了性能。 此外,添加左右翻轉輸入會使計算複雜性增加一倍,而性能只會略微提高。

添加解碼器:Tab中的第二個行塊。 圖3包含採用所提出的解碼器結構時的結果。 當使用eval輸出stride = 16或8時,性能從77.21%提高到8.85%或78.51%到79.35%,代價是大約20B額外的計算開銷。使用多刻度和左右翻轉輸入時,性能得到進一步提高

更粗略的特徵圖:我們還試驗了使用列車輸出stride=32(即,在訓練期間根本沒有任何atrous卷積)進行快速計算的情況。如表3中的第三行塊所示。添加解碼器帶來2%的改進,而只需要74.20B的MultiplyAdds。然而,在我們採用列車輸出stride = 16和不同的eval輸出步幅值的情況下,性能總是約1%至1.5%。 因此,我們更傾向於在訓練或評估期間使用輸出stride = 16或8,具體取決於複雜性預算。

3 作爲網絡骨幹的Xception

ImageNet預訓練:擬議的Xception網絡在ImageNet-1k數據集[62]上預先訓練,在[12]中使用類似的訓練協議。具體來說,我們採用Nesterov動量優化器,動量= 0.9,初始學習率= 0.05,速率衰減=0.94每2個時期,重量衰減4e-5.我們使用50個GPU的異步訓練,每個GPU的批量大小爲32,圖像大小299×299.我們沒有非常努力地調整超參數,因爲目標是在ImageNet上預先訓練模型以進行語義分割。我們在表4中報告驗證集上的單模型錯誤率。與基線一起在同一訓練協議下複製ResNet-101[27]。 我們觀察到在修改的Xception中每次3×3深度卷積後沒有添加額外批量標準化和ReLU時,Top1和Top5精度的性能降低0.75%和0.29%。

img

表4. ImageNet-1K驗證集上的單模型錯誤率。

表5中報告了使用所提出的Xception作爲語義分段的網絡主幹的結果。

img

表5.使用修改的Xception作爲特徵提取器時,PASCAL VOC 2012 val設置的推理策略。 訓練OS:訓練期間使用的輸出步幅。 eval OS:評估期間使用的輸出步幅。 解碼器:採用所提出的解碼器結構。 MS:評估期間的多尺度輸入。 翻轉:添加左右翻轉輸入。 SC:對ASPP和解碼器模塊採用深度可分離卷積。 COCO:在M

**基線:**我們首先在表5中的第一行塊中不使用建議的解碼器報告結果。示出了在使用ResNet-101的情況下,當訓練輸出stride = eval output stride = 16時,使用Xception作爲網絡主幹將性能提高約2%。 通過使用平均輸出stride = 8,在推理期間進行多尺度輸入並添加左右翻轉輸入,也可以獲得進一步的改進。
請注意,我們不使用多網格方法[75,15,10],我們發現這不會改善性能。

**添加解碼器:**如表5中的第二行塊所示。對於所有不同的推理策略,當使用平均輸出stride = 16時,添加解碼器會帶來約0.8%的改進。 使用平均輸出stride = 8時,改進變得更少。

**使用深度可分卷積:**通過深度可分卷積的有效計算,我們在ASPP和解碼器模塊中進一步採用它。 如Tab中的第三行塊所示。 如圖5所示,乘法加法的計算複雜度顯着降低了33%至41%,同時獲得了類似的mIOU性能。

img

圖5.採用所提出的解碼器模塊與初始雙線性上採樣(表示爲BU)相比的定性效果。 在示例中,我們採用Xception作爲特徵提取器和列車輸出stride = eval output stride = 16。

在COCO上進行預訓練:爲了與其他現有技術模型進行比較,我們進一步預先提取了我們在MS-COCO數據集上提出的DeepLabv3 +模型[46],這使得所有不同推理策略的性能提高了2%。

JFT上的預訓練:類似於[10],我們還採用了已經在ImageNet-1k [62]和JFT-300M數據集[29,12,69]上預訓練的Xception模型,它帶來了額外的0.8%到1%改進。

測試集結果:由於基準評估中未考慮計算複雜性,因此我們選擇最佳性能模型並使用輸出stride = 8和凍結批量標準化參數進行訓練。最後,我們的’DeepLabv3 +'在沒有和使用JFT數據集預訓練的情況下實現了87.8%和89.0%的性能。

定性結果:我們提供了圖6中最佳模型的可視化結果。如圖所示,我們的模型能夠很好地分割對象而無需任何後處理。

img

失敗模式:如圖6的最後一行所示,我們的模型難以分割(a)沙發與椅子,(b)嚴重遮擋的物體,以及(c)罕見的物體。

4 沿對象邊界的改進

  • 在本小節中,我們使用trimap實驗[36,37,9]評估分割精度,以量化所提出的解碼器模塊在對象邊界附近的準確性。具體來說,我們在val集上的’void’標籤註釋上應用形態膨脹,這通常發生在對象邊界周圍。然後,我們計算那些在’void’標籤的擴張帶(稱爲trimap)內的像素的平均IOU。 如圖4所示,與原始的雙線性上採樣相比,將ResNet-101 [27]和Xception [12]網絡骨幹的所提出的解碼器用於改善了性能。當擴張帶狹窄時,改善更爲顯着。我們已經觀察到ResNet-101和Xception在最小trimap寬度處分別有4.8%和5.4%的mIOU改進,如圖所示。我們還可視化使用圖5中提出的解碼器的效果。

img

why (爲什麼好)

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