第四章:DeepLabV2——使用深度卷积神经网络、空洞卷积和全连接条件随机场进行语义图像分割

news2024/11/22 13:35:44

0.摘要

        在这项工作中,我们使用深度学习来解决语义图像分割任务,并做出了三个实验证明具有实际价值的主要贡献。

        首先,我们强调通过上采样滤波器进行卷积,或者称为“空洞卷积”,在密集预测任务中是一种强大的工具。空洞卷积允许我们在深度卷积神经网络中明确控制特征响应计算的分辨率。它还可以在不增加参数或计算量的情况下有效地扩大滤波器的视野以包含更大的上下文。

        其次,我们提出了空洞空间金字塔池化(ASPP),以稳健地在多个尺度上分割对象。ASPP使用多种采样率和有效视野的滤波器来探索输入的卷积特征层,从而在多个尺度上捕捉对象以及图像上下文。

        第三,我们通过结合深度卷积神经网络(DCNNs)和概率图模型的方法改善了对象边界的定位。在DCNNs中广泛使用的最大池化和下采样的组合可以实现不变性,但会对定位精度产生影响。我们通过将最终DCNN层的响应与全连接的条件随机场(CRF)相结合,克服了这个问题,定性和定量地证明了这种方法可以提高定位性能。我们提出的“DeepLab”系统在PASCAL VOC-2012语义图像分割任务中达到了79.7%的mIOU,成为最新的技术水平,并在其他三个数据集(PASCAL-Context,PASCAL-Person-Part和Cityscapes)上取得了进展。我们所有的代码都可以在网上公开获取。

         关键词—卷积神经网络、语义分割、空洞卷积、条件随机场。

1.引言

        深度卷积神经网络(DCNNs)[1]在各种高级计算机视觉问题上推动了计算机视觉系统的性能飞速提升,包括图像分类[2]、[3]、[4]、[5]、[6]和目标检测[7]、[8]、[9]、[10]、[11]、[12]。相较于依赖手工设计特征的系统,以端到端方式训练的DCNNs取得了显著更好的结果。这一成功的关键是DCNNs对局部图像变换具有内在的不变性,使得它们能够学习越来越抽象的数据表示[13]。这种不变性对于分类任务来说是可取的,但对于语义分割等密集预测任务来说,空间信息的抽象是不希望发生的。具体而言,我们在将DCNNs应用于语义图像分割时遇到了三个挑战:

        (1)特征分辨率降低,

        (2)多尺度对象的存在,以及

        (3)由于DCNN不变性导致的定位精度降低。

        接下来,我们将讨论这些挑战以及我们在提出的DeepLab系统中如何克服它们。

        第一个挑战是由于在DCNN中连续层之间重复进行的最大池化和下采样(striding)的组合,这些DCNN最初是为图像分类设计的[2],[4],[5]。当将DCNN以全卷积方式应用时,这导致特征图的空间分辨率显著降低[14]。为了克服这个障碍并有效地产生更密集的特征图,我们从DCNN的最后几个最大池化层中移除了下采样操作,并在后续的卷积层中对滤波器进行上采样,从而得到更高采样率的特征图。滤波器上采样意味着在非零滤波器系数之间插入空洞(在法语中称为‘trous’)。这种技术在信号处理中有着悠久的历史,最初是为了高效计算无降采样小波变换而开发的,也被称为“algorithme a trous” [15]。我们使用“空洞卷积”这个术语来简称使用上采样滤波器进行卷积。之前的研究中已经使用了各种各样的这个思想,例如 [3],[6],[16]。实际上,我们通过空洞卷积来计算更密集的特征图,然后简单地使用双线性插值将特征响应恢复到原始图像尺寸,从而得到完整分辨率的特征图。与使用反卷积层[13],[14]相比,在密集预测任务中,这种方案提供了一种简单而强大的替代方法。与使用更大滤波器的常规卷积相比,空洞卷积可以有效地扩大滤波器的视野,而不增加参数或计算量。

        第二个挑战是由于存在多尺度的对象。处理这个问题的一种常见方法是将同一图像的不同尺度版本输入给DCNN,然后聚合特征或得分图[6],[17],[18]。我们证明了这种方法确实提高了我们系统的性能,但代价是需要对输入图像的多个尺度版本在所有DCNN层上计算特征响应。相反,受到空间金字塔池化[19],[20]的启发,我们提出了一种在卷积之前以多个速率对给定特征层进行重新采样的计算效率高的方案。这意味着使用具有互补有效视野的多个滤波器对原始图像进行探测,从而捕获多尺度上的对象以及有用的图像上下文。我们没有实际上对特征进行重新采样,而是使用多个具有不同采样率的并行空洞卷积层来高效地实现这种映射;我们将这种技术称为“空洞空间金字塔池化”(ASPP)。

        第三个挑战与一个以对象为中心的分类器需要对空间变换具有不变性有关,这从根本上限制了DCNN的空间准确性。缓解这个问题的一种方法是在计算最终的分割结果时,使用跳跃层来从多个网络层提取“超列”特征[14],[21]。我们的工作探索了一种高效的替代方法。具体而言,我们通过使用全连接的条件随机场(CRF)[22]来增强模型捕捉细节的能力。在语义分割中,CRF广泛用于将多路分类器计算的类别得分与像素和边缘[23],[24]或超像素[25]的局部相互作用所捕捉的低级信息相结合。尽管已经提出了更复杂的模型来建模层次依赖性[26],[27],[28]和/或片段的高阶依赖性[29],[30],[31],[32],[33],但我们使用[22]提出的全连接成对CRF进行高效计算,并能够捕捉细微的边缘细节,同时还考虑到长距离依赖关系。这个模型在[22]中已经证明可以提高基于提升的像素级分类器的性能。在这项工作中,我们证明当与基于DCNN的像素级分类器结合使用时,它可以产生最先进的结果。

图1:模型示意图。采用深度卷积神经网络(例如VGG-16或ResNet-101)以完全卷积的方式进行操作,使用空洞卷积来减少信号下采样的程度(从32倍降至8倍)。双线性插值阶段将特征图放大到原始图像分辨率。然后应用全连接CRF来优化分割结果并更好地捕捉对象边界。

        图1显示了提出的DeepLab模型的高级示意图。在这项工作中,通过(1)将所有全连接层转换为卷积层(即全卷积网络[14])和(2)通过空洞卷积层增加特征分辨率,将在图像分类任务中训练的深度卷积神经网络(VGG-16 [4]或ResNet-101 [11])重新用于语义分割任务。这使得我们可以在原始网络中每8个像素而不是每32个像素计算特征响应。然后,我们使用双线性插值将得分图上采样8倍,使其达到原始图像分辨率,得到输入完全连接CRF [22]来改进分割结果。从实际角度来看,我们的DeepLab系统有三个主要优点:

(1)速度:由于空洞卷积的优势,我们的密集DCNN在NVidia Titan X GPU上的运行速度为每秒8帧,而完全连接CRF的均值场推断在CPU上需要0.5秒。

(2)准确性:我们在几个具有挑战性的数据集上获得了最先进的结果,包括PASCAL VOC 2012语义分割基准[34],PASCAL-Context [35],PASCAL Person-Part [36]和Cityscapes [37]。

(3)简单性:我们的系统由两个非常成熟的模块,DCNN和CRF级联组成。

        本文介绍的更新版DeepLab系统相比于我们在原始会议论文[38]中报道的第一个版本有几个改进之处。我们的新版本可以通过多尺度输入处理[17],[39],[40]或提出的ASPP在多个尺度上更好地分割对象。通过调整最先进的ResNet [11]图像分类DCNN,我们构建了DeepLab的残差网络变体,相比于基于VGG-16 [4]的原始模型,实现了更好的语义分割性能。最后,我们对多个模型变体进行了更全面的实验评估,并在PASCAL VOC 2012基准测试以及其他具有挑战性的任务上报告了最先进的结果。我们通过扩展Caffe框架[41]来实现了所提出的方法。我们在一个相关的网站http://liangchiehchen.com/projects/DeepLab.html上共享我们的代码和模型。

 2.相关工作

在过去的十年中,大多数成功的语义分割系统都依赖于手工设计的特征结合平面分类器,例如Boosting [24],Random Forests [43]或Support Vector Machines [44]。通过引入更丰富的上下文信息 [45]和结构化预测技术 [22],[26],[27],[46],取得了相当大的改进,但这些系统的性能始终受到特征表达能力有限的影响。在过去几年中,深度学习在图像分类方面的突破迅速应用于语义分割任务。由于这个任务涉及分割和分类两个方面,一个关键问题是如何将这两个任务结合起来。

        基于深度卷积神经网络(DCNN)的语义分割系统的第一类通常采用自底向上的图像分割级联,然后是基于DCNN的区域分类。例如,[47],[48]提供的边界框提议和掩膜区域被用作[7]和[49]中输入到DCNN中,以将形状信息融入到分类过程中。类似地,[50]的作者依赖于超像素表示。尽管这些方法可以从良好分割得到的清晰边界中受益,但它们也无法纠正分割错误。

        第二类方法依赖于使用卷积计算的DCNN特征进行密集图像标注,并将其与独立获得的分割结果相结合。其中最早的是[39],他们在多个图像分辨率上应用DCNN,然后使用分割树来平滑预测结果。最近,[21]提出使用跳跃连接,并将DCNN中计算的中间特征图串联起来进行像素分类。此外,[51]提出通过区域提议对中间特征图进行池化。这些方法仍然使用与DCNN分类器结果无关的分割算法,因此可能会决策过早。

        第三类方法使用DCNN直接提供密集的类别级像素标签,这使得甚至可以完全舍弃分割。[14],[52]的无分割方法直接以完全卷积的方式将DCNN应用于整个图像,将DCNN的最后一个全连接层转换为卷积层。为了解决介绍中提到的空间定位问题,[14]对中间特征图的得分进行上采样和串联,而[52]通过将粗糙结果传播到另一个DCNN来从粗糙到精细地优化预测结果。我们的工作基于这些工作,并且如介绍中所描述的,通过对特征分辨率施加控制,引入多尺度池化技术,并将密集连接的CRF [22]与DCNN结合在一起。我们展示了这导致了显著更好的分割结果,特别是沿着对象边界。当然,DCNN和CRF的结合并不是新的,但以前的工作只尝试了局部连接的CRF模型。具体而言,[53]将CRF用作基于DCNN的重新排序系统的提议机制,而[39]将超像素视为局部成对CRF的节点,并使用图割进行离散推理。因此,他们的模型受限于超像素计算中的错误或忽略了长距离依赖关系。相反,我们的方法将每个像素都视为CRF节点,并通过DCNN对其进行一元势函数的设置。关键是,我们采用的[22]中的全连接CRF模型的高斯CRF势能可以捕捉长距离依赖关系,同时该模型适用于快速均值场推理。我们注意到,均值场推理已经在传统图像分割任务中得到了广泛研究,但这些旧模型通常局限于短距离连接。在独立的工作中,[57]使用非常相似的密集连接CRF模型来优化DCNN的结果,用于材料分类问题。然而,[57]的DCNN模块只由稀疏点监督而不是每个像素的密集监督进行训练。

        自从该工作的第一个版本公开以来[38],语义分割领域取得了巨大的进展。多个团队取得了重要的突破,显著提升了PASCAL VOC 2012语义分割基准的水平,这反映在基准的排行榜[17],[40],[58],[59],[60],[61],[62],[63]的活动水平上。有趣的是,大多数表现出色的方法都采用了我们DeepLab系统的一个或两个关键要素:用于高效密集特征提取的洞卷积和通过全连接CRF对原始DCNN得分进行细化。我们下面概述一些最重要和有趣的进展。近期,关于结构预测的端到端训练已经在几个相关的工作中进行了探索。虽然我们将CRF作为一种后处理方法,但[40],[59],[62],[64],[65]成功地进行了DCNN和CRF的联合学习。尤其是,[59],[65]将CRF均值场推理步骤展开,将整个系统转化为一个可以端到端训练的前向传递网络,而[62]通过具有可学习滤波器的卷积层来近似密集CRF均值场推理的一个迭代[22]。[40],[66]追求的另一个富有成果的方向是通过DCNN学习CRF的成对项,以更重的计算代价显著提高性能。在另一个方向上,[63]用更快的域变换模块[67]替换了均值场推理中使用的双边滤波模块,提高了整个系统的速度并降低了内存要求,而[18],[68]则将语义分割与边缘检测相结合。在一些论文中,人们追求了较弱的监督,放松了对整个训练集都有像素级语义注释的假设[58],[69],[70],[71],取得了比弱监督的DCNN预处理系统(如[72])更好的结果。在另一方面的研究中,[49],[73]追求了实例分割,同时解决目标检测和语义分割的问题。

        我们在这里所称的空洞卷积最初是为了在“algorithme a trous”方案中高效计算不降采样小波变换而开发的[15]。对于空洞卷积的早期参考文献,我们将感兴趣的读者参考[74]中的小波文献。空洞卷积还与多频率信号处理中的“noble identities”密切相关,这建立在输入信号和滤波器采样率之间的相互作用的基础上[75]。空洞卷积是我们在[6]中首次使用的术语。后来,[76]将相同的操作称为扩张卷积,他们之所以这样命名,是因为该操作对应于使用上采样(或者在[15]的术语中称为扩张)滤波器的常规卷积。在以前的一些文献中,各种作者已经使用过相同的操作来进行DCNN中更密集的特征提取[3],[6],[16]。除了仅仅增强分辨率,空洞卷积还允许我们扩大滤波器的视野,以融入更大的上下文,我们在[38]中已经证明了这一点的好处。[76]进一步发展了这种方法,他们使用一系列具有不断增加的采样率的洞卷积层来聚合多尺度上下文。我们在这里提出的洞空间金字塔池化方案用于捕捉多尺度的对象和上下文,也使用了具有不同采样率的多个空洞卷积层,但我们将它们并行布置,而不是串行布置。有趣的是,空洞卷积技术也被应用于更广泛的任务,如目标检测[12],实例级别分割[78],视觉问答[79]和光流估计[80]。我们还展示了,如预期的那样,将更先进的图像分类DCNN(如[11]中的残差网络)集成到DeepLab中会得到更好的结果。这也是由[81]独立观察到的。

3.方法

3.1空洞卷积用于密集特征提取和视野扩大

        在语义分割或其他密集预测任务中,使用DCNN(深度卷积神经网络)已被证明可以通过以完全卷积的方式部署DCNN来简单而成功地解决[3],[14]。然而,这些网络在连续的层中重复使用最大池化和步幅操作,会显著降低生成的特征图的空间分辨率,通常在最近的DCNN中,每个方向上的分辨率会降低32倍。 [14]中使用的“反卷积”层可以部分缓解这个问题,但需要额外的内存和时间。相比之下,我们提倡使用洞卷积,它最初是为了在“algorithme a trous”的方案中高效计算不降采样小波变换而开发的[15],并且在DCNN的上下文中之前已经被[3],[6],[16]使用。这种算法允许我们以任意所需的分辨率计算任何层的响应。它可以在网络训练之后应用,但也可以与训练无缝集成。

        首先考虑一维信号,洞卷积的输出y[i]是通过将长度为K的滤波器w[k]应用于一维输入信号x[i]得到的,洞卷积2的定义如下: y[i] = ∑(k=1 to K) x[i+d·k] · w[k] 其中,d是洞卷积的膨胀率(dilation rate),表示滤波器中间的间隔数。通过在滤波器中引入间隔,洞卷积可以扩大滤波器的感受野,从而捕捉更多的上下文信息。这种方式可以在不增加参数和计算量的情况下增加感受野的范围。

 空洞卷积中的率参数r对应于我们对输入信号进行采样的步幅。当r = 1时,标准卷积是一种特殊情况。请参见图2以进行说明。

 图2:1维洞卷积的示例。(a)在低分辨率输入特征图上使用标准卷积进行稀疏特征提取。(b)在高分辨率输入特征图上使用率为2的洞卷积进行密集特征提取。

图3:2维洞卷积的示例。顶行:在低分辨率输入特征图上使用标准卷积进行稀疏特征提取。底行:在高分辨率输入特征图上使用率为2的洞卷积进行密集特征提取。

        通过图3中的一个简单示例,我们来说明算法在二维中的操作:给定一幅图像,我们假设首先进行一个降采样操作,将分辨率降低2倍,然后使用一个卷积核 - 在这里,是垂直高斯导数。如果将得到的特征图嵌入到原始图像坐标中,我们会发现我们只在图像位置的1/4处获得响应。相反,如果我们使用一个“带洞”的滤波器对全分辨率的图像进行卷积,其中我们将原始滤波器上采样两倍,并在滤波器值之间插入零值,我们可以在所有图像位置计算响应。尽管有效的滤波器大小增加了,但我们只需要考虑非零的滤波器值,因此滤波器参数的数量和每个位置的操作数量保持不变。这种方案的结果使我们能够轻松和明确地控制神经网络特征响应的空间分辨率。

        在DCNNs的上下文中,我们可以在一系列层中使用洞卷积,有效地使我们能够以任意高的分辨率计算最终的DCNN网络响应。例如,在VGG-16或ResNet-101网络中,为了使计算的特征响应的空间密度增加一倍,我们找到最后一个降低分辨率的池化或卷积层(分别为'pool5'或'conv5 1'),将其步长设置为1以避免信号抽取,并将所有后续的卷积层替换为具有速率r=2的洞卷积层。将这种方法推广到整个网络可以使我们以原始图像分辨率计算特征响应,但这会导致计算成本过高。我们取而代之采用了一种混合方法,在效率和准确性之间取得了良好的平衡,使用洞卷积将计算的特征图的密度增加4倍,然后通过8倍的快速双线性插值恢复到原始图像分辨率的特征图。在这种情况下,双线性插值已经足够,因为类别得分图(对应于对数概率)非常平滑,如图5所示。与[14]采用的反卷积方法不同,所提出的方法将图像分类网络转化为密集特征提取器,而无需学习任何额外的参数,从而在实践中加快了DCNN的训练速度。

        空洞卷积还允许我们在任何DCNN层中任意扩大滤波器的视野。现代的DCNN通常使用空间上较小的卷积核(通常为3×3),以保持计算量和参数数量的控制。使用率为r的洞卷积在连续滤波器值之间引入r-1个零值,有效地将k×k滤波器的核大小扩大到ke = k + (k-1) * (r-1),而不增加参数数量或计算量。因此,它提供了一种有效的机制来控制视野,并在准确的定位(小视野)和上下文融合(大视野)之间找到最佳平衡。我们成功地尝试了这种技术:我们的DeepLab-LargeFOV模型变体 [38]在VGG-16的'fc6'层中使用了率为12的洞卷积,并取得了显著的性能提升,详细情况请参见第4节。

        在实现方面,有两种高效的方法可以执行洞卷积。第一种方法是通过插入孔(零值)来隐式地上采样滤波器,或者等效地对输入特征图进行稀疏采样[15]。我们在之前的工作[6],[38]中实现了这种方法,并在Caffe框架[41]中通过向im2col函数(它从多通道特征图中提取矢量化的补丁)添加了对稀疏采样的选项。第二种方法最初是由[82]提出并在[3],[16]中使用的,它是通过将输入特征图按照洞卷积率r进行下采样,解交错以产生r2降低的分辨率图像,每个图像对应r×r个可能的位移之一。然后,对这些中间特征图应用标准卷积,并将它们重新交错到原始图像分辨率。通过将洞卷积转化为常规卷积,我们可以使用现成的高度优化的卷积例程。我们已经将第二种方法实现到了TensorFlow框架[83]中。

 图4:洞空间金字塔池化(ASPP)。为了对中心像素(橙色)进行分类,ASPP利用了具有不同率的多个并行滤波器来利用多尺度特征。不同颜色表示的是有效的视野范围。

3.2 使用洞空间金字塔池化的多尺度图像表示

        深度卷积神经网络(DCNN)通过在包含不同尺寸对象的数据集上进行训练,展现了对尺度的隐式表示能力。然而,明确考虑对象尺度可以提高DCNN处理大和小对象的能力[6]。我们尝试了两种处理语义分割中尺度可变性的方法。第一种方法是标准的多尺度处理[17],[18]。我们使用共享相同参数的并行DCNN分支从原始图像的多个(在我们的实验中为三个)调整尺度版本中提取DCNN得分图。为了生成最终结果,我们对并行DCNN分支的特征图进行双线性插值,使其具有与原始图像相同的分辨率,并通过在每个位置上取不同尺度的最大响应来融合它们。我们在训练和测试过程中都这样做。多尺度处理显著提高了性能,但需要计算多个尺度输入的所有DCNN层的特征响应,计算成本较高。第二种方法受到了[20]中R-CNN空间金字塔池化方法的成功启发,该方法表明可以通过在单一尺度上重新采样卷积特征来准确高效地分类任意尺度的区域。我们实现了他们方案的一种变体,使用具有不同采样率的多个并行洞卷积层提取特征。对于每个采样率提取的特征进一步在不同的分支中进行处理并融合以生成最终结果。所提出的“洞空间金字塔池化”(DeepLab ASPP)方法推广了我们的DeepLab-LargeFOV变体,如图4所示。

3.3 使用全连接条件随机场进行准确边界恢复的结构化预测

        在DCNN中存在着定位准确性和分类性能之间的权衡:更深的模型和多个最大池化层在分类任务中取得了最成功的结果,然而,顶层节点的增加方差和大的感受野只能产生平滑的响应。如图5所示,DCNN的得分图可以预测对象的存在和大致位置,但不能真正描绘它们的边界。以前的工作追求了两个方向来解决这个定位挑战。第一种方法是利用卷积网络中多个层的信息,以更好地估计对象的边界。第二种方法是使用超像素表示,实质上将定位任务委托给低级分割方法。我们追求了一种基于将DCNN的识别能力和全连接CRF的细粒度定位准确性相结合的替代方向,并且展示了它在解决定位挑战方面的显著成功,产生了准确的语义分割结果,并在超越现有方法的细节水平上恢复了对象的边界。自我们的工作首次发表以来,这个方向已经被多篇后续论文扩展了。

        传统上,条件随机场(CRFs)被用于平滑嘈杂的分割图[23],[31]。通常,这些模型将相邻节点耦合在一起,偏好将空间上相邻的像素分配为相同标签。从定性上讲,这些短程CRFs的主要功能是清理在局部手工设计特征之上构建的弱分类器产生的虚假预测。与这些较弱的分类器相比,我们在这项工作中使用的现代DCNN架构产生的得分图和语义标签预测在定性上是不同的。如图5所示,得分图通常非常平滑,并产生均匀的分类结果。在这种情况下,使用短程CRFs可能会产生不利影响,因为我们的目标应该是恢复详细的局部结构,而不是进一步平滑它。使用对比敏感势能[23]结合局部范围的CRFs可以潜在地改善定位,但仍会错过细小的结构,并且通常需要解决昂贵的离散优化问题。为了克服这些短程CRFs的局限性,我们将[22]的全连接CRF模型集成到我们的系统中。该模型使用能量函数

 

        其中x是像素的标签分配。我们使用一元势能θi(xi) = -log P(xi),其中P(xi)是由DCNN计算的像素i处的标签分配概率。成对势能具有一种形式,可以在使用全连接图进行高效推理时使用,即连接所有图像像素对(i,j)。具体来说,如[22]所示,我们使用以下表达式:θij(xi;xj) = µ(xi;xj) * w1 * exp(-||pi-pj||^2 / (2σ_alpha^2) - ||Ii-Ij||^2 / (2σ_beta^2)) + w2 * exp(-||pi-pj||^2 / (2σ^2) - ||Ii-Ij||^2 / (2σ_gamma^2)),其中µ(xi;xj) = 1表示xi != xj,否则为零,这意味着只有具有不同标签的节点受到惩罚。剩余的表达式在不同的特征空间中使用两个高斯核;第一个“双边”核依赖于像素位置(表示为p)和RGB颜色(表示为I),而第二个核只依赖于像素位置。超参数σ_alpha、σ_beta和σ_gamma控制高斯核的尺度。第一个核强制具有相似颜色和位置的像素具有相似的标签,而第二个核在强制平滑性时只考虑空间接近性。关键是,该模型适用于高效的近似概率推理[22]。

在全可分离均场近似下,消息传递的更新b(x) = Π bi(xi)可以在双边空间中表示为高斯卷积。高维滤波算法[84]显著加快了这个计算过程,从而得到一个在实践中非常快速的算法,使用[22]的公开实现,对于Pascal VOC图像的平均计算时间不到0.5秒。

4.实验结果

         我们通过简单的方式对Imagenet预训练的VGG-16或ResNet-101网络的模型权重进行微调,以适应语义分割任务,遵循[14]的过程。我们将最后一层的1000路Imagenet分类器替换为一个具有与任务的语义类别数量相同的目标的分类器(如果适用,包括背景)。我们的损失函数是CNN输出图中每个空间位置的交叉熵项的总和(与原始图像相比,下采样了8倍)。在整个损失函数中,所有位置和标签都具有相等的权重(除了被忽略的未标记像素)。我们的目标是下采样8倍的真值标签。我们通过[2]的标准SGD过程对所有网络层的权重优化目标函数。我们在四个具有挑战性的数据集上评估提出的模型:PASCAL VOC 2012、PASCAL-Context、PASCAL Person-Part和Cityscapes。我们首先报告我们在PASCAL VOC 2012上的会议版本[38]的主要结果,然后继续介绍所有数据集的最新结果。

4.1 PASCAL VOC 2012数据集:

        PASCAL VOC 2012分割基准[34]涉及20个前景对象类别和一个背景类别。原始数据集包含1,464张(训练集)、1,449张(验证集)和1,456张(测试集)像素级标记图像用于训练、验证和测试。通过[85]提供的额外注释对数据集进行了扩充,从而得到了10,582张(trainaug)训练图像。性能以像素交并比(IOU)平均值来衡量,跨越21个类别进行平均。

4.1.1 我们会议版本的结果:

        我们使用在Imagenet上预训练的VGG-16网络,并根据第3.1节的描述对其进行了适应以进行语义分割。我们使用一个包含20张图像的小批量,并设置初始学习率为0.001(最后分类器层为0.01),每2000次迭代将学习率乘以0.1。我们使用0.9的动量和0.0005的权重衰减。在DCNN在trainaug上进行微调后,我们根据[22]的方法对CRF参数进行交叉验证。我们使用默认值w2=3和σγ=3,并在val的100张图像上通过交叉验证来搜索最佳的w1、σα和σβ的值。我们采用粗到精的搜索方案。参数的初始搜索范围为w1在[3:6]之间,σα在[30:10:100]之间,σβ在[3:6]之间(MATLAB表示法),然后我们围绕第一轮的最佳值细化搜索步长。我们使用10次均值场迭代。

        视野和CRF:在表1中,我们报告了使用不同视野大小的DeepLab模型变体的实验结果,通过调整“fc6”层的卷积核大小和空洞采样率r来获得,如第3.1节所述。我们从直接适应VGG-16网络开始,使用原始的7×7卷积核大小和r=4(因为我们在最后两个最大池化层中没有使用步幅)。这个模型在CRF之后的性能为67.64%,但相对较慢(训练期间每秒处理1.44张图像)。通过将卷积核大小减小为4×4,我们将模型的速度提高到每秒2.9张图像。我们尝试了两种具有较小(r=4)和较大(r=8)视野大小的网络变体;后者的性能更好。最后,我们使用了3×3的卷积核大小和更大的空洞采样率(r=12),同时通过保留“fc6”和“fc7”层中的4096个滤波器中的1024个随机子集来使网络变得更瘦。结果得到的模型DeepLab-CRF LargeFOV的性能与直接适应VGG-16(7×7卷积核大小,r=4)相当。同时,DeepLab-LargeFOV的速度是前者的3.36倍,参数数量显著减少(从134.3M减少到20.5M)。CRF大大提升了所有模型变体的性能,平均IOU的绝对增加率达到3-5%。

        测试集评估:我们在PASCAL VOC 2012官方测试集上评估了我们的DeepLab-CRF LargeFOV模型。它达到了70.3%的平均IOU性能。

表1:通过调整“fc6”层的卷积核大小和空洞采样率r来调整视野大小的效果。我们展示了模型参数数量、训练速度(图像/秒)以及CRF前后的验证集平均IOU。DeepLab-LargeFOV(卷积核大小3×3,r=12)达到了最佳平衡。

 表2:PASCAL VOC 2012验证集结果(%)(CRF之前),当不同的学习超参数变化时。在训练DeepLab-LargeFOV时,采用“poly”学习策略比“step”更有效。

 

4.1.2 本工作在会议版本之后的改进

在会议版本[38]之后,我们对我们的模型进行了三个主要的改进,如下所述:

  1. 在训练过程中采用不同的学习策略:我们尝试了不同的学习策略,包括“poly”和“step”。通过使用“poly”学习策略,我们可以更好地优化模型的性能,提高语义分割的准确性。
  2. 采用空洞空间金字塔池化:我们引入了空洞空间金字塔池化(ASPP)方法,通过在不同的空洞采样率下进行卷积操作,从不同尺度上获取语义信息。这样可以更好地捕捉到图像中不同尺度的语义信息,提高模型的性能。
  3. 使用更深的网络和多尺度处理:我们采用了更深的网络结构,并进行了多尺度的处理。通过增加网络的深度,我们可以提取更丰富的特征,从而提高模型的性能。同时,我们还引入了多尺度的处理方法,通过在不同尺度下进行语义分割,进一步提高了模型的准确性。 通过这些改进,我们的模型在性能上得到了显著的提升,并在语义分割任务中取得了更好的结果。这些改进使我们的模型更加强大和灵活,适用于各种实际应用场景。

学习率策略:在训练DeepLab-LargeFOV时,我们尝试了不同的学习率策略。与[86]类似,我们发现采用“poly”学习率策略(学习率乘以(1−max iter/iter)的幂次)比采用“step”学习率策略(在固定步长上降低学习率)更有效。如表2所示,采用“poly”策略(幂次为0.9),并使用相同的批量大小和相同的训练迭代次数,性能比采用“step”策略提高了1.17%。将批量大小固定并将训练迭代次数增加到10K可以将性能提高到64.90%(提高了1.48%);然而,由于增加了更多的训练迭代次数,总的训练时间也会增加。然后,我们将批量大小减小到10,并发现性能仍然可以保持相当(64.90%对比64.71%)。最后,为了保持与之前“step”策略相似的训练时间,我们选择批量大小为10和20K的迭代次数。令人惊讶的是,这给我们带来了65.88%(比“step”策略提高了3.63%)的验证集性能,以及67.7%的测试集性能,相比CRF之前DeepLab LargeFOV的65.1%的性能。我们在论文的其余部分中采用“poly”学习率策略进行了所有实验。

空洞空间金字塔池化:我们对提出的空洞空间金字塔池化(ASPP)方案进行了实验,如第3.1节所述。如图7所示,VGG-16的ASPP使用了几个并行的fc6-fc7-fc8分支。它们都使用3×3的卷积核,但在“fc6”中使用不同的空洞采样率r以捕捉不同大小的对象。在表3中,我们报告了几个设置的结果:(1)我们的基线LargeFOV模型,只有一个r=12的分支,(2)ASPP-S,有四个分支和较小的空洞采样率(r=f2,4,8,12g),和(3)ASPP-L,有四个分支和较大的采样率(r=f6,12,18,24g)。对于每个变体,我们报告了CRF之前和之后的结果。如表中所示,ASPP-S在CRF之前比基线LargeFOV模型提高了1.22%。然而,在CRF之后,LargeFOV和ASPP-S的性能相似。另一方面,ASPP-L在CRF之前和之后都比基线LargeFOV模型有一致的改进。我们在测试集上评估了提出的ASPP-L + CRF模型,达到了72.6%的性能。我们在图8中展示了不同方案的效果。

更深的网络和多尺度处理:我们尝试构建DeepLab,基于最近的ResNet-101网络进行类似于VGG-16网络的实验,并采用了空洞卷积,如第3.1节所述。除此之外,我们还采用了其他一些特征,参考了最近的研究成果[17],[18],[39],[40],[58],[59],[62]:(1)多尺度输入:我们将不同尺度(缩放因子为0.5、0.75、1)的图像分别输入到DCNN中,通过对每个位置的得分图进行最大响应融合来获得多尺度的输出结果[17]。(2)在MS-COCO数据集上预训练的模型[87]。(3)在训练过程中通过随机缩放输入图像(从0.5到1.5)进行数据增强。在表4中,我们评估了每个因素,以及LargeFOV和空洞空间金字塔池化(ASPP),对验证集性能的影响。与VGG-16相比,采用ResNet-101显著提高了DeepLab的性能(例如,我们最简单的基于ResNet-101的模型的性能达到了68.72%,而基于DeepLab-LargeFOV VGG-16的模型的性能为65.76%,均为CRF之前的结果)。多尺度融合[17]带来了额外的2.55%的性能提升,而在MS-COCO上进行预训练又带来了2.01%的性能提升。在训练过程中进行数据增强是有效的(约1.6%的性能提升)。采用LargeFOV(在ResNet之上添加一个空洞卷积层,使用3×3的卷积核和采样率为12)是有益的(约0.6%的性能提升)。通过空洞空间金字塔池化(ASPP)进一步提高了0.8%的性能。对我们的最佳模型进行密集CRF后处理,性能达到了77.69%。

测试集结果:我们已经将我们最终最佳模型的结果提交到官方服务器,并获得了79.7%的测试集性能,如表5所示。该模型在很大程度上优于之前的DeepLab变体(例如,基于VGG-16网络的DeepLab-LargeFOV),目前是PASCAL VOC 2012分割排行榜上表现最好的方法。

VGG-16与ResNet-101的比较:我们观察到基于ResNet-101 [11]的DeepLab在物体边界上提供比使用VGG-16 [4]更好的分割结果,如图9所示。我们认为ResNet-101的恒等映射 [94]与超级像素特征 [21]具有类似的效果,它利用了中间层的特征来更好地定位边界。我们在图10中进一步定量化了这个效果,使用了“trimap”[22],[31](沿着物体边界的窄带)。如图所示,与使用VGG-16结合CRF相比,仅使用ResNet-101在CRF之前在物体边界上几乎具有相同的准确性。通过使用CRF对ResNet-101的结果进行后处理进一步改善了分割结果。

 图6:PASCAL VOC 2012验证结果。输入图像和我们的DeepLab在CRF之前/之后的结果。

图7:DeepLab-ASPP使用多个具有不同采样率的滤波器来捕捉多尺度的对象和上下文。

 表3:ASPP对基于VGG-16的DeepLab模型在PASCAL VOC 2012验证集上的性能(平均IOU)的影响。LargeFOV:单分支,r = 12。ASPP-S:四个分支,r = [2, 4, 8, 12]。ASPP-L:四个分支,r = [6, 12, 18, 24]。 

表4:在PASCAL VOC 2012验证集上使用ResNet-101进行DeepLab的结果。MSC:使用最大融合的多尺度输入。COCO:在MS-COCO上预训练的模型。Aug:通过随机缩放输入进行数据增强。

 

 图8:使用ASPP与基线LargeFOV模型进行比较的定性分割结果。ASPP-L模型利用多个大感受野成功地捕捉到了多尺度的对象以及图像上下文。

4.2 PASCAL-Context

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

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

相关文章

Langchain-ChatGLM配置文件参数测试

1 已知可能影响对话效果的参数(位于configs/model_config.py文件): # 文本分句长度 SENTENCE_SIZE 100# 匹配后单段上下文长度 CHUNK_SIZE 250 # 传入LLM的历史记录长度 LLM_HISTORY_LEN 3 # 知识库检索时返回的匹配内容条数 VECTO…

谈谈你对 binder 的理解?

面试官提了一个问题,我们来看看 😎、😨 和 🤔️ 三位同学的表现如何吧 😎 自认为无所不知,水平已达应用开发天花板,目前月薪 10k 面试官️:谈谈你对 binder 的理解 😎&a…

Unity 限制范围-限制在4分之一圆柱形范围内活动

在我的游戏中,玩家的两只手操控中,不想让他们的手围着自己在一个圆形范围内随便乱跑,左手只想让他在左上角,右手在右上角范围活动。所以我制作这样一个算法来实现。 首先用Dot函数划分出4个区域,然后根据区域计算修正…

C++ | 仿函数与priority_queue

目录 前言 一、初始仿函数 1、仿函数是什么 2、仿函数的使用 二、优先级队列 1、 优先级队列的基本概念 2、堆的储存结构与结点之前关系 3、堆的使用 4、堆的模拟实现 前言 本文主要介绍优先级队列与仿函数,优先级队列实际上是我们在数据结构中学的堆&…

02 | conda的使用

1 前提 Conda是一个在Windows、macOS、Linux和z/OS上运行的开源软件包管理系统和环境管理系统。Conda快速安装、运行和更新软件包及其依赖项。Conda可以在本地计算机上轻松创建、保存、加载和切换环境。它是为Python程序创建的,但它可以为任何语言打包和分发软件。…

Tomcat 8.5 源码分析

一、获取源码并启动程序 获取教程地址 总体架构 二、Tomcat的启动入口 Catalina类主要负责 具体的管理类,而Bootstrap类是启动的入口(main方法)。 /*** Main method and entry point when starting Tomcat via the provided* scripts.** param args Command lin…

C# Post 接口请求样例

很久没有写接口了&#xff0c;正好今天写到了接口&#xff0c;记录一下 封装Http Post请求&#xff0c;这里的请求头是 request.ContentType “application/json”; 复制后根据实际去修改&#xff0c;不要生搬硬套搞拿来主义&#xff1a; /// <summary>/// 发送http请求…

Spring Cloud 远程接口调用OpenFeign负载均衡实现原理详解

环境&#xff1a;Spring Cloud 2021.0.7 Spring Boot 2.7.12 配置依赖 maven依赖 <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId> </dependency> <dependency&…

什么是XSS攻击及其类型和危害

什么是XSS攻击及其类型和危害 跨站脚本攻击&#xff08;Cross-Site Scripting&#xff0c;简称 XSS&#xff09;是一种常见的网络安全漏洞&#xff0c;攻击者通过在受害者的浏览器中注入恶意脚本&#xff0c;从而在受害者的浏览器端执行恶意代码&#xff0c;从而实现攻击目的。…

在CSDN博客平台上吸引铁粉诀窍

&#x1f3c6;荣誉认证&#xff1a;51CTO博客专家博主、TOP红人、明日之星&#xff1b;阿里云开发者社区专家博主、技术博主、星级博主。 ⭐本文介绍⭐ 在社交媒体时代&#xff0c;拥有一批忠实的粉丝对于博主来说非常重要。这些铁粉不仅能够给予支持和鼓励&#xff0c;还能为…

第十八章 番外篇:混合精度训练

参考教程&#xff1a; https://pytorch.org/tutorials/recipes/recipes/amp_recipe.html?highlightamp https://pytorch.org/docs/stable/amp.html https://arxiv.org/pdf/1710.03740.pdf https://zhuanlan.zhihu.com/p/79887894 文章目录 原理float 32float 16混合精度 代码实…

cmake编译mingw下使用的zlib

目录 一、准备 二、cmake构建 三、make编译 一、准备 zlib Home Site zlib1.2.11&#xff08;2017.2.15&#xff09; 二、cmake构建 有cmakeLists.txt&#xff0c;直接用cmake进行构建 然后点击generate&#xff0c;接下来只能用命令行编译&#xff0c;在build目录执行…

选购螺杆支撑座要考虑哪些因素?

为了可以保证螺杆支撑座的使用效果&#xff0c;同时也能够发挥出更好的使用功能&#xff0c;避免出现各种质量隐患&#xff0c;建议大家在购买的时候一定要在专业正规的厂家进行选购&#xff0c;那么&#xff0c;我们在选购的时候要考虑哪些方面的因素呢&#xff1f; 1、考虑到…

曲柄滑块运动学求解基于Matlab

参考文档&#xff1a; 曲柄滑块机构运动分析..doc-原创力文档 偏置曲柄滑块机构的运动学分析 - 豆丁网 偏置式曲柄滑块机构仿真与运动分析 - 豆丁网 https://www.cnblogs.com/aksoam/p/17013811.html function main %输入已知数据 close all clear; i1100; i2300; e56; hd …

统一异常处理,自定义异常

目录 一、制造异常 Swagger中测试 二、统一异常处理 1、创建统一异常处理器 2、测试 三、处理特定异常 1、添加依赖 2、添加异常处理方法 3、测试 4、恢复制造的异常 四、自定义异常 1、创建自定义异常类 2、添加异常处理方法 3、修改Controller 4、测试 返回异…

3.1 Bootstrap 字体图标(Glyphicons)

文章目录 Bootstrap 字体图标(Glyphicons)什么是字体图标&#xff1f;获取字体图标CSS 规则解释带有导航栏的字体图标定制字体图标定制字体尺寸定制字体颜色应用文本阴影 Bootstrap 字体图标(Glyphicons) 本章将讲解字体图标(Glyphicons)&#xff0c;并通过一些实例了解它的使用…

【SpringBoot】SpringBoot的自动配置源码解析

文章目录 1. SpringBoot的自动配置概念2. SpringBoot自动配置的原理3. EnableAutoConfiguration4. 常用的Conditional注解 1. SpringBoot的自动配置概念 SpringBoot相对于SSM来说&#xff0c;主要的优点就是简化了配置&#xff0c;不再需要像SSM哪有写一堆的XML配置&#xff0…

SQLSERVER的truncate和delete有区别吗?

一&#xff1a;背景 1. 讲故事 在面试中我相信有很多朋友会被问到 truncate 和 delete 有什么区别 &#xff0c;这是一个很有意思的话题&#xff0c;本篇我就试着来回答一下&#xff0c;如果下次大家遇到这类问题&#xff0c;我的答案应该可以帮你成功度过吧。 二&#xff1…

全网最细,Pytest自动化框架fixture和conftest.py实战详解(细致)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 fixture说明 fix…

你一定不知道的自动化测试的9大规则

目录 前言 应该去做的事情 雇用合适的人 在寻找正确的测试自动化工具方面花点时间 轻装上阵 让开发人员参与到自动化过程中来 在ci/cd上投资时间 不应该做的事情 不要因为一个工具被追捧就选择它 不要试图将一切都自动化 不要太早实现自动化 永远不要用自动化来取代…