目标检测 - End-to-End Object Detection with Transformers

0. 前言

  • 相关资料:
  • 论文基本信息
    • 领域:目标检测
    • 作者单位:FAIR
    • 发表时间:2020.5
  • 一句话总结:提出了一种不同于之前工作的新目标检测解决方案

1. 要解决什么问题

  • 当前的目标检测解决方案(比如Faster RCNN/YOLO/CenterNet等)都不够直观
    • 把检测任务分解为获取候选框/anchors/图像中心点、分类两部分。
    • 性能很大程度上取决于postprocessing操作(用于删除多余的结果)

2. 用了什么方法

  • 将检测任务看作是direct set prediction problem

    • set prediction,就是一次预测一波数据,可能相互之间没啥关系,相当于是多个head同时进行预测?可能更类似于序列任务中的一对多任务?
  • DETR结构如下图所示

    • 目标检测 - End-to-End Object Detection with Transformers
    • 目标检测 - End-to-End Object Detection with Transformers
  • 新的目标检测解决方案(或者说范式?),就是要解决以下两个问题:

    • 模型一共分几步,每一步获取什么叫结果(从而获得最终的检测结果),以及损失函数如何构建。
      • 对于Faster R-CNN,就是先通过RPN获取候选框,再通过分类网络获取每个候选框的类型,最后通过后处理筛选得到最终结果。损失函数就是RPN与Fast R-CNN分别的分类损失函数与bbox reg损失函数。
    • 模型获得每一步结果的具体结构长什么样子
      • 对于Faster R-CNN,就是RPN的设计以及套用Fast R-CNN模型的分类部分。
  • DETR概述

    • 第一步:利用Transformer构建DETR Architecture,对每张图片预测固定数量的物体。
      • 可能就是所谓的 set prediction
    • 第二步:训练时,需要将固定数量的预测物体与GT进行匹配。DETR的目标,就是找到set prediction结果与GT的匹配关系。
  • 一些损失函数相关细节

    • 假设set prediction有N个预测结果,而GT的数量一般都是小于N,那么,先要对GT执行PAD操作(用no object来进行填充),然后找道预测结果与GT的两两匹配结果。

    • 这里的匹配与之前Faster RCNN/Yolo的匹配其实都是差不多的,不同之处在于,DETR中GT与预测结果是一一匹配的。

    • DETR的损失函数总体结构为:目标检测 - End-to-End Object Detection with Transformers

    • 所谓匹配,分开来说,其实就是包括类别匹配与bbox匹配。所以上面同时中的 L m a t c h L_{match} Lmatch也可以分为这两个部分,形式如下目标检测 - End-to-End Object Detection with Transformers

    • 上面公式中,box的损失函数其实使用的是l1 loss和GIOU loss的线性组合,即目标检测 - End-to-End Object Detection with Transformers

  • Detr网络结构概述

    • 网络分为三个部分:backbone, encoder-decoder transformer, feed forward network
    • backbone:没啥好说的,普通卷积网络,用于提取图像特征。
    • encoder-decoder transformer
      • 第一,Encoder输入构建。对backbone的结果进行降维(1x1卷积,使得channel数量减少),然后flatten为dx(HW)的特征图。感觉就是将d个长度为HW的向量作为encoder的输入。Encoder输入中还融合了positional encodings信息。
      • 第二,Encoder结构。与普通Transformer相同,以上一步的结果作为输入,通过Transformer的multi-head self-attention模块和feed forward network。
      • 第三,Decoder结构,与普通Transformer几乎相同。不同之处在于DETR中对于N个物体是并行预测的,而原始Transformer是一个一个生成的。
      • 第四,FFNs,即Prediction Feed Forward Netkworks,用于预测最终bbox结果。预测的值是 normalized center coordinates, height, width以及基于softmax的分类结果。有两点需要注意:其一,直接预测坐标,而不是那些基于anchor的,预测变化量;其二,类别预测中要有一类为no object
  • 全景分割相关

3. 效果如何

  • 效果自然顶呱呱目标检测 - End-to-End Object Detection with Transformers

4. 还存在什么问题&可借鉴之处

  • 论文中提到,在大目标中DETR效果有显著提升,但小目标效果不好。
  • 训练时间非常长……训练300epochs,16V100需要3天……甚至还有训练500epoch的……
  • 要理解这论文,还是要更深刻地理解Transormer,这样position encodeings、encoder、decoder的细节才能搞清楚。
  • 可以考虑下,如何用到视频领域,挺有意思的。不过就算有想法,这训练资源,有点劝退。