DETR: End-to-End Object Detection with Transformers

简介

Detection Transformers,简称DETR。DETR 将目标检测任务视为一个图像到集合(image-to-set)的问题,即给定一张图像,模型的预测结果是一个包含了所有目标的无序集合。文献的地址和代码的地址

https://ai.facebook.com/research/publications/end-to-end-object-detection-with-transformers
https://github.com/facebookresearch/detr

算法流程与模型架构,简单看两张图
DETR: End-to-End Object Detection with Transformers_第1张图片
如图所示,输入一张图片,经过CNN得到feature maps,送入transformer encoder-decoder中,输出预测的结果,包括它的类别和坐标框。

DETR: End-to-End Object Detection with Transformers_第2张图片
如图所示,这是一个稍微详细一些的流程图。输入一张图片,经过backbone得到feature maps,加上位置编码,送入transformer encoder,encoder的输出送到decoder中,decoder自己再输入object queries。decoder的输出经过FFN层,输出预测的结果,包括它的类别和坐标框。

数据的输入输出

训练
输入:

  • Image:(bs, C, H, W)
  • label:bs=2
       0: boxes(39, 4)
         label(39,)
       1: boxes(5, 4)
         label(5,)
    注:数量不足100,填充到100,1对1匹配,计算loss

输出:

  • logits:(bs, 100, num_class+1) 注:100是框的数量
  • boxes:(bs, 100, 4) 注:100是框的数量,4是坐标的维度

注:这个输出是与label求loss的

推理
输入:

  • Image:(bs, C, H, W)

输出:

  • logits:(bs, 100) 注:100是框的数量
  • boxes:(bs, 100, 4) 注:100是框的数量,4是坐标的维度

网络架构与数据在模型中的流动

网络架构
DETR: End-to-End Object Detection with Transformers_第3张图片
数据流
从输入一个batch的图片到encoder的过程:
DETR: End-to-End Object Detection with Transformers_第4张图片
backbone是ResNet50/ResNet101,可以换成其他的特征提取的网络。

从encoder的输出到decoder的输出过程:
DETR: End-to-End Object Detection with Transformers_第5张图片
这里加一下decoder的详解吧
DETR: End-to-End Object Detection with Transformers_第6张图片

loss部分

DETR: End-to-End Object Detection with Transformers_第7张图片
这是是使用不同的loss函数的结果
DETR: End-to-End Object Detection with Transformers_第8张图片

评估结果

DETR: End-to-End Object Detection with Transformers_第9张图片

你可能感兴趣的:(小骨子的工作所记,深度学习,2023读过的文献,目标检测,深度学习,计算机视觉)