CVPR 2022

2023-11-17

点击下方卡片,关注“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

CVer-目标检测交流群成立
扫码添加CVer助手,可申请加入CVer-目标检测微信交流群,方向已涵盖:目标检测、图像分割、目标跟踪、人脸检测&识别、OCR、姿态估计、超分辨率、SLAM、医疗影像、Re-ID、GAN、NAS、深度估计、自动驾驶、强化学习、车道线检测、模型剪枝&压缩、去噪、去雾、去雨、风格迁移、遥感图像、行为识别、视频理解、图像融合、图像检索、论文投稿&交流、PyTorch和TensorFlow等群。
一定要备注:研究方向+地点+学校/公司+昵称(如目标检测+上海+上交+卡卡),根据格式备注,可更快被通过且邀请进群

▲长按加小助手微信,进交流群
CVer学术交流群(知识星球)来了!想要了解最新最快最好的CV/DL/ML论文速递、优质开源项目、学习教程和实战训练等资料,欢迎扫描下方二维码,加入CVer学术交流群,已汇集数千人!

▲扫码进群
▲点击上方卡片,关注CVer公众号

整理不易,请点赞和在看
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

CVPR 2022 的相关文章

随机推荐

  • Unity + Jenkins自动打包 (二)构建Jenkins项目以及编写Python、Unity脚本

    1 新建Jenkens项目 在上一篇中 完成了Jenkins的安装和初始化 以及权限设置 查看上一篇 Jenkins安装 点此 现在打开浏览器 输入http localhost 8081 当然 需要改成你自己设置的Jenkins端口号 然后
  • lua c++中的一种回调解决方法

    见很多人发问cocos2dx 3 版本 lua 函数回调问题 我在项目中是这样解决的 因为我是使用了cocos 带有的 lua 绑定脚本 python写的 cocos2d x tools tolua genbindings py 在生成绑定
  • mac .ssh文件位置

    1 Finder gt 前往文件夹 gt 输入 ssh 2 打开终端 输入cd ssh cd ssh
  • vue组件库的开发流程

    欢迎点击领取 前端面试题进阶指南 前端登顶之巅 最全面的前端知识点梳理总结 开发流程 1 创建项目 vue cli 公司现有架构 2 调整项目静态目录结构 3 使用webpack相关库模式打包编译 4 使用npm或者公司源地址发布到你需要的
  • 向List Control中添加ACCESS数据内容

    转 给List Control 添加变量tt 加入引入ADO使用智能指针 import c program files common files system ado msado15 dll no namespace rename EOF
  • MySQL - 索引的隐藏和删除

    隐藏索引 MySQL 8开始支持隐藏索引 隐藏索引提供了更人性化的数据库操作 隐藏索引 顾名思义 让索引暂时不可见 不会被优化器使用 默认情况下索引是可见的 隐藏索引可以用来测试索引的性能 验证索引的必要性时不需要删除索引 可以先将索引隐藏
  • 【qt应用软件Focus Note++】

    本专栏介绍了使用Qt开发的一些小型桌面软件 其中包括软件功能介绍 软件截图 主要代码等内容 此外 本专栏还提供完整的软件源码和安装包供有需要的同学下载 我的目标是开发一些简洁美观且实用的客户端小软件 如果能够为大家提供有用的软件或对学习有益
  • 赶紧来修炼内功~字符串函数详解大全(一)

    目录 1 strlen 重点 模拟实现 法一 法二 法三 2 strcpy 重点 模拟实现 3 strcat 重点 模拟实现 4 strcmp 重点 模拟实现 1 strlen strlen函数是用来计算字符串长度的 重点 字符串以 0 作
  • Ipsec phase1 and phase2

    终于明白是怎么回事了 困扰我好多天了 网上的资料鱼龙混杂 直到这位大虾的出现 第一阶段 有主模式和积极模式2种 只有remote vpn和Easy vpn是积极模式的 其他都是用主模式来协商的 让IKE对等体彼此验证对方并确定会话密钥 这个
  • 初探oVirt-体验

    日期 2015 9 2 2016 11 15 time 16 40 主机 node72 node73 node86 node93 目的 初探oVirt 体验 操作内容 一 基础环境 1 官方建议 1 oVirt Engine 需求 最低 双
  • 为OkGo网络请求增加自定义log功能

    OkGo是基于Okhttp3的封装 所以只需要增加自定义拦截器就可以实现自定义log OkGo有一个默认的log拦截器HttpLoggingInterceptor 如果没有特别需求则无需自定义 第一步自定义拦截器 参考OkGo中的拦截器实现
  • ctfshow-web4

    0x00 前言 CTF 加解密合集 CTF Web合集 0x01 题目 0x02 Write Up 和web3是相同的内容 这里可以通过任意文件读取的方式来进行利用 这里根据返回包知道是nginx 默认nginx日志是 var log ng
  • 如何批量上传Maven仓库jar包到Nexus3.x私服

    一 手动mvn命令上传单个Jar mvn deploy deploy file DgroupId com oracle DartifactId ojdbc6 Dversion 10 2 0 1 0 Dpackaging jar Dfile
  • 一、使用interrupt()中断线程

    当一个线程运行时 另一个线程可以调用对应的Thread对象的interrupt 方法来中断它 该方法只是在目标线程中设置一个标志 表示它已经被中断 并立即返回 这里需要注意的是 如果只是单纯的调用interrupt 方法 线程并没有实际被中
  • 执行pod setup 报错error: RPC failed; curl 18 transfer closed with outstanding read data remainin

    执行pod setup 报错 error RPC failed curl 18 transfer closed with outstanding read data remaining fatal the remote end hung u
  • 结构化稀疏----Learning with Structured Sparsity(学习与结构化稀疏)

    Structured Sparsity是在标准稀疏算法基础上 修改惩罚项而成 约束项为图像先验信息 迫使学习特征按照一定规则排列 行成有结构的字典 Standard sparsity Group Sparsity Group Sparsit
  • dfs全排列总结

    17 Letter Combinations of a Phone Number Medium 12161744Add to ListShare Given a string containing digits from 2 9 inclu
  • javascript代码混淆的原理

    如何对JavaScript进行保护 代码压缩 去除空格 换行等 代码加密 eval eval可以将其中的参数按照JavaScript的的语法进行解析并执行 其实就是将JavaScript的代码变成了eval的参数其中的一些字符会被按照特定的
  • Realtime_Multi-Person_Pose_Estimation demo.ipynb代码注释

    该部分可以帮助很好的理解论文的实现部分 源码地址 https github com ZheC Realtime Multi Person Pose Estimation 论文地址 https arxiv org abs 1611 08050
  • CVPR 2022

    点击下方卡片 关注 CVer 公众号 AI CV重磅干货 第一时间送达 作者 弃之 已授权转载 源 知乎 编辑 CVer https zhuanlan zhihu com p 478079763 PR一下我们在CVPR 2022上的pape