DINO(ICLR 2023)
DETR with Improved deNoising anchOr box
DINO发展:
Conditional DETR->DAB-DETR(4D,WH修正)
DN-DETR(去噪训练,deNoising 稳定匹配过程)
Deformable DETR(变体1:two-stage,encoder输出经过FFN分类头替换object query,变体2:box迭代细化)
三点改进:
- 对比去噪训练
- 查询的初始化(decoder的object query的设计)
- box的预测
论证了DETR类在大数据集上的可扩展性,使用大backbone大dataset和SOTA比较
模型
- 使用了多尺度特征
- query selection:使用encoder的输出帮助decoder确定query
- 使用对比去噪训练:pos(正样本)neg(负样本)
- 改进box迭代细化(图上没画出来)
Contrastive DeNoising Training
DN:denoising training,稳定匹配
DN两个噪声:原来的DN(xywh)偏移超参数(0~1)λ1(xy)=λ2(wh)=0.4,label的标签反转
图中, Although both positive and negative examples are 4D anchors that can be represented as points in 4D space, we illustrate them as points in 2D space on concentric squares for simplicity
加了对比( generate two types of CDN queries: positive queries and negative queries ):
λ1<λ2(不是DN-DETR的超参数了)
正样本:落入λ1的算正样本
负样本:λ1~λ2的算负样本
- 每一个GT都设计一个正样本和负样本
- 会尽量让λ1,λ2贴近,形成hard neg samples
- 对于正样本,还是计算f1loss,giou loss focal loss
- 对于负样本,类别的最终预测应该是 no object
- 保留group
思路:
如果anchor附近本身没有物体,就应该预测成no object,用对比方式更好学习no object
当一个GT周围有多个anchor,模型不好选择哪一个anchor,这会导致下面两个问题:
- 当GT周围有多个anchor,anchor预测哪一个GT,模型很难确定,会出现重复预测(匈牙利虽然强制一对一匹配,但还是有限)
- anchor和GT离的很远也会被分配过去,实际上这种anchor应该分为no object
验证CDN的有效性 :ATD
为了证明CDN的有效性,我们定义了平均Top - K距离( Average Top-K Distance,ATD ( k ) ,指标),并在matching part使用它来评估锚点离目标GT框的距离。与DETR一样,每个锚对应一个预测,该预测可能与一个GT框或背景匹配。在这里我们只考虑那些与GT box匹配。
N个GT( b0,b2,…,bN-1 )。
对于每个 ,我们可以找到它对应的anchor并将其表示为:
ai 是decoder的初始anchor,其在匹配期间将最后一个解码器层分配给 bi 之后的精化框。 Then we have:
L1norm
小目标上性能好很多
Mixed Query Selection
在DETR和DN-DETR中,decoder的query是静态嵌入(embedding),而不需要从单个图像中获取任何编码后特征
Deformable DETR有一个query选择变体(two-stage),它从最后一个encoder后,encoder输出选择前K个encoder特征作为先验,以增强解码器查询
Deformable DETR利用top-K特性(label)不仅应用于位置查询,还应用于内容查询
即decoder输入:
detr:tgt(zero),pos query(embedding)
DINO:tgt(变成embedding), pos query(object query来自encoder topk输出,当前图像有关信息)
mixed query selection方法只增强了具有顶部-k个选择特性的位置查询
并保持内容查询像以前一样的可学习性
(a)detr decoder:tgt和object query
(b)deformable detr:加了top k选取,同时作用在 object query 和tgt上
(c)只作用于object query tgt是embedding
Look Forward Twice
decoder box head 在辅助loss上修正,第i层之前梯度断掉(虚线)
look forward once:辅助loss只能修改当前层(decoder)的梯度, Deformable DETR 中的 iterative box refinement 可以阻止梯度反向传播来稳定训练
look forward twice:
**猜想,来自后一层的改进的 box 信息可能更有助于修正其相邻的早期层的box预测。**因此,提出了另一种叫做两次向前看( Look Forward Twice )的方法来执行box更新, 其中第 i 层的参数受到第 i 层和( i + 1)层的损失的影响
Δbi是对上一层输入的bi-1的修正
对上一层bi-1输入加上Δbi得到bi‘(修正的box)
bi(pred)是boxhead给出的预测,来源是bi’-1+Δbi,可以修改本层的decoder和之前的decoder