【论文带读(1)】《End-to-End Object Detection with Transformers》论文超详细带读 + 翻译

news/2025/2/23 21:31:29

目录

前言

Abstract

一、Introduction 

二、Related work(相关工作)

2.1 Set Prediction(设置预测)

2.2 Transformers and Parallel Decoding(Transformer和并行解码)

2.3 Object detection(对象检测)

三、The DETR model(DETR 模型)

3.1  Object detection set prediction loss(对象检测集预测损失)

3.2 DETR architecture(DETR 架构)

四、Experiments

4.1 Comparison with Faster R-CNN(与 Faster R-CNN 的比较)

4.2 Ablations(消融试验)

4.3 Analysis(分析)

4.4 DETR for panoptic segmentation

Training details(训练细节)

Main results(主要成果)

五、Conclusion(总结)

参考资料


前言

在huggingFace上下载了一个模型detr-resnet-50,接下来我会带大家详细阅读此模型的论文《End-to-End Object Detection with Transformers》


Abstract

翻译

我们提出了一种新方法,将对象检测视为直接集合预测问题。我们的方法简化了检测管道,有效地消除了对许多手动设计的组件的需求,例如非极大值抑制程序或锚点生成,这些组件明确编码了我们对任务的先验知识。新框架(称为 DEtection TRansformer 或 DETR)的主要组成部分是基于集合的全局损失,它通过二分匹配强制进行唯一预测,以及 transformer 编码器-解码器架构。给定一小组固定的学习对象查询,DETR 会推断对象和全局图像上下文的关系,以直接并行输出最终的预测集。与许多其他现代探测器不同,新模型在概念上很简单,不需要专门的库。DETR 在具有挑战性的 COCO 对象检测数据集上展示了与成熟且高度优化的 Faster RCNN 基线相当的准确性和运行时性能。此外,DETR 可以很容易地泛化以统一的方式产生全景分割。我们表明,它的性能明显优于竞争对手的基线。训练代码和预训练模型可在 https://github.com/facebookresearch/detr 获取。

总结

新方法

DETR :DEtection Transformers,目标检测视为一个直接预测的问题

主要组成

Transformer编码器解码器架构 、 二分匹配强制进行唯一预测

优点

  • DETR在COCO 对象检测数据集上准确性和运行时性能与Faster RCNN 基线相当
  • 容易以统一的方式产生全景分割
  • 性能明显优于竞争对手的基线
  • 简化了检测管道 ->消除了许多对手动设计的组件的需求,如非极大值抑制程序或锚点生成

非极大值抑制程序(non-maximum suppression procedure):帮助去除重复的检测框,只保留最准确的框。

检测到了一个物体(比如人脸),但算法可能会在图像中多次检测到同一个物体,生成多个不同的位置框。这些框可能会有很多重叠部分,这时就需要用非极大值抑制来“过滤”这些冗余框,保留最精确的一个。

锚点生成(anchor generation):在许多传统方法中,锚点是预定义的矩形框,它们的大小和比例是基于一些先验知识选择的,以匹配图像中的物体。

先验知识(prior knowledge):基于经验或领域知识,通常需要手动设计和加入的规则、假设或者约束条件

全局损失(set-based global loss) :检测到的所有物体进行整体考虑,而不是逐个独立地去处理每个物体

基线(baselines);初始的模型或方法,作为对比标准


一、Introduction 

翻译

  对象检测的目标是为每个感兴趣的对象预测一组边界框和类别标签。现代检测器通过在大量建议 [37\u20125]、锚点 [23] 或窗口中心 [53\u201246] 上定义代理回归和分类问题,以间接的方式解决这组预测任务。它们的性能受到以下因素的显著影响:折叠近乎重复的预测的后处理步骤、锚点集的设计以及将目标框分配给锚点的启发式方法[52]。为了简化这些管道,我们提出了一种直接设置预测方法来绕过代理任务。这种端到端的理念在复杂的结构化预测任务(如机器翻译或语音识别)方面取得了重大进展,但在对象检测方面尚未取得进展:以前的尝试[43,16,4,39]要么增加了其他形式的先验知识,要么没有被证明在具有挑战性的基准上与强大的基线相比具有竞争力。本文旨在弥合这一差距。

  我们通过将对象检测视为直接集合预测问题来简化训练管道。我们采用了一种基于变压器的编码器-解码器架构[47],这是一种流行的序列预测架构。transformer 的自注意力机制显式地对序列中元素之间的所有成对交互进行建模,这使得这些架构特别适用于集合预测的特定约束,例如删除重复的预测。

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

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

  我们在最流行的对象检测数据集之一 COCO [24] 上与非常有竞争力的 Faster R-CNN 基线 [37] 上评估了 DETR。Faster RCNN 经历了多次设计迭代,其性能自最初发布以来得到了极大的提高。我们的实验表明,我们的新模型实现了相当的性能。更准确地说,DETR 在大型对象上表现出明显更好的性能,这可能是由 transformer 的非本地计算实现的。但是,它在小对象上获得的性能较低。我们预计未来的工作将像 FPN [22] 的开发对 Faster R-CNN 所做的那样改进这方面。

  DETR 的训练设置在许多方面与标准对象检测器不同。新模式需要超长的训练计划和优势来自变压器中的辅助解码损耗。我们彻底探讨了哪些组件对所展示的性能至关重要。DETR 的设计理念很容易扩展到更复杂的任务。在我们的实验中,我们表明,在预训练的 DETR 之上训练的简单分割头在全景分割 [19] 上优于竞争基线,这是一项最近越来越受欢迎的具有挑战性的像素级识别任务。

  DETR 的设计理念很容易扩展到更复杂的任务。在我们的实验中,我们表明,在预训练的 DETR 之上训练的简单分割头在全景分割 [19] 上优于竞争基线,这是一项最近越来越受欢迎的具有挑战性的像素级识别任务。

训练设置不同:

1.训练时间长

2.引入辅助解码损失:模型不仅通过最终的输出进行优化,还通过中间解码器的输出(即预测阶段)进行优化

drawback and improvement:在小对象上获得的性能较低,未来会进行改进

what:

  1. DETR 省略了手动设计步骤,简化了整个检测流程,提高模型效率
  2. 多数现有的对象检测方法需要一些特定的自定义层,而 DETR 则使用标准的CNN 、 Transformer网络层,能在所有含标准CNN 和 Transformer框架运行,容易复制和实现
  3. 相较于Faster RCNN,DETR在大型对象上表现出明显较好的性能
  4. DETR能够通过简单的扩展应对更复杂的图像分割任务

Why : 简化检测管道。用端到端的理念在对象检测方面取得进展,缝合之前的模型的缺点

How :提出了一种直接设置预测方法来绕过代理任务

            对象检测视为直接集合预测问题来简化训练管道,采用了一种基于变压器的编码器-解码器              架构。

图一:具体过程

  1. CNN提取特征:从图像中提取出特征(例如边缘、形状、颜色等)
  2. Transformer 编码器-解码器:通过编码器学习图像中不同部分之间的关系,然后通过解码器将这些信息转换成物体的检测结果。
  3. 预测边界框和类别:最终的输出是一个 边界框集合(即预测框的位置)和 类别预测集合(即每个框中物体的类别)
  4. 二分匹配损失(Bipartite Matching Loss):使用 二分匹配损失 来确保模型预测的框与实际的真实框(Ground Truth)匹配,如果某个预测框没有与真实框匹配,模型会预测它属于 “无物体” 类别(即用符号 “Ø” 来表示)。这也意味着这些框的预测结果是不相关的或空的。

建议(Proposal):可能是一些候选区域,可以是通过算法生成的。

窗口中心(Window Center):基于图像中某些中心位置进行物体预测。

代理回归(surrogate Regression):回归通常是指模型用来预测数值输出的任务,像是物体位置的坐标。

分类问题(Classification):在对象检测中,除了要确定物体的位置外,还需要判断物体是什么类型的物体(比如:是人、猫、车、还是狗)。这就是分类任务。


二、Related work(相关工作)

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

2.1 Set Prediction(设置预测)

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

总结

DETR面临的挑战与创新

集合预测任务

集合预测指的是预测一组元素,而不仅仅是单个元素。在目标检测(比如在图像中检测物体)中,我们不仅要预测每个物体的位置和类别,还需要考虑这些预测元素之间的关系,比如多个物体的框可能非常接近。常见的基线方法是多标签分类(例如,每个物体是一个独立的标签)。但是,这种方法并不适用于存在“元素之间的底层结构”(例如多个目标框非常接近)的任务。

避免重复预测的问题

传统的目标检测方法通常会使用后处理步骤来解决这个问题。如非极大值抑制(NMS)方法。但会降低效率

直接集合预测

直接进行集合预测则不依赖于后处理方法。相反,它需要在模型内部进行全局推理,即考虑所有预测元素之间的相互关系,以避免冗余。

自回归模型

自回归模型是逐步生成预测结果的模型,它通过递归地生成每个元素来建模集合中的依赖关系,但效率较低

匹配损失与匈牙利算法

损失函数需要具有排列不变性,即无论预测的顺序如何,损失都应该是一样的。

匈牙利算法能够在二分匹配中找到真实值与预测之间的最佳匹配,确保每个真实目标与预测目标之间有唯一的对应关系,从而强制确保排列不变性。

创新点

DETR采用并行解码的方式,直接进行集合预测,同时通过匈牙利算法确保预测的排列不变性,避免冗余预测


2.2 Transformers and Parallel Decoding(Transformer和并行解码)

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

  Transformer 首先用于自回归模型,紧随早期的 sequence-to-sequence 模型 [44],逐个生成输出标记。然而,高昂的推理成本(与输出长度成正比,并且难以批处理)导致了并行序列生成的发展,涉及音频 [29]、机器翻译 [12\u201210]、单词表示学习 [8] 以及最近的语音识别 [6]。我们还将 transformer 和并行解码相结合,以便在计算成本和执行集合预测所需的全局计算的能力之间进行适当的权衡

总结

DETR结合了transformer和并行解码,用于处理目标检测等集合预测任务,降低成本,又可以进行全局推理

自注意力机制让transformer能够在处理长序列时表现得更好,相比RNN具有更高的效率。


2.3 Object detection(对象检测)

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

  基于集合的损失。一些目标检测器 [9,25,35] 使用了二分匹配损失。然而,在这些早期的深度学习模型中,不同预测之间的关系仅用卷积层或全连接层进行建模,手工设计的 NMS 后处理可以提高它们的性能。最近的检测器 [37,23,53] 在 ground truth 和 predictions 之间使用 non-unique assignment rules between ground truth and predictions 以及 NMS。

  可学习的 NMS 方法 [16,4] 和关系网络 [17] 明确地对不同预测之间的关系进行了关注建模。使用直接 set loss,它们不需要任何后处理步骤。然而,这些方法采用了额外的手工制作的上下文功能,如建议框坐标,来有效地对检测之间的关系进行建模,同时我们寻找可以减少模型中编码的先验知识的解决方案。

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

总结

现代目标检测方法中在初始猜测(如提议框、锚框等)和集合预测损失(set-based loss)方面的进展

传统方法依赖提议框或锚框等初始猜测,而DETR通过直接预测绝对框来跳过这些初始猜测

DETR采用直接的集合损失,避免了NMS等后处理步骤,且不依赖传统方法中的手工设计的上下文特征,尽量减少了模型中的先验知识。


三、The DETR model(DETR 模型)

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


3.1  Object detection set prediction loss(对象检测集预测损失)

  DETR 在通过解码器的单次传递中推断出一组固定大小的 N 预测,其中 N 设置为明显大于图像中的典型对象数。训练的主要难点之一是根据真实目标对预测的对象 (类、位置、大小) 进行评分。我们的损失在预测对象和真实对象之间产生最优二分匹配,然后优化特定于对象(边界框)的损失

  让我们用 y 表示对象的真实集合,yˆ = {yˆi}N i=1 表示 N 个预测的集合。假设 N 大于图像中的对象数,我们也将 y 视为一组大小为 N 的大小,其中填充了 ∅(无对象)。为了找到这两个集合之间的二分匹配,我们以最低的成本搜索 N 个元素σ ∈ SN 的排列:

 其中,Lmatch(yi, ŷσ(i))是第i个真实目标yi和第σ(i)个预测目标ŷσ(i)之间的匹配损失。这个损失函数可以包括位置误差、类别误差等。

  匹配成本同时考虑了类别预测以及预测框和真实框的相似性。真实值集的每个元素 i 都可以看作是一个 yi = (ci, bi),其中 ci 是目标类标签(可以是 ∅),bi ∈ [0, 1]4 是一个向量,它定义真实框中心坐标及其相对于图像大小的高度和宽度。对于索引为 σ(i) 的预测,我们将类 ci 的概率定义为 pˆσ(i)(ci),将预测框定义为 ˆbσ(i)。使用这些符号,我们将 Lmatch(yi, yˆσ(i)) 定义为 −1{ci6=∅}pˆσ(i)(ci) + 1{ci6=∅}Lbox(bi, ˆbσ(i))。

  这种查找匹配的过程与现代检测器中用于将建议 [37] 或锚点 [22] 匹配到真实对象的启发式分配规则起着相同的作用。主要区别在于我们需要找到一对一的匹配,以便直接集合预测,没有重复项。

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

  其中 σˆ 是在第一步 (1) 中计算的最优赋值。在实践中,当 ci = ∅ 时,我们将对数概率项的权重降低 10 倍,以解释阶级不平衡。这类似于 Faster R-CNN 训练程序如何通过子采样来平衡正/负建议 [37]。请注意,对象和∅之间的匹配成本不取决于预测,这意味着在这种情况下,成本是一个常量。在匹配成本中,我们使用概率 pˆσˆ(i)(ci) 而不是对数概率。这使得类预测项与 Lbox(·, ·) 相当(如下所述),我们观察到更好的实证表现

  边界框丢失。匹配成本和匈牙利损失的第二部分是对边界框进行评分的 Lbox(·)。与许多将 box 预测作为 ∆ 进行一些初始猜测的检测器不同,我们直接进行 box 预测。虽然这种方法简化了实现,但它带来了损失的相对缩放问题。最常用的 '1 损失对于小箱子和大箱子将具有不同的刻度,即使它们的相对误差相似。为了缓解这个问题,我们使用了 '1 损失和广义 IoU 损失 [38] Liou(·, ·) 的线性组合,它是尺度不变的。总体而言,我们的 box 损失是 Lbox(bi, ˆbσ(i)) 定义为 λiouLiou(bi, ˆbσ(i)) + λL1||bi − ˆbσ(i)||1 中,λiou、λL1 ∈ R 是超参数。这两个损失按批处理中的对象数量进行标准化。

总结

DETR模型如何通过二分匹配集合损失来进行目标检测训练

过使用匈牙利算法,DETR能够高效地找到最优匹配,并根据匹配结果来计算损失,优化模型的预测。整体思路是通过直接预测目标集合,避免了传统方法中的复杂后处理步骤(如NMS),而是通过全局推理来进行准确的目标匹配和损失计算。


3.2 DETR architecture(DETR 架构)

  整体DETR架构出奇地简单,如图2所示。它包含三个主要组件,分别是:一个CNN主干网络用于提取紧凑的特征表示,一个编码器-解码器变压器(transformer),以及一个简单的前馈网络(FFN)用于做最终的检测预测。

  与许多现代检测器不同,DETR可以在任何提供标准CNN主干和变压器架构实现的深度学习框架中实现,只需几百行代码。DETR的推理代码可以在不到50行PyTorch代码中实现。我们希望我们方法的简洁性能够吸引更多的研究者加入目标检测领域

  主干网络:从初始图像X_{img} \in \mathbb{R}^{C \times H \times W}(具有3个颜色通道)开始,传统的CNN主干网络会生成一个低分辨率的激活图f \in \mathbb{R}^{C \times H \times W},。我们通常使用的典型值是 C=2048,H,W=H032,W032H, W =\frac{H_0}{32}, \frac{W_0}{32}H

  Transformers编码器:首先,一个1×1的卷积将激活图 fff 的通道维度从 CCC 降至一个较小的维度 ddd,从而创建一个新的特征图 Z^{_{0}} \in \mathbb{R}^{C \times H \times W}。编码器期望输入的是一个序列,因此我们将 z0 的空间维度压缩成一维,从而得到一个 d×HW 的特征矩阵。每个编码器层都有一个标准架构,由一个多头自注意力模块和一个前馈网络(FFN)组成。变压器架构是排列不变的,因此我们通过添加固定的位置编码来补充每一层的输入。关于架构的详细定义,请参阅附录中的材料,该材料描述了与[47]类似的架构

  Transforme解码器。解码器遵循变压器的标准架构,使用多头自注意力(self-attention)和编码器-解码器注意力机制,转换N个大小为d的嵌入。与原始变压器的不同之处在于,我们的模型在每个解码器层并行地解码N个目标,而Vaswani等人[47]使用的是自回归模型,一个接一个地预测输出序列中的每个元素。我们将读者不熟悉这些概念的部分内容参考附录材料。由于解码器也是排列不变的,输入的N个嵌入必须不同,以产生不同的结果。输入嵌入是学习到的位置编码,称为目标查询(object queries),与编码器相似,我们将它们添加到每个注意力层的输入中。N个目标查询被解码器转换为输出嵌入,然后独立地解码为框坐标和类别标签,最后通过一个前馈网络(将在下一节中描述)得到N个最终预测。使用自注意力和编码器-解码器注意力,这些嵌入模型对所有目标进行全局推理,捕捉目标之间的成对关系,同时能够利用整个图像作为上下文。

预测前馈网络(Prediction feed-forward networks,FFNs)最终的预测是由一个3层的感知机(perceptron)计算的,具有ReLU激活函数和隐藏维度d,以及一个线性投影层。FFN预测归一化后的中心坐标、宽度和高度,并且通过softmax函数预测类别标签。由于我们预测固定大小的N个边界框,其中N通常大于图像中感兴趣的目标数量,因此会引入一个额外的特殊类别标签Ø,用于表示某个目标框不包含目标物体。这个类别在标准的目标检测方法中类似于“背景”类。

总结

DETR的架构包括一个CNN主干网络用于提取图像特征,接着通过Transformers编码器进一步处理这些特征,DETR的解码器部分采用了标准的变压器解码架构,通过并行解码多个目标查询,实现了更高效的目标检测。预测部分通过前馈神经网络(FFN)进行最终的框和类别预测,同时引入了一个额外的“背景”类,用来标识不包含任何目标的框。


四、Experiments

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

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

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

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

总结

实验数据集

COCO 2017 检测、全景分割数据集,包含 118k 训练图像和 5k 验证图像

优化器、学习率、权重衰减

AdamW、主干网络的学习率设置为 ,而10^{-5},Transformers部分的学习率为 10^{-4}权重衰减设置为 10^{-4},通过此项正则化来控制过拟合

训练周期

模型的训练周期设置为300个epoch(遍历所有训练图像一次)。在300个epoch后,学习率会下降10倍,训练周期最终为500个epoch来与Faster R-CNN进行对比

AP(平均精度)

一种目标检测的评估指标,衡量模型在不同阈值下的表现,通常报告在多个不同的IoU(Intersection over Union)阈值下的平均精度。

AdamW:一种优化器,基于Adam优化器,专门优化了权重衰减的处理方式,使其更适合深度学习模型的训练

权重衰减(Weight Decay)

用于防止过拟合的正则化方法,通过在损失函数中加入权重的L2范数来限制模型的复杂度。

Xavier初始化

一种权重初始化方法,旨在使得神经网络每一层的输入输出方差一致,从而使网络训练更加稳定。

ResNet50/ResNet101

两种不同的深度卷积神经网络架构,ResNet50有50层,ResNet101有101层。它们都通过使用残差连接(skip connections)来帮助训练更深的网络

优化器

是用来更新模型参数的工具,它是训练深度学习模型过程中不可或缺的一部分。在深度学习中,模型就像一个爬山者,而损失函数就像是你需要最小化的“山”。优化器的作用就是决定每一步该如何调整模型的参数,让模型逐渐向最低点(最优解)逼近

学习率(Learning Rate)

在深度学习中用来控制每次更新模型参数的步伐大小的一个超参数。它决定了优化器在每次调整模型的参数时,应该走多大的一步。

权重衰减(Weight Decay):

想一下,你在训练一个模型来预测房价。如果模型太复杂,比如包含了太多的特征(或者参数),它可能会学到数据中的噪音,而不仅仅是数据中有意义的模式。这样,它在训练数据上可能表现很好,但在新的、未见过的数据上却表现很差,这就是过拟合

权重衰减就像是给模型的参数加了一个“惩罚”项,限制它们的大小。这种做法让模型不能依赖过大的权重来拟合数据,从而提高模型的泛化能力,使得它在新数据上也能有较好的表现。

训练周期(Epoch):指的是整个训练数据集被模型完整地“学习”一遍的过程。


4.1 Comparison with Faster R-CNN(与 Faster R-CNN 的比较)

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

总结

DETR(DEtection TRansformers)与Faster R-CNN在训练策略和结果上的比较

DETR与Faster R-CNN在COCO数据集上的表现是相似的,但DETR在小物体(APL)的检测上具有更大优势,而在大物体(APS)的检测上则有所不足

虽然训练过程较长,DETR通过优化训练策略和模型架构,表现得可与Faster R-CNN相竞争,并在某些方面(特别是小物体检测)超过了Faster R-CNN


4.2 Ablations(消融试验)

  transformer 解码器中的注意力机制是模拟不同检测的特征表示之间关系的关键组件。在我们的消融分析中,我们探讨了架构和损耗的其他组件如何影响最终性能。在这项研究中,我们选择了基于 ResNet-50 的 DETR 模型,该模型具有 6 个编码器、6 个解码器层和宽度 256。该模型具有 41.3M 参数,在短期和长期计划中分别达到 40.6 和 42.0 AP,并以 28 FPS 运行,类似于具有相同主干的 Faster R-CNN-FPN。

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

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

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

  FFN 的重要性。transformers内部的 FFN 可以看作是 1 × 1 个卷积层,使编码器类似于注意力增强卷积网络 [3]。我们尝试将其完全删除,只关注 transformer 层。通过将网络参数的数量从 41.3M 减少到 28.7M,transformer中只留下 10.8M,性能下降了 2.3 AP,因此我们得出结论,FFN 对于获得良好的结果很重要。

  位置编码的重要性。在我们的模型中,有两种类型的位置编码:空间位置编码和输出位置编码(对象查询)。我们尝试了固定编码和学习编码的各种组合,结果可以在表 3 中找到。输出位置编码是必需的,并且无法删除,因此我们尝试在解码器输入时传递一次它们,或者在每个解码器注意层添加到查询中。在第一个实验中,我们完全删除了空间位置编码,并在输入处传递输出位置编码,有趣的是,该模型仍然实现了超过 32 个 AP,比基线损失了 7.8 个 AP。然后,我们像在原始转换器 [47] 中一样,在输入处传递固定的正弦空间位置编码和输出编码一次,发现与直接在 attention 中传递位置编码相比,这会导致 1.4 AP 下降。传递给 attention 的学习空间编码会得到类似的结果。令人惊讶的是,我们发现,在编码器中不传递任何空间编码只会导致 AP 下降 1.3 AP。当我们将编码传递给 attention 时,它们会在所有层之间共享,并且输出编码(对象查询)总是被学习的。鉴于这些消融,我们得出结论,transformer 组件:编码器中的全局自我注意、FFN、多个解码器层和位置编码,都对最终的对象检测性能有显着贡献。 

总结

研究架构和损耗的其他组件如何影响最终性能

  • 编码器层数对AP的影响。编码器过全局场景推理,对于理解和解开物体之间的关系至关重要
  • 解码器层数,通过在每个解码器层后应用辅助损失,模型能够更好地预测对象。DETR由于其基于集合的损失,不需要使用NMS(非最大抑制)
  • FFN(前馈神经网络),如果将Transformer中的FFN完全移除,仅保留注意力机制,模型的性能会下降2.3 AP
  • 位置编码,尤其是输出位置编码,对于性能至关重要,但空间位置编码可以根据需求进行调整甚至省略,对性能的影响较小

FFN(前馈神经网络):通常由一系列全连接层(线性层)组成,作用是通过非线性变换增强模型的表达能力


损失消融:为了评估匹配成本和损失中不同组成部分的重要性,我们训练了几个模型,分别启用和禁用这些组成部分。损失包括三个部分:分类损失、ℓ₁边界框距离损失和GIoU损失。分类损失对训练至关重要,无法去除,因此我们训练了没有边界框距离损失的模型,以及没有GIoU损失的模型,并与基线模型(训练时使用所有三种损失)进行比较。结果如表4所示。单独使用GIoU损失时,损失对模型性能的影响较小,仅比基线减少了0.7 AP。使用ℓ₁损失而不使用GIoU损失的结果较差。我们只研究了不同损失的简单消融(每次使用相同的加权方式),但其他组合方式可能会得到不同的结果。

总结

研究人员通过消融(去除某些损失部分)来评估损失的不同部分对模型性能的影响

损失消融试验

通过去掉模型中某些损失函数的部分,看模型的表现是否发生变化,从而判断每一部分的作用和重要性。

损失函数(代价函数)

是机器学习和深度学习中用来衡量模型预测结果与真实结果之间差距的一个函数。它的目标是帮助模型在训练过程中不断调整参数,以便使得预测结果越来越接近真实结果。


4.3 Analysis(分析)

解码器输出槽分析。在图7中,我们可视化了DETR模型在COCO 2017验证集上对所有图像预测的框。DETR学习了每个查询槽的不同特化。我们观察到,每个槽都有几种操作模式,关注不同的区域和框的大小。特别地,所有槽都有一种用于预测图像范围内框的模式(在图中间的红点可以看到这一模式)。我们假设这与COCO数据集中物体的分布有关。

对未见数量实例的泛化能力。COCO中的一些类别在同一图像中没有大量相同类别的实例。例如,训练集中没有包含超过13只长颈鹿的图像。我们创建了一个合成图像(见图5)来验证DETR的泛化能力。我们的模型能够找到图像中的所有24只长颈鹿,尽管这个数量明显超出了训练集的分布。这个实验确认了每个对象查询中并没有强烈的类别专用性。

总结

DETR模型的每个查询槽学习了不同的特化,关注不同区域和框的大小,并能够预测整个图像范围的框

尽管COCO数据集中某些类别的实例数量有限,DETR仍能成功检测到合成图像中的24只长颈鹿,展示了其较强的泛化能力,且没有强烈的类别专用性。

4.4 DETR for panoptic segmentation

全景分割 [19] 最近引起了计算机视觉界的广泛关注。与Faster R-CNN [37]扩展到Mask R-CNN [14]类似,DETR可以通过在解码器输出顶部添加掩码头来自然扩展。在本节中,我们展示了这种掩膜头如何被用来通过处理“事物”和“物品”类来产生全景分割。。我们对 COCO 数据集的全景注释进行了实验,该数据集除了 80 个事物类别外,还有 53 个内容类别。 我们训练 DETR 来预测 stuff 和 things 类周围的框

全景头的插图。为每个检测到的对象并行生成一个二进制掩码,然后使用像素级 argmax 合并掩码。

图 9:DETR-R101 生成的全景分割定性结果。DETR 以统一的方式为事物生成对齐的掩码预测

我们训练 DETR 使用相同的配方来预测 COCO 上 stuff 和 things 类周围的盒子。要进行训练,需要预测方框,因为匈牙利匹配是使用方框之间的距离计算的。我们还添加了一个掩码头,它为每个预测的框预测二进制掩码,参见图 8。它以每个对象的 transformer 解码器的输出作为输入,并在编码器的输出上计算此嵌入的多头(具有 M 个头)注意力分数,从而以小分辨率为每个对象生成 M 个注意力热图。为了进行最终预测并提高分辨率,使用了类似 FPN 的架构。我们将在补充中更详细地介绍体系结构。掩模的最终分辨率为 stride 4,每个掩模使用 DICE/F-1 损失 [28] 和 Focal loss [23] 独立监督。

掩码头可以联合训练,也可以分两步进行训练,我们只训练盒子的 DETR,然后冻结所有权重,只训练掩码头 25 个时期。在实验上,这两种方法给出了相似的结果,我们使用后一种方法报告结果,因为它导致更短的总挂钟时间训练


表 5:在 COCO val 数据集上与最先进的方法 UPSNet [51] 和 Panoptic FPN [18] 的比较我们使用与 DETR 相同的数据增强重新训练了 PanopticFPN,以 18 倍的时间表进行公平比较。UPSNet 使用 1x 计划,UPSNet-M 是具有多尺度测试时增强的版本。

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

总结

全景分割扩展

DETR通过添加掩膜头,可以实现全景分割任务,即同时进行物体检测和语义分割

掩膜头原理

掩膜头为每个检测到的物体生成一个二进制掩膜,然后通过逐像素argmax操作合并这些掩膜。

训练过程

掩膜头可以与DETR联合训练,或者先训练边界框,再冻结权重训练掩膜头。

实验结果

DETR-R101在全景分割任务上与其他先进方法(如UPSNet和Panoptic FPN)进行了比较,并表现出较好的性能

掩膜头(Mask Head):全景分割不仅需要识别物体的类别,还要精确的为每一个物体生成一个掩膜,及标识出物体的精确区域


Training details(训练细节)

我们按照边界框检测的配方训练 DETR、DETR-DC5 和 DETR-R101 模型,以预测 COCO 数据集中 stuff 和 things 类周围的框。新的掩码头训练了 25 个 epoch(有关详细信息,请参阅补充)。在推理过程中,我们首先以低于 85% 的置信度过滤掉检测,然后计算每个像素的 argmax 以确定每个像素属于哪个掩码。然后,我们将同一内容类别的不同掩码预测折叠为一个,并过滤空预测(小于 4 像素)。

总结

模型训练

DETR、DETR-DC5和DETR-R101模型按照边界框检测的常规方法进行训练,目标是预测COCO数据集中“物品”(things)和“物体”(stuff)类别的边界框。

掩码头训练

新的掩码头进行了25个epoch的训练,用于生成物体的掩码。


Main results(主要成果)

定性结果如图 9 所示。在表 5 中,我们将我们的统一全景分离方法与几种不同的处理事物和事物的既定方法进行了比较。我们报告全景质量 (PQ) 和事物细分 (PQth) 和 stuff (PQst)。我们还报告了掩码 AP (在 things 类上计算),在任何 panoptic 后处理之前(在我们的例子中,在采用像素级 argmax 之前)。我们表明,DETR 优于 COCO-val 2017 上已发布的结果,以及我们强大的 PanopticFPN 基线(使用与 DETR 相同的数据增强进行训练,以便公平比较)。结果细分表明 DETR 在 stuff 类上特别占主导地位,我们假设编码器注意力允许的全局推理是这个结果的关键因素。对于事物类,尽管与掩码 AP 计算的基线相比,存在高达 8 mAP 的严重赤字,但 DETR 仍获得了具有竞争力的 PQth。我们还在 COCO 数据集的测试集上评估了我们的方法,并获得了 46 PQ。我们希望我们的方法能激发在未来工作中探索完全统一的全景分割模型

总结

新方法优点

  • DETR与多种传统的处理“物品”(things)和“物体”(stuff)的分割方法进行了比较,结果表明DETR在COCO-val 2017数据集上的表现优于已有的模型和基线
  • 在COCO测试集上的评估结果显示,DETR达到了46的PQ值。

展望未来

作者希望DETR能够激发未来在全景分割模型中探索更加统一的方法。


五、Conclusion(总结)

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

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

总结

优点

  • 性能与优化版本的Faster R-CNN在COCO数据集相当,在处理大物体上优于Faster R-CNN
  • DETR易于实现,有更灵活的架构

drawback

在小物体检测、训练、优化方面仍有不足。


参考资料

 学习资源:

模型下载:facebook/detr-resnet-50

python库下载:pip install model_name -i https://pypi.tuna.tsinghua.edu.cn/simple(注意别用魔法)

模型下载 : 在python环境目录下运行D:\Python3.9.6>python hf_download.py --model model_name

参考资料:

  1. 关于huggingface.co连接超时的问题
  2. 如何在 Hugging Face 上下载和使用模型—全面指南】
  3. Huggingface的介绍与快速入门
  4. huggingface模型下载不下来?这里教你万能解决办法~huggingface小白使用指南


http://www.niftyadmin.cn/n/5863786.html

相关文章

【NLP 31、预训练模型的发展过程】

人的行为,究竟是人所带来的思维方式不同还是与机器一样,刻在脑海里的公式呢? 只是因为不同的人公式不同,所以人的行为才不同,可这又真的是人引以为傲的意识吗? 人脑只是相当于一个大型、驳杂的处理器&#…

S8711A UXM5G 测试应用软件

苏/州/新/利/通 S8711A UXM 5G 测试应用软件 简述 Keysight S8711A UXM 5G 测试应用软件是一款交互式实时测试工具,适用于从早期原型测试一直到集成和验证的整个芯片和设备开发工作流程。 它提供了全套网络仿真、射频测试和功能测试工具,能够高度自…

docker独立部署milvus向量数据库

milvus镜像:国外封锁,国内源也不好用。基本上所有源都不能用 首先想到阿里云服务,但是阿里云国外服务器便宜的300~400呢。 基于成本考虑终于装上心心念念的milvus(*^▽^*) 安装 Milvus 安装 Milvus 独立版 wget https://raw.githubuserco…

MySQL的Union和OR查询

这里写目录标题 **1. 创建表和索引****2. 编写 UNION 查询****3. 使用 EXPLAIN 分析查询****4. 分析 EXPLAIN 结果****可能的结果分析**: **5. 验证索引合并****总结****1. UNION 操作的分析****为什么使用临时表?** 2. OR 条件的分析为什么使用索引合并…

javaEE-14.spring MVC练习

目录 1.加法计算器 需求分析: 前端页面代码: 后端代码实现功能: 调整前端页面代码: 进行测试: 2.用户登录 需求分析: 定义接口: 1.登录数据校验接口: 2.查询登录用户接口: 前端代码: 后端代码: 调整前端代码: 测试/查错因 后端: 前端: lombok工具 1.引入依赖…

【第四节】C++设计模式(创建型模式)-Builder(建造者)模式

目录 引言 一、Builder 模式概述 二、Builder 模式举例 三、Builder 模式的结构 四、Builder 模式的实现 五、Builder 模式的优缺点 六、总结 引言 Builder 模式是一种创建型设计模式,旨在将复杂对象的构建过程与其表示分离。通过一步步构建对象,…

解锁ApplicationContext vs BeanFactory: 谁更具选择性?

目录 一、聚焦源码回顾 (一)源码分析和理解 (二)简短的回顾对比建议 二、ApplicationContext vs BeanFactory特性对比 (一)主要特性总结 (二)直接建议 三、案例简单说明 &am…

宠物智能可穿戴产品调研报告

一、引言 随着人们生活水平的提高以及情感陪伴需求的增长,宠物在家庭中的地位愈发重要,宠物经济蓬勃发展。宠物智能可穿戴产品作为宠物市场与科技融合的新兴领域,正逐渐走进大众视野,为宠物饲养与管理带来新的变革。本调研旨在深…