DEFR收敛速度太慢,如此高的训练成本【DERT在COCO训练集上要训练500个epoch才能收敛,相比之下Faster R-CNN只要12~36个epoch就可以收敛】是因为在匹配query与特征映射空间中的开销,也就是对应的交叉注意力(cross-attention)的计算过程。这个过程是将一个随机赋值的Object query训练成一个可以从特征中通过加权突出待检测目标的query,这个过程需要不断训练。
该过程如下图所示:
交叉注意机制的计算公式如下:
从实现效果的角度来看,交叉注意力的计算也可以解释为“匹配和特征蒸馏"的过程。 如公式所示,交叉注意力的实现包含了两部分含义:
基于上述观察,本文提出了对这个匹配过程进行优化!
本文提出的语义对齐匹配方法,简称为SAM-DERT。旨在保持DERT的精度的同时,加速DERT。 所以首先文章开篇分析了当前DERT中的交叉注意力机制中存在的问题,并以此为突破口,设计了一个即插即用的头——SAM-DERT,嵌入交叉注意力模块中,为Object query与Encoded Feature有关的区域匹配之前,加入一个强有力的关于目标的先验信息,从而加速”匹配"过程。
由上图可知,本文提出的这个即插即用的模块在DERT中的应用咋如图位置,在交叉注意力模块之前。
整个语义对齐模块的实现如上图。一共可以分为三个部分:语义对齐的匹配、显著点特征的匹配、信息损失的补偿。
所谓“语义对齐”,就是将Object query和Encoded Feature映射到同一个Embedding空间。 原始DERT中在Object query的初始化阶段是将它随机映射到一个特征空间,所以在交叉注意力机制中就需要对Encoded Feature所有空间位置进行匹配。故现在的思路就是,一开始就给一些先验知识给Object query,使得Object query和Encoded Feature在相同的嵌入空间,以提升效率。
实现:
这一部分操作是为了给Object query一个强先验知识,使其的权重关注到语义相似区域中了。因为重采样操作中没有任何映射操作会影响嵌入空间(Embedding space),所以生成Object query Q n e w Q^{new} Qnew与Encoded Feature F F F是在同一嵌入空间。
其实这一部分完成的任务就是从区域级别特征
F
R
F_R
FR中重采样出Object query的值。但是简单的average-pooling或max-pooling表达力不够。受到多头注意力机制的启发,它在DERT中扮演了不可或缺的角色,因为多头注意力机制中的多个head的作用就是关注图片特征的不同方面,因此增强模型的表达力。
实现:
到这一步,Semantics Aligner已经生成了新的与Encoded特征Object query。但是因为特征提取的过程是一个信息损失压缩的过程,所以这一步就用上一步传递来的query
Q
Q
Q生成一个权重系数把自己再加进去,达到一个信息补偿的效果,说白了就是残差结构。
实现:
其中
W
R
W
1
W_{RW1}
WRW1、
W
R
W
2
W_{RW2}
WRW2分别表示线性映射的权重系数(可训练)。