End-to-End Object Detection with Transformers论文笔记

End-to-End Object Detection with Transformers论文笔记_第1张图片
原文链接:https://arxiv.org/pdf/2005.12872v3.pdf
2020年发表在ECCV上

摘要

  • 将目标检测看作直接集合预测问题。
  • 优点:简化了解决方案,有效的消除了许多手工设计组件的需要,如非极大值抑制步骤或锚框生成。
  • 明确编码关于任务的先验知识。
  • 新框架的主要组成部分被称为DEtection TRansformer(DETR),是一个基于集的全局损失,通过二部匹配和transformer编码器-解码器结构,强制进行唯一预测。
  • 给出一个固定的小的学习过的目标查询集,DETR推理目标和全局图像上下文的关系,直接并行输出最终的预测集。
  • COCO目标检测数据集上,与完善和高度优化的Faster RCNN基线有相当的准确性和运行时性能。
  • 很容易以统一的方式推广到全景分割。

1 介绍

  • 现在的检测器

    • 实现目标检测:在大量的建议、锚框、窗口中心中定义代理回归和分类问题。
    • 性能受到以下因素的显著影响:
      后处理步骤来压缩接近重复的预测
      锚框集的设计
      将目标框分配给锚框的启发式方法
  • 本文提出

    • 直接集预测方法,绕过代理任务。
    • 端到端。已经在复杂的结构化预测任务(如机器翻译或语音识别)方面取得了重大进展,但在目标检测方面尚未取得进展。
    • 将目标检测看作直接集预测问题。
    • 采用一种基于transformers的编解码结构,这是一种常用的序列预测结构,transformers中的自注意力机制,显式地建模序列中所有元素之间的成对交互,使这些架构特别适合于特定的集预测约束,如删除重复预测。
    • End-to-End Object Detection with Transformers论文笔记_第2张图片
      DETR通过将普通CNN与transformer架构相结合,直接(并行)预测最终的检测集。训练过程中,二部匹配利用ground truth框唯一地分配预测,没有匹配的预测将产生”无目标“类预测。
    • DETR一次性预测所有的目标,通过集损函数进行端到端训练,该函数在预测目标和ground-truth目标之间进行二部匹配。
    • DETR通过丢弃多个手工设计的编码先验知识的组件,如空间锚或非极大值抑制,从而简化了解决方案。
    • 大多数现有的检测方法不同,DETR不需要任何的自定义层,因此可以在任何包含标准CNN和transformer类的框架中轻松地复制。
    • DETR的主要特点:将二部匹配损失和transformers与(非自回归)并行译码结合起来。
    • 匹配损失函数唯一地将一个预测赋给一个ground truth目标,并且对预测目标的排列不变,因此我们可以并行地发出(emit发出什么意思?)它们。
    • DETR与Faster R-CNN对比,性能相当。DETR在大型目标上展示了明显更好的性能,这很可能是由transformer的非局部计算实现的。然而,它在小目标上的性能较低。
    • 新模型训练需要有额外长的训练时间。
    • 在实验中证明了在预训练的DETR上训练好的简单分割头在全景分割上的性能优于竞争基线。

2 相关工作

用于集合预测的二部匹配损失、基于变压器的编码器-解码器体系结构、并行译码和目标检测方法。

2.1 集合预测

  • 基本的集合预测任务是多标签分类,对于这类问题,一对一的基线方法并不适用于元素之间存在底层结构的检测等问题(即,几乎相同的框)。
  • 目前大多数检测器使用后处理(如非最大抑制)来解决检测框的重复问题,但直接集合预测不需要后处理。
  • 直接集合预测需要全局推理模式来模拟所有预测元素之间的相互作用,以避免冗余。对于常数大小的集合预测,密集的全连接网络就足够了,但成本很高。一般的方法是使用自回归序列模型,如循环神经网络。在所有情况下,损失函数应通过预测的排列保持不变。通常的解决方案是在匈牙利算法的基础上设计一个损失,以找到ground-truth和预测之间的二部匹配。这就强制了置换不变性,并保证每个目标元素都有唯一的匹配。我们采用二部匹配损失方法。
  • 与大多数之前的工作相比,我们不再使用自回归模型,而是使用带有并行解码的transformers。

2.2 Transformers和并行译码

  • Transformers是一个基于注意力的构建块,用于机器翻译。注意机制是神经网络层,从整个输入序列中聚集信息。Transformers引入自注意力层,类似于非局部神经网络,扫描序列的每个元素,并通过从整个序列(结合上下文信息)中聚合信息来更新它。基于注意力的模型的主要优点之一是其全局计算和完美的记忆性。
  • 由于具有限制性的推理成本(与输出长度成正比,且难以批处理),导致了并行序列生成技术的发展。我们结合了Transformers和并行译码,以便在计算成本和执行集合预测所需的全局计算能力之间进行适当的权衡。

2.3 目标检测

  • 大多数现代的目标探测方法是相对于一些最初的猜测进行预测
  • 两阶段检测器利用建议来预测框。
  • 一阶段检测器利用锚框或可能的目标中心网格做出预测。
  • 这些系统的最终性能很大程度上取决于这些初始猜测的准确设置方式。在我们的模型中,我们可以去除这种手工制作的过程,用输入图像的绝对框预测来直接预测检测集,而不是用一个锚框,这样简化了检测过程。
  • 基于集合的损失
    • 一些目标检测器使用了二部匹配损失。然而,在这些早期的深度学习模型中,不同预测之间的关系仅采用卷积或全连接层建模,用手工设计的NMS后处理来提高它们的性能。
    • 可学习NMS方法和关系网络显式地对不同预测之间的关系进行关注建模。使用直接集损,它们不需要任何后处理步骤。然而,这些方法使用额外的手工上下文特征,如提议框坐标,以高效地建模检测之间的关系,同时我们寻找减少模型中编码的先验知识的解决方案。
  • 周期性的检测器
    • 某些目标检测和实例分割的端到端集合预测与我们的方法接近。与我们类似,他们使用基于CNN激活的编码器-解码器架构的二部匹配损失来直接产生一组包围盒。然而,这些方法仅在小数据集上进行评估,而没有参照现代基线。特别是,它们是基于自回归模型(更准确地说是rnn)的,所以它们没有利用并行解码的最新transformers。

3 DETR模型

在检测中,两个因素对于直接集合预测至关重要:(1)集合预测损失。迫使预测和ground truth框之间唯一匹配;(2)一种体系结构,它预测一组目标并对它们之间的关系进行建模。
End-to-End Object Detection with Transformers论文笔记_第3张图片
DETR用传统的CNN主干来学习输入图像的二维表示,在将其传递到transformer编码器之前,模型将此二维表示”压平“,并使用位置编码对其进行补充。然后,transformer解码器将一小部分固定数量的学习到的位置嵌入(我们称之为对象查询)作为输入,并额外处理编码器的输出。我们将解码器的每个输出嵌入传递给一个共享前馈网络(FFN),该网络可以预测一个检测(类和边界框)或一个“无目标”类。

3.1 目标检测集预测损失

通过解码器的过程中,DETR推断出一个大小为N的预测集,N是明显大于图像中目标数量的值。通过损失函数,得到预测目标和ground truth目标之间的最佳二部匹配,然后优化目标特定(边界框)的损失。

  • y y y表示目标的ground truth集
  • y ^ = { y i ^ } i = 1 N \hat{y}=\{\hat{y_i}\}^N_{i=1} y^={yi^}i=1N表示有N个预测的集合

N比图像中的目标数量要大, y y y也是一个大小为N的集合,不够N用 ∅(无目标)填充。为了找到这两个集合之间的二部匹配,我们寻找成本最低的N个元素的排列
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述是一个成对比配代价。
在前面的工作之后,使用匈牙利算法有效地计算出这种最优分配。
匹配代价既考虑了类预测,也考虑了预测框和ground truth框的相似性。ground truth集中的每一个元素 i i i可以被看作一个 y i = ( c i , b i ) y_i=(c_i,b_i) yi=(ci,bi) c i c_i ci是目标类标签(可能为 ∅), b i b_i bi [ 0 , 1 ] 4 [0,1]^4 [0,1]4是一个向量,表示ground truth框的中心坐标、高度、宽度。下标为 σ ( i ) \sigma(i) σ(i)的预测表示类别 c i c_i ci是预测的类 p ^ σ ( i ) ( c i ) \hat{p}_{\sigma(i)}(c_i) p^σ(i)(ci)并且预测的框为 b ^ σ ( i ) \hat{b}_{\sigma(i)} b^σ(i)的概率。

在这里插入图片描述
就是在这里插入图片描述
这种寻找匹配的过程与现代探测器中用于匹配提议或锚定到gt目标的启发式分配规则相同。主要的区别是,我们需要找到一对一的匹配来进行没有重复的直接集合预测
第二步是计算损失函数,即前一步匹配的所有配对的匈牙利损失。我们对损失的定义类似于普通目标检测器的损失:在这里插入图片描述
σ ^ \hat{\sigma} σ^是第一步计算的最优分配
边界框损失。匹配成本和匈牙利损失的第二部分是 L b o x ( ⋅ ) L_{box}(·) Lbox(),它对边界框进行评分。不像许多探测器做框预测(w.r.t.一些初步猜测),我们直接进行框预测。虽然这种方法简化了实现,但它提出了一个相对缩放损失的问题。最常用的 l 1 l_1 l1损失对于小框和大框将会有不同的尺度,即使它们的误差是相似的。为了缓解这个问题(为什么要缓解这个问题?),使用了 l 1 l_1 l1损失和广义IOU损失 L i o u ( ⋅ , ⋅ ) L_{iou}(·,·) Liou(,)的线性组合,它是比例不变的。总的来说,我们的框损失是在这里插入图片描述
定义为在这里插入图片描述
λ i o u , λ L 1 \lambda_{iou},\lambda_{L1} λiou,λL1∈R是超参数

3.2 DETR架构

End-to-End Object Detection with Transformers论文笔记_第4张图片
DETR体系结构包含3个主要组成部分:一个CNN骨干提取紧凑的特征表示、一个编码器-解码器transformer、一个进行最终的检测预测的简单的前馈网络(FFN)。
与许多现代检测器不同的是,DETR可以在任何深度学习框架中实现,该框架提供了一个通用的CNN主干和一个仅几百行的transformer架构实现。
骨干。初始图像为3通道,高度 H 0 H_0 H0,宽度 W 0 W_0 W0,一个传统卷积神经网络骨干生成低分辨率的激活映射 f f f R C × H × W R^{C×H×W} RC×H×W,使用典型值 C = 2048 , H , W = H 0 / 32 , W 0 / 32 C=2048,H,W=H_0/32,W_0/32 C=2048H,W=H0/32,W0/32。(输入图像被分批处理在一起,充分应用0-padding以确保它们都具有相同的尺寸(H0, W0)作为批处理中最大的图像。)
transformer编码器。首先,1x1卷积将高级激活映射f的通道维数从C降低到更小的维数d,创建一个新的特征映射 z 0 z_0 z0 R d × H × W R^{d×H×W} Rd×H×W。编码器需要一个序列作为输入,因此我们将 z 0 z_0 z0的空间维度压缩为一维,从而得到d×HW特征映射。每个编码器层都有一个标准的结构,由一个多头自注意模块和一个前馈网络(FFN)组成。由于transformer体系结构是置换不变的,我们用固定位置编码对其进行补充,并将其添加到每个注意层的输入中。
transformer解码器。解码器遵循transformer的标准架构,使用多头自注意力机制和编码器-解码器注意机制转换尺寸为d(尺寸为什么是d呢?不应该是d×HW吗?)的N个嵌入。与原始transformer的不同之处在于,我们的模型在每个解码器层并行解码N个对象,而Vaswani等人使用自回归模型,每次预测一个元素的输出序列。由于解码器也是置换不变的,所以N个输入嵌入必须不同才能产生不同的结果。这些输入嵌入是我们称之为目标查询的学习位置编码,与编码器类似,我们将它们添加到每个注意层的输入中。N个目标查询被解码器转换成一个输出嵌入。然后,通过前馈网络将它们独立解码为框坐标和类标签,得到N个最终预测。利用自注意力机制和编码器-解码器注意机制对这些嵌入的关注,模型利用它们之间的成对关系对所有目标进行全局推理,同时能够使用整个图像作为上下文。
预测前馈网络(FFNs)。最后的预测是由一个带有ReLU激活函数和隐藏维数d的3层感知器和一个线性投影层计算的。FFN预测输入图像的归一化中心坐标、框的高度和宽度,线性层使用softmax函数预测类标签。由于我们预测一个固定大小的N个包围框集合,其中N通常比图像中感兴趣的物体的实际数量大得多,所以使用额外的特殊类标签∅来表示槽内未检测到物体。这个类在标准目标检测方法中扮演着类似于“背景”类的角色。
辅助解码损失。在训练过程中使用辅助损失在解码器中很有帮助,特别是帮助模型输出每个类的目标的正确数量。在每一层译码器后加入预测ffn和匈牙利损失。所有预测ffn共享它们的参数。

4 实验

数据集。COCO2017检测集、panoptic分割数据集。
对比算法。Faster RCNN。
评价指标。 GFLOPS/FPS 、#params 、 A P AP AP A P 50 AP_{50} AP50 A P 75 AP_{75} AP75 A P S AP_S APS A P M AP_M APM A P L AP_L APL

你可能感兴趣的:(深度学习,人工智能,计算机视觉)