可变形注意力机制与Deformable DETR
标准注意力
| Query (Q) | 表示当前需要查询的信息,可理解为想要获取的信息 |
| Key (K) | 表示输入元素的特征表示,可理解为内容的“主题”,用于与 Query 匹配 |
| Value (V) | 表示输入元素的实际内容,可理解为通过对应 Key 获取的结果。 |
所谓注意力机制,即通过计算 Query 与所有 Key 的相似度(相关性),得到注意力权重(经 Softmax 归一化), 再用这些权重对 Value 进行加权求和,最终输出一个聚焦于关键信息的上下文向量。
标准注意力(缩放点积注意力 Scaled Dot-Product Attention)的计算公式如下:
其中, 是 Key 向量的维度,缩放因子 能保持数值稳定。
可变形注意力(Deformable Attention)
在标准注意力中,Query 会与所有 Key 进行匹配,这在处理高分辨率输入时计算量巨大,且可能引入大量冗余信息。 为了解决这个问题,可变形注意力机制引入了“可变形采样点”的概念。具体来说,可变形注意力机制允许每个 Query 只关注输入特征图中的一小部分位置,这些位置是通过学习得到的偏移量动态确定的。这样,每个 Query 只与少量的 Key 进行交互,从而大幅降低计算复杂度。
对于每个 Query,可变形注意力机制在每个 head 中选择 个采样点,这些采样点的位置由学习得到的偏移量决定。然后,计算这些采样点对应的 Key 和 Value,并进行加权求和,得到最终的输出。 可变形注意力的计算公式如下:
其中, 是第 个采样点的位置, 是学习得到的偏移量, 是对应采样点的注意力权重。 通过公式可以看出,标准注意力是通过 Query 与所有 Key 的点积计算注意力权重,而可变形注意力则是通过学习不同采样点的权重 来聚焦于输入特征图的关键位置。可变形注意力完全绕过了 Key 的计算,通过MLP(输入为采样位置的位置编码)直接预测采样点的偏移量和注意力权重,从而显著降低了计算复杂度。实际上,Deformable DETR的官方实现中,MLP没有非线性激活函数,也就是一个线性层。
Deformable DETR
在 Deformable DETR 中,可变形注意力机制被用来替代标准的多头自注意力机制,从而提高了模型在处理高分辨率图像时的效率和效果。在 encoder 部分,Deformable DETR 使用可变形注意力来聚焦于输入图像的关键区域,并大幅降低计算复杂度。在 decoder 部分,自注意力机制依然采用标准的多头自注意力机制,因为 decoder 处理的是较少的 object queries,计算量相对较小,而交叉注意力则采用可变形注意力机制,以高效地从 encoder 输出的特征图中提取相关信息。
