Encoder-Decoder with Atrous SeparableConvolution for Semantic Image Segmentation

参考Encoder-Decoder with Atrous SeparableConvolution for Semantic Image Segmentation - 云+社区 - 腾讯云

摘要

深度神经网络采用空间金字塔池化模块或编解码器结构进行语义分割。前者通过多速率、多有效视场的过滤或池化操作探究输入特征来编码编码多尺度背景信息;后者通过逐步恢复空间信息,能够捕获更清晰的物体边界。在本研究中,我们建议结合这两种方法的优点。具体来说,我们提出的模型DeepLabv3+扩展了DeepLabv3,通过添加一个简单但有效的解码器模块来细化分割结果,特别是沿着目标边界。我们进一步探索了Xception模型,并将深度可分离卷积应用于Atrous空间金字塔池和解码器模块,从而获得更快、更强的编码器-解码器网络。我们在PASCAL VOC 2012和Cityscapes数据集上验证了该模型的有效性,在没有任何后处理的情况下,测试集的性能分别达到了89.0%和82.1%。

1、简介

语义分割是计算机视觉的基本课题之一,其目的是为图像中的每个像素分配语义标签。基于全卷积神经网络的深度卷积神经网络在基准任务上比依赖手工特征的系统有显著的改进。在这项工作中,我们考虑两种类型的神经网络,使用空间金字塔池模块或encoder-decoder结构语义分割,前一个捕捉丰富的上下文信息,通过集中特性在不同的决议,而后者是能够获得锋利的物体边界。

为了在多个尺度上捕获上下文信息,DeepLabv3应用了多个不同速率的并行atrous卷积(称为atrous空间金字塔池化,或ASPP),而PSPNet则在不同的网格尺度上执行池化操作。尽管在最后一个特征图中编码了丰富的语义信息,但由于网络主干中跨操作的池化或卷积,与目标边界相关的详细信息丢失了。通过应用atrous卷积来提取更密集的特征图,可以缓解这一问题。然而,考虑到目前最先进的神经网络设计和有限的GPU内存,提取比输入分辨率小8倍甚至4倍的输出特征图在计算上是不可能的。以ResNet-101为例,在应用atrous卷积提取比输入分辨率小16倍的输出特征时,最后3个残差块(9层)内的特征需要进行扩展。更糟糕的是,如果需要的输出特性比输入小8倍,26个残差块(78层!)将受到影响。因此,如果对这种类型的模型提取更密集的输出特征,则需要大量的计算。另一方面,编码器-解码器模型有助于在编码器路径中更快地计算(因为没有特征被扩展),并在解码器路径中逐渐恢复尖锐的目标边界。我们尝试结合这两种方法的优点,提出通过加入多尺度上下文信息来丰富编码器模块在编码器-解码器网络。

特别是,我们提出的模型,称为DeepLabv3+,通过添加一个简单而有效的解码器模块来恢复目标边界来扩展DeepLabv3,如图1所示。丰富的语义信息被编码在DeepLabv3的输出中,通过atrous卷积可以根据计算资源的预算控制编码器特性的密度。此外,解码器模块允许详细的目标边界恢复。

    

受最近深度可分离卷积(deep分离式卷积)成功的启发,我们也探索了这一操作,并通过将Xception模型(类似[31])用于语义分割任务,显示了在速度和准确性方面的改进。并将atrous可分离卷积应用于ASPP和解码器模块。最后,我们在PASCAL VOC 2012和Cityscapes数据上验证了所提模型的有效性,在没有任何后处理的情况下,测试集的性能达到了89.0%和82.1%,开创了一个新的发展阶段。总之,我们的贡献是:

  • 我们提出了一个新的编码器-解码器结构,采用DeepLabv3作为一个强大的编码器模块和一个简单而有效的解码器模块。
  • 在我们的结构中,可以通过atrous卷积任意控制提取的编码器特征的分辨率来权衡精度和运行时,这是不可能与现有的编码器-解码器模型。
  • 我们将Xception模型用于分割任务,并将深度可分离卷积应用于ASPP模块和解码器模块,从而产生更快更强的编码器-解码器网络。
  • 我们提出的模型在PASCAL VOC 2012和Cityscapes数据集上获得了最新的性能。我们还提供了设计选择和模型变体的详细分析。

2、相关工作

基于全卷积网络(FCNs)的模型已经证明在几个分割基准上有显著的改进。有几种模型被提议利用上下文信息进行分割,包括那些使用多尺度输入的模型(例如:图像金字塔)或采用概率图形模型(如具有高效推理算法的DenseCRF)。在本工作中,我们主要讨论了使用空间金字塔池和编码器-解码器结构的模型。

Spatial pyramid pooling:

模型,如PSPNet或DeepLab,在多个网格尺度(包括图像级池[52])执行空间金字塔池,或应用多个不同速率的并行atrous卷积(称为atrous空间金字塔池,或ASPP)。这些模型利用多尺度信息,在多个分割基准上取得了良好的效果。

Encoder-decoder: 

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

Depthwise separable convolution:

深度可分离卷积或组卷积,是一种强大的操作,可以在保持相似(或稍好)性能的同时,减少计算成本和参数数量。这种操作已被许多最近的神经网络设计所采用。特别地,我们探索了Xception模型,类似于COCO 2017检测挑战,并且在语义分割任务的准确性和速度方面都有提高。

3、方法

                  

在本节中,我们简要介绍了atrous卷积和深度可分离卷积。 然后我们回顾DeepLabv3,它被用作我们的编码器模块,然后讨论附加到编码器输出的解码器模块。 我们还提出了一个改进的Xception模型,它通过更快的计算进一步提高了性能。  

3.1 Encoder-Decoder with Atrous Convolution

Atrous convolution:Atrous卷积是一种强大的工具,它允许我们明确地控制由深度卷积神经网络计算的特征的分辨率,并调整滤波器的视场以捕获多尺度信息,它推广了标准卷积运算。 对于二维信号,对于输出特征映射y上的每个位置i和一个卷积滤波器w,对输入特征映射x进行atrous卷积,如下所示

               

                          

其中速率r决定了我们采样输入信号的步幅。 我们建议有兴趣的读者到[39]了解更多的细节。 注意,标准卷积是速率r = 1的特殊情况。 通过改变速率值,对滤波器的视场进行自适应调整。 


Depthwise separable convolution:深度可分卷积是将一个标准卷积分解为深度卷积,然后再进行逐点卷积(即1 × 1卷积),极大地降低了计算复杂度。 具体来说,深度卷积对每个输入通道独立执行一个空间卷积,而点向卷积用于合并深度卷积的输出。 在本工作中,我们将得到的卷积称为可分离卷积,发现可分离卷积在保持相似(或更好)性能的同时显著降低了所提模型的计算复杂度。

DeepLabv3 as Encoder:DeepLabv3采用atrous卷积来提取由深度卷积神经网络计算的任意分辨率的特征。 这里,我们将输出步长表示为输入图像空间分辨率与最终输出分辨率的比值(在全局池化或全连接层之前)。 对于图像分类任务,最终特征图的空间分辨率通常比输入图像分辨率小32倍,因此output stride= 32。 语义分割的任务,一个可以采用output stride = 16(或8)密度特征提取的大步在最后一个(或两个)应用卷积深黑色的块(s)和相应的(例如,我们运用rate= 2rate= 4最后两块分别输output stride= 8)。此外, DeepLabv3增强了Atrous空间金字塔池化模块,该模块通过应用不同速率的Atrous卷积,在多个尺度上探测卷积特征,图像级特征。 在我们提出的编码器-解码器结构中,我们使用原始DeepLabv3中logit之前的最后一个特性映射作为编码器输出。 注意,编码器输出特性映射包含256个通道和丰富的语义信息。 另外,根据计算量的不同,可以应用atrous卷积来提取任意分辨率下的特征。  

Proposed Eecoder:DeepLabv3的编码器特性通常使用output stride = 16进行计算。 我们提出了一个简单而有效的解码器模块,如图2所示。 编码器特征首先以4倍的双线性向上采样,然后与来自具有相同空间分辨率的网络主干的相应低级别特征连接(例如,在ResNet-101中跨步之前的Conv2)。 我们应用另一个1\times 1卷积的低级功能来减少通道的数量,因为相应的低层级的特征通常包含大量的通道(例如,256或512)可能超过丰富的编码器特性的重要性在我们的模型中(只有256个频道)和训练的难度。 在连接之后,我们应用一些3 \times 3卷积来细化特征,然后再用另一个简单的双线性上采样4倍。 在第4节中,我们展示了在编码器模块中使用output\ stride = 16在速度和精度之间达到了最佳平衡。 当编码器模块使用output\ stride = 8时,性能略有改善,但代价是额外的计算复杂度。 

3.2 Modified Aligned Xception 

Xception模型在ImageNet上显示了良好的图像分类结果,计算速度快。 最近,MSRA团队修改了Xception模型(称为Aligned Xception),并进一步提高了目标检测任务的性能。 基于这些发现,我们朝着同样的方向,将Xception模型应用于语义图像分割任务。 特别是,我们作一些修改在同行的修改,即(1)深入Xception除了一样,我们不修改条目流网络结构的快速计算和内存效率,(2)所Max-Pooling操作都被切除与大步分离卷积,使我们应用深黑色的分离卷积来提取任意分辨率特征图(另一个选择是atrous的算法扩展到最大池操作),和(3)额外添加批量标准化和ReLU激活后每3\times 3切除卷积,类似于MobileNet设计。 具体见图4。  

                            

4、实验评估

我们使用ImageNet-1k预训练的ResNet-101或修改对齐的Xception通过atrous卷积来提取密集的特征映射。我们的实现构建在TensorFlow上,并且是公开可用的。

基于PASCAL VOC 2012语义分割基准[1],该基准包含20个前景目标类和1个背景目标类。原始数据集包含1464(train),1449 (val)和1456(测试)像素级注释图像。我们通过提供的额外注释来扩充数据集,结果是10582 (trainaug)蓄念图像。性能是通过21个类(mIOU)的平均像素交点-并集来衡量的。

我们遵循与[23]相同的训练方案,有兴趣的读者可参考[23]了解详细内容。 简而言之,我们采用相同的学习率计划(即,“poly"策略[52]和相同的初始学习率0.007),作物大小513 \times 513,当output stride = 16时,微调批处理归一化参数,以及在训练过程中随机的尺度数据增强。 注意,我们还在建议的解码器模块中包含批处理规范化参数。 我们提出的模型是端到端的训练,不需要对每个组件进行分段预训练。  

4.1、解码器的设计

我们将DeepLabv3 feature map”定义为DeepLabv3计算的最后一个特征图(即包含ASPP特征和图像级特征的特征),[k \times k, f]作为核k \times kf滤波器的卷积运算。

当使用output stride = 16时,基于ResNet-101的DeepLabv3双线性上采样在训练和评估过程中对logit进行16的采样。这种简单的双线性上采样可以被认为是一种朴素解码器设计,在PASCAL VOC 2012 val集上获得77.21%[23]的性能,并且在训练时比不使用这种朴素解码器(即在训练时不使用downsampling groundtruth)要好1.2%。为了改进这个简单的基线,我们提出的模型"DeepLabv3+"在编码器输出的顶部添加了解码器模块,如图2所示。译码器模块,我们考虑三个地方不同的设计选择,即(1)、1\times 1卷积用来减少通道的低级功能映射从编码器模块,(2)、3\times 3卷积用于获得更清晰的分割结果,和(3)、编码器应该使用低级别的功能。

为了评估解码器模块中1 \times 1卷积的效果,我们使用[3 \times 3,256]和ResNet-101网络骨干网的Conv2特性,即res2x残块中的最后一个特征图(具体而言,我们在跨步之前使用特征图)。如表1所示,将底层特征映射从编码器模块减少到48或32个通道可以获得更好的性能。因此,我们采用[1 \times 1,48]通道减少。

然后我们设计了译码器模块的3 \times 3卷积结构,结果如表2所示。我们发现,在将Conv2特征映射(在跨步之前)与DeepLabv3特征映射连接之后,使用两个3 \times 3卷积和256个滤波器比使用简单的一个或三个卷积更有效。将过滤器数量从256更改为128或将内核大小从3 \times 3更改为1\times 1会降低性能。我们还实验了在解码器模块中同时利用了Conv2和Conv3特征映射的情况。在这种情况下,解码器特征映射逐步向上采样2,先连接Conv3,再连接Conv2,每一个都经过[3 \times 3,256]操作。整个解码过程类似于U-Net/SegNet设计。然而,我们没有观察到明显的改善。因此,最后,我们采用了非常简单而有效的解码器模块:将DeepLabv3特征映射与信道简化的Conv2特征映射的连接细化为[3 \times 3,256]操作。注意,我们提议的DeepLabv3+模型的输出步幅为4。我们不追求更密集的输出特征图(即输出stride < 4)鉴于有限的GPU资源。

4.2、将ResNet-101作为Backbone

为了比较模型变量在准确性和速度方面的差异,我们在表3中报告了使用ResNet-101作为网络骨干网的DeepLabv3+模型中的mIOU和multiply - add。通过atrous卷积,我们可以在单一模型的训练和评估中获得不同分辨率的特征。

             

        

       

Baseline:表3中的第一行块包含了[23]的结果,表明在评价过程中提取更密集的feature maps(即eval output stride = 8)和采用多尺度输入可以提高性能。此外,加入左、右翻转输入会使计算复杂度增加一倍,而性能只得到边际改善。

Adding decoder: 表3中的第二行块包含了采用所提解码器结构时的结果。当分别使用eval output stride = 16或8时,性能从77.21%提高到78.85%,或从78.51%提高到79.35%,但会增加约20B的计算开销。当使用多尺度和左右翻转输入时,性能进一步提高。

Coarser feature maps: 我们还实验了使用train output stride = 32(即在训练期间完全没有atrous卷积)进行快速计算的情况。如表3中第三行块所示,添加译码器可以提高约2%,而仅需74.20BMultiply-Adds。然而,当我们使用不同的输出步幅值为16时,其性能总是比我们使用不同的输出步幅值时低1% ~ 1.5%。因此,我们倾向于在训练或评估过程中使用输出stride= 16或8,这取决于复杂性预算。

4.3、Xception作为backbone

我们进一步使用功能更强大的Xception作为网络骨干。在[31]之后,我们做了一些修改,如第3.2节所述。

ImageNet pretraining: 我们在ImageNet-1k数据集上使用中类似的训练协议对所提出的Xception网络进行预训练。其中,我们采用Nesterov动量优化器,动量= 0.9,初始学习率= 0.05,速率衰减= 0.94每2 epoch,重量衰减4e−5。我们使用50个GPU的异步训练,每个GPU有32个批次,图像大小299\times 299。我们没有调整超参数非常困难,因为目标是预先训练模型在ImageNet语义分割。我们报告了表4中验证集上的单模型错误率,以及相同训练协议下基线重现的ResNet-101[25]。在改进的Xception中,当每次3 \times 3深度卷积后不添加额外的批归一化和ReLU时,我们观察到Top1和Top5精度的性能下降了0.75%和0.29%。

表5中报告了使用提出的例外作为语义分割的网络主干的结果。

Baseline: 在表5中,我们首先报告了没有在第一行块中使用所提解码器的结果,这表明在使用ResNet-101的情况下,使用Xception作为网络骨干时,当train output stride = eval output stride = 16时,性能提高了约2%。在推理过程中使用eval output stride = 8、多尺度输入以及添加左右翻转输入,可以进一步改进算法。注意,我们没有采用多重网格方法,我们发现这并不能提高性能。

Adding decoder: 如表5中的第二行块所示,对于所有不同的推理策略,在使用eval output stride = 16时,添加decoder可以带来0.8%的改进。当使用eval output stride = 8时,改进变少了。

Using depthwise separable convolution:  基于深度可分离卷积的高效计算,我们进一步在ASPP和解码器模块中采用了该算法。如表5中的第三行块所示,Multiply-Adds的计算复杂度显著降低了33%至41%,mIOU性能相似。

Pretraining on COCO: 为了与其他先进的模型进行比较,我们在MS-COCO数据集上进一步预处理了我们提出的DeepLabv3+模型,对于所有不同的推理策略,该模型可以获得大约2%的额外改进。

Pretraining on JFT: 与[23]类似,我们也采用了在ImageNet-1k和JFT-300M数据集上进行预训练的提议的Xception模型,这将带来额外的0.8%到1%的改进。

Test set results: 由于在基准评估中没有考虑计算复杂度,因此我们选择了性能最好的模型,以输出stride = 8和冻结的批归一化参数进行训练。最后,在没有和有JFT数据集预处理的情况下,我们的DeepLabv3+实现了87.8%和89.0%的性能。

Qualitative results: 我们在图6中提供了我们的最佳模型的可视化结果。如图所示,我们的模型在没有任何后处理的情况下能够很好地分割目标。

Failure mode: 如图6最后一排所示,我们的模型在分割(a)沙发和椅子,(b)遮挡较重的物体,(c)视野稀少的物体方面存在困难。

4.4、通过目标边界提升

在本小节中,我们使用trimap实验评估分割精度,以量化所提出的解码器模块在目标边界附近的精度。具体来说,我们对val set上的“void”标签注释应用形态扩展,这通常发生在对象边界附近。然后,我们计算那些像素的平均欠条,这些像素在“空”标签的扩张带(称为三图)内。如图5 (a)所示,在ResNet-101和Xception网络骨干中使用所提出的解码器相比朴素双线性上采样提高了性能。当扩张带较窄时,改善更明显。在最小的trimap宽度下,我们观察到ResNet-101和Xception的mIOU分别提高了4.8%和5.4%,如图所示。我们还在图5 (b)中可视化了使用所提出的解码器的效果。

      

4.5、Cityscapes上的实验

在本节中,我们在Cityscapes数据集上实验DeepLabv3+,这是一个包含5000张图像(分别为2975张、500张和1525张用于训练、验证和测试集)的高质量像素级注释的大规模数据集,以及约20000张粗注释图像。

如表7 (a)所示,采用我们提出的Xception模型作为网络骨干网(记为X-65),在DeepLabv3上包含了ASPP模块和图像级特征,在验证集上获得了77.33%的性能。添加所提议的解码器模块将性能显著提高到78.79%(提高1.46%)。我们注意到,去掉增强的图像级特征后,性能提高到了79.14%,这表明在DeepLab模型中,图像级特征在PASCAL VOC 2012数据集上更有效。我们还发现,在Cityscapes数据集上,在Xception的入口流中增加更多层是有效的,就像对目标检测任务所做的一样。在更深的网络骨干网(表中表示为X-71)之上建立的结果模型,在验证集上获得了最佳性能79.55%。

       

      

在val集上找到最佳模型变体后,我们在粗注释上进一步微调模型,以便与其他先进的模型竞争。如表7 (b)所示,我们提议的DeepLabv3+在测试集上获得了82.1%的性能,在Cityscapes上设置了最新的性能。

             

5、结论

我们提出的模型“DeepLabv3+”采用了编码器-解码器结构,其中DeepLabv3用于编码丰富的上下文信息,并采用一个简单而有效的解码器模块恢复目标边界。还可以应用Atrous卷积以任意分辨率提取编码器特征,这取决于可用的计算资源。我们还探讨了Xception模型和Atrous可分离卷积,使提出的模型更快更强。最后,我们的实验结果表明,提出的模型在PASCAL VOC 2012和Cityscape数据集上设置了一个新的前沿性能。

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Wanderer001

ROIAlign原理

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值