天天看點

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

簡介

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

常用的Backbone

圖像語義分割任務絕大多數算法的CNN部分都是基于ResNet作為backbone,通常用到Conv1~Conv5的部分。Conv1~Conv5特征圖分别相較于輸入圖像,尺寸下采樣 2 1 2^1 21~ 2 5 2^5 25倍。特征融合也是在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。

P 5 = c o n v 1 x 1 ( C 5 ) P_5 = conv_{1x1}(C5) P5​=conv1x1​(C5)

P 4 = c o n v 1 x 1 ( C 4 ) + u p s a m p l e 2 x ( P 5 ) P_4 = conv_{1x1}(C4) + upsample_{2x}(P5) P4​=conv1x1​(C4)+upsample2x​(P5)

P 3 = c o n v 1 x 1 ( C 3 ) + u p s a m p l e 2 x ( P 4 ) P_3 = conv_{1x1}(C3) + upsample_{2x}(P4) P3​=conv1x1​(C3)+upsample2x​(P4)

P3、P4、P5特征圖的通道數一緻,最後分别在P3、P4、P5上預測出Segmentation map,共享分類器。

總結:

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

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得到特征圖 y c y_c yc​。接着對 y c y_c yc​分别使用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上有很多代碼可供參考,特征融合方式也可以根據自己的任務進行修改。

繼續閱讀