Encoder-Decoder-with-Atrous-Separable-Convolution-for-Semantic-Image-Segmentation

总结

when

  • ECCV 2018

what

  • 空间金字塔池模块或编码 - 解码器结构用于深度神经网络中解决语义分割任务。
  • 前一种网络能够通过利用多个速率和多个有效视场的过滤器或池化操作探测输入特征来编码多尺度上下文信息,而后一种网络可以通过逐渐恢复空间信息来捕获更清晰的对象边界。
  • 在这项工作中,我们建议结合两种方法的优点。具体来说,我们提出的模型DeepLabv3 +通过添加一个简单而有效的解码器模块来扩展DeepLabv3,以优化分割结果,尤其是沿着对象边界。我们进一步探索Xception模型并将深度可分离卷积应用于Atrous Spatial Pyramid Pooling和解码器模块,从而产生更快更强的编码器-解码器网络。
  • 我们证明了所提出的模型在PASCAL VOC 2012语义图像分割数据集上的有效性,并且在没有任何后处理的情况下在测试集上实现了89%的性能。我们的论文附有Tensorflow中提出的模型的公开参考实现。

who (动机)

  • 语义分割的目的是为图像中的每个像素分配语义标签[17,25,13,83,5],这是计算机视觉中的基本主题之一。 基于完全卷积神经网络[64,49]的深度卷积神经网络[41,38,64,68,70]显示出依赖于手工制作特征的系统在基准任务上的显着改进[28,65,36,39,22,79]。在这项工作中,我们考虑使用空间金字塔池模块[23,40,26]或编码器-解码器结构[61,3]进行语义分割的两种类型的神经网络,其中前者通过在不同的分辨率上汇集特征来捕获丰富的上下文信息。而后者能够获得锐利的物体边界。

  • 为了捕获多个尺度的上下文信息,DeepLabv3 [10]应用具有不同速率的几个并行的atrous卷积(称为Atrous Spatial Pyramid Pooling,或ASPP),而PSPNet [81]执行不同网格尺度的池化操作。即使在最后的特征映射中编码了丰富的语义信息,由于在网络主干内具有跨步操作的池化或卷积,因此缺少与对象边界相关的详细信息。通过应用atrous卷积来提取更密集的特征映射可以减轻这种情况。然而,考虑到现有神经网络[38,68,70,27,12]的设计和有限的GPU内存,提取比输入分辨率小8甚至4倍的输出特征映射在计算上是禁止的。以ResNet-101 [27]为例,当应用atrous卷积提取比输入分辨率小16倍的输出特征时,最后3个残余块(9层)内的特征必须扩大。更糟糕的是,如果需要比输入小8倍的输出特征,则会影响26个残余块(78层!)。因此,如果为这种类型的模型提取更密集的输出特征,则计算密集。另一方面,编码器 - 解码器模型[61,3]使其自身在编码器路径中更快地计算(因为没有特征被扩张)并且逐渐恢复解码器路径中的尖锐对象边界。试图结合两种方法的优点,我们建议通过结合多尺度上下文信息来丰富编码器 - 解码器网络中的编码器模块。

  • 特别是,我们提出的模型,称为DeepLabv3 +,通过添加一个简单但有效的解码器模块来扩DeepLabv3[10],以恢复对象边界,如图1所示。丰富的语义信息在DeepLabv3的输出中进行编码,带有atrous卷积允许人们根据计算资源的预算来控制编码器特征的密度。 此外,解码器模块允许详细的对象边界恢复。

img

  • 由于最近深度可分离卷积的成功[67,71,12,31,80],对于语义分割的任务我们也通过调整Xception模型[12]来探索这种操作,并在速度和准确性方面表现出改进,类似于[60],并将atrous可分离卷积应用于ASPP和解码器模块。最后,我们证明了所提出的模型在PASCAL VOC 2012语义分割基准测试中的有效性,并且在没有任何后处理的情况下在测试集上获得了89.0%的性能,从而创造了一种新的最新技术。

where

看点

  • 实验部分写的很精彩

创新点

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

相关工作

基于完全卷积网络(FCNs)[64,49]的模型已经证明了在几个分割基准[17,52,13,83,5]上的显着改进。提出了几种模型变体来利用上下文信息进行分割[28,65,36,39,22,79,51,14],包括那些采用多尺度输入的模型(即图像金字塔)[18,16,58,44,11,9]或那些采用概率图模型(如DenseCRF [37]和有效推理算法[2])[8,4,82,44,48,55,63,34,72,6] ,7,9]。 在这项工作中,我们主要讨论使用空间金字塔池化和编码器-解码器结构的模型。

空间金字塔池化:模型,如PSPNet [81]或DeepLab [9,10],在几个网格尺度(包括图像级池[47])执行空间金字塔池[23,40]或应用几个并行的atrous卷积与不同的费率(称为Atrous Spatial PyramidPooling,或ASPP)。 通过利用多尺度信息,这些模型已经在几个分割基准上显示出有希望的结果。

编码器-解码器:编码器-解码器网络已成功应用于许多计算机视觉任务,包括人体姿态估计[53],物体检测[45,66,19]和语义分割[49,54,61,3,43,59,57,33,76,20]。通常,编码器-解码器网络包含(1)逐渐减少特征图并捕获更高语义信息的编码器模块,以及(2)逐渐恢复空间信息的解码器模块。基于这个想法,我们建议使用DeepLabv3 [10]作为编码器模块,并添加一个简单而有效的解码器模块,以获得更清晰的分割。

深度可分卷积:深度可分卷积[67,71]或群卷积[38,78],是一种强大的操作,可以在保持相似(或略微更好)的性能的同时降低计算成本和参数数量。这个操作已经被许多最近的神经网络设计采用[35,74,12,31,80,60,84]。特别是,我们探索了Xception模型[12],类似于[60]用于COCO2017检测挑战的提交,并在语义分割任务的准确性和速度方面表现出改进。

how

具有Atrous卷积的编码器-解码器

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

y\left[ i\right]=\sum_{k}^{}{x[i+r\cdot k]\omega [k]}

其中,atrous rate r决定了我们对输入信号进行采样的步幅。 有兴趣的读者可以参考[9]了解更多细节。注意,标准卷积是速率r = 1的特殊情况。通过改变速率值自适应地修改滤波器的视野。

**深度可分卷积:**深度可分卷积,将标准卷积分解为深度卷积,然后是逐点卷积(即1×1卷积),大大降低了计算复杂度。具体地,深度卷积对于每个输入信道独立地执行空间卷积,而逐点卷积用于组合来自深度卷积的输出。在深度可分卷积的TensorFlow [1]实现中,在深度卷积(即空间卷积)中支持了atrous卷积。在这项工作中,我们将得到的卷积称为atrous可分卷积,并发现atrous可分离卷积显着降低了所提出模型的计算复杂度,同时保持了相似(或更好)的性能。

DeepLabv3作为编码器:DeepLabv3 [10]采用了atrous卷积[30,21,64,56]来提取由任意分辨率的深度卷积神经网络计算的特征。在这里,我们将输出步幅表示为输入图像空间分辨率与最终输出分辨率的比率(在全局池化或完全连接层之前)。对于图像分类的任务,最终特征图的空间分辨率通常比输入图像分辨率小32倍,因此输出stride=32.对于语义分割的任务,可以采用输出stride=16(或8)通过去除最后一个(或两个)块中的步幅并相应地应用atrous卷积来进行更密集的特征提取(例如,我们分别对输出步幅= 8的最后两个块应用rate = 2和rate = 4)。此外,DeepLabv3增强了Atrous空间金字塔池化模块,该模块通过应用具有不同速率的atrous卷积和图像级特征来探测多尺度的卷积特征[47]。在我们提出的编码器 - 解码器结构中,我们在原始DeepLabv3中作为编码器输出进行登录之前使用最后一个特征映射。请注意,编码器输出要素图包含256个通道和丰富的语义信息。此外,根据计算预算,可以通过应用atrous卷积以任意分辨率提取特征。

**提出的解码器:**DeepLabv3的编码器功能通常用输出stride=16计算。在[10]的工作中,这些特征被双线性上采样16倍,这可以被认为是一个最初的解码器模块。但是,这个最初的解码器模块可能无法成功恢复对象分割细节。因此,我们提出了一个简单而有效的解码器模块,如图2所示。编码器特征首先进行双线性上采样4倍,然后与具有相同功能的网络主干中具有相同空间分辨率(例如,在ResNet-101 [27]中跨步之前的Conv2)的低级特征[25]连接起来。我们在低级特征上应用另一个1×1卷积来减少通道数,因为相应的低级特征通常包含大量通道(例如,256或512),这可能超过富编码特征的重要性(我们的模型中只有256个通道),使训练更加困难。在连接之后,我们应用几个3×3的卷积来细化特征,然后进行另一个简单的双线性上采样4倍。我们在第4节使用输出stride= 16作为编码器模块在速度和精度之间取得最佳平衡。当使用输出stride = 8作为编码器模块时,以额外的计算复杂性为代价,性能略有提高。

img

修改的对齐Xception

  • Xception模型[12]在ImageNet[62]上展示了具有快速计算能力的图像分类结果。最近,MSRA团队[60]修改了Xception模型(称为Aligned Xception),并进一步推动了对象检测任务的性能。在这些发现的推动下,我们以相同的方向努力使Xception模型适应语义图像分割的任务。特别是,我们在MSRA的修改之上做了一些更改,即
    1. 与[60]中更深的Xception相似,除了我们不修改入口流网络结构以实现快速计算和内存效率,
    2. 所有最大值池化操作被深度可分离卷积替换为striding,这使我们能够应用atrous可分离卷积以任意分辨率提取特征映射(另一种选择是将atrous算法扩展到最大池化操作),
    3. 额外的批量归一化[32]和在每次3×3深度卷积之后添加ReLU激活,类似于MobileNet设计[31]。修改后的Xception结构如图3所示。

img

how much

实验评估

  • 我们采用ResNet-101 [27]或修改后的对齐Xception [12,60],它们在ImageNet-1k数据集[62]上预先训练,通过atrous卷积提取密集特征图。我们的实施基于TensorFlow [1]并公开发布。
  • 所提出的模型在PASCAL VOC 2012语义分割基准[17]上进行评估,其中包含20个前景对象类和一个背景类。 原始数据集包含1 464(训练),1449(验证)和1456(测试)像素级注释图像。 我们通过[24]提供的额外注释来扩充数据集,从而生成10582(训练增强)训练图像。性能是根据21个类别(mIOU)平均的像素交叉结合来衡量的。
  • 我们遵循[10]中的相同训练协议,感兴趣的读者可以看引用[10]了解详情。 简而言之,我们采用相同的学习率计划(即“poly”策略[47]和相同的初始学习率0.007),crop大小513×513,当输出stride=16时微调批量标准化参数[32],以及训练期间的随机比例数据增加。请注意,我们还在建议的解码器模块中包含批量标准化参数。 我们提出的模型是端到端训练的,没有对每个组件进行分段预训练。

1 解码器设计选择

  • 我们首先将“DeepLabv3特征图”定义为DeepLabv3计算的最后一个特征图(即包含ASPP特征,图像级特征等的特征)和[k×k; f]作为内核大小为k×k和f滤波器的卷积运算。当使用输出stride = 16时,基于ResNet-101的DeepLabv3 [10]在训练和评估期间对logits进行双线性上采样16。 这种简单的双线性上采样可以被认为是一种天真的解码器设计,在PASCAL VOC2012上设置的性能达到77.21%[10]并且比在训练期间不使用这种天真解码器好1.2%(即,下采样groundtruth 在训练中)。 为了改善这个原始的基线,我们提出的模型“DeepLabv3 +”在编码器输出的顶部添加了解码器模块,如图2所示。在解码器模块中,我们考虑三个不同设计选择的位置,即(1) 1×1卷积用于减少来自编码器模块的低级特征映射的通道,(2)用于获得更清晰分割结果的3×3卷积,以及(3)应当使用什么编码器低级特征。

img

表1. 用于减少来自编码器模块的低级特征映射的通道的解码器1×1卷积的效果。 我们将解码器结构中的其他组件固定为使用[3×3; 256]和Conv2(striding前)的VOC 2012 val set的性能。

为了评估1×1卷积在解码器模块中的效果,我们采用[3×3;256]及来自ResNet-101网络主干的Conv2特征,即res2x残差块中的最后一个特征图(具体来说,我们在跨步之前使用特征图)。 如表格1所示,将低级特征映射的通道从编码器模块减少到48或32导致更好的性能。 因此我们采用[1×1,减少通道。

然后,我们为解码器模块设计3×3卷积结构,并在表2中报告结果。我们发现在使用DeepLabv3特征图连接Conv2特征图(在跨步之前)之后,使用两个3×3卷积的256个滤波器比使用简单的一个或三个卷积更有效。将过滤器的数量从256更改为128或将内核大小从3×3更改为1×1会降低性能。我们还试验了在解码器模块中利用Conv2和Conv3特征映射的情况。在这种情况下,解码器特征图以步长2逐渐上采样,首先与Conv3连接,然后与Conv2连接,并且每个将由[3×3,256]操作。然后整个解码过程类似于UNet / SegNet设计[61,3]。但是,我们没有观察到显着的改善。因此,最后,我们采用了非常简单但有效的解码器模块:DeepLabv3特征映射和通道缩减的Conv2特征映射的串联由两个[3×3; 256]操作。请注意,我们提出的DeepLabv3 +模型的输出stride = 4.在GPU资源有限的情况下,我们不再追求更密集的输出特征映射(即输出步幅<4)。

img

表2.固定[1×1,48]以减少编码器特征通道时解码器结构的影响。 我们发现使用Conv2(striding前)特征图和两个额外的[3×3,256]操作是最有效的。 VOC 2012 val set的性能。

2 ResNet-101作为网络骨干

  • 为了在准确性和速度方面比较模型变体,我们在表3中报告了mIOU和Multiply-Adds。在建议的DeepLabv3 +模型中使用ResNet-101 [27]作为网络主干。由于激烈的卷积,我们能够在训练和评估过程中使用单一模型获得不同分辨率的特征。

img

表3.使用ResNet 101作为特征提取器时,PASCAL VOC 2012 val设置的推理策略。 训练OS:训练期间使用的输出步幅。 eval OS:评估期间使用的输出步幅。 解码器:采用所提出的解码器结构。 MS:评估期间的多尺度输入。 翻转:添加左右翻转输入。

基线:Tab中的第一个行块。 图3包含[10]的结果,表明在评估期间提取更密集的特征图(即,eval输出步幅= 8)并采用多尺度输入提高了性能。 此外,添加左右翻转输入会使计算复杂性增加一倍,而性能只会略微提高。

添加解码器:Tab中的第二个行块。 图3包含采用所提出的解码器结构时的结果。 当使用eval输出stride = 16或8时,性能从77.21%提高到8.85%或78.51%到79.35%,代价是大约20B额外的计算开销。使用多刻度和左右翻转输入时,性能得到进一步提高

更粗略的特征图:我们还试验了使用列车输出stride=32(即,在训练期间根本没有任何atrous卷积)进行快速计算的情况。如表3中的第三行块所示。添加解码器带来2%的改进,而只需要74.20B的MultiplyAdds。然而,在我们采用列车输出stride = 16和不同的eval输出步幅值的情况下,性能总是约1%至1.5%。 因此,我们更倾向于在训练或评估期间使用输出stride = 16或8,具体取决于复杂性预算。

3 作为网络骨干的Xception

ImageNet预训练:拟议的Xception网络在ImageNet-1k数据集[62]上预先训练,在[12]中使用类似的训练协议。具体来说,我们采用Nesterov动量优化器,动量= 0.9,初始学习率= 0.05,速率衰减=0.94每2个时期,重量衰减4e-5.我们使用50个GPU的异步训练,每个GPU的批量大小为32,图像大小299×299.我们没有非常努力地调整超参数,因为目标是在ImageNet上预先训练模型以进行语义分割。我们在表4中报告验证集上的单模型错误率。与基线一起在同一训练协议下复制ResNet-101[27]。 我们观察到在修改的Xception中每次3×3深度卷积后没有添加额外批量标准化和ReLU时,Top1和Top5精度的性能降低0.75%和0.29%。

img

表4. ImageNet-1K验证集上的单模型错误率。

表5中报告了使用所提出的Xception作为语义分段的网络主干的结果。

img

表5.使用修改的Xception作为特征提取器时,PASCAL VOC 2012 val设置的推理策略。 训练OS:训练期间使用的输出步幅。 eval OS:评估期间使用的输出步幅。 解码器:采用所提出的解码器结构。 MS:评估期间的多尺度输入。 翻转:添加左右翻转输入。 SC:对ASPP和解码器模块采用深度可分离卷积。 COCO:在M

**基线:**我们首先在表5中的第一行块中不使用建议的解码器报告结果。示出了在使用ResNet-101的情况下,当训练输出stride = eval output stride = 16时,使用Xception作为网络主干将性能提高约2%。 通过使用平均输出stride = 8,在推理期间进行多尺度输入并添加左右翻转输入,也可以获得进一步的改进。
请注意,我们不使用多网格方法[75,15,10],我们发现这不会改善性能。

**添加解码器:**如表5中的第二行块所示。对于所有不同的推理策略,当使用平均输出stride = 16时,添加解码器会带来约0.8%的改进。 使用平均输出stride = 8时,改进变得更少。

**使用深度可分卷积:**通过深度可分卷积的有效计算,我们在ASPP和解码器模块中进一步采用它。 如Tab中的第三行块所示。 如图5所示,乘法加法的计算复杂度显着降低了33%至41%,同时获得了类似的mIOU性能。

img

图5.采用所提出的解码器模块与初始双线性上采样(表示为BU)相比的定性效果。 在示例中,我们采用Xception作为特征提取器和列车输出stride = eval output stride = 16。

在COCO上进行预训练:为了与其他现有技术模型进行比较,我们进一步预先提取了我们在MS-COCO数据集上提出的DeepLabv3 +模型[46],这使得所有不同推理策略的性能提高了2%。

JFT上的预训练:类似于[10],我们还采用了已经在ImageNet-1k [62]和JFT-300M数据集[29,12,69]上预训练的Xception模型,它带来了额外的0.8%到1%改进。

测试集结果:由于基准评估中未考虑计算复杂性,因此我们选择最佳性能模型并使用输出stride = 8和冻结批量标准化参数进行训练。最后,我们的’DeepLabv3 +'在没有和使用JFT数据集预训练的情况下实现了87.8%和89.0%的性能。

定性结果:我们提供了图6中最佳模型的可视化结果。如图所示,我们的模型能够很好地分割对象而无需任何后处理。

img

失败模式:如图6的最后一行所示,我们的模型难以分割(a)沙发与椅子,(b)严重遮挡的物体,以及(c)罕见的物体。

4 沿对象边界的改进

  • 在本小节中,我们使用trimap实验[36,37,9]评估分割精度,以量化所提出的解码器模块在对象边界附近的准确性。具体来说,我们在val集上的’void’标签注释上应用形态膨胀,这通常发生在对象边界周围。然后,我们计算那些在’void’标签的扩张带(称为trimap)内的像素的平均IOU。 如图4所示,与原始的双线性上采样相比,将ResNet-101 [27]和Xception [12]网络骨干的所提出的解码器用于改善了性能。当扩张带狭窄时,改善更为显着。我们已经观察到ResNet-101和Xception在最小trimap宽度处分别有4.8%和5.4%的mIOU改进,如图所示。我们还可视化使用图5中提出的解码器的效果。

img

why (为什么好)

猜你喜欢

转载自blog.csdn.net/u010067397/article/details/86505795
今日推荐