DETR简述

引言

  目标检测任务是预测感兴趣目标的bbox和类别标签集合,现代检测器不是直接预测一个目标的集合,而是通过使用回归和分类去处理大量的proposals、anchors或者window centers来替代,模型的效果会受到一系列问题的影响:比如用于处理近重复预测的后处理步骤、anchor集合的设计以及anchor与ground truth的分配策略等。为了简化检测流程,本文跳过代理任务(surrogate tasks,应该就是指回归分类之类的替代任务)直接预测输出集合,这种端到端理念在一些复杂的结构化预测问题,比如机器翻译和语音识别上都取得较好反馈,但在目标检测上尚未推广。之前的一些假设(《End-to-end people detection in crowded scenes》、《Learning non-maximum suppression》、《Soft-NMSimproving object detection with one line of code》、《Deep perm-set net: Learn to predict sets with unknown permutation and cardinality using deep neural networks》)要么添加其他形式的先验知识,要么没有证明在挑战性数据集上能获得与强baseline可比的性能。本文目标是填补这一差距(bridge this gap)。
  本文采用了基于transformers的编解码框架,该框架被广泛应用于序列预测,transformers中的自注意力机制使该框架非常适合于集合预测的特定约束,比如消除冗余,自注意力机制显式地建模了序列中元素对之间的交互关系。
DETR模型如图1所示
DETR简述_第1张图片
  DETR能够一次性预测所有的目标,其训练采用一种集合损失函数以端到端方式进行,集合损失定义在预测结果与真实目标的二部图匹配结果上,DETR扔掉了当前主流检测器中手工设计的一些用于编码先验知识的模块,比如空间anchor和非极大值抑制等,简化了检测流程,和存在的其他检测方法不一样,DETR不需要任何定制的层,因此能够便捷的在任何包含transformer和CNN的深度框架中进行复现。
  DETR有两个主要的特征,二部图匹配损失和并行解码的transformers。相反之前的工作都是用RNN做自回归的解码。本文的匹配损失函数唯一地将一个预测值指定给真实值,对预测值的排列顺序不敏感,因此可以并行的处理。

相关工作

  Set Prediction:目前并没有标准的用于直接预测集合的深度模型,最基础的集合预测任务是多标签分类,而其基线方法one-vs-rest并没有应用于检测任务,因为检测任务中元素之间有潜在的结构性 (例如ID相近的目标框)。这些任务中的首要问题是避免近似重复(near-duplicates),绝大多数当前的检测器都利用后处理方法,比如NMS处理这个问题,但是直接的集合预测是不需要后处理过程的,而是需要全局的推理框架用以建模所有预测结果之间的关系,进而避免冗余。对于固定大小的集合预测问题,密集全连接网络(《Scalable object detection using deep neural networks》)可以解决但是代价太大。更常见的方法是采用auto-regressive序列将该问题建模为RNN网络(《Order matters: Sequence to sequence for sets》)。在所有的情况下,损失函数相对于预测都应该具有排列不变性。最常见的解决办法是设计一种基于匈牙利算法(《The hungarian method for the assignment problem》)的损失函数来找到groud truth与预测框之间的二值匹配。这样能够保证排列不变性且保证了每个目标只有唯一的匹配结果。
本文采用的是二部图匹配损失的思路,然而与当前大多数方法不同的是,没有用auto-regressive模型,而是使用可以并行编码的transformers框架。
  Transformers and Parallel Decoding:Transformers是由Vaswani在《Attention is all you need》提出的一种新的用于机器翻译的注意力模块,注意力机制是用于从整个输入序列中聚合信息的网络层,Transformers和Non-local网络(《Non-local neural networks》)一样引入了自注意力机制,遍历序列中的每个元素并通过整个序列的聚合信息更新该元素,基于attention的模型的一个主要优势在于全局计算与记忆,使其相对于RNN更适合于长时序列,Transformers现在已经在NLP,CV和语音处理等多个领域上取代了RNN。
  Object detection:最与本文方法最相似的是对象检测的端到端集合预测(《End-to-end people detection in crowded scenes》)和实例分割(《Recurrent neural networks for semantic instance segmentation》)。它们使用了二部图损失以及基于CNN激活的编解码结构直接预测bbox的集合。然而这些方法只在小的数据集上进行了对比,并没有对比大的数据集,并且它们是基于auto-regressive(原文这里中间没有-)模型,更具体来说是RNN,因此无法使用最近提出的具有并行编码的transformers。

方法

具体的DETR模型如图2所示:
DETR简述_第2张图片
DETR简述_第3张图片
DETR简述_第4张图片

实验

  表1展示了BERT和Faster-RCNN的对比。
DETR简述_第5张图片
  表2展示了编码器大小对性能的影响
DETR简述_第6张图片
   表3展示了不同组合固定和学习的encodiing下的结果
DETR简述_第7张图片
  表4展示了损失函数上的效果对比。
DETR简述_第8张图片

总结

  本文将Transformer引入了目标检测领域,提出的方法名为DETR,将目标检测看作一种集合预测问题,用CNN提取基础特征,送入Transformer做关系建模,得到的输出通过二部图匹配算法与groud truth做匹配,详细来讲,CNN提取的特征经过flatten拉直后加入位置编码得到序列特征,作为Transformer编码器的输入,Transformer中的注意力机制具有全局感受野,能够实现全局上下文的关系建模,Transformer解码器中的序列是object queries,每个query对应图像的一个物体实例,通过交叉注意力机制从编码器输出的序列对特定物体实例的特征做聚合,又通过自注意力机制建模该物体实例和其他实例之间关系,最终用FFN基于特征聚合后的object queries做分类检测框的回归。

你可能感兴趣的:(计算机视觉)