探索图像语义分割中的特征融合

简介

图像语义分割是计算机视觉领域一大重要分支,在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上有很多代码可供参考,特征融合方式也可以根据自己的任务进行修改。

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