导读
我们提出了DySample,一个极其轻量级且高效的动态上采样器。在五个密集预测任务上超越了其他上采样器,包括语义分割、目标检测、实例分割、全景分割和单目深度估计。
摘要
我们提出了DySample,一个极其轻量级且高效的动态上采样器。虽然最近基于内核的动态上采样器如CARAFE、FADE和SAPA展现出了显著的性能提升,但它们引入了大量的计算负担,主要是由于耗时的动态卷积以及用于生成动态内核的额外子网络。此外,FADE和SAPA对高分辨率特征指导的需求在某种程度上限制了它们的应用场景。为了解决这些问题,我们绕过了动态卷积,并从点采样的角度重新定义了上采样过程,这种方法更节省资源并且可以利用PyTorch中的标准内置函数轻松实现。首先,我们展示了一个简单的初步设计,然后逐步演示如何增强其上采样能力,最终发展成为我们的新上采样器DySample。与之前的基于内核的动态上采样器相比,DySample不需要定制的CUDA包,并且参数数量、FLOPs(浮点运算次数)、GPU内存消耗以及延迟都大大减少。除了轻量级的特点外,DySample还在五个密集预测任务上超越了其他上采样器,包括语义分割、目标检测、实例分割、全景分割和单目深度估计。代码可在https://github.com/tiny-smart/dysample 获取。
1、介绍
特征上采样是在密集预测模型中逐渐恢复特征分辨率的关键组成部分。最常用的上采样方法是最近邻(Nearest Neighbor,简称NN)和双线性插值,它们遵循固定规则来插值上采样的值。为了提高灵活性,一些特定任务中引入了可学习的上采样器,例如实例分割中的反卷积和图像超分辨率中的像素重排(pixel shuffle)。然而,这些方法要么会遇到棋盘效应的问题,要么对高级任务不够友好。随着动态网络的普及,一些动态上采样器在几个任务上展现了巨大的潜力。CARAFE通过动态卷积生成内容感知的上采样内核来上采样特征。随后的工作FADE和SAPA提出结合高分辨率引导特征和低分辨率输入特征来生成动态内核,从而使上采样过程能够受到更高分辨率结构的引导。这些动态上采样器通常结构复杂,需要定制化的CUDA实现,并且比双线性插值消耗更多的推理时间。特别是对于FADE和SAPA而言,高分辨率引导特征的引入甚至增加了更多的计算负担并限制了它们的应用场景(必须具备高分辨率特征)。不同于早期的纯网络,现代架构经常使用多尺度特征;因此,作为上采样器输入的高分辨率特征可能并不必要。例如,在特征金字塔网络(Feature Pyramid Network,简称FPN)中,高分辨率特征会在上采样之后加入到低分辨率特征中。因此,我们认为精心设计的单输入动态上采样器就足够了。
考虑到动态卷积带来的沉重计算负担,我们绕过基于内核的方法,回归上采样的本质,即点采样,以此重新定义上采样过程。具体来说,我们假设输入特征通过双线性插值被插值为连续特征图,然后生成内容感知的采样点来重新采样该连续特征图。从这个角度来看,我们首先提出一个简单的设计,即通过线性投影生成逐点偏移量,并利用PyTorch中的grid_sample
函数来重新采样点值。然后,我们逐步改进这一设计,通过 i) 控制初始采样位置,ii) 调整偏移量的移动范围,以及iii) 将上采样过程分为多个独立组,从而得到我们的新上采样器DySample。在每一步中,我们都解释了为何需要这样的改进,并进行实验来验证性能提升。
与其它动态上采样方法相比,DySample具有以下特点:i) 不需要高分辨率引导特征作为输入;ii) 除了PyTorch之外,不需要额外的CUDA包;特别是,iii) 如图1和图8所示,其推理延迟、内存占用、浮点运算次数(FLOPs)以及参数数量均显著较少。例如,在以MaskFormer-SwinB为基线的语义分割任务中,DySample相比CARAFE能带来46%更多的性能提升,但仅需CARAFE 3%的参数数量和20%的FLOPs。得益于高度优化的PyTorch内置函数,DySample的推理时间也接近双线性插值的时间(当对256×120×120的特征图进行上采样时,分别为6.2毫秒对比1.6毫秒)。除了这些吸引人的轻量化特性外,DySample在包括语义分割、目标检测、实例分割、全景分割以及单目深度估计在内的五种密集预测任务中,相比其他上采样方法表现更佳。
总而言之,我们认为鉴于DySample不仅在有效性方面而且在效率方面的表现,它可以安全地替代现有密集预测模型中的最近邻/双线性插值方法。
2、相关工作
我们将回顾密集预测任务、特征上采样操作符以及深度学习中的动态采样技术。
密集预测任务
密集预测是指需要逐点标签预测的一类任务,例如语义/实例/全景分割、目标检测以及单目深度估计。不同的任务通常表现出不同的特性和难点。例如,在语义分割中,既要预测平滑的内部区域又要保持锐利的边缘是很困难的;而在实例感知的任务中,区分不同的物体也很有挑战性。在深度估计中,具有相同语义意义的像素可能有着非常不同的深度,反之亦然。通常需要针对不同的任务定制不同的架构。尽管模型结构各异,但上采样操作符是密集预测模型中必不可少的组成部分。因为骨干网络通常会输出多尺度特征,所以低分辨率特征需要被上采样到更高分辨率。因此,一个轻量级而有效的上采样器对于许多密集预测模型来说是有益的。我们将在SegFormer和MaskFormer的语义分割、Faster R-CNN的目标检测、Mask R-CNN的实例分割、Panoptic FPN的全景分割以及DepthFormer的单目深度估计中展示我们的新上采样设计能带来一致性的性能提升,并且几乎不增加计算负担。
特征上采样
常用的特征上采样方法包括最近邻插值(NN)和双线性插值。这些方法应用固定的规则来插值低分辨率特征,忽略了特征图中的语义意义。SegNet在语义分割中采用了最大反池化来保留边缘信息,但是引入噪声和零填充破坏了平滑区域中的语义一致性。类似于卷积,一些可学习的上采样方法在上采样过程中引入了可学习参数。例如,反卷积以与卷积相反的方式上采样特征。Pixel Shuffle利用卷积来增加通道数,然后重塑特征图来提高分辨率。近期,一些动态上采样操作符实现了内容感知的上采样。CARAFE使用子网络生成内容感知的动态卷积核来重组输入特征。FADE提出结合高分辨率和低分辨率特征来生成动态卷积核,目的是利用高分辨率特征的结构信息。SAPA进一步引入了点隶属的概念,并计算高分辨率和低分辨率特征之间的相似度感知卷积核。作为模型插件,这些动态上采样器增加了比预期更多的复杂度,特别是FADE和SAPA需要高分辨率特征作为输入。因此,我们的目标是贡献一种简单、快速、低成本且通用的上采样器,同时保留动态上采样的有效性。
动态采样
上采样本质上是关于几何信息建模的。另一系列工作通过动态采样图像或特征图来建模几何信息,作为标准网格采样的替代方案。Dai等人和Zhu等人提出了变形卷积网络,在标准卷积的矩形窗口采样被偏移点采样所替代。Deformable DETR沿用了这种方式,并相对某个查询采样关键点来进行变形注意力机制。类似的做法也出现在当图像下采样为低分辨率图像进行内容感知的图像重缩放(即接缝雕刻)时。例如,Zhang等人提出了一种学习的方法来指导图像下采样,以保存更多原始图像的信息;Jin等人也设置了一个可学习的变形模块来下采样图像。不同于最近基于卷积核的上采样方法,我们将上采样的本质解释为点重新采样。因此,在特征上采样中,我们倾向于遵循上述工作的精神,并采用简单的设计来实现一个强大而高效的动态上采样器。
3、学习采样和上采样
本节我们将详细介绍DySample及其变体的设计。首先给出一个简单的实现版本,然后逐步展示如何改进它。
3.1 初步设计
我们回归到上采样的本质,即点采样,以建模几何信息。利用PyTorch内置的函数,我们首先提供一个简单的实现来证明基于采样的动态上采样(如图2(a)所示)的可行性。
网格采样
给定一个大小为的特征图X,以及一个大小为的采样集S,其中第一维度的2分别代表x和y坐标,网格采样函数利用S中的位置对假设的双线性插值后的X进行重新采样,得到大小为的X'。这一过程定义为:
简单实现
给定一个上采样比例因子s和一个大小为的特征图X,使用一个线性层来生成偏移量O,该线性层的输入和输出通道数分别为C和。生成的偏移量O的大小为,然后通过像素重排(Pixel Shuffling)将其重塑为。之后,采样集S是偏移量O与原始采样网格G的和,即:
其中重塑操作被省略了。最终,可以通过网格采样利用采样集生成大小为的上采样特征图X',如公式(1)所示。
这种初步设计在物体检测任务上使用Faster R-CNN时获得了37.9 AP的成绩,在语义分割任务上使用SegFormer-B1时达到了41.9 mIoU的成绩。接下来我们基于这个简单的实现介绍DySample。
3.2. DySample: 动态采样实现上采样
通过研究朴素的实现方法,我们观察到在个上采样的点之间共用了相同的初始偏移位置,这忽视了这些点之间的位置关系,并且无约束的偏移范围会导致点采样出现无序的情况。首先我们讨论这两个问题。我们还会探讨一些实现细节,例如特征组和动态偏移范围。
初始采样位置。在最初的版本中,相对于X中的一个点的个采样位置都被固定在同一初始位置(即X中的标准网格点),如图 3(a) 所示。这种做法忽略了个相邻点之间的位置关系,导致初始采样位置分布不均匀。如果生成的所有偏移量都是零,则上采样的特征等同于最近邻插值的结果。因此,这种初步初始化可以被称为“最近邻初始化”。针对这一问题,我们将初始位置改为“双线性初始化”,如图 3(b) 所示,其中零偏移会带来双线性插值的特征图。
更改初始采样位置后,性能提高到了平均精度(AP) 38.1 (+0.2) 和平均交并比(mIoU) 42.1 (+0.2),如表 1 所示。
偏移范围。由于存在归一化层,某一确定输出特征的值通常位于[-1, 1]区间内,中心为0。因此,局部个采样位置的行走范围可能会显著重叠,如图 4(a) 所示。这种重叠容易影响边界附近的预测(图 4(b)),并且这些错误会逐级传播并造成输出伪影(图 4(c))。为了缓解这种情况,我们将偏移乘以因子0.25,该因子正好满足重叠与非重叠之间的理论边际条件。这个因子被称为“静态范围因子”,使得采样位置的行走范围受到局部约束,如图 3(c) 所示。这里我们将式(2)重写为:
将范围因子设置为0.25时,性能提升到了平均精度(AP) 38.3 (+0.2) 和平均交并比(mIoU) 42.4 (+0.3)。我们也测试了其他可能的因子,如表 2 所示。
注解。乘以因子是对该问题的一种软性解决方案;它并不能完全解决问题。我们也尝试过使用tanh函数严格限制偏移范围在 [-0.25, 0.25] 内,但效果更差。或许显式的约束限制了表示能力,例如,在某些特定位置需要大于0.25的偏移时,显式约束版本无法处理这种情况。
分组。这里我们研究基于分组的上采样,其中每个组内的特征共享同一套采样集合。具体而言,可以沿通道维度将特征图分为g组,并生成g组偏移。根据图 5,分组是有效的。当g = 4时,性能达到了平均精度(AP) 38.6 (+0.3) 和平均交并比(mIoU) 43.2 (+0.8)。
动态范围因子。为了增加偏移的灵活性,我们进一步通过线性投影输入特征来生成点级别的“动态范围因子”。通过使用sigmoid函数和0.5的静态因子,动态范围取值范围为[0, 0.5],中心点为0.25,与静态因子相同。动态范围操作可参考图 2(b)。这里我们将式(4)重写为:
偏移生成风格。在上述设计中,首先使用线性投影产生组偏移。然后对这些组进行重塑以满足空间尺寸的要求。我们将这一过程称为“线性+像素重排”(LP)。为了节省参数数量和浮点运算次数(GFLOPs),我们可以提前执行重塑操作,即先将特征X重塑到的尺寸,然后再对其进行线性投影得到。类似地,我们将这一过程称为“像素重排+线性”(PL)。在其他超参数固定的情况下,PL设置下的参数数量可以减少到。通过实验,我们经验性地根据图 5 将LP和PL版本的组数分别设定为4和8。此外,我们发现PL版本在SegFormer(表 4)和MaskFormer(表 5)上的表现优于LP版本,但在其他测试模型上的表现略逊一筹。
DySample系列。根据范围因子的形式(静态/动态)以及偏移生成样式(LP/PL),我们研究了四个变体:
i) DySample: 使用静态范围因子的LP样式;
ii) DySample+: 使用动态范围因子的LP样式;
iii) DySample-S: 使用静态范围因子的PL样式;
iv) DySample-S+: 使用动态范围因子的PL样式。
3.3. DySample的工作原理
DySample的采样过程如图9 所示。我们突出显示了一个局部区域(红色框内)来展示DySample如何将边缘上的一点分割成四点以使边缘更加清晰。对于黄色框内的点,它生成指向四个上采样点的四个偏移量,这四个点从双线性插值的角度来看。在这个例子中,左上角的点被分配到了“天空”(颜色较浅),而其他三个点则被分配到了“房子”(颜色较深)。最右侧的小图展示了右下角上采样点是如何形成的。
3.4. 复杂度分析
我们使用一个尺寸为256 × 120 × 120的随机特征图(如果需要的话,还使用一个尺寸为256 × 240 × 240的引导图)作为输入来测试推理延迟时间。我们采用SegFormer-B1来比较性能、训练内存、训练时间、GFLOPs和参数数量,当双线性插值(默认)被其他上采样器替换时的情况。
定量的结果如图8 所示。除了最佳的表现之外,DySample系列的推理延迟时间、训练内存、训练时间、GFLOPs和参数数量均低于所有先前强大的动态上采样器。对于推理时间而言,DySample系列将一个256 × 120 × 120的特征图上采样的时间为6.2至7.6毫秒,接近于双线性插值的时间(1.6毫秒)。特别是由于采用了高度优化的PyTorch内置函数,DySample的反向传播非常快;因此增加的训练时间几乎可以忽略不计。
在DySample系列中,“-S”版本消耗更少的参数和GFLOPs,但需要更多的内存占用和延迟时间,这是因为PL需要额外存储X。同时,“+”版本也引入了稍微多一点的计算量。
3.5. 相关工作的讨论
在这里,我们将DySample与CARAFE、SAPA以及可变形注意力机制进行比较。
与CARAFE的关系
CARAFE生成内容感知的上采样核来重新组合输入特征。而在DySample中,我们生成的是上采样位置而不是核。从基于核的观点来看,DySample使用2 × 2的双线性核,而CARAFE使用5 × 5的核。在CARAFE中,如果放置一个中心位于某点的核,则核的大小至少需要为3 × 3,因此其GFLOPs至少是DySample的2.25倍。此外,CARAFE中的上采样核权重是通过学习得到的,但在DySample中这些权重是基于x和y位置条件化的。因此,为了保持单一的核,DySample只需要一个2通道的特征图(假设组数g=1),而CARAFE需要一个K × K通道的特征图,这就是为什么DySample更高效的原因。
与SAPA的关系
SAPA引入了语义聚类的概念到特征上采样中,并将上采样过程视为为每个上采样点找到正确的语义聚类。在DySample中,偏移量的生成也可以看作是在为每个点寻找语义上相似的区域。然而,DySample不需要指导图,因此更加高效且易于使用。
与可变形注意力的关系
可变形注意力主要用于增强特征;它在每个位置采样多个点并将它们聚合形成一个新的点。但DySample是专为上采样设计的;它为每个上采样位置采样单个点以将一点分为个上采样点。DySample表明,只要上采样的个点可以动态划分,为每个上采样位置采样单个点就足够了。
4. 应用
本节我们将DySample应用于五个密集预测任务中,包括语义分割、目标检测、实例分割、全景分割以及深度估计。
在与各种上采样方法的竞争中,对于双线性插值,我们设置缩放因子为2,并将“align_corners”设置为False。对于反卷积,我们设置核大小为3,步长为2,填充为1,输出填充也为1。对于像素重排,我们首先使用3×3的卷积核将通道数增加到原来的4倍,然后应用“像素重排”函数。对于CARAFE,我们采用其默认设置。我们使用IndexNet的“HIN”版本和A2U的“dynamic-cs-d†”版本。由于它们在所有密集预测任务中表现更加稳定,我们还使用了没有门控机制的FADE和SAPA-B。
4.1. 语义分割
语义分割任务的目标是推断每个像素的类别标签。典型的模型通常多次采用上采样器来获得高分辨率的输出,精确的像素级预测在很大程度上依赖于上采样的质量。
实验协议
我们使用ADE20K数据集。除了常用的mIoU指标外,我们还报告bIoU指标来评估边界质量。我们首先使用轻量级基线SegFormer-B1,其中涉及3+2+1=6个上采样阶段,然后在更强的基线MaskFormer上测试DySample,该模型以Swin-B和Swin-L作为骨干网络,在FPN中有3个上采样阶段。我们使用作者提供的官方代码库,并遵循所有的训练设置,仅修改上采样阶段。
语义分割结果
定量结果如表4和表5所示。我们可以看到,在SegFormer-B1上,DySample获得了最佳的mIoU指标43.58%,但bIoU指标低于那些有指导的上采样器,例如FADE和SAPA。因此我们可以推断,DySample主要从内部区域改善了性能,而有指导的上采样器主要提高了边界质量。如图9第一行所示,DySample的输出与CARAFE类似,但在边界附近更加独特;有指导的上采样器预测出更锐利的边界,但在内部区域存在错误预测。对于更强的基线MaskFormer,DySample同样提升了mIoU指标,从52.70%提高到53.91%(+1.21%)与Swin-B一起使用时,以及从54.10%提高到54.90%(+0.80%)与Swin-L一起使用时。
4.2. 目标检测与实例分割
目标检测和实例分割都是实例级别的任务,目标检测旨在定位并分类物体,而实例分割还需要进一步分割这些物体。上采样特征的质量对分类、定位和分割准确性有着显著的影响。
实验协议
我们使用MS COCO数据集。报告AP系列指标。选择Faster R-CNN和 Mask R-CNN作为基线模型。为了性能对比,我们在FPN架构中修改了上采样器。Faster R-CNN中的FPN有四个上采样阶段,而Mask R-CNN中的FPN有三个上采样阶段。我们使用mmdetection提供的代码,并遵循1×的训练设置。
目标检测与实例分割结果
定量结果如表6和表7所示。结果表明DySample在所有比较的上采样器中表现出色。使用R50时,DySample在所有测试的上采样器中取得了最佳性能。当使用更强的骨干网络时,也能观察到显著的改进(在Faster R-CNN中,R50 +1.2与R101 +1.1的box AP相比,以及在Mask R-CNN中,R50 +1.0与R101 +0.8的mask AP相比)。
4.3. 全景分割
全景分割是语义分割与实例分割的联合任务。在这种情况下,上采样器面临着区分实例边界的难题,这要求上采样器具有良好的语义感知能力和判别能力。
实验协议
我们同样在MS COCO数据集上进行实验,并报告PQ、SQ和RQ指标。采用Panoptic FPN作为基线模型,并使用mmdetection作为我们的代码库。采用默认的训练设置来确保公平的比较。仅修改FPN中的三个上采样阶段。
泛分割结果
定量结果如表8所示,证明了DySample带来了一致的性能提升,即对于R50和R101骨干网络分别实现了1.2和0.8的PQ改善。
![image-20240830160313304](Learning to Upsample by Learning to Sample.assets/image-20240830160313304.png)
4.4. 单目深度估计
单目深度估计要求模型从一张图像中估计出每个像素的深度图。高质量的上采样器应该能够同时恢复细节、保持平坦区域内的深度值一致性,并处理逐渐变化的深度值。
实验协议
我们在NYU Depth V2数据集上进行实验,并报告δ < 1.25、δ < 1.25²和δ < 1.25³的准确度、绝对相对误差(Abs Rel)、均方根误差(RMS)及其对数版本(RMS(log))、平均log10误差(log10)和平方相对误差(Sq Rel)。采用DepthFormer-SwinT作为基线模型,融合模块中有四个上采样阶段。为了可复现性,我们使用monocular depth estimation toolbox提供的代码库,并遵循其推荐的训练设置,同时仅修改上采样器。
单目深度估计结果
定量结果如表9所示。在所有上采样器中,DySample+的表现最佳,与双线性上采样相比,δ < 1.25的准确度提高了0.05,Abs Rel降低了0.04,RMS降低了0.09。此外,图9第5行的定性比较也验证了DySample的优越性,例如椅子的准确且一致的深度图。
5. 结论
本文提出了一种快速、有效且通用的动态上采样器DySample。不同于常见的基于内核的动态上采样方法,DySample是从点采样的角度设计的。我们从一个朴素的设计开始,并展示了如何通过我们对上采样的深刻理解逐步提高其性能。与其他动态上采样器相比,DySample不仅表现出了最佳的性能,而且还摆脱了定制CUDA包的依赖,并消耗最少的计算资源,从而在延迟、训练内存、训练时间、GFLOPs以及参数数量等方面展现出优越性。对于未来的工作,我们计划将DySample应用于低级任务,并研究上采样与下采样联合建模的问题。
—END—
论文链接:https://arxiv.org/pdf/2308.15085
请长按或扫描二维码关注本公众号
喜欢的话,请给我个在看吧!