DAB-DETR论文学习记录

奋斗吧
奋斗吧
擅长邻域:未填写

标签: DAB-DETR论文学习记录 Python博客 51CTO博客

2023-04-01 18:23:42 123浏览

DAB-DETR论文学习记录,在本文中,1.我们提出了一种使用动态锚框进行DETR(DEtectionTRansformer)的新颖查询以级联方式逐层执行软ROI池化来实现。


摘要

在本文中,1.我们提出了一种使用动态锚框进行DETR(DEtection TRansformer)的新颖查询公式,并提供了对查询在DETR中的作用的更深入理解。这个新公式直接使用框坐标作为转换器解码器中的查询,2.并逐层动态更新它们。使用框坐标不仅有助于使用显式位置先验来提高查询特征相似性并消除 DETR 中缓慢的训练收敛问题,3.而且还允许我们使用框宽度和高度信息来调节位置注意力图。这样的设计清楚地表明,DETR 中的查询可以作为以级联方式逐层执行软 ROI 池化来实现。因此,在相同设置下,在类似 DETR 的检测模型中,它在 MS-COCO 基准测试上具有最佳性能,例如,使用 ResNet50-DC5 作为在 50 个时期训练的主干的 AP 45.7%。我们还进行了广泛的实验,以验证我们的分析并验证我们方法的有效性。代码可在 https://github.com/SlongLiu/DAB-DETR 获得。

介绍

对象检测是计算机视觉中应用广泛的一项基本任务。大多数经典检测器都基于卷积架构,这些架构在过去十年中取得了显着进展(Ren等人,2017 年;吉尔希克,2015 年;雷德蒙等人,2016;博奇科夫斯基等人,2020;葛等人,2021 年)。最近,Carion 等人(2020 年)提出了一种名为 DETR (DEtection TRansformer) 的基于变压器的端到端探测器,它消除了对手工设计组件(例如锚点)的需求,并且与现代基于锚点的探测器(如 Faster RCNN)相比显示出有前途的性能(Ren 等人,2017 年)。

与基于锚点的检测器相比,DETR 将对象检测建模为集合预测问题,并使用 100 个可学习的查询来探测和汇集图像中的特征,从而无需使用非最大抑制即可进行预测。但是,由于其无效的设计和查询使用,DETR 的训练收敛速度明显较慢,通常需要 500 个 epoch 才能获得良好的性能。为了解决这个问题,许多后续工作试图改进 DETR 查询的设计,以实现更快的训练收敛和更好的性能(Zhu 等人,2021 年;高等人,2021;孟等人,2021;王等人,2021 年)。

尽管这些研究取得了所有进展,但learned queries在 DETR 中的作用仍未得到充分理解或利用。虽然以前的大多数尝试都使 DETR 中的每个查询更明确地与一个查询相关联,具体的空间位置而不是多个位置,技术方案有很大差异。例如,Conditional DETR 通过根据其内容特征调整查询来学习条件空间查询,以便更好地与图像特征匹配(Meng 等人,2021 年)。Efficient DETR 引入了一个密集的预测模块来选择 top-K 对象查询(Yao 等人,2021 年),Anchor DETR 将查询表述为 2D 锚点(Wang 等人,2021 年),两者都将每个查询与特定的空间位置相关联。同样,Deformable DETR 直接将 2D 参考点视为查询,并在每个参考点执行可变形交叉注意力操作(Zhu 等人,2021 年)。但上述所有工作都仅利用 2D 位置作为锚点,而不考虑对象比例。(即目标尺度差异)

在这些研究的推动下,我们仔细研究了 Transformer 解码器中的交叉注意力模块,并建议使用锚框,即 4D 框坐标 (x,y,w,h),作为 DETR 中的查询,并逐层更新它们。这个新的查询公式通过考虑每个锚框的位置和大小,为交叉注意力模块引入了更好的空间先验,这也导致了更简单的实现和对查询在 DETR 中的作用的更深入理解。
这个公式背后的关键见解是,DETR 中的每个查询都由两部分组成:内容部分(解码器自注意输出)和位置部分(例如 DETR 中的可学习查询)。交叉注意力权重是通过将query与一组key进行比较来计算的,该key由内容部分(编码图像特征)和位置部分(位置嵌入)两部分组成。因此,Transformer Encoder中的查询可以解释为基于查询到特征相似性度量的特征映射中的池化特征,该度量考虑了内容和位置信息。内容相似性用于池化语义相关的特征,而位置相似性则用于围绕查询位置池化特征提供位置约束。这种注意力计算机制促使我们将查询表述为锚框,如图所示。1 (c),允许我们使用锚框的中心位置 (x,y) 来汇集中心周围的特征,并使用锚框大小 (w,h) 来调制交叉注意力图,使其适应锚框大小。此外,由于使用坐标作为查询,锚框可以逐层动态更新。通过这种方式,DETR 中的查询可以实现为以级联方式逐层执行软 ROI 池化。

图1:改进模型差异

DAB-DETR论文学习记录_锚点

图 1:DETR、条件 DETR 和我们提议的 DAB-DETR 的比较。为清楚起见,我们只显示转换器解码器中的交叉注意力部分。
(a) DETR 对所有层使用可学习的查询,无需任何调整,这解释了其训练收敛缓慢的原因。
(b) 条件 DETR 调整各层的可学习查询,主要是为了从图像特征图集中为池化特征提供更好的参考查询点。
(c) DAB-DETR直接使用动态更新的锚框来提供参考查询点 (x,y) 和参考锚点大小 (w,h),以改进交叉注意力计算。我们用紫色标记了模块的差异。

我们通过使用锚框大小来调节交叉注意力,为池化特征提供更好的位置先验。由于交叉注意力可以汇集整个特征图中的特征,因此在每个查询之前提供适当的位置以使交叉注意力模块专注于与目标对象对应的局部区域至关重要。它还有助于加快DEPR的培训收敛。大多数先前的工作通过将每个查询与特定位置相关联来改进 DETR,但它们假设固定大小的各向同性高斯位置先验,这不适用于不同尺度的对象。利用每个查询锚框中提供的大小信息 (w,h),我们可以将高斯位置先验调制为椭圆形。更具体地说,我们分别从交叉注意力权重(softmax之前)中划分其x部分和y部分的宽度和高度,这有助于高斯先验更好地与不同尺度的对象匹配。为了进一步改善位置先验,我们还引入了一个温度参数来调整位置注意力的平坦度,这在之前的所有工作中都被忽略了。

总之,我们提出的DAB-DETR(动态锚框DETR)通过直接学习锚点作为查询,提出了一种新的查询公式。此公式提供了对查询作用的更深入理解,允许我们使用锚点大小来调制转换器解码器中的位置交叉注意力映射,并逐层执行动态锚点更新。我们的结果表明,在COCO对象检测基准的相同设置下,DAB-DETR在类DETR架构中获得了最佳性能。当使用单个ResNet-50(He等人,2016)模型作为训练50个epoch的骨干时,所提出的方法可以实现45.7%的AP。我们还进行了广泛的实验,以验证我们的分析并验证我们方法的有效性。

相关工作

大多数经典探测器都是基于锚的,使用box(Ren等人,2017;吉尔希克,2015 年;Sun 等人,2021 年)或锚点(田等人,2019 年;周等人,2019)。相比之下,DETR(Carion 等人,2020 年)是一个完全无锚点的检测器,使用一组可学习的向量作为查询。许多后续工作试图从不同角度解决DETR收敛缓慢的问题。Sun等人(2020)指出,DETR训练缓慢的原因是由于解码器中的交叉注意力,因此提出了一个仅编码器模型。Gao等人(2021)相反,在调节交叉注意力之前引入了高斯。尽管它们的性能有所提高,但他们没有对 DETR 中缓慢的训练和查询的作用给出适当的解释。

改进 DETR 的另一个方向与我们的工作更相关,是更深入地了解查询在 DETR 中的作用。由于 DETR 中的可学习查询用于为特征池提供位置约束,因此大多数相关工作都试图使 DETR 中的每个查询更明确地与特定的空间位置相关,而不是原版 DETR 中的多个位置模式。例如,Deformable DETR(Zhu等人,2021)直接将2D参考点视为查询,并预测每个参考点的可变形采样点,以执行可变形交叉注意力操作。Conditional DETR(Meng 等人,2021 年)解耦注意力公式并根据参考坐标生成位置查询。Efficient DETR(Yao 等人,2021 年)引入了一个密集的预测模块来选择 top-K 位置作为对象查询。尽管这些作品将查询与位置信息联系起来,但它们没有使用锚点的显式公式。

与以往工作中可学习的查询向量包含框坐标信息的假设不同,我们的方法基于一个新的视角,即查询中包含的所有信息都是框坐标。也就是说,锚框是 DETR 的更好查询。同时工作 Anchor DETR(Wang 等人,2021 年)也建议直接学习锚点,而像其他先前工作一样忽略锚点宽度和高度信息。除了DETR,Sun等人(2021)通过直接学习盒子提出了一个稀疏检测器,它与我们共享类似的锚定公式,但它放弃了变压器结构,并利用硬ROI对齐进行特征提取。表1总结了相关工作与我们提议的DAB-DETR之间的主要区别。我们将我们的模型与相关工作在五个维度上进行比较:如果模型直接学习锚点,如果模型预测参考坐标(在其中间阶段),如果模型逐层更新参考锚点,如果模型使用标准的密集交叉注意力,如果注意力被调制以更好地匹配不同尺度的对象。以及模型是否逐层更新学习的查询。有关类似DETR模型的更详细比较,请参见附录B节。我们建议对表格有困惑的读者使用此部分。

表1

DAB-DETR论文学习记录_学习_02

表1:代表性相关模型与我们的DAB-DETR的比较。术语“学习锚点?”询问模型是否直接学习 2D 点或 4D锚点作为可学习参数。术语“参考锚点”是指模型预测相对于参考点/锚点的相对坐标。术语“动态定位点”指示模型是否逐层更新其定位点。术语“标准注意力”显示模型是否利用了交叉注意力模块中的标准密集注意力。术语“对象尺度调制注意力”是指注意力是否被调制以更好地与对象尺度匹配。术语“大小调制注意力”是指注意力是否被调制以更好地与对象比例匹配。术语“更新空间学习查询?”是指学习的查询是否逐层更新。请注意,稀疏 RCNN 不是类似 DETR 的架构。我们在这里列出他们与我们类似的锚定配方。有关这些模型的更详细比较,请参阅附录的B节。

位置先验可以加快训练速度?

图2:DETR中Encoder与Decoder差别

DAB-DETR论文学习记录_人工智能_03

图 2:编码器中的自注意力和 DETR 解码器中的交叉注意力的比较。由于它们具有相同的键和值组件,因此唯一的区别来自查询。编码器中的每个查询都由图像特征(内容信息)和位置嵌入(位置信息)组成,而解码器中的每个查询由解码器嵌入(内容信息)和可学习查询(位置信息)组成。两个模块之间的差异以紫色标记。

为了加快DENTR的训练收敛速度,已经做了很多工作,但缺乏对他们的方法为什么有效的统一理解。Sun等人(2020)表明,交叉注意力模块主要负责缓慢的收敛,但他们只是删除了解码器以加快训练速度。我们按照他们的分析来找出交叉注意力中的哪个子模块会影响性能。将编码器中的自注意力模块与解码器中的交叉注意力模块进行比较,我们发现它们的输入之间的关键区别来自查询,如图所示。2. 当解码器嵌入初始化为 0 时,它们被投影到第一个交叉注意力模块之后的图像特征相同的空间。之后,它们将在解码器层中经历与编码器层中的图像特征类似的过程。因此,根本原因可能是由于可学习的查询。

交叉注意力的两个可能原因解释了模型训练收敛缓慢的原因:1)由于优化挑战,很难学习查询,2)学习查询中的位置信息与用于图像特征的正弦位置编码方式不同。为了查看这是否是第一个原因,我们重用了来自 DETR 的良好查询(保持它们固定),并且只训练其他模块。图3(a)中的训练曲线。表明固定查询仅略微改善了非常早期的时期的收敛性,例如前25个时期。因此,查询学习(或优化)可能不是关键问题。

图3:分析是否是query太难学习

DAB-DETR论文学习记录_深度学习_04

图 3:a):原始 DETR 和具有固定查询的 DETR 的训练曲线。b):原始 DETR 和 DETR+DAB
的训练曲线。我们运行每个实验 3 次,并绘制每个项目的平均值和 95% 置信区间。

然后我们转向第二种可能性,并尝试找出learned query是否具有一些不良属性。由于学习的查询用于过滤某些区域中的对象,因此我们在学习的查询和图像的位置嵌入之间可视化了一些位置注意力映射。

图4:可视化注意力视图

DAB-DETR论文学习记录_深度学习_05

图 4:我们可视化了 DETR、Conditional DETR 和我们建议的 DAB-DETR
的位置查询和位置键之间的位置注意力。
(a)中的四个注意力图是随机抽样的,我们选择与(a)中(b)和(c)中查询位置相似的图形。颜色越深,注意力权重越大,反之亦然。
(a) DETR 中的每个注意力图都是通过在学习的查询和特征图中的位置嵌入之间执行点积来计算的,并且可以具有多种模式和不集中的注意力。
(b) Conditional DETR 中的位置查询的编码方式与图像位置嵌入相同,从而产生类似高斯的注意力映射。但是,它不能适应不同尺度的物体。
(c) DAB-DETR使用锚点的宽度和高度信息显式调制注意力图,使其更适应对象的大小和形状。调制的注意力可以被视为有助于执行Soft ROI Pooling。

图中的特征第4(a)条。在让解码器专注于感兴趣区域之前,可以将每个查询视为一个位置。虽然它们作为位置约束,但它们也带有不良属性:多种模式和几乎一致的注意力权重。例如,图顶部的两个注意力图。4(a)具有两个或多个集中中心,当图像中存在多个对象时,很难定位对象。图的底部地图。4(a)关注太大或太小的区域,因此无法在特征提取过程中注入有用的位置信息。我们推测 DETR 中查询的多模式属性可能是其训练缓慢的根本原因,我们认为引入显式位置先验来约束局部区域的查询对于训练是可取的。为了验证这一假设,我们将 DETR 中的查询公式替换为动态锚框,这可以强制每个查询专注于特定区域,并将此模型命名为 DETR+DAB。图中的训练曲线。3(b) 表明,与 DETR 相比,DETR+DAB 在检测 AP 和训练/测试损失方面具有更好的性能。请注意,DETR 和 DETR+DAB 之间的唯一区别是查询的公式,并且没有引入其他技术,如 300 查询或焦点丢失。结果表明,在解决了DETR查询的多模式问题后,我们可以实现更快的训练收敛和更高的检测精度。

以前的一些作品也有类似的分析,并证实了这一点。例如,SMCA(Gao 等人,2021 年)通过在参考点周围应用预定义的高斯图来加快训练速度。Conditional DETR(Meng 等人,2021 年)使用显式位置嵌入作为训练的位置查询,产生类似于高斯核的注意力图,如图4(b)所示。尽管显式位置先验会导致训练中的良好性能,但它们忽略了对象的尺度信息。相比之下,我们提出的DAB-DETR明确考虑了对象尺度信息,以自适应地调整注意力权重,如图4(c)所示。

DAB-DETR

DAB-DETR论文学习记录_学习_06

概述

继 DETR(Carion 等人,2020 年)之后,我们的模型是一个端到端的对象检测器,其中包括 CNN 骨干网、Transformer(Vaswani 等人,2017 年)编码器和解码器,以及box和标签的预测头。我们主要改进解码器部分,如图5所示。
给定图像,我们使用CNN骨干提取图像空间特征,然后使用Transformer编码器来细化CNN特征。然后,将包括位置查询(锚框)和内容查询(解码器嵌入)在内的双重查询馈送到解码器中,以探测与定位点相对应且与内容查询具有相似模式的对象。对偶查询逐层更新,逐步接近目标真实对象。最终解码器层的输出用于通过预测头对带有标签和框的对象进行预测,然后进行二分图匹配以计算DEPR中的损失。
为了说明我们的动态锚框的通用性,我们还设计了一个更强大的DABDeformable-DETR,可在附录中找到。

直接学习锚框

正如第 1 节中关于查询在 DETR 中的作用所讨论的那样,我们建议直接学习查询框或说锚框,并从这些锚点派生位置查询。每个解码器层有两个注意力模块,包括一个自注意力模块和一个交叉注意力模块,分别用于查询更新和特征探测。每个模块都需要查询、键和值来执行基于注意力的值聚合,但这些三元组的输入不同。
我们将 Aq = (xq,yq,wq,hq) 表示为第 q 个锚点,xq,yq,wq,hq ∈ R 表示,Cq∈ RD , Pq ∈ RD 作为其对应的内容查询和位置查询,其中 D 是解码器嵌入和位置查询的维度。
给定一个锚点 Aq,其位置查询 Pq 由下式生成:

Pq = MLP(PE(Aq))

其中 PE 表示位置编码以从浮点数生成正弦嵌入,并且 MLP 的参数在所有层之间共享。由于 Aq 是四元数,我们在这里重载 PE 运算符:

PE(Aq) = PE(xq,yq,wq,hq) = Cat(PE(xq),PE(yq),PE(wq),PE(hq)).

Cat 的概念意味着连接函数。在我们的实现中,位置编码函数 PE 将浮点数映射到具有 D/2 维的向量,如下所示:PE:R → RD/2。因此,函数 MLP 将 2D 维度向量投影到 D 维度:MLP:R2D → RD。MLP模块有两个子模块,每个子模块由一个线性层和一个ReLU激活组成,特征约简在第一个线性层进行。
在自我注意模块中,所有三个查询、键和值都具有相同的内容项,而查询和键包含额外的位置项:

Self-Attn: Qq = Cq + Pq, Kq = Cq + Pq, Vq = Cq,

受条件 DETR(Meng 等人,2021 年)的启发,我们将位置和内容信息作为交叉注意力模块中的查询和键连接在一起,以便我们可以解耦内容和位置对查询特征相似性的贡献,该相似性计算为查询和键之间的点积。为了重新缩放位置嵌入,我们还利用了条件空间查询(Meng 等人,2021 年)。更具体地说,我们学习一个 MLP(csq):RD → RD 来获取基于内容信息的条件尺度向量,并使用它来执行位置嵌入的逐元素乘法:

Cross-Attn:
Qq = Cat(Cq,PE(xq,yq) · MLP(csq)(Cq))
Kx,y = Cat(Fx,y,PE(x,y)),
Vx,y = Fx,y,

其中 Fx,y ∈ RD 是位置 (x,y)的特征图 , ·是逐元素乘法。查询和键中的位置嵌入都是基于 2D 坐标生成的,这使得比较位置相似性更加一致,就像之前的工作一样(Meng 等人,2021 年;王等人,2021 年)。

锚点更新

使用坐标作为学习查询可以逐层更新它们。相比之下,对于高维嵌入的查询,例如在 DETR(Carion 等人,2020 年)和条件 DETR(Meng 等人,2021 年)中,很难执行逐层查询细化,因为不清楚如何将更新的锚点转换回高维查询嵌入。

遵循先前的做法(朱等人,2021 年;Wang 等人,2021 年),我们在通过预测头预测相对位置 (∆x,∆y,∆w,∆h) 后更新每层中的锚点,如图5.所示。 请注意,不同层中的所有预测头共享相同的参数。

DAB-DETR论文学习记录_人工智能_07

宽度和高度调制

DAB-DETR论文学习记录_锚点_08


传统的位置注意力图被用作类似高斯先验的,如图6所示。但是先验只是假设所有对象的各向同性和固定大小,而忽略了它们的比例信息(宽度和高度)。为了改善位置先验,我们建议将比例尺信息注入到注意力图中。

原始位置注意力图中的查询到键相似性计算为两个坐标编码的点积之和:

DAB-DETR论文学习记录_深度学习_09

Attn((x,y),(xref,yref)) = (PE(x) · PE(xref) + PE(y) · PE(yref))/ D,

其中 1/ D 用于重新缩放 Vaswani 等人 (2017) 中建议的值。我们通过分别划分其 x 部分和 y 部分的相对锚点宽度和高度来调节位置注意力图(在 softmax 之前),以便在更好地与不同尺度的对象匹配之前平滑高斯图:

DAB-DETR论文学习记录_人工智能_10

其中 wq 和 hq 是锚点 Aq 的宽度和高度,wq,ref 和 hq,ref 是参考宽度和高度,计算公式为:

wq,ref,hq,ref = σ(MLP(Cq)).

这种调制的位置注意力有助于我们提取不同宽度和高度的物体的特征,调制注意力的可视化如图 6 所示。

TEMPERATURE TUNING

对于位置编码,我们使用正弦函数(Vaswani等人,2017),其定义为:

DAB-DETR论文学习记录_池化_11

其中T是手工设计的温度,上标2i和2i + 1表示编码向量中的索引。方程(8)中的温度T会影响位置先验的大小,如图所示。7. T越大,注意力图越扁平,反之亦然。请注意,温度T在(Vaswani等人,2017)中硬编码为10000,用于自然语言处理,其中x的值是代表每个单词在句子中的位置的整数。但是,在 DETR 中,x 的值是介于 0 和 1 之间的浮点数,表示边界框坐标。因此,视觉任务非常需要不同的温度。在这项工作中,我们在所有模型中根据经验选择T = 20。

实验

我们在附录 A 中提供了培训详细信息。

主要结果

表2显示了我们对COCO 2017验证集的主要结果。我们将我们提议的DABDETR与DETR(Carion等人,2020),Faster RCNN(Ren等人,2017),Anchor DETR(Wang等人,
2021)、SMCA(高等人,2021)、可变形DETR(朱等人,2021)、TSP(Sun等人,2020)和条件DETR(Meng等人,2021)。我们展示了模型的两种变体:标准模型和标有上标∗的模型,它们有 3 个模式嵌入(Wang 等人,2021 年)。我们的标准模型以很大的优势优于条件 DETR。我们注意到我们的模型引入了GFLOP的轻微增加。GFLOP可能因计算脚本而异,我们使用作者在表2中报告的结果。实际上,我们在测试中发现,标准模型的GFLOP与基于GFLOPs计算脚本的相应条件DETR模型几乎相同,因此在相同设置下,我们的模型仍然比以前的工作具有优势。当使用模式嵌入时,我们的DAB-DETR具有∗在所有四个主干上的表现优于以前的类似DETR的方法,并且有很大的余量,甚至比多尺度架构还要好。它验证了我们分析的正确性和设计的有效性。

DAB-DETR论文学习记录_锚点_12

表 2:我们的 DAB-DETR 和其他检测模型的结果。除 DETR 外,所有类似 DETR 的模型都使用 300 个查询,而 DETR使用 100 个查询。带有上标∗的模型使用 3 个模式嵌入,如 Anchor DETR 中一样(Wang 等人,2021年)。我们还在附录G和附录C中提供了更强大的DAB-DETR结果。

DAB-DETR论文学习记录_深度学习_13


表 3:我们的 DAB-DETR 的消融结果。所有型号均通过 ResNet-50-DC5 主干网进行测试,其他参数与我们的默认设置相同。

消融实验

表 3 显示了我们模型中每个组件的有效性。我们发现,我们提出的所有模块都对我们的最终结果做出了显着贡献。锚点公式(比较第3行和第4行)将AP从44.0%提高到45.0%,锚点更新引入了1.7%的AP改进(比较第1行和第2行),证明了动态锚框设计的有效性。
去除调制注意力和温度调整后,模型性能分别降至 45.0%(比较第 1 行和第 3 行)和 44.4%(比较第 1 行和第 5 行)。因此,位置注意力的细粒度调整对于提高检测性能也非常重要。

结论

在本文中,我们提出了一种使用动态锚框进行 DETR 的新查询公式,并提供了对查询在 DETR 中的作用的更深入理解。使用锚框作为查询会带来几个优点,包括通过温度调整获得更好的位置先验、考虑不同尺度对象的大小调制注意力,以及用于逐步改进锚点估计的迭代锚点更新。这样的设计清楚地表明,DETR 中的查询可以作为以级联方式逐层执行软 ROI 池化来实现。我们进行了大量的实验,有效地验证了我们的分析,验证了我们的算法设计。


好博客就要一起分享哦!分享海报

此处可发布评论

评论(0展开评论

暂无评论,快来写一下吧

展开评论

您可能感兴趣的博客

客服QQ 1913284695