1. 程式人生 > 實用技巧 >DeepLab系列語義分割模型論文閱讀筆記

DeepLab系列語義分割模型論文閱讀筆記

1.DeepLabv2

DeepLabv2是DeepLab系列的早期版本。論文作者注意到,普通的卷積神經網路能夠勝任高級別的圖片分類任務,然而對於影象語義分割這種精細的畫素級分類而言,效果卻不是很好。作者認為,阻礙傳統DCNN網路進行精細分類的因素有兩個:第一個是DCNN網路內部不斷重複的卷積和池化操作,這使得網路學習到的特徵圖的解析度過低,特徵內涵不夠豐富;第二個是卷積操作本身的平移不變性,這對於需要高度抽象、模糊特徵的圖片分類任務而言是有益的,對於需要精確位置資訊的語義分割任務卻是有害的。

針對上述問題,結合以及前人對語義分割任務的已有研究,作者的團隊提出了DeepLab語義分割模型。DeepLab模型的主體神經網路採用了針對語義分割任務設計的全卷積網路結構,即將傳統DCNN最後的全連線層替換成了卷積層;此外,在整個網路後端級聯了CRF (Conditional Random Field, 條件隨機場)模組,對提取到的語義特徵進行進一步的處理。

我認為,DeepLabv2裡面比較具有借鑑意義的是它提出的空洞演算法(hole algorithm), 即整個DeepLab系列都在使用的空洞卷積結構(Atrous Convolution),它很好地解決了傳統DCNN網路中特徵解析度低、計算複雜度高的問題。此外,DeepLabv2也探索了在語義分割任務中提取多尺度(multi-scale)特徵、採用多尺度圖片輸入進行預測的可能性,這些都被證實是很好的能夠提高模型效能的方法。在作者的原文中,花了大量篇幅去描述闡明CRF模組的原理及作用,然而在DeepLab系列後續的改進模型中,CRF很快就因其耗費算力大、對模型提升幾乎無益而被拋棄,因此不是一個很值得借鑑的想法與思路。最後,DeepLabv2模型在測試集上達到了71.6%的IOU指標。

2.DeepLabv3

DeepLabv3是DeepLab系列的第二個版本,相較於前版,最大的改動之一在於拋棄了CRF後端處理模組。此外,論文著重闡明瞭空洞卷積能夠在不降低特徵圖解析度的條件下提取大範圍特徵(大感受野)的能力;基於提取多尺度特徵的思想,作者充分利用了空洞卷積的優勢,提出級聯和並聯兩種形式的、能夠提取多尺度特徵的DeepLab模型。

如原文圖1所示,空洞卷積的基本原理就是在傳統卷積核的卷積平面上進行不同程度的補零,用膨脹率rate來衡量空洞卷積的視野大小。具體地,在每兩個有效位置之間會補上rate-1個零,從直觀上看,空洞卷積將卷積核的有效位置分散到一個更大的區域內。通過改變rate值,same padding下的Atrous convolution能很輕易地實現無需下采樣的多級特徵提取。

如原文的圖3從上到下依次是傳統的DCNN網路、級聯的空洞卷積網路。從圖示可以直觀看到,如果用output_stride定義輸入影象大小與最終輸出的特徵圖的平面大小的比值,傳統的DCNN網路為了實現高階抽象特徵的提取,最後的輸出特徵圖被壓縮得很小;對比之下,採用了空洞卷積的級聯DCNN網路,在不過分壓縮特徵圖大小的情況下,採用不同rate的級聯空洞卷積層,同樣提取到了不同層次的特徵,而且最終輸出了內涵更加豐富的特徵圖(denser feature maps)。

如原文圖5所示,論文作者借鑑了已有的空洞卷積金字塔池化結構 (Atrous Spatial Pyramid Pooling, ASPP), 提出了並聯的DeepLabv3模型。這種模型的優越性在於,極大地利用了對多尺度特徵的挖掘,在前面的卷積層提到到部分低層次特徵後,以不同rate的空洞卷積進一步提取不同尺度的特徵,並將多尺度特徵一併連線在一起,作為最後卷積層的輸入。此處的一個細節在於,論文作者充分考慮了空洞卷積的邊緣效應,即當rate極大時,空洞卷積將退化成1*1卷積而失效。因此作者在ASPP模組中加入了Global Average Pooling後的特徵,以代替高膨脹率的空洞卷積對全域性特徵進行提取。

論文中還針對空洞卷積模組提出了multi-grid的概念。由於DeepLabv3的主體網路是ResNet, ResNet由一個個殘差模組構成,而每一個殘差模組裡面包含了3個Convolution Layer。作者在原有網路的基礎上,用空洞卷積代替傳統的卷積。具體地,一個rate=2的Block,採用(1, 2, 4)的multi-grid,這就意味著裡面三個層的空洞卷積rate為2*(1, 2, 4) = (2, 4, 8)。作者通過實驗發現,改變某個Block的multi-grid會對模型效能造成影響,也就是說通過精巧地微調multi-grid還可以進一步改善整個模型的效能。

在實驗部分,論文作者對多個引數進行了調參實驗,包括output_stride、multi-grid、multi-scale inference、left-right flipped inference等等,最終在Pascal VOC 2012資料集上達到了85.7%的IOU指標。

3.DeepLabv3+

DeepLabv3+是DeepLab系列的最新版本,v3+版本並沒有對v3版本的網路內部結構進行修改,而是採用了Encoder-Decoder的思想,在原有特徵提取網路的後端級聯了一個精心設計的Decoder結構。此外作者還在文中討論了Depthwise Separable Convolution以及Xception-based DeepLab Model。

如原文圖2所示,DeepLabv3+的Decoder結構將Encoder最終輸出的高階語義特徵與Encoder前端輸出的低階特徵連線在一起,再次經過一些卷積層的提取和整合,最終上取樣為含Logits的Belief Maps。作者認為,DeepLabv3版本將Encoder輸出的特徵圖直接上取樣為Logits相當於連線了一個很粗糙的Decoder,不能很好地利用Encoder提取到的特徵資訊,而DeepLabv3+的Decoder則充分整合利用了高階和低階的語義特徵,因此能夠明顯提高模型效能。

如原文圖3所示,作者考慮到僅僅將傳統的卷積核替換為空洞卷積核,雖然能夠很好地提高模型的效能,卻帶來了很大的計算開銷,尤其是我們常常需要利用rate值比較大的空洞卷積核。作者提出可以借鑑現有的Depthwise Separable Convolution結構,假定每個卷積核的通道之間是互不關聯的,那麼對於傳統的卷積核來說,每一個卷積核的引數都是不共享的;而對於Depthwise Separable Convolution來說,所有的卷積核都共用同一組卷積核引數,區別在於傳統卷積會把各個通道的卷積結果在相同位置上簡單累加起來,而Depthwise Separable Convolution則會在平面卷積後,針對不同的卷積核採用多組不同的1*1卷積引數實現通道間的特徵累加。更加簡單地說,Depthwise Separable Convolution得到的不同feature map,是通過對同一組平面卷積結果的不同線性加權得到的,而非對不同組的平面卷積結果進行簡單累加。

最後,為了提高DeepLabv3+的模型競爭力,作者用Xception代替了原來的ResNet作為主幹網路,最終在Pascal VOC 2012資料集上達到了87.8%的IOU指標。