作者丨encounter1997@知乎(已授权)

来源丨https://zhuanlan.zhihu.com/p/366938351

编辑丨极市平台

导读

为了填补transformer在CV领域的空白,由此Facebook AI推出了DETR,然而DETR在目标检测领域带来的革新远远不止这些。本文首先对DETR原文进行介绍,随后总结DETR这一新范式在目标检测等领域带来的变革与思考。

2020年,Transformer在计算机视觉领域大放异彩。Detection Transformer (DETR) [1]就是Transformer在目标检测领域的成功应用。利用Transformer中attention机制能够有效建模图像中的长程关系(long range dependency),简化目标检测的pipeline,构建端到端的目标检测器。然而DETR在目标检测领域带来的革新远远不止这些。本文首先对DETR原文进行介绍,随后总结DETR这一新范式在目标检测等领域带来的变革与思考。熟悉DETR的小伙伴可以直接跳到第二部分。

目录

一、DETR简介

二、DETR在目标检测领域带来的新思考

  1. 如何有效利用transformer解决图像中的目标检测问题

  2. Sparse的目标检测方法

  3. 新的label assignment机制

  4. 如何构建end-to-end的目标检测器

  5. 如何更好地将DETR拓展到实例分割任务

一、DETR简介

将目标检测看作set prediction问题

DETR将目标检测看作一种set prediction问题,并提出了一个十分简洁的目标检测pipeline,即CNN提取基础特征,送入Transformer做关系建模,得到的输出通过二分图匹配算法与图片上的ground truth做匹配。

DETR算法流程

DETR的方法详情如上图所示,其关键的设计包含:

(1)Transformer

CNN提取的特征拉直(flatten)后加入位置编码(positional encoding)得到序列特征,作为Transformer encoder的输入。Transformer中的attention机制具有全局感受野,能够实现全局上下文的关系建模,其中encoder和decoder均由多个encoder、decoder层堆叠而成。每个encoder层中包含self-attention机制,每个decoder中包含self-attention和cross-attention。

(2)object queries

如上图所示,transformer解码器中的序列是object queries。每个query对应图像中的一个物体实例( 包含背景实例




 ),它通过cross-attention从编码器输出的序列中对特定物体实例的特征做聚合,又通过self-attention建模该物体实例域其他物体实例之间的关系。最终,FFN基于特征聚合后的object queries做分类的检测框的回归。

Visualization of all box predictions on all images from COCO 2017 val set

值得一提的是,object queries是可学习的embedding,与当前输入图像的内容无关(不由当前图像内容计算得到)。论文中对不同object query在COCO数据集上输出检测框的位置做了统计(如上图所示),可以看不同object query是具有一定位置倾向性的。对object queries的理解可以有多个角度。首先,它随机初始化,并随着网络的训练而更新,因此隐式建模了整个训练集上的统计信息。其次,在目标检测中每个object query可以看作是一种可学习的动态anchor,可以发现,不同于Faster RCNN, RetinaNet等方法在特征的每个像素上构建稠密的anchor不同,detr只用少量稀疏的anchor(object queries)做预测,这也启发了后续的一系列工作[4]。

(3)将目标检测问题看做Set Prediction问题,用二分图匹配实现label assignment

DETR中将目标检测问题看做Set Prediction问题,即将图像中所有感兴趣的物体看作是一个集和,要实现的目标是预测出这一集和。也就是说在DETR的视角下,目标检测不再是单独预测多个感兴趣的物体,而是从全局上将检测出所有目标所构成的整体作为目标。对应的,DETR站在全局的视角,用二分图匹配算法(匈牙利算法)计算prediction与ground truth之间的最佳匹配,从而实现label assignment。以上过程中需要定义什么是最佳匹配,也就是对所有可能的匹配做排序,DETR将一种匹配下模型的总定位和分类损失作为评判标准,损失越低,匹配越佳。注意,该匹配过程是不回传梯度的。DETR这种从全局的视角来实现label assignment的范式也启发了后续的一系列工作[5]。

在训练过程中,DETR采用了deep supervision做为辅助损失,即在每个decoder layer的输出上都做预测和监督。DETR一般需要更长的训练时间达到收敛,例如在coco上需要300-500个周期收敛到比较好的结果。在性能上DETR相比于faster rcnn这类检测器能够在大物体上实现更好的检测,而对于小物体而言性能较差,具体性能如下表所示。

DETR与Faster RCNN性能比较

将目标检测看作set prediction问题,使用稀疏的object queries做预测,并采用二分图匹配做label assignment,DETR避免了预测时产生大量的重复检测(duplicates),因此不需要非极大值抑制(NMS)等后处理操作。下图对比了DETR中是否采用NMS的对性能的影响,可以看到到Decoder层数增加,NMS对模型性能的积极影响逐渐消失。

NMS与decoder层数对检测性能的影响

(4)拓展到全景分割

DETR做全景分割

事实上DETR可以很容易的拓展到全景分割任务上,类比于Mask RCNN在Faster RCNN基础上加入mask预测分支实现实例分割。作者在DETR的Prediction Head分支上添加mask分支来实现全景分割。作者基于object query的attention map做mask分支预测,并结合CNN backbone的层级特征构建类似FPN结构的mask预测分支,如上图所示。

尽管本文introduction的写作是从构建端到端目标检测器,去除现有目标检测框架中复杂的手工设计这一角度出发的,但本文的意义远不止如此,下面将介绍DETR为目标检测社区带来的新思考。

二、DETR在目标检测领域带来的新思考

1、如何有效利用transformer解决图像中的目标检测问题

(1)Deformable DETR [2]

Deformable DETR对DETR的两处缺陷(收敛速度慢和对小物体的检测性能不佳)进行分析和改进,作者指出这两点缺陷事实上源自相同的原因:Transformer在处理图像特征时存在缺陷。具体来说,在初始化时transformer中每个query对所有位置给予几乎相同的权重,这使得网络需要经过长时间的训练将attention收敛到特定的区域。同时,由于transformer中attention机制随着图像中像素数目的增加呈平方增长,使用大的特征图输入encoder的代价极其高昂。因此,DETR只采用32倍下采样的特征图作为输入,导致其对小物体的检测性能不佳。

既然模型最终是要关注到稀疏的注意力区域,为什么不在一开始就让模型只关注稀疏的区域呢?作者提出Deformable Attention,在attention操作中对密集的key做稀疏采样,随后在query和稀疏的key之间做attention运算。由于模型只需要关注稀疏的采样点,其收敛速度显著提升。同时,由于每个query只需要对稀疏的key做聚合,模型的运算量和显存消耗显著下降,这使得Deformable Attention能够在可控的计算消耗下利用图像的多尺度特征。由此,得到的模型DeformableDETR如下图所示。

Deformable DETR

Deformable Attn示意图如下。值得一提的是,Deformable Attention中attention权重并非由query和稀疏的key之间做相似性计算得到的,而是直接由query经过projection得到。作者解释这是因为采用前者的方式计算的attention权重存在退化问题,即最后得到的attention权重与并没有随key的变化而变化。因此,这两种计算attention权重的方式最终得到的结果相当,而后者耗时更短、计算代价更小,所以作者选择直接对query做projection得到attention权重。具体的讨论请参见 Deformable DETR OpenReview(https://openreview.net/forum?id=gZ9hCDWe6ke&noteId=x1VT5henOtF)

Deformable Attention

最终,DefomableDETR能够在以十分之一的迭代次数得到比DETR更好的性能。

Deformable DETR Convergence Curve

(2)UP-DETR [3]

DETR存在的一个显著问题是模型收敛慢,训练周期长,这主要是因为随机初始化的Transformer需要很长的训练时间才能收敛。那么我们能否利用无监督的预训练来提升DETR中Transformer的收敛速度呢?为了实现这一目标,UP-DETR提出一个新的pretext task——multi-query localization(如图所示)来预训练DETR中的object query,以此来预训练Transformer的定位能力。同时,作者固定CNN backbone,并利用特征重建损失来保留特征的语义性,从而避免对定位的预训练伤害检测模型的分类能力。

UP-DETR中的pretext task

在完成预训练后,UP-DETR可以在检测任务上fine-tune,该fine-tuning过程与DETR原文的训练过程一致。如图,可以看出经过预训练后,UP-DETR能够取得比DETR更快的收敛速度以及更由的检测性能。

UP-DETR Convergence Curve

更详细的介绍请参见原作者的知乎回答:

如何评价华南理工和微信AI提出的无监督预训练检测器UP-DETR?

https://www.zhihu.com/question/432321109/answer/1606004872

2、Sparse的目标检测方法

不同检测算法流程比较

在DETR之前,主流的目标检测算法都依赖于稠密的anchor box或者anchor point。如上图所示,(a) 一阶段检测器如RetinaNet往往基于稠密的候选框做预测,(b) 二阶段目标检测器如faster rcnn则通过RPN从dense的候选框中筛选出稀疏的候选框,对比之下,DETR只将少量的(稀疏的)object queries作为目标检测的候选。受到这种sparse检测候选范式的启发,Sparse RCNN [4]提出仅用少量的(稀疏的)可学习的proposal作为候选框,并基于此提出一种基于RCNN的端到端目标检测方法。

少量可学习的proposal反映了图像中物体位置的统计信息,然而仅使用4位的位置向量作为proposal无法反映物体的形状、姿态等细粒度的特征。相比之下,DETR中的object queries采用256维的嵌入向量来反映物体的特征,受此启发,作者在可学习的proposal基础上引入proposal feature来编码物体的精细特征,其与proposal数量相等,并存在一一对应关系。为了有效利用proposal feature,并为每个物体实例学习特异性的预测头,作者提出dynamic head,如下图所示。

Sparse R-CNN pipeline

该算法流程的伪代码如下图所示,proposal feature经过映射后得到1x1卷积核的参数(动态网络),与输入的物体实例特征做交互并输出。

Dynamic实例交互伪代码

值得一提的是,Sparse RCNN将Sparse这一特性应当同时包含(1)稀疏的检测候选,而不是遍历特征上的每个像素位置;(2)检测候选与图像特征之间只需要稀疏的交互,而非与图像特征的每个像素位置做交互。显然DETR满足第一条,而不满足第二条(Decoder中cross attention从整个图像特征序列中聚合信息),从这个意义上来说,DETR不完全是sparse的,而Deformable DETR和Sparse RCNN则满足sparse的特性。

最终,如图所示,Sparse RCNN能够在较短的训练周期下到达比500个周期训练的DETR更好的实验结果,并且性能优于Faster RCNN和RetinaNet等经典算法。

Sparse RCNN Convergence Curve

3、新的label assignment机制

对于图像分类、语义分割等问题,我们很容易建立输入图像和标签之之间的关联。例如,对于分类而言,模型只需要将输入与Ground Truth类别向量对应起来即可;而对于语义分割而言,由于模型输入和Ground Truth分割图之间存在空间对应关系,可以很容易的将原图上的像素与Ground Truth上相同像素位置的标签对应起来。对比之下,目标检测中输入图像和输出标签之间没有直接的对应关系:一张图片可能包含一个物体,也可能包含多个物体;一个像素可能在零个/一个检测框内,也可能在多个检测框内。

在DETR之前,大部分基于目标检测器根据像素(或anchor)与Ground Truth之间的局部空间位置关系(如IoU)来实现标签的分配(也因此造成了很多重复检测的存在)。而DETR采用二分图匹配方式,从全局的视角,在模型输出与标签之间建立一一对应的关系。

OTA(Optimal Transport Assignment)

受到这一做法的启发,OTA(Optimal Transport Assignment)[5] 提出从全局的视角来实现label assignment。具体来说,它将每个GT instance看作一个supplier,将每个anchor看作一个demander,利用分类和定位损失计算一个supplier到一个demander的传输距离(即将一个GT分配给一个特定anchor的损失),随后利用Sinkhorn-Knopp计算GT到anchor之间的最优传输(即最佳的label assignment)。整个OTA算法流程如下图所示:

OTA算法流程

个人认为OTA与DETR中利用二分图匹配实现label assignment没有显著区别,不过将GT和anchor分别理解为supplier和demander,并用最优传输理论来解释整个标签分配过程还是让人觉得耳目一新。

4、如何构建end-to-end的目标检测器

DETR基于Transformer提出首个端到端的目标检测方法,那么很自然的问题就是:(1)基于CNN的目标检测方法能否做到端到端?(2)哪些因素是实现端到端目标检测的关键?以下三篇文章对这两个问题展开了探讨:

OneNet: Towards End-to-End One-Stage Object Detection

https://arxiv.org/abs/2012.05780

End-to-End Object Detection with Fully Convolutional Network

https://arxiv.org/abs/2012.03544

What Makes for End-to-End Object Detection?

https://icml.cc/Conferences/2021/Schedule?showEvent=8868

事实上,构建端到端的目标检测器与label assignment息息相关,这里不做展开介绍,感兴趣的小伙伴可以参考论文原文和作者的知乎介绍。

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

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

5、如何更好地将DETR拓展到实例分割任务

DETR论文中效仿Mask RCNN,添加mask分支来实现全景分割,同样的方法也可以被运用在实例分割任务上。然而DETR的mask分支十分复杂,需要使用复杂的网络,并利用类似FPN的结构来融合CNN特征。这主要是由于mask的输出空间较为复杂,不同于分类和定位只需要输出向量来表示类别和回归值,mask的预测需要输出2D的map。

SOLQ [6]在DETR基础上提出利用统一的类别、位置和mask特征表示UQR(Unified query representation)来实现端到端的实例分割。

DETR实例分割与SOLQ对比

具体来说,SOLQ提出对mask进行可逆的压缩编码,这样在训练时模型的mask分支只需要将query的映射与低维的mask编码作比较、计算损失;而在预测时,通过解码将预测出的低维mask编码解码为2D的分割map,如下图所示。

Unified query representation

这样利用统一的query特征表示来实现分类、定位和分割三个任务使得模型,不仅大大简化了DETR做实例分割的整体流程,还能够充分利用多任务训练的好处。实验表明,采用UQR不仅能够同时也能够提升目标检测的精度。

总结

本文主要介绍了DETR在目标检测领域带来的变革与思考。由于涉及的文章数量较多,没有全部展开介绍,感兴趣的小伙伴还请参见论文原文。一个全新的目标检测框架能够为整个社区带来这么多新的思考,不经让人感慨。个人认为一个很锻炼科研思维的方法就是尝试站在某篇代表性文章刚刚发表的时间节点(先不看其后续工作),思考自己能够从这篇文章中得到哪些启发,会考虑从哪些角度做进一步的研究。再拿自己的思考与后续研究者的工作做比较,在这个过程中提升自己的科研直觉和判断力。

由于笔者能力有限,如有叙述不当之处,欢迎不吝赐教。

[1] End-to-End Object Detection with Transformers

[2] Deformable DETR: Deformable Transformers for End-to-End Object Detection

[3] UP-DETR: Unsupervised Pre-training for Object Detection with Transformers

[4] Sparse R-CNN: End-to-End Object Detection with Learnable Proposals

[5] OTA: Optimal Transport Assignment for Object Detection

[6] [SOLQ: Segmenting Objects by Learning Queries]

本文亮点总结

1.在训练过程中,DETR采用了deep supervision做为辅助损失,即在每个decoder layer的输出上都做预测和监督。在性能上DETR相比于faster rcnn这类检测器能够在大物体上实现更好的检测,而对于小物体而言性能较差。

2.在DETR之前,大部分基于目标检测器根据像素(或anchor)与Ground Truth之间的局部空间位置关系(如IoU)来实现标签的分配(也因此造成了很多重复检测的存在)。而DETR采用二分图匹配方式,从全局的视角,在模型输出与标签之间建立一一对应的关系。

本文仅做学术分享,如有侵权,请联系删文。

下载1

在「计算机视觉工坊」公众号后台回复:深度学习,即可下载深度学习算法、3D深度学习、深度学习框架、目标检测、GAN等相关内容近30本pdf书籍。

下载2

在「计算机视觉工坊」公众号后台回复:计算机视觉,即可下载计算机视觉相关17本pdf书籍,包含计算机视觉算法、Python视觉实战、Opencv3.0学习等。

下载3

在「计算机视觉工坊」公众号后台回复:SLAM,即可下载独家SLAM相关视频课程,包含视觉SLAM、激光SLAM精品课程。

重磅!计算机视觉工坊-学习交流群已成立

扫码添加小助手微信,可申请加入3D视觉工坊-学术论文写作与投稿 微信交流群,旨在交流顶会、顶刊、SCI、EI等写作与投稿事宜。

同时也可申请加入我们的细分方向交流群,目前主要有ORB-SLAM系列源码学习、3D视觉CV&深度学习SLAM三维重建点云后处理自动驾驶、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、深度估计、学术交流、求职交流等微信群,请扫描下面微信号加群,备注:”研究方向+学校/公司+昵称“,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进去相关微信群。原创投稿也请联系。

▲长按加微信群或投稿

▲长按关注公众号

3D视觉从入门到精通知识星球:针对3D视觉领域的视频课程(三维重建系列、三维点云系列、结构光系列、手眼标定、相机标定、orb-slam3等视频课程)、知识点汇总、入门进阶学习路线、最新paper分享、疑问解答五个方面进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业为一体的铁杆粉丝聚集区,近2000星球成员为创造更好的AI世界共同进步,知识星球入口:

学习3D视觉核心技术,扫描查看介绍,3天内无条件退款

圈里有高质量教程资料、答疑解惑、助你高效解决问题

觉得有用,麻烦给个赞和在看~  

DETR目标检测新范式带来的思考相关推荐

  1. 最近目标检测新范式汇总SparseRCNN,OneNet,DeFCN等

    点上方蓝字计算机视觉联盟获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于:作者丨林大佬@知乎 来源丨https://zhuanlan. ...

  2. 目标检测新范式:Sparse R-CNN

    机器之心转载 作者:孙培泽 全新的目标检测范式Sparse R-CNN. 本文主要介绍一下我们最近的一篇工作: 沿着目标检测领域中 Dense 和 Dense-to-Sparse 的框架,Sparse ...

  3. 解读目标检测新范式:Segmentations is All You Need

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 多年来,基于候选区域网络(RPN)的现有模型在目标检测任务中得到了 ...

  4. 抛弃Anchor box和NMS,目标检测新范式开源:Sparse R-CNN

    点击上方,选择星标或置顶,不定期资源大放送! 阅读大概需要10分钟 Follow小博主,每天更新前沿干货 作者丨孙培泽@知乎 来源丨https://zhuanlan.zhihu.com/p/31005 ...

  5. 优秀!港大同济伯克利提出Sparse R-CNN: 目标检测新范式

    作者孙培泽 转自知乎,已获授权转载,请勿二次转载 https://zhuanlan.zhihu.com/p/310058362 本文主要介绍一下我们最近的一篇工作: Sparse R-CNN: End ...

  6. 太棒了!港大同济伯克利推出目标检测新范式:Sparse R-CNN

    点上方蓝字计算机视觉联盟获取更多干货 在右上方 ··· 设为星标 ★,与你不见不散 仅作学术分享,不代表本公众号立场,侵权联系删除 转载于:机器之心,原文链接:https://zhuanlan.zhi ...

  7. NWD-Based Model | 小目标检测新范式,抛弃IoU-Based暴力涨点(登顶SOTA)

    点击上方"3D视觉工坊",选择"星标" 干货第一时间送达 作者丨ChaucerG 来源丨集智书童 小目标检测是一个非常具有挑战性的问题,因为小目标只包含几个像素 ...

  8. ICLR2022系列解读之三:一个新的目标检测网络结构范式GiraffeDet

    本文解读我们ICLR2022上发表的论文<GiraffeDet: A Heavy-Neck Paradigm for Object Detection>.我们提出了一个新的目标检测网络结构 ...

  9. 何恺明团队最新研究:3D目标检测新框架VoteNet,两大数据集刷新最高精度

    [导读]FAIR何恺明等人团队提出3D目标检测新框架VoteNet,直接处理原始数据,不依赖任何2D检测器.该模型设计简单,模型紧凑,效率高,在两大真实3D扫描数据集上实现了最先进的3D检测精度. 当 ...

  10. OpenJS宣布第一个孵化项目; PostgreSQL 12 正式发布;目标检测新突破

    行 业 要 闻 Industry   News ▲▲▲ 0 1 OpenJS 基金会宣布第一个孵化项目:Node Version Manager OpenJS Foundation宣布,Node Ve ...

最新文章

  1. 图像相似度计算之哈希值方法OpenCV实现
  2. 如何管理多个Python版本和虚拟环境
  3. Android监听应用程序安装和卸载
  4. 题目1206:字符串连接
  5. qdialog不允许放大缩小弹窗_iOS 13系统太烦人!频繁弹窗提醒App正在定位,竟是为保护隐私?...
  6. mysql怎样查询表的信息!
  7. 查询HTML标签select中options的值并定位其位置
  8. 计算机原理中阶符是指,计算机原理复习题1
  9. 智能合约语言 Solidity 教程系列3 - 函数类型
  10. linux查看md5值
  11. 黑马JAVA P165 代码与文件编码不一致读取乱码的问题、转换流来解决
  12. 第46章 DCMI—OV5640摄像头—零死角玩转STM32-F429系列
  13. 技术设计的任务是将功能原理方案得以具体化
  14. MATLAB强化学习入门——四、用DQN实现网格迷宫算例
  15. win10 1809版本手动安装WSL和ubuntu 18.04
  16. 北京慈文影视制作有限公司诉被告北京百度网讯科技有限公司侵犯著作权纠纷一案判决书
  17. 到底什么是语义分割?
  18. 计算机专业毕业设计答辩稿
  19. python tkinter insert函数_Python3 tkinter基础 Entry insert delete 点击按钮 向输入框赋值 或 清空...
  20. 长铗、孔剑平、何斌等17位大咖齐聚,一部区块链创业者的“燃点”

热门文章

  1. jspstudy启动mysql失败_JspStudy配置Jspxcms安装教程,以及数据库设置;
  2. 计算机课程用的ps是哪个版本,ps哪个版本适用于新手?
  3. 3Dmax哪个版本最好用?3dmax哪个版本稳定一点?
  4. Docker学习总结(45)——Docker在沪江落地的实践
  5. 【材料计算】第一性原理、密度泛函理论、从头算之间的关系
  6. 第 10 章 Python 第三方库使用
  7. [裴礼文数学分析中的典型问题与方法习题参考解答]4.3.22
  8. APP推广运营手册全集
  9. 走进量化投资奇妙的模型世界
  10. 安川机器人如何注释化指令_安川机器人命令介绍