论文阅读:Enconder-Decoder with Atrous Separabel Convolution for Semantic Image Segmentation(deeplabv3+)

语义分割系列论文-Enconder-Decoder with Atrous Separabel Convolution for Semantic Image Segmentation(deeplabv3+)

本人对语义分割的部分论文使用有道进行翻译,其中有错误的地方望大家谅解,只作为个人学习的笔记。



摘要

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

**关键词**:语义图像分割,空间金字塔池,编解码器,深度可分离卷积。

1介绍

        语义分割是计算机视觉的基本课题之一,其目的是为图像中的每个像素分配语义标签。基于全卷积神经网络的深度卷积神经网络在基准任务上比依赖手工特征的系统有显著的改进。在这项工作中,我们考虑两种类型的神经网络,使用空间金字塔池模块或encoder-decoder 结构语义分割。前一个捕捉丰富的上下文信息,通过集中特性在不同的决议,而后者是能够获得锋利的物体边界。
       为了在多个尺度上捕获上下文信息,DeepLabv3]应用了多个不同速率的并行atrous卷积(称为atrous Spatial Pyramid Pooling, or ASPP),而PSPNet在不同的网格尺度上执行池化操作。尽管在最后一个特征图中编码了丰富的语义信息,但由于网络主干中跨操作的池化或卷积,与对象边界相关的详细信息丢失了。通过应用atrous卷积来提取更密集的特征图,可以缓解这一问题。然而,考虑到目前最先进的神经网络设计和有限的GPU内存,提取比输入分辨率小8倍甚至4倍的输出特征图在计算上是不可能的。以 ResNet-101为例,在应用atrous卷积提取比输入分辨率小16倍的输出特征时,最后3个残差块(9层)内的特征需要进行扩展。更糟糕的是,如果需要的输出特性比输入小8倍,26个剩余块(78层)将受到影响。
       因此,如果对这种类型的模型提取更密集的输出特征,则需要大量的计算。另一方面,编码器-解码器模型有助于在编码器路径中更快地计算(因为没有特征被扩展),并在解码器路径中逐渐恢复尖锐的对象边界。我们尝试结合这两种方法的优点,提出通过加入多尺度上下文信息来丰富编码器模块在编码器-解码器网络。

图1所示。我们改进了DeepLabv3,它采用了空间金字塔池化模块(a),采用了编码器-解码器结构(b)。所提出的模型 DeepLabv3+包含了来自编码器模块的丰富语义信息,而详细的对象边界由简单而有效的解码器模块恢复。编码器模块允许我们通过应用atrous卷积提取任意分辨率的特征。

图1 改进了DeepLabv3,它采用了空间金字塔池化模块(a),采用了编码器-解码器结构(b)。所提出的模型 DeepLabv3+包含了来自编码器模块的丰富语义信息,而详细的对象边界由简单而有效的解码器模块恢复。编码器模块允许我们通过应用atrous卷积提取任意分辨率的特征。

       特别是,我们提出的模型,称为DeepLabv3+,通过添加一个简单而有效的解码器模块来恢复对象边界来扩展 DeepLabv3,如图1所示。丰富的语义信息被编码在DeepLabv3的输出中,通过atrous卷积可以根据计算资源的预算控制编码器特性的密度。此外,解码器模块允许详细的对象边界恢复。
       受最近深度可分离卷积成功的启发,我们也探索了这种操作,并通过适应Xception模型来完成任务,显示了在速度和准确性方面的改进。并将atrous可分离卷积应用于ASPP和解码器模块。最后,我们在PASCAL VOC 2012和 Cityscapes 数据上验证了所提模型的有效性,在没有任何后处理的情况下,测试集的性能达到了89.0%和82.1%,开创了一个新的发展阶段。
       总之,我们的贡献是:
       (1)提出了一种新的编码器-解码器结构,采用 DeepLabv3作为一个强大的编码器模块和一个简单而有效的解码器模块。
       (2)在该结构中,可以通过atrous卷积任意控制提取的编码器特征的分辨率,以权衡精度和运行时,这在现有编码器-解码器模型中是不可能的。
       (3)将Xception模型用于分割任务,并将深度可分离卷积应用于ASPP模块和解码器模块,从而实现更快更强的编解码器网络。
       (4)提出的模型在PASCAL VOC 2012和Cityscapes上获得了最新的性能。还提供了设计选择和模型变体的详细分析。
       (5)在 https:/lgithub.com/tensorflow/models/treelmasterl research/deeplab上公开了我们基于tensorflow的模型实现。
       

2相关工作


       基于全卷积网络(FCNs)的模型已经证明在几个分割基准上有显著的改进。有几个模型被提议利用上下文信息进行分割,包括那些使用多尺度输入的模型(例如:,图像金字塔)或采用概率图形模型(如DenseCRF[40]与高效推理算法[41])。在本工作中,我们主要讨论了使用空间金字塔池和编码器-解码器结构的模型。
       空间金字塔池模型,如PSPNet或DeepLab,在多个网格尺度(包括图像级池)执行空间金字塔池,或应用多个不同速率的并行atrous卷积(称为atrous空间金字塔池,或ASPP)。这些模型利用多尺度信息,在多个分割基准上取得了良好的效果。
       编码器-解码器:编码器-解码器网络已成功应用于许多计算机视觉任务,包括人体姿态估计、目标检测和语义分割。通常,编码器-解码器网络包括(1)一个编码器模块,逐步减少特征映射并捕获更高的语义信息,(2)一个解码器模块,逐步恢复空间信息。在此基础上,我们提出使用DeepLabv3作为编码器模块,并添加一个简单而有效的解码器模块,以获得更清晰的分割。

在这里插入图片描述

图2所示。我们提出的DeepLabv3+通过采用编码器-解码器结构对 DeepLabv3进行了扩展。编码器模块对多尺度上下文信息进行多尺度卷积编码,而简单有效的解码器模块沿目标边界细化分割结果。


       

3方法


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

3.1采用Atrous卷积的编码器-解码器


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

在这里插入图片描述
在这里插入图片描述

       其中速率r决定了我们采样输入信号的步幅。有兴趣的读者请访问[39]了解更多细节。注意,标准卷积是速率r=1的一种特殊情况。通过改变速率值,自适应地修正了滤波器的视野。
       **深度可分离卷积**:深度可分离卷积,将一个标准卷积分解为深度卷积,然后再进行逐点卷积(即1×1卷积),极大地降低了计算复杂度。具体来说,深度卷积对每个输入通道独立执行一个空间卷积,而点向卷积用于合并深度卷积的输出。在TensorFlow[72]深度可分离卷积实现中,深度卷积(即空间卷积)支持了atrous卷积,如图3所示。在本工作中,我们将得到的卷积称为可分离卷积,发现可分离卷积在保持相似(或更好)性能的同时显著降低了所提模型的计算复杂度。
       **DeepLabv3作为编码器**:DeepLabv3采用atrous卷积来提取深度卷积神经网络在任意分辨率下计算的特征。这里,我们将输出步长表示为输入图像空间分辨率与最终输出分辨率的比值(在全局池化或全连接层之前)。对于图像分类任务,最终特征图的空间分辨率通常比输入图像分辨率小32倍,因此输出stride = 32。语义分割的任务,一个可以采用输出步= 16(或8)密度特征提取的大步在最后一个(或两个)应用卷积深黑色的块(s)和相应的(例如,我们运用率= 2和率= 4最后两块分别输出步长= 8)。此外,DeepLabv3利用图像增强了Atrous空间金字塔池化模块,该模块通过应用不同速率的Atrous卷积来探测多尺度的卷积特征。在我们提出的编码器-解码器结构中,我们使用原始DeepLabv3中最后一个特性映射作为编码器输出。注意,编码器输出特性映射包含256个通道和丰富的语义信息。另外,根据计算量的不同,可以应用atrous卷积来提取任意分辨率下的特征。
       **解码器:**DeepLabv3的编码器特征通常在output_stride = 16的情况下进行计算。在这项的工作中,采用双线性插值上采样倍数为16,可以认为是一个朴素的解码器模块。然而,这种方式可能无法成功恢复目标分割细节。因此,我们提出了一个简单而有效的解码器模块,如图2所示。编码器特征首先进行4倍的双线性上采样,然后与来自具有相同空间分辨率的网络主干的相应low-level features进行张量拼接(例如,在ResNet-101中跨步之前的Conv2)。在low-level features上进行1*1卷积来减少通道数,因为low-level features通常包含大的通道数(例如256或512),通道数过高可能会超过编码器获取的特征(因此在我们的模型中只有256个通道)并且增加训练的难度。在进行张量拼接之后,我们使用3 x3卷积来细化特征,然后再进行4倍的双线性上采样。在第4节中,我们展示了在编码器模块中使用输出stride = 16在速度和精度之间达到了最佳平衡。当编码器模块使用输出stride = 8时,性能略有改善,但代价是额外的计算复杂度。

3.2修改Xception模型

       Xception模型在ImageNet上显示了良好的图像分类结果,计算速度快。最近,MSRA团队修改了Xception模型(称为Aligned Xception),并进一步提高了对象检测任务的性能。基于这些发现,我们将Xception模型应用于语义图像分割任务,并做出以下修改,即(1)深入Xception除了一样,我们不修改条目fow网络结构的快速计算和内存效率,(2)所有最大池化操作都被深度可分离卷积替代,使我们使用分离卷积来提取任意分辨率特征图(另一个选择是扩展到最大池化操作),和(3)额外添加batch normalization和ReLU激活每个3 x 3深度可分离卷积后,类似于MobileNet设计[29]。具体见图4。

在这里插入图片描述

       图4所示。我们修改Xception如下:(1)层(同行一样的修改条目fow变化除外),(2)最大池化操作都被切除可分离旋转大步,和(3)额外添加批量标准化和ReLU每次3 x 3切除卷积后,类似于MobileNet。

4实验结果

       我们使用ImageNet-1k[74]预训练的ResNet-101[25]或修改对齐的Xception[26,31]通过atrous卷积来提取密集的特征映射。我们的实现构建TensorFlow[72]上,并且是公开可用的。
       提出的模型在包含20个前景对象类和1个背景对象类的PASCAL VOC 2012语义分割基准上进行评价。原始数据集包含1464张(train)、1449张(val)和1456张(test)像素级标注图像。我们通过数据增强增加了数据集,得到了10,582张(trainaug)训练图像。性能是根据21个类的平均像素交点-并集(mlOU)来衡量的。
       简而言之,我们采用相同的学习速率计划(即“poly”策略和相同的初始学习率0.007),裁剪尺寸513 x 513,输出stride = 16时微调批归一化参数,训练过程中随机尺度数据增强。请注意,我们还在提出的解码器模块中包含了批规范化参数。我们的模型是端到端的训练,而不是对每个组件进行分段预处理。

4.1解码器设计选择

       我们将“DeepLabv3 feature map”定义为DeepLabv3计算的最后一个feature map(即包含ASPP特征和图像级特征的特征),[k x k, fl作为核k x k和f滤波器的卷积运算。当使用output stride = 16时,基于ResNet-101的DeepLabv3 [23]在训练和评估过程中进行16倍的双线性上采样。这种简单的双线性上采样可以被认为是一种朴素解码器设计,在PASCAL VOC 2012 val集上达到77.21%的性能,比在训练时不使用这种朴素解码器(即在训练时不使用downsampling groundtruth)要好1.2%。为了改进这个简单的基线,我们提出的模型“DeepLabv3+”在编码器输出的顶部添加了解码器模块,如图2所示。解码器模块,我们考虑三个地方不同的设计选择,即
       (1)1×1卷积用来减少从编码器模块产生的low-level feature map的通道数;
       (2)3 x 3卷积用于获得更清晰的分割结果,和
       (3)对low-level feature使用编码器。 为了评估解码器模块中1*1卷积的效果,
       我们使用了[3*3,256]和ResNet-101网络骨干网的Conv2特征,即res2x残差块中的最后一个特征映射(具体地说,我们使用在步进之前的特征映射)。如表1所示,将low-level feature从编码器模块减少到48或32个通道可以获得更好的性能。因此我们采用[1*1,48]进行信道缩减。
       然后我们为解码器模块设计了3* 3卷积结构,并在表2中评估了结果。我们发现,在将Conv2特征映射(在跨步之前)与DeepLabv3特征映射连接后,使用两个3x3卷积与256个滤波器比使用简单的一个或三个卷积更有效。将滤波器数量从256更改为128或将内核大小从3*3更改为1*1会降低性能。我们还实验了在解码器模块中同时利用了Conv2和Conv3特征映射的情况。在这种情况下,解码器特征映射逐渐进行2倍上采样,先连接Conv3,再连接Conv2。每一个都将通过[3*3,256]操作进行细化。整个解码过程类似于U-Net/SegNet设计。然而,我们没有观察到明显的改善。因此,最后,我们采用了非常简单而有效的解码器模块:将DeepLabv3特征映射和信道简化的Conv2特征映射的连接通过两个[3 x 3,256]操作进行细化。注意,我们提议的DeepLabv3+模型的输出步幅为4。我们不追求更密集的输出特征图(即输出步幅<4),因为GPU资源有限。

4.2ResNet-101作为骨干网络

       为了比较模型的准确性和速度,我们在表3中报告了使用ResNet-101[25]作为网络骨干网的DeepLabv3+模型中的mlOU和multiply - add。

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

       **Baseline:**表3中的第一行块包含了[23]的结果,表明在评估过程中提取更密集的feature maps(即eval outpaut stride = 8)并采用多尺度输入可以提高性能。此外,添加左、右输入使计算复杂度增加一倍,而性能只得到边际改善添加解码器;
       **添加编码器:**表3中的第二行块包含了采用所提解码器结构时的结果。当使用eval输出stride = 16或8时,性能从77.21%提高到78.85%或78.51%提高到79.35%。分别计算大约20B的额外计算开销。当使用多尺度和左右翻转输入时,性能得到了进一步的提高。
       **粗糙的特征映射:**我们也试验了使用火车输出stride = 32(即,在训练期间没有任何atrous卷积)来快速计算的情况。如表3中第三行块所示,添加译码器可以提高约2%,而仅需74.20B multiply - add。然而,当我们使用不同的输出步幅值为16时,其性能总是比我们使用不同的输出步幅值时低1% ~ 1.5%。因此,我们倾向于在训练或评估过程中使用输出步幅= 16或8,这取决于复杂性预算。

4.3Xception作为骨干网络

       我们进一步使用功能更强大的Xception[26]作为网络骨干。在[31]之后,我们做了一些修改,如第3.2节所述。mageNet pretraining:我们提出的Xception网络在ImageNet-1k数据集[74]上使用[26]中类似的训练协议进行预训练。其中,我们采用Nesterov动量优化器,动量= 0.9,初始学习率= 0.05,速率衰减= 0.94每2 epoch,重量衰减4e-5。我们使用50个GPU的异步训练,每个GPU的批处理大小为32,图像大小为299 × 299。我们没有调整超参数非常困难,因为目标是预先训练模型在ImageNet语义分割。我们报告了表4中验证集上的单模型错误率,以及相同训练协议下基线重现的ResNet-101[25]。在修改的Xception中,当每次3 x 3深度卷积后不添加额外的批归一化和ReLU时,我们观察到Top1和Top5精度的性能下降了0.75%和0.29%表5中报告了使用提出的例外作为语义分割的网络主干的结果。
       **Baseline:**我们首先在表5的第一行块中报告结果,没有使用建议的解码器,这表明使用Xception作为网络当tran output stride = eval output stride = 16时,比使用ResNet-101的情况下,backbone的性能提高了约2%。在推理过程中使用eval output stride = 8、多尺度输入以及添加左、右翻转输入,可以进一步改进算法。注意,我们没有采用多重网格方法[77,78,23],我们发现这并不能提高性能。
       **添加decoder:**如表5第二行块所示,对于所有不同的推理策略,使用eval output stride = 16时,添加decoder带来0.8%的改进。当使用eval output stride = 8时,改进变少了。
       **利用深度可分离卷积**:基于深度可分离卷积的高效计算,我们在ASPP和解码器模块中进一步采用了深度可分离卷积。如表5中的第三行块所示,multiply - add的计算复杂度显著降低了33%至41%,mIOU性能相似。 对COCO进行预处理:为了与其他先进的模型进行比较,我们在MS-COCO数据集上进一步预处理了我们提出的DeepLabv3+模型[79]。对于所有不同的推理策略,这将产生大约2%的额外改进。 在JFT上进行预训练:与[23]类似,我们也使用了在ImageNet-1k[74]和JFT- 300m数据集[80,26,81]上进行预训练的提议的Xception模型,这带来了额外的0.8%到1%的改进。
       测试集结果:由于基准评价中没有考虑计算复杂度,因此我们选择性能最好的模型,输出stride = 8,并冻结批归一化参数进行训练。最后。我们的“DeepLabv3+”在没有和有JFT数据集预训练的情况下都达到了87.8%和89.0%的性能。
       **定性结果:**我们在图6中提供了我们的最佳模型的可视化结果。如图所示,我们的模型在没有任何后处理的情况下能够很好地分割目标。 失效模式:如图6最后一排所示,我们的模型在分割(a)沙发给我们时存在困难。椅子,(b)严重遮挡的物体,和(c)罕见视野的物体。

4.4沿目标边界改进

       在本小节中,我们使用trimap experiment[14,40,39]评估分割精度,以量化所提出的解码器模块在目标边界附近的精度。具体来说,我们对val set上的“void”标签注释应用形态扩展,这通常发生在对象边界附近。然后,我们计算那些像素的平均欠条,这些像素在“空”标签的扩张带(称为三图)内。如图5 (a)所示,在ResNet-101[25]和Xception[26]网络骨干中使用所提出的解码器相比朴素双线性上采样提高了性能。当扩张带较窄时,改善更明显。我们观察到ResNet-101和Xception的mlOU分别有4.8%和5.4%的改善。 ![在这里插入图片描述](https://img-blog.csdnimg.cn/20210608154700803.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1FMUTEyMzQ=,size_16,color_FFFFFF,t_70)

4.5在cityscapes上的实验

在这里插入图片描述
在这里插入图片描述

       我们提出的“DeepLabv3+”模型采用了编码器-解码器结构,其中DeepLabv3用于编码丰富的上下文信息,采用一个简单而有效的解码器模块恢复对象边界。还可以应用atrous卷积在任意分辨率提取编码器的特征,这取决于可用的计算资源。我们还探讨了Xception模型和atrous可分离卷积,使提出的模型更快更强。最后,我们的实验结果表明,提出的模型设置了一个新的最先进的性能PASCAL VOC 2012和Cityscapes数据集。感谢我们与齐浩智、戴继峰就Aligned Xception进行的宝贵讨论,感谢孙晨的反馈,感谢谷歌移动视觉团队的支持。
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

蓝色Tu耳其

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值