目标检测DINO-DETR(2023)详细解读


论文全称为:DETR with Improved DeNoising Anchor Boxes for End-to-End Object Detection

提出了三个新的方法:

  1. 首先,为了改进一对一的匹配效果,提出了一种对比去噪训练方法,通过同时添加同一个GT的正、负样本来进行对比去噪训练。在同一个GT中加入两个不同的噪声后,将具有较小噪声的框标记为正,另一个标记为负。对比去噪训练可以帮助模型避免同一目标的重复输出

  2. 其次,使用了一种类似两阶段的模型(Deformable DETR的two stage)。提出了一种混合查询选择方法,这有助于更好地初始化查询. 从encoder的输出中选择初始锚定框作为位置查询,类似于Deformable DETR.然而,让内容查询像以前一样可以学习,从而鼓励第一个解码器层关注空间先验(空间位置先验与当前的图像更加的相关)

  3. 第三,为了利用后期层的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靠近一个对象时,就会发生混淆,在这种情况下,模型很难决定选择哪个锚点。这种混淆可能会导致两个问题:

  1. 第一个是重复的预测。虽然detr类的模型可以通过基于集合的损失和自我注意的帮助来抑制重复的盒子,但这种能力是有限。使用CDN查询,可以区分anchors之间的细微差别,并避免重复的预测
  2. 第二个问题是,一个远离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} bi1是上一层的锚框预测,经过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} bi1pred 是根据前一层的参考点 b i − 1 ’ b_{i−1}’ bi1和Δ b i b_{i} bi得到的(如图b),这样预测进行反向传播的时候,梯度会传回到前一层。(这样做的原因:因为最终取得的结果是最后一层的prediction,所以希望前面的层在优化的时候也会考虑一下后面的层,通过试验得到forward两次效果最好)

### RT-DETRDETR 的差异和对比 #### 背景介绍 DETR (Detection Transformer) 是一种基于 Transformer 架构的目标检测模型,它通过全局注意力机制替代传统的卷积操作,在目标检测领域取得了显著的效果。然而,原始的 DETR 存在收敛速度慢的问题,这促使研究者提出了多种改进版本,其中包括 RT-DETR。 RT-DETR 则是一种优化后的 DETR 变体,旨在解决 DETR 收敛缓慢以及计算复杂度高的问题。以下是两者的主要区别: --- #### 1. **架构设计** - 原始的 DETR 使用标准的 Transformer 编码器-解码器结构来进行特征提取和预测[^1]。其核心在于利用二分匹配策略将预测框分配给真实标签。 - RT-DETRDETR 的架构进行了简化和加速处理。具体来说,RT-DETR 引入了更高效的特征金字塔网络(FPN),并减少了 Transformer 层的数量以降低推理时间[^2]。 --- #### 2. **训练过程** - 在训练阶段,DETR 需要较长的时间才能达到较好的性能水平,主要是因为它的 Set Prediction Loss 函数需要大量迭代次数来稳定权重更新[^3]。 - 相较之下,RT-DETR 提出了新的损失函数定义方式或者采用了预训练技术(例如 Faster R-CNN 或 DINO 等作为辅助模块),从而大幅缩短了训练周期。 --- #### 3. **推理效率** - 尽管 DETR 达到了较高的准确性,但由于复杂的多头自注意机制及其较大的参数量,导致实际应用中的实时性较差。 - RT-DETR 更加注重轻量化设计,在保持较高 mAP 指标的同时实现了更快的速度表现——通常可以达到接近甚至超过传统两步法框架(Two-stage Frameworks 如 Mask R-CNN)的速度。 --- #### 4. **应用场景适配能力** - 经典版 DETR 更适合于静态图像分析任务;而对于视频序列这样的动态场景,则可能面临较大挑战。 - 如果考虑长时间连续追踪需求的话,RT-Detr 不仅能够胜任单帧内的物体定位工作,还可以扩展至跨帧关联方面的工作,比如结合一些额外的记忆单元完成更加鲁棒的对象跟踪功能。 ```python import torch from torchvision.models.detection import detr_resnet50, rt_detr_tiny # 加载两种模型实例化对象 model_DETR = detr_resnet50(pretrained=True).eval() model_RT_DTR = rt_detr_tiny(pretrained=True).eval() with torch.no_grad(): dummy_input = torch.randn(1, 3, 800, 800) output_DETR = model_DETR(dummy_input) output_RT_DTR = model_RT_DTR(dummy_input) print(f"Output of DETR: {output_DETR}") print(f"Output of RT-DETR: {output_RT_DTR}") ``` 上述代码片段展示了如何加载并运行这两种模型的一个简单例子。 --- #### 总结 综上所述,虽然二者都属于端到端的一次性目标检测解决方案范畴之内,但从多个维度来看,RT-DETR 显示出更强的竞争优势特别是在追求高效能部署场合下尤为突出。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值