第三章:DeepLabV3——重新思考用于语义图像分割的扩张卷积

news2024/11/23 15:19:27

0.摘要

在这项工作中,我们重新思考了扩张卷积(atrous convolution),这是一种能够明确调整卷积滤波器的感受野(field-of-view)以及控制由深度卷积神经网络计算的特征响应的分辨率的强大工具,应用于语义图像分割。为了处理在多个尺度上分割对象的问题,我们设计了使用扩张卷积级联或并行的模块,通过采用多个扩张率捕捉多尺度上下文。此外,我们提出了对我们之前提出的扩张空洞金字塔空间池化(Atrous Spatial Pyramid Pooling)模块的增强,该模块在多个尺度上探测卷积特征,并使用编码全局上下文的图像级特征进一步提升性能。我们还详细介绍了实现细节,并分享了我们在训练系统过程中的经验。我们提出的“DeepLabv3”系统在没有DenseCRF后处理的情况下显著改进了我们先前的DeepLab版本,并在PASCAL VOC 2012语义图像分割基准测试中达到了与其他最先进模型相当的性能。

1.引言

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

        另一个困难来自于多尺度存在的物体。已经提出了几种方法来处理这个问题,在这项工作中我们主要考虑了四个类别,如图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”在PASCAL VOC 2012测试集上的性能达到了85.7%,无需DenseCRF后处理,相比我们之前的工作[10,11]有所改进。

 图1. 使用核大小为3×3和不同速率的扩张卷积。标准卷积对应于率=1的扩张卷积。使用较大的扩张率扩大了模型的感受野,使其能够在多个尺度上对对象进行编码。

 图2. 捕捉多尺度上下文的替代架构

2.相关工作

        已经证明,全局特征或上下文交互对于正确分类像素进行语义分割是有益的。在这项工作中,我们讨论了四种利用上下文信息进行语义分割的全卷积网络(FCNs)[74,60](见图2)。

图像金字塔:通常使用相同的模型和共享权重,将其应用于多尺度的输入。小尺度输入的特征响应编码了远距离的上下文,而大尺度输入保留了小物体的细节。典型的例子包括Farabet等人[22]通过拉普拉斯金字塔变换输入图像,将每个尺度的输入传递给DCNN,并合并来自所有尺度的特征图。[19,69]将多尺度输入从粗到细依次应用,而[55,12,11]直接调整输入的尺度并融合所有尺度的特征。这种模型的主要缺点是对于较大/深的DCNN(例如像[32,91,86]这样的网络)扩展性不佳,由于GPU内存有限,因此通常在推理阶段应用。

编码器-解码器:该模型由两部分组成:(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. 孔卷积用于密集特征提取

        深度卷积神经网络(DCNNs)以全卷积的方式进行部署,在语义分割任务中已经被证明是有效的[50]。然而,这些网络在连续的层中重复使用最大池化和步长操作,显著降低了生成的特征图的空间分辨率,近期的DCNNs中每个方向上通常降低了32倍[47,78,32]。为了恢复空间分辨率,一种方法是使用反卷积层(或转置卷积)[92,60,64,3,71,68]。然而,我们提倡使用“孔卷积”,它最初是为了在“algorithme a trous”方案中高效计算未降采样小波变换而开发的[`36],并且之前也在DCNN的背景下被[26,74,66]使用过。 对于二维信号,对于输出y上的每个位置i和滤波器w,孔卷积会在输入特征图x上应用,其中孔采样率r对应于我们采样输入信号的步长,等效于在每个空间维度上在两个连续的滤波器值之间插入r-1个零来上采样滤波器与输入x进行卷积(因此称为孔卷积,法语中的trous意为英语中的holes)。当孔采样率r=1时,孔卷积等效于标准卷积,而孔卷积允许我们通过改变孔采样率来自适应地修改滤波器的感受野。详见图1的示意图。

 孔卷积还允许我们在全卷积网络中明确控制特征响应的密度。在这里,我们将输出步长定义为输入图像空间分辨率与最终输出分辨率之间的比值。对于用于图像分类任务的DCNNs [47,78,32],最终特征响应(在完全连接层或全局池化之前)比输入图像尺寸小32倍,因此输出步长为32。如果我们希望在DCNNs中计算的特征响应的空间密度加倍(即输出步长为16),则将降低分辨率的最后一个池化或卷积层的步长设置为1,以避免信号减采样。然后,将所有后续的卷积层替换为孔卷积层,孔采样率设置为2。这样可以提取更密集的特征响应,而无需学习任何额外的参数。更多细节请参考[11]。

3.2. 使用孔卷积深入研究

        我们首先探索使用级联排列的孔卷积模块的设计。具体而言,我们复制了最后一个ResNet块(在图3中标记为block4)的多个副本,并将它们排列在级联中。这些块中有三个3×3的卷积操作,最后一个卷积除了最后一个块之外,都包含步长2,与原始的ResNet类似。这种模型的动机是引入步进操作,以便在更深的块中轻松捕捉长程信息。例如,整个图像特征可以在最后一个小分辨率的特征图中进行总结,如图3(a)所示。然而,我们发现连续的步进对语义分割是有害的(见第4节的表1),因为细节信息被减少了,因此我们采用根据所需的输出步长值确定的孔采样率进行孔卷积操作,如图3(b)所示,其中输出步长=16。

        在这个提出的模型中,我们对级联的ResNet块进行了实验,直到block7(即block4的副本extra block5、block6、block7),如果不应用孔卷积,输出步长为256。

 b) 使用孔卷积加深模型。当输出步长为16时,在block3之后应用孔卷积,采样率大于1。

图3. 不使用孔卷积和使用孔卷积的级联模块。

3.2.1 多网格方法

        受到使用不同尺寸网格的层次结构的多网格方法的启发[4,81,5,67],并遵循[84,18]的方法,我们在提出的模型中在block4到block7之间采用不同的孔采样率。具体而言,我们定义Multi Grid = (r1; r2; r3)作为block4到block7中三个卷积层的单位采样率。卷积层的最终孔采样率等于单位采样率与相应的倍数之间的乘积。例如,当输出步长为16且Multi Grid = (1; 2; 4)时,block4中的三个卷积层的采样率分别为2·(1; 2; 4) = (2; 4; 8)。

3.3 孔空间金字塔池化(Atrous Spatial Pyramid Pooling,ASPP)

        我们重新审视了在[11]中提出的孔空间金字塔池化(Atrous Spatial Pyramid Pooling,ASPP)方法,其中在特征图的顶部应用了四个具有不同孔采样率的并行孔卷积。ASPP受到了空间金字塔池化方法[28,49,31]的启发,该方法表明,对于准确和高效地对任意尺度的区域进行分类,按不同尺度重新采样特征是有效的。与[11]不同的是,我们在ASPP中包含批量归一化。具有不同孔采样率的ASPP有效地捕捉多尺度的信息。然而,我们发现随着采样率的增大,有效过滤器权重的数量(即应用于有效特征区域而不是填充零的权重)变得较小。这种效果在图4中展示了出来,当将一个3×3的滤波器应用于一个65×65的特征图,采用不同的孔采样率时。在极端情况下,当采样率接近特征图的尺寸时,3×3滤波器不再捕捉整个图像上下文,而是退化为一个简单的1×1滤波器,因为只有中心的滤波器权重是有效的。

        为了克服这个问题并将全局上下文信息纳入模型中,我们采用了类似于[58,95]的图像级特征。具体而言,我们在模型的最后一个特征图上应用全局平均池化,将得到的图像级特征输入到一个1×1卷积层(具有256个滤波器和批量归一化[38]),然后使用双线性插值将特征上采样到所需的空间维度。最终,我们改进的ASPP包括:(a)一个1×1卷积层和三个3×3卷积层,采样率为(6; 12; 18),当输出步长为16时(所有卷积层都具有256个滤波器和批量归一化);(b)图像级特征,如图5所示。注意,当输出步长为8时,采样率会加倍。所有分支的结果特征被连接起来,然后通过另一个1×1卷积层(也具有256个滤波器和批量归一化)传递给最终的1×1卷积层,生成最终的logits。

 图4. 在65×65的特征图上,随着孔采样率的变化,3×3滤波器上有效权重的归一化计数。当孔采样率较小时,所有9个滤波器权重被应用于特征图上的大部分有效区域,而当孔采样率变大时,3×3滤波器退化为1×1滤波器,因为只有中心的权重是有效的。

4.实验评估

        我们通过应用孔卷积来提取密集特征,将ImageNet预训练的ResNet调整为语义分割任务。回想一下,输出步长被定义为输入图像空间分辨率与最终输出分辨率的比值。例如,当输出步长为8时,原始ResNet中的最后两个块(我们的表示中的block3和block4)包含孔卷积,分别采用了采样率为2和采样率为4。我们的实现基于TensorFlow [1]。我们在PASCAL VOC 2012语义分割基准测试上评估了所提出的模型,该数据集包含20个前景对象类别和一个背景类别。原始数据集包含1,464张(训练集)、1,449张(验证集)和1,456张(测试集)像素级标注图像。通过[29]提供的额外注释进行数据增强,结果得到10,582张(增强训练集)训练图像。性能以像素交并比(IOU)在21个类别上进行评估。

 图5. 使用孔卷积(ASPP)增强的并行模块,同时使用图像级特征。

4.1 训练协议

        在这个小节中,我们将讨论我们训练协议的细节:

学习率策略:类似于[58,11],我们采用了“poly”学习率策略,其中初始学习率乘以(1 - max_iter/iter)的power次方,其中power=0.9。 这种学习率策略的意思是,初始学习率会通过一个指数衰减的方式逐渐减小。在每个训练迭代中,我们将当前的迭代次数与最大迭代次数进行比较,然后将比例应用到学习率上。具体来说,学习率的衰减程度与当前迭代次数的占比成反比,即迭代次数越大,学习率减小的速度越快。 这种学习率策略的好处是,在训练初期,学习率较大,可以加快模型的收敛速度;而在训练后期,学习率逐渐减小,可以使模型更加稳定地收敛。这样的学习率策略有助于提高模型的训练效果和泛化能力。

裁剪尺寸:根据原始的训练协议[10,11],在训练过程中从图像中裁剪出补丁进行训练。为了使大空洞卷积有效,需要使用较大的裁剪尺寸;否则,具有大空洞率的滤波器权重主要应用于填充的零区域。因此,在PASCAL VOC 2012数据集上的训练和测试过程中,我们采用了513的裁剪尺寸。

批量归一化:我们在ResNet之上添加的所有模块都包括批量归一化参数[38],我们发现这些参数的训练也很重要。由于训练批量归一化参数需要较大的批量大小,我们使用输出步幅(output stride)为16,并使用批量大小为16来计算批量归一化统计量。批量归一化参数的训练使用衰减率为0.9997。在使用初始学习率为0.007对trainaug数据集进行30K次迭代训练后,我们冻结批量归一化参数,将输出步幅设置为8,并在官方的PASCAL VOC 2012 trainval数据集上进行另外30K次迭代训练,使用较小的基础学习率为0.001。需要注意的是,通过空洞卷积,我们可以在不需要学习额外模型参数的情况下控制不同训练阶段的输出步幅值。还需要注意的是,使用输出步幅为16进行训练比输出步幅为8要快几倍,因为中间特征图的空间尺寸小了四倍,但代价是准确性的损失,因为输出步幅为16提供了更粗糙的特征图。

上采样逻辑:在我们之前的工作[10,11]中,当输出步幅为8时,目标真值被下采样8倍进行训练。我们发现保持真值完整性非常重要,而是通过上采样最终的logits来处理,因为下采样真值会移除细节注释,导致无法进行细节的反向传播。

数据增强:在训练过程中,我们通过随机缩放输入图像(范围从0.5到2.0)和随机左右翻转来进行数据增强。

表1. 使用ResNet-50和block7以及不同的输出步幅时的空洞卷积加深效果。采用输出步幅为8会在性能上取得更好的表现,但需要更多的内存使用。 注意:这里的"output stride"可以翻译为"输出步幅",指的是输出特征图相对于输入图像的步幅大小。"block7"指的是ResNet-50网络中的第七个块。

4.2 深入理解空洞卷积

我们首先尝试通过级联的方式构建更多的带空洞卷积的块。

ResNet-50:在表1中,我们对使用ResNet-50的block7(即额外的block5、block6和block7)时输出步幅的影响进行了实验。如表中所示,在输出步幅为256(即没有使用任何空洞卷积)的情况下,由于信号严重减少,性能要比其他情况差很多。当输出步幅增大,并相应地应用空洞卷积时,性能从20.29%提高到了75.18%,表明在构建用于语义分割的更多级联块时,空洞卷积是必不可少的。

ResNet-50 vs. ResNet-101:我们将ResNet-50替换为更深的网络ResNet-101,并改变级联块的数量。如表2所示,随着添加更多的块,性能得到了提升,但是提升的幅度变得越来越小。值得注意的是,将block7应用于ResNet-50会略微降低性能,而对于ResNet-101来说,它仍然能提高性能。

多网格:我们在表3中将多网格方法应用于ResNet-101,并级联添加了几个块。单位率Multi Grid = (r1;r2;r3)被应用于block4和所有其他添加的块中。如表中所示,我们观察到:(a)应用多网格方法通常比原始版本更好,其中 (r1;r2;r3)=(1;1;1);(b)简单地将单位率加倍 (即 (r1;r2;r3)=(2;2;2)) 不是有效的;(c)通过多网格方法加深网络可以提高性能。我们最好的模型是使用了block7和 (r1;r2;r3)=(1;2;1)的情况。

在验证集上的推理策略:所提出的模型在输出步幅为16的情况下进行训练,然后在推理过程中应用输出步幅为8以获得更详细的特征图。如表4所示,有趣的是,当使用输出步幅为8评估我们最好的级联模型时,性能比使用输出步幅为16评估提高了1.39%。通过对多尺度输入(比例为0.5、0.75、1.0、1.25、1.5、1.75)和左右翻转图像进行推理,性能进一步提升。特别地,我们计算每个尺度和翻转图像的平均概率作为最终结果。

表2. 在输出步幅为16时,通过采用更多级联块来使用ResNet-50和ResNet-101进行更深的空洞卷积。网络结构中的“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数据集上预训练的模型。

 4.3. 空洞空间金字塔池化(Atrous Spatial Pyramid Pooling)

然后,我们对Atrous Spatial Pyramid Pooling(ASPP)模块进行了实验,与[11]的主要区别在于对批归一化参数[38]进行微调,并包含了图像级特征。

ASPP: 在表5中,我们对在block4中引入多网格和图像级特征对改进的ASPP模块的效果进行了实验。我们首先固定ASPP=(6;12;18)(即在三个并行的3×3卷积分支中使用率=(6;12;18)),并变化多网格值。在ASPP=(6;12;18)的情况下,采用Multi Grid=(1;2;1)比Multi Grid=(1;1;1)更好,而采用Multi Grid=(1;2;4)进一步改进了性能(参见表3中的‘block4’列)。如果我们额外使用率为24的并行分支以获得更长范围的上下文信息,性能会略微下降0.12%。另一方面,将ASPP模块与图像级特征结合起来是有效的,最终性能达到了77.21%。

在验证集上的推理策略:类似地,一旦模型训练完成,我们在推理过程中采用输出步幅=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验证集上超越了DeepLabv2(在[11]的表4中使用DenseCRF和在MS-COCO上进行预训练时的性能为77.69%)。改进主要来自于在我们提出的模型中包含和微调批归一化参数[38],以及更好地编码多尺度上下文的方法。

附录:我们在附录中展示了更多的实验结果,例如超参数的影响以及Cityscapes [14]的结果。

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

失败模式:如图6底部所示,我们的模型在分割(a)沙发vs椅子,(b)餐桌和椅子,以及(c)罕见的物体视图时存在困难。

在COCO数据集上进行预训练:为了与其他最先进的模型进行比较,我们进一步在MS-COCO数据集[57]上对我们最佳的ASPP模型进行预训练。从MS-COCO训练验证集中,我们只选择具有大于1000像素注释区域且包含在PASCAL VOC 2012定义的类别的图像,结果约有6万张图像用于训练。此外,PASCAL VOC 2012未定义的MS-COCO类别都被视为背景类。在MS-COCO数据集上预训练后,当使用输出步幅=8、多尺度输入并在推理过程中添加左右翻转的图像时,我们提出的模型在验证集上达到了82.7%的性能。在对PASCAL VOC 2012数据集进行微调时,我们采用较小的初始学习率=0.0001,并采用与第4.1节相同的训练协议。

测试集结果和有效的引导方法:我们注意到,PASCAL VOC 2012数据集提供的注释质量比增强数据集[29]更高,特别是对于自行车类别。因此,在评估测试集之前,我们进一步在官方的PASCAL VOC 2012训练验证集上对我们的模型进行微调。具体而言,我们的模型使用输出步幅=8进行训练(以保留注释细节),并且批归一化参数被冻结(有关详细信息,请参见第4.1节)。此外,我们不像[85,70]那样进行像素难例挖掘,而是采用了在困难图像上进行引导学习的方法。具体而言,我们在训练集中复制包含困难类别(即自行车、椅子、桌子、盆栽植物和沙发)的图像。如图7所示,这种简单的引导方法对于分割自行车类别非常有效。最后,我们的“DeepLabv3”在没有任何DenseCRF后处理的情况下,在测试集上达到了85.7%的性能,如表7所示。

在JFT-300M数据集上预训练的模型:受[79]最近的工作的启发,我们进一步采用了在ImageNet和JFT-300M数据集[34,13,79]上进行预训练的ResNet-101模型,结果在PASCAL VOC 2012测试集上达到了86.9%的性能。

5.总结

        我们提出的模型"DeepLabv3"采用了扩张卷积和上采样滤波器来提取密集的特征图并捕捉长距离的上下文。具体来说,为了编码多尺度信息,我们提出的级联模块逐渐增加扩张率,而我们提出的扩张空间金字塔池化模块通过在多个采样率和有效视野下使用滤波器来增强图像级特征。我们的实验结果表明,所提出的模型在PASCAL VOC 2012语义图像分割基准上明显优于之前的DeepLab版本,并与其他最先进的模型达到了可比较的性能。

A.超参数的影响

        在这一部分中,我们按照主要论文中的相同训练协议,并尝试了一些超参数的影响。

新的训练协议:如主要论文中所述,我们改变了[10,11]中的训练协议,有三个主要的区别:

        (1)更大的裁剪尺寸,

        (2)在训练过程中上采样logits,和

        (3)微调批归一化。

        在这里,我们定量地衡量了这些改变的影响。如表8所示,当采用主要论文中的新的训练协议设置时,DeepLabv3在PASCAL VOC 2012验证集上达到了77.21%的性能。当训练DeepLabv3时,如果不微调批归一化,性能下降到了75.95%。如果在训练过程中不上采样logits(而是下采样groundtruths),性能降低到了76.01%。此外,如果采用较小的裁剪尺寸(例如321,如[10,11]),性能显著降低到了67.22%,表明由于小裁剪尺寸导致的边界效应损害了DeepLabv3使用大扩张率的扩张空间金字塔池化(ASPP)模块的性能。

变化的批量大小:由于微调批归一化对于训练DeepLabv3非常重要,我们进一步尝试了不同批量大小的影响。如表9所示,使用小批量大小训练模型效率低下,而使用较大的批量大小可以获得更好的性能。

输出步幅:输出步幅的值决定了输出特征图的分辨率,进而影响我们在训练过程中可以使用的最大批量大小。在表10中,我们定量地衡量了在PASCAL VOC 2012验证集上采用不同输出步幅值进行训练和评估的影响。我们首先固定评估输出步幅=16,变化训练输出步幅,并适应所有设置的最大批量大小(我们能够适应训练输出步幅等于8、16和32时的批量大小为6、16和24)。如表10的顶部行所示,采用训练输出步幅=8只能达到74.45%的性能,因为在这种设置下我们无法适应较大的批量大小,这降低了性能,同时微调批归一化参数。当采用训练输出步幅=32时,我们可以适应较大的批量大小,但是会丢失特征图的细节。另一方面,采用训练输出步幅=16的方式在性能和细节保留之间取得了最佳的平衡,并获得了最佳的性能。在表10的底部行中,我们增加了评估输出步幅=8。除了训练输出步幅=32的设置外,所有设置都提高了性能。我们假设在训练过程中丢失了太多的特征图细节,因此即使在评估过程中采用输出步幅=8,模型也无法恢复细节。

图6.在采用我们最佳的ASPP模型时,对验证集进行可视化结果。最后一行展示了一种失败模式。

 

 图7.对难分割图像进行自举训练可以提高对自行车等罕见和细粒度注释类别的分割准确性。

表8.在输出步幅=16时,超参数对PASCAL VOC 2012验证集的训练效果的影响。UL:上采样逻辑。BN:微调批归一化。

 表9.批量大小对PASCAL VOC 2012验证集的影响。我们在训练和评估过程中都使用输出步幅=16。在微调批归一化参数时,需要较大的批量大小来训练模型。表10.输出步幅对PASCAL VOC 2012验证集的影响。在训练过程中使用输出步幅=16可以在评估输出步幅为8和16时获得更好的性能

 

 

B.异步训练

        在这一部分中,我们使用TensorFlow的异步训练[1]来实验DeepLabv3。我们在PASCAL VOC 2012语义分割数据集上衡量了使用多个副本训练模型的效果。我们的基准线仅使用一个副本,并且需要使用K80 GPU进行3.65天的训练时间。如表11所示,我们发现使用多个副本的性能与基准线相比没有下降。然而,使用32个副本的训练时间大大缩短为2.74小时。

C.在Cityscapes数据集上的DeepLabv3

        Cityscapes [14]是一个大规模数据集,包含5000张图像的高质量像素级注释(其中训练集、验证集和测试集分别为2975、500和1525张图像),以及大约20000张粗略注释的图像。按照评估协议[14],在评估中使用19个语义标签,不考虑void标签。我们首先在仅使用2975张图像(即train fine集)进行训练时,在验证集上评估DeepLabv3模型。我们采用与之前相同的训练协议,只是采用了90K个训练迭代次数,裁剪尺寸为769,并在整个图像上进行推理,而不是像[11]中那样在重叠区域上进行推理。如表12所示,在输出步幅=16时,DeepLabv3的性能达到了77.23%。将模型在输出步幅=8时进行评估,性能提高到了77.82%。当我们使用多尺度输入(在K40 GPU上可以适应尺度=f0:75;1;1:25g)并添加左右翻转的输入时,模型的性能达到了79.30%。为了与其他最先进的模型竞争,我们进一步在trainval coarse集(即3475张细粒度注释的图像和额外的20000张粗略注释的图像)上训练DeepLabv3。我们在推理过程中采用更多尺度和更细的输出步幅。特别地,我们使用尺度=f0:75;1;1:25;1:5;1:75;2g进行推理,使用输出步幅=4进行评估,并借助CPU进行计算,在验证集上相比仅使用三个尺度和输出步幅=8,性能分别提高了0.8%和0.1%。最后,如表13所示,我们提出的DeepLabv3在测试集上取得了81.3%的性能。一些在验证集上的结果在图8中进行了可视化。

表11.采用异步训练时在PASCAL VOC 2012验证集上的评估性能。表12.在仅使用训练细化集训练时,DeepLabv3在Cityscapes验证集上的表现。OS:输出步幅。MS:推理过程中使用多尺度输入。Flip:添加左右翻转的输入。

 

 表13.在Cityscapes测试集上的性能表现。Coarse:同时使用训练额外集(粗略注释)。此表中仅列出了一些具有已知参考的顶级模型。

 图8.在仅使用训练细化集进行训练时,在Cityscapes验证集上的可视化结果。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/749697.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Linux基础(二)用户权限及修改sudo、getent、chmod、chown、yum、systemctl、ln、日期和时间、IP地址管理、网络请求与下载

上接: Linux基础(一)Linux基础命令、vi/vim编辑器_独憩的博客-CSDN博客 目录 用户权限 sudo命令 用户和用户组 用户组管理: 用户管理: getent 权限认知 chmod命令修改权限 chown修改文件文件夹的所属用户和用…

119、仿真-51单片机温湿度光照强度LCD 1602显示报警设计(Proteus仿真+程序+元器件清单等)

方案选择 单片机的选择 方案一:AT89C52是美国ATMEL公司生产的低电压,高性能CMOS型8位单片机,器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器(CPU)和Flash存储单元…

【计算机视觉 | 目标检测】arxiv 计算机视觉关于目标检测的学术速递(7 月 13 日论文合集)

文章目录 一、检测相关(8篇)1.1 Exposing the Fake: Effective Diffusion-Generated Images Detection1.2 Large Class Separation is not what you need for Relational Reasoning-based OOD Detection1.3 Visualization for Multivariate Gaussian Anomaly Detection in Imag…

unity计时,1秒执行一次

1.核心代码示例 2.代码 using System.Collections; using System.Collections.Generic; using UnityEngine;public class AddRandomChilden : MonoBehaviour {// Debug.Log("开始进入update");float i 0;// Start is called before the first frame updatevoid Sta…

【智慧交通项目实战】 《 OCR车牌检测与识别》(五):模型部署与优化

👨‍💻作者简介: CSDN、阿里云人工智能领域博客专家,新星计划计算机视觉导师,百度飞桨PPDE,专注大数据与AI知识分享。✨公众号:GoAI的学习小屋 ,免费分享书籍、简历、导图等&#xf…

用python合并execl做统计分析

背景: 我们有项目问题记录的表格,每一个项目都会反馈来一个execl表格,表格的格式都是统一的,我需要定期把这些项目上反馈来的表格进行统计,但是表格非常多,我要每个都统计出来在来相加,这样操作…

Mysql 数据库开发及企业级应用

文章目录 1、Mysql 数据库开发及企业级应用1.1、为什么要使用数据库1.1.1、数据库概念(Database)1.1.2、为什么需要数据库 1.2、程序员为什么要学习数据库1.3、数据库的选择1.3.1、主流数据库简介1.3.2、使用 MySQL 的优势1.3.3、版本选择 1.4、Windows …

C语言,通过多文件编辑定义字符指针,指向堆区空间,计算字符串长度

通过多文件编辑,定义字符指针,分别指向堆区空间,计算字符串长度 要求: 1、定义函数实现堆区空间申请 2、在主函数中实现输入字符串 3、定义函数实现字符串长度 函数原型:size_t my_strlen(const char *s) 4、定义函数释…

vue 下拉框显示从后端请求的数据

下拉框<!-- 给产品添加推广人员弹出框 --><el-dialog :title"titlePerson" :visible.sync"openAddPerson" width"1000px" append-to-body><el-select v-model"this.bindingProductPerson.recommendId" filterable plac…

分层解耦-IOCDI-IOC详解

目录 Bean的声明 注意 声明bean的时候&#xff0c;可以通过value属性指定bean的名字&#xff0c;如果没有指定&#xff0c;默认为类名首字母小写 使用以上四个注解都可以声明bean&#xff0c;但在SpringBoot集成Web开发中&#xff0c;声明控制器bean只能使用Controller或者R…

springboot时间管理系统

通过前面的功能分析可以将时间管理系统的功能分为管理员&#xff0c;用户两个部门&#xff0c;系统的主要功能包括首页&#xff0c;个人中心&#xff0c;系统公告管理&#xff0c;用户管理&#xff0c;时间分类管理&#xff0c;事件数据管理&#xff0c;目标数据管理&#xff0…

MySQL数据库第七课————数据的增删改查----------简单操作

作者前言 欢迎小可爱们前来借鉴我的gtiee秦老大大 (qin-laoda) - Gitee.com —————————————————————————————— 目录 SQL增删改查 新增数据 删除数据 修改&#xff08;更新&#xff09;数据 查询数据 条件 ————————————————…

java ajax

1.ajax定义:异步刷新技术 2.ajax语法 3.ajax实战 在不需要点击刷新按钮时达到局部刷新显示&#xff0c;如下图所示 步骤一&#xff1a;创建工程/包/js 步骤二&#xff1a;数据库/表创建 步骤三&#xff1a;实体类 步骤四&#xff1a;UserDao package cn.kgc.dao;import cn…

linux_driver_day10

作业1 题目&#xff1a; 使用驱动代码实现如下要求 应用程序通过阻塞的io模型来读取number变量的值 number是内核驱动中的一个变量 number的值随着按键按下而改变&#xff08;按键中断&#xff09; 例如 numbero 按下按键 number1&#xff0c;再次按下按键 number0 在按下按…

pdf文件怎么删除密码?4个方法实用简单!

PDF文件作为一种常见的电子文档格式&#xff0c;广泛应用于各行各业。有时候&#xff0c;我们可能会遇到需要删除PDF文件密码的情况&#xff0c;无论是因为忘记密码、接收到加密的文件或是需要与他人共享文件等。为了帮助你轻松解决这一问题&#xff0c;本文将介绍四种简单实用…

【GitHub】腾讯这一款设计神器,开源了!PAG 动效组件

作为一个资深的互联网用户&#xff0c;我们经常会在各种产品上看到十分酷炫的动画效果。比如&#xff0c;短视频中有趣的虚拟场景、直播间粉丝打榜的 “火箭”、“轮船” 等等。 如今&#xff0c;优质的动效不仅可以使用户更容易地理解产品功能和操作方式&#xff0c;减少用户…

简单分享怎么做卖货小程序

微信卖货小程序是一种基于微信平台开发的小程序应用&#xff0c;它可以帮助用户在小程序中完成商品展示、下单购买、在线支付等操作。下面我们来介绍微信卖货小程序的好处和优点。 一、便捷快速 微信卖货小程序可以直接在微信App中使用&#xff0c;无需下载和安装&#xff0c;…

docker-compose安装gitlab

docker安装gitlab 1、创建docker-compose.yml文件 version: 3 services:gitlab:image: twang2218/gitlab-ce-zh:11.1.4restart: unless-stoppedhostname: gitlab.example.comenvironment:TZ: Asia/ShanghaiGITLAB_OMNIBUS_CONFIG: |external_url http://gitlab.example.comgi…

基于STM32LVGL8.2保姆级教程①软件资料准备

下载LVGL源码 LVGL资料包下载点击直达 点击master -》选择8.2分支,也就是倒数第二个 准备开发环境 这个软件玩STM32的有好吧 准备代码模板 需要准备一份能够成功点亮屏幕的keil工程 既然是保姆级教程 So我免费分享出来 私信或评论区获取 此屏幕驱动 就是图片里面的那块屏幕 具…

【安装】windows环境下的 JDK官网下载 安装配置 环境变量

目录 官网下载JDK8windows安装JDKJava环境配置JDK、JRE、JVMJava环境配置1.JAVA_HOME2.PATH3.CLASSPATH 测试环境变量运行命令行cmd查看jdk是否安装 官网下载JDK8 Oracle 甲骨文中国 | 云应用和云平台 选择产品/Java 下载JDK8 点击下载Java 选择Java archive 选择x64位安装包 …