本文主要是介绍DN-DETR,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
- 可以看到,与 DAB-DETR 相比,最大的差别仍然在 decoder 处,主要是 query 的输入。DN-DETR 认为可以把对 offsets 的学习,看作一种对噪声学习的过程,因此,可以直接在 GT 周围生成一些 noised boxes,这些 boxes 是GT进行稍微移动得到的。然后将得到的 noised boxes 转化为高维的 embedding 与原本的 query 进行 cat,同时这些 noised boxes 的类别本应该是GT的类别,但是为了学习类别的噪声,因此将其任意翻转到其他类别再进行 embed。最后希望通过模型的学习将 offsets 学好,同时把类别判断对。这里可以看作 增加了很多good anchor供模型学习,而且这些 boxes 最后不用参加匈牙利匹配,因为它们是由某个 GT 演化而来,从出生开始就已经形成了天然的匹配
匈牙利匹配二意性: 匈牙利算法匹配的离散性和模型训练的随机性,导致 ground-truth 的匹配变成了一个动态的、不稳定的过程。DETR 在训练早期阶段,对于同一张图像的同一个物体,在不同 epoch 之间每个 object_query 会匹配到不同 gt(包括背景)。原因是匈牙利匹配中代价矩阵鲁棒性差,即稍微扰动就会影响匹配结果。故作者考虑额外引入加微弱噪声的gt,让额外的 object query 学习这部分gt,进而来克服不稳定的匹配过程。
- 那么还有另外一个问题没有解决,就是生成的 noised boxes 是带有GT信息的,不能被由正常 query 预测的 boxes 在进行注意力计算的时候学到。因为真正到推理的时候,无提供的 GT 信息。文章通过上图中右边的 attention mask 来对其进行了屏蔽。灰色的是信息不相通的,对于生成的部分 (denoising part) 互相看不见,自己只能跟自己玩,生成的部分可以看见正常预测的部分 (matching part),但是正常预测的看不见生成的部分。这里很合理,因为正常预测的部分不含有 GT 信息,被看到无所谓。(这个 mask 的看法为: group1 横着对出去灰色的是看不见的,彩色的看得见,其余皆是如此)
Attention mask
- group1 中 query 相互看不到 group2 中信息(左上角的四个小块);
- matching part 看不到 group1 和 group2 的信息(左下角灰色大块);
- 但右上角有颜色部分表示 group1 和 group2 能看到 matching part 信息,但无所谓,因为matching part 不包含gt信息。(作者也做了实验,看见or看不见并不影响实验性能)。
Denoising part
- 以上图为例,有两组加噪的 gt 和 object query+label。
- object_query+label 比较简单,就设置成可学习并初始化即可;
- 加噪分为两部分:
1)gt_box加噪:小幅度移动 box 中心和 box_scale;
2)label加噪:随机将 gt 变成另一个类别。
这篇关于DN-DETR的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!