DeepLabv3+论文

Encoder-Decoder with Atrous Separable Convolution for Semantic Image Segmentation
原文地址DeepLabv3+
代码复现TensorFlow
摘要:在深度神经网络中,空间金字塔池化模块或编码解码器结构都常被用于解决语义分割任务。前者的网络能够对多种采样率和多个感受野进行滤波和池化操作来探查传入特征,从而对多尺度上下文信息进行编码,而后者网络则可以通过逐渐恢复空间信息来捕获更清晰的对象边界。DeepLabv3+结合了两种方法的优点,通过添加一个简单有效的解码器模块扩展了DeepLabv3,优化了边界分割,尤其是沿目标的边界。其通过进一步探索了Xception模型,将深度可分离卷积应用于Atrous空间金字塔池和解码器模块,从而形成了更快,更强大的编码器-解码器网络。在PASCAL VOC 2012和Cityscapes数据集上证明了该模型的有效性,无需任何后处理即可实现89.0%和82.1%的测试集性能。
关键字:语义图像分割,空间金字塔池,编码器-解码器和深度可分离卷积。

1引言
语义分割的目标就是将语义标签分配给图像中每个像素,基于全卷积的深度神经网络相对于依靠基准任务上的手工特征的系统显示出惊人的改进。 通过使用空间金字塔池模块和编码器-解码器结构进行语义分割发现了两种网络的特性,其中前者通过对不同分辨率进行池化操作来获取上下文信息,而后者则能够获得清晰的目标边界 。
图1.改进了DeepLabv3,使用了空间金字塔池模块(a)和编码器-解码器结构(b)提出的模DeepLabv3 +包含来自编码器模块的丰富语义信息,而详细的对象边界由简单有效的解码器模块恢复。 编码器模块允许我们通过应用无规则卷积以任意分辨率提取特征
为了在多个尺度上捕获上下文信息,DeepLabv3以不同的速率应用了几个并行的atrous卷积(称为Atrous空间金字塔池化或ASPP),而PSPNet在不同的网格规模下执行池化操作。即使丰富的语义信息在最后的特征图中进行了编码,由于网络主干网中的跨步操作合并或卷积,与对象边界有关的详细信息也丢失了。这可以通过应用无规则卷积来提取来缓解更密集的特征图,但是,鉴于最新的神经网络的设计和有限的GPU内存,在计算上禁止提取比输入分辨率小8倍甚至4倍的输出特征图。以ResNet-101为例,当应用无穷卷积提取比输入分辨率小16倍的输出特征时,必须扩展最后3个残差块(9层)中的特征。更糟糕的是,如果要求输出特征比输入小8倍,则将影响26个残差块(78层)。因此,如果为此类型的模型提取更密集的输出特征。另一方面,编码器-解码器模型有助于在编码器路径中进行更快的计算(因为没有扩展特征),并逐渐在解码器路径中恢复清晰的对象边界。尝试结合两种方法的优点,我们建议在编码器-解码器中丰富编码器模块通过合并多尺度上下文信息来建立网络。
模型DeepLabv3 +通过添加一个简单有效的解码器模块来恢复对象边界来扩展DeepLabv3,如图1所示。丰富的语义信息在DeepLabv3的输出中进行了编码,通过无穷的卷积可以实现根据计算资源的预算来控制编码器功能的密度。此外,解码器模块允许详细的对象边界恢复。受深度可分离卷积最近成功的推动我们还探索了该操作,并通过适应Xception模型来完成语义分割的任务,并在ASPP和解码器模块上应用了可分割的卷积,从而在速度和准确性方面都得到了改善。最后,我们证明了该模型在PASCAL VOC 2012和Cityscapes数据集上的有效性,并在不进行任何后处理的情况下实现了89.0%和82.1%的测试集性能,从而树立了新的技术水平。
该结构采用DeepLabv3作为功能强大的编码器模块并添加了简单有效的解码器模块。
–在结构中可以通过粗略的卷积以权衡精度和运行时间来任意控制提取的编码器特征的分辨率,现有的编码器-解码器模型无法做到这一点。
–将Xception模型用于细分任务,并按深度进行应用可分解卷积到ASPP模块和解码器模块,从而形成了更快,更强大的编码器-解码器网络。
–模型在PASCAL上获得了最新的性能VOC 2012和Cityscapes数据集。提供详细的分析设计选择和模型变体。
2相关工作
基于全卷积网络(FCN)的模型在多个细分基准上的取得了很大进步。同时为更好的利用上下文信息而提出了几种模型变体,包括采用多尺度输入(即图像金字塔)的模型或采用概率图形的模型(例如具有有效推理算法的DenseCRF)。在这项工作中,我们主要讨论使用空间金字塔池和编码器-解码器结构的模型。
空间金字塔池:模型,例如PSPNet 或DeepLab,在几个网格尺度上使用空间金字塔池化(包括图像级池化)或以不同的速率应用几个并行的Atrous卷积(称为Atrous空间金字塔池化或ASPP)。通过利用多尺度信息,这些模型已在多个细分基准上显示出令人兴奋的结果。
编码器-解码器:编码器-解码器网络已成功应用于许多计算机视觉任务,包括人体姿态估计,对象检测和语义分割。通常,编码器-解码器网络包含:
(1)逐渐减少特征图并捕获更高语义信息的编码器模块,
(2)逐渐恢复空间信息的解码器模块。基于此思想,我们建议使用DeepLabv3作为编码器模块,并添加一个简单而有效的解码器模块以获得更清晰的分段。
在这里插入图片描述
深度可分离卷积
深度可分离卷积或组卷积,一种强大的操作,可以降低计算成本和参数数量,同时保持类似(或稍好一点)的性能。 此操作已在许多最近的神经网络设计中采用。 特别是,我们探索了Xception模型,类似于其提交的COCO 2017检测挑战,并显示了语义分割任务在准确性和速度方面的改进。
3 模型
在本节中,我们简要介绍了无规则卷积和深度可分离卷积。 然后讨论用作编码器模块DeepLabv3,再讨论附加到编码器输出的解码器模块。
3.1具有Atrous卷积的编码-解码器
Atrous卷积:Atrous卷积是一种功能强大的工具,可明确控制由深度卷积神经网络计算的特征的分辨率,并调整滤波器的视场以捕获多尺度信息,从而对标准卷积操作进行了概括。 对于二维信号,输出特征图y上的每个位置i和卷积滤波器w,在输入特征图x上进行如下粗卷积:
在这里插入图片描述
其中速率r在采样点之间引入r−1个零,有效的将感受野从k×k扩展到ke x ke,其中ke=k+(k-1)(r-1),由于引入了0,所以不增加参数和计算量。 r决定了我们对输入信号进行采样的步幅。标准卷积是比率r = 1的一种特殊情况。通过更改比率值可以自适应地修改滤波器的视场。

深度可分离卷积:深度可分离卷积将标准卷积分解为深度卷积,然后再进行点向卷积(即1×1卷积),从而大大降低了计算复杂度。具体而言,深度卷积针对每个输入通道独立执行空间卷积,而点向卷积用于组合深度卷积的输出。如图所示,在深度方向卷积的TensorFlow实现中,在深度方向卷积(即空间卷积)中支持了原子可分离卷积。在这项工作中,我们将结果卷积称为原子可分离卷积,发现原子可分离卷积显着降低了所提出模型的计算复杂度,同时保持了相似(或更好)的性能。
在这里插入图片描述
DeepLabv3 采用了使用了空洞卷积的深度卷积神经网络可以以任意分辨率提取特征。 此处的stride表示为输入图像空间分辨率与最终输出分辨率的比率(输出分辨率为在全局池化或完全连接的层之前网络输出的特征)。对于分类任务来说,最终输出的特征图的分辨率一般为输入分辨率的1/32,因此可以认为stride=32。对于语义分割的任务,可以通过去除最后一个(或两个)块中的stride并相应地应用空洞卷积输出stride = 16(或8)来进行更密集的特征提取。此外,DeepLabv3增强了ASPP模块,该模块通过应用具有不同比率的空洞卷积和图像级特征来获取多尺度的卷积特征。在本文提出的encode-decode结构中,使用deepLabV3模型中logit运算之前的最后一层特征图作为本结构中的encode模块的输出,输出的通道数为256。
DeepLabv3作为编码器:DeepLabv3利用空洞卷积以任意分辨率从深度卷积神经网络提取特征。stride表示为输入图像空间分辨率与最终输出分辨率(在全局池化或完全连接的层之前)的比率。对于图像分类任务,最终特征图的空间分辨率通常比输入图像分辨率小32倍,因此stride=32。对于语义分割的任务,可以采用stride= 16(或8)通过移除最后一个(或两个)块中的步长并相应地应用空洞卷积来进行更密集的特征提取(例如,分别对最后两个块应用rate = 2和rate = 4 stride= 8)。此外,DeepLabv3增强了ASPP模块,该模块通过应用具有不同比率的空洞卷积和图像级特征来获取多尺度的卷积特征。在本文提出的encode-decode结构中,使用deepLabV3模型中logit运算之前的最后一层特征图作为本结构中的encode模块的输出,输出的通道数为256。
decode结构 来自DeepLabV3的encoder输出特征图通常为输入的1/16,在Rethinking the Inception Architecture for Computer Vision一文中,这些encoder输出的特征被双线性上采样16倍,这可以被认为是一个简单的decode模块。但是这种简单的decoede模块不能很好的恢复物体的边缘信息。因此,提出了一个简单而有效的解码器模块,如图2所示,encoder输出的特征首先进行双线性4倍上采样,然后与来自网络主干的具有相同空间分辨率的低级特征连接在一起。在连接之前来自encoder低级特征首先经过卷积核大小为1x1的卷积层降低通道数。降低通道数的原因在于,低级特征图的通道数通常很多,这可能导致网络训练时偏向低级特征,从而使得网络难以训练。在连接之后,应用几个3×3的卷积来细化特征,然后进行另一个简单的双线性4倍上采样。在试验中证明,encoder输入空间分辨率与输出空间的比值为16时网络可以在速度和准去度之间取得一个比较好的平衡结果。当输入的空间分辨率与输出分辨率比为8时,网络的性能略有提升,但计算复杂度更高。
3.2 使用分离卷积改进Xcetpion
Xception模块具有非常快的的计算速度,同时修改过的Aligned Xception在目标检测上也具有非常好的表现,因此作者基于AlignedXception结构做了一些改进并将其应用于语义分割模型。(1)深层次的Xception层与[31]相同,但因为实现快速计算和内存效率没有修改入口流网络结构。(2)所有最大池操作都被深度可分的卷积替换,这使网络能够应用一个可分离卷积来提取任意分辨率的特征图。(3)在每次3×3深度卷积后添加额外batchnormalization和ReLU激活,类似于MobileNet设计。如下图:
在这里插入图片描述
4实验评估
采用ImageNet-1k 预训练的ResNet-101或修改后的对齐Xception 通过空洞卷积提取密集的特征图。 实现基于TensorFlow,并公开可用。
PASCAL VOC 2012语义分割数据集上评估了模型,该数据集包含20个前景对象类和一个背景类。原始数据集包含1,464(序列),1,449(val)和1456(测试)像素级带注释的图像。通提供的额外注释来扩充数据集,从而生成10 582张(训练)训练图像。性能是根据21个类别(mIOU)的平均交并比来衡量的。
简而言之,当stride = 16时,采用相同的学习率进度表(即“ poly”策略[52]和相同的初始学习率0.007),crop为大小513×513,微调批次归一化参数[75]和 训练期间随机比例数据的扩充。 解码器模块中包括了批量归一化参数。模型是端到端训练的,没有每个组件的分段预训练。
4.1解码器设计选择
将“ DeepLabv3特征图”定义为DeepLabv3计算的最后一个特征图(即,包含ASPP特征和图像级特征的特征),将[k×k,f]定义为带有内核k×k和f个滤波器的卷积运算。
当使用stride = 16时,基于ResNet-101的DeepLabv3 在训练和评估期间对logit进行双线性上采样为16。这种简单的双线性上采样可以被认为是不成熟的解码器设计,在PASCAL VOC 2012 val set上达到77.21%的性能,比在训练过程中不使用该解码器(即在训练过程中对真实标签进行下采样)高1.2%。为了改善这种情况,提出的模型“ DeepLabv3 +”在编码器输出的顶部添加了解码器模块,如图2所示。在解码器模块中,考虑了三个地方用于不同的设计选择,即
(1)1×1卷积,用于减少来自编码器模块的低级特征图的通道,
(2)使用3×3卷积获得更清晰的分割结果
(3)应该使用哪些编码器低级特征。
为了评估解码器模块中1×1卷积的效果,使用了[3×3,256]作为ResNet-101网络主干的Conv2层,即res2x残差块中的最后一个特征图。如图1所示,将低级特征图的通道从编码器模块减少到48或32可以带来更好的性能。因此采用[1×1,48]进行通道缩减。
为解码器模块设计3×3卷积结构,并在Tab2中报告结果。 发现在将Conv2特征图与DeepLabv3特征图连接在一起之后,使用两个3×3卷积和256个滤波器比仅使用一个或三个卷积更为有效。将过滤器的数量从256更改为128或将内核大小从3×3更改为1×1会降低性能。还尝试了在解码器模块中同时使用Conv2和Conv3特征图的情况。在这种情况下,解码器将特征图逐步2倍上采样,然后先与Conv3连接,再与Conv2连接,然后分别通过[3×3,256]操作进行细化。整个解码过程类似于U-Net / SegNet设计。但是,没有观察到明显的改进。 因此,最后,采用了非常简单有效的解码器模块:DeepLabv3特征图和通道缩减后的Conv2特征图的串联通过两次[3×3,256]运算进行了优化。
4.3 Xception作为网络主体
采用功能更强大的Xception作为网络主干。ImageNet预训练:Xception网络在ImageNet-1k数据集上进行了预训练,采用Nesterov动量优化器,其动量= 0.9,初始学习率= 0.05,速率衰减= 0.94每2个周期,权重衰减4e5。使用50个GPU进行异步训练,每个GPU的批处理大小为32,图像大小为299 ×299。并未对超参数进行非常困难的调整,因为其目标是在ImageNet上对模型进行预训练以进行语义分割。在改进的Xception中每进行3×3深度卷积后,不添加额外的批处理归一化和ReLU时,观察到Top1和Top5精度的性能下降了0.75%和0.29%。
基线:使用ResNet-101的情况相比,当train stride = eval stride = 16时,使用Xception作为网络骨干可以将性能提高约2%。通过使用eval stride= 8,在使用多尺度输入并添加左右翻转,也可以获得进一步的改进。没有采用多重网格方法,发现该方法不会提高性能。
添加解码器:当对所有不同的推理策略使用eval stride= 16时,添加解码器将带来0.8%的改进。当使用eval stride = 8时,改进变得更少。
使用深度可分离卷积:出于对深度可分离卷积的高效计算的推动,在ASPP和解码器模块中进一步采用了它。就乘法加法而言,计算复杂度显着降低了33%至41%,同时获得了相似的mIOU性能。
在COCO上进行预训练:为了与其他最新模型进行比较,在MS-COCO数据集上对DeepLabv3 +模型进行了预训练,对于所有不同的推理策略,该模型都可额外提高2%。
在JFT上进行预训练:类似于[23],采用了拟议的Xception,该模型已经在ImageNet-1k 和JFT-300M数据集上进行了预训练,带来了0.8%到1%的额外改进。
测试集结果:由于基准评估中未考虑计算复杂性,因此我们选择了最佳性能模型,并使用输出步幅= 8和冻结的批次归一化参数对其进行训练。最后,我们的“ DeepLabv3 +”在不使用JFT数据集进行预训练的情况下,可达到87.8%和89.0%的效果。
定性结果:我们在图6中提供了最佳模型的视觉结果。
失败模式:模型难以分割(a)沙发与椅子,(b)严重阻塞的物体,以及(c)视野不佳的物体。

4.4沿对象边界的改进
使用trimap实验评估分割精度,以量化拟议的解码器模块在物体边界附近的精度。具体来说,对val集上的“ void”标签注释应用了形态学膨胀,该注释通常发生在对象边界周围。 然后,为“ void”标签的扩张带(称为三图)内的那些像素计算平均IOU。 与朴素的双线性上采样相比,针对ResNet-101和Xception网络主干采用建议的解码器可以提高性能。
当膨胀带较窄时,这种改善更为显着。 我们已经观察到,ResNet-101和Xception的mIOU分别提高了4.8%和5.4%。

  • 8
    点赞
  • 73
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值