论文阅读:DETR:End-to-End Object Detection with Transformers

题目:End-to-End Object Detection with Transformers

来源:Facebook AI ECCV2020

论文链接:https://arxiv.org/abs/2005.12872

个人觉得有用的和自己理解加粗和()内表示,尽量翻译的比较全,有一些官方话就没有翻译了,一些疑惑的地方欢迎大家探讨。

如果对transformer比较了解 建议只用看一下 引言最后一段 + 第三章网络结构即可。可以打开右侧目录跳转。

0、摘要

        我们提出了一种将目标检测视为直接预测问题的新方法。我们的方法简化了检测方法,有效地消除了对许多手工设计的组件的需求,例如非最大抑制过程NMS或锚点anchor生成(例如两阶段的都是这么做的RCNN系列论文),这些组件潜入了我们对任务的先验知识。新框架的主要部分叫做DEtection TRansformer或者DETR,是基于集合的全局损失,该损失通过二分匹配和transformer编码器-解码器体系结构来强制进行唯一预测。给定一小部分已学习的对象查询,可以确定有关对象与全局图像上下文的关系的原因,从而直接并行输出最终的预测集。与许多其他现代探测器不同,新模型在概念上很简单,不需要专门的库。DETR在具有挑战性的COCO对象检测数据集上展示了与完善且高度优化的更快RCNN基线相当的准确性和运行时性能。此外,DETR可以很容易地推广,以统一的方式产生全景分割。我们表明,它显著优于竞争基线。代码和预训练模型可在https://github.com/facebookresearch/detr. 获得。(优点总结:标题是endtoend,理想情况下每个只会输出一个框不需要后处理,而且是并行处理;Transformer结合全局信息;结构简单不需要专门的库;可以拓展到其他领域如全景分割)

1、引言

        对象检测的目标是预测每个感兴趣对象的一组边界框和类别标签。现代检测器通过在大量建议 [37,5],锚 [23] ,窗口中心 [53,46] 上定义替代回归和分类问题,以间接方式解决预测任务。它们的性能受到崩溃近乎重复的预测的后处理步骤,这是锚点集合的设计以及将目标框分配给锚的启发式方法 [52]导致的。为了简化这一方法,我们提出了一种直接预测方法来绕过代理任务。这种端到端的思想导致了复杂的结构化预测任务 (例如机器翻译或语音识别) 的重大进步,但尚未在目标检测中取得进展: 先前的尝试 [43,16,4,39] 要么添加其他形式的先验知识,或者没有被证明在具有挑战性的基准上具有强大的基线竞争力。本文旨在弥合这一差距。(目前存在问题:重复的框太多,生成proposal (RCNN系列)和anchors(yolo系列),后处理太复杂)

        我们通过将目标检测视为直接预测问题来简化训练过程。我们采用基于Transformer的编码器-解码器架构 [47],这是一种用于序列预测的流行架构。Transformer的自我注意机制明确地对序列中元素之间的所有成对相互作用进行了建模,使这些体系结构特别适合于集合预测的特定约束,例如删除重复的预测。

        我们的 DEtection TRansformer(DETR,见图 1)一次预测所有对象,并使用一组损失函数进行端到端训练,该损失函数在预测对象和真实对象之间执行二分匹配。 DETR 通过删除多个手动设计的编码先验知识的组件(如空间锚点或非最大抑制)来简化检测流程。与大多数现有检测方法不同,DETR 不需要任何自定义层,因此可以在任何包含标准 CNN 和转换器类的框架中轻松复用。

论文阅读:DETR:End-to-End Object Detection with Transformers_第1张图片

        与大多数以前的直接集预测工作相比,DETR 的主要特征是二分匹配损失Transformer(非自回归)并行解码的结合 [29,12,10,8]。相比之下,之前的工作侧重于使用 RNN 进行自回归解码 [43,41,30,36,42]。我们的匹配损失函数唯一地将预测分配给地面真值对象,并且对于预测对象的排列是不变的,因此我们可以并行发出它们。

        我们在最受欢迎的对象检测数据集之一COCO [24] 上评估DETR,而不是非常有竞争力的更快的r-cnn基线 [37]。更快的RCNN经历了多次设计迭代,自最初发布以来,其性能得到了极大的提高。我们的实验表明,我们的新模型达到了可比的性能。更准确地说,DETR在大型对象上显示出明显更好的性能,这很可能是由transformer.的非局部计算实现的。但是,它在小物体上的性能较低。我们预计,未来的工作将改善这方面,就像FPN [22] 的开发为Faster R-CNN所做的那样。(Deformable DETR就是解决这一问题)

        DETR的训练设置在多种方面不同于标准对象检测器。新模型需要超长的训练时间表,并受益于transformer.中的辅助解码损耗。我们彻底探索哪些组件对演示的性能至关重要。

        DETR的设计精神很容易扩展到更复杂的任务。在我们的实验中,我们表明,在预先训练的DETR之上训练的简单分割头在全景分割任务上上超越了竞争性基线 [19],这是一项具有挑战性的像素级识别任务。

2、相关工作

        我们的工作建立在几个领域的先前工作之上:集合预测的二分匹配损失、基于transformer的编码器-解码器架构、并行解码和对象检测方法。

2.1 集合预测Set Prediction

        没有规范的深度学习模型来直接预测集合。基本集合预测任务是多标签分类 (例如,参见 [40,444] 以获取计算机视觉背景下的参考),对于该分类,基线方法 (one-vs-rest) 不适用于诸如检测之类的问题,其中存在元素之间的基础结构 (即,近乎相同的盒子)。这些任务的第一个困难是避免近乎重复。大多数当前的检测器都使用后处理 (例如非最大抑制) 来解决此问题,但是直接集合预测无需后处理。他们需要对所有预测元素之间的交互进行建模的全局推理方案,以避免冗余。对于恒定大小的集合预测,密集的全连接网络 [9] 是足够的,但成本很高。一般的方法是使用自回归序列模型,例如递归神经网络 [48]。在所有情况下,损失函数都应通过预测的置换而不变。通常的解决方案是基于匈牙利算法 [20] 设计一个损失,以找到地面真相和预测之间的二分匹配。这强制置换不变性,并保证每个目标元素都有唯一的匹配。我们遵循二分匹配损失方法。然而,与大多数先前的工作相反,我们远离自回归模型,并使用具有并行解码的transformers,我们将在下面进行描述。

2.2Transformers和并行解码 Transformers and Parallel Decoding

        Transformers由Vaswani等人引入 [47],作为机器翻译的新的基于注意力的构建块。注意机制 [2] 是从整个输入序列中聚合信息的神经网络层。Transformers引入了自我注意层,类似于非局部神经网络 [49],它扫描了序列的每个元素,并通过聚合整个序列中的信息来更新它。基于注意力的模型的主要优点之一是它们的全局计算和完美的内存,这使得它们在长序列上比rnn更合适。Transformers现在在自然语言处理,语音处理和计算机视觉的许多问题上正在取代rnn [8,27,45,34,31]。

        Transformers首先用于自回归模型,遵循早期的序列序列模型 [44],逐个生成输出令牌。然而,令人望而却步的推理成本 (与输出长度成比例,并且难以批处理) 导致并行序列生成的发展,在音频领域 [29],机器翻译 [12,10],单词表示学习 [8],以及最近的语音识别 [6]。我们还结合了Transformers和并行解码,以在计算成本和执行集合预测所需的全局计算的能力之间进行适当的权衡。

        (Transformers最原先是应用在机器翻译,因此结果不是一次性返回mask机制,而这里所有预测框一股脑全部返回,因此是并行解码,提高了速度)

2.3 目标检测 Object detection

        大多数现代对象检测方法都会根据一些初始猜测进行预测。两阶段检测器 [37,5] 预测框建议,而单阶段方法进行预测 [23] 或可能的对象中心网格 [53,46]。最近的工作 [52] 表明,这些系统的最终性能在很大程度上取决于这些初始猜测设置。在我们的模型中,我们能够通过使用绝对框预测 直接预测检测集来删除这个手工制作的过程并简化检测过程。

        基于集合的损失。几个物体检测器 [9,25,35] 使用了二分匹配损失。但是,在这些早期的深度学习模型中,仅使用卷积或完全连接的层对不同预测之间的关系进行建模,而手工设计的NMS后处理可以提高其性能。最近的检测器 [37,23,53] 使用地面真相和预测之间的非唯一分配规则以及NMS。

        可学习的NMS方法 [16,4] 和关系网络 [17] 明确地对不同预测之间的关系进行了建模。使用直接设置损耗,它们不需要任何后处理步骤。但是,这些方法采用了其他手工制作的上下文功能,例如提案框坐标,可以有效地对检测之间的关系进行建模,而我们正在寻找可以减少先验知识嵌入网络的解决方案。

        循环检测器。最接近我们的方法的是用于对象检测 [43] 和实例分割 [41,30,36,42] 的端到端集合预测。与我们类似,他们使用基于 CNN 激活的编码器-解码器架构的二分匹配损失来直接生成一组边界框。然而,这些方法仅在小型数据集上进行评估,并未针对现代基线进行评估。特别是,它们基于自回归模型(更准确地说是 RNN,时效性比较差),因此它们不利用最近的并行解码transformers。

3、DETR模型 The DETR model

        两个要素对于检测中的直接集预测是必不可少的:(1)集合预测损失,它强制预测和地面实况框之间的唯一匹配; (2) 预测一组对象并对它们的关系建模的体系结构。我们在图 2 中详细描述了我们的架构。

论文阅读:DETR:End-to-End Object Detection with Transformers_第2张图片

 3.1 目标检测集合预测损失Object detection set prediction loss

        DETR在一次通过解码器的过程中推断出N个固定大小的预测集(作者N是100)其中N被设置为明显大于图像中典型对象的数量。训练的主要困难之一是根据地面真相对预测的对象 (类别,位置,大小) 进行评分。我们的损失会在预测的真实对象和地面真实对象之间产生最佳的二分图匹配,然后优化特定于对象 (边界框) 的损失。

        让我们用y表示对象的地面真实集,而\hat{y}=\left\{\hat{y}_{i}\right\}_{i=1}^{N} N个预测集合。假设N大于图像中对象的数量,我们也将y视为大小为N的集合,其中填充\phi (无对象)。为了找到这两个集合之间的二分匹配,我们搜索具有最低成本的N个元素 \sigma \in \mathfrak{S}_{N}的置换:

\hat{\sigma}=\underset{\sigma \in \mathfrak{S}_{N}}{\arg \min } \sum_{i}^{N} \mathcal{L}_{\text {match }}\left(y_{i}, \hat{y}_{\sigma(i)}\right)

其中 \mathcal{L}_{\text {match }}\left(y_{i}, \hat{y}_{\sigma(i)}\right)是地面真理y_{i}与指数为 σ(i) 的预测之间的成对匹配成本。在先前的工作 (例如 [43]) 之后,使用匈牙利算法有效地计算了此最佳分配。

        (解释一下匹配问题,前面提到网络结果会有100个预测,但是地面真值可能只有两个,如何从100个里边挑出来这两个就是匹配问题了。让匹配后的loss最低最好就是最佳匹配)

        匹配成本考虑了类别预测以及预测框和地面真值框的相似性。 ground truth 集合的每个元素 i 可以看作是一个 y_{i}=\left(c_{i}, b_{i}\right)其中c_{i}是目标类标签(可能是 ∅), b_{i} \in[0,1]^{4}是定义 ground truth box 的向量中心坐标及其相对于图像大小的高度和宽度。对于索引为 σ(i) 的预测,我们将类别 c_{i} 的概率定义为 \hat{p}_{\sigma(i)}\left(c_{i}\right)并将预测框定义为\hat{b}_{\sigma(i)}。使用这些符号,我们将\mathcal{L}_{\text {match }}\left(y_{i}, \hat{y}_{\sigma(i)}\right)定义为

论文阅读:DETR:End-to-End Object Detection with Transformers_第3张图片

( 这个公式其实就是分类loss + 回归框loss )

        寻找匹配的过程与用于将提案 [37] 或锚 [22] 与现代探测器中的地面真实对象匹配的启发式分配规则具有相同的作用。主要区别在于,我们需要找到没有重复的直接集预测的一对一匹配(这里必须一对一,原来的方法是多对一+NMS)

        第二步是计算损失函数,即上一步骤中匹配的所有对的匈牙利损失。我们将损失定义为类似于常见对象检测器的损失,即类预测的负对数似然和稍后定义的盒损失的线性组合:

 其中\hat{\sigma}是第一步 (1) 中计算的最优赋值。在实践中,当c_{i} = \phi时,我们将对数概率项的权重降低了10倍,以解决类别不平衡的问题。这类似于r-cnn训练程序通过二次抽样来平衡正面/负面建议的速度如何 [37]。请注意,对象和 \phi之间的匹配成本不取决于预测,这意味着在这种情况下,成本是一个常数。在匹配成本中,我们使用概率\hat{p}_{\hat{\sigma}(i)}\left(c_{i}\right)而不是对数概率。这使得类预测项与\mathcal{L}_{\text {box }}(\cdot, \cdot)(如下所述) 相当,并且我们观察到更好的经验表现。

边界框损失。匹配成本和匈牙利损失的第二部分是对边界框进行评分的 \mathcal{L}_{\text {box }}(\cdot)。与许多将框预测作为一些初始猜测检测器不同。我们直接进行框预测。虽然这种方法简化了实现,但它带来了损失的相对缩放问题。最常用的 \ell_{1}损失对于小框和大框会有不同的尺度,即使它们的相对误差相似。为了缓解这个问题,我们使用 \ell_{1}损失和广义 IoU 损失 [38]\mathcal{L}_{\mathrm{iou}}(\cdot, \cdot)的线性组合,它是尺度不变的。总的来说,我们的盒子损失是\mathcal{L}_{\text {box }}\left(b_{i}, \hat{b}_{\sigma(i)}\right)定义为\lambda_{\text {iou }} \mathcal{L}_{\text {iou }}\left(b_{i}, \hat{b}_{\sigma(i)}\right)+\lambda_{\mathrm{L} 1}\left\|b_{i}-\hat{b}_{\sigma(i)}\right\|_{1} 其中\lambda_{\text {iou }}, \lambda_{\mathrm{L} 1} \in \mathbb{R}是超参数。这两个损失由批次内的对象数量归一化。

(先算一次最优匹配,在最优匹配上边再算这个loss hungarian。有两个小点1:为了让前后两部分数值差不多作者没有用对数概率 2:因为l1 loss收到框的大小影响较大,因此作者引用loss iou。整个目的就是出来的框和地面truth一一匹配,进而取消NMS后处理)

 3.2 DETR 结构DETR architecture

        整个DETR架构非常简单,如图2所示。它包含三个主要组件,我们将在下面进行描述: 用于提取紧凑特征表示的CNN主干,编码器-解码器转换器以及用于进行最终检测预测的简单前馈网络 (FFN)。

        骨干网络。从初始图像 x_{\text {img }} \in \mathbb{R}^{3 \times H_{0} \times W_{0}}(具有 3 个颜色通道)开始,传统的 CNN 主干生成一个较低分辨率的激活图f \in \mathbb{R}^{C \times H \times W}。我们使用的典型值是 C = 2048 和 H,W = H0/32 , W0 /32 。

        Transformer encoder。首先,1x1 卷积将高级激活图 f 的通道维度从 C 降低到更小的维度 d。创建一个新的特征映射z_{0} \in \mathbb{R}^{d \times H \times W}。编码器需要一个序列作为输入,因此我们将 z0 的空间维度折叠为一维,从而产生 d×HW 特征图。每个编码器层都有一个标准的架构,由一个多头自注意力模块和一个前馈网络(FFN)组成。由于 transformer 架构是置换不变的,我们用添加到每个注意层输入的固定位置编码 [31,3] 对其进行补充。我们将补充材料推迟到架构的详细定义,它遵循 [47] 中描述的定义。

        Transformer decoder.解码器遵循transformer 的标准架构,使用多头编码器解码器注意机制转换大小为 d 的 N 个嵌入。与原始转换器的不同之处在于,我们的模型在每个解码器层并行解码 N 个对象,而 Vaswani 等人。 [47] 使用自回归模型一次预测一个元素的输出序列。我们建议不熟悉这些概念的读者参阅补充材料。由于解码器也是排列不变的,因此 N 个输入嵌入必须不同才能产生不同的结果。这些输入嵌入是学习到的位置编码,我们称之为对象查询,与编码器类似,我们将它们添加到每个注意力层的输入中。 N 个对象查询由解码器转换为输出嵌入。然后通过前馈网络(在下一节中描述)将它们独立解码为框坐标和类标签,从而产生 N 个最终预测。在这些嵌入上使用自注意力和编码器解码器注意力,该模型使用它们之间的成对关系对所有对象进行全局推理,同时能够将整个图像用作上下文。

        预测前馈网络 (FFN)。最终预测由具有 ReLU 激活函数和隐藏维度 d 的 3 层感知器以及线性投影层计算。 FFN 预测框 w.r.t. 的归一化中心坐标、高度和宽度。输入图像,线性层使用 softmax 函数预测类标签。由于我们预测了一组固定大小的 N 个边界框,其中 N 通常远大于图像中感兴趣对象的实际数量,因此使用一个额外的特殊类标签 ∅ 来表示在槽内没有检测到对象。此类在标准对象检测方法中扮演着与“背景”类类似的角色。(这一个就是出来分类结果和位置结果的)

        辅助解码损失。我们发现在训练期间在解码器中使用辅助损失 [1] 很有帮助,特别是有助于模型输出每个类别的正确数量的对象。我们在每个解码器层之后添加预测 FFN 和匈牙利损失。所有预测 FFN 共享它们的参数。我们使用额外的共享层规范来规范化来自不同解码器层的预测 FFN 的输入。(decode每层后面增加loss加快收敛)

4、实验

        我们表明,与 Faster R-CNN 相比,DETR 在对 COCO 的定量评估中取得了有竞争力的结果。然后,我们提供了对架构和损失的详细消融研究,以及见解和定性结果。最后,为了表明 DETR 是一种通用且可扩展的模型,我们展示了全景分割的结果,仅在固定的 DETR 模型上训练了一个小的扩展。我们在 https://github.com/facebookresearch/detr 提供代码和预训练模型来重现我们的实验。

        数据集。我们对COCO 2017检测和panoptic分割数据集 [24,18] 进行实验,其中包含118k个训练图像和5k个验证图像。每个图像都用边界框和全景分割进行注释。每个图像平均有7个实例,训练集中单个图像中最多63个实例,在相同图像上从小到大不等。如果未指定,我们将AP报告为bbox AP,这是多个阈值上的积分度量。为了与更快的r-cnn进行比较,我们在最后一个训练时期报告了验证AP,对于消融,我们报告了最近10个时期的验证结果的中位数。

        技术细节。我们使用AdamW [26] 训练DETR,将初始变压器的学习率设置为10-4,将主干设置为10-5,将权重衰减设置为10-4。所有变压器权重均使用Xavier init [11] 初始化,主干使用来自torchvision的ImageNet预先训练的ResNet模型 [15],并带有冻结的batchorm层。我们用两个不同的主干报告结果: ResNet50和ResNet-101。相应的模型分别称为DETR和DETR-R101。在 [21] 之后,我们还通过在主干的最后阶段添加一个扩张并从该阶段的第一个卷积中删除一个步幅来提高特征分辨率。相应的模型分别称为DETR-DC5和DETR-DC5-R101 (扩张C5阶段)。这种修改将分辨率提高了两倍,从而提高了小对象的性能,代价是编码器自注意的成本提高了16倍,导致计算成本整体增加了2倍。表1给出了这些模型和Faster R-CNN的完整比较。

论文阅读:DETR:End-to-End Object Detection with Transformers_第4张图片

        我们使用比例增强,调整输入图像的大小,使最短边至少为 480 像素,最多为 800 像素,而最长边最多为 1333 [50]。为了帮助通过编码器的自注意力学习全局关系,我们还在训练期间应用了随机裁剪增强,将性能提高了大约 1 AP。具体来说,训练图像以 0.5 的概率裁剪为随机矩形块,然后再次调整大小为 800-1333。 Transformer 使用默认的 0.1 dropout 进行训练。在推理时,一些插槽预测空类。为了针对 AP 进行优化,我们使用相应的置信度覆盖了具有第二高得分类别的这些插槽的预测。与过滤掉空插槽相比,这将 AP 提高了 2 点。其他训练超参数可以在 A.4 节中找到。对于我们的消融实验,我们使用 300 个时期的训练计划,学习率在 200 个时期后下降 10 倍,其中一个时期是一次遍历所有训练图像。在 16 个 V100 GPU 上训练 300 个时期的基线模型需要 3 天,每个 GPU 有 4 个图像(因此总批大小为 64)。对于用于与 Faster R-CNN 进行比较的更长的时间表,我们训练了 500 个时期,学习率在 400 个时期后下降。与较短的时间表相比,此时间表增加了 1.5 AP。

4.1 和Faster R-CNN对比

Transformer 通常使用 Adam 或 Adagrad 优化器进行训练,训练时间很长并且会丢失数据,DETR 也是如此。然而,Faster R-CNN 使用 SGD 进行训练,数据增强最少,我们不知道 Adam 或 dropout 的成功应用。尽管存在这些差异,我们仍试图使更快的 R-CNN 基线更强。为了使其与 DETR 保持一致,我们将广义 IoU [38] 添加到框损失中,相同的随机裁剪增强和长期训练已知可以改善结果 [13]。结果如表 1 所示。在顶部部分,我们展示了 Detectron2 Model Zoo [50] 中使用 3x 计划训练的模型的 Faster R-CNN 结果。在中间部分,我们显示了相同模型的结果(带“+”),但使用 9x 计划(109 个 epoch)和描述的增强进行训练,总共增加了 1-2 AP。在表 1 的最后一部分,我们展示了多个 DETR 模型的结果。为了在参数数量上具有可比性,我们选择了一个具有 6 个转换器和 6 个宽度为 256 的解码器层和 8 个注意力头的模型。与带有 FPN 的 Faster R-CNN 一样,该模型有 41.3M 个参数,其中 23.5M 在 ResNet-50 中,17.8M 在 transformer 中。尽管 Faster R-CNN 和 DETR 仍然有可能通过更长时间的训练进一步提高,但我们可以得出结论,DETR 可以与参数数量相同的 Faster R-CNN 竞争,在 COCO val 子集上实现 42 AP。 DETR 实现这一目标的方法是提高 APL (+7.8),但请注意该模型在 APS (-5.5) 方面仍然落后。具有相同参数数量和类似 FLOP 计数的 DETR-DC5 具有更高的 AP,但在 APS 方面也仍然明显落后。 Faster R-CNN 和带有 ResNet-101 主干的 DETR 也显示了类似的结果。

 4.2 消融Ablations

变压器解码器中的注意机制是对不同检测的特征表示之间的关系进行建模的关键组件。在我们的消融分析中,我们探索了体系结构和损失的其他组件如何影响最终性能。在研究中,我们选择了ResNet-50-based的DETR模型,该模型具有6个编码器,6个解码器层和宽度256。该模型具有413m参数,分别在短期和长期计划中实现40.6和42.0 AP,并以28 FPS运行,类似于具有相同主干的Faster R-CNN-FPN。

编码器层数。我们通过改变编码器层数来评估全局图像级自注意力的重要性(表 2)。没有编码器层,整体 AP 下降了 3.9 点,大型物体上的 6.0 AP 下降更显着。我们假设,通过使用全局场景推理,编码器对于解开对象很重要。在图 3 中,我们将经过训练的模型的最后一个编码器层的注意力图可视化,重点关注图像中的几个点。编码器似乎已经分离了实例,这可能简化了解码器的对象提取和定位。

论文阅读:DETR:End-to-End Object Detection with Transformers_第5张图片

解码器层数。我们在每个解码层之后应用辅助损失(请参阅第 3.2 节),因此,预测 FFN 通过设计进行训练以从每个解码层的输出中预测对象。我们通过评估在解码的每个阶段预测的对象来分析每个解码器层的重要性(图 4)。每一层后 AP 和 AP50 都会提高,在第一层和最后一层之间总计有非常显着的 +8.2/9.5 AP 提高。由于其基于集合的损失,DETR 在设计上不需要 NMS。为了验证这一点,我们运行一个标准的 NMS 程序,每个解码器之后的输出都有默认参数 [50]。 NMS 提高了第一个解码器的预测性能。这可以解释为 transformer 的单个解码层无法计算输出元素之间的任何互相关,因此很容易对同一对象进行多次预测。在第二层和后续层中,激活上的自我注意机制允许模型抑制重复预测。我们观察到 NMS 带来的改进随着深度的增加而减弱。在最后一层,我们观察到 AP 的小损失,因为 NMS 错误地删除了真正的积极预测。

论文阅读:DETR:End-to-End Object Detection with Transformers_第6张图片

与可视化编码器注意力类似,我们在图 6 中可视化解码器注意力,用不同颜色为每个预测对象着色注意力图。我们观察到解码器注意力相当局部,这意味着它主要关注物体的四肢,例如头部或腿部。我们假设在编码器通过全局注意力分离实例后,解码器只需要注意四肢即可提取类和对象边界。

论文阅读:DETR:End-to-End Object Detection with Transformers_第7张图片FFN 的重要性。变换器内部的 FFN 可以看作是 1×1 卷积层,使编码器类似于注意力增强卷积网络 [3]。我们试图将其完全删除,只在转换器层中留下注意力。通过将网络参数的数量从 41.3M 减少到 28.7M,transformer 中只留下 10.8M,性能下降了 2.3AP,因此我们得出结论,FFN 对于取得良好的结果很重要。

位置编码的重要性。我们的模型中有两种位置编码: 空间位置编码和输出位置编码 (对象查询)。我们用固定和学习的编码的各种组合进行实验,结果可以在表3中找到。输出位置编码是必需的,并且不能删除,因此我们尝试在解码器输入时传递一次它们,或者在每个解码器注意层添加到查询中。在第一个实验中,我们完全删除了空间位置编码,并在输入时传递了输出位置编码,有趣的是,该模型仍然实现了超过32 AP,从而使基线损失了7.8 AP。然后,我们通过固定的正弦空间位置编码和输出编码在输入一次,如在原始变压器 [47],并发现,这导致1.4 AP下降相比通过位置编码直接在注意。学习到的空间编码传递给了注意力,给出了相似的结果。令人惊讶的是,我们发现没有在编码器中传递任何空间编码只会导致1.3 AP的小AP下降。当我们将编码传递给注意力时,它们会在所有层之间共享,并且总是学习输出编码 (对象查询)。

鉴于这些消融,我们得出结论,transformer组件: 编码器,FFN,多个解码器层和位置编码中的全局自我注意,都对最终的对象检测性能做出了重大贡献。

损失消融。为了评估匹配成本和损失的不同组成部分的重要性,我们训练了几个模型来打开和关闭它们。损失包含三个组成部分:分类损失、1 边界框距离损失和 GIoU [38] 损失。分类损失对于训练是必不可少的,不能关闭,所以我们训练了一个没有边界框距离损失的模型和一个没有 GIoU 损失的模型,并与使用所有三种损失进行训练的基线进行比较。结果如表 4 所示。GIoU 损失 5 6 62 60 58 56 54 AP 大多数模型性能的 AP50,与基线相比仅损失 0.7 AP 以及综合损失。在没有 GIoU 的情况下使用 1 显示效果不佳。我们只研究了不同损失的简单消融(每次使用相同的权重),但将它们组合的其他方法可能会取得不同的结果。

4.3 分析

解码器输出时隙分析。在图7中,我们可视化由COCO 2017 val集合中的所有图像的不同时隙预测的框。DETR为每个查询槽学习不同的专业化。我们观察到每个插槽都有几种操作模式,重点放在不同的区域和盒子尺寸上。特别是,所有插槽都具有用于预测图像范围框的模式 (可见为在绘图中间对齐的红点)。我们假设这与COCO中对象的分布有关。(可以把这个理解为anchor)

论文阅读:DETR:End-to-End Object Detection with Transformers_第8张图片

推广到未知数量的实例。COCO中的某些类不能很好地表示同一图像中同一类的许多实例。例如,训练集中没有超过13个长颈鹿的图像。我们创建了一个合成image3来验证DETR的泛化能力 (见图5)。我们的模型能够在图像上找到所有24个长颈鹿,这些长颈鹿显然不在分布范围内。该实验证实了在每个对象查询中没有强大的类专业化。

论文阅读:DETR:End-to-End Object Detection with Transformers_第9张图片

 4.4 全景分割的DETRDETR for panoptic segmentation

        全景分割 [19] 最近引起了计算机视觉界的广泛关注。类似于 Faster R-CNN [37] 到 Mask R-CNN [14] 的扩展,DETR 可以通过在解码器输出顶部添加掩码头来自然扩展。在本节中,我们通过以统一的方式处理事物和事物类来证明这样的头部可用于产生全景分割 [19]。我们对 COCO 数据集的全景注释进行了实验,该数据集除了 80 个事物类别外还有 53 个事物类别。

        我们训练DETR使用相同的配方来预测COCO上的东西和东西类的盒子。由于匈牙利匹配是使用框之间的距离计算的,因此需要预测框才能进行训练。我们还添加了一个掩码头,该掩码头预测每个预测框的二进制掩码,请参见图8。它将每个对象的transformer解码器的输出作为输入,并计算这种嵌入在编码器输出上的多头 (具有M头) 注意力分数,从而以较小的分辨率为每个对象生成M个注意力热图。为了进行最终预测并提高分辨率,使用了类似FPN的体系结构。我们在补充中更详细地描述了体系结构。遮罩的最终分辨率具有步幅4,并且使用骰子/F-1损失 [28] 和焦点损失 [23] 独立监督每个遮罩。

        mask head 可以联合训练,也可以分两步进行,我们只训练 boxes 的 DETR,然后冻结所有权重并只训练 mask head 25 个 epochs。在实验上,这两种方法给出了相似的结果,我们使用后一种方法报告结果,因为它导致更短的总挂钟时间训练。 Pixel-wise argmax Conv 3x3 + GN + ReLU + Conv 3x3 2x up + add Conv 3x3 + GN + ReLU 2x up + add Conv 3x3 + GN + ReLU 2x up + add 2 x (Conv 3x3 + GN + ReLU) Concatenate 多头注意力

        为了预测最终的全景分割,我们只需在每个像素的掩模得分上使用argmax,并将相应的类别分配给结果的掩模。此过程可确保最终的遮罩没有重叠,因此,DETR不需要通常用于对齐不同遮罩的启发式 [19]。

5 结论 Conclusion

        我们介绍了 DETR,一种基于 transformers 和二分匹配损失的目标检测系统的新设计,用于直接集预测。该方法在具有挑战性的 COCO 数据集上取得了与优化的 Faster R-CNN 基线相当的结果。 DETR 易于实施,并且具有灵活的架构,可以轻松扩展到全景分割,并具有有竞争力的结果。此外,它在大型对象上的性能明显优于 Faster R-CNN,这可能要归功于自我注意执行的全局信息处理。

        这种新的检测器设计也带来了新的挑战,特别是在小物体的训练、优化和性能方面。目前的检测器需要几年的改进才能应对类似的问题,我们希望未来的工作能够成功解决 DETR 的这些问题。

(思路足够好,即使是在性能上才和Faster R-CNN打个平手,但是远不及同年其他目标检测论文水平,但这并不影响他成为热点,作者留坑小物体检测不好,因此DEFORMABLE DETR很快就出来了,transformer系列的论文建议先看一遍讲解视频,在对应的论文看一遍比较好理解。推荐一个老师讲解)

推荐学习视频:DETR 论文精读【论文精读】_哔哩哔哩_bilibili

整理不易,求点赞~

你可能感兴趣的:(目标检测,语义,目标检测,人工智能,深度学习,论文阅读)