代码地址:https://github.com/facebookresearch/detr
论文小结
本文是Transformer结构应用于目标检测(OD)任务的开山之作。方法名DETE,取自Detection Transformer。
作为2020年的论文,其表现精度在当时也不算高的,但为后面的DETE-based方法提供了基础。
DETR的模型架构设计,使用的是混合Transformer结构,即CNN+Transformer的结构,
与YOLO系列基于grid的预测对比,DETR经过transformer的decoder输出的是序列集。由于OD任务不需要自回归处理,所以decoder的输出可以并行处理,同时输出多个检测框。
transformer输出的是序列集,而OD任务所需要的最终结果也是一个边框集合,所以DETR是直接对结果进行的预测,即OD任务在此直接为集合预测问题。
集合预测问题,在匹配损失的时候,具有唯一性。所以DETR的预测结果在合理的Loss作用下,是不需要NMS后处理的。且在没有anchor grid和anchor box的偏差预测过程的情况下,DETR算法管道实现端到端训练和预测,丢弃了YOLO系列所需的融入先验知识的需求(anchor & nms)。
文中DETR对比的算法是Faster RCNN,是2015年的一篇论文,精度差不多,运行时间也差不多。小目标不如Faster RCNN,大目标好不少,最后mAP基本持平。
后续也有论文改进了transformer在小目标检测上精度不足的问题。

论文简介
现有大多数检测算法,都依赖于一些初始猜测。不管是基于proposal的二阶目标检测算法,还是anchor-based、anchor-free的一阶目标检测算法,都是没有直接去预测集合预测的,而是设计了一个替代的任务(回归和类别概率)来解决目标检测问题。
现代目标检测器的检测性能很受后处理步骤的影响,比如(1)密集预测边界框的消除;(2)anchor集合的额设计;(3)将目标分配给anchor的启发性方法;
DETR通过直接预测集合的方法来绕过这些“代理”任务,无需任何人工先验知识,实现端到端预测。
DETR的结构图如图1所示。其组件transformer-encoder将序列元素两两交互,其全局的交流有利于一些特别限制的集合预测,比如移除重复的预测结果。
DETR使用二分图匹配来计算端到端的几何损失,匹配的唯一性,也进一步限制了重复的预测结果。
和其他的集合集合预测方法对比,DETR的主要区别就在于使用了二分图匹配损失以及平行解码的transformer结构。之前的集合预测方法一般使用RNNs模型做自回归预测。
论文方法
由于transformer的decoder结构其输入输出维度保持不变,故当输入序列长度为 N N N,我们也能得到序列长度为 N N N的固定长度输出。本文DETR的输入序列命名为 object quires,是一组基于学习得来的参数,可视化如下图 7 7 7所示。
损失计算
集合预测的训练难点在于如何结合GT来给预测目标打分。本文的损失计算策略是先用二分图匹配方法,再对有目标(匹配成功)的bboxes计算损失。
将目标集合 y y y扩展到长度 N N N,不足长度的部分用 ∅ \varnothing ∅表示,意为无目标。预测集合 y ^ \hat{y} y^和GT集合 y y y的匹配,是寻找两个集合匹配的最低消耗,如公式 ( 1 ) (1) (1),其中 σ ( i ) \sigma(i) σ(i)是预测集合第 i i i个。
σ ^ = arg min σ ∈ G N ∑ i N L match ( y i , y ^ i ) (1) \hat{\sigma}=\mathop{\text{arg min}} \limits_{\sigma\in\mathscr{G}_N}\sum_i^N\mathcal{L}_{\text{match}}(y_i, \hat{y}_i)\tag{1} σ^=σ∈GNarg mini∑NLmatch(yi,y^i)(1)
匈牙利算法(Hungarian algorithm)是这个最佳匹配的一个较优解法。匹配消耗考虑类别预测和边框预测的综合损失。考虑第 i i i个预测的类别 c i c_i ci