文献阅读-DINO

Scroll Down

DINO: DETR with Improved DeNoising Anchor Boxes for End-to-End Object Detection

Abstract

我们提出了DINO(带改进去噪anchor box的DETR),一种最先进的端到端目标检测器。DINO通过使用对比方法进行去噪训练,使用混合查询选择方法进行anchor初始化,使用前向两次方案进行框预测,在性能和效率上都比以前的类der模型有所提高。在ResNet-50骨干网和多尺度特征下,DINO在COCO上12个epoch达到49.4AP, 24个epoch达到51.3AP,与之前最好的类detr模型DN-DETR相比,分别提高了+6.0AP和+2.7AP。DINO在模型大小和数据大小上都有很好的伸缩性。不加修饰,DINO在Objects365数据集上使用SwinL主干进行预训练后,在COCO val2017 (63.2AP)和test-dev (63.3AP)上都获得了最佳结果。与排行榜上的其他模型相比,DINO显著减小了模型大小和预训练数据大小,同时取得了更好的结果。我们的代码将在https: //github.com/IDEACVR/DINO上提供。

Keywords

Object Detection; Detection Transformer; End-to-end Detector

1. Introduction

目标检测是计算机视觉中的一项基本任务。经典的基于卷积的目标检测算法已经取得了显著的进展[31, 35, 19, 2, 12],尽管这些算法通常包括手工设计的组件,如锚点生成和非最大抑制(NMS),但它们产生了最好的检测模型,如使用HTC++[4]的DyHead[7]、Swin[23]和SwinV2[22],这在COCO测试开发排行榜上得到了证明[1]。

image.png

与经典检测算法相比,DETR[3]是一种基于transformer的新型检测算法。它消除了手工设计组件的需要,并实现了与优化的经典检测器(如Faster R-CNN)相当的性能[31]。与以往的检测器不同,DETR将目标检测建模为一组预测任务,并通过二部图匹配来分配标签。它利用可学习查询来探测对象的存在性,并结合图像特征映射中的特征,其行为类似于软ROI池化[21]。

尽管具有良好的性能,但DETR的训练收敛速度较慢,并且查询的含义不明确。为了解决这些问题,人们提出了许多方法,如引入可变形注意力[41],解耦位置和内容信息[25],提供空间先验[11,39,37]等。最近,DAB-DETR[21]提出将DETR查询表述为动态锚点盒(DAB),这弥补了经典的基于锚点的检测器与类锚点盒检测器之间的差距。DN- detr[17]通过引入去噪(DN)技术进一步解决了二部匹配的不稳定性。DAB和DN的结合使得类der模型在训练效率和推理性能上都能与经典检测器相媲美.

目前最好的检测模型是基于改进的经典检测器,如DyHead[8]和HTC[4]。例如,SwinV2[22]中呈现的最佳结果是使用HTC++[4,23]框架进行训练的。造成这种现象的主要原因有两个:1)以前的类der模型不如改进的经典探测器。大多数经典的检测器已经被很好地研究和高度优化了,与新开发的类der模型相比,性能更好。例如,目前表现最好的类der模型在COCO上的AP仍然低于50。2)类der模型的可扩展性尚未得到很好的研究。在扩展到大型主干和大规模数据集时,没有关于类似der的模型如何执行的报告结果。我们的目标是在本文中解决这两个问题。

具体来说,通过改进去噪训练、查询初始化和框预测,我们基于DN-DETR[17]、DAB-DETR[21]和Deformable DETR[41]设计了一种新的类DETR模型。我们将模型命名为DINO(带改进去噪锚框的DETR)。如图1所示,通过与COCO的对比可以看出DINO的性能更优。特别是,DINO展示了良好的可扩展性,在COCO测试开发排行榜上创下了63.3 AP的新记录[1]。

作为一个类似于DETR的模型,DINO包含一个主干、一个多层Transformer编码器、一个多层Transformer解码器和多个预测头。遵循DAB-DETR[21],我们将解码器中的查询表述为动态锚框,并跨解码器层逐步对其进行细化。根据DN-DETR[17],我们在Transformer解码器层中添加了ground truth标签和带有噪声的盒子,以帮助在训练过程中稳定二部匹配。考虑到计算效率,我们还采用了可变形注意力[41]。此外,我们提出了以下三种新方法。首先,为了改善一对一匹配,我们提出了一种对比去噪训练方法,即同时添加相同ground truth的正样本和负样本。将两种不同的噪声添加到同一ground truth box中后,我们将噪声较小的盒子标记为正,另一个标记为负。对比去噪训练有助于模型避免同一目标的重复输出。其次,查询的动态锚盒公式将类DETR模型与经典的两阶段模型联系起来。因此,我们提出了一种混合查询选择方法,该方法有助于更好地初始化查询。我们选择初始锚框作为编码器输出的位置查询,类似于[41,39]。然而,我们让内容查询像以前一样是可学习的,鼓励第一个解码器层专注于空间先验。第三,为了利用来自后期层的精细化盒信息来帮助优化相邻早期层的参数,我们提出了一种新的前向两次方案,使用来自后期层的梯度来校正更新后的参数。

我们在COCO[20]检测基准上进行了大量实验,验证了DINO的有效性。如图1所示,在ResNet-50和多尺度特征下,DINO在12个历元下达到49.4AP,在24个历元下达到51.3AP,与之前最好的类der模型相比,分别显著提高了+6.0AP和+2.7AP。此外,DINO在模型大小和数据大小上都具有良好的可伸缩性。在使用SwinL[23]主干的Objects365[33]数据集上进行预训练后,DINO在COCO val2017 (63.2AP)和test-dev (63.3AP)基准测试上均取得了最佳结果,如表3所示。与排行榜上的其他模型[1]相比,我们将模型大小缩小到SwinV2-G的1/15[22]。与Florence相比[40],我们降低了预训练检测数据集到1/5,backbone预训练数据集到1/60并取得了更好的结果。

我们总结我们的贡献如下:

  1. 我们设计了一种新的端到端类der目标检测器,采用了几种新技术,包括对比DN训练,混合查询选择,并对DINO模型的不同部分进行两次forward。
  2. 我们进行了密集的消融研究,以验证不同设计选择在DINO中的有效性。结果表明,在ResNet-50和多尺度特征下,DINO在12个epoch下达到49.4AP,在24个历epoch下达到51.3AP,明显优于之前最好的类DETR模型。特别是,经过12个epoch训练的DINO在小物体上表现出更明显的改进,提高了+7.5AP。
  3. 我们证明,在没有附加功能的情况下,DINO可以在公共基准测试中获得最佳性能。在使用SwinL[23]主干的Objects365[33]数据集上进行预训练后,DINO在COCO val2017 (63.2AP)和test-dev (63.3AP)基准测试上都取得了最佳结果。据我们所知,这是端到端transformer检测器首次在COCO排行榜上超越最先进的(SOTA)模型[1]。

2. Releted Work

2.1 Classical Object Detectors

早期基于卷积的对象检测器要么是两阶段模型,要么是单阶段模型,基于手工设计的锚点或参考点。两阶段模型[30,13]通常使用区域建议网络(region proposal network, RPN)[30]提出潜在盒子,然后在第二阶段对其进行细化。YOLO v2[28]和YOLO v3[29]等单阶段模型直接输出相对于预定义锚的偏移量。最近,一些基于卷积的模型如HTC++[4]和Dyhead[7]在COCO 2017数据集上取得了优异的性能[20]。然而,基于卷积的模型的性能依赖于它们生成锚点的方式。此外,它们需要手工设计的组件(如NMS)来消除冗余框,因此无法执行端到端优化。

2.2 DETR and Its Variants

Carion等[3]提出了一种基于Transformer的端到端对象检测器,命名为DETR (Detection Transformer),而不使用锚点设计和NMS等手工设计的组件。许多后续论文试图解决解码器交叉注意引起的DETR训练收敛缓慢的问题。例如,Sun等人[34]设计了一个只使用编码器的DETR,而不使用解码器。Dai等人[7]提出了一种动态解码器,从多个特征层次关注重要区域。

另一条更重要的研究方向是更深入理解DETR中decoder queries,可变形的DETR[41]预测二维锚点,并设计了一个可变形的注意力模块,该模块只关注参考点周围的某些采样点。高效DETR[39]从编码器的密集预测中选择前K个位置,以增强解码器查询。DAB-DETR[21]进一步将2D锚点扩展为4D锚盒坐标,以表示查询并动态更新每个解码器层中的框。最近,DN-DETR[17]引入了一种去噪训练方法来加速DETR的训练。它将添加噪声的ground truth标签和框输入解码器,并训练模型重建原始标签和框。本文的DINO工作基于DAB-DETR和DN-DETR,并且为了提高计算效率,还采用了可变形注意力。

2.3 Large-scale Pre-training for Object Detection

大规模预训练对自然语言处理[10]和计算机视觉[27]都产生了很大的影响。目前,性能最好的检测器大多是通过对大规模数据进行预训练的大型骨干来实现的。例如,Swin V2[22]将其骨干规模扩展到30亿个参数,并使用70M张私人采集的图像对其模型进行预训练。Florence[40]首先用900M个私人策划的图像-文本对对其主干进行预训练,然后用9M个带注释或伪框的图像对其检测器进行预训练。相比之下,DINO仅使用公开可用的SwinL[23]主干和公共数据集Objects365 [33] (1.7M注释图像)来实现SOTA结果。

3. DINO: DETR with Improved DeNoising Anchor Boxes

3.1 Preliminaries

通过对Conditional DETR[25]和DAB-DETR[21]的研究可知,DETR[3]中的查询由位置部分和内容部分两部分组成,本文将这两部分分别称为位置查询和内容查询。DAB-DETR[21]将DETR中的每个位置查询明确地表述为一个4D锚框(x, y, w, h),其中x和y是锚框的中心坐标,w和h对应锚框的宽度和高度。这种明确的锚盒公式使得在解码器中逐层动态细化锚盒变得容易。

DN- detr[17]引入了一种去噪(DN)训练方法来加速类der模型的训练收敛。结果表明,DETR算法的缓慢收敛问题是由二部匹配的不稳定性引起的。为了缓解这个问题,DN-DETR提出在Transformer解码器中额外馈送带噪声的ground-truth (GT)标签和框,并训练模型重建ground-truth标签和框。增加的噪声(∆x,∆y,∆w,∆h)由image.png,其中(x,y,w,h)表示GT box,image.png是控制噪声尺度的超参数。由于DNDETR遵循DAB-DETR将解码器查询视为锚点,因此由于λ通常很小,因此噪声GT盒可以视为附近有GT盒的特殊锚点。除了原始的DETR查询之外,DN-DETR添加了一个DN部分,该部分将带噪的GT标签和框馈送到解码器中,以提供辅助DN损失。DN损失有效地稳定和加速了DETR训练,并且可以插入任何类似DETR的模型中。

image.png

可变形的DETR[41]是另一项加快DETR收敛的早期工作。为了计算可变形注意力,引入了参考点的概念,使可变形注意力关注参考点周围的一小组关键采样点。参考点概念使得开发几种技术来进一步提高DETR性能成为可能。第一种技术是查询selection,它直接从编码器中选择特征和参考框作为解码器的输入。第二种技术是迭代边界盒细化,在两个解码器层之间采用谨慎的梯度分离设计。在我们的论文中,我们称这种梯度脱离技术为“向前看一次”。

继db - detr和DN- detr之后,DINO将位置查询表述为动态锚框,并使用额外的DN损失进行训练。需要注意的是,DNDETR还采用了Deformable DETR的一些技术来实现更好的性能,包括它的可变形注意机制和在层参数更新中实现“向前看一次”,DINO进一步采用了Deformable DETR中的查询选择思想来更好地初始化位置查询。在此强大的基础上,DINO引入了三种新方法来进一步提高检测性能,将分别在3.3节,3.4节和3.5节中进行描述。

3.2 Model Overview

作为一个类似于DETR的模型,DINO是一个端到端架构,它包含一个主干、一个多层Transformer[36]编码器、一个多层Transformer解码器和多个预测头。整体管道如图2所示。给定图像,我们提取具有ResNet[14]或Swin Transformer[23]等主干的多尺度特征,然后将其通过相应的位置嵌入馈送到Transformer编码器中。在对编码器层进行特征增强之后,我们提出了一种新的混合查询选择策略,将锚点初始化为解码器的位置查询。请注意,此策略不会初始化内容查询,而是使其可学习。关于混合查询选择的更多细节,请参见第3.4节。对于初始化的锚点和可学习的内容查询,我们使用可变形注意力[41]来组合编码器输出的特征并逐层更新查询。最终输出由精炼的锚盒和精炼的内容特征预测的分类结果组成。与DN- detr[17]一样,我们有一个额外的DN分支来进行去噪训练。在标准DN方法之外,我们提出了一种考虑hard negtive样本的新的对比去噪训练方法,将在第3.3节中介绍。为了充分利用来自后期层的精炼box信息来帮助优化相邻早期层的参数,提出了一种新的前向两次方法来传递相邻层之间的梯度,这将在第3.5节中描述。

Contrastive DeNoising Training

DN-DETR在稳定训练和加速收敛方面非常有效。在DN查询的帮助下,它学习基于附近有GT盒子的anchor进行预测。但是,对于附近没有物体的锚点,缺乏“无物体”的预测能力。为了解决这个问题,我们提出了一种对比去噪(CDN)方法来拒绝无用的锚点。
实现 DN-DETR有一个超参数λ来控制噪声尺度。生成的噪声不大于λ,因为DN-DETR希望模型从中等噪声查询中重建ground truth (GT)。在我们的方法中,我们有两个超参数λ1和λ2,其中λ1 < λ2。如图3中的同心圆所示,我们生成了两种类型的CDN查询:正查询和负查询。内方格内的正查询具有小于λ1的噪声尺度,并且期望重建其相应的ground truth盒。内外方之间的负查询具有大于λ1且小于λ2的噪声尺度。他们被期望预测“没有对象”。我们通常采用小的λ2,因为更接近于GT框的困难负样本更有利于提升性能。如图3所示,每个CDN组都有一组正查询和反查询。如果图像有n个GT框,则CDN组将有2 × n个查询,每个GT框生成一个正查询和一个负查询。与DN-DETR类似,我们也使用多个CDN组来提高我们方法的有效性。box回归的重建损失为l1和GIOU损失,分类的重建损失为focal loss[19]。将负样本分类为背景的损失也是焦点损失。
image.png

分析我们的方法之所以有效,是因为它可以抑制混淆,并选择高质量的anchor(查询)来预测边界框。当多个锚点靠近一个对象时,就会发生混淆。在这种情况下,模型很难决定选择哪个锚。这种混乱可能会导致两个问题。首先是重复预测。尽管类DETR模型可以借助基于集合的损失和自注意力来抑制重复box[3],但这种能力是有限的。如图8左图所示,当用DN查询替换我们的CDN查询时,箭头所指的男孩有3个重复的预测。通过CDN查询,我们的模型可以区分锚点之间的细微差异,避免重复预测,如图8右图所示。第二个问题是,可能会选择远离GT盒子的不需要的锚。虽然去噪训练[17]改进了模型选择附近锚点的能力,但CDN通过教会模型拒绝更远的锚点进一步提高了这一能力。

有效性 为了证明CDN的有效性,我们定义了一个称为平均顶k距离(ATD(k))的度量,并用它来评估匹配部分中锚点与目标GT盒的距离。与DETR一样,每个锚点对应一个预测,该预测可能与GT框或背景相匹配。我们这里只考虑与GT盒子匹配的。假设我们有N个GT边界框b0, b2,…, bN−1,其中bi = (xi, yi, wi, hi)。对于每个bi,我们可以找到它对应的锚点,并表示为image.png。Ai是解码器的初始锚框,匹配时将最后一层解码器后的细化盒分配给bi。然后我们有:
image.png其中∥bi−ai∥1是bi和ai之间的l1距离,topK(x, k)是返回x中k个最大元素集合的函数。我们选择top-K元素的原因是,当GT盒子与更远的锚点匹配时,更容易出现混淆问题。如图4 (a)和(b)所示,DN总体上足以选择一个好的锚点。然而,CDN为小对象找到更好的锚。图4 (c)显示,在ResNet-50和多尺度特征的12个epoch中,CDN查询在小对象上比DN查询提高了+1.3 AP。
image.png

3.4 Mixed Query Selection

可变形的DETR[41]学习位置查询和内容查询,这是静态查询初始化的另一种实现。为了进一步提高性能,Deformable DETR[41]有一个查询选择变体(在[41]中称为“two-stage”),它从最后一个编码器层中选择前K个编码器特征作为优先选项,以增强解码器查询。如图5 (b)所示,位置查询和内容查询都是通过所选特征的线性变换生成的。此外,将这些选择的特征馈送到辅助检测头以获得预测盒,该预测盒用于初始化参考盒。同样,Efficient DETR[39]也根据每个编码器特征的客观性(类)得分来选择前K个特征。
image.png
模型中查询的动态4D锚盒公式使其与解码器位置查询密切相关,可以通过查询选择来改进。我们遵循上述实践并提出一种混合查询选择方法。如图5 (c)所示,我们只使用与所选top-K特征相关联的位置信息初始化锚框,而内容查询与之前一样保持静态。注意,Deformable DETR[41]利用top-K特征不仅增强了位置查询,还增强了内容查询。由于所选特征是未经进一步细化的初步内容特征,因此它们可能是含糊不清的,并且会误导解码器。例如,选定的特征可能包含多个对象,也可能只是对象的一部分。相比之下,我们的混合查询选择方法仅增强具有top-K选择特征的位置查询,并保持内容查询像以前一样可学习。它有助于模型使用更好的位置信息,从编码器中汇集更全面的内容特征。

3.5 Look Forward Twice

image.png

在本节中,我们提出了一种新的框预测方法。Deformable DETR中的迭代盒细化[41]阻止梯度反向传播以稳定训练。我们将该方法命名为forward一次,因为第i层的参数仅根据盒体bi的辅助损失进行更新,如图6 (a)所示.然而,我们推测来自后一层的改进框信息可能更有助于校正相邻早期层的框预测。因此,我们提出了另一种称为前向两次的方法来执行框更新,其中层i的参数受到层i和层-(i +1)损失的影响,如图6 (b)所示。对于每个预测偏移量∆bi,它将用于两次更新框,一次用于b'i,另一次用于image.png,因此我们将我们的方法命名为前向两次。

预测框image.pngb (pred) i的最终精度由两个因素决定:初始框bi−1的质量和预测框∆bi的偏移量。展望一旦方案只优化后者,因为梯度信息从层i分离到层-(i−1)。相反,我们改进了初始盒bi−1和预测盒偏移量∆bi。提高质量的一个简单方法是用下一层的输出∆bi+1来监督第i层的最后一个盒子b'i。因此,我们使用b'i和∆bi+1的和作为层-(i +1)的预测框。

更具体地说,给定第i层的输入框bi−1,我们通过以下方式得到最终的预测框image.png:

image.png

其中b ' I是bi的独立形式。术语Update(·,·)是一个函数,它通过预测的框偏移量∆bi来细化框bi−1。对于box update3,我们采用与Deformable DETR[41]相同的方法。

4. Experiments

Setup

数据集和主干:我们对COCO 2017目标检测数据集[20]进行评估,该数据集分为train2017和val2017(也称为minival)。我们报告了两种不同主干的结果:在ImageNet-1k[9]上预训练的ResNet-50[14]和在ImageNet-22k[9]上预训练的SwinL[23]。使用ResNet-50的DINO在train2017上进行训练,没有额外的数据,而使用SwinL的DINO首先在Object365上进行预训练[33],然后在train2017上进行微调。我们报告了不同IoU阈值和对象尺度下val2017的标准平均精度(AP)结果。我们还报告了使用SwinL进行DINO的测试开发结果。

实现细节:DINO由主干、变压器编码器、变压器解码器和多个预测头组成。在附录D中,我们提供了更多的实现细节,包括我们的模型中使用的所有超参数和工程技术,供那些想要重现我们的结果的人使用。我们将在盲审后发布代码。

4.2 Main Results

image.png

12个epoch设置:我们改进的锚盒去噪和训练损失,可以显著加快训练过程。如表1所示,我们将我们的方法与强基线进行了比较,包括基于卷积的方法[30,4,7]和类der方法[3,41,8,21,17]。为了公平比较,我们报告了在表1中列出的所有型号的相同A100 NVIDIA GPU上测试的GFLOPS和FPS。除DETR和DAB-DETR外,其他方法均使用多尺度特征。对于那些没有多尺度特征的,我们使用ResNet-DC5报告了他们的结果,ResNet-DC5由于使用了扩展的大分辨率特征图而具有更好的性能。由于有些方法采用5个尺度的特征图,有些方法采用4个尺度的特征图,所以我们同时报告了4个和5个尺度的特征图结果。

如表1所示,在相同的设置下,我们的方法使用ResNet-50与4比例尺特征图和+6.0 AP与5比例尺特征图分别提高了5.6 AP和6.0 AP。我们的4尺度模型在计算和参数数量上没有引入太多的开销。此外,我们的方法在小物体上表现得特别好,在4个尺度上获得+7.2 AP,在5个尺度上获得+7.5 AP。请注意,由于工程技术的原因,我们使用ResNet-50骨干网的模型的结果高于本文第一版的结果。

与具有ResNet-50骨干网的最佳模型的比较: 为了验证我们方法在提升模型收敛速度和性能上的有效性,我们将我们的方法与使用相同ResNet-50主干的几个强基线进行比较。尽管最常见的50 epoch设置,但我们采用了24 (2x)和36 (3x) epoch设置,因为我们的方法收敛得更快,并且在50 epoch训练中只产生较小的额外增益。表2的结果表明,我们的方法仅使用24个epoch,在4个和5个尺度下分别实现了+1.8 AP和+2.7 AP的改进。此外,在3x设置中使用36个epoch,在4和5个尺度下,改善分别增加到+2.3和+2.6 AP。详细的收敛曲线对比如图7所示。

image.png

image.png

image.png

4.3 Comparison with SOTA Models

为了与SOTA结果进行比较,我们使用了在ImageNet-22K上预训练的公开可用的SwinL[23]主干。我们首先在Objects365[33]数据集上预训练DINO,然后在COCO上对其进行微调。如表3所示,DINO在COCO val2017和test-dev上分别获得了63.2AP和63.3AP的最佳结果,这表明DINO对更大的模型规模和数据规模具有很强的可扩展性。请注意,表3中所有以前的SOTA型号都没有使用基于Transformer解码器的检测头(HTC++[4]和DyHead[7])。这是第一次将端到端Transformer检测器作为SOTA模型建立在排行榜上[1]。与之前的SOTA模型相比,我们使用了更小的模型大小(与SwinV2-G相比有1/15个参数[22]),骨干预训练数据大小(与Florence相比有1/60张图像),检测预训练数据大小(与Florence相比有1/5张图像),同时取得了更好的结果。此外,我们报告的没有测试时间增加(TTA)的性能是一个整洁的结果,没有花哨的东西。这些结果有效地证明了DINO与传统检测器相比具有优越的检测性能。

4.4 Ablation

新算法组件的有效性:为了验证我们提出的方法的有效性,我们使用优化的DN-DETR和纯查询选择构建了一个强基线,如第3.1节所述。我们将所有管道优化和工程技术(参见4.1节和附录D)包括在强基线中。强基线的结果见表4第3行。我们还在表4第2行中给出了没有从可变形的DETR[41]中进行纯查询选择的优化DN-DETR的结果。虽然我们的强基线优于所有以前的模型,但我们在DINO中的三种新方法进一步显著提高了性能。
image.png

5. Conclusion

本文提出了一种基于对比去噪训练、混合查询选择和前视两次的强端到端变压器检测器DINO,显著提高了训练效率和最终检测性能。结果表明,DINO在多尺度特征的12epoch和36epoch设置下都优于之前基于resnet -50的COCO val2017模型。在改进的激励下,我们进一步探索在更大的数据集上训练具有更强主干的DINO,并在COCO 2017测试开发上实现了63.3 AP的新水平。该结果确立了类der模型作为主流检测框架,不仅因为其新颖的端到端检测优化,而且还因为其优越的性能。

image.png