DETR-端到端的目标检测框架
论文:https://arxiv.org/abs/2005.12872 代码:https://github.com/facebookresearch/detr
DETR
第一个将 Transformer 成功整合为检测 pipeline 中心构建块的目标检测框架。基于Transformers的端到端目标检测,没有NMS后处理步骤、真正的没有anchor,且对标超越Faster RCNN。 DETR将检测视为集合预测问题,简化了目标检测的整体流程。它没有现在主流的目标检测器中的anchor、label assign、nms等操作,做到了真正的end-to-end。它主要采用了Transformer的编解码结构,它在序列预测任务上大获成功。Transformer中的自注意力机制显示地界定了序列中元素间的相互作用,因此可以用于约束集合的预测结果。 DETR通过将常见的CNN与transformer架构相结合,直接(并行)预测最终的检测结果。 在训练期间,二分匹配将唯一的预测分配给GT框。 不匹配的预测应产生“无对象”(∅)类预测。 DETR的流程大为简化,可以归结如下:Backbone -> Transformer -> detect header。
将DETR的结构在具体化,可以表示如下DETR使用常规的CNN主干来学习输入图像的2D表示。 模型将其展平并在将其传递到transformer编码器之前对其进行位置编码补充。 然后,transformer解码器将少量固定数量的学习的位置嵌入作为输入,我们称其为对象查询,并另外参与编码器的输出。 我们将解码器的每个输出嵌入传递到预测检测(类和边界框)或“无对象”类的共享前馈网络(FFN)。
Backbone
传统的CNN主干会生成较低分辨率的激活图f∈R C×H×W。 DETR使用的典型值是C = 2048和H,W = H0 / 32,W0 / 32。 Transformer encoder
Transformer decoder
解码器遵循transformer 的标准体系结构,使用多头自编码器和编码器-解码器注意机制转换大小为d的N个嵌入。与原始转换器的不同之处在于,DETR模型在每个解码器层并行解码N个对象,而Vaswani等人 [47]则是使用自回归模型,一次预测一个元素的输出序列。
利用对这些嵌入的自编码器和解码器注意力,该模型使用它们之间的成对关系,全局地将所有对象归结在一起,同时能够将整个图像用作上下文。
Prediction feed-forward networks (FFNs)
最终预测是由具有ReLU激活功能且具有隐藏层的3层感知器和线性层计算的。 FFN预测框的标准化中心坐标,高度和宽度, 输入图像,然后线性层使用softmax函数预测类标签。 由于我们预测了一组固定大小的N个边界框,其中N通常比图像中感兴趣的对象的实际数量大得多,因此使用了一个额外的特殊类标签∅来表示在未检测到任何对象。 此类在标准对象检测方法中与“背景”类具有相似的作用。 Auxiliary decoding losses
