圖像語義分割(一)

1 圖像語義分割的概念

圖像語義分割,簡單而言就是給定一張圖片,對圖片上的每一個像素點分

這裏寫圖片描述

2 語義分割的網絡

2.1 FCN 全卷積網絡

作者的FCN主要使用了三種技術:

  • 卷積化(Convolutional)
  • 上採樣(Upsample)
  • 跳躍結構(Skip Layer)

直接進行像素級別端到端(end-to-end)的語義分割,它可以基於主流的深度卷積神經網絡模型(CNN)來實現。
這裏寫圖片描述

2.1.1 卷積化

在FCN中,傳統的全連接層 fc6 和 fc7 均是由卷積層實現,而最後的 fc8 層則被替代爲一個 21 通道(channel)的 1x1 卷積層,作爲網絡的最終輸出。之所以有 21 個通道是因爲 PASCAL VOC 的數據中包含 21 個類別(20個object類別和一個「background」類別)。

2.1.2 上採樣、跳躍結構

FCN 利用雙線性插值將響應張量的長寬上採樣到原圖大小,另外爲了更好的預測圖像中的細節部分,FCN 還將網絡中淺層的響應也考慮進來。就是將 Pool4 和 Pool3 的響應也拿來,分別作爲模型 FCN-16s 和 FCN-8s 的輸出,與原來 FCN-32s 的輸出結合在一起做最終的語義分割預測(如下圖所示)。

這裏寫圖片描述

2.1.3 上採樣的方法

FCN的架構使用了可學習的反捲積濾波器來上採樣特徵圖。之後上採樣的特徵圖被加入編碼階段產生的元素級的特徵圖中。

  • 先進行上採樣,即擴大像素;
  • 再進行卷積——通過學習獲得權值
  • 卷積核尺寸大,一步到位
    這裏寫圖片描述

2.1.4 FCN 的結果

下圖是不同層作爲輸出的語義分割結果,可以明顯看出,由於池化層的下采樣倍數的不同導致不同的語義分割精細程度。如 FCN-32s,由於是 FCN 的最後一層卷積和池化的輸出,該模型的下采樣倍數最高,其對應的語義分割結果最爲粗略;而 FCN-8s 則因下采樣倍數較小可以取得較爲精細的分割結果。
這裏寫圖片描述

2.2 Dilated Convolutions

FCN 的一個不足之處在於,由於池化層的存在,響應張量的大小(長和寬)越來越小,但是FCN的設計初衷則需要和輸入大小一致的輸出,因此 FCN 做了上採樣。但是上採樣並不能將丟失的信息全部無損地找回來。
池化層可以能增大上層卷積核的感受野,而且能聚合背景同時丟棄部分位置信息。然而,語義分割方法需對類別圖譜進行精確調整,因此需保留池化層中所捨棄的位置信息。

對此,dilated convolution 是一種很好的解決方案——既然池化的下采樣操作會帶來信息損失,那麼就把池化層去掉。但是池化層去掉隨之帶來的是網絡各層的感受野(Receptive field)變小,這樣會降低整個模型的預測精度。Dilated convolution 的主要貢獻就是,如何在去掉池化下采樣操作的同時,而不降低網絡的感受野。

2.2.1 膨脹卷積(Dilated Convolutions)

以 3×3 的卷積核爲例,傳統卷積核在做卷積操作時,是將卷積核與輸入張量中「連續」的 3×3 的 patch 逐點相乘再求和(如下圖a,紅色圓點爲卷積覈對應的輸入「像素」,綠色爲其在原輸入中的感知野)。而 dilated convolution 中的卷積核則是將輸入張量的 3×3 patch 隔一定的像素進行卷積運算。如下圖 b 所示,在去掉一層池化層後,需要在去掉的池化層後將傳統卷積層換做一個「dilation=2」的 dilated convolution 層此時卷積核將輸入張量每隔一個「像素」的位置作爲輸入 patch 進行卷積計算,可以發現這時對應到原輸入的感知野已經擴大(dilate)倍 ;同理,如果再去掉一個池化層,就要將其之後的卷積層換成「dilation=4」的 dilated convolution 層,如圖 c 所示。這樣一來,即使去掉池化層也能保證網絡的感受野,從而確保圖像語義分割的精度。
這裏寫圖片描述

感受野尺寸的擴充公式:

3+(dilate1)4

2.2.2 優點

擴展卷積在保持參數個數不變的情況下增大了卷積核的感受野,同時它可以保證輸出的特徵映射(feature map)的大小保持不變。一個擴張率爲2的3×3卷積核,感受野與5×5的卷積核相同,但參數數量僅爲9個,是5×5卷積參數數量的36%
這裏寫圖片描述

2.3以條件隨機場爲代表的後處理操作

當下許多以深度學習爲框架的圖像語義分割工作都是用了條件隨機場(Conditional random field,CRF)作爲最後的後處理操作來對語義預測結果進行優化。

  • CNN架構的空間變換無關性限制了分割任務中的空間準確性。
  • CRFs能夠將低級的圖像信息如像素之間的交互,和多類推理系統的輸出結合起來即每個像素的標籤,結合起來。這種結合對於獲取大範圍的依賴關係是非常重要的。
  • DeepLab模型利用全連接對級CRF作爲一個獨立的後處理階段以增強分割效果。其將每個像素建模爲場中的一個節點,對於每對像素,不管有多遠都使用一個對級項(密集或全連接因子圖)。
    • 考慮了短程和長程的交互,有助於系統修復細節。
    • 全連接模型較爲低效,可以使用概率推理進行替代
      這裏寫圖片描述

2.3.1 CRF 說明

在全鏈接的 CRF 模型中,對應的能量函數爲:

E(x)=iψμ(xi)+i<jψp(xi,yi)

其中,ψμ 是一元項,表示xi 像素對應的語義類別, 其類別可以由 FCN 或者其他語義分割模型的預測結果得到而第二項爲二元項,二元項可將像素之間的語義聯繫/關係考慮進去。例如,「天空」和「鳥」這樣的像素在物理空間是相鄰的概率,應該要比「天空」和「魚」這樣像素的相鄰概率大。最後通過對 CRF 能量函數的優化求解,得到對 FCN 的圖像語義預測結果進行優化,得到最終的語義分割結果。值得一提的是,[3]已經將原本與深度模型訓練割裂開的 CRF 過程嵌入到神經網絡內部。即將 FCN+CRF 的過程整合到一個端到端的系統中,這樣做的好處是 CRF 最後預測結果的能量函數可以直接用來指導 FCN 模型參數的訓練,而取得更好的圖像語義分割結果。

2.4 解碼器的變種(Decoder variants)

  • 編碼:產生低分辨率的圖像表示或特徵映射的過程,將圖像轉化爲特徵;
  • 解碼:將低分辨率圖像映射到像素級標籤的過程,將特徵轉化爲圖像標籤。

2.4.1 SegNet

SegNet由一系列上採樣和卷積層組成,最後是一個softmax分類器預測像素級的標籤,其輸出與輸入大小相同。解碼階段每個上採樣層與編碼階段的最大池化相對應(上採樣與最大池化使用類似的對應規則)。這些層使用編碼階段最大值池化所對應的特徵映射,將特徵映射爲標籤。特徵圖上採樣後的結果,與一組訓練好的濾波器組進行卷積產生密集特徵圖。當特徵圖恢復到原始的分辨率時,之後就通過softmax分類器產生最終的分割結果。
這裏寫圖片描述

2.4.1.1 上採樣方式

在SegNet中,進行最大池化時會記錄該最大值所在位置,從而在上採樣時,使用相同的位置關係將其映射到較大的特徵圖中,其餘部分用零填充。這裏寫圖片描述

2.5 多尺度預測

CNNs中的每個參數都影響着特徵圖的尺度。濾波器存在只能檢測特定尺度特徵的危險(假設與角度無關)。參數也可能和當前問題有關,使模型難以泛化到不同的大小。其中一種解決方法就是使用多尺度的網絡,生成多個尺度下的預測結構,之後將其結合到一個輸出中。

  • 基於VGG-16的多尺度全連接網絡模型。該網絡有兩條路徑,一條處理原始大小的圖片,其網絡較淺。另一條路徑則處理二倍大小的圖片,其網絡結構爲全連接的VGG-16和一個卷積層,其處理結果經過上採樣與第一條路徑的相結合。融合後的輸出經過另一系列卷積層產生最終的輸出。該網絡對尺度變換魯棒性較強。
  • 另一種途徑是使用由4種尺度結合的CNNs的方法。這4個網絡具有相同的結構。其中的一個網絡用於尋找場景的語義標籤。該網絡從粗到細粒度的提取特徵。
    這裏寫圖片描述
  • 另一種網絡結構是由n個在不同尺度上操作的FCNs組成。從網絡中提取到的特徵混合在一起(經過必要的上採樣和填充),之後經過卷積層產生最終的分割結果。其主要貢獻爲兩個階段的學習過程。第一階段,獨立地訓練各個網絡,之後將網絡組合到一起,對最後一層進行微調。這種多次度模型允許高效地添加任意數量的訓練好的層。

2.6 特徵混合

另一種向全卷積架構中加入上下文信息的方式是特徵混合。

  • 一種方法是將全局特徵(從網絡前一層中提取的)和從子序列中的局部特徵相混合。通用的架構如原始的FCN使用跳躍連接(skip connections)來實現不同層特徵圖的混合。
    這裏寫圖片描述
  • 另一種方法是早期混合。全局特徵被反池化爲局部特徵大小,之後混合產生用於下一層的特徵
    這裏寫圖片描述

2.7 遞歸神經網絡

2.7.1 ReSeg

ReSeg是基於ReNet的語義分割架構。輸入圖像經過VGG-16第一層處理,將特徵圖輸入到多個ReNet層中進行微調。最後使用反捲積(transposed convolution)對特徵圖進行上採樣。這種方法中門遞歸單元的使用能夠減少內存佔用和提高計算效率上。
這裏寫圖片描述
長項依賴存在梯度消失的問題。一些衍生模型如LSTM( Long Short-Term
Memory ,長短期記憶)網絡和GRUs可以避免這個問題。

3 後續

基於深度學習的圖像語義分割技術雖然可以取得相比傳統方法突飛猛進的分割效果,但是其對數據標註的要求過高:不僅需要海量圖像數據,同時這些圖像還需提供精確到像素級別的標記信息(Semantic labels)。因此,越來越多的研究者開始將注意力轉移到弱監督(Weakly-supervised)條件下的圖像語義分割問題上。在這類問題中,圖像僅需提供圖像級別標註(如,有「人」,有「車」,無「電視」)而不需要昂貴的像素級別信息即可取得與現有方法可比的語義分割精度。

另外,示例級別(Instance level)的圖像語義分割問題(即實例分割)也同樣熱門。該類問題不僅需要對不同語義物體進行圖像分割,同時還要求對同一語義的不同個體進行分割(例如需要對圖中出現的九把椅子的像素用不同顏色分別標示出來) @ 實例分割

  • FCN更像一種技巧。隨着基本網絡(如VGG, ResNet)性能的提升而不斷進步。
  • 深度學習+概率圖模型(PGM)是一種趨勢。其實DL說白了就是進行特徵提取,而PGM能夠從數學理論很好的解釋事物本質間的聯繫。
  • 概率圖模型的網絡化。因爲PGM通常不太方便加入DL的模型中,將PGM網絡化後能夠是PGM參數自學習,同時構成end-to-end的系統。

特徵融合的種類總結:

  • FCN式的逐點相加,對應caffe的EltwiseLayer層,對應tensorflow的tf.add()
  • U-Net式的channel維度拼接融合,對應caffe的ConcatLayer層,對應tensorflow的tf.concat()

4 參考

[1]FCN-1
[2]語義分割 FCN & U-net & SegNet & DeconvNet
[3] Shuai Zheng, Sadeep Jayasumana, Bernardino Romera-Paredes, Vibhav Vineet, Zhizhong Su, Dalong Du, Chang Huang and Philip H. S. Torr. Conditional Random Fields as Recurrent Neural Networks. International Conference on Computer Vision, 2015.
[4]圖像語義分析學習(一):圖像語義分割的概念與原理以及常用的方法
[5]基於深度學習的圖像語義分割技術概述之4常用方法

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