語義分割淺析

erfurt00_meitu_2.jpg

背景

對圖像而言,常見的任務是:後端

  • 圖像分類:提取類別特徵,如:VGG19網絡
  • 目標檢測:提取類別,位置特徵,如:YOLO網絡
  • 語義分割(實例分割):提取類別,位置特徵,針對每一個像素,如:Deeplab網絡

咱們知道,在作圖像分類的時候,通常會在模型的最後添加全鏈接層+softmax用於預測。可是,全鏈接層會把卷積學習到的類別,位置特徵抽象成一維的機率信息,能夠識別整個圖片的類別,不能標識每一個像素的類別。所以,爲了保留圖像特徵咱們將全鏈接層替換爲卷積層。網絡

clipboard.png

這樣,模型的輸出再也不是一維,而是二維的圖。框架

clipboard.png

因爲特徵圖通過一系列的卷積和池化後(保持特徵不變性,增大感覺野,節省計算資源等)形成分辨率下降,丟失大量細節和邊緣信息,所以咱們須要經過必定的手段還原原圖分辨率。ide

clipboard.png

不一樣的模型會採起不一樣的還原方式,圖上以FCN爲例,採用反捲積還原分辨率並使用加和的方式找回下采樣階段丟失的信息,直接把編碼階段的特徵圖加到解碼階段中來。函數

基石FCN模型

FCN闡釋瞭如何將CNN應用到語義分割問題上,是深度學習應用此問題的基石。工具

clipboard.png

文章開始,咱們談到模型最後的全鏈接層不適用與分割任務,須要替換成卷積層,以此獲取二維的特徵圖而後接softmax,對每一個像素點進行分類。學習

clipboard.png

先經過卷積,池化下采樣,而後上採樣還原分辨率。上採樣通常有兩種方式:雙線性插值(Deeplab),反捲積(FCN)。測試

v2-25c8803025317b450b94c305eb0796c0_hd.jpg
v2-0ae1ec7b4d1ae387554199fa1c6f7169_hd.jpg

Google DeepLab v1

DeepLab是針對語義分割任務提出的模型,主要使用DCNN(深度卷積網絡),CRF(條件隨機場),空洞卷積作像素級預測。DCNN在語義分割中存在兩個主要問題:優化

  • 下采樣帶來的分辨率降低,細節信息丟失
  • 平移不變性,限制了定位精度

針對以上問題,Deeplab採用空洞卷積擴大感覺野,獲取更多的上下文信息。使用全鏈接條件隨機場(DenseCRF)提升模型捕獲細節的能力。
DCNN以VGG16模型爲後端網絡,將FC層所有轉爲卷積層,改爲全卷積網絡形式。最後的兩個池化層不下采樣,經過2或4的採樣率空洞卷積對特徵圖擴大感覺野,縮小步幅。
模型訓練的時候講VGG16的權重作微調,損失函數取輸出特徵圖ground truth下采樣8倍作交叉熵和;測試時取輸出圖雙線性上採樣獲得的結果(DCNN預測物體的位置是粗略的,沒有確切的輪廓,針對此問題採用全鏈接的CRF提高分割精度)。編碼

Google DeepLab v2

DeepLab v2相比DeepLab v1基礎層由VGG16改成ResNet,添加多尺度和ASPP模塊獲得更好的分割結果。

  • 空洞卷積做爲密集預測的強大工具,能夠擴大感覺野,在不增長參數量和計算量的同時獲取更多的上下文。
  • 提出ASPP(空洞空間卷積池化金字塔),並行的採用多采樣率的空洞卷積進行探測,以多個比例捕獲對象及圖像上下文。
  • 組合DCNN和機率模型,改善分割邊界結果。

模型運行步驟:

  • 輸入通過改進的DCNN(帶空洞卷積和ASPP模塊)
  • 經過雙線性插值恢復原圖大小(FCN採用反捲積)
  • 經過全鏈接的CRF細化預測結果,獲得最終輸出

Google DeepLab v3

DeepLab v3相比DeepLab v2:

  • 從新討論了空洞卷積的使用,讓咱們在級聯模塊和空間金字塔池化的框架下,可以獲取更大的感覺野從而獲取多尺度信息。
  • 改進ASPP模塊,由不一樣採樣率的空洞卷積和BN層組成。
  • 使用大采樣率的3x3空洞卷積,由於圖像邊界響應沒法捕獲遠距離信息,會退化爲1x1卷積,所以將圖像級特徵融合到ASPP模塊。
  • 沒有使用CRF作後期優化處理

Google DeepLab v3+

00.png
DeepLab v3+採用編碼器,解碼器結構,經過使用解碼器模塊改善物體邊緣的分割結果,還嘗試使用Xception做爲編碼器。
01.png
如圖所示,空間金字塔池化能夠池化不一樣分辨率的特徵圖來捕獲上下文信息。編碼器解碼器結構能夠捕獲鋒利的邊界。先4倍上採樣,而後與編碼器中的特徵圖合併,最後4倍上採樣恢復到原始圖像大小。
encoder就是DeepLab V3,經過修改ResNet101最後兩(一)個block的stride,使得output stride爲8(16)。以後在block4後應用改進後的Atrous Spatial Pyramid Pooling,將所得的特徵圖concatenate用1×1的卷積獲得256個通道的特徵圖。
在decoder中,特徵圖首先上採樣4倍,而後與encoder中對應分辨率低級特徵concatenate。在concatenate以前,因爲低級特徵圖的通道數一般太多(256或512),而從encoder中獲得的富含語義信息的特徵圖通道數只有256,這樣會淡化語義信息,所以在concatenate以前,須要將低級特徵圖經過1×1的卷積減小通道數。在concatenate以後用3×3的卷積改善特徵,最後上採樣4倍恢復到原始圖像大小。

U-Net網絡

U-Net網絡能夠利用較少的數據集進行端到端訓練,醫學領域應用較多(醫學領域的標註數據獲取成本很高)。

  • 爲了更有效的利用標註數據,採用數據加強的方法(訓練樣本進行隨機彈性形變)
  • 網絡由收縮路徑獲取上下文信息以及一個對稱的擴張路徑用以精肯定位。

u-net-architecture.png

如圖所示,網絡結構由contracting path和expansive path組成。
contracting:

  • 含有重複結構,每一個都有2個3x3卷積層,relu層和2x2最大池化層
  • 每一次下采樣都將特徵通道數加倍

expansive path:

  • 每一步都使用反捲積,每次反捲積後將通道數量減半,特徵圖大小加倍。
  • 反捲積後,將反捲積的結果與contracting path中對應的步驟的特徵圖拼接起來
  • 對拼接後的map再進行2次3*3卷積
  • 最後一層卷積核大小爲1x1,將64通道的特徵圖轉爲特定類別數量
相關文章
相關標籤/搜索