DINO 论文笔记

DINO是一种改进的DETR模型,通过对比去噪训练、混合查询选择和两次向前看的框预测方案,提高了训练效率和检测性能。在COCO数据集上,DINO达到了显著的AP提升,并且其设计能够与经典检测器竞争。DINO还探索了类DETR模型在大规模预训练和大模型主干上的潜力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

DINO通过使用对比方法,混合查询选择方法的anchor初始化的和盒子预测的look forward twice方案在性能和效率方面有了改进

DINO使用ResNet-50 backbone以及多尺度特征,在COCO上,12个epoch达到49.4AP,24个epoch达到51.3AP 与之前最好的DN-DETR模型相比,分别显著提高了+6.0AP和+2.7AP

请添加图片描述
DAB和DN的结合使得类detr的模型在训练效率和推理性能方面都能与经典检测器竞争

以往的类detr模型不如改进的经典检测器。
大多数经典的探测器都得到了很好的研究与高度优化,与新开发的类似深度的模型相比,具有更好的性能。
例如,目前表现最好的detr类模型仍然在COCO的50 AP以下

类detr模型的可伸缩性尚未得到很好的研究。没有关于类detr模型在扩展到大型主干和大规模数据集时的表现的报告结果

DINO主要三条线的改进:

  1. denoising training 去噪训练
  2. query initialization 查询的初始化
  3. box prediction 框体的预测

DINO是基于三种模型:

  1. DN-DETR
  2. DAB-DETR
  3. Deformable DETR

融合了:

  1. DAB-DETR的动态anchor
  2. DN-DETR的去噪,帮助稳定二部图匹配
  3. Deformable DETR的变形Attention为了更好的计算效率

提出了三个新的方法:

  1. 首先,为了改进一对一的匹配效果,提出了一种对比去噪训练方法,通过同时添加同一个GT的正、负样本来进行对比去噪训练。在同一个GT中加入两个不同的噪声后,将具有较小噪声的框标记为正,另一个标记为负。对比去噪训练可以帮助模型避免同一目标的重复输出
  2. 其次,使用了一种类似两阶段的模型(Deformable DETR的two stage)。提出了一种混合查询选择方法,这有助于更好地初始化查询. 从encoder的输出中选择初始锚定框作为位置查询,类似于Deformable DETR.然而,让内容查询像以前一样可以学习,从而鼓励第一个解码器层关注空间先验(空间位置先验与当前的图像更加的相关)
  3. 第三,为了利用后期层的refined box信息来帮助优化相邻早期层的参数,提出了一种新的look forward twice方案,用后面的层的梯度来修正更新后的参数

Large-scale Pre-training for Object Detection

大规模的预训练对自然语言处理和计算机视觉都有重大影响。
目前,最好的性能检测器大多是通过在大规模数据上预先训练的大型骨干来实现的

Swin V2: 30亿的参数量,7千万的私有数据
Florence: 9亿私有数据

DINO: 使用公开的SwinL模型,公开的 Object365 170万的数据集


DINO

Preliminaries

正如在条件DETR 和DAB-DETR 中所研究的那样,很明显,DETR中的查询由两部分组成:位置部分和内容部分,这在本文中被称为位置查询和内容查询

DAB-DETR明确地将DETR中的每个位置查询定义为一个4D anchor box(x、y、w、h),其中x和y是框的中心坐标,w和h对应于它的宽度和高度。这种显式的anchor box公式使得在解码器中一层一层地动态细化anchor box变得容易

DN-DETR 引入了一种去噪(DN)训练方法来加速类detr模型的训练收敛性
结果表明,二部匹配中的慢收敛问题是由二部匹配的不稳定性引起的。
为了缓解这一问题,DN-DETR提出将噪声的地面真实(GT)标签和盒子输入transformer解码器,并训练模型重建GT

由于DN-DETR遵循DAB-DETR将解码器查询视为锚,一个有噪声的GT盒可以看作是一个特殊的anchor,附近有一个GT盒,因为λ通常很小

Deformable DETR 是加速DETR收敛的早期工作。
为了计算可变形注意,它引入了参考点的概念,使可变形注意可以关注一个参考点周围的一小组关键采样点

query selection 就是Deformable DETR的two-stage
look forward once 就是Deformable DETR的iterative bounding box refinement

Model Overview

请添加图片描述
在编码器层进行特征增强后,提出了一种新的混合查询选择策略,将锚点初始化为解码器的位置查询
请注意,此策略不会初始化内容查询,而是使它们保持可学习性

通过初始化的锚点和可学习的内容查询,使用可变形的注意来结合编码器输出的特征,并逐层更新查询
最终的输出由refined anchor box和由细化的内容特征预测的分类结果来形成

Contrastive DeNoising Training

DN-DETR在稳定训练和加速收敛方面非常有效

在DN查询的帮助下,通过基于附近有GT盒的anchor学习预测。
然而,它缺乏当一个anchor附近没有物体时预测出 ’no object‘的能力

为了解决这个问题,提出了一种对比去噪(CDN)方法来拒绝无用的anchor

DN-DETR有一个超参数的λ来控制噪声尺度
生成的噪声不大于λ,因为DN-DETR希望模型从中度噪声的查询中重建GT

在DINO的方法中,有两个超参数λ1和λ2,其中λ1 < λ2
有两种查询,正面的查询,负面的查询

最里面的方框内的正查询具有小于λ1的噪声尺度,期望重构其对应的GT

内部和外部方块之间的负查询的噪声尺度大于λ1,小于λ2
他们被期望预测“no object”

通常采用较小的λ2,因为靠近GT盒的困难负样本更有助于提高性能

请添加图片描述
每个CDN组都有一组正查询和负查询
如果一个图像有n个GT框,一个CDN组将有 2×n 个查询,每个GT框产生一个正查询和一个负查询
将负样本分类为背景的损失也是focal loss

方法能够工作的原因是它可以抑制混淆,并选择高质量的anchors(查询)来预测边界框
当多个anchors靠近一个对象时,就会发生混淆
在这种情况下,模型很难决定选择哪个锚点

这种混淆可能会导致两个问题。
第一个是重复的预测。虽然detr类的模型可以通过基于集合的损失和自我注意的帮助来抑制重复的盒子,但这种能力是有限的

使用CDN查询,可以区分anchors之间的细微差别,并避免重复的预测

第二个问题是,一个远离GT并且不应该被选择的某个anchor可能会被选择上

虽然去噪训练改进了模型来选择附近的anchor,但CDN通过让模型拒绝更远的anchor,进一步提高了这种能力

为了证明CDN的有效性,定义了一个称为平均Top-K距离(ATD (k))的度量,并使用它来评估anchor在匹配部分中与目标GT盒的距离

在DETR中,每个锚点对应于一个可能与GT或背景相匹配的预测。
只考虑那些与GT box匹配的

ATD(k)=1k∑{top⁡K({∥b0−a0∥1,∥b1−a1∥1,…,∥bN−1−aN−1∥1},k)} A T D(k)=\frac{1}{k} \sum\left\{\operatorname{top} K\left(\left\{\left\|b_0-a_0\right\|_1,\left\|b_1-a_1\right\|_1, \ldots,\left\|b_{N-1}-a_{N-1}\right\|_1\right\}, k\right)\right\} ATD(k)=k1{topK({b0a01,b1a11,,bN1aN11},k)}

DINO选择top-K元素的原因是,当GT与一个更远的anchor匹配时,混淆问题更容易发生

DN足以选择一个好的anchor。然而,CDN为小物体找到了更好的锚点

请添加图片描述

Mixed Query Selection

在DETR 和DN-DETR 中,解码器查询是静态嵌入,而不需要从单个图像中获取任何编码器特征

请添加图片描述
它们直接从训练数据中学习anchors(在DN-DETR和DAB-DETR中)或位置查询(在DETR中),并将内容查询设置为全部都是0的tensor。

为了进一步提高性能,Deformable DETR 有一个查询选择变体(two-stage),它从最后一个编码器层中选择前K个编码器特征作为先验,以增强解码器查询
位置查询和内容查询都是通过对所选特性的线性变换生成的

此外,这些被选择的特征被输入到一个辅助检测头,以获得预测盒,用于初始化参考盒

在DINO模型中,查询的动态四维锚定盒公式使其与解码器的位置查询密切相关,这可以通过查询选择来改进

只使用与选定的topk特性相关的位置信息初始化锚框,但使内容查询保持静态
请注意,Deformable DETR利用top-K特性不仅增强位置查询,还增强内容查询

由于所选的特征是初步的内容特征,没有进一步的细化,因此它们可能会含糊不清,并对解码器产生误导
例如,选定的特征可能包含多个对象,或者仅是对象的一部分

相比之下,DINO的混合查询选择方法只增强了具有顶部-k个选择特性的位置查询,并保持内容查询像以前一样的可学习性
它可以帮助模型使用更好的位置信息来从编码器中汇集更全面的内容特性。

Look Forward Twice

请添加图片描述
Deformable DETR中的box迭代强化阻断了梯度反向传播以稳定训练
将该方法命名为look forward once,因为layer-i的参数仅根据盒子bi的辅助损失进行更新

然而推测,后层改进的盒子信息更有助于纠正邻近早期层的盒子预测

因此,提出了另一种称为“look forward twice”的方法来执行盒子更新,其中layer-i的参数受到layer-i和layer-(i+1)的损失的影响

Δbi=Layer⁡i(bi−1),bi′=Update⁡(bi−1,Δbi),bi=Detach⁡(bi′),bi(pred )=Update⁡(bi−1′,Δbi), \begin{aligned} \Delta b_i & =\operatorname{Layer}_{\mathrm{i}}\left(b_{i-1}\right), & b_i^{\prime} & =\operatorname{Update}\left(b_{i-1}, \Delta b_i\right), \\ b_i & =\operatorname{Detach}\left(b_i^{\prime}\right), & b_i^{(\text {pred })} & =\operatorname{Update}\left(b_{i-1}^{\prime}, \Delta b_i\right), \end{aligned} Δbibi=Layeri(bi1),=Detach(bi),bibi(pred )=Update(bi1,Δbi),=Update(bi1,Δbi),

Experiments

请添加图片描述
请添加图片描述
请添加图片描述
请添加图片描述

Ablation

请添加图片描述

Training Efficiency

请添加图片描述

Additional Analysis on our Model Components

请添加图片描述

Analysis on Query Denoising

请添加图片描述

### DINO Algorithm Research Paper Overview The term **DINO** can refer to different concepts depending on the context within the IT and computer science fields. One prominent example is the **DINO (Distillation with No Labels)** algorithm, which focuses on self-supervised learning using vision transformers[^2]. This method leverages unlabeled datasets to train models effectively by distilling knowledge from a teacher model without requiring explicit labels. In another context, **DINO** might also relate to other domains such as network optimization, robotics, or even historical computational methods named after dinosaurs for fun purposes. However, based on recent trends in machine learning literature, the most relevant interpretation aligns closely with advancements in deep learning architectures like Vision Transformers (ViTs)[^3]. Here’s an excerpt of how one could implement parts of the DINO framework when working specifically around unsupervised pretraining: ```python import torch from torchvision import transforms from timm.models.vision_transformer import vit_base_patch16_224 def create_dino_model(): """Create base ViT model used commonly under DINO.""" backbone = vit_base_patch16_224(pretrained=True) # Modify head layers according to specific needs. num_features = backbone.head.in_features backbone.head = torch.nn.Identity() # Remove classification layer return backbone transform = transforms.Compose([ transforms.Resize(256), transforms.CenterCrop(224), transforms.ToTensor(), ]) model = create_dino_model() print(model) ``` This code snippet demonstrates setting up a basic version of a Vision Transformer that serves as part of what would be extended into full-fledged implementations seen across publications discussing algorithms similar to those mentioned earlier regarding accountability theories tied indirectly through broader AI ethics discussions[^1].
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值