QVL:重新审视语义分割的多尺度特征融合
https://arxiv.org/abs/2203.12683
发表于2022年3月
Revisiting Multi-Scale Feature Fusion for Semantic Segmentation
人们普遍认为,高的内部分辨率加上昂贵的运算(如扩张卷积)对于精确的语义分割是必要的,这会导致速度慢和内存使用量大。在本文中,我们质疑这个信念,并证明既不需要高内部分辨率,也不需要扩张卷积。我们的直觉是,尽管分割是一项密集的逐像素预测任务,但每个像素的语义通常取决于附近的邻居和远处的上下文;因此,一个更强大的多尺度特征融合网络起着至关重要的作用。根据这一直觉,我们重新审视了传统的多尺度特征空间(通常上限为P5),并将其扩展到更丰富的空间,直至P9,其中最小的特征仅为输入大小的1/512,因此具有非常大的感受野。为了处理如此丰富的特征空间,我们利用最近的BiFPN来融合多尺度特征。基于这些见解,我们开发了一个简化的分割模型,名为ESeg,它既没有高的内部分辨率,也没有昂贵的扩张卷积。也许令人惊讶的是,与现有技术相比,我们的简单方法可以在多个数据集上以更快的速度实现更好的精度。在实时设置中,ESeg-Lite-S以189 FPS的速度在城市景观[12]上实现76.0%的mIoU,优于FasterSeg[9](以170 FPS的速度实现73.1%的mIoU)。我们的ESeg-Lite-L以79 FPS的速度运行,实现了80.1%的mIoU,在很大程度上缩小了实时和高性能分割模型之间的差距。
1.引言
语义分割是一项重要的计算机视觉任务,在机器人技术和自动驾驶领域有着广泛的应用。语义分割的主要挑战在于每像素密集预测,我们需要预测每个像素的语义类。最先进的(SOTA)分割模型[6,8,35,44,50]严重依赖高内部分辨率进行密集预测,人们普遍认为,这样高的内部分辨率对于学习精确的每像素语义是必要的,这导致运行速度慢和运行时内存使用量大。例如,DeepLabV3+[8]需要超过1000B的浮点运算(与使用<100B浮点运算的常见实时模型相比),这使得应用于实时场景的成本高得令人望而却步。同时,高分辨率的特征图使获得大的感受野变得困难。为了解决这个问题,人们做了很多尝试,例如用扩张卷积[6,8,44,50]代替常规卷积,或者添加额外的注意模块[14,45,46]来扩大感受野。虽然这些方法提高了准确性,但扩张卷积和注意模块通常比常规卷积慢得多。
最近的实时语义分割模型倾向于以不同的方式学习高分辨率表示,以满足延迟约束,要么手工构建更好的网络[20,43],要么使用神经架构搜索[9,21]。这些方法倾向于提高精度,但仍需保持较高的内部分辨率。
在本文中,我们对高内部分辨率的信念提出质疑,并证明高内部分辨率和扩张卷积都不是精确分割所必需的。我们的直觉是,尽管分割是一项密集的逐像素预测任务,但每个像素的语义通常取决于附近的邻居和远处的上下文;因此,传统的多尺度特征空间很容易成为瓶颈,需要一个更强大的多分辨率特征融合网络。根据这一直觉,我们重新审视了传统的简单特征融合空间(通常从传统分类主干提取到P5),并将其扩展到更丰富的空间,直到P9,其中最小的内部分辨率仅为输入图像大小的1/512,因此可以具有非常大的感受野。
基于更丰富的多分辨率特征空间,我们提出了一种简化的分割模型ESeg,它既没有高的内部分辨率,也没有昂贵的扩张卷积。为了使模型尽可能简单,我们采用了朴素的编码器-解码器网络结构,其中编码器是现成的EfficientNet[36],解码器是一个稍加修改的BiFPN[38]。我们观察到,由于P1到P9的多分辨率特征空间比传统方法具有更丰富的信息,因此,一个强大的双向特征金字塔对于有效融合这些特征非常重要。与传统的自顶向下FPN不同,BiFPN允许自顶向下和自底向上的特征融合,在丰富的多尺度特征空间中实现更有效的特征融合。
我们在CityScapes[12]和ADE20K[52]这两个广泛使用的语义分割基准上评估了我们的ESeg。令人惊讶的是,尽管ESeg要简单得多,但它在不同的数据集上始终与现有技术的性能相匹配。通过扩大网络规模,我们的ESeg模型在使用比竞争方法少2×-9×参数和4×-50×FLOPs的情况下,获得了更好的精度。在实时设置中,我们的ESeg LiteS以189 FPS的速度在CityScapes验证集上实现76.0%的mIoU,以更快的速度比FasterSeg现有技术高出2.9%的mIoU。我们的ESeg-Lite-L以79 FPS的速度实现了80.1%的城市景观mIoU,首次弥合了实时和高级分割模型之间的差距。
除了标准的CityScapes/ADE20K数据集,我们的模型在大规模数据集上也表现良好。通过对更大的Mapillay远景进行预训练[27],并对城市景观粗略标记数据进行自训练,我们的ESeg-L在城市景观验证集上实现了84.8%的mIoU,同时比现有技术小得多,速度也快得多。这些结果强调了多尺度特征在语义分割中的重要性,证明了一个简单的网络也能够实现最先进的性能。
2 重新审视多尺度特征融合
语义分割模型需要预测单个像素的语义类别。由于这种密集的预测需求,通常需要保持高分辨率的特征并对其执行像素级分类。然而,高分辨率特性带来了两个关键挑战:首先,它们通常需要昂贵的计算和大内存,相对于分辨率而言,复杂度为;其次,常规卷积很难获得大感受野,因此捕获长距离相关性需要非常深的网络、昂贵的扩张卷积或空间注意机制,这使得它们更慢、更难训练。
为了缓解高分辨率特征的问题,以前的许多工作都采用了多尺度特征融合。其核心思想是利用多个具有不同分辨率的特征来捕获短距离和长距离模式。具体而言,一种常见的做法是采用ImageNet pretrained主干网(如ResNet[17])提取特征比例高达P5,然后应用FPN[23]以自顶向下的方式融合这些特征,如图2(a)所示。然而,最近的研究[5,35]表明,这种简单的特征融合不如使用高分辨率特征:例如,DeepLab倾向于将高分辨率特征与扩张卷积结合起来,如图2(b)所示,但扩张卷积通常是硬件不友好且缓慢的。类似地,HRNet[35]维护高分辨率特征的多个并行分支,如图2(c)所示。这两种方法都会导致较高的计算成本和内存使用率。
在这里,我们回顾了多尺度特征图,发现特征级别不足是该方法的关键限制− P5多尺度特征空间。P2− P5最初是为ImageNet主干网设计的,其中图像大小为224×224,但分割的分辨率要高得多:在城市景观中,每个图像的分辨率为1024×2048。如此大的输入图像需要更大的感受野,因此需要更高级别的特征图。表1比较了不同功能级别的性能。当我们简单地将功能级别增加到P2时− P9(增加四个额外的P6级− P9),它显著地将性能提高了1.8mIoU,参数和FLOPs的开销可以忽略不计。值得注意的是,高级特征(P6− P9)已经做了下采样,不再需要使用硬件不友好的扩张卷积来增加感受野。这导致了我们的第一个观察:
洞察1:P1到P9的较大功能空间比P1到P5限制的常规空间有效得多。
考虑到P2−P9这样大的功能空间,一个自然的问题是如何有效地融合它们。以前的许多作品只是简单地应用自顶向下的FPN[23]来融合这些功能。最近,PANet[25]建议添加一条额外的自底向上的融合路径,EfficientSet[38]建议以双向方式融合特征以进行目标检测。本文研究了不同特征融合方法的性能。如表2所示,当特征空间较大时(P2− P9),更强大的BiFPN比简单的FPN性能要好得多。直观地说,更大的特征空间需要更多的层来传播信息,需要更多的双向流来有效地融合信息。基于这些研究,我们有第二个观察结果:
洞察2:强大的特征融合网络对于大型多尺度特征空间至关重要。
3.ESeg
基于我们的两个关键见解,我们现在开发了一个简单的基于编码器-解码器的分割模型,旨在实现更好的性能,而不依赖于扩张卷积或专用的高分辨率功能。
3.1. 网络设计
图3显示了ESeg网络的概览。它有一个标准的编码器-解码器结构,其中编码器从原始图像中提取多个级别的特征,解码器执行广泛的多尺度特征融合。在解码后,我们对所有特征进行上采样和加权求和,并预测每像素密集的语义类。我们将在以下内容中描述每个组件并强调我们的设计选择:
编码器: 我们使用EfficientNet[36]作为主干来提取前五级特征{P1、P2、P3、P4、P5},其中表示空间大小为的第级特征。请注意,我们的设计是通用的,将来可以应用于任何可能更好的卷积分类主干。这里我们使用EfficientNet作为默认主干来说明我们的想法。基于我们的洞察力1,在P5之后,我们又增加了四个额外的特征P6−P9,通过3×3 stride-2池化层对特征进行下采样。为了简单起见,我们对P6−P9使用和P5相同的特征维度(same hidden size)。值得注意的是,我们只在编码器中使用常规卷积和池化层,而不使用任何硬件不友好的扩张卷积。
解码器:解码器负责组合多尺度特征。基于我们的insight 2,我们使用强大的BiFPN[38]重复应用自顶向下和自下而上的双向特征融合。BiFPN输出P2-P9相同形状的特征图,但它们中的每一个都已经与来自其他尺度的特征信息融合。
预测:为了生成最终的预测,我们将所有解码器特征向上采样到一个固定的分辨率,并进行加权和,将它们组合成一个统一的高分辨率特征映射。具体来说,考虑到P2−P9特征映射,我们引入八个额外的可学习权重,其中是输入特征的标量变量。然后,使用基于softmax的加权和融合来组合这些特征:
(1)
其中是一个非负变量,初始化为1.0,并在反向传播期间更新,而upsample是一个简单的双线性插值操作,以匹配分辨率。直观地说,代表了特征映射的重要性:如果Pi对输出更重要,那么在训练期间会变大。训练完成后,我们可以去掉softmax函数,进行正常加权和融合,以更快地进行推理。
将预测头应用于最终输出特征以产生最终像素级类预测。值得注意的是,由于原始输入图像的大小通常非常大(例如,1024×2048),因此以输入图像的分辨率直接执行预测是昂贵的。相反,我们将预测头应用于最小特征级别P2(原始大小的四分之一),然后双线性地将预测采样到原始输入图像分辨率,以计算每像素损失。
3.2. 网络和数据扩展
我们的目标是设计一系列具有不同精度和延迟权衡的分割模型;然而,为每个延迟约束手工制作新模型既困难又昂贵。在这里,我们采用了一种不同的方法,类似于之前的复合缩放[36,38]。
对于编码器主干,我们使用与原始EfficientNet相同的缩放因子,这样我们就可以重用其ImageNet检查点。对于BiFPN解码器,我们通过增加深度(重复次数)和宽度(输入/输出通道数)来线性放大它们。表3显示了宽度和深度缩放配置,其中最小的ESeg-Lite-S型号有17BFLOPs,最大的ESeg-L型号有342BFLOPs。通过扩展ESeg,我们证明了它可以在不同的网络大小约束下始终优于以前的工作。
由于分割数据集通常很小,另一个缩放维度是数据大小。在我们的实验中,我们将表明,通过对额外数据进行预训练和自训练,我们也能够进一步提高模型的准确性。如果一个模型是用额外的数据训练的,我们会明确指出来。
3.3. GPU推理优化
由于许多分割模型在使用TensorRT的GPU上运行,我们在使用TensorRT运行时进一步优化了实时ESeg-Lite模型。首先,我们用融合的MBConv[16]替换所有MBConv块[34,36],因为TensorRT中不支持深度卷积,无法充分利用GPU并行性。其次,我们还取消了对GPU不友好的操作,如挤压和激励[19],并用常规的ReLU替换SiLU(Swish-1)[13,32]激活。最后,我们进一步将基准级特征从P2增加到P3,以避免在大空间维度上进行昂贵的计算,并相应地将预测头移动到P3。
4. 实验
我们在流行的城市景观[12]和ADE20K[52]数据集上评估了ESeg,并将结果与之前最先进的分割模型进行了比较。
4.1. 设置
我们的模型在8个TPU核上进行训练,批量为16。我们使用SGD作为我们的优化器,动量为0.9。在之前的工作[35]之后,我们在训练中应用了随机水平翻转和随机缩放抖动[0.5,2.0]。我们使用余弦学习速率衰减,这产生了与之前多项式学习速率衰减类似的性能,但具有较少的可调超参数。为了与[3,10,14,35,43,45]进行公平比较,我们在训练期间使用了相同的在线硬示例挖掘(OHEM)策略。我们还发现,应用指数移动平均衰减[36,38]有助于稳定训练,而不影响最终表现。
我们报告了在单模型单尺度设置下,不使用测试数据增强的情况下,我们在mIoU(平均交并比)和pixAcc(像素精度)方面的主要结果。我们注意到,多尺度推理可能会进一步提高度量,但在实践中也会慢得多。
城市景观: CityScapes数据集[12]包含5000幅具有精细注释的高分辨率图像,主要用于城市街道场景的理解。将精细标注的图像分为2975/500/1525幅,分别用于训练、验证和测试。30个类别中有19个用于评估。按照[35,50]中的训练协议,我们将图像从1024×2048随机裁剪到512×1024进行训练。我们还采用了0.08的初始学习率和0.00005的权重衰减。我们的模型训练了90k步(484个epochs),这与流行方法[35](484个epochs)相同。
ADE20K: ADE20K数据集[52]是一个场景解析基准,其中20210张图像用于训练,2000张图像用于验证。模型将在150个语义类别上用像素精度和mIoU进行评估。在之前的工作[45,48]之后,我们使用相同的图像大小520×520进行训练和推理。我们训练了300个epoch的模型,初始学习率为0.08,权重衰减为0.00005。
4.2. 大规模分割结果
我们使用表3中的扩展配置将ESeg扩展到更大的网络规模。表4和表5比较了它们与其他最先进的城市景观和ADE20K分割模型的性能。总的来说,我们的ESeg始终优于以前的型号,通常是大幅度的。例如,ESeg-S比最新的Auto-DeepLab-S[24]实现了更高的精度,同时使用的参数减少了1.5倍,FLOPs减少了9.7倍。在城市景观方面,ESeg-L实现了82.6%的单尺度mIOU,比HRNetV2-W48的现有技术高出1.5%的mIOU,FLOPs数少得多。这些结果表明,ESeg是可扩展的,可以在各种资源限制下实现显著的性能。在ADE20K上,ESeg-L的性能也比以前的多尺度最先进的CNN模型高出1.3%,而最近的基于Transformer的模型在计算量大得多的情况下取得了更好的性能。
城市景观测试集性能。
以前的工作通常在CityScapes数据集的train+验证集上重新训练或微调其模型,以提高其测试集性能。然而,这种方法引入了额外的训练成本和更多可调的超参数,这是不可扩张的,导致比较困难。同时,一些排行榜提交引入了额外的技巧,如多尺度推理和额外的后处理。在这里,我们认为最佳实践是在最简单的单尺度推理协议下,直接评估CityScapes测试集上经过训练的检查点。我们的ESEG-L表现出很强的泛化能力,通过在不带铃铛和哨子的城市景观排行榜上获得显著的84.1% mIoU,这与顶级排行榜的成绩持平。
4.3. 实时分割结果
我们在实时推理设置下评估ESeg。由于我们的实时模型非常小,我们按照惯例使用较大的裁剪尺寸进行训练[18]。图6显示了我们的ESEGLite和其他实时分割模型之间的性能比较。我们使用TensorRT-7.2.1.6、CUDA 11.0和CUDNN 8.0在特斯拉V100-SXM2 16GB GPU上测量我们的推理速度。为了与最强的现有技术FasterSeg[9]进行公平比较,我们使用其官方开源代码,并在我们的环境下重新运行推理基准。我们使用的批量大小为1,输入分辨率为1024×2048。如本表所示,我们的ESeg Lite模型的性能大大优于SOTA。特别是,我们的ESeg-Lite-S实现了最高的189 FPS速度,mIoU比FasterSeg高2.9%。此外,我们的ESeg-Lite-L在城市景观上实现了80.1%的mIoU,在很大程度上弥补了实时模型和以前的全尺寸模型之间的精度差距(对比见表4)。
4.4. 使用额外数据进行预训练和自训练
鉴于分割数据集的训练集通常有限,我们研究了两种数据规模缩放:使用大规模地图远景数据集进行预训练和使用城市景观未标记数据进行自训练。由于数据集 policy,我们不在ADE20K数据集上进行数据大小缩放实验[52]。
预训练。 我们遵循[10,45]中的常见设置,在更大的城市场景理解数据集Mapillary Vistas[27]上预训练模型。我们在长边将图像调整为2048像素,以处理图像大小的变化,并在训练期间将图像随机裁剪为1024×1024。这些模型在Mapillary Vistas数据集上预训练了500个epoch。我们采用稍微不同的训练设置,从地图远景预训练检查站微调模型。特别是,我们只训练了200个epoch的模型,初始学习率为0.01。
自训练。 我们对城市景观的粗略注释数据进行自训练。注:我们将此集合视为未标记的数据,不使用粗略的带注释的标签。为了从教师那里生成伪标签,我们使用多尺度推理设置来生成具有[0.5,1.0,2.0]尺度和水平翻转的伪标签。我们只保留置信度高于0.5的预测,否则我们将其设置为忽略面积。我们使用与[54]中类似的自训练设置。我们使用批量大小为128,初始学习率为0.16来训练1000个阶段的模型。一个batch中的一半图像将从真值精细标注标签中采样,另一半将从生成的伪标签中采样。我们的数据扩展方法包括预训练和自训练。
表7显示了预训练和自训练的结果。毫不奇怪,预训练和自训练都可以提高准确性。一般来说,对于大多数模型来说,自训练通常比预训练提供略高的收益,而大型模型的准确度收益往往更显著,这表明大型模型有更多的网络容量从额外数据中受益。有趣的是,我们的结果表明,通过预训练和自训练,大型模型可以获得更高的相对精度。也许令人惊讶的是,我们观察到预训练和自训练是互补的,将它们结合起来可以进一步大幅度提高准确性。例如,ESeg-M在预训练时可以获得0.9%的准确率,在自训练时可以获得1.0%的准确率,但将它们结合起来可以提供2.1%的准确率,显著优于单独的自训练或预训练。值得注意的是,通过结合预训练和自训练,我们最大的ESeg-L在城市景观验证集上实现了最好的84.8%mIoU。
5.消融研究
在本节中,我们将在CityScapes数据集上删除编码器和解码器的设计选择。
强大的主干网对于编码器-解码器体系结构至关重要,因为它需要将高分辨率图像编码为低分辨率特征。表8显示了不同主干的性能。与广泛使用的ResNet-50[17]相比,EfficientNet-B1[36]以更少的FLOPs实现了1.2%的mIoU,这表明良好的主干网络在编码器-解码器体系结构中的关键作用。
解码器也扮演着重要的角色,因为它需要恢复高分辨率的特征。表8比较了之前广泛使用的DeepLabV3+[8]和BiFPN(在ESeg中采用)。结合更高级别的特征,BiFPN在准确性和效率方面都比ASPP和DeepLabV3+解码器的组合实现了更好的性能。我们的烧蚀研究还表明,在DeepLab模型中使用高的内部分辨率的重要性,这个计算成本是很高的。相比之下,ESeg提供了更优雅、更高效的替代方案。
6.相关工作
高效的网络架构: 以前的许多工作旨在通过更好的手工网络[20,43]或网络修剪[21]来提高分割模型的效率。最近,神经结构搜索(neural architecture search,NAS)[36,37,55]已成为提高模型精度和效率的热门工具。对于语义分割,DPC[2]在手工构建的主干之后搜索多尺度密集预测单元;Auto DeepLab[24]联合搜索小区级和网络级架构以进行细分。最近的作品[9,49]也使用了类似的分层搜索空间,以实时速度或更高的准确性为目标。
编码器-解码器结构: 早期的工作包括UNet[33]和SegNet[1]采用了对称的编码器-解码器结构来有效地提取空间上下文。这种结构将首先使用编码器网络从输入图像中提取高层语义信息,然后添加额外的自顶向下和横向连接,以融合解码器部分的特征。语义分割中使用的大多数特征编码器来自为图像分类开发的体系结构[11,17,41,47,48],而其中一些编码器的设计目的是为密集预测任务保留高分辨率特征[22,35,39]。还提出了不同的解码器模块来恢复高分辨率表示[1、23、28、29、31、33、42]。我们的工作主要基于简单的编码器-解码器结构。
多尺度特征: 多尺度特征在目标检测和分割等密集预测任务中得到了广泛的应用。虽然高分辨率特征可以通过较小的感受野保留更多的空间信息,但低分辨率特征可以通过较大的感受野来捕获更多的上下文信息。这里的一个关键挑战是如何有效地结合这些多尺度特征。以前的许多目标检测工作使用特征金字塔网络(FPN)[23]及其变体[15,25]来执行多尺度特征融合。在语义分割方面,ASPP[5]被广泛用于获取多尺度特征[5,7,8,50]。其他研究也试图利用注意力来挖掘多尺度特征[14,45]。在我们的工作中,我们利用更强大的bidirectional feature network[38]来广泛融合多尺度功能。
扩张卷积: 扩张卷积广泛应用于语义分割架构[4–6,8,44,50]中,以扩大感受野。PSPNet[50]在主干上使用了一个金字塔池模块,并进行了扩展。DeepLab[5]提出了一种扩张卷积的空间金字塔池来提取多尺度特征以进行密集预测。DeepLabV3+[8]通过使用额外的解码器模块来优化表示,对其进行了进一步改进。不幸的是,扩张卷积对硬件不友好,在现实场景中通常运行缓慢。与通常的做法相反,我们提出的模型不使用任何扩张卷积。
7.结论
在本文中,我们提出了一系列简单的ESeg模型,既不使用高内部分辨率,也不使用扩张卷积。相反,它们增加了更丰富的多尺度特征空间,并使用更强大的双向特征网络来捕获局部和全局语义信息。我们证明了基于ESeg的简单编码器-解码器在各种数据集上的性能优于现有技术。特别是,我们的小型模型ESeg Lite显著缩小了实时和服务器大小模型之间的差距,我们的ESeg在CityScapes和ADE20K上都实现了最先进的性能,参数和FLOPs数少得多。通过额外的预训练和自训练,我们的ESeg-L进一步将城市景观的准确率提高到84.8%,同时保持单模型和单比例。我们的研究表明,尽管密集预测很困难,但可以实现高精度和更快的速度。我们希望我们的工作能够激发更多关于如何设计具有更好性能和效率的细分模型的探索。
限制:
在本文中,我们打算保持我们的网络简单,但可以进一步优化网络,例如,通过搜索新的主干网或功能网络。我们将把这个留给未来的工作。