DETR 论文阅读
| 原始题目 | End-to-End Object Detection with Transformers |
|---|---|
| 中文名称 | 用 Transformer 来做端到端目标检测 |
| 发表时间 | 2020 年 5 月 26 日 |
| 平台 | ECCV 2020 |
| 来源 | Facebook AI |
| 文章链接 | https://arxiv.org/abs/2005.12872 |
| 开源代码 | https://github.com/facebookresearch/detr |
简介
算法名称:DETR(DEtection TRansformer), 普遍认为该论文应该是 ECCV2020 的最佳论文。截止 2023年6月20日,github 官方代码有 11.2k 个 Star。目标检测领域里程碑的工作,全新的架构。
题目
- 端到端:大部分目标检测都都需要 NMS 后处理操作,无论是 proposal based、anchor based、Non anchor based 方法都会生成冗余的预测框,为了去除这些框需要使用 NMS。NMS 使得模型调参复杂,部署困难(有的硬件不支持 NMS)。大家迫切需要一个 不需要 NMS 的端到端的目标检测系统。
DETR 解决了 上述痛点,不需要 proposal,也不需要 anchor。
- Transformers 做目标检测
DETR 直接利用 Transformers 能全局建模的能力,把目标检测直接看成了 一个集合预测的问题。全局建模的能力使得 DETR 不会输出那么多冗余的框,出来什么就是什么,不需要使用 NMS 做后处理。使得模型的训练和部署变得简单。
官方代码中写道,大家不要觉得目标检测是一个比图像分类更难的任务。这两个任务都可以用一个简单的优雅的框架做出来。而不是像之前的目标检测一样需要很多的人工干预,需要很多的先验知识,需要很多的复杂的、普通的库或者普通的硬件不支持的一些算子。
作者:
全部来自 Facebook AI。
Nicolas Carion:https://nicolascarion.com/ 。NYU 的博士生,该工作是在 Facebook AI 实习时候做出来的。
Francisco Massa:github 谷歌学术 。pytorch 最重要的维护者之一。
Alexander Kirillov:https://alexander-kirillov.github.io/ , 第一个提出 全精分割(panoptic segmentation)任务,panoptic fpn,又和 何凯明合作 PointRend,分割领域的大神。所以 DETR 论文中有一个全景分割的实验。
文章结构
加上附录 共 26 页。
- 摘要
- 引言
- 相关工作:写的很好,铺垫很好
- DETR 方法
- 目标检测任务上的性能
- 全景分割的实验
- 附录
- 概念铺垫:Transformer 结构,使用的目标函数
- 模型的具体结构,训练时超参数的设置
- 消融实验和结果
- DETR 伪代码(pytorch 代码),不到 50 行,包括了模型的建立,模型的 forward,整个推理过程都包括。
作者一直强调:DETR 是一个非常简单的算法,把目标检测做的和图像分类一样简单,
摘要
本文提出一种新方法,将目标检测视为 a direct set 预测问题。
把目标检测直接看成一个 集合预测 问题。任务:给定一张图片,预测一些框,每个框需要知道坐标和框内物体的类别。这些框就是一个集合,对于不同图片来说,里面包含的框也是不一样的,即每张图片对应的集合也是不一样的。任务是给定一张图片把集合预测出来。
该方法简化了检测 pipeline,有效地消除了对许多手工设计组件的需要,如 NMS 或 anchor 生成,这些组件显式编码了我们关于检测任务的先验知识。
贡献:把目标检测做成了一个 端到端的框架,之前先验知识的组件被删掉(NMS、生成 anchor)。 不用设计 anchor,不会输出那么多框,不用 NMS, 没有那么多超参数需要调整,整个网络变得非常简单。
新框架称为 DEtection TRansformer or DETR ,其主要成分是 a set-based global loss ,forces unique predictions via bipartite matching,以及 a transformer encoder-decoder architecture 。
DETR 提出了两个方法:
- 一个新的目标函数。通过 2分图匹配的方式 强制模型输出一组独一无二的预测。意思是:没有那么多冗余的框,每个物体理想状态下只会生成一个框。
- 使用了 transformer encoder-decoder architecture 。
- Transformer 解码器 有另外一个输入:learned object query。有点类似于 anchor。
给定 a fixed small set of learned object queries, DETR reasons about the relations of the objects and the global image context to directly output the final set of predictions in parallel.
给定 learned object queries 后,DETR 会把 learned object queries 和全局图像信息结合在一起,通过不停的去做这种注意力操作,从而让模型可以直接的输出一组预测框。
parallel 的意思是 并行出框,原因有两个:
- 原始的 Transformer 架构的解码器因为用到 NLP 中,有一个掩码机制,自回归方式一步步把文本生成出来。而目标检测是一次全部输出预测框。
- 并行比串行更好。因为预测的框是无序的。检测某个物体并不依赖其他物体,比如检测大物体并不依赖小物体。没有先后顺序,无法做自回归预测。检测希望越快越好,并行一起出框更高效。
与许多其他现代检测器不同,新模型在概念上很简单,不需要专门的库。在具有挑战性的COCO目标检测数据集上,DETR展示了与 the well-established and highly-optimized Faster RCNN baseline 相当的 accuracy and run-time 性能。此外,DETR 易于泛化,以统一的方式(a unified manner)产生全景分割。实验表明,它明显优于有竞争力的 baselines。
强调的是简单,不需要额外库,只需要库或者硬件支持 CNN 和 Transformer 那么就能支持 DETR。
第二是性能。当时 DETR 在目标检测 COCO 任务上比最好的方法差 10个 点。所以作者试了 全精分割任务。模型大部分不用动,只需要在后面加一个专用的分割头即可。
性能虽然在目标检测中不是最好,但是基于 DETR 的改进工作很多。
开源代码库值得一读。
引言
引言是 摘要的加长版,更多的细节。
目标检测的目标是预测每个感兴趣物体的一个边界框和类别标签的集合。
目标检测是一个集合预测的问题。
现代检测器通过 在大量 proposals [37,5]、anchors[23]或 window centers [53,46] 集合 上定义替代的 回归和分类问题,以间接的方式解决这一 集合预测任务。
目前的大多数好用的目标检测器都是用一种间接的方式处理集合预测问题。比如基于 proposals 的方式,RCNN 系列的工作(Faster R-CNN,Mask R-CNN, Cascade R-CNN)。或者 anchors 的方式,YOLO、Focal loss。或者 最近一些 Non Anchor base 的方法:物体的中心点(CenterNet、FCOS)。上述方法都没有直接去做 集合预测的任务,而是设计了一个替代的回归和分类的任务来解决目标检测问题。
它们的性能受到以下因素的显著影响: 消除 相邻重复预测(near-duplicate predictions) 的后处理步骤、anchor sets 的设计以及将 assign target boxes to anchors [52]的启发式方法。
以上的算法的性能被 后处理操作(NMS)影响。near-duplicate predictions:就是生成的冗余框。这些方法都会生成这些冗余框。anchor 和 NMS 使得检测器非常复杂,难以优化,难以调参。
为简化这些 pipelines,本文提出一种直接方式解决 集合预测任务,巧妙的绕过了这些替代的任务(绕过了 人工设计的这些部分,比如生成 anchor,NMS)。这种端到端哲学在复杂的结构化预测任务(如机器翻译或语音识别)中取得了重大进展,但在目标检测方面还没有: 以前的尝试[43,16,4,39]要么添加了其他形式的先验知识,要么没有被证明在具有挑战性的基准上与强大的基线具有竞争力。
这种端到端在很多别的任务大量使用,使得这些任务更简单。但是目标检测领域还没有。之前类似的尝试:learnable nms 、soft nms 一定程度上简化了目标检测的流程,但是要么融入了更多的先验知识,要么在比较难的 benchmark 数据集上取得不了很好的结果。
本文旨在弥合这一差距。
即不使用 更多的先验知识,就是端到端的网络,同时在难的数据集上取得不错的结果。

浙公网安备 33010602011771号