DeepLabv3
https://arxiv.org/abs/1706.05587v3
Rethinking Atrous Convolution for Semantic Image Segmentation
https://readpaper.com/paper/2630837129
Liang-Chieh Chen, George Papandreou, Florian Schroff, Hartwig Adam
在这项工作中,我们回顾了扩张卷积,这是一种在语义图像分割应用中显式调整滤波器视野以及控制深度卷积神经网络计算的特征响应分辨率的强大工具。为了解决多尺度下的目标分割问题,我们设计了级联或并行使用扩张卷积的模块,通过采用多个扩张率来捕获多尺度上下文。此外,我们还建议扩展我们先前提出的扩张空间金字塔池化模块(ASPP),该模块在多个尺度上探测卷积特征,使用图像级特征编码全局上下文并进一步提高性能。我们还详细阐述了实施细节,并分享了训练系统的经验。拟议的“DeepLabv3”系统在没有DenseCRF后处理的情况下大大改进了我们以前的DeepLab版本,并在PASCAL VOC 2012语义图像分割基准上实现了与其他最先进模型相当的性能。
图11.引言
对于语义分割的任务[20, 63, 14,97, 7 ],我们考虑两个挑战应用深度卷积神经网络(DCNNs)〔50〕。第一种是连续池化操作或卷积跨步导致的特征分辨率降低,这使得DCNN能够学习越来越抽象的特征表示。然而,这种对局部图像变换的不变性可能会妨碍密集预测任务,因为在密集预测任务中需要详细的空间信息。为了克服这个问题,我们提倡使用扩张卷积[36,26,74,66],这已被证明对语义图像分割是有效的[10,90,11]。扩张卷积,也称为孔洞卷积,允许我们重新利用ImageNet[72]预训练网络,通过移除最后几层的下采样操作并对相应的滤波器核进行上采样来提取更密集的特征图,相当于在滤波器权重之间插入孔(“trous”)。使用扩张卷积,可以控制在DCNN内计算特征响应的分辨率,而无需学习额外的参数。
另一个困难来自多尺度物体的存在。已经提出了几种方法来处理这个问题,并且我们主要考虑在这项工作中的四个类别,如图2所示。首先,DCNN应用于图像金字塔,以提取每个尺度输入[22、19、69、55、12、11]的特征,其中不同比例的对象在不同的特征映射上变得突出。其次,编码器-解码器结构[3、71、25、54、70、68、39]利用来自编码器部分的多尺度特征,并从解码器部分恢复空间分辨率。第三,额外的模块级联在原始网络之上,用于捕获远程信息。特别是,DenseCRF[45]被用于编码像素级的成对相似性[10,96,55,73],而[59,90]则以级联方式开发多个额外的卷积层,以逐渐捕获远程上下文。第四,空间金字塔池化[11,95]以多种率和多个有效视场通过过滤器或池化操作探测传入的特征映射,从而在多个尺度上捕获对象。
图2在这项工作中,我们回顾了应用扩张卷积,它允许我们在级联模块和空间金字塔池化的框架中有效地扩大滤波器的视野,以合并多尺度上下文。特别是,我们提出的模块由具有不同率的扩张卷积和批量归一化层组成,我们发现这些层也需要训练。我们尝试以级联或并行方式布置模块(具体而言,是扩张Spatial Pyramid Pooling(ASPP)方法[11])。我们讨论了一个重要的实际问题,即应用3×3扩张卷积时,如果扩张率设置得非常大,由于图像边界效应,无法捕获长距离信息,会退化为1×1卷积,因此我们建议将图像级特征合并到ASPP模块中。此外,我们还详细介绍了实现细节,并分享了训练所提出模型的经验,包括一种简单而有效的引导方法,用于处理稀有和精细注释的对象。最后,我们提出的模型“DeepLabv3”改进了我们之前的工作[10,11],在PASCAL VOC 2012测试集上实现了85.7%的性能,无需DenseCRF后处理。
2.相关工作
已经证明,全局特征或上下文交互[33、76、43、48、27、89]有助于正确分类像素进行语义分割。在这项工作中,我们讨论了四种类型的全卷积网络(FCN)[74,60](见图2)利用上下文信息进行语义分割[30,15,62,9,96,55,65,73,87]。
图像金字塔: 同一模型(通常具有共享权重)应用于多尺度输入。小尺度输入的特征响应编码了长范围的上下文,而大尺度输入保留了小对象的细节。典型的例子包括Farabet等人[22],他们通过拉普拉斯金字塔变换输入图像,将每个尺度输入馈送到DCNN,并合并所有尺度的特征映射。[19,69]从粗到细依次应用多尺度输入,而[55,12,11]直接调整多尺度输入的大小,并融合所有尺度的特征。这类模型的主要缺点是,由于GPU内存有限,对于较大/较深的DCNN(例如[32,91,86]之类的网络),它不能很好地扩展,因此通常在推理阶段应用[16]。
编码器-解码器: 该模型由两部分组成:(a)编码器,其中特征映射的空间维度逐渐减小,从而在更深的编码器输出中更容易捕获更长范围的信息;(b)解码器,其中对象细节和空间维度逐渐恢复。例如,[60,64]采用反卷积[92]来学习低分辨率特征响应的上采样。SegNet[3]重用来自编码器的池化索引并学习额外的卷积层以加密特征响应,而U-Net[71]将编码器特征的跳过连接添加到相应的解码器激活,并且[25]采用拉普拉斯金字塔重建网络。最近,RefineNet[54]和[70,68,39]已经证明了基于编码器-解码器结构的模型在几个语义分割基准上的有效性。这种类型的模型也在目标检测的背景下进行了探索[56,77]。
上下文模块: 该模型包含级联布置的额外模块,用于对远程上下文进行编码。一种有效的方法是将DenseCRF[45](与高效的高维滤波算法[2])合并到DCNNs[10,11]。此外,[96,55,73]建议联合训练CRF和DCNN组件,而[59,90]在DCNN的置信图(置信图是包含与预测类数量相等的输出通道的最终DCNN特征图)的顶部使用几个额外的卷积层来捕获上下文信息。最近,[41]提出学习一种通用且稀疏的高维卷积(双边卷积),并且[82,8]将高斯条件随机场和DCNN结合起来用于语义分割。
空间金字塔池化:
该模型采用空间金字塔池化[28,49]来捕获多个范围内的上下文。ParseNet[58]利用图像级功能获取全局上下文信息。DeepLabv2[11]提出了扩张空间金字塔池化(ASPP),其中具有不同速率的并行扩张卷积层捕获多尺度信息。最近,金字塔场景解析网(PSP)[95]在多个网格尺度上执行空间池化,并在多个语义分割基准上展示了出色的性能。还有其他基于LSTM[35]的方法来聚合全局上下文[53,6,88]。空间金字塔池化也应用于目标检测[31]。
在这项工作中,我们主要探索扩张卷积[36,26,74,66,10,90,11]作为空间金字塔池化的上下文模块和工具。我们提出的框架是通用的,因为它可以应用于任何网络。具体来说,我们复制了ResNet[32]中原始最后一个块的多个副本,并将它们级联排列,还重新访问了包含多个并行扩张卷积的ASPP模块[11]。请注意,我们的级联模块直接应用于特征映射,而不是置信映射。对于提议的模块,我们在实验中发现,使用批量归一化进行训练非常重要[38]。为了进一步捕获全局上下文,我们建议使用图像级特征增强ASPP,类似于[58,95]。
扩张卷积: 基于扩张卷积的语义分割模型已经得到了积极的探索。例如,[85]对修改扩张速率以捕获远程信息的效果进行了实验,[84]在ResNet的最后两个块内采用了混合扩张率,而[18]进一步提出学习可变形卷积,该卷积使用学习的偏移量对输入特征进行采样,推广了扩张卷积。为了进一步提高分割模型的准确性,[83]利用图像字幕,[40]利用视频运动,[44]结合深度信息。此外,扩张卷积已被[66,17,37]应用于目标检测。
3.方法
在本节中,我们将回顾如何应用扩张卷积提取语义分割的密集特征。然后,我们讨论所提出的模块与扩张卷积模块采用级联或并行。
3.1. 用于密集特征提取的扩张卷积
以全卷积方式部署的深度卷积神经网络(DCNN)[50]已证明对语义分割任务是有效的。然而,在这些网络的连续层上重复组合最大池化和跨步显著降低了结果特征映射的空间分辨率,在最近的DCNN中,宽高都通常分别为输入分辨率的1/32[47,78,32]。反卷积层(或转置卷积)[92、60、64、3、71、68]已用于恢复空间分辨率。相反,我们提倡使用“扩张卷积”,最初是为了有效计算[`36]的“algorithme a trous”方案中的非抽取小波变换而开发的,之前由[26,74,66]在DCNN上下文中使用。
给定一个二维信号,对于输出和滤波器上的每个位置,在输入特征映射上应用扩张卷积:
其中,扩张率对应于我们采样输入信号的步长,这相当于用一个上采样核来对输入做卷积运算,该上采样核是在每个空间维度上的两个连续滤波器值之间插入个零(因此名为孔洞卷积)。标准卷积是扩张率=1的特例,而扩张卷积允许我们通过改变扩张率值自适应地修改滤波器的视野。请参见图1。(where the atrous rate r corresponds to the stride with which we sample the input signal, which is equivalent to convolvingthe input x with upsampled filters produced by inserting r − 1 zeros between two consecutive filter values along each spatial dimension (hence the name atrous convolution where the French word trous means holes in English).)
扩张卷积还允许我们明确控制在全卷积网络中计算特征响应的密度。这里,我们用输出步幅output stride表示输入图像空间分辨率与最终输出分辨率的比率。对于部署用于图像分类任务的DCNN[47、78、32],最终特征响应(在全连接层或全局池化之前)比输入图像尺寸小32倍,因此输出步幅=32。如果希望将DCNN中计算的特征响应的空间密度加倍(即,输出步长=16),则用于降低分辨率的最后一个池化或卷积层的步长设置为1,以避免信号压缩。然后,将所有后续卷积层替换为扩张率=2的扩张卷积层。这允许我们提取更密集的特征响应,而不需要学习任何额外的参数。有关更多详细信息,请参阅[11]。
3.2. 使用扩张卷积让网络更深
我们首先探索设计级联式的扩张卷积模块。具体来说,我们复制了最后一个ResNet块的多个副本,在图3中表示为block4,并将它们级联排列。这些块中有三个3×3卷积;除了最后一个块,其余块的最后个卷积的步幅为2,类似于原始ResNet。该模型背后的动机是,引入的步幅使得在更深的块中捕获远程信息变得容易。例如,如图3(a)所示,可以在最后的小分辨率特征图中汇集整个图像特征。然而,我们发现连续地下采样对语义分割是有害的(见第4节中的表1),因为细节信息被压缩了,因此我们采用扩张卷积,其扩张率由期望的输出步幅值确定,如图3(b)所示,其中输出步幅=16。
图3在这个提出的模型中,我们用级联的ResNet块(即额外的块5、块6、块7作为块4的副本)进行实验,如果没有应用扩张卷积,则输出步幅为256。
3.2.1多重网格法
受多重网格方法(采用不同大小的网格层次[4,81,5,67]和以下[84,18])的启发,我们在所提模型的块4到块7张采用不同的扩张率。具体是,我们为块4到块7的三个卷积层定义多重网格=单位扩张率。
卷积层的最终扩张率等于单位扩张率与相应系数的乘积。例如,当输出步幅=16且多重网格=(1,2,4)时,三个卷积在块4中的扩张率分别为。
3.3. 扩张空间金字塔池化
我们回顾了[11]中提出的扩张空间金字塔池化,其中在特征图的顶部应用了四个具有不同扩张速率的平行扩张卷积。ASPP的灵感来源于空间金字塔池化[28,49,31]的成功,它表明在不同尺度下对特征进行重采样是有效的,可以准确有效地对任意尺度的区域进行分类。与[11]不同,我们在ASPP中包含了批处理归一化。
具有不同扩张率的ASPP有效地捕获多尺度信息。然而,我们发现,随着扩张率变大,有效滤波器权重的数量(即,应用于有效特征区域的权重,而不是填充零)变小。当将3×3滤波器应用于具有不同扩张率的65×65特征映射时,该效应在图4中示出。在扩张率值接近特征图大小的极端情况下,3×3滤波器不是捕获整个图像上下文,而是退化为简单的1×1滤波器,因为只有中心滤波器权重有效。
图4为了克服这个问题并将全局上下文信息合并到模型中,我们采用了图像级特征,类似于[58,95]。具体而言,我们在模型的最后一个特征映射上应用全局平均池化,将生成的图像级特征输入给一个具有256核的1×1卷积(和批处理归一化[38]),然后将特征双线性上采样到所需的空间维度。最后,当输出步幅=16时,我们改进的ASPP由(a)一个1×1卷积和三个3×3卷积组成,扩张率=(6、12、18)(均带有256个滤波核和批量归一化),以及(b)图像级特征,如图5所示。请注意,当输出步幅=8时,扩张率加倍。然后将所有分支的结果特征拼接起来,并通过另一个1×1卷积(也包括256个滤波核和批量归一化),然后再进行最终1×1卷积,生成最终logit。
图54.实验评价
我们将ImageNet预训练[72]ResNet[32]应用于语义分割,通过应用扩张卷积来提取密集特征。回想一下,输出步幅定义为输入图像空间分辨率与最终输出分辨率的比率。例如,当输出步幅=8时,原始ResNet中的最后两个块(在我们的符号中为block3和block4)包含扩张率分别为2和4的扩张卷积。我们的实现基于TensorFlow[1]。
我们在PASCAL VOC 2012语义分割基准[20]上评估了提出的模型,该基准包含20个前景对象类和一个背景类。原始数据集分别包含用于训练、验证和测试的1464(训练)、1449(val)和1456(测试)像素级标记图像。数据集通过[29]提供的额外注释进行了扩充,得到10582(trainaug)个训练图像。性能是根据21个类的平均联合像素交点(IOU)来衡量的。
4.1. 训练协议
在本小节中,我们将讨论训练协议的细节。
学习率: 与[58,11]类似,我们采用了“poly”学习率策略,其中初始学习率乘以,power=0.9。
裁剪大小: 按照最初的训练协议[10,11],在训练期间从图像中裁剪。要使大扩张率的扩张卷积有效,需要大的裁剪尺寸;另外,具有大扩张率的滤波器权重主要应用于填充零区域。因此,在PASCAL VOC 2012数据集的训练和测试期间,我们采用的裁剪大小为513。
批量归一化: 我们在ResNet上添加的模块都包括批处理归一化参数[38],我们发现训练这些参数也很重要。由于训练批量归一化参数需要较大的批量大小,因此我们采用输出步长=16,并计算批量归一化统计数据(批量大小为16)。批量归一化参数以衰减=0.9997进行训练。在trainaug集合上进行30K迭代和初始学习率=0.007的训练后,我们随后冻结批量归一化参数,采用输出步长=8,并在官方PASCAL VOC 2012 trainval集合上进行另一个30K迭代和较小的基本学习率=0.001的训练。注意,扩张卷积允许我们在不同的训练阶段控制输出步幅值,而无需学习额外的模型参数。还请注意,输出步幅=16的训练速度比输出步幅=8快几倍,因为中间特征映射在空间上要小四倍,但由于输出步幅=16提供了更粗糙的特征映射,因此牺牲了准确性。
上采样登录:
在我们之前的工作[10,11]中,当输出步幅=8时,目标地面真实值在训练过程中减少了8。我们发现重要的是保持基本事实完好无损,取而代之的是对最终逻辑进行上采样,因为对基本事实进行下采样会删除精细的注释,从而不会导致细节的反向传播。
数据扩充:
我们通过随机缩放输入图像(从0.5到2.0)和在训练期间随机左右翻转来应用数据增强。
4.2. 随着扩张卷积的深入
我们首先在级联中用扩张卷积构建更多的块。
ResNet-50:
在选项卡中。1、我们在使用ResNet-50和block7(即额外block5、block6和block7)时,对输出步幅的影响进行了实验。如表所示,在输出步长=256的情况下(即,根本没有扩张卷积),由于严重的信号抽取,性能比其他情况差得多。当输出步幅变大并相应地应用扩张卷积时,性能从20.29%提高到75.18%,表明在级联构建更多块进行语义分割时,扩张卷积是必不可少的。
ResNet-50与ResNet-101:
我们用更深的网络ResNet-101替换ResNet-50,并改变级联块的数量。如选项卡中所示。2、性能随着更多块的添加而提高,但提高幅度变小。值得注意的是,将block7应用于ResNet50会略微降低性能,但仍会提高ResNet-101的性能。
多重网格:
我们将多重网格方法应用于ResNet101,并在Tab中级联添加多个块。3.单位费率,多重网格=(r1、r2、r3)应用于区块4和所有其他添加的区块。如表中所示,我们观察到(a)应用多重网格方法通常优于普通版本,其中(r1,r2,r3)=(1,1,1),(b)简单地将单位速率加倍(即,(r1,r2,r3)=(2,2,2))是无效的,(c)使用多重网格进行更深入的操作可以提高性能。我们最好的模型是使用block7和(r1,r2,r3)=(1,2,1)的情况。
val集上的推理策略:
该模型以输出步幅=16训练,然后在推理过程中应用输出步幅=8得到更详细的特征图。如选项卡中所示。4,有趣的是,当评估输出步长为8时的最佳级联模型时,性能比评估输出步长为16时提高了1.39%。通过对多尺度输入(尺度={0.5,0.75,1.0,1.25,1.5,1.75})和左右翻转图像进行推理,性能得到进一步提高。特别是,我们计算每个尺度和翻转图像的平均概率作为最终结果。
4.3. 扩张空间金字塔池化
然后,我们对扩张Spatial Pyramid Pooling(ASPP)模块进行了实验,与[11]的主要区别在于批量归一化参数[38]得到了微调,并且包含了图像级特征。
ASPP:
在选项卡中。5、我们在block4中加入多重网格,并在改进的ASPP模块中加入图像级功能,以测试其效果。我们首先固定ASP P=(6,12,18)(即,对三个平行的3×3卷积分支采用速率=(6,12,18),并改变多重网格值。采用多重网格=(1,2,1)优于多重网格=(1,1,1),而在ASP P=(6,12,18)的上下文中采用多重网格=(1,2,4)可实现进一步的改进(参见表3中的“block4”列)。如果我们另外使用另一个并行分支(rate=24)来处理更长范围的上下文,那么性能将略微下降0.12%。另一方面,在ASPP模块中增加图像级功能是有效的,最终性能达到77.21%。
val集上的推理策略:
类似地,一旦模型经过训练,我们在推理过程中应用输出步长=8。如选项卡中所示。6、使用输出步幅=8比使用输出步幅=16提高1.3%,采用多尺度输入和添加左右翻转图像分别进一步提高性能0.94%和0.32%。采用ASPP的最佳模型的性能达到79.77%,优于采用级联扩张卷积模块的最佳模型(79.35%),因此被选为测试集评估的最终模型。
与DeepLabv2的比较:
我们的最佳级联模型(见表4)和ASPP模型(见表6)(在这两种情况下均未进行DenseCRF后处理或MS-COCO预训练)在PASCAL VOC 2012 val集上的表现均优于DeepLabv2(77.69%采用DenseCRF,并在[11]的表4中对MS-COCO进行了预训练)。改进主要来自于在所提出的模型中包含和微调批量归一化参数[38],以及有更好的方法对多尺度上下文进行编码。
附件:
我们在附录中展示了更多的实验结果,如超参数效应和城市景观[14]结果。
我们在图6中提供了最佳ASPP模型的定性视觉结果。如图所示,我们的模型能够很好地分割对象,而无需任何DenseCRF后处理。
故障模式:
如图6的底行所示,我们的模型难以分割(a)沙发与椅子,(b)餐桌和椅子,以及(c)罕见的物体视图。
在COCO上预先训练:
为了与其他最先进的模型进行比较,我们进一步在MS-COCO数据集上预训练我们最好的ASPP模型[57]。从MS-COCO trainval减去minival集合中,我们仅选择注释区域大于1000像素且包含PASCAL VOC 2012中定义的类的图像,从而产生约60K图像用于训练。此外,PASCAL VOC 2012中未定义的MS-COCO类均被视为背景类。在MS-COCO数据集上进行预训练后,当使用输出步幅=8、多尺度输入和在推理过程中添加左右翻转图像时,我们提出的模型在val集上的性能达到82.7%。我们采用较小的初始学习率=0.0001,并采用与Sec相同的训练方案。4.1对PASCAL VOC 2012数据集进行微调时。
测试集结果和有效的引导方法:
我们注意到PASCAL VOC 2012数据集提供了比扩展数据集更高质量的注释[29],尤其是对于bicycle类。因此,在对测试集进行评估之前,我们在官方PASCAL VOC 2012 trainval集上进一步微调了我们的模型。具体地说,我们的模型使用输出步长=8进行训练(以便保留注释细节),批量归一化参数被冻结(详情见第4.1节)。此外,我们没有像[85,70]那样执行像素硬示例挖掘,而是在硬图像上进行引导。特别是,我们复制了训练集中包含硬类(即自行车、椅子、桌子、盆栽和沙发)的图像。如图7所示,简单的自举方法对于分割自行车类是有效的。最后,我们的“DeepLabv3”在测试集上实现了85.7%的性能,无需任何DenseCRF后处理,如表4所示。7.
在JFT-300M上预训练的模型:
受[79]最近工作的推动,我们进一步采用了ResNet-101模型,该模型已在ImageNet和JFT300M数据集[34,13,79]上进行了预训练,在PASCAL VOC 2012测试集上的性能为86.9%。
5.结论
我们提出的模型“DeepLabv3”采用带上采样滤波器的扩张卷积来提取密集的特征映射并捕获长距离上下文。具体来说,为了对多尺度信息进行编码,我们提出的级联模块逐渐将扩张速率加倍,而我们提出的扩张空间金字塔池化模块增加了图像级特征,并在多采样率和有效视场下使用滤波器探测特征。我们的实验结果表明,与以前的DeepLab版本相比,所提出的模型有了显著的改进,并在PASCAL VOC 2012语义图像分割基准上实现了与其他最先进模型相当的性能。
致谢
我们要感谢与Zbigniew Wojna进行的有价值的讨论,来自Chen Sun和Andrew Howard的帮助,以及来自Google Mobile Vision团队的支持。
A.超参数的影响
在本节中,我们遵循与本文相同的训练协议,并对一些超参数的效果进行了实验。
新的训练协议:
正如在主要论文中提到的,我们修改了[10,11]中的训练协议,有三个主要区别:(1)更大的裁剪大小,(2)训练期间的上采样逻辑,以及(3)微调批量归一化。在这里,我们定量地测量了这些变化的影响。如选项卡中所示。8,当采用本文中的新训练协议设置时,DeepLabv3在PASCAL VOC 2012 val集[20]上的性能达到77.21%。在训练DeepLabv3而不微调批处理归一化时,性能下降到75.95%。如果我们在训练期间不增加罗吉特的抽样(而是减少对基本事实的抽样),绩效将下降到76.01%。此外,如果我们采用较小的裁剪尺寸值(即[10,11]中的321),则性能将显著降低至67.22%,这表明小裁剪尺寸导致的边界效应会损害DeepLabv3的性能,它在扩张空间金字塔池化(ASPP)模块中采用了较大的扩张率。
不同的批量大小:
由于通过微调批量归一化来训练DeepLabv3非常重要,我们进一步实验了不同批量大小的效果。如选项卡中所示。9、使用小批量训练模型效率低,而使用大批量训练可以获得更好的性能。
输出步幅:
输出步长的值决定了输出特征映射的分辨率,进而影响我们在训练期间可以使用的最大批量大小。在选项卡中。10,我们在PASCAL VOC 2012 val集合的训练和评估中定量测量采用不同输出步幅值的效果。我们首先确定评估输出步幅=16,改变训练输出步幅,并为所有设置调整最大可能的批量大小(我们能够分别为8、16和32的训练输出步幅调整批量大小6、16和24)。如选项卡顶部的行所示。10,使用训练输出步长=8只能获得74.45%的性能,因为我们无法在该设置中适应大批量,这会在微调批量归一化参数时降低性能。当采用训练输出步长=32时,我们可以适应大批量,但会丢失特征映射细节。另一方面,采用训练输出步幅=16进行最佳折衷,并获得最佳性能。在选项卡的底部行中。10,我们增加了评估输出步长=8。除了训练输出步幅=32的设置外,所有设置都会提高性能。我们假设,我们在训练过程中丢失了太多的特征图细节,因此模型即使在使用时也无法恢复细节
B.异步训练
在本节中,我们将使用TensorFlow异步训练对DeepLabv3进行实验[1]。我们在PASCAL VOC 2012语义分割数据集上测量了使用多个副本训练模型的效果。我们的基线仅使用一个复制品,使用K80 GPU需要3.65天的训练时间。如选项卡中所示。11,我们发现使用多个副本的性能与基线相比没有下降。但是,使用32个副本的训练时间显著减少到2.74小时。
C.城市景观数据集上的DeepLabv3
Cityscapes[14]是一个大型数据集,包含5000幅图像(分别为2975、500和1525幅用于训练、验证和测试集)的高质量像素级注释以及大约20000幅粗略注释的图像。按照评估协议[14],19个语义标签用于评估,而不考虑无效标签。当仅使用2975幅图像(即,训练精细集)进行训练时,我们首先在验证集上评估建议的DeepLabv3模型。我们采用了与之前相同的训练协议,只是我们采用了90K训练迭代,裁剪大小等于769,并对整个图像进行推理,而不是像[11]中那样对重叠区域进行推理。如选项卡中所示。12,当在输出步幅=16时进行评估时,DeepLabv3达到77.23%的性能。在输出步幅=8时评估模型将性能提高到77.82%。当我们采用多尺度输入(我们可以在K40 GPU上拟合尺度={0.75,1,1.25})并添加左右翻转输入时,模型达到79.30%。为了与其他最先进的模型竞争,我们在trainval粗集(即3475张精细注释图像和额外20000张粗略注释图像)上进一步训练了DeepLabv3。在推理过程中,我们采用了更多的尺度和更精细的输出步幅。特别是,我们使用CPU使用量表={0.75,1,1.25,1.5,1.75,2}和评估输出步幅=4进行推理,与仅使用三个量表和输出步幅=8相比,这在验证集上分别额外贡献了0.8%和0.1%。最后,如选项卡中所示。13,我们提出的DeepLabv3在测试集上实现了81.3%的性能。val集合上的一些结果如图8所示。
deeplabv3+
用于语义图像分割的扩张可分离卷积编码器-解码器陈良杰、朱玉坤、George Papandreou、Florian Schroff、Hartwig Adam空间金字塔池化模块或编码-解码器结构用于深层神经网络的语义分割任务。前一种网络能够通过以多种速率和多个有效视场探测传入特征来编码多尺度上下文信息,而后一种网络可以通过逐渐恢复空间信息来捕获更清晰的对象边界。在这项工作中,我们建议结合两种方法的优点。具体来说,我们提出的模型DeepLabv3+通过添加一个简单但有效的解码器模块来细化分割结果,特别是沿着对象边界的分割结果,从而扩展了DeepLabv3。我们进一步探索了异常模型,并将深度可分离卷积应用于扩张空间金字塔池化和解码器模块,从而形成更快、更强的编解码网络。我们在PASCAL VOC 2012和Cityscapes数据集上证明了所提出模型的有效性,在不进行任何后处理的情况下实现了89.0%和82.1%的测试集性能。我们的论文附带了在Tensorflow中提出的模型在\url{this https url}的公开参考实现。
1引言
语义分割的目标是为图像中的每个像素指定语义标签[1,2,3,4,5],这是计算机视觉的基本主题之一。基于全卷积神经网络[8,11]的深度卷积神经网络[6,7,8,9,10]在基准任务上比依赖手工特征[12,13,14,15,16,17]的系统有显著改进。在这项工作中,我们考虑两种类型的神经网络,使用空间金字塔池化模块(18, 19, 20)或编码器解码器结构(21, 22)进行语义分割,其中前者通过汇集不同分辨率的特征,而后者能够获得清晰的对象边界来捕获丰富的上下文信息。
为了在多个尺度上捕获上下文信息,DeepLabv3[23]采用了几种不同速率的并行扩张卷积(称为扩张 Spatial Pyramid Pooling,或ASPP),而PSPNet[24]在不同的网格尺度上执行池化操作。尽管在最后一个特征映射中编码了丰富的语义信息,但是由于网络主干内的跨操作的池化或卷积,与对象边界相关的详细信息丢失。这可以通过应用扩张卷积来提取更密集的特征图来缓解。然而,鉴于最先进的神经网络[7,9,10,25,26]的设计和有限的GPU内存,从计算上禁止提取比输入分辨率小8倍甚至4倍的输出特征图。以ResNet-101[25]为例,当应用扩张卷积提取比输入分辨率小16倍的输出特征时,必须放大最后3个剩余块(9层)内的特征。更糟糕的是,如果需要比输入小8倍的输出特性,26个剩余块(78层!)将受到影响。因此,如果为这类模型提取更密集的输出特征,则计算量很大。另一方面,编码器-解码器模型[21,22]有助于加快编码器路径中的计算速度(因为没有特征被扩展),并逐渐恢复解码器路径中尖锐的对象边界。尝试结合这两种方法的优点,我们建议通过合并多尺度上下文信息来丰富编码器-解码器网络中的编码器模块。
特别是,我们提出的名为DeepLabv3+的模型通过添加一个简单但有效的解码器模块来恢复对象边界,从而扩展了DeepLabv3[23],如图1所示。丰富的语义信息被编码在DeepLabv3的输出中,通过扩张卷积可以根据计算资源的预算控制编码器特征的密度。此外,解码器模块允许详细的对象边界恢复。
受最近深度可分离卷积[27,28,26,29,30]的成功推动,我们也对该操作进行了探索,并通过采用类似于[31]的异常模型[26]来完成语义分割任务,从而在速度和准确性方面取得了改进,以及将扩张可分离卷积应用于ASPP和解码器模块。最后,我们在PASCAL VOC 2012和Cityscapes数据集上证明了所提出模型的有效性,在不进行任何后处理的情况下,测试集的性能达到89.0%和82.1%,创造了一个新的技术水平。
总之,我们的贡献是:
–我们提出了一种新的编码器-解码器结构,该结构使用DeepLabv3作为强大的编码器模块和简单但有效的解码器模块。
–在我们的结构中,可以通过扩张卷积任意控制提取编码器特征的分辨率,以权衡精度和运行时间,这在现有编码器-解码器模型中是不可能的。
–我们为分割任务调整了异常模型,并将深度可分离卷积应用于ASPP模块和解码器模块,从而形成更快、更强的编码器-解码器网络。
–我们提出的模型在PASCAL VOC 2012和Cityscapes数据集上实现了最新的性能。我们还提供了设计选择和模型变体的详细分析。
–我们将基于Tensorflow的拟议模型实施公开于https://github.com/tensorflow/models/tree/master/ 研究/深度实验室。
2相关工作
基于全卷积网络(FCN)[8,11]的模型已经证明在几个分割基准[1,2,3,4,5]上有显著改进。有几种模型变体建议利用上下文信息进行分割[12,13,14,15,16,17,32,33],包括采用多尺度输入的模型(即图像金字塔)[34,35,36,37,38,39]或采用概率图形模型的模型(如具有高效推理算法的DenseCRF[40])[42,43,44,37,45,46,47,48,49,50,51,39]。在这项工作中,我们主要讨论使用空间金字塔池化和编解码器结构的模型。
编码器-解码器网络已成功应用于许多计算机视觉任务,包括人体姿势估计[53]、目标检测[54,55,56]和语义分割[11,57,21,22,58,59,60,61,62,63,64]。通常,编码器-解码器网络包含(1)逐渐减少特征映射并捕获更高语义信息的编码器模块,以及(2)逐渐恢复空间信息的解码器模块。基于这个想法,我们建议使用DeepLabv3[23]作为编码器模块,并添加一个简单但有效的解码器模块,以获得更清晰的分割。
深度可分离卷积:
深度可分离卷积[27,28]或组卷积[7,65],这是一种强大的运算,可在保持类似(或略好)性能的同时减少计算成本和参数数量。最近的许多神经网络设计中都采用了这种操作[66,67,26,29,30,31,68]。特别是,我们探索了异常模型[26],类似于[31]提交的COCO 2017检测挑战,并在语义分割任务的准确性和速度方面显示了改进。
3种方法
在本节中,我们将简要介绍扩张卷积[69,70,8,71,42]和深度可分离卷积[27,28,67,26,29]。然后,在讨论附加到编码器输出的拟议解码器模块之前,我们回顾了用作编码器模块的DeepLabv3[23]。我们还提出了一种改进的异常模型[26,31],它通过更快的计算进一步提高了性能。
3.1带扩张卷积的编码器-解码器
扩张卷积:
扩张卷积是一种强大的工具,它允许我们显式地控制由深度卷积神经网络计算的特征的分辨率,并调整滤波器的视场以捕获多尺度信息,它概括了标准卷积运算。在二维信号的情况下,对于输出特征映射y和卷积滤波器w上的每个位置i,对输入特征映射x应用扩张卷积,如下所示:
其中,衰减率r决定了我们采样输入信号的步幅。我们请感兴趣的读者参考[39]了解更多详情。请注意,标准卷积是一种特殊情况,其中速率r=1。通过改变速率值,自适应地修改过滤器的视野。
深度可分离卷积:
深度可分离卷积,将标准卷积分解为深度卷积,然后再进行逐点卷积(即1×1卷积),大大降低了计算复杂度。具体地说,深度卷积对每个输入信道独立地执行空间卷积,而点式卷积用于组合深度卷积的输出。在TensorFlow[72]深度可分离卷积的实现中,在深度卷积(即空间卷积)中支持扩张卷积,如图3所示。在这项工作中,我们将产生的卷积称为扩张可分离卷积,并发现扩张可分离卷积在保持相似(或更好)性能的同时显著降低了所提出模型的计算复杂度。
DeepLabv3作为编码器:
DeepLabv3[23]利用扩张卷积[69,70,8,71]以任意分辨率提取由深度卷积神经网络计算的特征。这里,我们将输出步幅表示为输入图像空间分辨率与最终输出分辨率的比率(在全局池化或完全连接层之前)。对于图像分类任务,最终特征图的空间分辨率通常比输入图像分辨率小32倍,因此输出步长=32。对于语义分割任务,可以通过移除最后一个(或两个)块中的跨步并相应地应用扩张卷积(例如,我们分别对最后两个块应用rate=2和rate=4,以获得更密集的特征提取。此外,DeepLabv3增强了扩张空间金字塔池化模块,该模块通过以不同速率应用扩张卷积,以图像级特征在多个尺度上探测卷积特征[52]。在我们提出的编码器-解码器结构中,我们使用原始DeepLabv3中logits之前的最后一个特征映射作为编码器输出。注:编码器输出特征图包含256个通道和丰富的语义信息。此外,根据计算预算,可以通过应用扩张卷积以任意分辨率提取特征。
拟议解码器:
来自DeepLabv3的编码器特征通常在输出步长=16时计算。在[23]的工作中,特征被双线性上采样16倍,这可以被认为是一个幼稚的解码器模块。然而,这个简单的解码器模块可能无法成功恢复对象分割细节。因此,我们提出了一个简单但有效的解码器模块,如图2所示。编码器特征首先以因子4进行双线性上采样,然后与来自具有相同空间分辨率的网络主干的相应低级特征[73]连接(例如,在ResNet-101[25]中跨步之前的Conv2)。我们在低层特征上应用另一个1×1卷积来减少通道数量,因为相应的低层特征通常包含大量通道(例如256或512),这可能超过丰富编码器特征的重要性(在我们的模型中只有256个通道),并使训练更加困难。在级联之后,我们应用一些3×3卷积来细化特征,然后再进行一次简单的双线性上采样,采样因子为4。我们以秒显示。4使用编码器模块的输出步幅=16在速度和精度之间达成最佳平衡。当编码器模块使用输出步幅=8时,性能略有提高,但代价是额外的计算复杂性。
3.2修改的对齐异常
Exception模型[26]在ImageNet[74]上显示了具有快速计算能力的有希望的图像分类结果。最近,MSRA团队[31]修改了异常模型(称为对齐异常),并进一步提高了目标检测任务的性能。基于这些发现,我们朝着相同的方向工作,以适应语义图像分割任务的异常模型。特别是,我们在MSRA修改的基础上做了更多的修改,即(1)与[31]中相同的更深层次的异常,除了我们没有修改入口流网络结构以实现快速计算和内存效率,(2)所有最大池化操作都被带跨步的深度可分离卷积所取代,这使我们能够应用扩张可分离卷积以任意分辨率提取特征图(另一种选择是将扩张算法扩展到最大池化操作),并且(3)在每次3×3深度卷积后添加额外的批处理归一化[75]和重新激活,类似于MobileNet设计[29]。详见图4。
4实验评价
我们使用ImageNet-1k[74]预训练的ResNet-101[25]或修改的对齐异常[26,31]通过扩张卷积提取密集特征图。我们的实现基于TensorFlow[72],并公开提供。
提出的模型在PASCAL VOC 2012语义分割基准[1]上进行评估,该基准包含20个前景对象类和一个背景类。原始数据集包含1464(序列)、1449(val)和1456(测试)像素级注释图像。我们通过[76]提供的额外注释来扩充数据集,得到10582(trainaug)个训练图像。性能是根据21个类(mIOU)的平均并集上的像素交点来衡量的。
我们遵循与[23]中相同的训练协议,并请感兴趣的读者参考[23]了解详细信息。简言之,我们采用相同的学习速率计划(即“poly”策略[52]和相同的初始学习速率0.007)、裁剪尺寸513×513、输出步幅=16时微调批量归一化参数[75],以及训练期间的随机尺度数据增强。请注意,我们还在建议的解码器模块中包含批量归一化参数。我们提出的模型是端到端训练的,没有对每个组件进行分割预训练。
4.1解码器设计选择
我们将“DeepLabv3特征映射”定义为由DeepLabv3计算的最后一个特征映射(即,包含ASPP特征和图像级特征的特征),并将[k×k,f]定义为具有内核k×k和f滤波器的卷积运算。
当采用输出步幅=16时,基于ResNet-101的DeepLabv3[23]在训练和评估期间双线性地将Logit样本增加16。这种简单的双线性上采样可以被视为一种朴素的解码器设计,在PASCAL VOC 2012 val集上达到77.21%[23]的性能,比在训练期间不使用这种朴素的解码器(即在训练期间下采样)要好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卷积结构,并在Tab中报告了结果。2.我们发现,在将Conv2特征映射(跨步前)与DeepLabv3特征映射连接后,使用两个3×3卷积和256个滤波器比仅使用一个或三个卷积更有效。将过滤器数量从256更改为128,或将内核大小从3×3更改为1×1,会降低性能。我们还对在解码器模块中同时利用Conv2和Conv3特征映射的情况进行了实验。在这种情况下,解码器特征映射逐渐由2进行上采样,首先与Conv3连接,然后与Conv2连接,每个特征映射将通过[3×3,256]操作进行细化。整个解码过程类似于U-Net/SegNet设计[21,22]。然而,我们没有看到明显的改善。因此,最后,我们采用了非常简单但有效的解码器模块:通过两个[3×3,256]操作细化了DeepLabv3特征映射和信道缩减Conv2特征映射的级联。请注意,我们建议的DeepLabv3+模型的输出步长为4。鉴于有限的GPU资源,我们不追求更密集的输出特征图(即输出步幅<4)。
4.2作为网络主干的ResNet-101
为了在准确性和速度方面比较模型变量,我们在选项卡中报告了mIOU和乘法加法。3在建议的DeepLabv3+模型中使用ResNet-101[25]作为网络主干时。多亏了扩张卷积,我们能够在训练和评估期间使用单个模型获得不同分辨率的特征。
基线:
选项卡中的第一行块。3包含来自[23]的结果,表明在评估期间提取更密集的特征图(即评估输出步幅=8)并采用多尺度输入可提高性能。此外,添加左右翻转的输入会使计算复杂度增加一倍,但性能仅略有提高。
添加解码器:
选项卡中的第二行块。3包含采用建议的解码器结构时的结果。当使用eval-output-stride=16或8时,性能分别从77.21%提高到78.85%或78.51%提高到79.35%,但代价是增加了约20B的计算开销。当使用多尺度和左右翻转输入时,性能得到进一步改善。
更粗糙的特征映射:
我们还对使用训练输出步幅=32(即,训练期间根本没有扩张卷积)进行快速计算的情况进行了实验。如选项卡中的第三行块所示。3.增加解码器带来2%的改进,而只需要74.20B的乘法相加。然而,性能总是比我们采用列车输出步幅=16和不同的评估输出步幅值的情况低1%到1.5%。因此,根据复杂度预算,我们更喜欢在训练或评估期间使用输出步幅=16或8。
4.3作为网络主干的例外情况
我们进一步使用更强大的Exception[26]作为网络主干。在[31]之后,我们又做了一些修改,如第节所述。3.2.
ImageNet预训练:
建议的异常网络在ImageNet-1k数据集[74]上进行了预训练,具有类似于[26]中的训练协议。具体来说,我们采用Nesterov动量优化器,动量=0.9,初始学习率=0.05,每两个阶段的速率衰减=0.94,权重衰减4e− 5.我们使用50个GPU的异步训练,每个GPU的批量大小为32,图像大小为299×299。我们没有很难调整超参数,因为目标是在ImageNet上预训练模型以进行语义分割。我们在选项卡中的验证集上报告单模型错误率。4根据相同的训练方案,与基线一起复制ResNet-101[25]。我们观察到,在修改的异常中,每3×3深度卷积后,如果不添加额外的批量归一化和ReLU,Top1和Top5精度的性能将分别降低0.75%和0.29%。
使用所提出的异常作为网络主干进行语义分割的结果如表1所示。5.
基线:
我们首先在Tab的第一行块中报告结果,而不使用建议的解码器。5,这表明在使用ResNet-101的情况下,当列车输出步幅=eval输出步幅=16时,使用Exception作为网络主干可将性能提高约2%。通过使用eval output stride=8、推理过程中的多尺度输入以及添加左右翻转输入,还可以获得进一步的改进。请注意,我们没有使用多重网格方法[77,78,23],我们发现多重网格方法不会提高性能。
添加解码器:
如选项卡中的第二行块所示。5.对于所有不同的推理策略,当使用eval-output-stride=16时,添加解码器将带来0.8%的改进。当使用eval output stride=8时,改善会变小。
使用深度可分离卷积:
基于深度可分离卷积的高效计算,我们在ASPP和解码器模块中进一步采用了它。如选项卡中的第三行块所示。5,乘法相加的计算复杂度显著降低了33%至41%,同时获得了类似的mIOU性能。
COCO预训练:
为了与其他最先进的模型进行比较,我们在MS-COCO数据集[79]上进一步预训练了我们提出的DeepLabv3+模型,这为所有不同的推理策略带来了额外的2%的改进。
JFT的预训练:
与[23]类似,我们还采用了已在ImageNet-1k[74]和JFT-300M数据集[80,26,81]上预训练过的拟议异常模型,这将带来额外的0.8%到1%的改进。
测试集结果:
由于在基准评估中未考虑计算复杂性,因此我们选择最佳性能模型,并使用输出步长=8和冻结批量归一化参数对其进行训练。最后,我们的“DeepLabv3+”在没有和有JFT数据集预训练的情况下实现了87.8%和89.0%的性能。
定性结果:
我们在图6中提供了最佳模型的视觉结果。如图所示,我们的模型能够很好地分割对象,而无需任何后处理。
故障模式:
如图6的最后一行所示,我们的模型在分割(a)沙发与椅子,(b)严重遮挡的对象,以及(c)具有罕见视图的对象时存在困难。
4.4沿对象边界的改进
在本小节中,我们使用trimap实验[14,40,39]评估分割精度,以量化目标边界附近拟议解码器模块的精度。具体来说,我们对val集上的“void”标签注释应用形态学膨胀,这通常发生在对象边界附近。然后,我们计算“void”标签的扩展带(称为trimap)内的像素的平均IOU。如图5(a)所示,与朴素双线性上采样相比,为ResNet-101[25]和Exception[26]网络主干采用所提出的解码器提高了性能。当扩张带较窄时,改善更为显著。如图所示,在最小trimap宽度下,我们观察到ResNet-101和Exception分别有4.8%和5.4%的mIOU改善。我们还观察到使用图5(b)中建议的解码器的效果。
4.5城市景观的实验结果
在本节中,我们在Cityscapes数据集[3]上试验了DeepLabv3+,这是一个大规模数据集,包含5000幅图像(训练集、验证集和测试集分别为2975、500和1525)和大约20000幅粗略注释图像的高质量像素级注释。
如选项卡中所示。7(a)在包含ASPP模块和图像级功能的DeepLabv3[23]的基础上,采用提议的异常模型作为网络主干(表示为X-65),在验证集上实现了77.33%的性能。添加建议的解码器模块将性能显著提高到78.79%(提高1.46%)。我们注意到,删除增强图像级功能将性能提高到79.14%,这表明在DeepLab模型中,图像级功能在PASCAL VOC 2012数据集上更有效。我们还发现,在Cityscapes数据集上,在异常[26]中增加入口流中的更多层是有效的,这与[31]在对象检测任务中所做的相同。在更深层次的网络主干(表中表示为X-71)上构建的结果模型在验证集上达到了79.55%的最佳性能。
在val集合上找到最佳模型变量后,我们在粗略注释上进一步微调模型,以便与其他最先进的模型竞争。如选项卡中所示。7(b),我们提议的DeepLabv3+在测试集上达到82.1%的性能,在城市景观上创造了一种新的最先进的性能。
5结论
我们提出的模型“DeepLabv3+”采用编码器-解码器结构,其中DeepLabv3用于对丰富的上下文信息进行编码,并采用简单但有效的解码器模块来恢复对象边界。根据可用的计算资源,还可以应用扩张卷积以任意分辨率提取编码器特征。我们还探讨了异常模型和扩张可分离卷积,以使所提出的模型更快、更强。最后,我们的实验结果表明,该模型在PASCAL VOC 2012和Cityscapes数据集上具有最新的性能。
致谢
我们要感谢与Qhaozhi和Dai Jifeng就Aligned Exception进行的有价值的讨论、来自Chen Sun的反馈以及Google Mobile Vision团队的支持。
网友评论