Anchor DETR

date
Jul 25, 2022
Last edited time
Mar 27, 2023 08:49 AM
status
Published
slug
AnchorDETR
tags
DL
CV
summary
type
Post
Field
Plat

Abstract

目前DETR模型为目标检测任务提供了一个新的模型范式。它使用一组可学习到的 object query 来推理目标和全局图像上下文之间的关系,以输出最终的预测集。然而,学习到的目标查询的可解释性较差。它没有显式的意义,每个查询也没有显式对应的某个检测位置、或者检测目标。由于每个对象查询的预测槽没有特定的模式,因此很难优化。
为了解决这些问题,在我们的设计中,物体查询是基于锚点的,这种方式广泛用于基于 CNN 的检测器中。所以每个对象查询都集中在锚点附近的对象上。此外,我们的查询设计可以在一个位置预测多个对象。此外,我们设计了一个注意力变体,它可以降低内存成本,同时实现与 DETR 中的标准注意力相似或更好的性能。由于查询设计和注意力变体,我们称为 Anchor DETR 的提议检测器可以实现更好的性能,并且比 DETR 运行得更快,训练所需 epoch 少 10 倍。

Introduce

DETR中每个对象查询的预测都与不同的区域有关,每个对象查询将负责一个非常大的区域。这种位置上的模糊性,即对象查询并不集中在某一特定区域,使得它很难被优化。
每一个彩色的点代表一个预测的归一化中心位置。不同颜色的点代表不同大小的预测框。
每一个彩色的点代表一个预测的归一化中心位置。不同颜色的点代表不同大小的预测框。
回顾基于CNN的检测器,anchor与位置高度相关,包含可解释的意义。受此启发,作者提出了一种基于锚点(anchor points)的查询设计,即将anchor points编码为目标查询 。查询是锚点坐标的编码,因此每个目标查询都具有显式的物理意义。
但是,这个解决方案还有一个限制:多个目标可能出现在一个位置。作者通过向每个锚点添加多个模式(multiple patterns,即一个锚点可以检测多个目标)来改进目标查询设计,以便每个锚点都可以预测多个目标。
除了查询设计之外,作者还设计了一个attention变体——行列解耦注意(Row-Column Decouple Attention,RCDA) 。它将二维key特征解耦为一维行特征和一维列特征,然后依次进行行注意和列注意。RCDA可以降低计算成本,同时实现与DETR中的标准注意力相似甚至更好的性能。

Method

notion image

Anchor Points

在基于Transformer的检测器中,锚点可以是可学习的点、统一的网格点或其他手工设置的点。在本文中,作者采用了两种类型的锚点。一个是网格锚点 ,另一个是可学习的锚点 。如下图(a)所示,网格锚点固定为图像中的均匀网格点。可学习的锚点以0到1的均匀分布随机初始化,并作为学习参数进行更新,如下图(b)所示。
notion image

Attention Formulation

DETR中的 attention可以表示如下:
其中, 下标 为特征, 下标 为位置编码.
  • Self Attention
    • 在 Self-Attention 中, , 是上一个解码器的输出. 或者在位于第一个解码器的情况下, 为一组固定的常量或者为可以学习的参数.
      , 在 DETR 中为可以学习的参数 .
  • Cross Attention
    • 为 Self-Attention 的输出, 为最后一层编码器的输出.
      与 Self-Attention 中的一致, 是编码器中 所对应的位置编码.
, Anchor Points 的数量, 为模式 pattern 的数量.

Anchor Points to Object Query

解码器中的 为目标查询向量,它们负责区分不同的目标。但是上面式子中的目标查询 可解释性比较差,因为每个查询对应的目标都没有显式的约束。
在本文中,作者提出基于锚点 的查询, 代表 个处于 位置的点。然后,基于锚点的目标查询 可以表示为:
在本片文章中, 使用了两层的MLP来获得位置编码 .
具体的代码如下:

Multiple Predictions for Each Anchor Point

对于初始的查询向量 查询中每个 都有一个模式(pattern)。为了预测每个锚点的多个目标,可以合并一个锚点中的多个模式。因此,一个具有 个模式的集合  可以表示为:
在实验中, 通常不会太大,因为同一个锚点位置通常不会有非常多的目标。最后, 我们得到 , 与位置编码 相加后得到最后的 .
由于这种查询设计,Anchor DETR检测器具有可解释的查询,在训练epoch数少10倍的情况下,依旧比原始DETR获得更好的性能。

Row-Column Decoupled Attention

在本文中,作者还提出了行列解耦注意(Row-Column Decoupled Attention,RCDA),它不仅可以降低计算负担,而且还可以获得比DETR中的标准注意力相似或更好的性能。RCDA的主要思想是将key特征解耦为横向特征和纵向特征(即用一维的gobal pooling消除纵向或者横向的维度)。RCDA可以表述为:
其中:
运算分别沿着宽度维度和高度维度进行加权和。代表一维的位置编码。
作者使用 RCDA 替代了编码器以及解码器中 Cross-Attention 的多头注意力机制.
的示例代码如下:

Experiment

notion image
notion image
notion image
notion image
notion image
notion image

Conclusion

在本文中,作者提出了一种基于Transformer的检测器——Anchor DETR。Anchor DETR中有基于anchor point(锚点)的查询设计,因此每个查询只预测锚点附近的目标,因此更容易优化。此外,作者在每个锚点上加入了多个模式来解决一个区域中可能多个目标的问题。为了降低计算的复杂度,作者还提出了一种注意变体,称为行列解耦注意(Row-Column Decoupled Attention)。行列解耦注意可以降低计算成本,同时实现与DETR中的标准注意力相似甚至更好的性能。与DETR相比,Anchor DETR可以在减少10倍训练epoch数的情况下,获得更好的性能。

© Lazurite 2021 - 2024