目标检测DINO-DETR(2023)详细解读
文章目录
- 对比去噪训练
- 混合查询选择
- look forward twice
论文全称为:DETR with Improved DeNoising Anchor Boxes for End-to-End Object Detection
提出了三个新的方法:
-
首先,为了改进一对一的匹配效果,提出了一种对比去噪训练方法,通过同时添加同一个GT的正、负样本来进行对比去噪训练。在同一个GT中加入两个不同的噪声后,将具有较小噪声的框标记为正,另一个标记为负。对比去噪训练可以帮助模型避免同一目标的重复输出
-
其次,使用了一种类似两阶段的模型(Deformable DETR的two stage)。提出了一种混合查询选择方法,这有助于更好地初始化查询. 从encoder的输出中选择初始锚定框作为位置查询,类似于Deformable DETR.然而,让内容查询像以前一样可以学习,从而鼓励第一个解码器层关注空间先验(空间位置先验与当前的图像更加的相关)
-
第三,为了利用后期层的refined box信息来帮助优化相邻早期层的参数,提出了一种新的look forward twice方案,用后面的层的梯度来修正更新后的参数
DINO-DETR的整体架构如上图所示,首先通过backbone得到多尺度的特征,然后给特征加上位置编码,将他们喂给Transformer Encoder得到增强后的特征。在decoder之前,作者将原本的decoder query视作两个部分,位置query和内容query。作者提出了一种新的混合的query selection策略来初始化作为位置query的anchors,但是内容query不会初始化(仍然是可学习的使它们保持可学习性)。通过这些用初始化后的anchors(位置)和可学习的内容query, 作者使用Deformable-DETR的deformable attention来组合来自encoder输出的特征,逐层更新decoder query。最终网络通过内容query预测refined anchor boxes和分类等结果。同时作者改进了DN-DETR,提出了一个对比去噪训练的方法,在DN-DETR的基础上将困难负样本考虑在内。最后为了充分利用后层refined box的信息来优化紧邻的前一层的网络参数,作者还提出了一个look forward twice方法。下面分别详细讲讲上述提到的几个改进。
对比去噪训练
DN-detr的去噪训练帮助网络学习基于那些在gt boxes周围的anchors进行预测。但是它没有考虑去预测“no object"的情况,即那些anchors周围没有gt boxes的时候,应该预测出负例。因此作者在DN-DETR的基础上额外构造了负样本,即提出Contrastive DeNoising (CDN)。
在实现上,DINO-DETR拥有两个超参数 λ1,λ2(λ1<λ2) 用于控制正负噪声样本的生成,而DN-DETR只有一个超参数 λ ,DN-DETR控制生成的噪声不超过 λ 并期望网络可以用在gts附近的轻微噪声querys去重构出gts。
如下图右侧所示的同心正方形,DINO-DETR构造正负两种类型的CDN queries,其中positive queries在内部方形,有着比 λ1 更小的噪声scale, 用于重构出他们对应的gts;negative queries在内部方形和外部方形之间,即噪声scale在λ1,λ2(λ1<λ2)之间。作者表示可以通过更小的 λ2 构造困难负样本来提高模型性能。一个CND group可以包含多个正样本和负样本,例如一张图片有n个gts, 每个gt有一正一负两个噪声样本,那么一个CND group有2xn个queries。
该方法之所以有效,是因为它可以抑制混淆,并选择高质量的anchors(查询)来预测边界框。当多个anchors靠近一个对象时,就会发生混淆,在这种情况下,模型很难决定选择哪个锚点。这种混淆可能会导致两个问题:
- 第一个是重复的预测。虽然detr类的模型可以通过基于集合的损失和自我注意的帮助来抑制重复的盒子,但这种能力是有限。使用CDN查询,可以区分anchors之间的细微差别,并避免重复的预测
- 第二个问题是,一个远离GT并且不应该被选择的某个anchor可能会被选择上,虽然去噪训练改进了模型来选择附近的anchor。但CDN通过让模型拒绝更远的anchor,进一步提高了这种能力。
混合查询选择
如(a)所示,在DETR 、DN-DETR 和DAB-DETR 中,解码器查询是静态嵌入,而不从图像中获取任何编码器特征,它们直接从训练数据中学习位置和内容查询,并将内容查询设置为全部都是0的tensor;Deformable Detr的其中一个变体(two-stage),它从编码器最后输出中选择前K个编码器特征作为先验,以增强解码器查询。如图(b)所示,位置查询和内容查询都是通过对所选特性的线性变换生成的。此外,这些被选中的特征被输送到一个辅助检测头,以获得预测方框,并将其用于初始化参考方框。
在DINO中,只使用与所选 Top-K 特征相关的位置信息来初始化锚点框,而内容查询则保持不变,如图(c)所示(Deformable DETR 不仅利用 Top-K 特征来增强位置查询,还增强了内容查询)
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传
内容查询保持不变的原因:由于所选特征是未经进一步完善的初步内容特征,它们可能会含糊不清并误导解码器。例如,一个选定的特征可能包含多个对象,也可能只是一个对象的一部分。与此相反,我们的混合查询选择方法只用前 K 个选定特征来增强位置查询,并保持内容查询的可学习性。这有助于模型利用更好的位置信息,从编码器中汇集更全面的内容特征。
look forward twice
传统的decoder layer每层分别优化看做look forward once模式(如Deformable DETR其中的一个变体),其中 b i − 1 b_{i−1} bi−1是上一层的锚框预测,经过Layer i (Decoder的box_head的修正)后得出偏移量Δ b i b_{i} bi ,来得到新的参考点 b i ’ b_{i}’ bi’,进一步得到预测值 b i p r e d b_{i}^{pred} bipred ,预测值会在辅助头进行损失计算并进行反向传播(只在本层进行梯度反向传播,梯度不会回传到前一层),当前层的预测点作为后一层的参考点(即 b i b_{i} bi的值和 b i ’ b_{i}’ bi’的值是一样的),虚线表示梯度被截断,所以梯度不会回传到前一层(Deformable detr认为如果不进行隔断处理的话,会导致网络非常难以学习)。
作者认为来自后一层的改进box的信息可以帮助校准其相邻的前一层的预测结果。所以他相当于让每层预测的结果往后多传递了一层,也就是 b i − 1 p r e d b_{i−1}^{pred} bi−1pred 是根据前一层的参考点 b i − 1 ’ b_{i−1}’ bi−1’和Δ b i b_{i} bi得到的(如图b),这样预测进行反向传播的时候,梯度会传回到前一层。(这样做的原因:因为最终取得的结果是最后一层的prediction,所以希望前面的层在优化的时候也会考虑一下后面的层,通过试验得到forward两次效果最好)