介绍

使用DCNN(Deep Convolution Neural Network)进行语义分割存在两个挑战:

  1. 池化层的存在。连续的池化操作降低了特征图的分辨率,有利于学习到更加抽象的特征,但由于丢失了部分空间细节信息,因此对稠密预测任务(dense prediction tasks)不利。带孔卷积能让我们在不提高参数量的前提下控制特征图的分辨率,从而丢弃池化操作。

1.png

  1. 目标的不同尺度。现有多种处理多尺度目标的方法,我们主要考虑4种,如图所示:

2.png

  • (a) Image Pyramid:将输入图片放缩成不同比例,分别应用在DCNN上,将预测结果融合得到最终输出。
  • (b) Encoder-Decoder:利用Encoder阶段的多尺度特征,在Decoder阶段恢复空间分辨率(代表工作有FCN、SegNet、PSPNet等)。
  • (c) Deeper w. Atrous Convolution:在原始模型的顶端级联一些额外的模块,例如DenseCRF,捕捉像素间长距离信息。
  • (d) Spatial Pyramid Pooling:空间金字塔池化具有不同采样率和多种视野的卷积核,能够以多尺度捕捉对象。

主要贡献:

  1. 本文重新讨论了空洞卷积(Atrous convolution)的使用,这让我们在级联模块和空间金字塔池化的框架下,能够获取更大的感受野从而获取多尺度信息。
  2. 改进了DeepLabv2中的ASPP(Atrous Spatial Pyramid Poolling)模块:由不同采样率的空洞卷积和BN层组成,我们尝试以级联或并行的方式布局模块。
  3. 讨论了一个重要问题:使用大采样率(dilation rate)的3×3空洞卷积时,因为图像边界响应无法捕捉远距离信息,会退化为1×1的卷积, 我们建议将图像级特征融合到ASPP模块中。
  4. 阐述了训练细节并分享了训练经验,论文提出的"DeepLabv3"改进了以前的工作,获得了很好的结果。

方法

在本节中,我们将回顾如何应用Atrous Convolution来提取密集特征图用于语义分割。然后,我们讨论使用级联或并联的Atrous Convolution模块。

Atrous Convolution for Dense Feature Extraction

一个二维信号的Atrous Convolution的输出表达式为:

$$ \boldsymbol{y}[i]=\sum_{\boldsymbol{k}} \boldsymbol{x}[\boldsymbol{i}+r \cdot \boldsymbol{k}] \boldsymbol{w}[\boldsymbol{k}] $$

其中,$i$ 是输出 $y$ 中的位置,$w$ 是滤波器,$x$ 是输入。$r$ 是采样率,标准卷积是 $r=1$ 的特例。

再提出一个概念output_stride,可以简单理解为输出的特征图是输入的多少分之一。如output_stride=32时,输入即为输出的32倍,而这也是一般的image classification任务常用的倍率(在全连接层或者全局最大/平均池化层之前的输出)。因此为了得到密集的特征图就应该减小output_stride,我们把下采样的Convolution全部换成了Atrous Convolution(rate=2)。

Going Deeper with Atrous Convolution

我们首先探讨将空洞卷积应用在级联模块。具体来说,我们取ResNet中最后一个block,在下图中为block4,并在其后面增加级联模块。

3.png

如上图(a)所示,整体图片的信息总结到后面非常小的特征映射上,但实验证明这是不利于语义分割的。如下图:

4.png

使用步幅越长的特征映射,得到的结果反倒会差,结果最好的out_stride = 8 需要占用较多的存储空间。因为连续的下采样会降低特征映射的分辨率,细节信息被抽取,这对语义分割是有害的。

如上图(b)所示,可使用不同采样率的空洞卷积保持输出步幅的为out_stride = 16.这样不增加参数量和计算量同时有效的缩小了步幅。

Atrous Spatial Pyramid Pooling

对于在DeepLabv2中提出的ASPP模块,其在特征顶部映射图并行使用了四种不同采样率的空洞卷积。这表明以不同尺度采样是有效的,我们在DeepLabv3中向ASPP中添加了BN层。不同采样率的空洞卷积可以有效的捕获多尺度信息,但是,我们发现随着采样率的增加,滤波器的有效权重(权重有效的应用在特征区域,而不是填充0)逐渐变小。如下图所示:

5.png

当我们不同采样率的3×3卷积核应用在65×65的特征映射上,当采样率接近特征映射大小时,3×3的滤波器不是捕捉全图像的上下文,而是退化为简单的1×1滤波器,只有滤波器中心点的权重起了作用。

为了克服这个问题,我们考虑使用图片级特征。具体来说,我们在模型最后的特征映射上应用全局平均,将结果经过1×1的卷积,再双线性上采样得到所需的空间维度。最终,我们改进的ASPP包括:

  • 一个1×1卷积和三个3×3的采样率为rates={6,12,18}的空洞卷积,滤波器数量为256,包含BN层。针对output_stride=16的情况。如下图(a)部分Atrous Spatial Pyramid Pooling。
  • 图像级特征,即将特征做全局平均池化,经过卷积,再融合。如下图(b)部分Image Pooling。

改进后的ASPP模块如下图所示:

6.png

注意当output_stride=8时,加倍了采样率。所有的特征通过1×1级联到一起,生成最终的分数。

实验结果

采用的是预训练的ResNet为基础层,并配合使用了空洞卷积控制输出步幅。因为输出步幅output_stride(定义为输入图像的分辨率与最终输出分辨率的比值)。当我们输出步幅为8时,原ResNet的最后两个block包含的空洞卷积的采样率为r=2和r=4。

模型的训练设置:

名称设置
数据集PASCAL VOC 2012
工具tensorflow
裁减尺寸513
学习率策略采用poly策略, 在初始学习率基础上,乘以$\left(1-\frac{i t e r}{m a x_{-} i t e r}\right)^{p o w e r}$,其中$\text { power }=0.9$
BN层策略当output_stride=16时,我们采用batchsize=16,同时BN层的参数做参数衰减0.9997。<br/>在增强的数据集上,以初始学习率0.007训练30K后,冻结BN层参数。<br/>采用output_stride=8时,再使用初始学习率0.001训练30K。<br/>训练output_stride=16比output_stride=8要快很多,因为中间的特征映射在空间上小的四倍。但因为output_stride=16在特征映射上粗糙是牺牲了精度。<br/>
上采样策略在先前的工作上,<br/>我们是将最终的输出与GroundTruth下采样8倍做比较<br/>现在我们发现保持GroundTruth更重要,故我们是将最终的输出上采样8倍与完整的GroundTruth比较。

Going Deeper with Atrous Convolution实验

我们首先试试级联使用多个带空洞卷积的block模块。

  • ResNet50:如下图,我们探究输出步幅的影响,当输出步幅为256时,由于严重的信号抽取,性能大大的下降了。

4.png

而当我们使用不同采样率的空洞卷积,结果大大的上升了,这表现在语义分割中使用空洞卷积的必要性。

  • ResNet50 vs. ResNet101: 用更深的模型,并改变级联模块的数量。如下图,当block增加性能也随之增加。

7.png

  • Multi-grid: 我们使用的变体残差模块,采用Multi-gird策略,即主分支的三个卷积都使用空洞卷积,采样率设置Multi-gird策略。根据下图:

8.png

应用不同策略通常比单倍数$\left(r_{1}, r_{2}, r_{3}\right)=(1,1,1)$效果要好;

简单的提升倍数是无效的$\left(r_{1}, r_{2}, r_{3}\right)=(2,2,2)$;

最好的随着网络的深入提升性能,即block7下$\left(r_{1}, r_{2}, r_{3}\right)=(1,2,1)$。

  • Inference strategy on val set:推断期间使用output_stride = 8,有着更丰富的细节内容:

9.png

Atrous Spatial Pyramid Pooling实验

  • ASPP模块相比以前增加了BN层,对比multi-grid策略和图片层级特征提升实验结果:

10.png

  • Inference strategy on val set:推断期间使用output_stride = 8,有着更丰富的细节内容,采用多尺度输入和翻转,性能进一步提升了:

11.png

在PASCAL VOC 2012上表现:

12.png

参考文献

[1] Rethinking Atrous Convolution for Semantic Image Segmentation

[2] DFann的CSDN博客

Last modification:August 11th, 2019 at 11:13 pm
如果觉得我的文章对你有用,请随意赞赏