赞
踩
Efficient DETR: Improving End-to-End Object Detector with Dense Prior
高效Detr:改进具有稠密先验的端到端目标检测器
最近提出的端到端转换器( 如DETR和Deformable DETR )具有堆叠 6 个解码器层的级联结构,可以迭代地更新对象查询,否则它们的性能会严重下降。在本文中,我们研究对象容器的随机初始化,包括对象查询和参考点,主要负责多次迭代的需求。基于我们的发现,我们提出了高效的DETR,一个简单高效的端到端目标检测 pipeline。通过利用密集检测和稀疏集检测的优势,高效DETR在初始化对象容器之前利用密集检测,带来1 -解码器结构和6 -解码器结构的差距。在MSCOCO上进行的实验表明,我们的方法仅有3个编码器层和1个解码器层,取得了与最先进的目标检测方法相当的性能。高效的DETR在拥挤的场景中也很健壮。它在CrowdHuman数据集上大大优于现代检测器。
论文链接:https://arxiv.org/abs/2104.01318
在这项工作中,我们对DETR进行实验,以探索其组件。对对象容器的探索使我们更好地理解参考点,参考点作为对象查询的锚点。我们指出,对象容器的随机初始化是现代端到端检测器需要多次迭代才能达到高精度的主要原因。利用基于锚点的密集先验方法,我们提出了一个简单的管道,高效DETR,用于端到端的目标检测。高效的DETR结合了密集检测和集合检测的特点,具有较高的性能和较快的收敛速度。我们希望我们的工作能够启发更简单高效的目标探测器的设计。
最近,DETR [ 2 ]提出构建一个基于编码器-解码器转换器架构和二分匹配的端到端框架,该框架不需要后处理直接预测一组边界框。然而,DETR需要比现代主流检测器多10到20倍的训练历元才能收敛,并且在检测小目标时表现出相对较低的性能。变形DETR 在以下两个方面解决了这两个问题:( i )用局部空间注意力代替全局范围注意力,加速了训练的收敛。( ii )将单尺度特征图替换为多尺度特征图,显著提高了对小目标的检测性能。
图1 之前的端到端探测器( a )和我们的( b )
DETR的管路可抽象为图1 ( a )所示。我们将对象容器定义为一个结构化信息的容器,其中包含不同种类的对象特征。对象查询和参考点都属于对象容器,因为对象查询和参考点可以表示对象的抽象特征和位置信息。一组随机初始化的对象容器被送入一个特征精化器( Feature Refiner ),以与从图像中提取的特征进行交互。具体来说,具有交叉注意力模块的 6 个解码器层扮演了级联特性精练器( Cascade Feature Refiner )的角色,它迭代地更新对象容器。精化后的对象容器有助于DETR的最终预测。此外,从图像中提取的特征是由一个特征提取器提取的,该特征提取器( Feature Extractor )具有一个CNN主干和DETR中的6个编码器层。总之,图像和随机初始化的对象容器通过特征提取器和级联特征提取器得到最终结果。在该流水线中,DETR和可变形DETR都具有6 -编码器和6 -解码器转换器架构。我们猜测,这种结构是DETR系列在目标检测中实现高精度的关键。
在本文中,我们研究了DETR的组成部分,以了解它们的机制。我们进行了大量的实验,发现具有额外辅助损失的解码器层对性能的贡献最大。解码器迭代地将对象容器与特征图进行交互。我们探索了在DETR中对象容器的随机初始化主要为了满足多次细化时间(即,解码器层)的要求,并导致缓慢的收敛。
然而,很难直接分析对象查询,因为它们只是一组抽象特性。得益于Deformable DETR,它提出了对象查询的参考点。参考点是表示 box 中心猜测的二维张量。通过对训练好的模型的参考点进行可视化,我们发现在基于锚点的方法中,参考点可以作为锚点。此外,我们还报告了参考点的不同初始化导致1 -解码器结构的巨大性能差异。
随之而来的问题是:对于端到端检测器中的对象容器,哪种初始化方式更好?
在本文中,我们提出了一个简单但有效的端到端检测器---高效DETR。高效的DETR有两个部分:密集和稀疏。两个部件共用一个检测头。在稠密部分,执行基于时间滑动窗口的特定于类的稠密预测以生成建议。Top-K (本文取K = 100 )打分的4-d提案及其256-d编码器特性被用作参考点和对象查询。对象容器的初始化是如此的合理,以至于我们的方法能够在只有 1 个解码器层的情况下实现更好的性能和快速收敛。具体来说,基于Deformable DETR的3 -编码器和1 -解码器结构,可以通过ResNet50网络主干和更快( 36个epoch )的训练获得具有竞争力的性能( 44.2AP in COCO )。
表1 编码器vs .解码器。实验在骨干为Res50的 Deformable DETR 上进行,有100个提案和3×训练计划。
DETR系列采用编码器-解码器转换器架构。编码器和解码器均级联6个相同的层。编码器层由多头自注意力和前馈网络( FFN )组成,而解码器层具有额外的多头交叉注意力层。编码器层扮演类似卷积的角色,并使用多头自注意力从CNN主干提取上下文特征。在解码器中,一组256维的对象查询与整幅图像的编码器特征进行交互,并通过多头交叉注意力进行信息聚合。辅助的二分匹配损失应用于每个解码器层。表1 说明了DETR对解码器层数更敏感,这意味着解码器比编码器对DETR更重要。特别地,我们采用了具有3 -编码器和3 -解码器的DETR作为基线。如果在解码器中去掉两层,AP可以减少约9.3。相比之下,去除编码器中的两层仅造成1.7 AP的下降。
表2 DETR中解码器层数的影响
为什么解码器比编码器更重要?
它们都是在一个级联架构,除了解码器有一个额外的辅助损耗为每个相同的层。在表1中,我们发现辅助解码损失是DETR对解码器层数更敏感的主要原因。编码器和解码器的行为在没有辅助损耗的情况下趋于相同。我们指出辅助解码损失在更新查询特征时引入了强监督,使得解码器更加高效。解码器的级联结构细化了具有逐层辅助损失的特征。迭代次数越多,辅助解码监督越有效。为了进一步探究解码器的级联结构,我们尝试了不同的解码器层数。由表2可知,随着级联次数的减少,性能明显下降。一个6层解码器和一个1层解码器之间有10.3 AP的巨大落差。值得注意的是,每次迭代后只更新对象查询。对象查询与性能有很强的相关性,因为最终的预测是由检测头从它们预测的。然而,对象查询在训练开始时是随机初始化的。我们假设这种随机初始化并不能提供良好的初始状态,这可能是DETR需要6次迭代的级联结构才能获得有竞争力的性能的原因。
基于上一节的分析,对象查询的初始化值得研究。对象查询属于对象容器的特征信息。对象查询被定义为学习到的位置嵌入,这是一个256维的抽象张量,难以分析。然而,我们观察到DETR中的每个对象查询都是在特定的区域和box大小上进行专门化操作,具有多种操作模式。我们假设研究对象查询的空间投影可以以一种直观的方式帮助理解。
得益于Deformerable-DETR,它带来了一个新的组件,称为与对象查询相关的参考点( reference point )。参考点是二维张量,表示box中心的预测,属于物体容器的位置信息。此外,参考点通过线性投影从256-d的对象查询中预测。它们可以作为对象查询在二维空间中的投影,并提供对象查询中位置信息的直观表示。在解码器的迭代过程中更新参考点和对象查询,并对最终结果做出贡献。
对于对象查询中的位置信息,我们从它们开始探索。在传递到解码器层之前,通过对随机初始化的对象查询进行线性投影生成参考点,如图3 ( a )所示。我们称这个过程为参考点的初始化。图2 展示了收敛模型的学习参考点。初始阶段的参考点均匀分布在图像上,覆盖整个图像区域。我们指出这种初始化类似于基于锚点的检测器中锚点的生成。随着迭代阶段的增加,参考点逐渐向前景中心聚集,最终在最后一个阶段几乎覆盖所有前景。直觉上,参考点作为定位前景的锚点,并使注意力模块集中在前景周围的一组关键采样点上。
图2 可变形DETR参考点的可视化。初始阶段的参考点处于类似图像网格的分布。经过6次迭代后,参考点聚集到前景的中心。
解码器中参考点的不同初始化对模型有影响?
表3 参考点的不同初始化的效果。不同的初始化导致1 -解码器结构中巨大的性能差距。然而,6 -解码器结构打破了他们的差距。
图4 不同初始化的参考点。6解码器的级联结构中,虽然参考点在初始阶段有不同的分布,但在最后阶段它们趋于相似的分布。
在基于锚点的检测器中,锚点的生成对模型的性能有很大的影响。大多数情况下,锚点都是在每个滑动窗口位置生成的,这被证明是对象建议的适当初始化。作为锚点的参考点的初始化可能会对可变形DETR的性能产生影响。我们在级联( 6-decoder )和无层叠( 1-decoder )结构中尝试了几种不同的参考点初始化方式,并比较了它们的性能。如表3 所示,不同的初始化方式在无层叠结构中表现不同。相反,它们在级联结构中导致类似的性能。与推测一致,网格初始化在滑动窗口的中心生成参考点,其结果大约等于可学习初始化的性能。然而,其他两种初始化方式,中心和边界,在没有迭代的情况下会导致精度的巨大下降。为了更好地分析,我们在几个阶段可视化了不同初始化的参考点(图4 )。随着迭代次数的增加,它们的参考点趋于相同的分布,并在最后阶段以相似的模式定位前景。总之,在非级联结构中,参考点的不同初始化导致模型性能的巨大差异,而级联结构则通过多次迭代带来参考点性能的差距。从另一个角度来说,更好的参考点初始化可以提高非级联结构下的性能。
我们可以带来更好的初始化1 -解码器结构和6 -解码器结构的差距?
根据上一部分的研究结果,更好地初始化参考点可能会提高性能,尤其是对于1 -解码器结构。考虑到参考点作为锚点,我们假设主流检测器中的锚点先验可以帮助我们解决这个问题。在现代的两阶段检测器中,区域提议由RPN以滑动窗口的方式生成,为前景提供一组类不可知的候选。RPN是一种高效的结构来产生具有稠密先验的前景粗边界框。如图3 ( b )所示,我们在编码器的密集特征上添加了一个RPN层。RPN头共享编码器的特性,并预测锚的对象性分数和偏移。得分最高的边界框被选为区域提案。然后,我们用非级联结构中的区域建议的中心初始化参考点。表3 给出了结果,其结果远远优于其他方法,导致非级联结构得到了巨大的改善。图5 演示了该方法的可视化,其中参考点在初始阶段得到了与其他方法在最后阶段相似的分布。区域建议以更合理的分布初始化参考点,提高了无级联结构Deformable DETR的精度。
表4 用稠密先验初始化参考点和对象查询
正如我们在表4 中看到的,为参考点提供一个更好的初始状态和稠密的先验结果在1 -解码器结构中得到了显著的改进。然而,参考点只是对象查询的空间投影,而对象查询包含了对象容器额外的抽象信息。
那么,如何在同一时间使用密集先验初始化256-d查询的特性呢?
直观地,对于提案初始化中的每个参考点,我们从特征映射(即来自编码器的256维张量)中选择其相应的特征,作为其对象查询的初始化。我们的方法如图3 ( c )所示。在表4 中,我们的方法通过3个AP的比较进一步改进了1 -解码器结构。此外,只初始化具有稠密先验的对象查询和使用没有参考点的原始解码器也能给基线带来显著的改善。
这些结果表明对象容器的初始状态,包括De - formable DETR中的参考点和对象查询,与非级联结构的性能高度相关。RPN中提案的信息提供了一个更好的初始化,通过密集的先验来提高性能。基于我们的研究,我们提出了高效的DETR,它能够带来1 -解码器结构和6 -解码器结构之间的性能差距。
图5 高效Detr架构。Top - K表示topk选择方法。例如,来自密集部分的锚点的最高得分索引用于从编码器中选择对象查询,从区域建议中选择参考点。
受上一节中的发现的启发,我们提出了一个简单但高效的对象检测框架,称为Efficient DETR。它有3个编码器层和只有1个解码器层,没有解码器中的级联结构。架构如图5 所示。高效的DETR由两部分组成:稠密部分和稀疏部分。密集部分对来自编码器的密集特征进行预测。应用一个top - k选择方法从稠密预测集中挑选出一组方案。来自解码器的4 - d建议及其256 - d特性被用作参考点和对象查询的初始化。在稀疏部分,使用稠密先验初始化的对象容器、参考点和对象查询被送入1层解码器,与编码器特征进行交互以进一步细化。最后的结果是从精化的对象容器中预测的。两个部件共用一个检测头。所有编码器和解码器层都使用Deformerable-DETR中提出的可变形注意力模块。对于剩下的部分,我们将介绍我们网络的细节。
在Deformable DETR设计的基础上,我们利用ResNet提取的多尺度特征图构建了一个主干网络。我们的主干有4个尺度的256个通道的特征图。前3个特征图通过1 × 1步长为1的卷积从ResNet的C3、C4、C5特征图中提取。最后一个特征图是通过C5上的3 × 3跨步2卷积生成的。
如前所述,密集部分由主干、编码器和检测头组成。当用卷积替换编码器时,它成为一个单级检测器。在两阶段Deformable DETR之后,在多尺度特征图上为每个位置生成锚点。基础锚尺度设置为0.05。检测头预测每个锚点的C ( DETR中C = 91 )类别分数和4个偏移量。在DETR、Sparse r-cnn、Deformable detr之后,分类分支是一个线性投影层,回归分支是一个隐藏大小256的3层感知机。
密集部分的输出具有编码器特征的大小。我们根据它们的对象性得分选择一组,定义为被前景化的置信度。
在稠密部分,每个锚点的预测来自编码器特征图中的一个256维特征。我们将这个256 - d特性作为提案特性。提议特性和参考点成对出现,并通过相同的锚连接。在我们的方法中,提议特征被作为其参考点的对象查询。有意义的是,首先,当特征经过编码器层时,位置编码已经被编码到建议特征中。其次,密集部分做同样的任务作为稀疏部分,除了他们的输出的大小。直觉上,来自密集部分的特征可以作为稀疏部分的初始状态。此外,考虑到密集部分和稀疏部分的任务十分相似,这两个部分共享同一个检测头。但是,以每一个256维的特征作为训练样本,由于每次迭代的训练样本较多,密集部分比稀疏部分收敛更快。从这一点来说,稠密特征(提议特征)可以作为稀疏特征(对象查询)的良好初始化。
在初始化之后,对象查询被发送到解码器层进行进一步的增强。在传统的检测方法中,单级检测器面临特征错位,而双级检测器通过ROIAlign或ROIPool来解决这一问题。在我们的稀疏部分中,错位由解码器固定,其中交叉注意力模块使对象查询能够聚合与它相关的特征。最终的预测结果来自这些增强的对象查询。
与以前的DETR不同,我们的提案数量在训练过程中动态调整。鉴于网络在训练之初不能够预测准确的类别得分,因此从一开始就设置了大量的建议集( 300个)。这主要确保了几乎所有的前景都包含在稀疏的提案集中。然而,小数量的提案又会漏掉很少的硬例子,这导致训练不稳定。随着网络的训练,我们线性减少数量,最终数量减少到100个。该策略使得网络高效,达到了与训练300个提案相当的准确率,只有100个提案。
我们的框架的稠密部分和稀疏部分共享相同的标签分配规则和损失函数。为了避免像NMS那样的后处理,采用一对一的标签分配规则。在DETR和Deformerbale-DETR之后,我们通过匈牙利算法将预测与真实值进行匹配。
匹配代价的定义与损失函数相同,。损失函数与DETR中的相同。表示用于分类的 focal loss。表示定位中的L1损失和广义IoU损失[ 28 ],和为它们的系数。我们在稠密部分应用一对一的标签分配规则而不是一对多的分配,因为一对多的分配依赖于更多的提议来达到相似的性能。高效DETR在稠密部件集中的一对一分配在少量建议( 100 )的情况下实现了高准确率。
数据集。我们的实验在具有挑战性的MS COCO基准上进行。模型在COCO train2017 split上训练,并用val2017进行评估。我们根据之前的研究报告了mAP用于绩效评估。
实施细节。我们使用 ImageNet 预训练的ResNet - 50作为高效DETR的主干。使用了从C3到C6的多尺度特征图。C6是通过C5上的3 x 3步长为2的卷积生成。M = 8和K = 4被设置为可变形的注意力。模型训练了36个epoch,学习率在第24个epoch衰减了0.1倍。损失函数的参数设置:。我们使用Adam优化器,其基学习率为0.0001,β1 = 0.9,β2 = 0.999,权重衰减为0.0001。
表5 与COCO 2017验证集上的现代目标检测器相比。*表示高效DETR采用6编码器和1解码器结构
我们的主要结果如表5 所示。所有模型均在COCO 2017验证集上进行评估。高效的DETR与主流检测器更快速的区域卷积神经网络和其他最先进的端到端检测器(如DE - TR和Sparse RCNN )相比。从表中可以看出,本文提出的基于ResNet50网络的高效DETR在36个epoch的训练下达到了44.2 AP的性能,优于更快速的区域卷积神经网络和大多数端到端检测器,并且具有较少的FLOP和参数。一方面,高效DETR保留是可变形DETR的快速收敛特性。它的收敛速度比原来的DETR快10倍。另一方面,与Deformable DETR相比,Efficient DETR拥有更简单的结构( 3 -编码器和1 -解码器 vs 6 -编码器和6 -解码器)和更少的训练次数( 36epoch vs 50epoch),性能提高了0.4 AP。与其他端到端模型相比,我们的高效DETR在性能上也相当,但效率更高。与最先进的Sparse RCNN相比,AP ( 44.2 AP与44.5 AP)只有0.3的下降。然而,高效DETR的参数比大多数模型( 32M与40M)少20 %。和高效的DETR只需要很少的100个提案就可以实现这个性能,这也有助于提高它的效率。相反,Deformable detr和Sparse r-cnn分别需要300项提案和700项提案。为了进一步改进高效DETR,堆叠更多的编码器层以增强其密集特性。由于其框架的合理设计,它在45.2 AP中实现了最先进的状态,具有6 -编码器和1 -解码器结构,与其他端到端模型相比,它的参数仍然较少。
执行消融研究以分析高效DETR的组件。本部分的模型基于带迭代边界框精化的 Deformable DETR,这是一种在每个解码器层之后迭代更新参考点的优化版本。如果没有特殊说明,我们使用ResNet50网络,一个3层编码器,1层解码器,100个建议和一个3 × ( 36个epoch )的训练计划。
密集部分的检测头。
表6 Class agnostic vs class specific for the dense head
在高效DETR中,密集和稀疏部分共享相同的检测头,这将为每个锚预测C ( DETR中C = 91 [ 2,43 ])类别分数。我们将每个锚点的最大类别分数作为其客观性分数,它表示作为前景的信心。而在主流的检测器中,RPN通过一个二进制类无关分类器直接预测对象性分数。顶部得分的提案及其特性被选为对象容器的初始化。所选的对象容器初始化建议由所有锚点的前K个最大分数决定,即类不可知的前景分数和类特定的最大分数。构建了一个额外的检测头来探索类不可知性和类特定性对对象容器初始化的影响。我们基于致密部分进行消融研究。表6 显示了特定类( class specific )可以获得更好的准确性。我们假设,与类不可知相比,类特定性给稠密部分带来更多的监督。特定类增强了256 - d编码器特性中的类别信息,从而在稀疏部分为对象查询提供了更好的初始状态。此外,表6 显示共享两个部件的检测头( Share Head )不会损害性能。
提案数量。
表8 提案( proposal )数量的影响。固定( Fixed )表示模型在整个训练过程中以固定数量的提议进行训练。取而代之的是在训练过程中线性递减( Linear Decrease )的提案数量。
在 Sparse r-cnn 中,提案的数量很大程度上影响了模型的性能。相比之下,表8 显示,将提案数量从100个增加到1000个,我们的工作得到了微小的改进( 0.2 AP )。此外,我们提出的方法,随着训练的进行,提案的数量从大量线性减少到100个,这证明了DETR与不同数量的提案之间的差距。从更多的提案中进行训练使得训练过程更加稳定。由于在训练初期,模型容易遗漏少数几个目标的提议,从而导致标签分配的不稳定性。随着训练的进行,模型能够给最前台一个很高的评分。而且没有必要通过收集大量的建议来掩盖它们。
密集部分中的标签分配。
表9 不同分配在密集部分的影响
Efficient DETR中的稠密部分和稀疏部分都使用一对一的标签分配规则。考虑到现代密集检测器采用一对多的标签分配规则,我们在密集部分进行了尝试。评估了1 - to - N的( N = { 1,5,10 })分配。这些提案,其IoU与基本真相排序为N ( N > 1),被指定为正面样本。如表9 所示,一对多分配会导致性能下降。随着N变大,AP显著下降。通过增加模型评估时的提案数量,我们发现使用一对多分配规则训练的模型表现出明显的改善。例如,用1 to 10赋值训练的模型有2.2 AP ( 37.8比35.6)的改进。然而,1 to 1赋值的模型显示没有任何改进。我们假设,经过一对多分配训练的密集部分需要更多的提议才能达到很高的精度。由于1到N的赋值会导致前景的重复预测。在这种情况下,需要大量的提案来涵盖图像中所有对象的提案。
编码器和解码器的数量。
表7 在Efficient DETR上堆叠解码器层
由于高效DETR在COCO中实现了3 -编码器和1 -解码器结构的高精度。表5 显示,堆叠另外3个编码器层可以提高0.9 AP的性能。然而,如表7所示,堆叠高效DETR后的解码器层带来了轻微的改善。取而代之的是,经过两次迭代后,模型的性能甚至有所下降。这表明将解码器层级联到Efficient DETR是不必要的。
表10 关于Crowdhuman的结果
我们在 Crowd Humandataset 数据集上评估了我们的方法,以验证Efficient DETR拥挤场景的鲁棒性。如表10 所示,与Deformable DETR相比,Efficient DETR以较大的优势超越了其他检测器,例如4 AP和5 mMR增益。特别地,我们的方法仅用100个提案就实现了这一点。更多的建议(例如400 )导致mMR上升。我们假设密集部分在其鲁棒性中起着重要的作用,它使得高效的DETR能够覆盖拥挤场景中几乎所有的前景。稠密部分的1 - to - 1分配使得我们的模型在拥挤场景中表现良好,并提供了一些建议。大量的提案可能给最终结果带来更多的假阳性。这表明我们的方法具有很强的泛化能力,能够有效地处理一般场景下的目标检测。
>>> 更多内容见论文大纲链接计算机视觉论文精度大纲_Flying Bulldog的博客-CSDN博客https://blog.csdn.net/qq_54185421/article/details/125571690
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。