摘要:
深度神经网络采用空间金字塔池模块或编解码器结构来完成语义分割任务。前一种网络通过滤波或池化操作以多种速率和多个有效视场探测输入特征,从而实现多尺度上下文信息的编码;后一种网络通过逐渐恢复空间信息来捕获更清晰的目标边界。在这项工作中,我们建议将这两种方法的优点结合起来。具体来说,我们提出的模型DeepLabv3+扩展了DeepLabv3,通过添加一个简单而有效的解码器模块来细化分割结果,特别是沿着目标边界。我们进一步探索 Xception model,并将深度可分离卷积应用于Atrous空间金字塔池和解码器模块,从而产生更快,更强的编码器-解码器网络。我们在PASCAL VOC 2012和cityscape数据集上验证了该模型的有效性,在没有任何后处理的情况下,测试集的性能分别达到89.0%和82.1%。我们的论文附有Tensorflow中提出的模型的公开参考实现
关键词:语义图像分割,空间金字塔池,编解码器,深度可分离卷积。
深度可分离卷积将这个过程分成两个独立的步骤:
深度卷积(Depthwise Convolution): 对输入的每个通道应用一个单独的卷积核。每个输入通道都有自己的卷积核,但所有通道共享相同的卷积核。这一步在深度上进行卷积,独立处理每个通道。
逐点卷积(Pointwise Convolution): 在深度卷积的输出上应用 1x1 的卷积核,将深度卷积的输出通道映射到最终的输出通道。这一步在每个空间位置上执行 1x1 的卷积,用于组合深度卷积的结果。
深度可分离卷积相对于标准卷积具有以下优势:
参数效率: 由于深度卷积和逐点卷积分别使用更小的卷积核,深度可分离卷积具有更少的参数量,从而减少了计算和存储需求。
计算效率: 分解为两个步骤的深度可分离卷积通常需要更少的计算,因为逐点卷积的计算量较小。
表达能力: 尽管深度可分离卷积减少了参数量,但在许多情况下,它仍然能够保持较好的特征表示能力。
深度可分离卷积在轻量级模型和移动设备上的应用变得越来越流行,因为它提供了更高的计算效率和更小的模型尺寸,同时仍然能够保持良好的性能。
Atrous空间金字塔池(Atrous Spatial Pyramid Pooling,ASPP)是一种用于图像语义分割的模块,它可以在不同的尺度上对卷积特征进行池化操作,以捕捉不同尺度下的上下文信息。ASPP模块采用了空洞卷积(Atrous Convolution)的思想,通过在卷积核中插入空洞,可以在不增加计算量的情况下扩大感受野,从而提高特征的表达能力。ASPP模块通常被用作DeepLabv3等图像分割模型的一部分,以提高模型的性能。
1 Introduction
语义分割的目标是为图像中的每个像素分配语义标签[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]应用了几种不同速率的parallel atrous convolution(ASPP),而PSPNet[24]在不同的网格尺度上执行池化操作。尽管在最后的特征映射中编码了丰富的语义信息,但由于网络骨干内部的池化或跨步操作的卷积,丢失了与对象边界相关的详细信息。这可以通过应用atrous convolution来提取更密集的特征映射来缓解。然而,考虑到最先进的神经网络的设计[7,9,10,25,26]和有限的GPU内存,提取比输入分辨率小8倍甚至4倍的输出特征映射在计算上是禁止的。以ResNet-101[25]为例,当应用atrous convolution提取比输入分辨率小16倍的输出特征时,必须对最后3个残差块(9层)内的特征进行扩展。更糟糕的是,如果输出特征比输入小8倍,26个剩余块(78层!)将受到影响。因此,如果为这种类型的模型提取更密集的输出特征,则计算量很大。另一方面,编码器-解码器模型[21,22]可以在编码器路径中更快地计算(因为没有扩展特征),并在解码器路径中逐渐恢复清晰的对象边界。我们尝试结合两种方法的优点,提出通过加入多尺度上下文信息来丰富编码器-解码器网络中的编码器模块。
特别是,我们提出的DeepLabv3+模型扩展了DeepLabv3[23],增加了一个简单而有效的解码器模块来恢复目标边界,如图1所示。丰富的语义信息在DeepLabv3的输出中进行编码,使用atrous convolution 允许根据计算资源的预算控制编码器特征的密度。此外,解码器模块允许详细的目标边界恢复。
受到最近深度可分离卷积在 [27,28,26,29,30] 中的成功启发,我们也探索了这个操作,并通过调整 Xception 模型 [26](类似于 [31] 的方式),用于语义分割任务,展示了在速度和准确性两方面的改进。我们应用空洞可分离卷积到ASPP(Atrous Spatial Pyramid Pooling)和解码器模块,进一步提高了性能。最后,我们在PASCAL VOC 2012和cityscape数据上验证了该模型的有效性,在没有任何后处理的情况下,测试集的性能分别达到89.0%和82.1%,创下了新的水平。
贡献是:
- 我们提出了一种新的编码器-解码器结构,该结构采用DeepLabv3作为强大的编码器模块和简单有效的解码器模块。
- 在我们的结构中,我们可以通过atrous convolution来任意控制提取的编码器特征的分辨率,以权衡精度和运行时间,这在现有的编码器-解码器模型中是不可能的。
- 我们将Xception模型用于分割任务,并将深度可分离卷积应用于ASPP模块和解码器模块,从而得到更快、更强的编解码器网络。
- 我们提出的模型在PASCAL VOC 2012和cityscape数据集上实现了新的最先进的性能。我们还提供了设计选择和模型变体的详细分析。
2 Related Work
基于全卷积网络(Fully Convolutional Networks, FCNs)的模型[8,11]在多个分割基准测试[1,2,3,4,5]上表现出了显著的改进。为了利用上下文信息进行分割,提出了几种模型变体[12,13,14,15,16,17,32,33],包括使用多尺度输入(即图像金字塔)[34,35,36,37,38,39]或采用概率图模型(如采用高效推理算法[41]的DenseCRF[40])[42,43,44,37,45,46,47,48,49,50,51,39]。本文主要讨论了使用空间金字塔池和编码器-解码器结构的模型。
空间金字塔池化:PSPNet[24]或DeepLab[39,23]等模型在多个网格尺度(包括图像级池化[52])上执行空间金字塔池化[18,19],或应用多个不同速率的parallel atrous convolution(ASPP)。这些模型通过利用多尺度信息,在多个分割基准上显示出良好的结果
在图像处理和计算机视觉中,网格尺度(grid scale)通常指的是图像中的像素大小或特征图中的单元格大小。在卷积神经网络中,特征图通常被分成多个单元格,每个单元格对应于输入图像中的一个区域。这些单元格的大小通常由网络的架构和超参数决定。例如,在DeepLabv3中,特征图的大小由输入图像的大小和空洞卷积的空洞率决定。在语义分割任务中,网格尺度的大小通常会影响模型的性能和精度,因为它决定了模型能够捕捉到的上下文信息的范围。较小的网格尺度可以提供更多的细节信息,但可能会导致模型过拟合;而较大的网格尺度可以提供更广泛的上下文信息,但可能会导致模型欠拟合。因此,在设计卷积神经网络时,需要仔细选择合适的网格尺度,以平衡模型的性能和精度。
编码器-解码器:编码器-解码器网络已经成功地应用于许多计算机视觉任务,包括人体姿态估计[53]、目标检测[54,55,56]和语义分割[11,57,21,22,58,59,60,61,62,63,64]。通常,编码器-解码器网络包含(1)逐渐减少特征映射并捕获更高语义信息的编码器模块,以及(2)逐渐恢复空间信息的解码器模块。在此想法的基础上,我们建议使用DeepLabv3[23]作为编码器模块,并添加一个简单而有效的解码器模块,以获得更清晰的分割。
在语义分割任务中,使用并行空洞卷积(parallel atrous convolution)可以帮助模型捕获不同尺度下的上下文信息。不同速率的并行空洞卷积指的是在同一层中使用具有不同采样率(也称为空洞率或膨胀率)的多个空洞卷积核。这些不同速率的卷积核可以捕获不同尺度下的特征信息,从而提高模型对多尺度目标的感知能力。 例如,在DeepLabv3中的Atrous Spatial Pyramid Pooling(ASPP)模块中,就使用了多个并行的空洞卷积,每个空洞卷积具有不同的采样率。这样一来,模型就可以同时获取不同尺度下的上下文信息,从而提高了语义分割的性能。
深度可分离卷积:深度可分离卷积[27,28]或群卷积[7,65],这是一种强大的操作,可以减少计算成本和参数数量,同时保持类似(或略好)的性能。该操作已被许多近期的神经网络设计所采用[66,67,26,29,30,31,68]。特别是,我们在COCO 2017检测挑战提交中探索了Xception模型[26],类似于[31],并且在语义分割任务的准确性和速度方面都有所提高。
Xception是一种深度卷积神经网络模型,由Google在2017年提出。它是在Inception架构的基础上进行改进的,旨在提高模型的性能和效率。Xception的名称来源于“extreme inception”,意味着它是对Inception架构的一种极端扩展和改进。 Xception的主要创新点在于引入了深度可分离卷积(depthwise separable convolution),这种卷积操作将标准卷积分解为深度卷积和逐点卷积两个步骤,从而减少了参数数量和计算量。这种结构使得Xception在保持较高性能的同时,具有更高的计算效率和更小的模型尺寸。 Xception模型在ImageNet图像分类任务上取得了很好的性能,同时也被广泛用于其他计算机视觉任务,如目标检测、语义分割等。在本文中,Xception模型被用作DeepLabv3+模型的网络骨架,以提取图像特征并进行语义分割任务。
3 Methods
在本节中,我们将简要介绍atrous convolution[69,70,8,71,42]和深度可分卷积[27,28,67,26,29]。然后,我们回顾DeepLabv3[23],它被用作我们的编码器模块,然后讨论附加到编码器输出的拟议解码器模块。我们还提出了一种改进的Xception model[26,31],该模型通过更快的计算进一步提高了性能。
3.1 Encoder-Decoder with Atrous Convolution
Atrous convolution: Atrous convolution是一个强大的工具,它允许我们显式控制深度卷积神经网络计算的特征分辨率,并调整滤波器的视场以捕获多尺度信息,它推广了标准卷积操作。在二维信号的情况下,对于输出特征映射y上的每个位置i和卷积滤波器w,对输入特征映射x进行atrous convolution ,如下所示:
图3:3×3深度可分离卷积将标准卷积分解为(a)深度卷积(对每个输入通道应用单个滤波器)和(b)点卷积(结合跨通道深度卷积的输出)。在这项工作中,我们探索atrous separable convolution,其中深度卷积采用atrous convolution,如图(c)所示,速率= 2。
其中atrous rate r决定了我们对输入信号进行采样的步幅。我们建议有兴趣的读者参阅[39]了解更多细节。注意,标准卷积是速率r = 1的特殊情况。通过改变速率值,自适应地修改滤波器的视场。
Depthwise separable convolution:深度可分离卷积,将标准卷积分解为深度卷积,然后是点卷积(即1 × 1卷积),大大降低了计算复杂性。具体而言,深度卷积对每个输入通道独立执行空间卷积,而点向卷积用于组合深度卷积的输出。在TensorFlow[72]对深度可分卷积的实现中,深度卷积(即空间卷积)中已经支持了atrous convolution,如图3所示。在这项工作中,我们将结果卷积称为atrous separable convolution,并发现atrous separable convolution显着降低了所提出模型的计算复杂度,同时保持相似(或更好)的性能。
DeepLabv3作为编码器:DeepLabv3[23]采用自然卷积[69,70,8,71],以任意分辨率提取深度卷积神经网络计算的特征。在这里,我们将输出步幅表示为输入图像空间分辨率与最终输出分辨率的比率(在全局池化或完全连接层之前)。对于图像分类任务,最终特征图的空间分辨率通常比输入图像分辨率小32倍,因此输出stride = 32。对于语义分割任务,可以采用输出步幅= 16(或8)进行更密集的特征提取,通过去除最后一个(或两个)块中的步幅并应用相应的 atrous convolution(例如,我们在输出步幅= 8时分别对最后两个块应用rate = 2和rate = 4)。此外,DeepLabv3增强了the Atrous Spatial Pyramid Pooling模块。它通过应用不同速率的atrous convolution在多个尺度上探测卷积特征,使用图像级特征[52]。我们使用原始DeepLabv3中logits之前的最后一个特征映射作为我们建议的编码器-解码器结构中的编码器输出。注意编码器输出的特征映射包含256个通道和丰富的语义信息。此外,根据计算预算,可以通过应用atrous convolution以任意分辨率提取特征。
在这个上下文中,"logits"通常指的是神经网络模型最后一层的输出,它是未经过softmax或其他激活函数处理的原始预测值。在语义分割任务中,logits通常是一个三维张量,其中的每个元素对应于模型对每个像素属于每个类别的置信度得分。 在原始的DeepLabv3模型中,最后一层的输出就是logits,它包含了模型对每个像素属于每个类别的得分。在提到"使用原始DeepLabv3中logits之前的特征图作为编码器输出"时,意味着在提出的编码器-解码器结构中,使用了原始DeepLabv3模型中logits层之前的特征图作为编码器的输出。这些特征图包含了丰富的语义信息,可以作为解码器的输入,用于生成最终的语义分割结果。
Proposed decoder: DeepLabv3的编码器特征通常以输出步幅= 16计算。在[23]的工作中,特征以16倍数进行双线性上采样,这可以被认为是一个朴素解码器模块。然而,这种朴素的解码器模块可能无法成功地恢复目标分割细节。因此,我们提出了一个简单而有效的解码器模块,如图2所示。编码器特征首先以4倍的倍数进行双线性上采样,然后与来自具有相同空间分辨率的网络骨干的相应低级特征[73]连接(例如,在ResNet-101中跨步之前的Conv2[25])。我们在底层特征上应用另一个1 × 1的卷积来减少通道的数量,因为相应的底层特征通常包含大量的通道(例如,256或512),这可能超过丰富的编码器特征的重要性(在我们的模型中只有256个通道),并使训练变得更加困难。在连接之后,我们应用一些3 × 3卷积来改进特征,然后再进行一个简单的双线性上采样,上采样倍数为4。我们在第4节中显示,对编码器模块使用输出stride = 16可以在速度和精度之间实现最佳权衡。当对编码器模块使用输出stride = 8时,性能略有提高,但代价是额外的计算复杂性。
3.2 Modified Aligned Xception
Xception模型[26]在ImageNet[74]上计算速度快,显示出很好的图像分类结果。最近,MSRA团队[31]修改了Xception model(称为Aligned Xception),并进一步提高了目标检测任务的性能。在这些发现的激励下,我们朝着同样的方向努力,将Xception模型用于语义图像分割任务。特别是,我们在MSRA修改的基础上做了一些改变,即(1)与MSRA团队相同的更深的Xception模型,但是没有修改入口流(entry flow)网络结构,以保持快速计算和内存效率。(2)所有最大池化操作都被深度可分离卷积取代。这使得他们能够在任意分辨率下提取特征图,并应用空洞可分离卷积来捕获不同尺度下的特征信息。(另一种选择是将空洞算法扩展到最大池化操作),并且(3)在每次3 × 3深度卷积之后添加额外的批处理归一化[75]和ReLU激活,类似于MobileNet设计[29]。具体见图4。
- 入口流(Entry Flow):包括一系列的卷积操作,用于提取图像的低级特征。
- 中间流(Middle Flow):由一系列重复的模块组成,每个模块包括多个深度可分离卷积层,用于提取图像的中级特征。
- 出口流(Exit Flow):包括一系列的卷积操作,用于生成最终的特征表示。 在这些流中,"conv"代表普通的卷积操作,而"sep conv"代表深度可分离卷积操作。深度可分离卷积是一种卷积神经网络中常用的操作,它可以减少计算量和参数数量,同时保持模型的性能
4 Experimental Evaluation
我们使用ImageNet-1k[74]预训练的ResNet-101[25]或修改的aligned Xception[26,31],通过atrous convolution提取密集特征图。我们的实现是建立在TensorFlow[72]之上的,并且是公开的。
哪个数据集上对提出的模型进行了评估,以及评估的指标和数据集的一些基本信息:所提出的模型在PASCAL VOC 2012语义分割基准测试集上对提出的模型进行了评估。该数据集包含20个前景对象类别和一个背景类别。原始数据集包含1,464张训练图像、1,449张验证图像和1,456张测试图像,这些图像都进行了像素级注释。作者通过使用[76]提供的额外注释来增强数据集,最终得到了10,582张训练图像。评估指标是平均交并比(mIOU),即对21个类别的像素级交并比求平均值。
作者在训练模型时所采用的训练协议和一些细节,以及一些注意事项:采用了与[23]相同的训练协议,并建议感兴趣的读者参考[23]了解详细信息。简而言之,作者采用了相同的学习率调度策略(即“poly”策略[52]和相同的初始学习率0.007),裁剪大小为513×513,当输出步幅为16时,对批归一化参数进行微调[75],并在训练过程中进行随机尺度数据增强。需要注意的是,作者还在提出的解码器模块中包括了批归一化参数。作者的提出的模型是端到端地训练的,没有对每个组件进行分段预训练。
4.1 Decoder Design Choices
术语的定义:将“DeepLabv3特征图”定义为由DeepLabv3计算得出的最后一个特征图,即包含ASPP特征和图像级特征的特征图。此外,作者还定义了“[k × k; f]”表示卷积操作,其中k × k表示卷积核的大小,f表示滤波器的数量。
当使用输出步幅为16时,基于ResNet-101的DeepLabv3 [23]在训练和评估过程中通过双线性上采样将逻辑回归结果上采样16倍。这种简单的双线性上采样可以被认为是一种朴素的解码器设计,其在PASCAL VOC 2012验证集上的性能为77.21% [23],比在训练过程中不使用这种朴素的解码器(即在训练过程中对groundtruth进行下采样)要好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]以减少通道。
Conv2特征是指在ResNet-101网络结构中,第二个残差块的输出特征图。在ResNet-101中,Conv2特征图的尺寸为1/4输入图像的尺寸,因为在第一个残差块之后进行了步幅为2的下采样操作。Conv2特征图通常被认为是具有较高语义信息的特征图。
然后,我们为解码器模块设计了3 × 3卷积结构,并在表2中报告了研究结果。我们发现,在将Conv2特征图(在跨步之前)与DeepLabv3特征图连接之后,使用256个过滤器的两次3×3卷积比使用简单的一个或三个卷积更有效。将过滤器的数量从256更改为128,或者将内核大小从3 × 3更改为1×1会降低性能。我们还实验了在解码器模块中利用Conv2和Conv3特征映射的情况。在这种情况下,解码器特征映射逐渐上采样2,先与Conv3连接,然后与Conv2连接,并且每个特征图都会通过[3×3; 256]操作进行优化。整个解码过程类似于U-Net/SegNet设计[21,22]。然而,我们没有观察到明显的改善。因此,最后,我们采用了非常简单而有效的解码器模块:将DeepLabv3特征图和通道减少的Conv2特征图连接,并通过两个[3×3; 256]操作进行优化。注意,我们提议的DeepLabv3+模型的输出stride = 4。鉴于有限的GPU资源,我们不追求更密集的输出特征映射(即输出步幅< 4)。
4.2 ResNet-101 as Network Backbone
为了比较模型的准确性和速度,我们在表3中报告了在提出的DeepLabv3+模型中使用ResNet-101[25]作为网络骨干网时的mIOU和multiply - add。多亏atrous convolution,我们能够在训练和评估过程中使用单一模型获得不同分辨率的特征。
Baseline: 表3中的第一行块包含[23]的结果,表明在评估过程中提取更密集的特征映射(即eval输出stride = 8)并采用多尺度输入可以提高性能。此外,添加向右翻转的输入会使计算复杂度翻倍,而性能只会有微小的提高。
Adding decoder: 表3中的第二行块包含采用所提出的解码器结构时的结果。当使用eval output stride = 16或8时,性能分别从77:21%提高到78:85%或78:51%提高到79:35%,但代价是额外的计算开销约为20B。当使用多尺度和左右翻转输入时,性能得到进一步提高。
Coarser feature maps:我们也在使用训练输出stride = 32(即,在训练过程中根本没有atrous convolution)进行快速计算的情况下进行了实验。如表3第三行块所示,增加解码器后,性能提高约2%,而只需要74.20B的Multiply-Adds。然而,在我们使用训练输出stride = 16和不同的eval output stride values的情况下,性能总是低于1%到1.5%。因此,根据复杂度预算,我们更倾向于在训练或评估期间使用输出stride = 16或8。
4.3 Xception as Network Backbone
我们进一步采用更强大的Xception[26]作为网络骨干。在[31]之后,我们做了一些修改,如第3.2节所述。
ImageNet pretraining: 本文提出的异常网络在ImageNet-1k数据集[74]上进行预训练,使用与[26]中类似的训练协议。具体来说,我们采用Nesterov动量优化器,动量= 0.9,初始学习率= 0.05,每2次速率衰减= 0.94,权重衰减4e−5。我们使用50个GPU的异步训练,每个GPU的批处理大小为32,图像大小为299×299。我们没有调整超参数,因为目标是在ImageNet上预训练模型以进行语义分割。我们报告了表4中验证集上的单模型错误率,以及在相同训练方案下复制的ResNet-101[25]基线。我们观察到,在改进的例外中,在每次3 × 3深度卷积后不添加额外的批处理归一化和ReLU时,Top1和Top5的精度性能下降了0.75%和0.29%。
使用所提出的Xception作为网络主干进行语义分割的结果如表5所示。
Baseline: 我们首先报告结果,而不使用表5中第一行块中建议的解码器,这表明在使用ResNet-101的情况下,当train output stride = eval output stride = 16时,使用exception作为网络backbone的性能提高了约2%。通过在推理过程中使用eval output stride = 8、多尺度输入和添加左右翻转输入,还可以得到进一步的改进。请注意,我们没有采用多网格方法[77,78,23],我们发现这并不能提高性能
Adding decoder: 如表5第二行块所示,当对所有不同的推理策略使用eval output stride = 16时,添加解码器带来了0.8%的改进。当使用eval输出stride = 8时,改进变得更少。
Using depthwise separable convolution: 由于深度可分离卷积的高效计算,我们进一步将其应用于ASPP和解码器模块。如表5第三行块所示,在获得类似mIOU性能的同时,Multiply-Adds 的计算复杂度显著降低了33% ~ 41%。
Pretraining on COCO:为了与其他最先进的模型进行比较,我们在MS-COCO数据集[79]上进一步预训练了我们提出的DeepLabv3+模型,这对所有不同的推理策略产生了大约2%的额外改进。
Pretraining on JFT: 与[23]类似,我们也采用了在ImageNet-1k[74]和JFT- 300m数据集[80,26,81]上进行预训练的exception模型,它带来了0.8%到1%的额外改进。
Test set results: 由于基准评估中没有考虑计算复杂度,因此我们选择最佳性能模型,并使用输出stride = 8和冻结批归一化参数对其进行训练。最后,我们的“DeepLabv3+”在没有和使用JFT数据集预训练的情况下分别实现了87.8%和89.0%的性能。
Qualitative results: 我们在图6中提供了最佳模型的可视化结果。如图所示,我们的模型可以很好地分割对象,而无需任何后处理。
Failure mode:如图6最后一行所示,我们的模型难以分割(a)沙发与椅子,(b)严重遮挡的物体,(c)罕见视图的物体。
4.4 Improvement along Object Boundaries
使用trimap实验来评估所提出的解码器模块在目标边界附近的分割准确性: 具体来说,作者在验证集上对“void”标签进行形态膨胀处理,这些标签通常出现在目标边界附近。然后,他们计算了那些位于膨胀带(称为trimap)内的像素的平均IOU。正如图5(a)所示,使用所提出的解码器对ResNet-101和Xception网络骨干进行分割,相较于朴素的双线性上采样,性能有所提升。当膨胀带较窄时,改进效果更为显著。在图中显示的最小trimap宽度下,我们观察到ResNet-101和Xception分别有4.8%和5.4%的mIOU改进。此外,作者还在图5(b)中可视化了采用所提出的解码器的效果。
4.5 Experimental Results on Cityscapes
在本节中,我们在cityscape数据集[3]上对DeepLabv3+进行了实验,这是一个包含5000张图像(分别为训练集、验证集和测试集分别为2975张、500张和1525张)和大约20000张粗标注图像的高质量像素级注释的大型数据集。
如表7 (a)所示,在DeepLabv3[23]之上采用提出的Xception模型作为网络骨干网(记为X-65),其中包括ASPP模块和图像级特征[52],在验证集上达到77.33%的性能。加入所提出的解码器模块后,性能显著提高到78.79%(提高1.46%)。我们注意到,去除增强的图像级特征将性能提高到79.14%,这表明在DeepLab模型中,图像级特征在PASCAL VOC 2012数据集上更有效。我们还发现,在cityscape数据集上,在Xception[26]的入口流中增加更多的层是有效的,这与[31]在目标检测任务中所做的相同。在更深的网络骨干(表中表示为X-71)之上构建的最终模型在验证集上获得了79.55%的最佳性能。
在val set上找到最好的模型变体后,我们在粗标注上进一步微调模型,以便与其他最先进的模型竞争。如表7 (b)所示,我们提出的DeepLabv3+在测试集上的性能达到了82.1%,在cityscape上的性能达到了新的水平。
5 Conclusion
我们提出的模型\DeepLabv3+”采用编码器-解码器结构,其中DeepLabv3用于编码丰富的上下文信息,并采用简单而有效的解码器模块来恢复对象边界。还可以根据可用的计算资源,应用the atrous convolution以任意分辨率提取编码器特征。我们还探索了the Xception model and atrous separable convolution,使所提出的模型更快、更强。最后,我们的实验结果表明,所提出的模型在PASCAL VOC 2012和cityscape数据集上具有新的最先进的性能。
补充知识点:
10.卷积神经网络(基础篇)_哔哩哔哩_bilibili 刘老师的pytorch讲的很清晰
1、卷积
对图像块patch(3×H'×W')进行卷积,得到的输出通道尺寸都可能改变,C拔W拔H拔。
输入通道数和卷积核通道数相同,卷积核的个数等于输出通道数
padding:如果不改变图像尺寸,3*3卷积核,输入填充一圈0, 5*5的卷积核,输入填充两圈0。
代码实现这个卷积过程:B batch size (批量大小),C输入的通道数,O输出的通道数,I输入的通道处,conv_layer的两个1是指输入和输出的通道数。
2、1×1卷积
最主要作用,改变通道数量。m个卷积核就输出m个通道,可以得到任意的通道数。