DeepLabV3+: 在DeepLabV3基础上引入了Decoder

论文地址:https://arxiv.org/pdf/1802.02611.pdf

目录

太长不想看版:

0、摘要

1、引言

2、相关工作

3、方法

3.1、带有空洞卷积的编解码器

3.2、修改Aligned Xception

4、实验

4.1、解码器的设计选择

4.2 ResNet-101 作为Backbone

 4.3、Xception作为 Backbone

5、结论


太长不想看版:

DeepLabv3作为Encoder提取特征,上采样后与backbone中间的低级特征以concat的方式融合,然后利用3*3卷积获得细化的特征,最后再进行上采样恢复到原始分辨率;在backbone部分,使用可分离卷积改进了Xception。

0、摘要

深度神经网络中通常使用空间金字塔池化和编解码结构进行语义分割任务。金字塔池化模块通过利用不同速率、不同有效视场的滤波器或者池化操作来探测输入特征,可以编码多尺度上下文信息;编解码结构则可以通过逐步恢复空间信息来获取更为清晰的物体边界。在这项研究中,我们结合了两者的优点。特别地,我们所提出的模型——DeepLabv3+,通过增加一个简单有效的解码器模块扩展了DeepLabv3,从而改善了分割效果,尤其是物体的边界。我们进一步探索了Xception模型,并在空洞空间金字塔池化模块和解码器模块分别使用了深度可分离卷积。我们在PASCAL VOC 2012和 Cityscapes数据集上验证了该模型的有效性,在不进行任何后处理的情况下,测试集性能分别达到89.0%和82.1%。基于TensorFlow的实现见此处

1、引言

语义分割的目标是为图像中的每个像素分配语义标签,这是计算机视觉的基本课题之一。基于DCNN的全卷积神经网络证明了其远超手工制作特征的传统分割方法。在这项研究中,考虑了两种类型的神经网络:使用了空间金字塔池化的模块、编解码器结构;前者可以通过在不同分辨率下汇集特性来获取丰富的上下文信息,后者能够获得清晰的物体边界。

为了在不同尺度下获得上下文信息,DeepLabv3使用了几个并行的不同速率的空洞卷积(空洞空间金字塔池化,ASPP);而PSPNet则是在不同网格尺度上执行池化操作。尽管在最后一个feature map上编码了丰富的语义信息,但由于在网络backbone中使用了带有步长的池化或者卷积操作,与物体边界相关的细节信息却丢失了。这个问题,可以通过使用空洞卷积提取密集的feature maps来改善,但是,由于现有SOTA模型的设计以及GPU显存的限制,在计算上是不允许输出8倍下采样,甚至是4倍下采样或者更大的feature maps的。以ResNet-101为例,当使用空洞卷积提取比输入小16倍的feature map时,在最后3个残差块(9层)中的features必须进行膨胀。更糟糕的是,如果输出features的尺寸相比输入小8倍,将有26个残差块(78层)受到影响。因此,如果对这类模型提取更密集的输出特征,则需要大量的计算。另一方面,编解码器结构在编码阶段更快(因为没有特征膨胀),并且可以在解码阶段逐步恢复清晰的物体边界。我们试图结合两种方法的优点,提出通过融合多尺度上下文信息来丰富编译码网络中的编码器模块。

特别地,我们提出的模型——DeepLabv3+,通过增加一个简单有效的解码器模块扩展了DeepLabv3,以恢复物体边界。在DeepLabv3的输出中,已经编码了丰富的语义信息,其使用空洞卷积来控制编码特征的密度,这取决于计算资源。此外,解码器模块可以恢复详细的物体边界。如图1所示:

受深度可分离卷积成功的启发,我们也探索了该操作,并通过改进Xception模型展示了在语义分割速度和精度上的提高,类似于可变性卷积的研究;同时,将空洞可分离卷积应用于ASPP和编解码模块。最后,在PASCAL VOC 2012和Cityscapes数据上验证了该模型的有效性,在没有任何后处理的情况下,测试集的性能达到了89.0%和82.1%,达到了SOTA。

总体来讲,贡献如下:

  • 在DeepLabv3基础上,加了一个解码器;
  • 可以通过控制空洞卷积速率来任意改变编码器输出的feature map分辨率;
  • 使用Xception作为backbone(也可使用ResNet101等),并在ASPP和解码器模块中使用了深度可分离卷积,从而产生了一个更快、更强的编解码网络;
  • 该模型达到了新的SOTA;
  • 开源了代码;

2、相关工作

基于FCN的模型在一些语义分割基准集上取得了显著效果。有几个变种模型探索了上下文信息,包括那些多尺度输入或者概率图(如密集CRF)的应用。在这项工作中,主要讨论使用了空间金字塔池化(SPP)和编解码结构的模型。

Spatial pyramid pooling:空间金字塔池化,SPP。PSPNet或DeepLab等模型在几个网格尺度上执行空间金字塔池化,或者应用几种不同速率的并行空洞卷积(ASPP)。这些模型通过利用多尺度信息,在一些基准集上展示了尚可的效果。

Encoder-decoder: 编解码结构已经被用于多种计算机视觉任务,如人体姿态估计、目标检测、语义分割。通常,编码器-解码器网络包含(1)一个编码器模块,逐步减少特征映射并捕获更高的语义信息,(2)一个解码器模块,逐步恢复空间信息。在此基础上,我们提出了使用DeepLabv3作为编码器模块,并添加一个简单而有效的解码器模块,以获得更清晰的分割。如图2:

Depthwise separable convolution: 深度可分卷积或群卷积,这是一种强大的运算,可以降低计算成本和参数数量,同时保持类似(或稍好)的性能。这一操作在最近的许多神经网络设计中被采用。特别地,我们探索了Xception模型,该模型与2017年COCO检测挑战提交的可变性卷积相似,并显示在语义分割任务的准确性和速度方面都有提高。

3、方法

本文的方法主要包括两部分:将DeepLabv3作为编码器,并在编解码器中均使用了空洞可分离卷积;改进了xception,进一步提高了性能与计算速度。

3.1、带有空洞卷积的编解码器

Atrous convolution: 其为标准卷积的推广,通过膨胀率来精准控制输出特征的分辨率,公式为:\boldsymbol{y}[\boldsymbol{i}]=\sum_{\boldsymbol{k}} \boldsymbol{x}[\boldsymbol{i}+r \cdot \boldsymbol{k}] \boldsymbol{w}[\boldsymbol{k}]。其中,x为输入feature map,y为输出feature map,w为卷积核,膨胀率r决定了我们对输入信号采样时所用的步幅。标准卷积即为r为1的情况。通过调整r,可以改变卷积核的感受野。

Depthwise separable convolution: 深度可分离卷积,将一个标准卷积按通道分开,然后使用按点卷积,如1*1卷积,合并计算,大大降低了参数量。具体来说,就是每个通道分别使用卷积,然后使用按点卷积结合每个通道的卷积输出。本文使用的卷积称为空洞可分离卷积,在保持相似(或更好)性能的同时,显著降低了所提模型的计算复杂度。如图3所示:

DeepLabv3 as encoder: DeepLabv3使用了空洞卷积,能够在任意分辨率下通过DCNN提取特征。这里定义输出步幅为:输入分辨率和全局池化或者全卷积之前的输出分辨率之比,此定义也就是网络的下采样倍数。分类网络通常为32倍,语义分割通常为16或者8倍以进行密集特征提取。语义分割时,通过去掉最后一个(对应16倍)或者两个(对应8倍)下采样步幅,来获取高分辨率输出。此外,DeepLabv3强化了空洞空间金字塔池化模块:利用不同膨胀率的空洞卷积在多尺度上获取卷积特征,并同时使用了图像级别的特征。在所提出的编解码器结构中,使用 DeepLabv3的backbone最后一个卷积feature map作为编码器输出,其为256通道的包含了丰富语义信息的feature map。此外,可以根据计算资源的多少,通过应用空洞卷积在任意分辨率下提取特征(任意的输入分辨率)。

Proposed decoder: DeepLabv3的解码器通常在输出步幅为16的情况下进行计算。有的研究是直接对步幅为16的数据上采样16倍以与输入分辨率相同,这种做法比较naive,且有可能不能成功恢复物体分割细节。因此,我们提出了一个如图2所示的简单有效的解码器:首先对编码器输出的feature map利用双线性插值进行4倍上采样,然后和从backbone中提取的对应大小的低级特征层拼接起来|(由于低级特征层通道比较多,所以先使用1*1卷积对通道降维,否则其重要性可能会超过高级语义特征并使训练变得困难);拼接之后,使用3*3卷积细化特征,并在最后再使用一个4倍上采样恢复到原始分辨率。后续试验表明,使用输出步幅为16时,可以达到精度与速度的平衡,如果使用输出步幅为8,性能有所提高,但计算复杂度也大大提高。

3.2、修改Aligned Xception

基于MSRA的Aligned Xception进行修改,使之适用于语义分割。修改内容包括:

(1)更深的层,但没有修改入口网络以提高计算速度和内存效率;

(2)所有的最大池化操作都被带有步长的深度可分离卷积所代替,这样可以处理任意分辨率;

(3)类似MobileNet,在每个3*3卷积之后添加额外的BN层、RELU层;

修改后的结构如图4:

4、实验

实验部分,使用了ResNet101和修改后的Xception作为backbone,在ImageNet上进行了预训练;数据集用的是PASCAL VOC 2012语义分割数据集,评价指标为mIOU;学习率迭代策略为Poly;初始学习率为 0.007; crop size 为513 × 513;在输出步幅为16时微调BN参数;在训练时使用随机尺度数据增强;所提出的解码器模块也有BN参数;整个模型是端到端的。

4.1、解码器的设计选择

baseline:从DeepLabv3输出的feature map直接上采样16倍,作为一个基准解码器;

改进:在DeepLabv3基础上使用了图2中的解码器模块;

不同之处在于:

(1)1*1卷积用于降低低级特征的通道数;

(2)3*3卷积用于获取更加清晰的分割结果;

(3)融合了低级特征和高级特征;

为了验证1*1卷积的有效性,做了一个实验:对低级特征的不同输出通道进行对比,如表1所示:

可见,低级特征feature map的输出通道为48时,效果最好。

 然后,解码器模块设计了3×3的卷积结构,结果如表2:

 可见,在融合低级特征和Encoder输出特征之后,使用两组3*3*256卷积(包括BN、RELU等)是效果最好的。此外,还尝试了从conv3作为低级特征进行解码器的构造,但没有明显改善;输出步幅小于4的情况,需要更大的GPU显存,因此没有进行尝试。

4.2 ResNet-101 作为Backbone

baseline:第一个行块所示,没有使用解码器,效果一般;

增加解码器:第二个行块所示,使用了解码器,以及多尺度、随机翻转,验证时用大的输出分辨率后,效果最好;

粗糙特征图:第三行块所示,即在训练时使用了32倍的输出步幅,所以得到的feature map包含了更为抽象的特征,而空间信息比较粗糙;即使在验证时提高解码分辨率,性能还是比较低;

 4.3、Xception作为 Backbone

首先,对改进的Xception进行了预训练,效果是优于ResNet101的:

 然后,做了类似表3的实验,结果如表5所示:

 Baseline:同样是不用Decoder,效果比resnet101提高约2个点;

此外,就是增加Decoder,以及在不同数据集上进行预训练的对比。

 分割质量以及分割效果不好的例子:

5、结论

我们提出的模型“DeepLabv3+”采用了编码器-解码器结构,其中使用DeepLabv3对丰富的上下文信息进行编码,采用简单有效的解码器模块恢复对象边界。也可以根据可用的计算资源,应用空洞卷积以任意分辨率提取编码器特征。还对Xception模型和空洞可分离卷积进行了研究,使所提出的模型更快、更强。最后,我们的实验结果表明,所提出的模型在PASCAL VOC 2012和Cityscapes数据集达到SOTA。

一句话总结DeepLabV3+:

DeepLabv3作为Encoder提取特征,上采样后与backbone中间的低级特征以concat的方式融合,然后利用3*3卷积获得细化的特征,最后再进行上采样恢复到原始分辨率;在backbone部分,使用可分离卷积改进了Xception。

本质上,DeepLabV3+就是DeepLabV3加上一个decoder。

猜你喜欢

转载自blog.csdn.net/oYeZhou/article/details/112231858