写在前面
之前关于Deformable DETR的博客最后提到虽然两阶段的Deformable DETR在第一阶段得到了region proposal及其坐标信息,但只是将object query替换为了region proposal的位置编码,仍然保持了256维的向量形式。
DAB-DETR则直接将decoder中object query建模成了anchor box4维坐标的形式。
作者是如何想到用anchor box坐标的形式建模query的呢?
作者首先分析了交叉注意力权重的计算机制,引出对query作用的思考;然后进一步分析了query位置部分(positional part,即object query)的作用是为了在计算交叉注意力权重时提供空间上的限制;既然是提供空间上的限制,那用anchor坐标建模object query利用中心点和高宽提供空间限制更加直观。如此一来,想法出现!
接下来结合图例分析交叉注意力权重的计算机制:
decoder中交叉注意力中的query由两部分组成:
- 内容部分(content part,即Decoder Embeddings);
- 位置部分(positional part,即Learnable Queries,也叫object query)。
key也由两部分组成:
- 内容部分(encoder输出的特征图,Image Features)
- 和位置部分(Positional Encodings,位置编码)。
交叉注意力权重通过比较一个query与一组key计算得到,query的作用可以看作是同时考虑内容和位置信息,基于query与特征间的相似性从特征图中提取特征(pool feature)。其中内容相似性用于提取语义相关的特征,位置相似性为在query周围提取特征时提供位置限制。
然后作者就提出了如下图所示的建模方式:
现在看不懂不要紧,这里我们只需要知道之前的Learnable Queries被Learnable Anchors代替,其中anchor中心位置为特征提取提供位置先验,宽和高
用于调制注意力权重使其适应anchor的大小。
文中提到这种query建模方式的好处是:
- 利用显示的位置先验信息,提高query与图像特征间的相似性,同时query还能逐层地进行迭代优化;
- 缓解DETR收敛慢的问题;
- 可以使用高宽信息调制位置注意力权重。
对于第二点,为什么位置先验可以加速训练,作者用了单独的一个章节进行分析和说明。
一、为什么位置先验可以加速训练
作者首先定位了DETR收敛速度慢的罪魁祸首可能是Learnable queries,然后分析了两个可能的原因,最终定位了到了learnable queries作为空间限制有一些不好的特性(关注了多个区域、没有区分性的注意力权重等)。通过将quer