三十章:Segmenter:Transformer for Semantic Segmentation ——分割器:用于语义分割的Transformer

news2024/11/27 22:31:05

0.摘要

        图像分割在单个图像块的级别上经常存在歧义,并需要上下文信息来达到标签一致性。在本文中,我们介绍了一种用于语义分割的Transformer模型- Segmenter。与基于卷积的方法相比,我们的方法允许在第一层和整个网络中对全局上下文进行建模。我们构建在最近的Vision Transformer(ViT)基础上,并将其扩展到语义分割。为此,我们依赖于与图像块对应的输出嵌入,并使用逐点线性解码器或掩码变换解码器从这些嵌入中获取类标签。我们利用预先训练的用于图像分类的模型,并展示我们可以在适度规模的用于语义分割的数据集上对它们进行微调。线性解码器已经能够获得优秀的结果,但通过生成类掩码的掩码变换器可以进一步提高性能。我们进行了大量的剖析研究,以展示不同参数的影响,特别是对于大型模型和小块尺寸,性能更好。Segmenter在语义分割方面取得了出色的结果。它在ADE20K和Pascal Context数据集上超越了现有技术,并在Cityscapes数据集上具有竞争力。

1.引言

        语义分割是一个具有广泛应用的计算机视觉问题,包括自动驾驶、机器人技术、增强现实、图像编辑、医学成像等[27,28,45]。语义分割的目标是将每个图像像素分配给对应的对象类别标签,并为目标任务提供高级图像表示,例如在虚拟试衣应用中检测人物和衣物边界[29]。尽管近年来在图像分割方面已经做出了很多努力并取得了很大进展[10,22,31,37,48,65,66],但由于类内变异丰富、上下文变异以及由遮挡和低图像分辨率引起的歧义,图像分割仍然是一个具有挑战性的问题。​​​​​​​

        最近的语义分割方法通常依赖于卷积编码-解码结构,其中编码器生成低分辨率的图像特征,解码器将特征上采样为具有每个像素类别分数的分割图。最先进的方法采用了全卷积网络(FCN)[44],在具有挑战性的分割基准测试中取得了令人印象深刻的结果[10,23,57,58,60,64,66]。这些方法依赖于可学习的堆叠卷积,可以捕捉语义丰富的信息,在计算机视觉领域取得了巨大成功。然而,卷积滤波器的局部性质限制了对图像全局信息的访问。与此同时,这些信息在分割中尤为重要,因为局部补丁的标记往往取决于全局图像上下文。为了解决这个问题,DeepLab方法[8,9,10]引入了扩张卷积和空间金字塔池化的特征聚合。这可以扩大卷积网络的感受野并获得多尺度特征。在自然语言处理(NLP)的最新进展[50]的基础上,一些分割方法探索了基于通道或空间的替代聚合方案[22,23,61]和基于点的注意力[66],以更好地捕捉上下文信息。然而,这些方法仍然依赖于卷积主干网络,并且因此在局部交互方面存在偏见。对于纠正这种偏见,大量使用专门的层[8,10,22,58]暗示了卷积架构在分割中的局限性。

        为了克服这些限制,我们将语义分割问题定义为一个序列到序列的问题,并使用Transformer架构[50]在模型的每个阶段利用上下文信息。根据设计,Transformer可以捕捉场景中元素之间的全局交互,并且没有内置的归纳先验,如图1所示。然而,全局交互的建模成本是二次的,这使得这种方法在应用于原始图像像素[11]时变得过于昂贵。在最近的关于视觉Transformer(ViT)的工作[19,49]的基础上,我们将图像分割成补丁,并将线性补丁嵌入视为Transformer编码器的输入标记。编码器产生的标记的上下文化序列然后由Transformer解码器上采样为每个像素的类别分数。对于解码,我们考虑将补丁嵌入简单地线性映射到类别分数,或者采用基于Transformer的解码方案,其中可学习的类别嵌入与补丁标记一起处理以生成类别掩码。我们对Transformer在分割中进行了广泛的研究,包括模型正则化、模型大小、输入补丁大小及其在准确性和性能之间的权衡。我们的Segmenter方法在保持简单、灵活和快速的同时取得了出色的结果。特别是,在使用小输入补丁大小的大型模型时,最佳模型在具有挑战性的ADE20K [68]数据集上达到了平均IoU为53.63%的水平,大大超过了所有先前最先进的卷积方法5.3%的差距。我们方法的这种改进部分源于模型每个阶段捕捉的全局上下文,如图1所示。

        总结起来,我们的工作提供了以下四个贡献:

        (i) 我们提出了一种基于Vision Transformer (ViT) [19]的新颖语义分割方法,不使用卷积,在设计上捕捉上下文信息,并且性能优于基于FCN的方法。

        (ii) 我们提供了一系列具有不同分辨率级别的模型,可以在精度和运行时间之间进行权衡,从具有最先进性能的模型到具有快速推理和良好性能的模型。

        (iii) 我们提出了一种基于Transformer的解码器,生成类别掩码,性能优于我们的线性基准线,并可以扩展到执行更一般的图像分割任务。

        (iv) 我们证明了我们的方法在ADE20K [68]和Pascal Context [38]数据集上取得了最先进的结果,并且在Cityscapes [14]上具有竞争力。

图1:我们的语义分割方法完全基于Transformer。它在模型的每个层级利用全局图像上下文。图中显示了来自第一个Segmenter层的注意力图,针对三个8×8的补丁,突出显示了早期将补丁分组成语义上有意义的类别。原始图像(左上角)上覆盖了我们方法生成的分割掩码。

2.相关工作

语义分割。基于全卷积网络(FCN)结合编码器-解码器架构的方法已成为语义分割的主流方法。最初的方法[21,36,39,40]依赖于一系列连续的卷积,然后进行空间池化来进行密集预测。连续的方法[1,4,34,41,43]在解码过程中上采样高级特征图并将其与低级特征图相结合,以捕捉全局信息并恢复清晰的目标边界。为了扩大卷积在第一层的感受野,一些方法[8,33,59]提出了扩张卷积。为了在更高层捕获全局信息,最近的工作[9,10,65]使用空间金字塔池化来捕获多尺度的上下文信息。将这些改进与扩张空间金字塔池化相结合,Deeplabv3+ [10]提出了一个简单而有效的编码器-解码器FCN架构最近的工作[22,23,57,58,61,66]在编码器特征图的顶部通过注意力机制取代了粗糙的池化,以更好地捕捉远距离的依赖关系。

        尽管最近的分割方法主要集中在改进FCN,但卷积所施加的局部操作的限制可能意味着对全局图像上下文的处理效率低下和分割结果不够优化。因此,我们提出了一种纯Transformer架构,它在编码和解码阶段的每个层级都捕捉全局上下文。

视觉中的Transformer。Transformer [50]现在在许多自然语言处理(NLP)任务中处于领先地位。这种模型依赖于自注意机制,并捕捉句子中标记(单词)之间的远距离依赖关系。此外,Transformer非常适合并行化,便于在大型数据集上进行训练。Transformer在NLP领域的成功激发了计算机视觉中的几种方法,将CNN与自注意形式相结合,用于解决目标检测[7]、语义分割[53]、泛光分割[51]、视频处理[54]和少样本分类[18]等问题。

        最近,Vision Transformer(ViT)[19]引入了一种无卷积的Transformer架构,用于图像分类,其中输入图像被处理为补丁标记的序列。虽然ViT需要在非常大的数据集上进行训练,但DeiT [49]提出了一种基于标记的蒸馏策略,并使用CNN作为教师,在ImageNet-1k [16]数据集上训练了一个竞争力的视觉Transformer。同时进行的工作将这项工作扩展到视频分类[2,6]和语义分割[35,67]。更详细地说,SETR [67]使用ViT作为骨干网络和标准的CNN解码器。Swin Transformer [35]使用ViT的变体,由局部窗口组成,在层之间进行移动,并使用Upper Net作为金字塔FCN解码器。

        在这里,我们提出了Segmenter,一种用于语义图像分割的Transformer编码器-解码器架构。我们的方法依赖于ViT骨干网络,并引入了受DETR [7]启发的掩码解码器。我们的架构不使用卷积,通过设计捕捉全局图像上下文,并在标准图像分割基准测试中取得了竞争性的性能。

图2:我们方法Segmenter的概述。

(左侧)编码器:图像补丁被投影到一个嵌入序列中,然后通过一个Transformer进行编码。

(右侧)解码器:一个掩码Transformer以编码器的输出和类别嵌入作为输入,预测分割掩码。

详细信息请参阅文本。

3.我们的方法:分割器

        Segmenter是基于完全基于Transformer的编码器-解码器架构,将补丁嵌入序列映射到像素级别的类别注释。模型的概述如图2所示。补丁序列通过在第3.1节中描述的Transformer编码器进行编码,并通过在第3.2节中描述的逐点线性映射或掩码Transformer进行解码。我们的模型使用逐像素交叉熵损失进行端到端训练。在推理时,在上采样之后应用argmax,以获得每个像素的单个类别。

3.1.编码器

        一幅图像 x ∈ ℝH×W×C 被分割成一个补丁序列 x = [x₁;...;xₙ] ∈ ℝⁿ×P²×C,其中 (P,P) 是补丁的尺寸,n = H*W/P² 是补丁的数量,C 是通道的数量。每个补丁被展平为一维向量,并通过线性投影转换为补丁嵌入,得到补丁嵌入的序列 x₀ = [E⋅x₁;...;E⋅xₙ] ∈ ℝⁿ×D,其中 E ∈ ℝᴰ×(P²C)。为了捕捉位置信息,可学习的位置嵌入 pos = [pos₁;...;posₙ] ∈ ℝⁿ×D 被添加到补丁序列中,得到最终的输入令牌序列 z₀ = x₀ + pos。一个由 L 层组成的Transformer [50]编码器被应用于令牌序列 z₀,生成一个上下文化编码序列 zₗ ∈ ℝⁿ×D。一个Transformer层由一个多头自注意力(MSA)块和一个由两个全连接层组成的逐点MLP块组成,在每个块之前应用层归一化(LN),并在每个块之后添加残差连接。

其中 i ∈ {1,...,L}。自注意机制由三个逐点线性层组成,将令牌映射到中间表示,得到查询 Q ∈ ℝⁿ×d,键 K ∈ ℝⁿ×d 和值 V ∈ ℝⁿ×d。自注意力计算如下:

 Transformer编码器将带有位置编码的输入序列 z₀ = [z₀₁;...;z₀ₙ] 映射到上下文化编码序列 zₗ = [zₗ₁;...;zₗₙ],其中包含了丰富的语义信息,供解码器使用。在接下来的部分中,我们介绍解码器。

3.2.解码器

        补丁编码序列 zₗ ∈ ℝⁿ×D 被解码为分割图 s ∈ ℝH×W×K,其中 K 是类别的数量。解码器学习将来自编码器的补丁级编码映射到补丁级类别得分。然后,这些补丁级类别得分通过双线性插值上采样到像素级得分。接下来,我们将介绍线性解码器作为基准,并介绍我们的方法——掩码Transformer,参见图2。

线性解码器。将逐点线性层应用于补丁编码 zₗ ∈ ℝⁿ×D,得到补丁级类别的logits zlin ∈ ℝⁿ×K。然后,将序列重塑为2D特征图 slin ∈ ℝH/P×W/P×K,并通过双线性插值上采样到原始图像大小 s ∈ ℝH×W×K。然后,在类别维度上应用softmax函数,得到最终的分割图。

掩码Transformer。对于基于Transformer的解码器,我们引入了一组可学习的类别嵌入 cls = [cls₁;...;clsₖ] ∈ ℝᴿᴷ×ᴰ,其中 K 是类别的数量。每个类别嵌入都是随机初始化的,并分配给单个语义类别。它将用于生成类别掩码。类别嵌入 cls 与补丁编码 zₗ 一起由解码器共同处理,如图2所示。解码器是由 M 层组成的Transformer编码器。我们的掩码Transformer通过计算解码器输出的 L₂-归一化的补丁嵌入 z₀ₘ ∈ ℝⁿ×ᴰ 与类别嵌入 c ∈ ℝᴿᴷ×ᴰ 之间的标量积来生成 K 个掩码。类别掩码集合的计算如下:

        其中 Masks(z₀ₘ; c) ∈ ℝⁿ×ᴷ 是一组补丁序列。然后,每个掩码序列被重塑为2D掩码,形成 smask ∈ ℝH/P×W/P×K,并通过双线性插值上采样到原始图像大小,得到特征图 s ∈ ℝH×W×K。然后,在类别维度上应用softmax函数,然后进行层归一化,得到像素级类别得分,形成最终的分割图。掩码序列之间是相互软排斥的,即对于所有 (i;j) ∈ H×W,有 Σₖ si;j;k = 1。

        我们的掩码Transformer受到DETRO [7]、Max DeepLab [52]和SOLO-v2 [55]的启发,它们引入了物体嵌入 [7] 来生成实例掩码 [52,55]。然而,与我们的方法不同,Max DeepLab使用了基于CNN和Transformer的混合方法,并将像素和类别嵌入分为两个流,因为计算限制。我们使用纯Transformer架构,并利用补丁级编码,提出了一种简单的方法,在解码阶段同时处理补丁和类别嵌入。这种方法允许产生动态的滤波器,随着输入的变化而变化。虽然本文主要讨论语义分割,但我们的掩码Transformer也可以直接适应全景分割任务,只需将类别嵌入替换为物体嵌入即可

 表1:Transformer变体的详细信息。

4.实验结果

4.1.数据集和度量指标

ADE20K [68]。这个数据集包含具有细粒度标签的具有挑战性的场景,是最具挑战性的语义分割数据集之一。训练集包含20,210张图像,具有150个语义类别。验证集和测试集分别包含2,000张和3,352张图像。

Pascal Context [38]。训练集包含4,996张图像,具有59个语义类别和一个背景类别。验证集包含5,104张图像。

Cityscapes [14]。该数据集包含来自50个不同城市的5,000张图像,具有19个语义类别。训练集中有2,975张图像,验证集中有500张图像,测试集中有1,525张图像。

指标。我们报告所有类别的交并比(mIoU)的平均值。

4.2.实现细节

Transformer模型。对于编码器,我们基于视觉Transformer ViT [19]构建,并考虑表1中描述的"Tiny"、"Small"、"Base"和"Large"模型。变化的参数是Transformer编码器的层数和令牌大小。多头自注意力(MSA)块的头大小固定为64,头的数量是令牌大小除以头大小,而跟随MSA的MLP的隐藏大小是令牌大小的四倍。我们还使用DeiT [49],这是视觉Transformer的一个变种。我们考虑了以不同分辨率表示图像的模型,并使用输入补丁大小为8×8、16×16和32×32。以下是使用缩写来描述模型变体和补丁大小的示例,例如Seg B/16表示具有16×16输入补丁大小的"Base"变体。基于DeiT的模型以†表示,例如Seg-B†/16。

ImageNet预训练。我们的Segmenter模型是在ImageNet上进行预训练的,ViT是在ImageNet-21k上进行预训练的,并使用强大的数据增强和正则化[47],而其变种DeiT是在ImageNet-1k上进行预训练的。原始的ViT模型[19]仅使用随机裁剪进行训练,而[47]提出的训练过程则使用了dropout [46]和随机深度[30]的组合作为正则化,以及Mixup [62]和RandAugment [15]作为数据增强。这显著提高了ImageNet的top-1准确率,即ViT-B/16的准确率提高了+2%。我们使用来自[19]和[47]的模型对ViT-B/16在ADE20K上进行微调,并观察到显著的差异,分别为45.69%和48.06%的mIoU。接下来,所有的Segmenter模型将使用来自[47]的改进ViT模型进行初始化。我们使用图像分类库timm [56]和Google research [20]提供的公开可用模型。这两个模型在图像分辨率为224的情况下进行了预训练,并在分辨率为384的ImageNet-1k上进行了微调,只有ViT-B/8是在分辨率为224的情况下进行微调的。我们保持补丁大小固定,并根据数据集在较高分辨率上微调模型进行语义分割任务。由于补丁大小固定,增加分辨率会导致更长的令牌序列。根据[19]的方法,我们使用双线性插值将预训练的位置嵌入根据其在图像中的原始位置匹配到微调序列的长度。解码器在第3.2节中描述,并使用截断正态分布[25]中的随机权重进行初始化。

数据增强。在训练过程中,我们遵循语义分割库MM Segmentation [13]中的标准流程,包括均值减法、将图像随机调整大小到0.5到2.0的比例范围内,以及随机左右翻转。我们对大图像进行随机裁剪,对小图像进行填充,使其大小固定为ADE20K的512×512、Pascal-Context的480×480和Cityscapes的768×768。在ADE20K上,我们使用640×640的分辨率训练我们最大的模型Seg-L-Mask/16,以匹配Swin Transformer [35]所使用的分辨率。

优化。为了对预训练模型进行语义分割任务的微调,我们使用标准的像素级交叉熵损失,没有进行权重重新平衡。我们使用随机梯度下降(SGD)[42]作为优化器,设置基础学习率γ0,并将权重衰减设置为0。根据DeepLab的开创性工作[33],我们采用了“poly”学习率衰减γ=γ0(1-NNtotal iter)0:9,其中Niter和Ntotal分别表示当前迭代次数和总迭代次数。对于ADE20K,我们将基础学习率γ0设置为10^-3,批量大小为8,进行160K次迭代训练。对于Pascal Context,我们将γ0设置为10^-3,批量大小为16,进行80K次迭代训练。对于Cityscapes,我们将γ0设置为10^-2,批量大小为8,进行80K次迭代训练。学习率调度类似于DeepLabv3+ [10],学习率除以10,只有在Cityscapes中我们使用因子1。

推理。为了处理推理过程中不同大小的图像,我们使用一个滑动窗口,分辨率与训练时的大小相匹配。对于多尺度推理,按照标准做法[10],我们使用缩放因子为(0.5, 0.75, 1.0, 1.25, 1.5, 1.75)的图像的缩放版本,并进行左右翻转,然后将结果进行平均。

图3:模型补丁大小对分割图的影响。

表2:使用Seg-S/16在ADE20K验证集上比较不同正则化方案的平均IoU。

表3:在ADE20K验证集上,使用不同的背骨和输入补丁大小对不同分割模型的性能进行比较。

4.3.消融研究

        在本节中,我们在ADE20K验证集上对我们的方法的不同变体进行了消融实验。我们研究了模型正则化、模型大小、补丁大小、模型性能、训练数据集大小等方面,并将Segmenter与卷积方法进行了比较,并评估了不同的解码器。除非另有说明,我们使用基线线性解码器,并使用单尺度推理报告结果。

正则化。首先,我们比较了两种形式的正则化,即dropout[46]和随机深度[30],并表明随机深度始终改善了用于分割的Transformer训练。CNN模型依赖于批归一化[32],它也起到了正则化的作用。相反,Transformer通常由层归一化[3]和在训练过程中作为正则化器的dropout组成[17,19]。dropout随机地忽略作为输入的标记,并且在前向传递过程中,随机深度会随机地跳过模型中的一个可学习块。我们在基于ViT-S/16骨干网络的Seg-S/16上比较了正则化方法。表2显示,将随机深度设置为0.1,随机丢弃10%的层,可以持续改善性能,与没有正则化时相比,将dropout设置为0时,性能提高了0.36%。dropout无论是单独使用还是与随机深度结合使用,都会持续降低性能。这与[49]的观察结果一致,后者观察到dropout对图像分类有负面影响。从现在开始,所有的模型都将使用随机深度设置为0.1,并且不使用dropout进行训练。

Transformer大小。我们现在通过改变层数和标记大小来研究Transformer大小对性能的影响,补丁大小固定为16。表3显示,性能与骨干容量良好地呈比例关系。当将标记维度从Seg-S/16加倍到Seg-B/16时,性能提高了2.69%。当将层数从Seg-B/16加倍到Seg-L/16时,性能提高了2.65%。最后,我们最大的Segmenter模型Seg-L/16在ADE20K验证数据集上使用简单的解码方案实现了强大的50.71%的平均IoU,使用单尺度推理。在FCN模型中广泛使用的特定任务层的缺失表明,基于Transformer的方法提供了更具表达能力的模型,非常适用于语义分割。

补丁大小。使用补丁序列表示图像提供了一种简单的方法,通过改变补丁大小来权衡速度和准确性。增加补丁大小会导致对图像的表示更粗糙,但同时也会得到一个更小的序列,处理速度更快。表3的第三部分和第四部分报告了ViT骨干和不同补丁大小的性能。我们观察到补丁大小是语义分割性能的一个关键因素,它与模型大小的重要性相似。事实上,从补丁大小32到16,我们观察到Seg-B的性能提高了5%。对于Seg-B,我们还报告了补丁大小为8的结果,平均IoU为49.54%,将ViT-B/8到ViT-L/16的差距减小到1.17%,同时需要更少的参数。这一趋势表明,减小补丁大小是一种稳定的改进来源,不会引入任何参数,但需要计算更长的序列上的注意力,增加计算时间和内存消耗。如果计算上可行,ViT-L/8可能是性能最好的模型。进一步提高计算和内存效率,处理更大序列的较小补丁的Transformer是一个有前景的方向。

        为了进一步研究补丁大小的影响,我们在图3中展示了使用逐渐减小的补丁大小生成的Segmenter模型的分割图。我们观察到,对于补丁大小为32,模型学习到了一个具有全局意义的分割,但产生了边界模糊的结果,例如左侧的两个人被预测为一个连通区域。减小补丁大小会显著提高边界的清晰度,可以通过观察人物轮廓来得到验证。背景中细小的路灯杆等难以分割的实例只能以8的分辨率捕捉到。在表4中,我们报告了平均IoU与对象大小的关系,并将Segmenter与具有ResNeSt骨干的DeepLabv3+进行了比较。为了复现DeepLabv3+的结果,我们使用了MMSegmentation库[13]中的模型。我们观察到,Seg-B/8相对于Seg-B/16的改进主要来自小型和中型实例,分别提高了1.27%和1.74%。此外,我们观察到,在Segmenter相对于DeepLab的改进中,最大的改进来自大型实例,其中Seg-L-Mask/16显示出6.39%的改进。

解码器变体。在本节中,我们比较了不同的解码器变体。我们评估了在第3.2节中介绍的掩码Transformer,并将其与线性基准进行比较。掩码Transformer有2层,与编码器具有相同的标记和隐藏大小。表4报告了平均IoU性能。掩码Transformer相对于线性基准提供了一致的改进。对于Seg-B†/16,获得了最显著的1.6%的增益,对于Seg-B-Mask/32,我们获得了1.1%的提高,对于Seg-L/16,增益为0.6%。在表4中,我们还根据对象大小来考察不同模型的增益。我们观察到在小型和大型对象上都有增益,显示出使用动态滤波器的好处。大多数情况下,对于大型对象,增益更为显著,例如Seg-B/32的增益为1.4%,Seg-B†/16的增益为2.1%,Seg-L/16的增益为1.7%。掩码Transformer学习到的类别嵌入具有语义上的意义,即相似的类别彼此相邻,更多细节请参见图8。

Transformer与FCN的比较。表4和表6将我们的方法与FCN模型和DeepLabv3+[10](使用ResNeSt骨干[63])进行了比较,DeepLabv3+是最好的全卷积方法之一。我们的Transformer方法在全局场景理解方面相对于这种最先进的卷积方法提供了显著的改进,突出了Transformer捕捉全局场景理解的能力。Segmenter在大型实例上始终优于DeepLab,Seg-L/16的改进超过4%,Seg-L-Mask/16的改进超过6%。然而,在小型和中型实例上,DeepLab的性能与Seg-B/16相似,而且两者的参数数量也相似。Seg-B/8和Seg-L/16在小型和中型实例上表现最好,但计算成本较高。

性能。在图4中,我们根据每秒处理的图像数量和mIoU指标将我们的模型与几种最先进的方法进行了比较,并显示了Segmenter相对于基于FCN的模型(绿色曲线)的明显优势。我们还展示了我们的方法与最近的基于Transformer的方法相比具有良好的性能,我们最大的模型Seg-L-Mask/16与Swin-L相当,并且优于SETR-MLA。我们观察到,Seg/16模型在准确性与计算时间之间表现最佳,其中Seg-B-Mask/16提供了良好的折衷方案。Seg-B-Mask/16在推理速度相似的情况下优于基于FCN的方法,与SETR-MLA相匹配,速度是其两倍,并且需要更少的参数,同时在推理速度和性能方面优于Swin-B。Seg/32模型在上一节中讨论了学习更粗糙的分割图,并且能够以每秒处理400张图像的速度进行快速推理,比ResNet-50快四倍,同时提供类似的性能。为了计算每秒处理的图像数量,我们使用了V100 GPU,将图像分辨率固定为512,并为了公平比较,针对每个模型最大化内存允许的批处理大小。

数据集大小。Vision Transformers强调了大规模数据集对于在图像分类任务中获得良好性能的重要性。在语义分割数据集的规模下,我们分析了在ADE20k数据集上使用不断增大的数据集大小进行训练时,Seg-S/16的性能如表5所示。我们观察到当训练集大小低于8k张图像时,性能显著下降。这表明,即使在微调过程中,使用足够数量的数据,Transformer的性能也是最佳的。 

图4:我们的方法与其他方法在ADE20K验证集上的每秒图像数量和平均IoU进行比较。Segmenter模型在性能和精度方面提供了有竞争力的折衷方案。

表4:在ADE20k验证集上根据物体大小进行评估(平均IoU)。将DeepLabv3+ResNeSt-101与具有线性或遮罩变换解码器的Segmenter模型进行比较。 

表5:使用不断增大的数据集大小训练的Seg-S/16模型在ADE20K验证集上的性能比较。 

表6:ADE20K验证集上的最新性能比较。

4.4.与当今主流方法的对比

        在本节中,我们将Segmenter与ADE20K、Pascal Context和Cityscapes数据集上的最新方法进行性能比较。ADE20K上,使用在ImageNet-1k上预训练的Seg-B†/16与最先进的FCN方法DeepLabv3+ResNeSt-200 [63]相匹配,如表6所示。添加我们的遮罩变换器,Seg-B†-Mask/16提高了2%,达到了50.08%的mIoU,优于所有的FCN方法。我们的最佳模型Seg-L-Mask/16达到了53.63%的mIoU,优于DeepLabv3+ResNeSt-200和基于Transformer的方法SETR [67]和Swin-L UperNet [35],差距为5.27%的mIoU。

Pascal Context表格7报告了在Pascal Context数据集上的性能。Seg-B†模型与FCN方法相比具有竞争力,而更大的Seg-L/16模型已经提供了最先进的性能,优于SETR-L。通过使用我们的遮罩变换器Seg-L-Mask/16,性能可以进一步提升,相比线性解码器提高了2.5%,达到了59.04%的mIoU。特别是,相比OCR HRNetV2-W48提高了2.8%,相比SETR-L MLA提高了3.2%。

Cityscapes表格8报告了Segmenter在Cityscapes数据集上的性能。对于Seg-L-Mask/16,我们使用了遮罩变换器的变体,解码器中只有一层,因为由于输入分辨率为768×768,两层无法适应内存。Seg-B和Seg-L方法在与其他最先进方法竞争时表现出色,Seg L-Mask/16的mIoU达到了81.3%。

定性结果。图5展示了Segmenter和DeepLabv3+(使用ResNeSt骨干)的定性比较,这些模型由MMSegmentation [13]库提供。我们可以观察到,DeepLabv3+往往生成更锐利的物体边界,而Segmenter在大型实例上提供更一致的标签,并更好地处理部分遮挡情况。

图5:Seg-L-Mask/16在DeepLabV3+ResNeSt-101上的定性比较。有关其他定性结果,请参见第C节。

表格7:在Pascal Context验证集上的最新方法比较。

表格8:在Cityscapes验证集上的最新方法比较。

5.总结

        我们感谢Andreas Steiner提供了在8×8补丁上训练的ViT-Base模型,以及Gauthier Izacard对讨论的有益贡献。本工作部分得到了GENCI-IDRIS的HPC资源支持(Grant 2020-AD011011163R1),路易威登ENS人工智能讲座和法国政府在Agence Nationale de la Recherche的管理下,作为“Investissements d’avenir”计划的一部分,参考编号ANR-19-P3IA-0001(PRAIRIE 3IA Institute)的支持。

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

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

相关文章

C语言 与 C++ 通讯录对比实现(附源码)

目录 1.通讯录的基本框架 C语言版 C版 2.增加联系人 C语言版 C版 3.删除联系人 C语言版 C版 4.查找与打印联系人 C语言版 C版 5.修改联系人 C语言版 C版 6.排序联系人 C语言版 C版 7.其他 8.总结 本文章将对C语言、C版本的通讯录进行对比实现。其中C版本引入大量C语言没有的特性…

macOS 源码编译 Percona XtraBackup

percona-xtrabackup-2.4.28.tar.gz安装依赖 ╰─➤ brew install cmake ╰─➤ cmake --version cmake version 3.27.0brew 安装 ╰─➤ brew update╰─➤ brew search xtrabackup > Formulae percona-xtrabackup╰─➤ brew install percona-xtrabackup╰─➤ xtr…

提升 API 可靠性的五种方法

API 在我们的数字世界中发挥着关键的作用,使各种不同的应用能够相互通信。然而,这些 API 的可靠性是保证依赖它们的应用程序功能正常、性能稳定的关键因素。本文,我们将探讨提高 API 可靠性的五种主要策略。 1.全面测试 要确保 API 的可靠性…

Kubernetes 入门

Kubernetes 入门 文章目录 Kubernetes 入门一、Kubernetes 环境部署1. 环境准备2. 测试部署 Nginx3. 在任意节点使用 kubectl 二、深入 pod1. 使用配置文件部署引用2. 探针 三、资源调度1.标签与选择器2.Deployment3.StatefulSet4.DaemonSet5.HPA6. Service7. Ingress8. 配置管…

【Unity】为角色添加动画

如何添加动画 在Animations的AnimationClips文件夹下自己为角色创建一个文件夹 为角色添加Animator 然后选中上面创建的文件夹,拖动到上图中的Controller中 点击最上方任务栏的Window>Animation>Animation,这会弹出一个Animation窗口 该窗口存在时…

算法leetcode|63. 不同路径 II(rust重拳出击)

文章目录 63. 不同路径 II:样例 1:样例 2:提示: 分析:题解:rust:go:c:python:java: 63. 不同路径 II: 一个机器人位于一个 m x n 网格…

SQL_SQL_常见面试问题

问题类型 :SQL优化 问题描述 :用户浏览日志(date, user_id, video_id), 统计 2020.03.29 观看不同视频个数的前5名 user_id。 思路 :主要注意预计算,避免直接去重 解决方案 : Hive_HQL_Hive…

【VB6|第20期】遍历Excel单元格的四种方法

日期:2023年7月19日 作者:Commas 签名:(ง •_•)ง 积跬步以致千里,积小流以成江海…… 注释:如果您觉得有所帮助,帮忙点个赞,也可以关注我,我们一起成长;如果有不对的地方&#xf…

架构实战微服务架构拆解

作业内容 拆分电商系统为微服务。 背景:假设你现在是一个创业公司的 CTO,开发团队大约 30 人左右,包括 5 个前端和 25 个后端,后端开发人员 全部都是 Java,现在你们准备从 0 开始做一个小程序电商业务,请你…

2023牛客暑期多校训练营1--K Subdivision(最短路树)

题目描述 You are given a graph with n vertices and m undirected edges of length 1. You can do the following operation on the graph for arbitrary times: Choose an edge (u,v) and replace it by two edges, (u,w) and (w,v), where w is a newly inserted vertex.…

【毕业季】九年程序猿有话说

活动地址:毕业季进击的技术er 九年程序猿有话说 勇敢前行,绽放青春,不负韶华!选择IT的原因职场新人如何选择工作工作中,如何快速成长工作中用技术做过的最有成就感的事?程序员三十五岁瓶颈你怎么看&#xf…

445. 两数相加 II

445. 两数相加 II 给你两个 非空 链表来代表两个非负整数。数字最高位位于链表开始位置。它们的每个节点只存储一位数字。将这两数相加会返回一个新的链表。 你可以假设除了数字 0 之外,这两个数字都不会以零开头。 示例1: 输入:l1 [7,2,4,…

RocketMQ教程-(4)-主题(Topic)

本文介绍 Apache RocketMQ 中主题(Topic)的定义、模型关系、内部属性、行为约束、版本兼容性及使用建议。 定义​ 主题是 Apache RocketMQ 中消息传输和存储的顶层容器,用于标识同一类业务逻辑的消息。 主题的作用主要如下: 定义…

断路器分、合闸线圈直流电阻试验和绝缘电阻试验

断路器分、合闸线圈直流电阻试验 试验目的 对于断路器来说, 分、 合闸线圈是用于控制断路器分合闸状态的重要控制元件。 断路器停电检修时, 可以通过测试分、 合闸线圈的直流电阻来判断其是否正常。 试验设备 万用表 厂家: 湖北众拓高试代销 试验接线 分、 合闸线圈…

Linux系统进程概念详解

这里写目录标题 冯诺依曼体系结构操作系统(Operator System)1.概念2.目的3.管理4.系统调用和库函数概念 进程1.概念2.描述进程-PCB3.查看进程4.通过系统调用获取进程标示符5.通过系统调用创建进程-fork 进程状态1.Linux内核源代码2.进程状态查看 进程优先级1.基本概念2.查看系统…

dxf怎么转换成PDF格式?转换方法其实很简单

PDF文件是一种可靠的文件格式,可以在各种操作系统和软件上打开和查看。而dxf是CAD文件的一种格式,打开它一般都是需要相关的操作软件才能打开,不是特别方便,将dxf文件转换成PDF格式就可以很好的解决这一问题,下面教大家…

python:基于反卷积算法的 GEDI 波形树高特征提取

作者:CSDN @ _养乐多_ 本文将介绍如何对 GEDI(Global Ecosystem Dynamics Investigation)激光雷达数据中所标识激光测高数据点的波形数据使用反卷积算法提取树高特征。 文章目录 一、波形数据提取二、代码详细解释三、完整代码一、波形数据提取 波形数据提取参考博客:《p…

Nodejs+vue+elementui手机电脑产品维修售后服务管理系统

需求分析,也称为软件需求分析、系统需求分析或需求分析工程,是指开发人员经过充分的研究和分析,准确地理解用户和项目在功能、性能、可靠性等方面的具体需求,并将用户的非正式需求表述转化为确定系统必须执行的需求的完整定义的过…

pytorch实现图像remap

def gpu_remap(numpy_img,map_tensor):# 准备图像数据img_tensor torch.from_numpy(numpy_img).contiguous().cuda(non_blockingTrue)img_tensor img_tensor.permute(2,0,1).unsqueeze(0).float()res torch.nn.functional.grid_sample(img_tensor,map_tensor,modebilinear,p…

c语言练手项目【编写天天酷跑游戏2.0】EASYX图形库的运用。代码开源,素材已打包

天天酷跑项目的开发 项目前言 项目是基于Windows,easyX图形库进行开发的, 开发环境:Visual Studio 2022 项目技术最低要求: 常量,变量,数组,循环,函数。 文章目录 天天酷跑项目的…