DeepLabv3模型是由Liang-Chieh Chen等人提出的一种用于语义图像分割的深度学习模型。该模型在DeepLab系列的基础上进行了改进,旨在通过空洞卷积(atrous convolution)和空洞空间金字塔池化(Atrous Spatial Pyramid Pooling, ASPP)来捕捉多尺度的上下文信息,从而提高分割的准确性。本文主要是自己的论文阅读记录,感兴趣的话可以参考一下,如果想要阅读原英文论文的话可以在这里找到原文,如下所示:

摘要
在这项工作中,我们重新审视了空洞卷积,这是一种强大的工具,用于显式调整滤波器的感受野以及控制深度卷积神经网络计算的特征响应的分辨率,在语义图像分割的应用中。为了处理多尺度对象分割的问题,我们设计了模块,这些模块采用级联或并行的空洞卷积来通过采用多个空洞率来捕捉多尺度上下文。此外,我们提出增强我们之前提出的空洞空间金字塔池化模块,该模块在多个尺度上探测卷积特征,通过编码全局上下文的图像级特征进一步提高性能。我们还详细阐述了实现细节,并分享了我们训练系统的经验。所提出的“DeepLabv3”系统显著优于我们之前的DeepLab版本,无需DenseCRF后处理,并在PASCAL VOC 2012语义图像分割基准测试中与其他最先进的模型取得了相当的性能。

图1. 具有3×3核大小和不同速率的空洞卷积。标准卷积对应于速率=1的空洞卷积。采用大值的空洞速率扩大了模型的感受野,能够在多尺度上编码对象。
1 引言
对于语义分割任务[20, 63, 14, 97, 7],我们在应用深度卷积神经网络(DCNNs)[50]时考虑了两个挑战。第一个挑战是由于连续的池化操作或卷积步幅导致的特征分辨率降低,这使得DCNNs能够学习越来越抽象的特征表示。然而,这种对局部图像变换的不变性可能阻碍密集预测任务,在这些任务中需要详细的空间信息。为了克服这个问题,我们主张使用空洞卷积[36, 26, 74, 66],这在语义图像分割中已被证明是有效的[10, 90, 11]。空洞卷积,也称为膨胀卷积,允许我们重新利用ImageNet[72]预训练网络来提取更密集的特征图,方法是从最后几层中移除下采样操作并上采样相应的滤波器核,相当于在滤波器权重之间插入孔洞(法语中的“trous”)。通过空洞卷积,可以在DCNNs中控制特征响应的分辨率,而无需学习额外的参数。

图2. 捕捉多尺度上下文的不同架构。
另一个困难来自于多尺度对象的存在。已经提出了几种方法来处理这个问题,我们主要考虑了四种方法,如图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]使用多个速率和多个有效感受野的滤波器或池化操作探测输入特征图,从而捕捉多尺度的对象。
在这项工作中,我们重新审视了在级联模块和空间金字塔池化的框架中应用空洞卷积,这使我们能够有效地扩大滤波器的感受野以包含多尺度上下文。特别是,我们提出的模块由具有不同速率的空洞卷积和批量归一化层组成,我们发现这些层在训练时也很重要。我们通过级联或并行(特别是空洞空间金字塔池化(ASPP)方法[11])来实验布置这些模块。我们讨论了在应用具有极大速率的3×3空洞卷积时的一个重要实际问题,由于图像边界效应,它无法捕捉长程信息,实际上退化为1×1卷积,并提出将图像级特征纳入ASPP模块。此外,我们详细阐述了实现细节,并分享了训练所提出模型的经验,包括一种简单而有效的引导方法,用于处理罕见和精细注释的对象。最终,我们提出的模型“DeepLabv3”改进了我们之前的工作[10, 11],并在无需DenseCRF后处理的情况下在PASCAL VOC 2012测试集上达到了85.7%的性能。
2 相关工作
已经证明,全局特征或上下文交互[33, 76, 43, 48, 27, 89]对于语义分割中正确分类像素是有益的。在这项工作中,我们讨论了四种全卷积网络(FCNs)[74, 60](见图2),这些网络利用上下文信息进行语义分割[30, 15, 62, 9, 96, 55, 65, 73, 87]。
图像金字塔: 相同的模型,通常具有共享权重,应用于多尺度输入。小尺度输入的特征响应编码长程上下文,而大尺度输入保留小对象的细节。典型的例子包括Farabet等人[22],他们通过拉普拉斯金字塔变换输入图像,将每个尺度的输入馈送到DCNN,并合并所有尺度的特征图。[19, 69]从粗到细顺序应用多尺度输入,而[55, 12, 11]直接调整输入的尺寸为几个尺度,并融合所有尺度的特征。这类模型的主要缺点是,由于GPU内存有限,它不能很好地扩展到更大/更深的DCNNs(例如,像[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]在DCNNs的置信图(置信图是包含与预测类别数量相等的输出通道的最终DCNN特征图)之上使用几个额外的卷积层来捕捉上下文信息。最近,[41]提出学习一般且稀疏的高维卷积(双边卷积),[82, 8]结合高斯条件随机场和DCNNs进行语义分割。
空间金字塔池化: 该模型使用空间金字塔池化[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 空洞卷积用于密集特征提取
部署在全卷积方式中的深度卷积神经网络(DCNNs)[50]在语义分割任务中表现出色。然而,这些网络中连续的池化操作或卷积步幅显著降低了生成的特征图的空间分辨率,通常在最近的DCNNs中每个方向上减少32倍[47, 78, 32]。反卷积层(或转置卷积)[92, 60, 64, 3, 71, 68]已被用于恢复空间分辨率。相反,我们主张使用“空洞卷积”,最初是为“algorithme à trous”方案中的未抽取小波变换的高效计算而开发的[36],并在DCNN上下文中由[26, 74, 66]使用。

其中空洞率r对应于我们采样输入信号的步幅,这相当于将输入x与通过在每个空间维度上的连续滤波器值之间插入r-1个零生成的上采样滤波器进行卷积(因此得名空洞卷积,法语中的“trous”意为孔洞)。标准卷积是速率r=1的特殊情况,空洞卷积允许我们通过改变速率值来自适应地修改滤波器的感受野。参见图1。
空洞卷积还允许我们在全卷积网络中显式控制计算特征响应的密度。这里,我们用output_stride表示输入图像空间分辨率与最终输出分辨率的比率。对于用于图像分类任务的DCNNs[47, 78, 32],最终特征响应(在全连接层或全局池化之前)比输入图像维度小32倍,因此output_stride=32。如果希望在DCNNs中将计算的特征响应的空间密度加倍(即output_stride=16),则将降低分辨率的最后一个池化或卷积层的步幅设置为1,以避免信号抽取。然后,所有后续卷积层都被具有速率r=2的空洞卷积层替换。这允许我们提取更密集的特征响应,而无需学习额外的参数。请参阅[11]了解更多细节。
3.2 通过空洞卷积加深
我们首先探索设计具有级联空洞卷积的模块。具体来说,我们复制ResNet的最后几个块(在图3中表示为block4),并将它们按级联排列。这些块中有三个3×3卷积,最后一个卷积包含步幅2,除了最后一个块中的卷积,类似于原始ResNet。该模型的动机是引入的步幅使得在更深的块中容易捕捉长程信息。例如,整个图像特征可以在最后一个小分辨率特征图中总结,如图3(a)所示。然而,我们发现连续的步幅对语义分割有害(见第4节中的表1),因为细节信息被抽取,因此我们应用空洞卷积,速率由所需的output_stride值决定,如图3(b)所示,其中output_stride=16。

图3. 无空洞卷积和有空洞卷积的级联模块。
在这个提出的模型中,我们实验了级联ResNet块,最多到block7(即额外的block5、block6、block7作为block4的副本),如果没有应用空洞卷积,则output_stride=256。
3.3 多网格方法
受到多网格方法的启发,这些方法采用不同大小的网格层次结构[4, 81, 5, 67],并遵循[84, 18],我们在提出的模型中采用不同的空洞率在block4到block7中。具体来说,我们将单位速率定义为Multi_Grid=(r1,r2,r3),用于block4到block7中的三个卷积层。卷积层的最终空洞率等于单位速率与相应速率的乘积。例如,当output_stride=16且Multi_Grid=(1,2,4)时,三个卷积在block4中将具有rates=2·(1,2,4)=(2,4,8)。

图4. 在65×65特征图上,随着空洞率变化,3×3滤波器的有效权重归一化计数。当空洞率较小时,所有9个滤波器权重都应用于特征图的大部分有效区域,而当空洞率变大时,3×3滤波器退化为1×1滤波器,因为只有中心权重是有效的。
3.4 空洞空间金字塔池化
我们重新审视了[11]中提出的空洞空间金字塔池化(ASPP),其中在特征图之上应用了四个并行的具有不同空洞率的空洞卷积。ASPP受到空间金字塔池化成功的启发[28, 49, 31],它表明在多个尺度上重新采样特征对于准确和高效地分类任意尺度的区域是有效的。与[11]不同,我们在ASPP中包含批量归一化。
具有不同空洞率的ASPP有效地捕捉多尺度信息。然而,我们发现随着采样率的增大,有效滤波器权重的数量(即应用于有效特征区域而不是填充零的权重)变小。当将3×3滤波器应用于具有不同空洞率的65×65特征图时,这种效果如图4所示。在极端情况下,速率值接近特征图大小时,3×3滤波器,而不是捕捉整个图像上下文,退化为简单的1×1滤波器,因为只有中心滤波器权重是有效的。
为了克服这个问题并结合全局上下文信息到模型中,我们采用图像级特征,类似于[58, 95]。具体来说,我们在模型的最后一个特征图上应用全局平均池化,将生成的图像级特征馈送到具有256个滤波器(和批量归一化[38])的1×1卷积中,然后双线性上采样特征到所需的空间维度。最终,我们改进的ASPP包括(a)一个1×1卷积和三个3×3卷积,当output_stride=16时,速率=(6,12,18)(所有卷积具有256个滤波器和批量归一化),以及(b)图像级特征,如图5所示。请注意,当output_stride=8时,速率加倍。所有分支的特征结果然后被连接并通过另一个1×1卷积(也具有256个滤波器和批量归一化),然后是最终的1×1卷积,生成最终的logits。

图5. 并行模块,带有空洞卷积(ASPP),并增强图像级特征。
4 实验评估
我们通过应用空洞卷积来提取密集特征,将ImageNet预训练的ResNet[32]适应于语义分割。回想一下,output_stride定义为输入图像空间分辨率与最终输出分辨率的比率。例如,当output_stride=8时,ResNet的最后两个块(在我们的表示中为block3和block4)包含空洞卷积,速率分别为2和4。我们的实现基于TensorFlow[1]。
我们在PASCAL VOC 2012语义分割基准测试[20]上评估所提出的模型,该基准测试包含20个前景对象类别和一个背景类别。原始数据集包含1,464(训练)、1,449(验证)和1,456(测试)像素级标记图像用于训练、验证和测试。该数据集由[29]提供的额外注释增强,导致10,582(训练)训练图像。性能以21个类别的像素交并比(IOU)平均值来衡量。
4.1 训练协议
在本小节中,我们讨论我们的训练协议的细节。
学习率策略: 类似于[58, 11],我们采用“poly”学习率策略,其中初始学习率乘以
,power=0.9。
裁剪大小: 遵循原始训练协议[10, 11],在训练期间从图像中裁剪补丁。为了使具有大空洞率的空洞卷积有效,需要大的裁剪大小;否则,具有大空洞率的滤波器权重大多应用于填充的零区域。因此,我们在PASCAL VOC 2012数据集的训练和测试期间使用513的裁剪大小。
表1. 使用ResNet-50和block7时,不同输出步幅下的空洞卷积加深。采用输出步幅=8以更多内存使用为代价获得更好的性能。

表2. 使用ResNet-50和ResNet-101时,不同级联块数下的空洞卷积加深,输出步幅=16。网络结构“block4”、“block5”、“block6”和“block7”分别添加额外的0、1、2、3个级联模块。通常,采用更多级联块会提高性能。

表3. 在输出步幅=16时,为ResNet-101采用多网格方法的不同级联块数。最佳模型性能以粗体显示。

表4. 验证集上的推理策略。MG:多网格。OS:输出步幅。MS:测试时的多尺度输入。Flip:添加左右翻转输入。

表5. 在输出步幅=16时,采用多网格方法和图像级特征的空洞空间金字塔池化。

表6. 验证集上的推理策略:MG:多网格。ASPP:空洞空间金字塔池化。OS:输出步幅。MS:测试时的多尺度输入。Flip:添加左右翻转输入。COCO:在MS-COCO上预训练的模型。

表7. PASCAL VOC 2012测试集上的性能。

批量归一化: 我们在ResNet之上添加的模块都包含批量归一化参数[38],我们发现这些参数在训练时也很重要。由于需要大的批量大小来训练批量归一化参数,我们使用output_stride=16,并以16的批量大小计算批量归一化统计量。批量归一化参数以衰减=0.9997进行训练。在30K次迭代和初始学习率=0.007的训练集上训练后,我们冻结批量归一化参数,使用output_stride=8,并在官方PASCAL VOC 2012训练验证集上进行另一次30K次迭代和较小的基础学习率=0.001的训练。请注意,空洞卷积允许我们在不同的训练阶段控制output_stride值,而无需学习额外的模型参数。还要注意,使用output_stride=16进行训练比使用output_stride=8快几倍,因为中间特征图的空间尺寸小四倍,但以牺牲精度为代价,因为output_stride=16提供更粗糙的特征图。
上采样logits: 在我们之前的工作[10, 11]中,当output_stride=8时,目标真值在训练期间下采样8倍。我们发现保持真值不变并上采样最终logits很重要,因为下采样真值会移除精细注释,导致没有细节的反向传播。
数据增强: 我们通过随机缩放输入图像(从0.5到2.0)和随机左右翻转在训练期间应用数据增强。
4.2 通过空洞卷积加深
我们首先实验构建更多具有级联空洞卷积的块。
ResNet-50: 在表1中,我们实验了当使用ResNet-50和block7(即额外的block5、block6和block7)时output_stride的效果。如表所示,在output_stride=256的情况下(即没有空洞卷积),性能比其他情况差得多,因为严重的信号抽取。当output_stride变大并相应地应用空洞卷积时,性能从20.29%提高到75.18%,表明空洞卷积在构建更多级联块时对语义分割至关重要。
ResNet-50 vs. ResNet-101: 我们将ResNet-50替换为更深的网络ResNet-101,并改变级联块的数量。如表2所示,随着添加更多块,性能提高,但改进的幅度变小。值得注意的是,将block7添加到ResNet-50会略微降低性能,而它仍然提高了ResNet-101的性能。
多网格方法: 我们将多网格方法应用于具有几个级联块的ResNet-101,如表3所示。单位速率Multi_Grid=(r1,r2,r3)应用于block4和所有其他添加的块。如表所示,我们观察到(a)应用多网格方法通常比vanilla版本(即(r1,r2,r3)=(1,1,1))更好,(b)简单地将单位速率加倍(即(r1,r2,r3)=(2,2,2))效果不佳,(c)使用多网格加深可以提高性能。我们的最佳模型是使用block7和(r1,r2,r3)=(1,2,1)的情况。
验证集上的推理策略: 所提出的模型在output_stride=16的情况下进行训练,然后在推理期间应用output_stride=8以获得更详细的特征图。如表4所示,有趣的是,当使用output_stride=8评估我们最佳的级联模型时,性能比使用output_stride=16评估时提高了1.39%。通过在多尺度输入(scales={0.5,0.75,1.0,1.25,1.5,1.75})和左右翻转图像上进行推理,性能进一步提高。特别是,我们计算每个尺度和翻转图像的平均概率作为最终结果。
4.3 空洞空间金字塔池化
然后,我们使用主要区别在于批量归一化参数[38]被微调并包含图像级特征的空洞空间金字塔池化(ASPP)模块进行实验。
ASPP: 在表5中,我们实验了在block4中结合多网格和图像级特征对改进的ASPP模块的影响。我们首先固定ASPP=(6,12,18)(即对三个并行的3×3卷积分支使用速率=(6,12,18)),并改变多网格值。使用Multi_Grid=(1,2,1)比Multi_Grid=(1,1,1)更好,而在ASPP=(6,12,18)的上下文中采用Multi_Grid=(1,2,4)进一步提高了性能(参见表3中的“block4”列)。如果我们另外使用速率=24的另一个并行分支来捕捉更长范围的上下文,性能略微下降0.12%。另一方面,用图像级特征增强ASPP模块是有效的,达到了最终性能77.21%。
验证集上的推理策略: 同样,我们在模型训练后应用output_stride=8进行推理。如表6所示,使用output_stride=8比使用output_stride=16提高了1.3%,采用多尺度输入和添加左右翻转图像分别进一步提高了0.94%和0.32%的性能。具有ASPP的最佳模型达到了79.77%的性能,优于具有级联空洞卷积模块的最佳模型(79.35%),因此被选为我们最终模型进行测试集评估。
与DeepLabv2的比较: 我们最佳的级联模型(在表4中)和ASPP模型(在表6中)(在两种情况下都没有DenseCRF后处理或MS-COCO预训练)已经在PASCAL VOC 2012验证集上优于DeepLabv2(77.69%,带有DenseCRF和在MS-COCO上预训练,见[11]中的表4)。改进主要来自于在所提出的模型中包含和微调批量归一化参数[38],并更好地编码多尺度上下文。
附录: 我们在附录中展示了更多实验结果,例如超参数的影响和Cityscapes[14]的结果。
定性结果: 我们在图6中提供了我们最佳ASPP模型的定性视觉结果。如图所示,我们的模型能够在没有任何DenseCRF后处理的情况下很好地分割对象。
失败模式: 如图6的底部一行所示,我们的模型在分割(a)沙发与椅子,(b)餐桌和椅子,以及(c)罕见视角的对象时遇到困难。
在COCO上预训练: 为了与其他最先进的模型进行比较,我们进一步在我们最佳的ASPP模型上预训练MS-COCO数据集[57]。从MS-COCO训练验证集减去最小验证集,我们只选择注释区域大于1000像素且包含PASCAL VOC 2012中定义的类别的图像,导致约60K图像用于训练。此外,MS-COCO中未在PASCAL VOC 2012中定义的类别都被视为背景类别。在MS-COCO数据集上预训练后,我们提出的模型在使用output_stride=8、多尺度输入和添加左右翻转图像进行推理时,在验证集上达到了82.7%的性能。我们在PASCAL VOC 2012数据集上微调时采用较小的初始学习率=0.0001,并采用与第4.1节中相同的训练协议。
测试集结果和一种有效的引导方法: 我们注意到PASCAL VOC 2012数据集提供的注释质量高于增强数据集[29],特别是在自行车类别中。因此,我们在评估测试集之前进一步在官方PASCAL VOC 2012训练验证集上微调我们的模型。具体来说,我们的模型在output_stride=8(以便保持注释细节)的情况下进行训练,并且批量归一化参数被冻结(见第4.1节中的详细信息)。此外,我们采用了一种简单的引导方法来处理硬图像,而不是像[70, 85]那样进行像素硬样本挖掘。具体来说,我们在训练集中复制包含硬类别(即自行车、椅子、桌子、盆栽植物和沙发)的图像。如图7所示,这种简单的引导方法对于分割罕见和精细注释的类别(如自行车)是有效的。最终,我们的“DeepLabv3”在没有DenseCRF后处理的情况下在测试集上达到了85.7%的性能,如表7所示。
在JFT-300M上预训练的模型: 受到最近工作[79]的启发,我们进一步采用在ImageNet和JFT-300M数据集[34, 13, 79]上预训练的ResNet-101模型,在PASCAL VOC 2012测试集上达到了86.9%的性能。
5 结论
我们提出的模型“DeepLabv3”采用上采样滤波器的空洞卷积来提取密集特征图并捕捉长程上下文。具体来说,为了编码多尺度信息,我们提出的级联模块逐渐将空洞率加倍,而我们提出的空洞空间金字塔池化模块通过在多个采样率和有效感受野上使用滤波器来探测特征,并结合图像级特征。我们的实验结果表明,所提出的模型显著优于之前的DeepLab版本,并在PASCAL VOC 2012语义图像分割基准测试中与其他最先进的模型取得了相当的性能。
致谢:我们感谢与Zbigniew Wojna的有益讨论,Chen Sun和Andrew Howard的帮助,以及Google Mobile Vision团队的支持。
附录A 超参数的影响
在本节中,我们遵循与主论文相同的训练协议,并实验了一些超参数的影响。

图6. 使用我们最佳ASPP模型在验证集上的可视化结果。最后一行显示了失败模式。

图7. 在硬图像上的引导提高了罕见和精细注释类别(如自行车)的分割精度。
新的训练协议: 如主论文中所述,我们更改了[10, 11]中的训练协议,主要有三个不同之处:(1)更大的裁剪大小,(2)在训练期间上采样logits,以及(3)微调批量归一化。在这里,我们定量测量这些更改的影响。如表8所示,当采用主论文中的新训练协议设置时,DeepLabv3在PASCAL VOC 2012验证集[20]上达到了77.21%的性能。当不微调批量归一化时,性能下降到75.95%。如果我们不在训练期间上采样logits(而是下采样真值),性能下降到76.01%。此外,如果我们使用较小的裁剪大小值(即321,如[10, 11]中),性能显著下降到67.22%,这表明由于小裁剪大小导致的边界效应损害了DeepLabv3的性能,DeepLabv3在空洞空间金字塔池化(ASPP)模块中使用了大空洞率。
表8. 在输出步幅=16时,超参数对PASCAL VOC 2012验证集训练的影响。UL:上采样Logits。BN:微调批量归一化。

表9. 批量大小对PASCAL VOC 2012验证集的影响。我们在训练和评估期间使用输出步幅=16。在微调批量归一化参数时,需要大批量大小来训练模型。

表10. 输出步幅对PASCAL VOC 2012验证集的影响。在训练期间使用输出步幅=16在评估输出步幅=8和16时都能获得更好的性能。

变化批量大小: 由于微调批量归一化训练DeepLabv3很重要,我们进一步实验了不同批量大小的影响。如表9所示,使用小批量大小训练模型效率低下,而使用大批量大小则性能更好。
输出步幅: output_stride的值决定了输出特征图的分辨率,进而影响我们在训练期间可以使用的最大批量大小。在表10中,我们定量测量了在PASCAL VOC 2012验证集上采用不同output_stride值进行训练和评估的影响。我们首先固定评估output_stride=16,改变训练output_stride,并为所有设置适应最大可能的批量大小(我们能够为训练output_stride等于8、16和32时分别适应批量大小6、16和24)。如表10的顶部行所示,使用训练output_stride=8仅达到74.45%的性能,因为我们无法在此设置中适应大批量大小,这降低了微调批量归一化参数时的性能。当使用训练output_stride=32时,我们可以适应大批量大小,但我们失去了特征图细节。另一方面,使用训练output_stride=16达到了最佳的权衡,并导致了最佳性能。在表10的底部行中,我们将评估output_stride增加到8。所有设置都提高了性能,除了训练output_stride=32的设置。我们假设我们在训练期间失去了太多特征图细节,因此即使在评估期间使用output_stride=8,模型也无法恢复细节。
附录B 异步训练
在本节中,我们使用TensorFlow异步训练[1]实验DeepLabv3。我们测量了在PASCAL VOC 2012语义分割数据集上使用多个副本训练模型的影响。我们的基线仅使用一个副本,需要使用K80 GPU进行3.65天的训练时间。如表11所示,我们发现使用多个副本的性能不会下降。然而,使用32个副本的训练时间显著减少到2.74小时。
附录C DeepLabv3在Cityscapes数据集上的表现
Cityscapes[14]是一个大规模数据集,包含5000张高质量像素级注释图像(分别为2975、500和1525张用于训练、验证和测试集)和大约20000张粗略注释图像。根据评估协议[14],19个语义标签用于评估,不考虑无效标签。
表11. 采用异步训练时在PASCAL VOC 2012验证集上的评估性能。

表12. 仅使用train fine集训练时,DeepLabv3在Cityscapes验证集上的表现。OS:输出步幅。MS:推理时的多尺度输入。Flip:添加左右翻转输入。

表13. Cityscapes测试集上的性能。Coarse:同时使用train extra集(粗略注释)。仅列出少数具有已知参考文献的顶级模型。

我们首先在仅使用2975张图像(即train_fine集)进行训练时,在验证集上评估所提出的DeepLabv3模型。我们采用与之前相同的训练协议,只是我们使用90K训练迭代,裁剪大小等于769,并在整个图像上进行推理,而不是像[11]中那样在重叠区域上进行推理。如表12所示,DeepLabv3在使用output_stride=16进行评估时达到了77.23%的性能。使用output_stride=8评估模型将性能提高到77.82%。当我们使用多尺度输入(我们可以在K40 GPU上适应scales={0.75,1,1.25})和添加左右翻转输入时,模型达到了79.30%。
为了与其他最先进的模型竞争,我们进一步在trainval_coarse集(即3475张精细注释图像和额外的20000张粗略注释图像)上训练DeepLabv3。我们采用更多尺度和更细的output_stride进行推理。具体来说,我们使用scales={0.75,1,1.25,1.5,1.75,2}和评估output_stride=4进行推理,这在验证集上分别贡献了额外的0.8%和0.1%,相比于仅使用三个尺度和output_stride=8。最终,如表13所示,我们提出的DeepLabv3在测试集上达到了81.3%的性能。一些验证集上的结果如图8所示。
689

被折叠的 条评论
为什么被折叠?



