DETR 论文精读【论文精读】
asterisce
2022年06月12日 23:40

Title: End-to-End Object Detection with Transformers

这篇笔记是对李老师与朱老师在B站的视频DETR 论文精读【论文精读】的一点笔记,感谢以上老师的视频。

Detr的开创性主要体现在通过Transformer结构将之前模型做object detection任务很繁琐的

  1. 生成proposal/anchor

  2. NMS非极大值抑制

策略简化为一个end2end训练的策略,极大的减小了调参和部署的难度。

先前广泛使用的检测模型将detection通过

  • proposal

  • anchors

  • Window centers

等将几何预测间接转化为回归/分类任务去解决问题,这些方法都依赖postprocessing操作(nms),导致这些模型非常复杂,难以优化,所以detr设计了一种端到端的方法

上图展示了DETR的工作流程

  • CNN 获得feature

  • 送入encoder获得全局信息

  • decoder根据object query生成检测框,最后生成的框数与object query相对应

  • 计算loss时只选择最接近ground truth的两个box计算loss,其他为背景类

使用encoder获得全局信息,使得模型能够将一个object整体识别在一个bounding box中,从而避免了冗余的anchors情况出现。

取得了与Fast R-CNN comparable的结果,在大物体上预测结果好,小物体上预测结果差,也为后续工作留下改进空间。

有很好的的泛用性,设计为复杂预测的一个通用模型,在全景分割任务上也有很好的效果。后续很多工作在很多任务上都有很好的表现。

DETR主要的两个特点

  • Set-based loss

  • Recurrent detectors

之前都有工作在其他backbone上实现过,但是效果不够好,所以归根结底还是Transformer的成功

模型详解

DETR首先根据object query生成一个固定数量(文中n = 100)的bounding box,到这里其实和之前proposal或anchors似乎差不多,但有一个很重要的性质:DETR中认为一个object只会出现在一个bounding box中,因此使用一对一的匹配方式,所以直接使用匈牙利算法就可以得到最佳匹配,而避免了nms过程。

loss与之前方法相似,由分类与检测两部分组成

整个模型详细结构如下

总的来说,DETR与Fast R-CNN效果差不多,但是在大物体上得益于Transformer的全局建模信息,DETR效果好很多,小物体上由于DETR模型过于简单所以效果不好

启发

写论文时如果觉得想法很好,但是刷分刷不过,可以换一个切入点,尝试多种数据集或者设置,或者多做一些相关实验来证明自己的论点。

可视化实验

Encoder:

Decoder:

Object query:

可以看出Encoder的作用主要是将object尽量分开,而Decoder则负责将每个object边缘较难部分进行处理,Object query看出每一个query都负责图片中的一部分检测,同时也学习到COCO数据集的一个pattern。

DERT是一篇object detection领域里程碑的paper,后续有相当的多的工作以它为名字进行改进。

该笔记首发自我的blog:https://www.asteriscum.cn/2022/06/12/45/15/