我们提出了一种新型的实时语义分割网络,其中编码器既编码又生成解码器的参数(权重)。此外,为了允许最大的适应性,每个解码器块的权重在空间上是变化的。为此,我们设计了一种新型的超网络,由嵌套的U-Net、多头权重生成模块和由新型动态块卷积组成的主网络构成。为了实现高效的内存利用,权重生成模块会在解码器使用权重之前立即生成每个块的权重。尽管使用了不太传统的块,我们的架构实现了实时性能。在运行时间与准确性之间的权衡方面,我们超越了流行的语义分割基准测试PASCAL VOC 2012(验证集)和Cityscapes、CamVid上的最新结果。我们的代码可以在https://nirkin.com/hyperseg上获取。
语义分割在场景理解中发挥着至关重要的作用,无论是微观场景、望远镜中的场景、由移动车辆捕捉的场景还是通过AR设备查看的场景。新的移动应用程序不仅需要准确的语义分割,还需要实时处理,促进了实时语义分割的研究。这个领域已成为新架构和训练方法的主要测试平台,旨在提高准确性和速度。最近的工作增加了容量[5,6]和注意机制[20,45,49]来改善性能。当运行时间不是一个问题时,图像通常会被模型多次处理,然后累计结果。在本文中,我们尝试通过提供网络额外的适应性来改善性能。我们使用元学习技术添加这种适应性,通常称为动态网络或超网络[13]。这些网络用于从文本分析[13,50]到3D建模[26,42]等各种任务,但很少用于生成类似于图像的地图。原因是超网络,正如以前的方法所建议的那样,不能完全捕捉高分辨率图像的信号。
语义分割地图是一个特别有趣的案例。它们是通过一个从粗到细的金字塔生成的,过程中的每个级别都可以从适应性中受益,因为这些效果会从一个块积累到下一个块。此外,由于图像的每个部分都可能包含不同的对象,因此最好在局部进行适应性处理。因此,我们提供了一种新的编码器-解码器方法,其中编码器的骨干基于该领域的最新进展。编码信号使用内部U-Net映射到动态网络权重,而解码器由具有空间变化权重的动态块组成。所提出的架构在这项任务的最广泛使用的基准测试中实现了最先进的准确性与运行时间之间的权衡:PASCAL VOC 2012 [11],CityScapes [8]和CamVid [2]。对于CityScapes和CamVid,最先进的准确性结果是在实时条件下获得的。尽管使用了一种采用动态权重局部连接层的非传统架构,但我们的方法非常高效(请参见图1,了解我们的运行时间/准确性与其他方法之间的权衡)。总之,我们的贡献是:•一种新的超网络架构,它在U-Net内使用了一个U-Net。•新颖的动态块卷积,其权重在每个输入和每个空间位置上都会变化。•在该领域的主要基准测试中实现了最先进的准确性与运行时间之间的权衡。
图1.在Cityscapes [8]测试集上的运行时间/准确度权衡比较。我们的模型(橙色)在相对于所有先前的实时方法而言实现了最佳的准确度和最佳的运行时间与准确度权衡。
超网络。超网络[13]是生成其他网络(通常称为主要网络)权重值的网络。超网络作为建模工具非常有用,例如作为图像到图像翻译[9,24]、3D场景表示[26,42]的隐式函数,以及在神经架构搜索(NAS)[55]和持续学习[48]期间避免计算和数据密集的训练周期。然而,据我们所知,超网络从未被提议用于语义分割,而我们在此处提出使用它们。局部连接层。局部连接层中的连接性遵循与传统卷积层类似但不共享权重的空间模式。这种层在深度学习的早期发挥了重要作用,主要是由于计算原因[10,36,47]。局部连接层在人脸识别的背景下被引入作为增强精度的组件,这是因为需要以不同的方式对面部的每个部分进行建模[43]。然而,随后的人脸识别方法往往使用传统的卷积,例如[41]。共享部分权重,其中卷积在图像块内共享,被提议用于分析面部动作[58]。据我们所知,我们是第一个在超网络或语义分割的背景下提出局部连接层的人,或者更一般地说,在图像到图像映射中。
语义分割。早期的语义分割方法使用特征工程,通常依赖于数据驱动的方法[15,16,17,46]。据我们所知,Long等人[28]是第一批展示卷积神经网络(CNN)进行语义分割的端到端训练的人。他们的完全卷积网络(FCN)基于分类网络骨干输出可变分辨率的密集像素预测。他们在早期和最终层之间加入了跳跃连接,以组合粗细信息。随后的方法添加了基于条件随机场(CRF)的后处理步骤,以进一步细化分割掩模[3,4,59]。Nirkin等人通过利用视频中的运动来克服有限的、稀少的分割标签[31]。U-Net [38]使用编码器-解码器对,将编码器的最后特征映射与解码器中相应的上采样特征映射在每个步骤中进行连接。一些人提出用扩张卷积,即空洞卷积,代替步幅卷积[4,54]。这种方法通过扩大logits的感受野产生了更详细的分割结果,但也大大增加了计算成本。另一种扩大感受野的方法称为空间金字塔池化(SPP)[18,57],其中来自不同步骤的特征进行平均池化并连接在一起,之后通过后续卷积层融合信息。随后的工作将扩张卷积与SPP(ASPP)相结合,取得了更高的准确性,但计算成本更高[4,5,6]。为了进一步提高准确性,一些人提出了多次在多尺度和水平翻转版本的输入图像上应用网络的推断策略,并使用平均池化将结果组合[5,6]。近期,Tao等人[45]利用注意力更好地结合推理策略预测,考虑到尺度。最后,其他人提出了轴向注意力,分别沿高度和宽度轴执行注意力,以更好地建模长距离依赖关系[20,49]。
实时分割。某些方法的目标是在保持实时性能的同时,在准确性和计算量之间取得最佳平衡。实时方法通常采用由高效骨干组成的编码器和相对较小的解码器的架构。一种廉价的语义分割的早期例子是SegNet [1],它使用具有跳跃连接和转置卷积的编码器-解码器架构进行上采样。ENet [34]提出了一种基于ResNet瓶颈块的架构,实现了高帧率但牺牲了相当多的准确性。ICNet [56]利用从图像金字塔中提取的融合特征,报告了比以前方法更好的准确性。GUNet [29]通过从多尺度输入图像中提取的编码器中的融合特征映射进行引导的上采样。SwiftNet [32]建议使用SPP和1×1卷积的编码器-解码器来减少每个跳跃连接之前的维数。随后的方法受益于高效网络架构[25,51]的进展,例如深度可分离卷积[7,21]和反向残差块[40],我们在我们的工作中也使用了它们。BiSeNet [52]提出了一条较粗的下采样路径,与更细分辨率的主网络在上采样之前融合。BiSeNetV2 [51]通过提供更复杂的融合方式和来自中间层的额外预测头部来扩展BiSeNet,以提高训练效果。最后,TDNet [22]提出了一种用于视频语义分割的网络,通过在连续帧上循环分配子网络,利用时间连续性。图2.方法概述。(a)基于EfficientNet [44]骨干网络的超网络编码器,b,其最后一层被上下文头部h替换。(b)主网络解码器d和嵌入在每个元块中的权重映射网络w的层wi。解码器d的输入是输入图像和特征Fi与位置嵌入Pi连接而成。它的权重动态确定每个图像块。灰色箭头表示跳跃连接,×2块是双线性上采样,蓝色’+’符号是连接。(c)上下文头部被设计为嵌套的U-Net。更多细节请参见3节。
概述。我们提出的超网络编码器-解码器方法如图2和图3所示。与基于U-Net的方法[38]类似,我们在编码器和解码器之间使用跳跃连接。然而,我们的网络采用编码器和随后的块,我们将其称为上下文头和权重映射器,这是超网络设计的精神。因此,跳跃连接将不同的编码器级别与作为我们解码器的分层主网络的级别连接起来。此外,我们的解码器权重在每个步长级别的每个补丁之间变化。我们提出的模型涉及三个子网络:骨干网络b(在图2(a)中以蓝色显示),上下文头h(图2(a)中的橙色框,也在图2(c)中详细说明)和作为解码器d(图2(b))的主网络。此外,解码器由多个元块组成,如图3(a)所示。每个元块i = 0 ... n包括一个额外的权重映射网络组件wi,如图2(b)中的橙色框所示。
信息流。在推理过程中,编码器、上下文头和权重映射器的权重θb、θh和θw是固定的,并在训练过程中学习,而解码器元块mi的权重θmi则在推理时动态预测。编码器的骨干网络b将输入图像I∈R3×H×W映射到不同分辨率的特征图Fi∈RCi×2Hi×W2i(i∈[1,5]),其中H和W分别是图像高度和宽度的像素数。上下文头h :RCn×2Hn×2Wn→RCn×2Hn×2Wn将b的最后一个特征图映射到一个信号φ。然后,该信号被馈送到w :RCn×2Hn×2Wn→R(Pi|θmi|)×2Hn×2Wn,用于生成主网络d的元块的权重。注意,这些权重在空间位置之间变化。我们定义一个固定的位置编码P H,W∈R2×H×W,使得在每个位置(i,j),P H,W i,j=P H,W i,j =(2iH−H−1+1,2jW−W−1+1),其中i∈[0,H),j∈[0,W)。最后,给定输入图像和特征图F1,...,Fn,它们相应分辨率的位置编码P0,...,Pn和权重θd,解码器d输出语义分割任务中的分割预测S∈RC×H×W,其中C是类的数量。因此,我们的整个网络由以下一组方程式定义:其中,每个网络的权重在分隔符号后明确指定。
图3。(a)基于反向残差块[40]的元块。每个紫色层表示动态的基于patch的卷积,其权重由橙色层wi生成。(b)动态基于patch的卷积操作的可视化。每种颜色表示与特定patch相对应的权重,‘*’表示卷积操作。更多细节请参见第3.3节。
超网络的第一个组件是骨干网络b(图2(a)中的蓝色框),它基于EfficientNet [44]模型系列。第4节提供了有关该网络的详细信息。在我们的工作中,骨干架构的头部被替换为上下文头h。骨干网络在每个步长中输出特征图Fi。为了减小解码器的大小,我们使用额外的1×1卷积将每个Fi的通道数量减少ri倍。ri的确切值在补充材料的第B节中详细说明。骨干网络的最后一个特征图大小为H2n×2Hn×2Wn。该特征图中的每个像素编码输入图像中的一个patch。这些patch之间有很少的重叠,有限的感受野可能导致跨越多个patch的大对象的结果不佳。因此,上下文头h结合了来自多个patch的信息。我们在图2(c)中详细说明了h的结构,h使用了Xuebin等人提出的嵌套U-Net结构[35]。在我们的实现中,我们使用步长为2的2×2卷积,输出输入通道数的一半。这样的卷积比需要为h处理的低分辨率特征图填充的3×3卷积计算成本更低,而这种填充可以显著增加空间分辨率。最低的特征图被平均池化以提取最高级别的上下文,然后使用最近邻插值上采样到前一个分辨率。最后,在h的上采样路径中,我们在每个级别上将特征图与其相应的上采样特征图连接,然后跟随一个全连接层。
虽然权重映射网络w = [w0,...,wn]是我们超网络的关键部分,但在我们的分层网络中,将w分成几个部分并将这些部分附加到主网络块上(图2(b))更有效。因此,权重映射网络的层w0,...,wn被嵌入到d的每个元块中,而不是直接跟随h。这样做的原理是,从上下文到权重的映射会导致内存大量扩展,这可能成为性能瓶颈。相反,权重是在使用前生成的,最大程度地减少内存消耗并更好地利用内存缓存。每个wi都是具有通道组gwi的1×1卷积,并在下面进行详细说明。
如图2(b)所示,解码器d由n +1个元块m0,...,mn组成,如图3(a)所示。块m0对应于输入图像,而每个块mi(i = 1..n)对应于编码器的特征图Fi。每个块后面跟随双线性上采样,并与下一个更精细分辨率的特征图进行拼接。通过使用超网络,解码器d的权重取决于输入图像,与传统方案不同,d的权重不仅取决于输入图像还因为图像中不同区域而变化。通过这种方法,我们可以有效地将网络茎的低级信息与底层的高级信息相结合。这使得我们的方法能够使用更小的解码器实现更高的精度,从而实现实时性能。超网络可以看作是一种注意力机制,类似于一些基于注意力的方法[20,33],d受益于知道像素的位置信息。因此,我们使用附加的位置编码来增强输入图像和编码器的特征图。
m0,...,mn的设计基于MobileNetV2的反向残差块[40]:一个点卷积pw1,接着是深度卷积dw,再接着是没有激活函数的另一个点卷积pw2。我们的网络不是使用常规卷积,而是使用下一节描述的动态补丁卷积。对于非常小的补丁-在我们的大型模型中小于4×4,在我们的较小模型中小于8×8-元块仅包括pw1。每个mi所需的总元参数θmi∈R(|θpw1|+|θdw|+|θpw1|)×2Hn ×2Wn是mi中所有动态卷积的组合元参数:θmi =θpw1∪θdw∪θpw2。给定信号φi∈RCφi×2Hn ×2Wn,权重θmi由嵌入在mi中的wi层生成。在推理过程中,mi的批量归一化层与wi合并;更多细节请参见补充材料中的Sec.E。在每个mi中使用完整信号既计算效率低,也需要训练的参数数量较多,因为φi直接映射到大量权重。因此,我们将φ的通道分成Cφ0,...,Cφn的部分,它们的大小与每个元块所需的权重数量相对应。通道的划分使用以下过程定义:
通道的划分(·)的详细信息请参见补充材料中的Sec.A。这个例程确保每个部分与其分配的信号通道成比例,可以被w中分组卷积的max(gw0,...,gwn)整除,并分配最少数量的通道。组数gwi是一个重要的超参数,因为它控制了投入产生mi权重的计算和可训练参数的数量。从以下方程可以看出,增加gwi会直接按比例减少计算和可训练参数的数量:
在补充材料中,我们研究了不同gwi值的影响(Sec.C),并报告了我们测试中使用的gwi确切值(Sec.B)。
表1.每个基准测试的训练超参数。表2.在PASCAL VOC 2012,val.set [11]上的结果。'⋆'表示我们使用开源代码计算的指标(在补充材料中的Sec.D中列出)。
我们在图3(b)中说明了动态补丁卷积(DPWConv)的操作,以及mi中的层pw1,dw和pw2。给定一个输入特征映射X ∈RCin×H×W和一个权重网格θ∈RCout×CGin ×Kh×Kw×Nh×Nw,其中Cin和Cout是输入和输出的通道数,G是通道组数,H和W是输入的高度和宽度,Kh和Kw是核的高度和宽度,Nh和Nw是沿高度和宽度轴的补丁数量,我们定义输出补丁如下:Oi,j =Xi,j ∗θi,j,其中∗是卷积操作,i ∈[0,Nh),j ∈[0,Nw)是补丁索引,Xi,j是X中网格位置(i,j)的补丁,θi,j是权重网格中对应的权重。我们首先对整个输入特征映射X进行填充,然后在每个补丁Xi,j上,我们从相邻的补丁中包装相邻的像素。
表3.在Cityscapes [8]上的实时语义分割结果。'-'表示该指标未报告。'⋆'表示我们使用可用的开源代码计算了特定指标(在补充材料中的Sec.D中列出)。1使用水平镜像和多尺度报告。图4.在Cityscapes [8]上,GFLOP与准确性的权衡。我们的模型(橙色)实现了比以前方法更好的权衡。
我们在三个流行的基准测试中进行实验:PASCAL VOC 2012 [11],Cityscapes [8]和CamVid [2]。我们使用以下标准措施来报告结果:类平均交集联合(mIoU),每秒帧数(FPS),十亿浮点运算(GFLOP)和可训练参数数量。FPS使用已建立的协议[32]进行测量:我们记录从数据上传到GPU到预测下载的经过时间的FPS。我们的模型使用PyTorch实现,没有进行特定的优化。最后,我们使用批处理大小1来模拟实时推理。与大多数先前的方法类似,我们在NVIDIA GeForce GTX 1080TI GPU(i7-5820k CPU和32GB DDR4 RAM)上测量FPS。GFLOP和可训练参数使用pytorch-OpCounter库[60]进行计算,这也是其他人使用的[32]。我们分别使用大,中和小型模型HyperSeg-L,HyperSeg-M和HyperSeg-S进行实验。这些模型共享相同的模板,并根据其参数数量反映其大小进行命名。HyperSeg-M和HyperSeg-S都省略了d的最细分辨率级别;我们使用双线性插值从其前一个级别上采样预测到输入分辨率。在HyperSeg-S中,与最大模型相比,mi中层的通道减半。我们为每个实验单独提供模型骨干和分辨率详细信息。有关其他超参数值,请参见补充材料中的Sec.B。
我们使用在ImageNet [39]上预训练的权重来初始化θb的网络,并使用从正态分布中抽样的随机值来初始化θh和θw。我们使用Adam优化器[23]进行训练,其中β1= 0.5,β2= 0.999。与其他人[5,6]一样,我们使用多项式学习率调度,通过因子(1-ti)p将初始学习率lr0在i次迭代后衰减,其中t是总迭代次数,p是一个标量常数。每个数据集的确切值列在Tab.1中。对于Cityscapes和Camvid基准测试,我们采用以下图像增强技术:随机缩放比例范围为[0.5,2.0],裁剪和水平翻转,概率为0.5。对于PASCAL VOC,我们使用类似的水平翻转,并采用[0.25,1.0]的随机缩放比例范围。我们进一步随机旋转图像,在-30°至30°范围内抖动颜色以操纵亮度、对比度、饱和度和色调,并最终将图像填充到512×512的分辨率。我们在两个Volta V100 32GB GPU上训练所有模型。
PASCAL VOC 2012 [11]包含不同分辨率的图像,最高为500×500,代表21个类别(包括背景类别)。该数据集最初包含1,464个训练图像、1,449个验证图像和1,456个测试图像。后来,其他人将其训练集扩展到了总共10,582个图像[14]。这个数据集通常不用于评估实时分割方法,但是低分辨率的图像可以进行快速实验。因此,我们选择了这个基准测试来进行我们的初始测试。表2报告了我们的模型和现有工作的准确性、FLOPs和可训练参数数量。我们选择了在PASCAL VOC验证集上报告结果的方法,不使用推理策略(例如,不使用水平镜像和多尺度测试)。除了将推理时间增加几倍之外,这些技术还可能模糊底层方法的贡献。从结果可以看出,与以前的工作相比,我们的方法在更低的GFLOPs和更少的可训练参数的情况下实现了最佳的mIoU。
图5.Cityscapes [8]验证集图像的定性结果。从左到右:输入,我们的结果和地面真值。前四行展示了我们的模型在不同场景下的表现。最后两行提供了样本失败。请注意,在评估中忽略了反光汽车引擎盖区域。
Cityscapes [8]数据集提供了5k张城市街景图片,标记了19个类别。图片分辨率为2048×1024像素,通常在训练时进行降采样或裁剪。这些图片被分为2,975张训练图片、500张验证图片和1,525张测试图片。表3比较了使用EfficientNet-B1骨干网络[44]在不同分辨率下的我们方法的变体和以前的方法。我们只展示了被认为快速的以及报告测试集mIoU的方法:运行速度为10 FPS或更快。我们的模型在验证集和测试集上都取得了最佳准确性,同时在准确性和运行时性能之间取得了最佳权衡。这种权衡比较可以在图1中最好地看到。重要的是,由于DPWConv的未优化操作,我们的模型会产生较大的运行时间惩罚。图4展示了我们方法的GFLOPs和准确性相对于以前方法的权衡比较。显然,我们的方法取得了比其他方法更好的权衡。虽然GFLOPs并不直接与FPS相关,但它确实表明了潜在的运行时性能,一旦我们的所有函数都被优化。
图5展示了我们HyperSeg-S模型在Cityscapes验证集图片上的定性结果。由于将图像分成块的处理方式,我们的模型产生了高质量的分割结果,没有明显的伪影。图5的最后两行展示了一些失败的样例。在倒数第二行中,我们的模型将一辆卡车误认为是一辆汽车。在最后一行中,我们的模型未能正确分割杆子,并错误地将像素标记为墙壁或人行道。
CamVid数据集提供了701张类似于Cityscapes的驾驶场景图片,标记了11个类别[2]。所有图片共享相同的分辨率,为960×720。这些图片被分为367张训练图片、101张验证图片和233张测试图片。我们使用所有基线模型都使用的训练协议,在训练和验证集上进行训练。表4比较了我们的方法与之前在ImageNet上预训练的实时方法。为了进行公平比较,我们排除了使用除ImageNet和CamVid之外的其他数据的方法。我们测试了两种变体的模型,都使用EfficientNet-B1骨干网络[44]。HyperSeg-S在768×576的分辨率下运行,HyperSeg-L在1024×768的分辨率下运行。这两个模型都以比之前的SotA更高的mIoU取得了SotA,其中HyperSeg-S的运行速度为38 FPS。即使没有使用外部数据,我们的方法也优于使用Cityscapes作为额外训练数据的方法报告的SotA结果:使用Cityscapes获得最佳结果的方法是BiSeNetV2-L[51],该方法将其性能从未使用额外数据训练时的73.2%mIoU提高到使用该数据的78.5%。但这仍然比我们的方法略低:16.6FPS下的79.1%。事实上,他们的结果几乎与我们的38FPS网络相同。我们的方法的两个变体都没有使用任何额外的训练数据。
消融研究。我们在CamVid数据集[2]上进行了消融研究,以展示我们的元学习方法的贡献以及使用不同骨干网络的影响。结果在表4中报告。在前六个实验中,对于每个模型配置,我们将EfficientNet-B1骨干网络替换为不同的骨干网络:ResNet18、PSPNet18和PSPNet50。我们明确选择了之前方法使用过的骨干网络。在我们的实现中,一个全连接层将最后一个特征图在输入上下文头之前转换为1280通道(ResNet18和PSPNet18骨干网络)或2048通道(PSPNet50骨干网络)。在PSPNet骨干网络中,我们没有在任何卷积中使用扩张。在标记为“w/o DPWConv”的实验中,我们将所有动态分块卷积替换为常规卷积,有效地消除了我们方法的所有元学习元素。结果清楚地表明,EfficientNet-B1骨干网络优于ResNet18、PSPNet18和PSPNet50骨干网络,但我们的方法仍然优于使用这些骨干网络的以前的方法。最后,从我们的方法中删除元学习会导致HyperSeg-S配置的精度下降1.1%,HyperSeg-L配置的精度降低0.7%,只有轻微的FPS提高,表明元学习是我们方法的一个重要组成部分。
表4.在CamVid [2]上进行实时语义分割的结果(测试集;没有外部数据)。顶部:以前的方法。中部:消融研究。前六行是我们模型的变体,具有不同的骨干网络。与基准相比,我们提高了准确性并增加了运行时间。在“w/o DPWConv”变体中,我们将动态逐层卷积替换为常规卷积。这些变体的准确性低于我们的完整方法。底部:我们的完整方法。⋆由我们使用开源计算。
我们提出将自编码器与超网络结合起来,用于语义分割任务。在我们的方案中,超网络由三个网络组成:语义分割编码器的骨干网络b,一个内部U-Net形式的上下文头h和多个权重映射头wi。解码器是一个多块解码器,其中每个块di实现局部连接层。结果是一种新型的U-Net,能够动态地、局部地适应输入,因此有潜力更好地定制分割过程以适应输入图像。正如我们的实验所显示的,我们的方法在这个非常具有竞争力的领域中,通过多个基准测试,优于SotA方法。