核心思想
本文提出一种融合邻域一致性的Transfomer结构来实现特征点的匹配(NCTR)。整个的实现流程和思想与SuperGlue相似,改进点在于考虑到了邻域一致性。邻域一致性在许多的传统图像匹配和图匹配任务中都有应用,他基于一个很重要的假设,就是对于一对匹配点,其邻域内的其他点也大概是匹配的,至少是相似程度很高的。而在SuperGlue中注意力机制是面向所有的特征点进行信息聚合,而没有考虑到局部邻域的一致性约束。为弥补上述缺陷,作者提出了NCTR
实现过程
首先,与SuperGlue相同输入的是源图
A
A
A和目标图
B
B
B中关键点的视觉特征
d
i
A
,
d
j
B
d_i^A,d_j^B
diA,djB及坐标特征
p
i
A
,
p
j
B
p_i^A,p_j^B
piA,pjB,其中坐标特征
p
i
p_i
pi包含关键点的二维坐标
(
x
i
,
y
i
)
(x_i,y_i)
(xi,yi)和置信度得分
c
i
c_i
ci,上述特征均有特征提取和描述器提供,如SuperPoint。位置特征经过一个编码器后与视觉特征相加构成初始的输入特征
x
i
(
0
)
x_i^{(0)}
xi(0),编码器由多层感知机构成。
然后,要基于注意力机制进行特征聚合。注意力机制包含自注意力(self-attention)和交叉注意力(cross-attention),给定第
l
l
l层网络的两个输入
x
s
(
l
)
x_s^{(l)}
xs(l)和
x
t
(
l
)
x_t^{(l)}
xt(l),对于自注意力层而言,两个输入是来自于同一个图(源图或目标图)的特征;而对于交叉注意力层而言,两个输入分别来自两个图的特征。自注意力层和交叉注意力层是交替进行的,这模拟了人类在进行匹配时会相互比对的过程。
下面简述一下注意力机制的计算过程,这个是由ViT实现的。输入的特征
x
s
(
l
)
x_s^{(l)}
xs(l)和
x
t
(
l
)
x_t^{(l)}
xt(l)(对于自注意力层两者相同)经过一个LayerNorm层分别被线性映射到
Q
(
l
)
,
K
(
l
)
,
V
(
l
)
Q^{(l)},K^{(l)},V^{(l)}
Q(l),K(l),V(l),其中
x
s
(
l
)
→
Q
(
l
)
x_s^{(l)}\rightarrow Q^{(l)}
xs(l)→Q(l),而
x
t
(
l
)
→
K
(
l
)
,
V
(
l
)
x_t^{(l)}\rightarrow K^{(l)}, V^{(l)}
xt(l)→K(l),V(l)。我们称
Q
(
l
)
,
K
(
l
)
,
V
(
l
)
Q^{(l)},K^{(l)},V^{(l)}
Q(l),K(l),V(l)分别为查询向量、键向量和值向量,他们经过下式可以得到注意力计算方法
注意力可以理解为利用
Q
K
T
QK^T
QKT计算向量之间的相似性作为权重对
V
V
V向量进行加权求和,一组
Q
(
l
)
,
K
(
l
)
,
V
(
l
)
Q^{(l)},K^{(l)},V^{(l)}
Q(l),K(l),V(l)向量得到一个注意力结果,我们称之为一个头
H
e
a
d
\mathbf{Head}
Head。
按照相同的方法,分别构建
h
h
h个头,并将其拼接起来经过一个线性映射层就得到了多头注意力
再将多头注意力和输入的
x
s
(
l
)
x_s^{(l)}
xs(l)拼接起来经过线性映射层得到前向输入网络结果
最后将前向输入网络的结果与输入的
x
s
(
l
)
x_s^{(l)}
xs(l)进行残差连接(相加)就得到该层注意力网络的输出结果
其将作为下一层注意力网络的输入继续进行计算。上述过程都是SuperGlue所采用的注意力机制,而本文是将邻域一致性引入上述计算过程。
邻域一致性模块如上图(a)所示,输入的特征
x
s
(
l
)
x_s^{(l)}
xs(l)和
x
t
(
l
)
x_t^{(l)}
xt(l)经过内积计算和softmax层得到对应性矩阵
S
~
\widetilde{S}
S
,这并不是最终要求解的匹配关系矩阵。对源图中的特征点分别随机生成对应的颜色向量
R
c
∈
R
M
×
c
R_c\in \mathbb{R}^{M\times c}
Rc∈RM×c,
M
M
M表示源图中特征点数量,
c
c
c表示颜色向量的长度。这里的颜色向量可不是图像中RGB这样的颜色特征,而是用于表示匹配关系的表示方式。将源图对应的颜色向量
R
c
R_c
Rc与对应性矩阵的转置
S
~
T
\widetilde{S}^T
S
T相乘,就得到变换后的颜色向量
T
c
T_c
Tc,作为目标图的颜色向量。源图和目标图中的每个关键点都作为一个节点,根据上文计算得到注意力权重作为相似性度量,并选择最相似8个节点作为每个关键点的邻域,将中心节点与8个邻域节点相连构成一个图。源图和目标图对应的边特征分别为
E
s
E_s
Es和
E
t
E_t
Et(计算方式文中没有介绍),将两幅图边特征和颜色向量分别经过GNN进行信息传递,得到新的节点颜色特征表示
两个节点颜色特征表示之间的差异就表示了两幅图之间的邻域一致性,差异越小,一致性越强。计算两个节点的颜色特征表示的差值,并经过一个多层感知机就得到了邻域一致性信息
F
F
N
C
FF_{NC}
FFNC
将邻域一致性信息
F
F
N
C
FF_{NC}
FFNC与上文介绍的前向输入网络的特征
F
F
T
R
FF_{TR}
FFTR级联起来,在经过一个线性映射层就得到带有邻域一致性的注意力聚合信息
与普通注意力机制相同,通过与输入特征相加得到最终的结果
带有邻域一致性的注意力机制和普通的注意力机制的实现方式和比较如图(b)所示。
最后,对聚合后的特征进行匹配,源图和目标图对应的特征向量
x
A
,
x
B
\mathbf{x}^A,\mathbf{x}^B
xA,xB,计算内积得到相似性得分矩阵
S
S
S,并通过Sinkhorn算法得到匹配矩阵
P
P
P。将匹配得分
P
i
j
P_{ij}
Pij低于阈值的点去掉,按照互为最近邻的原则选择最终的匹配结果。损失函数是对匹配矩阵进行负指数似然损失计算
创新点
- 设计了一种邻域一致性模块,并将其引入到注意力机制计算过程中
算法总结
本文在SuperGlue的基础上提出一种带有邻域一致性的注意力机制,邻域一致性的计算思路与《DEEP GRAPH MATCHING CONSENSUS》这篇文章非常相似,实验结果来看是有一定的性能提升的,但计算复杂度较大,对于大规模的特征匹配将会存在计算成本过高的问题。