dab-detr: dynamic anchor boxes are better queries for detr【目标检测-方法详细解读】

DAB-DETR: Dynamic Anchor Boxes Are Better Queries for DETR

摘要

在本文中,我们提出了一种新的查询形式,使用动态锚框作为DETR(DEtection TRansformer)的查询,并提供了对DETR中查询角色的更深入理解。这种新形式直接使用框坐标作为Transformer解码器中的查询,并逐层动态更新它们。使用框坐标不仅有助于利用显式的定位先验来提高查询与特征的相似性,消除DETR中训练收敛缓慢的问题,还允许我们使用框的宽度和高度信息来调节定位注意力图。这种设计使得DETR中的查询可以解释为逐层以级联方式执行软ROI池化。因此,它在相同设置下在MS-COCO基准测试中取得了DETR类检测模型的最佳性能,例如,使用ResNet50-DC5作为骨干网在50个epoch内训练,达到45.7%的AP。我们还进行了广泛的实验以确认我们的分析并验证我们方法的有效性。代码可在此处获取。

介绍

物体检测是计算机视觉中的一项基本任务,应用广泛。大多数经典的检测器基于卷积架构,过去十年取得了显著进展。最近,Carion等人提出了一种基于Transformer的端到端检测器DETR,它消除了对手工设计组件(如锚点)的需求,并与现代基于锚点的检测器(如Faster RCNN)相比表现出色。

与基于锚点的检测器相比,DETR将目标检测建模为集合预测问题,并使用100个可学习的查询从图像中探测和提取特征,从而无需使用非极大值抑制进行预测。然而,由于其查询设计和使用效率低下,DETR在训练收敛速度上存在显著问题,通常需要500个epoch才能取得良好表现。为了解决这个问题,许多后续工作试图改进DETR查询的设计,以加快训练收敛速度并提高性能。

尽管取得了所有这些进展,但DETR中查询的作用仍未得到充分理解和利用。大多数之前的尝试使DETR中的每个查询更明确地与一个特定的空间位置相关,而不是多个位置。然而,技术解决方案各不相同。例如,Conditional DETR通过根据内容特征适应查询来学习条件空间查询,以便更好地与图像特征匹配。Efficient DETR引入了密集预测模块来选择前K个目标查询,而Anchor DETR将查询设计为2D锚点,两者都使每个查询与特定空间位置相关。类似地,Deformable DETR直接将2D参考点视为查询,并在每个参考点执行可变形的跨注意力操作。然而,所有这些工作仅利用2D位置作为锚点,而没有考虑对象的尺度。

受这些研究的启发,我们仔细研究了Transformer解码器中的跨注意力模块,并提出使用锚框(即4D框坐标(x, y, w, h))作为DETR中的查询,并逐层更新它们。这种新的查询形式通过同时考虑每个锚框的位置和大小,为跨注意力模块引入了更好的空间先验,这也带来了更简单的实现和对DETR中查询角色的更深理解。

这种形式的关键见解是,DETR中的每个查询由两个部分组成:内容部分(解码器自注意输出)和位置部分(例如,DETR中的可学习查询)。跨注意力权重是通过将查询与一组由内容部分(编码图像特征)和位置部分(位置嵌入)组成的键进行比较计算的。因此,Transformer解码器中的查询可以解释为基于查询与特征相似性度量从特征图中提取特征,考虑了内容和位置信息。虽然内容相似性用于提取语义相关的特征,但位置相似性提供了在查询位置附近提取特征的位置约束。这种注意力计算机制激励我们将查询形式化为锚框,如图1©所示,允许我们使用锚框的中心位置(x, y)来提取中心周围的特征,并使用锚框大小(w, h)来调节跨注意力图,使其适应锚框大小。此外,由于使用了坐标作为查询,锚框可以逐层动态更新。这样,DETR中的查询可以逐层级联地执行软ROI池化。

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

综上所述,我们提出的DAB-DETR(动态锚框DETR)通过直接学习锚点作为查询,提出了一种新的查询形式。这种形式提供了对查询角色的更深理解,允许我们使用锚框大小来调节Transformer解码器中的位置跨注意力图,并逐层执行动态锚框更新。我们的结果表明,DAB-DETR在相同设置下在COCO目标检测基准测试中取得了DETR类架构的最佳性能。使用单一ResNet-50模型作为骨干网训练50个epoch时,提出的方法可以达到45.7%的AP。我们还进行了广泛的实验以确认我们的分析并验证我们方法的有效性。

在这里插入图片描述
图1: DETR、Conditional DETR 和我们提出的 DAB-DETR 的对比。为了清晰起见,我们仅展示了 Transformer 解码器中的跨注意力部分。(a) DETR 在所有层中使用可学习查询而没有任何适配,这解释了其训练收敛速度慢的原因。(b) Conditional DETR 为每一层适配可学习查询,主要是为了提供更好的参考查询点以从图像特征图中提取特征。相比之下,© DAB-DETR 直接使用动态更新的锚框来提供参考查询点 ( x , y ) (x, y) (x,y) 和参考锚框大小 ( w , h ) (w, h) (w,h),以改进跨注意力计算。我们用紫色标注了不同的模块。
---------------------------------------------以下为“图1”解读部分---------------------------------------------------
图1详细解读

图1展示了DETR、Conditional DETR以及本文提出的DAB-DETR模型的对比。图中仅展示了Transformer解码器中的跨注意力部分,以便于对比各模型在处理可学习查询(Learnable Queries)上的不同方法。

(a) DETR

  1. Learnable Queries

    • DETR使用可学习查询(Learnable Queries)作为输入,且这些查询在所有层中没有任何适配。
    • 这种方式导致了训练收敛速度较慢,因为模型需要在所有层中学习相同的查询表示。
  2. Cross-Attention

    • 图像特征(Image Features)与位置编码(Positional Encodings)结合生成键(Key, K K K)和值(Value, V V V)。
    • 解码器嵌入(Decoder Embeddings)生成查询(Query, Q Q Q)。
    • 查询与键进行点积运算,计算注意力权重,然后加权求和值生成最终输出。

(b) Conditional DETR

  1. Learnable Queries with Adaptation

    • Conditional DETR为每一层适配可学习查询,主要是为了提供更好的参考查询点,以从图像特征图中提取特征。
    • 每一层的查询根据参考点进行调整,提升了查询的精确度和效率。
  2. Reference Points

    • 通过加入参考点(Reference Points, x , y x, y x,y)来改进查询的生成过程,使得查询点能够更好地与图像特征匹配。

(c) DAB-DETR

  1. Dynamically Updated Anchor Boxes

    • DAB-DETR直接使用动态更新的锚框(Anchor Boxes)提供参考查询点( x , y x, y x,y)和参考锚框大小( w , h w, h w,h),以改进跨注意力计算。
    • 动态锚框能够逐层更新,使得查询更加准确。
  2. Width & Height-Modulated Cross-Attention

    • DAB-DETR引入宽度和高度调制的跨注意力机制(Width & Height-Modulated Cross-Attention),进一步提升跨注意力计算的精度。
    • 在每一层,锚框根据相对位置变化量( Δ x , Δ y , Δ w , Δ h \Delta x, \Delta y, \Delta w, \Delta h Δx,Δy,Δw,Δh)进行更新。
  3. Key and Query Generation

    • 图像特征与位置编码生成键和值。
    • 结合内容嵌入和动态锚框生成查询。

图1总结

  • DETR:使用固定的可学习查询,导致训练收敛速度慢。
  • Conditional DETR:引入参考点适配可学习查询,提升查询精度。
  • DAB-DETR:通过动态锚框提供参考查询点和锚框大小,并引入宽度和高度调制的跨注意力机制,显著提升了跨注意力计算的精度和训练效率。

适配的具体实现:

Conditional DETR

  • 适配查询:Conditional DETR的适配过程主要是调整参考点,使得每层的查询能够更好地匹配图像特征。这一过程通过一个多层感知机(MLP)实现,该MLP根据上一层的输出调整参考点的位置。

DAB-DETR

  • 动态更新:DAB-DETR通过动态更新锚框来实现适配。锚框表示查询的初始位置和大小,在每一层中根据预测的相对位置变化量进行更新。这个过程也是通过一个多层感知机(MLP)来实现的,该MLP根据上一层的输出预测锚框的变化量。

总结

适配并不是通过激活函数完成的,而是通过对可学习查询进行调整或重新计算来完成的。Conditional DETR通过逐层调整参考点来实现适配,而DAB-DETR则通过动态更新锚框来实现适配。这两种方法都通过多层感知机(MLP)等机制,根据上一层的输出对查询进行调整,从而提高查询的准确性和模型的检测性能。

---------------------------------------------以上为“图1”解读部分---------------------------------------------------

2 相关工作

大多数经典的检测器是基于锚点的,使用锚框(Ren等,2017;Girshick,2015;Sun等,2021)或锚点(Tian等,2019;Zhou等,2019)。相比之下,DETR(Carion等,2020)是一个完全无锚的检测器,使用一组可学习的向量作为查询。许多后续工作试图从不同角度解决DETR的慢收敛问题。Sun等(2020)指出,DETR训练缓慢的原因在于解码器中的跨注意力,因此提出了一个仅使用编码器的模型。Gao等(2021)引入了高斯先验来调节跨注意力。尽管它们提高了性能,但并没有给出DETR慢训练和查询角色的合理解释。

另一个改进DETR的方向(与我们工作更相关)是深入理解DETR中查询的角色。由于DETR中的可学习查询用于提供特征提取的定位约束,大多数相关工作尝试使DETR中的每个查询更明确地与一个特定的空间位置相关,而不是多个位置模式。例如,Deformable DETR(Zhu等,2021)直接将2D参考点视为查询,并为每个参考点预测可变形采样点以执行可变形的跨注意力操作。Conditional DETR(Meng等,2021)解耦了注意力的形成,并基于参考坐标生成位置查询。Efficient DETR(Yao等,2021)引入了一个密集预测模块,以选择前K个位置作为目标查询。虽然这些工作将查询与位置信息相关联,但它们没有一个明确的形式来使用锚点。

不同于之前假设的可学习查询向量包含框坐标信息的假设,我们的方法基于一个新的观点,即查询中包含的所有信息都是框坐标。即,锚框是更好的DETR查询。一项同时进行的工作Anchor DETR(Wang等,2021)也建议直接学习锚点,但它忽略了与其他先前工作一样的锚点宽度和高度信息。除了DETR之外,Sun等(2021)提出了一个通过直接学习框的稀疏检测器,这与我们的锚点形式相似,但它抛弃了Transformer结构,采用硬ROI对齐进行特征提取。表1总结了相关工作与我们提出的DAB-DETR之间的主要区别。我们从五个维度比较了我们的模型与相关工作:模型是否直接学习锚点,模型是否在中间阶段预测参考坐标,模型是否逐层更新参考锚点,模型是否使用标准的密集跨注意力,模型是否调节注意力以更好地匹配不同尺度的对象。更详细的DETR类模型比较见附录B。我们建议读者阅读该部分以解答关于表格的困惑。

3 为什么位置先验可以加速训练?

自注意力编码器 vs 跨注意力解码器

对DETR的训练收敛速度进行了大量研究,但缺乏统一的理解来解释这些方法为何有效。Sun等(2020)指出,DETR训练缓慢的原因主要在于解码器中的跨注意力模块,但他们只是简单地移除了解码器以加速训练。我们按照他们的分析找出跨注意力模块中哪个子模块影响了性能。将编码器中的自注意力模块与解码器中的跨注意力模块进行比较,我们发现它们输入的主要区别在于查询,如图2所示。由于解码器嵌入初始化为0,它们在第一个跨注意力模块之后投影到与图像特征相同的空间。之后,它们将在解码器层中经历与图像特征在编码器层中相似的过程。因此,问题的根源很可能在于可学习查询。

在跨注意力模块中,有两个可能的原因导致模型训练收敛缓慢:1)由于优化挑战,难以学习查询;2)可学习查询中的位置信息没有以与图像特征中使用的正弦位置编码相同的方式编码。为了验证是否是第一个原因,我们重新使用DETR中训练良好的查询(保持它们固定),仅训练其他模块。图3(a)中的训练曲线显示,固定查询仅在非常早期的epoch中(如前25个epoch)略微提高了收敛速度。因此,查询学习(或优化)可能不是主要问题。

接下来,我们转向第二种可能性,尝试找出可学习查询是否具有某些不良特性。由于可学习查询用于筛选特定区域中的目标,我们在图4(a)中可视化了一些可学习查询与图像位置嵌入之间的位置注意力图。每个查询可以看作是一个位置先验,让解码器专注于一个感兴趣区域。虽然它们充当位置约束,但它们也具有不良特性:多模式和几乎均匀的注意力权重。例如,图4(a)顶部的两个注意力图有两个或更多的集中中心,当图像中存在多个目标时,很难定位目标。图4(a)底部的图聚焦在太大或太小的区域,因此不能在特征提取过程中注入有用的位置信息。我们推测DETR查询的多模式特性可能是其训练缓慢的根本原因,并认为引入显式位置先验来约束查询在局部区域是有利的。为了验证这个假设,我们用动态锚框替换DETR中的查询形式,从而强制每个查询专注于一个特定区域,并将这种模型命名为DETR+DAB。图3(b)中的训练曲线显示,DETR+DAB在检测AP和训练/测试损失方面比DETR表现出更好的性能。请注意,DETR和DETR+DAB之间唯一的区别是查询的形式,没有引入其他技术(如300个查询或焦点损失)。这表明在解决DETR查询的多模式问题后,我们可以实现更快的训练收敛和更高的检测准确性。

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

4 DAB-DETR

4.1 概述

按照DETR(Carion等人,2020)的模型结构,我们的模型是一个端到端的目标检测器,包括一个CNN骨干网络、Transformer编码器和解码器,以及用于框和标签的预测头。我们主要改进了解码器部分,如图5所示。

给定一幅图像,我们使用CNN骨干网络提取图像的空间特征,然后通过Transformer编码器细化这些特征。然后,位置查询(锚框)和内容查询(解码器嵌入)一起输入到解码器中,以探测与这些锚点相对应并与内容查询具有相似模式的对象。双重查询逐层更新,逐渐接近目标真实对象。最终解码器层的输出用于通过预测头预测带标签的对象,然后进行二分图匹配来计算损失,如同在DETR中进行的那样。

为了说明我们动态锚框的通用性,我们还设计了一个更强的DAB-Deformable-DETR,具体内容在附录中提供。
-----------------------------------------以下为“4.1 概述”解读部分-----------------------------------------------

4.1 概述(解读)

在这一部分,作者介绍了DAB-DETR模型的总体结构和设计思路。以下是对这一部分的详细解析:

端到端的目标检测器

  • 端到端模型:DAB-DETR是一个端到端的目标检测器,这意味着它可以直接从输入图像到输出目标检测结果,不需要中间的手工设计组件,如候选区域生成。

模型结构

  • CNN骨干网络:模型使用卷积神经网络(CNN)作为骨干网络,提取图像的空间特征。这些特征将作为Transformer编码器的输入。
  • Transformer编码器和解码器:在CNN提取特征之后,这些特征被送入Transformer编码器进行进一步处理。编码器细化这些特征,增强其表达能力。随后,解码器将使用这些特征和查询进行目标检测。
  • 预测头解码器的输出通过预测头来预测标签。预测头包括一系列的线性层或卷积层,负责将解码器的输出转换为具体的检测结果。

解码器的改进

  • 位置查询和内容查询:模型在解码器中使用两种查询:位置查询(锚框)和内容查询(解码器嵌入)。位置查询提供目标的空间位置信息,内容查询提供目标的语义信息。
  • 逐层更新:位置查询和内容查询在解码器中逐层更新。每一层解码器都会利用前一层的输出对查询进行调整,使其逐渐接近目标的真实位置和内容。

具体过程

  • 图像输入和特征提取:输入图像通过CNN骨干网络,提取出图像的空间特征。
  • 特征细化:这些特征被送入Transformer编码器,进行细化和增强。
  • 解码器处理:位置查询和内容查询被送入解码器。解码器逐层处理这些查询,逐渐调整它们,使其能够准确地表示目标的位置和内容。
  • 输出预测:解码器的最终输出通过预测头进行处理,生成目标检测结果,包括框和标签。
  • 损失计算:预测结果通过二分图匹配计算损失,如同在DETR中进行的那样。这一步确保模型能够在训练过程中不断优化,提高检测精度。

动态锚框的通用性

  • DAB-Deformable-DETR:为了进一步展示动态锚框的通用性,作者设计了一个更强的模型版本——DAB-Deformable-DETR。这一版本在附录中提供,展示了动态锚框在不同模型结构中的应用潜力。
    ----------------------------------------以上为“4.1 概述”解读部分---------------------------------------------

在这里插入图片描述

-----------------------------------以下为“图5:DAB-DETR框架”解读部分---------------------------------------
图5:DAB-DETR框架解析:

图5展示了我们提出的DAB-DETR模型的框架。这个框架结合了宽度和高度调制的多头跨注意力和多头自注意力机制。下面是对图中各个部分的详细解析:

  1. 图像空间特征(Image Spatial Features)
  • 这是通过CNN骨干网络提取的图像特征。
  1. 空间位置编码(Spatial Positional Encodings)
  • 对应图像空间特征的位置编码,使用正弦嵌入方法生成。
  1. 解码器嵌入(Decoder Embeddings)
  • 这是解码器的输入,初始为零嵌入,逐层更新。
  1. 锚框(Anchor Boxes)
  • 初始锚框坐标( x , y , w , h x, y, w, h x,y,w,h),表示对象的初始位置和大小。
  1. 锚框正弦编码(Anchor Sine Encodings)
  • 对锚框的 x , y , w , h x, y, w, h x,y,w,h进行正弦位置编码,生成位置查询。
  1. 多头自注意力(Multi-Head Self-Attention)
  • 输入: Q = C + P , K = C + P , V = C Q = C + P, K = C + P, V = C Q=C+P,K=C+P,V=C
  • Q Q Q(查询)、 K K K(键)和 V V V(值)都包含内容查询 C C C和位置查询 P P P
  • 这个模块用于更新解码器嵌入。
  1. 加法和规范化(Add & Norm)
  • 自注意力输出后进行加法和规范化处理。
  1. 宽度和高度调制的多头跨注意力(Width & Height-Modulated Multi-Head Cross-Attention)
  • 输入: Q = C a t ( C , P E ( x q , y q ) ⋅ M L P ( c s q ) ( C ) ) , K = C a t ( F x , y , P E ( x , y ) ) , V = F x , y Q = Cat(C, PE(x_q, y_q) \cdot MLP(csq)(C)), K = Cat(F_{x, y}, PE(x, y)), V = F_{x, y} Q=Cat(C,PE(xq,yq)MLP(csq)(C)),K=Cat(Fx,y,PE(x,y)),V=Fx,y
  • 位置编码 P E ( x , y ) PE(x, y) PE(x,y)根据锚框的宽度和高度进行调制。
  • M L P ( c s q ) MLP(csq) MLP(csq)用于调整位置嵌入的尺度。
  1. 宽度和高度参考值( w r e f , h r e f w_{ref}, h_{ref} wref,href
  • 通过 M L P MLP MLP从内容查询 C C C中预测宽度和高度参考值。
  1. 加法和规范化(Add & Norm)
  • 跨注意力输出后进行加法和规范化处理。
  1. 前馈网络(FFN)
  • 一个前馈神经网络层,用于进一步处理跨注意力的输出。
  1. 输出(Output)
  • 最终的输出用于预测边界框的相对变化量( Δ x , Δ y , Δ w , Δ h \Delta x, \Delta y, \Delta w, \Delta h Δx,Δy,Δw,Δh)。
  1. 新锚框(New Anchor Boxes)
  • 根据预测的相对变化量更新锚框坐标( x ′ , y ′ , w ′ , h ′ x', y', w', h' x,y,w,h)。

模块和变量的图例

  • 图中的椭圆表示模块(如 M L P MLP MLPKaTeX parse error: Expected 'EOF', got '&' at position 5: Add &̲ Norm F F N FFN FFN等),方框表示变量(如锚框坐标、解码器嵌入等)。

通过这个框架,我们可以看到DAB-DETR如何利用锚框和多头注意力机制逐层更新查询,并通过位置编码的调制增强位置先验,从而提高检测性能和训练效率。
-----------------------------------以上为“图5:DAB-DETR框架”解读部分---------------------------------------

4.2 直接学习锚框

正如在第1节中讨论的DETR中查询的角色,我们提出直接学习查询框或称为锚框,并从这些锚点导出位置查询。每个解码器层中有两个注意力模块,包括一个自注意力模块和一个跨注意力模块,分别用于查询更新和特征探测。每个模块都需要查询、键和值来执行基于注意力的值聚合,但这些三元组的输入有所不同。

我们将第 q q q个锚点表示为 A q = ( x q , y q , w q , h q ) A_q = (x_q, y_q, w_q, h_q) Aq=(xq,yq,wq,hq),其中 x q , y q , w q , h q ∈ R x_q, y_q, w_q, h_q ∈ R xq,yq,wq,hqR C q ∈ R D C_q ∈ R^D CqRD P q ∈ R D P_q ∈ R^D PqRD分别表示其对应的内容查询和位置查询,其中 D D D是解码器嵌入和位置查询的维度。

给定一个锚点 A q A_q Aq,其位置查询 P q P_q Pq由下式生成:

P q = M L P ( P E ( A q ) ) P_q = MLP(PE(A_q)) Pq=MLP(PE(Aq))

其中 P E PE PE表示从浮点数生成正弦嵌入的位置信息编码,MLP的参数在所有层中共享。由于 A q A_q Aq是四元数,我们在这里重载了 P E PE PE操作符:

P E ( A q ) = P E ( x q , y q , w q , h q ) = C a t ( P E ( x q ) , P E ( y q ) , P E ( w q ) , P E ( h q ) ) PE(A_q) = PE(x_q, y_q, w_q, h_q) = Cat(PE(x_q), PE(y_q), PE(w_q), PE(h_q)) PE(Aq)=PE(xq,yq,wq,hq)=Cat(PE(xq),PE(yq),PE(wq),PE(hq))

符号 C a t Cat Cat表示连接函数。在我们的实现中,位置编码函数 P E PE PE将一个浮点数映射到具有 D / 2 D/2 D/2维的向量: P E : R → R D / 2 PE: R → R^{D/2} PE:RRD/2。因此,MLP函数将 2 D 2D 2D维向量投影到 D D D维空间: M L P : R 2 D → R D MLP: R^{2D} → R^D MLP:R2DRD。MLP模块有两个子模块,每个子模块由一个线性层和一个 R e L U ReLU ReLU激活组成,并在第一个线性层中进行特征降维。

在自注意力模块中,查询、键和值都有相同的内容项,但查询和键包含额外的位置项:

S e l f − A t t n : Q q = C q + P q , K q = C q + P q , V q = C q Self-Attn: Q_q = C_q + P_q, K_q = C_q + P_q, V_q = C_q SelfAttn:Qq=Cq+Pq,Kq=Cq+Pq,Vq=Cq

C o n d i t i o n a l   D E T R Conditional\ DETR Conditional DETR(Meng等人,2021)的启发,我们在跨注意力模块中将位置和内容信息一起连接为查询和键,以便我们可以解耦内容和位置对查询与特征相似性度量的贡献,该度量是通过查询和键之间的点积计算的。为了重新调整位置嵌入,我们还利用了条件空间查询(Meng等人,2021)。更具体地说,我们学习了一个 M L P ( c s q ) : R D → R D MLP(csq): R^D → R^D MLP(csq):RDRD,以获得一个基于内容信息的尺度向量,并使用它对位置嵌入进行元素级乘法:

C r o s s − A t t n : Q q = C a t ( C q , P E ( x q , y q ) ⋅ M L P ( c s q ) ( C q ) ) , K x , y = C a t ( F x , y , P E ( x , y ) ) , V x , y = F x , y Cross-Attn: Q_q = Cat(C_q, PE(x_q, y_q) \cdot MLP(csq)(C_q)), K_{x,y} = Cat(F_{x,y}, PE(x, y)), V_{x,y} = F_{x,y} CrossAttn:Qq=Cat(Cq,PE(xq,yq)MLP(csq)(Cq)),Kx,y=Cat(Fx,y,PE(x,y)),Vx,y=Fx,y

其中 F x , y ∈ R D F_{x,y} ∈ R^D Fx,yRD是位置 ( x , y ) (x, y) (x,y)处的图像特征, ⋅ \cdot 表示元素级乘法。查询和键中的位置嵌入都基于 2 D 2D 2D坐标生成,使其与之前的工作(Meng等人,2021;Wang等人,2021)中相似位置的比较更加一致。

------------------------------------以下为“4.2 直接学习锚框”解读部分------------------------------------------

4.2 直接学习锚框(解读)

在这一部分,作者详细描述了如何在DAB-DETR模型中直接学习锚框(Anchor Boxes),并将其用于位置查询。以下是对这一部分的详细解析:

锚框和位置查询

  • 锚框的表示:作者提出直接学习查询框(锚框),并从这些锚点导出位置查询。每个锚点表示为 A q = ( x q , y q , w q , h q ) A_q = (x_q, y_q, w_q, h_q) Aq=(xq,yq,wq,hq),其中 x q , y q , w q , h q x_q, y_q, w_q, h_q xq,yq,wq,hq都是实数。
  • 内容查询和位置查询:对于每个锚点 A q A_q Aq,其对应的内容查询表示为 C q ∈ R D C_q ∈ R^D CqRD,位置查询表示为 P q ∈ R D P_q ∈ R^D PqRD,其中 D D D是解码器嵌入和位置查询的维度。

生成位置查询

  • 位置查询的生成:给定一个锚点 A q A_q Aq,位置查询 P q P_q Pq通过以下公式生成:
    P q = M L P ( P E ( A q ) ) P_q = MLP(PE(A_q)) Pq=MLP(PE(Aq))
    其中 P E PE PE表示从浮点数生成正弦嵌入的位置信息编码,MLP的参数在所有层中共享。
  • 位置编码的重载:由于 A q A_q Aq是四元数,作者在这里重载了 P E PE PE操作符:
    P E ( A q ) = P E ( x q , y q , w q , h q ) = C a t ( P E ( x q ) , P E ( y q ) , P E ( w q ) , P E ( h q ) ) PE(A_q) = PE(x_q, y_q, w_q, h_q) = Cat(PE(x_q), PE(y_q), PE(w_q), PE(h_q)) PE(Aq)=PE(xq,yq,wq,hq)=Cat(PE(xq),PE(yq),PE(wq),PE(hq))
    其中符号 C a t Cat Cat表示连接函数。

位置编码函数和MLP

  • 位置编码函数:位置编码函数 P E PE PE将一个浮点数映射到具有 D / 2 D/2 D/2维的向量: P E : R → R D / 2 PE: R → R^{D/2} PE:RRD/2
  • MLP函数:MLP函数将 2 D 2D 2D维向量投影到 D D D维空间: M L P : R 2 D → R D MLP: R^{2D} → R^D MLP:R2DRD。MLP模块有两个子模块,每个子模块由一个线性层和一个ReLU激活组成,并在第一个线性层中进行特征降维。

自注意力模块

  • 输入和输出:在自注意力模块中,查询( Q Q Q)、键( K K K)和值( V V V)都有相同的内容项,但查询和键包含额外的位置项:
    S e l f − A t t n : Q q = C q + P q , K q = C q + P q , V q = C q Self-Attn: Q_q = C_q + P_q, K_q = C_q + P_q, V_q = C_q SelfAttn:Qq=Cq+Pq,Kq=Cq+Pq,Vq=Cq
  • 功能:自注意力模块用于更新解码器嵌入。

跨注意力模块

  • 位置和内容信息连接:受 C o n d i t i o n a l   D E T R Conditional\ DETR Conditional DETR(Meng等人,2021)的启发,作者在跨注意力模块中将位置和内容信息一起连接为查询和键,以便解耦内容和位置对查询与特征相似性度量的贡献。
  • 位置嵌入的调整:为了重新调整位置嵌入,作者利用了条件空间查询( C o n d i t i o n a l   S p a t i a l   Q u e r y Conditional\ Spatial\ Query Conditional Spatial Query)。具体地,学习了一个MLP( M L P ( c s q ) : R D → R D MLP(csq): R^D → R^D MLP(csq):RDRD),以获得一个基于内容信息的尺度向量,并使用它对位置嵌入进行元素级乘法:
    C r o s s − A t t n : Q q = C a t ( C q , P E ( x q , y q ) ⋅ M L P ( c s q ) ( C q ) ) , K x , y = C a t ( F x , y , P E ( x , y ) ) , V x , y = F x , y Cross-Attn: Q_q = Cat(C_q, PE(x_q, y_q) \cdot MLP(csq)(C_q)), K_{x,y} = Cat(F_{x,y}, PE(x, y)), V_{x,y} = F_{x,y} CrossAttn:Qq=Cat(Cq,PE(xq,yq)MLP(csq)(Cq)),Kx,y=Cat(Fx,y,PE(x,y)),Vx,y=Fx,y
    其中 F x , y ∈ R D F_{x,y} ∈ R^D Fx,yRD是位置 ( x , y ) (x, y) (x,y)处的图像特征, ⋅ \cdot 表示元素级乘法。查询和键中的位置嵌入都基于 2 D 2D 2D坐标生成,使其与之前的工作(Meng等人,2021;Wang等人,2021)中相似位置的比较更加一致。

内容查询解析:

  1. 内容查询的角色
  • 语义信息:内容查询包含了目标对象的语义信息,描述了目标的特征和类别。这些信息有助于模型在图像中识别出不同类型的目标。
  • 与位置查询的结合:内容查询和位置查询在解码器中结合使用,使模型不仅能够识别目标的类别,还能确定目标的位置。
  1. 生成内容查询
    在DAB-DETR模型中,内容查询通常来自解码器嵌入。这些嵌入在模型训练过程中逐层更新,逐渐捕捉到目标对象的语义信息。

  2. 内容查询在注意力机制中的作用

  • 自注意力机制:在自注意力机制中,内容查询( C q C_q Cq)与位置查询( P q P_q Pq)一起用于生成查询向量( Q q Q_q Qq)和键向量( K q K_q Kq),从而计算注意力得分。
    Q q = C q + P q Q_q = C_q + P_q Qq=Cq+Pq
    K q = C q + P q K_q = C_q + P_q Kq=Cq+Pq
    V q = C q V_q = C_q Vq=Cq
  • 跨注意力机制:在跨注意力机制中,内容查询( C q C_q Cq)与位置查询( P E ( x q , y q ) PE(x_q, y_q) PE(xq,yq))结合后用于生成查询向量( Q q Q_q Qq),与图像特征进行对比,计算注意力得分并聚合值向量( V x , y V_{x,y} Vx,y)。
    Q q = C a t ( C q , P E ( x q , y q ) ⋅ M L P ( c s q ) ( C q ) ) Q_q = Cat(C_q, PE(x_q, y_q) \cdot MLP(csq)(C_q)) Qq=Cat(Cq,PE(xq,yq)MLP(csq)(Cq))
    K x , y = C a t ( F x , y , P E ( x , y ) ) K_{x,y} = Cat(F_{x,y}, PE(x, y)) Kx,y=Cat(Fx,y,PE(x,y))
    V x , y = F x , y V_{x,y} = F_{x,y} Vx,y=Fx,y
  1. 具体实现细节
    内容查询和位置查询在解码器中逐层更新,使得每一层的输出都能够更好地表示目标对象的实际位置和语义信息。通过这种逐层更新,模型能够逐步精确地定位目标对象并识别其类别。

自注意力机制和跨注意力机制总结(解析)

自注意力机制

  1. 捕捉全局关系

    • 自注意力机制的主要作用是捕捉输入序列中元素之间的全局关系。这不仅包括空间上的关系,还包括语义上的关系。通过这种机制,模型能够理解内容嵌入和锚框嵌入之间的复杂依赖关系。
  2. 增强内容嵌入

    • 通过自注意力机制,内容嵌入可以整合全局上下文信息,使得每个位置的嵌入不仅仅依赖于自身的特征,还考虑到其他位置的特征。这使得内容嵌入更加丰富和具有表达力。
  3. 空间和语义关系

    • 自注意力机制使内容嵌入( C q C_q Cq)能够整合全局上下文信息,捕捉到不同位置之间的关系。
    • 锚框位置编码( P q P_q Pq)与内容嵌入结合,使得每个查询向量( Q q Q_q Qq)包含了目标的空间位置信息和语义信息:
      Q q = C q + P q Q_q = C_q + P_q Qq=Cq+Pq
    • 通过自注意力机制,模型能够理解内容嵌入和锚框嵌入之间的空间和语义关系。这有助于模型知道目标在图像中的相对位置,以及相关目标的特征。

跨注意力机制

  1. 结合图像特征和位置嵌入

    • 跨注意力机制进一步结合图像特征和位置嵌入,使得查询向量(结合内容嵌入和位置嵌入)能够与图像中的实际特征进行匹配。
  2. 更准确的目标定位

    • 通过跨注意力机制,模型能够更准确地定位目标。这是因为查询向量不仅包含目标的语义信息,还结合了精确的位置编码,与图像特征进行对比后,能够得到更加准确的定位结果。
  3. 查询、键和值的生成

    • 查询(Q):结合自注意力机制输出的内容嵌入和位置嵌入,生成包含目标语义信息和空间位置信息的查询向量:
      Q q = C a t ( C q , P E ( x q , y q ) ⋅ M L P ( c s q ) ( C q ) ) Q_q = Cat(C_q, PE(x_q, y_q) \cdot MLP(csq)(C_q)) Qq=Cat(Cq,PE(xq,yq)MLP(csq)(Cq))
    • 键(K):结合图像特征和位置编码生成键向量:
      K x , y = C a t ( F x , y , P E ( x , y ) ) K_{x,y} = Cat(F_{x,y}, PE(x, y)) Kx,y=Cat(Fx,y,PE(x,y))
    • 值(V):值向量直接由图像特征组成:
      V x , y = F x , y V_{x,y} = F_{x,y} Vx,y=Fx,y
  4. 计算注意力得分和最终输出

    • 计算注意力得分:查询和键之间进行点积运算,计算每个位置之间的相似性或相关性:
      Attention Score ( Q , K ) = Q ⋅ K T \text{Attention Score}(Q, K) = Q \cdot K^T Attention Score(Q,K)=QKT
    • 归一化注意力得分:使用Softmax函数将注意力得分归一化,使其总和为1:
      Attention Weights = Softmax ( Q ⋅ K T d k ) \text{Attention Weights} = \text{Softmax}(\frac{Q \cdot K^T}{\sqrt{d_k}}) Attention Weights=Softmax(dk QKT)
    • 加权求和值:将归一化的注意力权重与对应的值向量 V V V相乘并求和,生成最终的输出特征:
      Attention Output = ∑ ( Attention Weights ⋅ V ) \text{Attention Output} = \sum (\text{Attention Weights} \cdot V) Attention Output=(Attention WeightsV)

总结

  • 自注意力机制

    • 目的是增强内容嵌入,使其能够捕捉全局上下文信息和空间关系。
    • 通过结合内容嵌入和锚框位置编码,模型能够理解目标的空间和语义关系。
  • 跨注意力机制

    • 进一步结合图像特征和位置嵌入,使查询向量和图像特征进行匹配,得到更准确的目标定位。
    • 通过计算查询向量和键向量之间的相似性,结合注意力权重和图像特征,最终得到更加准确的目标特征表示。

------------------------------------以上为“4.2 直接学习锚框”解读部分-------------------------------------------

4.3 锚框更新

将坐标作为查询进行学习使得可以逐层更新它们。相比之下,对于高维嵌入的查询(如 D E T R DETR DETR C o n d i t i o n a l   D E T R Conditional\ DETR Conditional DETR),很难逐层进行查询细化,因为不清楚如何将更新后的锚框转换回高维查询嵌入。

按照先前的做法(Zhu等人,2021;Wang等人,2021),我们在每层中更新锚点,并通过预测头预测相对位置 ( Δ x , Δ y , Δ w , Δ h ) (Δx, Δy, Δw, Δh) (Δx,Δy,Δw,Δh),如图5所示。请注意,不同层中的所有预测头共享相同的参数。
------------------------------------以下为“4.3 锚框更新”解读部分-------------------------------------------
详细解读 4.3 锚框更新:

概述

在4.3小节中,作者讨论了在DAB-DETR模型中如何逐层更新锚框。相对于直接更新高维嵌入的查询,逐层更新锚框具有一定的优势。

逐层更新锚框的优势

  • 逐层更新:将坐标作为查询进行学习,使得可以逐层更新它们。每一层解码器都会根据前一层的输出对锚框进行调整,使得锚框逐渐接近目标的真实位置。
  • 高维嵌入查询的难点:相比之下,对于高维嵌入的查询(如DETR和Conditional DETR),很难逐层进行查询细化,因为不清楚如何将更新后的锚框转换回高维查询嵌入。也就是说,高维嵌入的更新缺乏明确的几何解释。

锚框更新方法

按照先前的做法(Zhu等人,2021;Wang等人,2021),DAB-DETR在每一层中都对锚框进行更新,并通过预测头预测相对位置的变化量。这一过程如下:

  1. 初始锚框:模型在初始阶段生成一组锚框,这些锚框的坐标为 ( x , y , w , h ) (x, y, w, h) (x,y,w,h),其中 x x x y y y是中心坐标, w w w h h h是宽度和高度。

  2. 逐层更新

    • 每层的更新:在解码器的每一层,锚框根据前一层的输出进行更新。
    • 相对位置变化:通过预测头,模型预测相对位置变化量 ( Δ x , Δ y , Δ w , Δ h ) (Δx, Δy, Δw, Δh) (Δx,Δy,Δw,Δh)
    • 新锚框:新的锚框坐标为上一层锚框坐标加上预测的相对变化量。
  3. 共享参数

    • 共享预测头:不同层中的所有预测头共享相同的参数。这意味着所有层使用相同的预测头进行相对位置变化的预测,保持一致性和参数效率。

图示解读

  • 图5中的示意:图5展示了这一过程,每一层解码器中的锚框都根据预测的相对位置变化进行更新。通过这一逐层更新的过程,锚框逐渐收敛到目标的真实位置。

总结

  • 逐层更新锚框:通过将坐标作为查询,模型可以逐层更新锚框,使其逐渐接近目标的真实位置。
  • 相对位置变化:通过预测头,模型预测相对位置的变化量,并更新锚框的坐标。
  • 共享参数:不同层中的所有预测头共享相同的参数,确保一致性和参数效率。

这种逐层更新锚框的方法相对于直接更新高维嵌入查询更具几何解释性和可操作性,使得模型能够更准确地定位目标。

------------------------------------以上为“4.3 锚框更新”解读部分-------------------------------------------

4.4 宽度和高度调制的高斯核

传统的位置注意力图使用高斯状的先验,如图6左所示。但这种先验对于所有对象来说都是各向同性且固定大小的,忽略了对象的尺度信息。为了改进位置先验,我们建议在注意力图中注入尺度信息。

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

Attn ( ( x , y ) , ( x r e f , y r e f ) ) = P E ( x ) ⋅ P E ( x r e f ) + P E ( y ) ⋅ P E ( y r e f ) D \text{Attn}((x, y), (xref, yref)) = \frac{PE(x) \cdot PE(xref) + PE(y) \cdot PE(yref)}{\sqrt{D}} Attn((x,y),(xref,yref))=D PE(x)PE(xref)+PE(y)PE(yref)

其中 1 D \frac{1}{\sqrt{D}} D 1 用于按Vaswani等(2017)建议重新调整值。我们通过将相对锚点的宽度和高度分别从 x x x部分和 y y y部分除以来调节位置注意力图(在softmax之前),以平滑高斯先验,使其更好地与不同尺度的对象匹配:

ModulateAttn ( ( x , y ) , ( x r e f , y r e f ) ) = P E ( x ) ⋅ P E ( x r e f ) w q + P E ( y ) ⋅ P E ( y r e f ) h q \text{ModulateAttn}((x, y), (xref, yref)) = \frac{PE(x) \cdot PE(xref)}{w_q} + \frac{PE(y) \cdot PE(yref)}{h_q} ModulateAttn((x,y),(xref,yref))=wqPE(x)PE(xref)+hqPE(y)PE(yref)

其中 w q w_q wq h q h_q hq分别是锚点 A q A_q Aq的宽度和高度, w q , r e f w_q,ref wq,ref h q , r e f h_q,ref hq,ref是通过下式计算的参考宽度和高度:

w q , r e f , h q , r e f = σ ( M L P ( C q ) ) w_q,ref, h_q,ref = \sigma(MLP(C_q)) wq,ref,hq,ref=σ(MLP(Cq))

这种调制的位置注意力帮助我们提取不同宽度和高度的对象特征,图6展示了调制后的注意力的可视化结果。

在这里插入图片描述
------------------------------------以下为“图 6”解读部分-------------------------------------------
详细解读:

左图:H=1, W=1

  • 描述:这是一个各向同性的高斯核,宽度和高度都为1。
  • 效果:注意力集中在中心,周围逐渐减弱。这种情况下,注意力在所有方向上都是均匀的,没有特定的方向偏好。

中图:H=1, W=3

  • 描述:这是一个宽度大于高度的高斯核,宽度为3,高度为1。
  • 效果:注意力图在水平方向上被拉伸,表现为一个横向椭圆形的注意力分布。水平方向上的注意力范围更大,而垂直方向上的注意力集中在中心。

右图:H=3, W=1

  • 描述:这是一个高度大于宽度的高斯核,高度为3,宽度为1。
  • 效果:注意力图在垂直方向上被拉伸,表现为一个纵向椭圆形的注意力分布。垂直方向上的注意力范围更大,而水平方向上的注意力集中在中心。

位置注意力图的调制:

这些调制后的注意力图展示了在不同宽度和高度下,如何通过高斯核调制位置注意力图,使其更好地适应不同尺度的对象。具体来说:

  1. 各向同性高斯核(左图)

    • 适用于目标大小均匀的情况。
    • 注意力集中在中心,逐渐向外扩散,适用于不需要特定方向偏好的对象。
  2. 水平拉伸高斯核(中图)

    • 适用于宽度较大的目标。
    • 水平方向上的注意力范围更大,可以更好地捕捉到宽度较大的对象特征。
  3. 垂直拉伸高斯核(右图)

    • 适用于高度较大的目标。
    • 垂直方向上的注意力范围更大,可以更好地捕捉到高度较大的对象特征。

总结

图6展示了通过宽度和高度调制位置注意力图的方法,使模型能够更好地适应不同尺度的对象。这种调制能够根据目标的不同形状和大小,动态调整注意力分布,提高模型对各种尺度目标的检测能力。

------------------------------------以上为“图 6”解读部分-------------------------------------------
在这里插入图片描述
------------------------------------以下为“图 7”解读部分-------------------------------------------
详细解读

左图:Temperature=1

  • 描述:温度参数设为1。
  • 效果:注意力图高度集中在中心,周围区域的注意力迅速减弱。这个温度值导致了一个非常尖锐的高斯分布,注意力集中在很小的区域内。

中图:Temperature=10

  • 描述:温度参数设为10。
  • 效果:注意力图在中心区域集中,但相比于温度为1的情况,注意力扩散得更广。较高的温度值使注意力图更加平滑,中心区域之外的注意力逐渐减少,但比温度为1时要缓慢得多。

右图:Temperature=10000

  • 描述:温度参数设为10000。
  • 效果:注意力图非常平滑,注意力在整个区域内均匀分布,中心的集中度不明显。这个极高的温度值导致了一个几乎均匀的分布,整个注意力图都被拉平了。

温度对注意力图的影响

温度参数在注意力机制中起到了控制注意力分布集中度的作用。具体来说:

  1. 低温度(如Temperature=1)

    • 注意力高度集中在一个小区域内。
    • 适用于需要非常精确的局部特征提取的场景。
  2. 中等温度(如Temperature=10)

    • 注意力分布较为平滑,但仍然保持中心区域的集中。
    • 适用于需要平衡局部特征和全局信息提取的场景。
  3. 高温度(如Temperature=10000)

    • 注意力分布非常均匀,中心的集中度不明显。
    • 适用于需要广泛特征提取的场景,但可能会丧失一些精确性。

总结

图7展示了温度参数对位置注意力图的显著影响。通过调节温度参数,可以控制注意力分布的集中度,从而适应不同的特征提取需求。低温度适用于精确的局部特征提取,中等温度平衡了局部和全局信息,而高温度则适用于广泛的特征提取。

------------------------------------以上为“图 7”解读部分-------------------------------------------

-----------------------------以下为“4.4 宽度和高度调制的高斯核”解读部分------------------------------------
详细解读 4.4 宽度和高度调制的高斯核

传统高斯核的问题

  • 传统高斯核:传统的位置注意力图使用高斯状的先验,如图6左所示。这种先验对于所有对象来说都是各向同性且固定大小的。
  • 问题:这种各向同性的高斯先验忽略了对象的尺度信息,对不同大小的对象不能很好地匹配,影响检测精度。

改进的位置先验

为了改进位置先验,作者提出在注意力图中注入尺度信息。具体做法如下:

  1. 传统注意力计算
    • 在原始位置注意力图中,查询到键的相似性计算为两个坐标编码点积之和:
      Attn ( ( x , y ) , ( x r e f , y r e f ) ) = P E ( x ) ⋅ P E ( x r e f ) + P E ( y ) ⋅ P E ( y r e f ) D \text{Attn}((x, y), (xref, yref)) = \frac{PE(x) \cdot PE(xref) + PE(y) \cdot PE(yref)}{\sqrt{D}} Attn((x,y),(xref,yref))=D PE(x)PE(xref)+PE(y)PE(yref)

    • 其中 1 D \frac{1}{\sqrt{D}} D 1 用于按Vaswani等(2017)的建议重新调整值。

    • 原理:在原始位置注意力图中,计算查询点和键点的相似性,通过两个坐标编码的点积之和来实现。

    • 公式解释:公式中 P E ( x ) PE(x) PE(x) P E ( y ) PE(y) PE(y)表示位置 x x x y y y的编码, P E ( x r e f ) PE(xref) PE(xref) P E ( y r e f ) PE(yref) PE(yref)表示参考点 x x x y y y的编码。它们的点积之和表示查询点和键点之间的相似性。

    • 缩放因子 1 D \frac{1}{\sqrt{D}} D 1是一个缩放因子,用于按Vaswani等(2017)的建议重新调整值,目的是使点积结果在不同维度下具有相同的尺度。

  • 位置和参考点解释:

在传统注意力计算中,位置(Position)和参考点(Reference Point)是用于计算注意力权重的重要组成部分。具体解释如下:

(1) 位置(Position)

  • 定义:位置指的是图像中特定点的坐标,例如 ( x , y ) (x, y) (x,y)
  • 作用:在注意力机制中,位置用于表示查询点(Query)的实际坐标。这些坐标会通过位置编码(Positional Encoding, PE)进行处理,生成位置嵌入。
  • 例子:假设在一个图像中,位置可以是一个像素的坐标 ( x , y ) (x, y) (x,y),其中 x x x y y y分别是该像素在图像中的横向和纵向位置。

(2)参考点(Reference Point)

  • 定义参考点指的是用于与查询点进行比较的键(Key)点的坐标,例如 ( x r e f , y r e f ) (xref, yref) (xref,yref)
  • 作用:在注意力机制中,参考点用于表示键点的实际坐标,这些坐标也会通过位置编码进行处理,生成参考点的嵌入。
  • 例子:在一个图像中,参考点可以是特征图中另一个像素的坐标 ( x r e f , y r e f ) (xref, yref) (xref,yref),其中 x r e f xref xref y r e f yref yref分别是该像素在图像中的横向和纵向位置。
  1. 引入尺度信息

    • 通过将相对锚点的宽度和高度分别从 x x x部分和 y y y部分除来调节位置注意力图(在softmax之前),以平滑高斯先验,使其更好地与不同尺度的对象匹配
      ModulateAttn ( ( x , y ) , ( x r e f , y r e f ) ) = P E ( x ) ⋅ P E ( x r e f ) w q + P E ( y ) ⋅ P E ( y r e f ) h q \text{ModulateAttn}((x, y), (xref, yref)) = \frac{PE(x) \cdot PE(xref)}{w_q} + \frac{PE(y) \cdot PE(yref)}{h_q} ModulateAttn((x,y),(xref,yref))=wqPE(x)PE(xref)+hqPE(y)PE(yref)
    • 其中 w q w_q wq h q h_q hq分别是锚点 A q A_q Aq的宽度和高度。
  2. 参考宽度和高度

    • 参考宽度和高度通过内容嵌入 C q C_q Cq计算得到:
      w q , r e f , h q , r e f = σ ( M L P ( C q ) ) w_q,ref, h_q,ref = \sigma(MLP(C_q)) wq,ref,hq,ref=σ(MLP(Cq))
    • 这里, σ \sigma σ是激活函数, M L P MLP MLP是多层感知机,用于将内容嵌入转换为参考宽度和高度。

作用与效果

  • 调制位置注意力:这种调制的位置注意力帮助我们提取不同宽度和高度的对象特征,更好地适应不同尺度的对象,提高检测性能。
  • 可视化结果:图6展示了调制后的注意力的可视化结果,说明了这种方法在不同尺度对象上的效果。

总结

  • 问题:传统高斯核位置注意力图对所有对象来说都是各向同性且固定大小的,忽略了对象的尺度信息。
  • 解决方案:通过在注意力图中注入尺度信息,调制位置注意力图,使其更好地匹配不同尺度的对象。
  • 具体方法
    • 修改原始位置注意力图的计算方式,引入宽度和高度的调制。
    • 通过内容嵌入计算参考宽度和高度,进一步调整位置注意力。
  • 效果:调制位置注意力能够帮助提取不同尺度对象的特征,提高检测性能。

-----------------------------以上为“4.4 宽度和高度调制的高斯核”解读部分------------------------------------

4.5 温度调节

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

P E ( x ) 2 i = sin ⁡ ( x T 2 i / D ) , P E ( x ) 2 i + 1 = cos ⁡ ( x T 2 i / D ) PE(x)_{2i} = \sin\left(\frac{x}{T^{2i/D}}\right), PE(x)_{2i+1} = \cos\left(\frac{x}{T^{2i/D}}\right) PE(x)2i=sin(T2i/Dx),PE(x)2i+1=cos(T2i/Dx)

其中 T T T是手动设计的温度, 2 i 2i 2i 2 i + 1 2i+1 2i+1分别表示编码向量中的索引。温度 T T T在式(8)中影响位置先验的大小,如图7所示。较大的 T T T会导致更平坦的注意力图,反之亦然。请注意,温度 T T T在(Vaswani等,2017)中被硬编码为 10000 10000 10000,用于自然语言处理,其中 x x x的值是表示每个单词在句子中位置的整数。然而,在 D E T R DETR DETR中, x x x的值是介于 0 0 0 1 1 1之间的浮点数,表示边界框的坐标。因此,对于视觉任务,急需不同的温度。在这项工作中,我们经验性地选择 T = 20 T=20 T=20用于我们所有的模型。

----------------------------------以下为“4.5 温度调节”解读部分-----------------------------------------
详细解读 4.5 温度调节:

概述

在4.5小节中,作者讨论了在位置编码中使用的温度调节(Temperature Scaling)的作用。温度参数 T T T影响了正弦函数位置编码的输出,从而改变注意力图的分布特性。

位置编码的定义

位置编码(Positional Encoding)使用正弦和余弦函数来生成。其具体定义如下:

  • 正弦函数编码
    P E ( x ) 2 i = sin ⁡ ( x T 2 i / D ) PE(x)_{2i} = \sin\left(\frac{x}{T^{2i/D}}\right) PE(x)2i=sin(T2i/Dx)
  • 余弦函数编码
    P E ( x ) 2 i + 1 = cos ⁡ ( x T 2 i / D ) PE(x)_{2i+1} = \cos\left(\frac{x}{T^{2i/D}}\right) PE(x)2i+1=cos(T2i/Dx)

其中:

  • T T T 是手动设计的温度参数。
  • 2 i 2i 2i 2 i + 1 2i+1 2i+1 分别表示编码向量中的索引。
  • x x x 是位置的输入值。
  • D D D 是编码向量的维度。

温度 T T T的影响

温度 T T T对位置编码和注意力图的影响如下:

  1. 编码函数的参数化

    • 温度 T T T影响了正弦和余弦函数的频率,使位置编码具有不同的尺度特性。
  2. 注意力图的平坦度

    • 较大的 T T T:导致更平坦的注意力图,注意力分布更加均匀。
    • 较小的 T T T:导致更集中的注意力图,注意力更加集中在某些区域。
  3. 图7的展示

    • 图7展示了不同温度下的位置注意力图。可以看到,较大的 T T T使注意力图更平坦,较小的 T T T使注意力图更集中。

应用背景

  1. 自然语言处理中的温度设定

    • 在Vaswani等(2017)的工作中,温度 T T T被硬编码为 10000 10000 10000,用于自然语言处理(NLP)任务。在这种情况下, x x x的值是表示每个单词在句子中位置的整数。
  2. 视觉任务中的温度调整

    • 在DETR中, x x x的值是介于 0 0 0 1 1 1之间的浮点数,表示边界框的坐标。这种情况下,使用与NLP相同的温度值不合适,需要调整以适应视觉任务。
    • 在本文中,作者经验性地选择了 T = 20 T=20 T=20用于所有模型,认为这个值更适合视觉任务

总结

  • 位置编码:通过正弦和余弦函数生成,受温度参数 T T T影响。
  • 温度的作用:调节位置编码的输出频率,进而影响注意力图的平坦度。
  • 应用差异:在NLP任务中, T T T设为 10000 10000 10000,而在视觉任务中,作者发现 T = 20 T=20 T=20更适合。

----------------------------------以上为“4.5 温度调节”解读部分-----------------------------------------

5 实验

我们在附录A中提供了训练细节。

5.1 主要结果

表2展示了我们在COCO 2017验证集上的主要结果。我们将提出的DAB-DETR与DETR(Carion等人,2020)、Faster RCNN(Ren等人,2017)、Anchor DETR(Wang等人,2021)、SMCA(Gao等人,2021)、Deformable DETR(Zhu等人,2021)、TSP(Sun等人,2020)和Conditional DETR(Meng等人,2021)进行了比较。我们展示了我们模型的两种变体:标准模型和标有上标的模型,这些模型具有3个模式嵌入(Wang等人,2021)。我们的标准模型大幅超过了Conditional DETR。我们注意到我们的模型引入了少量的GFLOPs增加。GFLOPs可能因计算脚本而异,我们使用表2中作者报告的结果。实际上,我们的测试中发现,基于我们的GFLOPs计算脚本,我们的标准模型的GFLOPs几乎与相应的Conditional DETR模型相同,在相同设置下,我们的模型仍然优于之前的工作。当使用模式嵌入时,我们的DAB-DETR在所有四个骨干网络上大幅超过了之前的DETR类方法,甚至优于多尺度架构。这验证了我们分析的正确性和我们设计的有效性。

5.2 消融实验

表3展示了我们模型中每个组件的有效性。我们发现我们提出的所有模块对我们的最终结果都有显著贡献。锚框的形式使性能从44.0%的AP提高到45.0%的AP,相比于锚点形式(比较表3中的第3行和第4行),锚框更新引入了1.7%的AP提升(比较表1中的第1行和第2行),这证明了动态锚框设计的有效性。

在移除调制的注意力和温度调节后,模型性能分别下降到45.0%(比较表1中的第1行和第3行)和44.4%(比较表1中的第1行和第5行)。因此,细粒度的注意力位置调节对提高检测性能至关重要。

在这里插入图片描述
图8:DETR类模型的比较。

为简洁起见,我们只展示了Transformer解码器的两层,并省略了FFN块。我们用紫色标记了有差异的模块,并用棕色标记了学习到的高维查询。DAB-DETR (c)是我们论文中提出的模型,而DAB-Deformable-DETR (f) 是在Deformable DETR基础上修改的变体,加入了我们的动态锚框。之前的所有模型 (a, b, d, e) 都利用高维查询(棕色阴影部分)将位置信息传递给每一层,这些位置信息在语义上是模糊的,并且不会在每一层更新。相比之下,DAB-DETR (c)直接使用动态更新的锚框来提供参考查询点 (x, y) 和参考锚大小 (w, h),以改进交叉注意力计算。DAB-Deformable-DETR (f) 也使用动态更新的锚框来构建其查询。

在这里插入图片描述

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-16 05:38:02       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-16 05:38:02       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-16 05:38:02       58 阅读
  4. Python语言-面向对象

    2024-07-16 05:38:02       69 阅读

热门阅读

  1. C++面试

    C++面试

    2024-07-16 05:38:02      21 阅读
  2. 【Flask项目】文件分享系统(一)

    2024-07-16 05:38:02       29 阅读
  3. Barabási–Albert模型详解与Python代码示例

    2024-07-16 05:38:02       27 阅读
  4. Android12 禁用adb

    2024-07-16 05:38:02       23 阅读
  5. 深度学习多任务学习笔记

    2024-07-16 05:38:02       25 阅读
  6. [C/C++入门][变量和运算]8、鸡兔同笼

    2024-07-16 05:38:02       20 阅读
  7. 在 Spring Boot 中使用 WebSocket 构建在线日志系统

    2024-07-16 05:38:02       20 阅读
  8. Eureka服务发现深度配置:实例ID与租约续期策略

    2024-07-16 05:38:02       27 阅读
  9. Android原生输入法输入数字

    2024-07-16 05:38:02       23 阅读
  10. 【面试题】手撕缓存LRU

    2024-07-16 05:38:02       29 阅读
  11. RocketMQ消费者依赖的业务Bean还未初始化完成

    2024-07-16 05:38:02       22 阅读
  12. 大数据如何推动工业数字化发展

    2024-07-16 05:38:02       23 阅读
  13. 【AI绘画教程】什么是Huggingface

    2024-07-16 05:38:02       26 阅读