CVPR2023:端到端密集检测中的一对多标签分配

CVPR2023:端到端密集检测中的一对多标签分配

Label Assignment 被玩出了花,从一开始的IOU固定分配,再到ATSS的伪动态分配,到PAA的极大似然估计分配和OTA最优分配,之前的方法都是要么正要么负,本文直接提出了先正后负,想法确实妙!

论文提出了一种一对多(o2f)的标签分配策略,即选择一个确定的锚作为完全正的锚,一些模糊的锚作为正的和负的锚,其余的锚作为负样本。在训练过程中动态调整模糊锚点的正负度,使网络在保持较强的特征表示能力的同时,实现端到端检测能力。

论文题目:

One-to-Few Label Assignment for End-to-End Dense Detection

摘要

一对一(o2o)标签分配在基于变压器的端到端检测中起着关键作用,最近已被引入到全卷积检测器中用于端到端密集检测。但o2o由于正样本数量有限,会降低特征学习效率。虽然在最近的detr中引入了额外的正样本来缓解这一问题,但解码器中的自注意和交叉注意的计算限制了其实际应用于密集和全卷积检测器。在这项工作中,我们提出了一种简单而有效的一对多(o2f)标签分配策略,用于端到端密集检测。除了为每个对象定义一个正锚和多个负锚外,我们还定义了几个软锚,它们同时作为正样本和负样本。在训练过程中动态调整这些软锚的正负权重,使其在训练早期更有利于“表示学习”,在训练后期更有利于“重复预测去除”。以这种方式训练的检测器不仅可以学习强特征表示,还可以进行端到端的密集检测。在COCO和CrowdHuman数据集上的实验证明了o2f方案的有效性。代码可从https://github.com/strongwolf/o2f获得。

1. 介绍

物体检测是一项基本的计算机视觉任务,旨在对图像中预定义类别的物体进行定位和识别。由于深度神经网络(deep neural networks, DNN)的快速发展,近十年来检测性能有了显著提高。在目标检测器的发展过程中,一个重要的趋势是去除手工制作的组件以实现端到端检测。

在目标检测中,一个手工制作的组件是训练样本的设计,几十年来,锚盒一直主要用于现代物体探测器,如Faster RCNN, SSD和RetinaNet。然而,基于锚的探测器的性能对锚盒的形状和尺寸很敏感。为了缓解这一问题,提出了无锚和基于查询的检测器,分别用锚点和可学习位置查询取代锚框。

另一个手工制作的组件是非最大抑制(NMS),以消除重复的预测。NMS的必要性来自于一对多(o2m)标签赋值,它在训练过程中为每个GT对象分配多个正样本。这可能导致推理中的重复预测,并影响检测性能。由于NMS有超参数需要调优,并引入额外的成本,因此非常需要NMSfree端到端对象检测。

采用变压器架构,DETR实现了具有竞争力的端到端检测性能。后续研究发现DETR中的一对一(o2o)标签分配是其成功的关键。因此,在基于全卷积网络(FCN)的密集检测器中引入o2o策略,实现轻量化端到端检测。但o2o由于正面样本数量有限,会影响训练效率。这个问题在密集检测器中变得非常严重,通常在一个图像中有超过10k个锚点。此外,两个语义上相似的锚可以分别被反向定义为积极锚和消极锚。这样的“标签冲突”问题进一步降低了特征表示的辨别力。因此,端到端密集检测器的性能仍然落后于NMS检测器。最近关于DETR的研究试图通过引入独立的查询组来增加阳性样本的数量来克服o2o方案的这一缺点。解码器中计算的自注意保证了不同查询组之间的独立性,但这对于基于fcn的检测器来说是不可实现的。

在本文中,我们的目标是开发一种高效的基于fcn的密集检测器,它是无nms的,但端到端可训练的。我们观察到,在o2o中,将语义上与正面样本相似的模棱两可锚点设置为完全负面锚点是不合适的。相反,它们可以用于计算训练期间的正损失和负损失,如果损失权重经过精心设计,则不会影响端到端容量。在此基础上,我们提出为模糊锚点分配动态软分类标签。如图1所示,与o2o将一个模棱两可的锚点(锚点B或C)设置为完全负样本不同,我们将每个模棱两可的锚点标记为部分正和部分负。在训练过程中自适应调整积极和消极标签的程度,以保持“表征学习”和“重复预测去除”之间的良好平衡。特别是在早期训练阶段,我们以较大的正度和较小的负度开始,使网络更有效地学习特征表示能力,而在后期训练阶段,我们逐渐增加模糊锚点的负度,以监督网络学习去除重复预测。我们将方法命名为一对几(o2f)标签赋值,因为一个对象可以有几个软锚。我们将o2f LA实例化为密集检测器FCOS,并且在COCO和CrowHuman上的实验表明,它达到了与NMS检测器相同甚至更好的性能。

CVPR2023:端到端密集检测中的一对多标签分配

2. 相关工作

在过去的十年中,随着深度学习技术的快速发展,目标检测取得了巨大的进步。现代目标检测器大致可以分为两类:基于卷积神经网络(cnn)的检测器和基于变压器的检测器。

2.1. 基于cnn的对象检测器

基于cnn的检测器可以进一步分为两级检测器和一级检测器。两级检测器在第一阶段生成区域建议,在第二阶段细化这些建议的位置并预测类别,而单级检测器直接预测卷积特征图上密集锚点的类别和位置偏移量。早期的检测器大多使用预先定义的锚作为训练样本。锚的形状和大小的超参数必须仔细调优,因为不同数据集的合适设置各不相同。为了克服这一问题,提出了无锚检测器来简化检测管道。FCOS和CenterNet将锚框替换为锚点,直接使用锚点回归目标对象。

大多数基于cnn的检测器在训练过程中采用一对多(o2m)标签分配方案。早期的检测器,如Faster RCNN , SSD和RetinaNet,使用IoU作为定义正锚和负锚的指标。FCOS将正锚点限制在对象的一定尺度和范围内。最近的方法经常考虑网络预测的质量和分布,以便更可靠地分配锚点的标签。然而,o2m标签分配需要一个后处理步骤,即非最大抑制(NMS),以消除重复的预测。NMS引入了一个参数来降低所有实例的精度和召回率,但这并不是最优的,特别是对于拥挤的场景。在本文中,我们的目标是在基于cnn的检测器中去除这个手工制作的NMS步骤,实现端到端的密集检测。

2.2. 基于Transformer的对象检测器

DETR作为一种基于变压器的先锋检测器,利用一组备用的可学习对象查询作为训练候选,与图像特征进行交互。利用o2o二部匹配和全局关注机制,实现了具有竞争力的端到端检测性能。但是,DETR收敛速度慢,在小对象上性能较差。后续的许多工作都是为了改进特征映射和对象查询之间的注意力建模机制,从而提取出更相关、更精确的特征,提高在小对象上的性能。最近的研究表明,正样本数量的有限减慢了DETR的收敛速度。因此,他们引入了几个额外的解码器来增加阳性样本的数量。然而,这些方法都是基于稀疏候选,当执行密集预测时,它们的计算成本是无法承受的。与这些方法不同,我们提出了一种软标签分配方案,引入更多的阳性样本,使端到端密集检测器更容易训练。

3.一对多软标签

3.1. 模棱两可的锚

密集检测中的标签分配是为每个锚点分配一个分类标签来监督网络训练。图2说明了“人”实例的o2o和o2m标签分配。可以看出,o2o标签方案只选择了一个锚点作为积极样本,而o2m则分配了多个积极锚点。在o2o和o2m中,除正锚之外的其余锚均被定义为负样本。

CVPR2023:端到端密集检测中的一对多标签分配

我们认为,有些锚实际上处于积极和消极之间,不应该简单地给它们贴上一个积极或消极的标签。如图2所示,我们将o2o和o2m中都为正的锚点(用红色边框突出显示)命名为“确定锚点”,因为它通常没有模糊性。相比之下,我们将o2m为正、o2o为负的锚点(绿色边框突出)命名为“模糊锚点”,因为它们在o2o和o2m方案中存在冲突标签。

现在,我们将锚点分为三组:一个确定的积极锚点,几个模棱两可的锚点,以及剩下的多个消极锚点。为了避免重复预测,模棱两可的锚点在o2o中被标记为负,而在o2m中,它们可以帮助学习鲁棒的特征表示。一个有趣的问题是,我们能否找到一种方法来整合o2o和o2m方案的优点,从而提高端到端密集检测的性能?我们主张解决这个问题的关键是如何在o2o中适当引入更多积极的监管信号。为了找到这个问题的解决方案,让我们先测试两个选项。

第一个选择是将o2o改为一对二,为每个实例增加一个正面样本,第二种选择是为每个模糊锚分配一个软标签t,其中0≤t≤1是其正度,因此1−t是其负度。我们将正锚和负锚的分类损失分别定义为−log(p)和−log(1 - p),其中p为预测的分类评分。

那么第二种选择的分类损失将为−t × log(p)−(1−t) × log(1−p). COCO数据集上的检测结果如表1所示,从表1中我们可以看出,即使只增加一个正样本,一对二的标签分配方案也会显著降低性能。相反,为模糊锚点分配合适的软标签可以有效地提高端到端性能,(软标签分配的细节将在以下部分讨论。)上述结果表明,使模糊锚同时为正和负可能是有效的端到端密集检测的可行解决方案。

CVPR2023:端到端密集检测中的一对多标签分配

因此,我们提出了一种一对多(o2f)的标签分配策略,即选择一个确定的锚作为完全正的锚,一些模糊的锚作为正的和负的锚,其余的锚作为负样本。在训练过程中动态调整模糊锚点的正负度,使网络在保持较强的特征表示能力的同时,实现端到端检测能力。

3.2. 选择某种正锚

在我们的方法中,将为每个实例选择一个特定的正锚,之前的基于o2的检测器都使用了一种预测感知的选择度量,该度量考虑了分类和回归的成本来选择唯一的正样本。我们遵循这一原则,将分类分数和IoU同时纳入到某个锚点的选择指标中,定义为:

CVPR2023:端到端密集检测中的一对多标签分配

其中Si,j表示锚点i与实例j的匹配得分,cj为实例j的类别标签,pi,cj为锚点i属于类别cj的预测分类得分,bi为锚点i的预测包围盒坐标,bj为实例j的坐标,α控制分类和回归的重要程度。1 [i∈Ωj]是一个空间指示器,当锚点i的中心点在实例j的中心区域Ωj内时输出1;否则输出0。这种空间先验通常用于o2o和o2m方法,基于观察到实例中心区域的锚点更可能是正锚点。

锚可以根据度量Si,j按降序排序。以往的工作]往往将正锚选择问题表述为二部匹配问题,并采用匈牙利算法进行求解。为了简单起见,在这项工作中,我们直接选择得分最高的一个作为每个实例的特定积极锚点。

3.3. 歧义锚的标签分配

除了某个正锚,我们选择基于Si,j得分的topK锚作为歧义锚,因为它们与某个正锚具有相似的语义上下文。为了减少重复预测的可能性,我们为这些模糊的锚点分配动态软标签。假设我们训练网络N个epoch,第j个epoch中每个模糊锚i的分类损失定义为:

CVPR2023:端到端密集检测中的一对多标签分配

其中PI为锚点i的预测分类评分,tj i和(1 - tj i)分别为该锚点在第j个epoch的正、负程度(即损失权重)。Tj I动态定义为:

CVPR2023:端到端密集检测中的一对多标签分配

其中,tj是一个时变变量,在第j个epoch中为所有样本分配相同的值,T max和T min分别控制第一个epoch和最后一个epoch中模糊锚的正度。考虑到预测分数越高的锚对正向信号的贡献越大,我们将损失权重设置为与分类分数正相关。直接使用pi作为权重会使训练在硬样本上不稳定,因为硬样本的预测分数要比简单样本小得多。因此,我们使用pi与max{p}的比值,将不同样本的权重归一化为同一尺度。动态调整T j很重要,因为它控制了不同训练阶段“特征学习”和“重复去除”之间的平衡。在早期训练阶段,我们将T j设置的比较大,引入更多的正监督信号进行表示学习,使网络能够快速收敛到一个鲁棒的特征表示空间。随着训练的进行,我们逐渐降低模糊锚点的正度,使网络能够学习去除重复的预测。

3.4. 网络结构

我们将所提出的o2f标签分配策略实例化为典型的全卷积密集检测器FCOS,网络结构如图3所示。由两个并行卷积分支组成的检测头连接到每个特征金字塔网络(FPN)层的输出。其中一个分支预测大小为H × W × C的评分图,其中C是数据集中类别的数量,H和W分别是特征图的高度和宽度。另一个分支预测大小为H ×W × 4的位置偏移图和大小为H的中心度图×W ×1。根据之前的工作,我们将中心度图与分类分值图相乘,作为最终的分类- iou联合分值。

CVPR2023:端到端密集检测中的一对多标签分配

对于每个实例,我们选择一个确定的正锚和K个模糊锚,其余锚点设为负样本。分类分支对每个实例的训练目标表述为:

CVPR2023:端到端密集检测中的一对多标签分配

其中pc为单个特定锚点的分类评分,A和B分别代表模糊锚点和否定锚点的集合,BCE表示二元交叉熵损失,FL表示焦损失,回归损失定义为:

CVPR2023:端到端密集检测中的一对多标签分配

其中,GIoU损失是基于通用交集对联合的位置损失,bi是锚i的预测位置,bgt是锚i对应的GT对象的位置,请注意,我们将回归损失应用于正锚和模糊锚。

4. 实验

4.1. 数据集和实现细节

数据集 为了验证我们o2f方法的有效性,我们在COCO和CrowdHuman数据集上进行了实验。COCO是一个具有挑战性的基准测试,由来自80个类的118k训练图像和5k验证图像组成。我们使用标准COCO度量,即AP,通过平均超过10个IoU阈值,范围从0.5到0.95。CrowdHuman是一种广泛应用于拥挤场景下人体检测的数据集,它有15k图像用于训练,4k图像用于验证。根据官方论文的建议,mMR,即每张图像的平均日志漏发率/假阳性,被作为主要指标,此外,我们还报告了竞争算法的AP和recall结果,以供参考。

实现 我们使用MMDetection工具箱来实现o2f方法,所有的骨干都是通过ImageNet上预先训练的权重进行初始化,并进行冻结批处理归一化。消融研究基于ResNet-50骨干网和FPN[。输入图像调整大小,使较短的一侧在“1×”计划中为800像素。在“3×”计划中应用多尺度训练。我们在8个gpu上训练所有模型,迷你批量大小为16个。当使用cnn作为主干时,我们使用SGDM优化器,初始学习率为0.01,动量为0.9,权值衰减为10−4。当使用变压器作为主干时,我们使用AdamW,初始学习率为0.0001,权值衰减为0.05。在“1×”计划中,我们训练模型12个epoch,并在第8和第11个epoch分别将学习率衰减10倍。在“3×”计划中,我们训练模型36个epoch,并分别在第24和33个epoch衰减学习率。

4.2. 消融研究

模棱两可的锚的数量 在我们的o2f方法中,我们选择了K个既可以有正损失又可以有负损失的模糊锚点。我们在COCO值集上消去表2中的超参数K。可以看出,K = 7时AP性能最好,为39.0,在其余的实验中,我们将K设为7。

CVPR2023:端到端密集检测中的一对多标签分配

T max和T min 这两个参数分别控制了训练过程中模糊锚在第一个epoch和最后一个epoch的正损失权值。表3给出了不同组合T max和T min对COCO val设置的结果。可以看出,当T max设置为较高的值如0.6时,增加T min会降低无NMS时的端到端检测性能。这意味着较小的T min有助于缩小“无NMS”和“有NMS”之间的性能差距。同时,当T min设置为较小的值如0.1时,由于正样本数量有限,较小的T max会降低有NMS和没有NMS的性能。当我们将T max和T min分别设置为0.6和0.2时,即我们实验的默认设置,可以获得最佳的AP性能39.0。

CVPR2023:端到端密集检测中的一对多标签分配

选择指标 我们进一步探讨了匹配函数在选择特定正锚和模糊锚时的影响,如表4所示,“乘”方法表示Eq. 1中的匹配函数,而“加”方法表示我们将Eq. 1改为(1−α) × pi,cj + α × IoU(bi, bj),这是detr中常用的度量。我们看到,只考虑分类评分(即α = 0)会降低没有NMS的性能。仅考虑回归IoU(即α = 1)会导致重复预测,并显著扩大与NMS的差距。我们还可以看到“Multiply”更适合于密集检测,它比最佳的“Add”结果获得1.1个点的增益。我们选择“正片叠底”,并在其余实验中设置α = 0.8。

CVPR2023:端到端密集检测中的一对多标签分配

4.3. COCO的结果

我们主要将我们的o2f方法与DeFCN进行比较,DeFCN是全卷积密集检测o2o方法中具有代表性和领先性的方法。DeFCN采用一种预测感知的一对一(POTO)标签分配方案进行分类,并拥有最先进的端到端密集检测性能。DeFCN和我们的o2f的框架对比如图4所示,DeFCN在标准o2o损耗的基础上增加了一个辅助o2m损耗作为分类评分。在中心度分支中引入了3D Max Filtering (3DMF)模块,提高了卷积的局部识别能力。相比之下,我们在最终损失函数中应用了一个动态o2f标签分配损失,并在中心度分支中引入了几个计算开销可忽略不计的轻量级卷积层。

CVPR2023:端到端密集检测中的一对多标签分配

主要的结果 表5给出了POTO与我们的方法在检测精度和速度上的详细比较。原FCOS在训练过程中使用o2m标签分配,使用' 1× '调度在推理中实现有/无NMS的38.6 AP/17.7 AP。“有”和“无NMS”之间如此巨大的差距表明o2m很容易产生重复的预测。POTO通过在训练过程中用o2o代替o2m,将端到端性能从17.7显著提高到36.5,说明o2o在消除重复预测方面发挥了关键作用。POTO通过增加3DMF和辅助损耗,进一步将性能提高到37.6。然而,辅助损耗中的o2m标签分配必须仔细调整。在辅助损耗中采用fcos式o2m策略会降低性能。更重要的是,DeFCN将前进时间从27.7 ms增加到30.3 ms,运行速度比原来的FCOS慢(33.0 FPS vs 35.2 FPS)。

CVPR2023:端到端密集检测中的一对多标签分配

当在中心度分支中使用三个额外的卷积层时,我们的o2f方法在“1×”调度中实现了39.0 AP,实现了1.4点增益(39.0 AP vs. 37.6 AP),并且比DeFCN更快的推理速度(35.5 FPS vs. 33.0 FPS)。值得一提的是,我们的方法也比带有NMS的FCOS具有更好的精度和更快的推断速度。

最近与我们类似的方法是H-DETR中的Hybrid-Epoch方案,也可以被视为o2o和o2m的结合。关键区别在于H-DETR使用静态损失权值,其中o2o和o2m的权值在训练早期为{0,1},在训练后期为{1,0}。相反,我们使用单个软LA分支并动态调整损失权重。我们在FCOS上实施了Hybrid-Epoch方案,在1×和3×计划下分别获得了37.3和40.6 AP,比我们的o2f低了1.7和1.6个点,这表明,对于端到端密集检测,静态损失权重不如动态损失权重有效。

在训练过程中表现良好 我们在图5中展示了我们的模型在训练过程中的表现。可以看到,在一开始,' w/o NMS '和' w/ NMS '之间的差距很大,因为我们给模棱两可的锚分配了相对较大的正权重。随着训练的进行,我们逐渐降低模糊锚点的正损失权值,使得差距越来越小。这种现象符合我们在早期训练阶段注重“特征表示学习”,在后期训练阶段注重“重复预测去除”的动机。相比之下,o2o标签分配训练的模型在整个训练过程中保持了较小的差距,但由于正面训练样本数量有限,最终导致表现较差。

较大的骨干 为了进一步证明我们的方法的鲁棒性和有效性,我们提供了更大的主干实验,详细结果如表6和表7所示。当使用ResNet-101作为主干时,我们的方法在' 1× '和' 3× '调度下的性能分别比POTO (o2o)好2.3点和1.8点。当使用Swin-T作为主干时,我们的方法在' 1× '和' 3× '调度下分别获得了2.1和2.1 AP增益。

CVPR2023:端到端密集检测中的一对多标签分配

可视化 在图6中,我们可视化了o2f方法在早期和后期训练阶段的分类分数和分配的标签。从左到右,每个阶段的三张地图分别对应“tie”、“pot”和“person”的实例。在早期训练阶段,我们为模糊锚点赋予较大的正权重,使其对特征表示学习有更大的贡献。这将导致重复的预测,如得分图所示,其中一个实例中有几个锚被高度激活。在后期的训练阶段,我们逐渐减少模糊锚的正权重,分类评分图变得稀疏很多,这表明网络已经学会了去除重复的预测。上述结果表明,要实现端到端检测,不需要在早期训练阶段强制进行稀疏预测,此时应该更加重视“特征学习”。

CVPR2023:端到端密集检测中的一对多标签分配

4.4. CrowdHuman的结果

为了进一步验证我们方法的泛化能力,我们在CrowdHuman上进行了实验,这是一个广泛应用于拥挤场景中人体检测的数据集。基于nms的方法使用IOU阈值来过滤重复的预测,这面临着一个困境:高阈值会带来更多的假阳性,而低阈值会抑制真阳性,在拥挤的场景中,这个问题变得更加严重。我们所提出的端到端密集检测器没有NMS,因此可以避免这个问题,结果如表8所示。可以看到,我们的o2f方法在mAR上显著优于基于nms的FCOS 10点,这是人群检测的主要指标。它在3月份的表现也比POTO高出6.8个点,这清楚地表明了我们的o2o和o2m战略的优势。

CVPR2023:端到端密集检测中的一对多标签分配

4.5. 实例分割结果

考虑到实例分割框架与目标检测有相似之处,并利用NMS抑制重复的预测掩码,我们将所提出的o2f标签分配策略应用于流行的单级密集实例分割方法CondInst,验证其有效性。基于ResNet-50骨干的“1×”和“3×”学习计划的结果如表9所示。原来用o2m策略训练的CondInst在没有使用NMS进行推理的情况下性能非常差。在“1×”和“3×”时间段下,在训练期间使用o2o可以有效地将端到端细分性能分别提高到32.8 AP和36.1 AP,我们的o2f标签分配策略可以分别进一步提高3.1和1.9点的性能。

CVPR2023:端到端密集检测中的一对多标签分配

5. 结论

我们提出了一种新的一对多(o2f)标签分配策略,以实现完全卷积的端到端密集检测,无需NMS后处理。通过为模糊锚点分配软标签,并在训练过程中动态调整其正负程度,我们同时使检测器具有强大的特征表示和重复预测去除能力,所提出的o2f方法在COCO基准测试中表现出优于目前最先进的端到端密集检测器的性能。正如我们在CrowdHuman数据集上演示的那样,它的优势在拥挤的场景中变得更加明显,此外,我们提出的o2f方法也可以应用于检测相关的任务,如实例分割。