探索圖像語義分割中的特徵融合

簡介

圖像語義分割是計算機視覺領域一大重要分支,在benchmark性能一次次提升的過程中,特徵融合起到很重要的作用。下面,將介紹圖像語義分割任務中歷年的比較不錯的特徵融合方法。

常用的Backbone

圖像語義分割任務絕大多數算法的CNN部分都是基於ResNet作爲backbone,通常用到Conv1~Conv5的部分。Conv1~Conv5特徵圖分別相較於輸入圖像,尺寸下采樣212^1~252^5倍。特徵融合也是在Conv1~Conv5的特徵圖(feature maps)上進行。
在這裏插入圖片描述

Encoder-Decoder (U-Net)

U-Net: Convolutional Networks for Biomedical Image Segmentation,ISBL 2015

在這裏插入圖片描述
在U-Net的框架圖上,已經很清晰地給出特徵融合方式,是基於Encoder-Decoder架構。Encoder-Decoder架構提取了全局特徵,灰色箭頭的skip-connection可以將局部特徵與全局特徵融合(concat方式)。最後再在融合到特徵上預測出segmentation map,見上圖右上角部分。
總結:

  • 比較早地給出基於Encoder-Decoder和skip-connection特徵融合方法。
  • 最後的融合的特徵尺寸太大,訓練和推理耗費時間。

Feature Pyramid (FPN)

Feature Pyramid Networks for Object Detection,CVPR 2017
在這裏插入圖片描述
FPN是目標檢測任務中提出來的,但是也可以應用於語義分割。Backbone得到相應的feature maps,如Conv1~Conv5,分別記作C1、C2、C3、C4、C5。如上圖只在倒數前三層上做特徵融合,因此取C3、C4、C5。
P5=conv1x1(C5)P_5 = conv_{1x1}(C5)
P4=conv1x1(C4)+upsample2x(P5)P_4 = conv_{1x1}(C4) + upsample_{2x}(P5)
P3=conv1x1(C3)+upsample2x(P4)P_3 = conv_{1x1}(C3) + upsample_{2x}(P4)
P3、P4、P5特徵圖的通道數一致,最後分別在P3、P4、P5上預測出Segmentation map,共享分類器。
總結:

  • FPN和U-Net類似,也是基於Encoder-Decoder提取全局特徵,區別是使用element-add方式來融合局部特徵,其次是FPN在多個特徵圖上預測分類器。
  • FPN增加的卷積核較少,而且特徵圖的尺寸下采樣了2n2^n,訓練和推理較快。

Atrous Spatial Pyramid Pooling (DeepLab-V2)

DeepLab: Semantic Image Segmentation with Deep Convolutional Nets, Atrous Convolution, and Fully Connected CRFs,TPAMI 2017
在這裏插入圖片描述
ASPP是DeepLab-V2中提出的基於空洞卷積特徵金字塔的特徵融合方式,在DeepLab-V3中也有用到。對於backbone提取的Conv5特徵圖,分別使用空洞卷積(rate=6,12,18,24,卷積核3x3)得到新的特徵圖,再concat起來,得到融合後的特徵。
代碼:prototxt_and_model.zip

  • 使用空洞卷積來提取特徵,擴大感受野以提取更好的全局特徵,再與原先的相對局部的特徵進行融合。
  • DeepLab v2也使用了multi-scale inputs,這也是一種更好地提取特徵的方法。

Pyramid Pooling Module (PSPNet)

Pyramid Scene Parsing Network, CVPR 2017
在這裏插入圖片描述
上圖第(c)部分即爲PSPNet的特徵融合部分。對於圖像經過backbone得到的feature map。分別對其進行pooling操作,得到尺寸分別爲1x1、2x2、3x3、6x6的特徵圖,然後使用1x1卷積把通道裁剪成原本的1/4,再分別upsample(雙線性插值)成原先的feature map尺寸,再和原先的feature map concat起來得到融合後的特徵。
總結:

  • 對backbone得到的相對局部的特徵圖pooling到1x1、2x2、3x3和6x6,提取出全局特徵再和特徵圖concat起來進行融合。
  • PSPNet的特徵融合更強調了gloabl prior,因爲全局的上下文信息理論上分析來說是更有利的。

Joint Pyramid Upsampling (FastFCN)

FastFCN: Rethinking Dilated Convolution in the Backbone for Semantic Segmentation,2019
在這裏插入圖片描述
JPU是對Conv3~Conv5不同尺寸的特徵圖上操作。先進行3x3卷積,再Upsample成Conv3的8x尺寸,concat得到特徵圖ycy_c。接着對ycy_c分別使用Stride Conv(論文中有介紹),Dilation取1、2、4、8,把特徵圖再concat起來,最後使用3x3卷積得到融合後的特徵。
代碼:customize.py->class JPU(nn.Module)
總結:

  • 使用了Stride Conv+Dialted Conv做特徵融合。

總結

這些特徵融合方式較爲相似,核心都是提取更好的global prior與local prior融合。在CNN中,隨着卷積層數和下采樣的增加,特徵圖通道數量增加而特徵圖的尺寸降低,特徵表示也從local趨向於global,從low-level趨向於high-level,高層的特徵蘊含更豐富的語義信息,底層的特徵蘊含更精確的空間位置和顏色等信息。
實驗結果證明,進行特徵融合對分割性能是有提升的。但是具體任務具體分析,可以在自己的backbone上進行嘗試。
注:Github上有很多代碼可供參考,特徵融合方式也可以根據自己的任務進行修改。

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