Background

可变形注意力机制与Deformable DETR

919
4 分钟阅读

标准注意力

Query (Q)表示当前需要查询的信息,可理解为想要获取的信息
Key (K)表示输入元素的特征表示,可理解为内容的“主题”,用于与 Query 匹配
Value (V)表示输入元素的实际内容,可理解为通过对应 Key 获取的结果。

所谓注意力机制,即通过计算 Query 与所有 Key 的相似度(相关性),得到注意力权重(经 Softmax 归一化), 再用这些权重对 Value 进行加权求和,最终输出一个聚焦于关键信息的上下文向量。

标准注意力(缩放点积注意力 Scaled Dot-Product Attention)的计算公式如下:

Attention(Q,K,V)=Softmax(QKTdk)V\text{Attention}(Q, K, V) = \text{Softmax}\left(\frac{Q K^T}{\sqrt{d_k}}\right) V

其中,dkd_kKey 向量的维度,缩放因子 dk\sqrt{d_k} 能保持数值稳定。

可变形注意力(Deformable Attention)

在标准注意力中,Query 会与所有 Key 进行匹配,这在处理高分辨率输入时计算量巨大,且可能引入大量冗余信息。 为了解决这个问题,可变形注意力机制引入了“可变形采样点”的概念。具体来说,可变形注意力机制允许每个 Query 只关注输入特征图中的一小部分位置,这些位置是通过学习得到的偏移量动态确定的。这样,每个 Query 只与少量的 Key 进行交互,从而大幅降低计算复杂度。

对于每个 Query,可变形注意力机制在每个 head 中选择 KK 个采样点,这些采样点的位置由学习得到的偏移量决定。然后,计算这些采样点对应的 KeyValue,并进行加权求和,得到最终的输出。 可变形注意力的计算公式如下:

DeformableAttention(Q,K,V)=k=1KAkV(pk+Δpk)\text{DeformableAttention}(Q, K, V) = \sum_{k=1}^{K} A_k \cdot V(p_k + \Delta p_k)

其中,pkp_k 是第 kk 个采样点的位置,Δpk\Delta p_k 是学习得到的偏移量,AkA_k 是对应采样点的注意力权重。 通过公式可以看出,标准注意力是通过 Query 与所有 Key 的点积计算注意力权重,而可变形注意力则是通过学习不同采样点的权重 AkA_k 来聚焦于输入特征图的关键位置。可变形注意力完全绕过了 Key 的计算,通过MLP(输入为采样位置的位置编码)直接预测采样点的偏移量和注意力权重,从而显著降低了计算复杂度。实际上,Deformable DETR的官方实现中,MLP没有非线性激活函数,也就是一个线性层。

Deformable DETR

在 Deformable DETR 中,可变形注意力机制被用来替代标准的多头自注意力机制,从而提高了模型在处理高分辨率图像时的效率和效果。在 encoder 部分,Deformable DETR 使用可变形注意力来聚焦于输入图像的关键区域,并大幅降低计算复杂度。在 decoder 部分,自注意力机制依然采用标准的多头自注意力机制,因为 decoder 处理的是较少的 object queries,计算量相对较小,而交叉注意力则采用可变形注意力机制,以高效地从 encoder 输出的特征图中提取相关信息。

参考资料

可变形注意力机制与Deformable DETR
/blog/26022308
作者
发布于
2026/1/27
许可协议
CC BY-NC-SA 4.0