当前位置:   article > 正文

CVPR 2022 | 高分论文!港科大/IDEA/清华提出DN-DETR: 加速DETR收敛的去噪训练

denosing detr

点击下方卡片,关注“CVer”公众号

AI/CV重磅干货,第一时间送达

作者:弃之  |  已授权转载(源:知乎)编辑:CVer

https://zhuanlan.zhihu.com/p/478079763

PR一下我们在CVPR 2022上的paper DN-DETR: Accelerate DETR Training by Introducing Query DeNoising(得分112),我们对DETR收敛缓慢给出了一个深刻的理解,并第一次提出了全新的去噪训练(DeNoising training)解决DETR decoder二分图匹配 (bipartite graph matching)不稳定的问题,可以让模型收敛速度翻倍,并对检测结果带来显著提升(+1.9AP)。该方法简易实用,可以广泛运用到各种DETR模型当中,以微小的训练代价带来显著提升,3个审稿人中2个都对论文给出了满分!

4eb39819cae711ccb86e44df98c33837.png

DN-DETR: Accelerate DETR Training by Introducing Query DeNoising

论文:https://arxiv.org/abs/2203.01305

项目地址:github.com/FengLi-ust/DN-DETR

先看看加速收敛的效果!在ResNet50 backbone下,基于Deformable DETR的DN-Deformable-DETR在12epoch结果达到43.4AP,50epoch结果达到48.6AP,让DETR模型在12 epoch setting下也可以取得好的效果。

f9e6012ee6902b81fb3eeef433c9902a.png
收敛比较
fd821d1e79c18aea1263bcabb98c9cb8.png
收敛速度比较

为什么DETR系列模型收敛缓慢?

这得从DETR[1]的最初设计说起。DETR把目标检测做成了一个set prediction的问题,并利用匈牙利匹配(Hungarian matching)算法来解决decoder输出的objects和ground-truth objects的匹配。因此,匈牙利算法匹配的离散性和模型训练的随机性,导致ground-truth的匹配变成了一个动态的、不稳定的过程。

要解决这个问题,我们要先理解decoder到底在做什么。如今decoder queries在很多工作中被解读为anchor坐标, 我们可以按照DAB-DETR[2]把它看作一个四维的bounding box(检测框): (x, y, w, h)

在每一层decoder中都会去预测相对偏移量 (△x, △y, △w, △h) 并去更新检测框,得到一个更加精确的检测框预测 (x', y', w', h') = (x, y, w, h) +   (△x, △y, △w, △h) ,并传到下一层中。

我们可以把decoder看成在学习两个东西:

  • good anchors(anchor位置) (x, y, w, h)

  • relative offset(相对偏移)  (△x, △y, △w, △h) 

decoder queries可以看成是anchor位置的学习,而不稳定的匹配会导致不稳定的anchor,从而使得相对偏移的学习变得困难。因此,我们使用一个denoising task作为一个shortcut来学习相对偏移,它跳过了匹配过程直接进行学习。如果我们把query像上述一样看作四维坐标,可以通过在真实框附近添加一个微小的扰动作为噪声,这样我们的denoising task就有了一个清晰的目标--直接重建真实框而不需要匈牙利匹配。

我们设计了一个指标IS(Instability)通过比较相邻epoch之间匹配的不一致性来衡量匹配的不稳定性,如下图所示。这表明DN-DETR能有效提高匹配的稳定性。

453ffc498bfd72770d61841047e30e0f.png
匹配稳定性比较

DN-DETR架构

我们建立在DAB-DETR的基础上实现DN-DETR,因为DAB-DETR是DN之前最强的模型之一,而且它显示的把decoder query表示为四维坐标很适合添加denoising training。

沿着Conditional DETR[3],之后的工作如DAB-DETR都把decoder query设计成了content query和position query。为了更大限度利用denoising training,我们把content query输入为label embedding,对label也添加噪声进行reconstruct。因为denoising只是一种training方式,不会改变模型结构,只是在输入的时候做了一些改变,如下图所示,我们把decoder embedding表示为加了noise的label, anchor表示为加了noise的bbox。对于DETR原始的匹配部分,我们可以添加一个 [Unknown] label来进行区分,anchor部分保持DETR的方式不变。

b88d6ff398eec7c3420aa04b9cc0e4d8.png

加了Denoising之后模型的输入变为下图。原始DETR的匹配部分我们命名为Matching part,新加的denosing 部分命名为denoising part。需要注意的是,denoising part只需要在训练的时候加上,在inference的时候denoising part会直接移除,和原始模型一样,因此inference的时候不会增加计算量,训练的时候也只需要加入微小的计算量(decoder 部分的denosiing part),我们在后文的实验结果会具体分析。

effb04c904a94a6440a9d3e73c856491.png

Denosing

label noise:我们以一定概率随机把真实label翻转为其余的任何一个label。如COCO中有80个类别,我们以一定概率将其翻转为80个中的其他label。加入label的方法类似NLP中的word embedding,把80个类别进行embedding即可。

box noise:box的noise可以分为两类,即中心点漂移(center shifting)和框缩放(box scaling)。对于中心点漂移,我们可以保证中心点仍然在真实框内部并进行漂移。对于框缩放,可以随机缩放框的长和宽。漂移的强度和缩放的大小控制都由超参数进行控制。

Attention mask: 除了加noise之外,在decoder的self attention我们需要加一个额外的attention mask防止信息泄露。因为denoising部分包含真实框和真实标签的信息,直接让matching part看到denoising part会导致信息泄漏。因此,训练的时候matching part不能看到denoising part,像原始模型一样训练。额外增加的denoising part看或者不看到matching part对结果影响不大,因为denosing部分含有最多的真实框和标签。

模型结果

我们基于DAB做了DN-DETR,基于Deformable DETR和DAB做了DN-Deformable-DETR来进行实验,并在COCO上进行了实验。

50epoch setting:为了最大程度验证denoising training的提升,我们首先在标准的50epoch训练下做了完全相同setting下相比DAB-DETR在各个不同backbone上的提升。结果如下图

41b54e1405f45085170597e47a9a18b0.png

可以看到在收敛后denoising也能带来1.5-1.9的提升。

12epoch setting:为了验证denoising能够帮助模型在前期快速收敛,我们做了一个传统CNN detector经常做的实验12 epoch(在Detectron2中被称为3x)

b377052b7a4aef77ca26cfd70be5d4de.png

可以看到denoising在前期可以加速收敛带来巨大提升。

和SOAT模型相比:我们最后和SOTA模型进行了比较,提升依然显著。

85ba82a7cf14457d3010b3e98d85217d.png

Ablation分析

denoising的作用:如下图,我们可以看到box denoising提升最为显著。

2c9b2884ea91dcb41fa8ba95c9c6e7cb.png

增加denoisng的数量:增加denoising的数量可以持续带来提升,同时带来提升也会随着denoising数量增多边际递减

866d8320b96ecac163e8a1ea28553f17.png

收敛加速分析:一半的训练epoch就能达到相同的效果

a2f010817773fda577f759730f91f75a.png

实际训练代价:可以看到实际收敛速度也接近两倍,并且训练时增加的GFLOPS很小。

23385849e2a9e836bbfcdafc43e0f816.png

额外的任务

在论文附录里面有彩蛋哦~我们的这种设计还可以进行其他任务,如知道一部分object预测另一部分,只知道label预测 box等,未来还可以考虑做few-shot、progressive prediction等,希望有兴趣的同学可以尽情探索它的潜能!

如何用denoising加速非DAB-DETR类型的模型?

对于DETR类型的模型,decoder中都有类似“box information”的信息在流动,虽然不同模型可能formulate成了不同的形式。DAB-DETR显示的表示为四维box坐标,因此很适合做denosing。

DN可以支持其他类似DETR的模型,例如带有2D anchor的Anchor DETR和不带anchor的Vanilla DETR。对于DN-Anchor-DETR,可以很容易地修改为4D anchor以获得更好的结果,我们也可以遵循Anchor DETR仅向2D anchor添加噪声。对于 DN-Vanilla-DETR,我们可以简单地使用linear embedding将噪声框嵌入到与DETR query相同的维度中。由于 Vanilla DETR 没有明确的content part和position part,两部分信息是混在一起的,因此我们可以将label embedding和box embedding加在一起一起作为 DETR query。我们的初步结果表明,这些模型的收敛速度也有提高。

参考

  1. ^https://arxiv.org/abs/2005.12872

  2. ^https://arxiv.org/abs/2201.12329

  3. ^https://arxiv.org/abs/2108.06152

上面论文PDF和代码下载

后台回复:DN,即可下载上述论文PDF

后台回复:CVPR2021,即可下载CVPR 2021论文和代码开源的论文合集

后台回复:ICCV2021,即可下载ICCV 2021论文和代码开源的论文合集

后台回复:Transformer综述,即可下载最新的3篇Transformer综述PDF

  1. CVer-目标检测交流群成立
  2. 扫码添加CVer助手,可申请加入CVer-目标检测微信交流群,方向已涵盖:目标检测、图像分割、目标跟踪、人脸检测&识别、OCR、姿态估计、超分辨率、SLAM、医疗影像、Re-ID、GAN、NAS、深度估计、自动驾驶、强化学习、车道线检测、模型剪枝&压缩、去噪、去雾、去雨、风格迁移、遥感图像、行为识别、视频理解、图像融合、图像检索、论文投稿&交流、PyTorch和TensorFlow等群。
  3. 一定要备注:研究方向+地点+学校/公司+昵称(如目标检测+上海+上交+卡卡),根据格式备注,可更快被通过且邀请进群
  4. ▲长按加小助手微信,进交流群
  5. CVer学术交流群(知识星球)来了!想要了解最新最快最好的CV/DL/ML论文速递、优质开源项目、学习教程和实战训练等资料,欢迎扫描下方二维码,加入CVer学术交流群,已汇集数千人!
  6. ▲扫码进群
  7. ▲点击上方卡片,关注CVer公众号
  8. 整理不易,请点赞和在看
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/AllinToyou/article/detail/337819
推荐阅读
相关标签
  

闽ICP备14008679号