核心思想
??本文提出一种基于图神经网络的特征点匹配方法,把图像中的特征点看作图的节点,通过注意力机制聚合特征信息,得到用于匹配的特征向量。然后把匹配问题看作一个可微的最优运输问题(differentiable optimal transport problem),利用Sinkhorn Algorithm算法进行求解。整个算法的处理流程如下图所示 ??首先,输入是两幅图像中特征点的位置坐标
p
i
A
p_i^A
piA?和
p
i
B
p_i^B
piB?,以及特征点对应的特征描述向量
d
i
A
d_i^A
diA?和
d
i
B
d_i^B
diB?。其中位置坐标
p
i
A
p_i^A
piA?包含
x
,
y
x,y
x,y坐标值以及检测置信度
c
c
c,即
p
i
=
(
x
,
y
,
c
)
i
p_i = (x, y, c)_i
pi?=(x,y,c)i?;特征描述向量
d
i
A
d_i^A
diA?可以由任意的特征描述算子得到如SIFT或SuperPoint。位置坐标
p
i
p_i
pi?经过一个由多层感知机构成的编码器处理后与特征描述向量
d
i
d_i
di?相加,得到图神经网络的一个节点
x
i
x_i
xi?,该节点被称作局部特征 ??为了获取上下文环境信息,本文采用图神经网络对特征信息进行聚合。本文提出一种多重图神经网络结构,将原图和待匹配图像中的特征点放在一起构成一个完整的图(graph),图中包含两种类型的无向边,一种是图像内部的边(Intra-image edges)也就是原图或待匹配图像内部特征点之间的连线,另一种是图像之间的边(Inter-image edges),即原图中的特征点和待匹配图像中的特征点之间的连线。因为包含两种类型的无向边,因此称为多重图神经网络。 ??令
(
l
)
x
i
A
^{(l)}x_i^A
(l)xiA?表示第
l
l
l层图神经网络中图像A中第
i
i
i个特征点,则
(
l
)
x
i
A
^{(l)}x_i^A
(l)xiA?的更新方式如下 其中
[
?
∣
∣
?
]
[\cdot||\cdot]
[?∣∣?]表示级联操作,
m
ε
→
i
m_{\varepsilon→i}
mε→i?表示从特征点集向点
i
i
i聚合的信息,
ε
\varepsilon
ε表示信息沿不同的边流动,如上文所述边的类型有两种,
ε
∈
{
ε
s
e
l
f
,
ε
c
r
o
s
s
}
\varepsilon\in \{\varepsilon_{self}, \varepsilon_{cross}\}
ε∈{εself?,εcross?}。对于奇数层,信息沿图像内部的边流动聚合,对于偶数层,信息沿图像之间的边流动聚合,采用交替的方式对每个节点进行更新。下面介绍聚合信息
m
ε
→
i
m_{\varepsilon→i}
mε→i?的计算方法,信息聚合的过程采用了注意力机制,对与待计算的特征点
(
l
)
x
i
A
^{(l)}x_i^A
(l)xiA?其聚合信息的计算过程如下 其中 这个过程类似从数据库中检索数据,
q
i
q_i
qi?表示查询向量,
k
j
k_j
kj?表示键,而
v
j
v_j
vj?表示每个键对应的值。对于本文而言
q
i
q_i
qi?,
k
j
k_j
kj?和
v
j
v_j
vj?的计算过程如下 其中
x
i
Q
x_i^Q
xiQ?表示待计算的特征点,
x
j
S
x_j^S
xjS?就表示其他的用作信息来源的特征点。举个例子,假设当前处于奇数层,则用于信息汇聚的边属于图像内部的边,因此对于原图
A
A
A中的特征点
(
l
)
x
i
A
^{(l)}x_i^A
(l)xiA?而言,他的聚合信息来源是原图
A
A
A中除
(
l
)
x
i
A
^{(l)}x_i^A
(l)xiA?之外的其他所有特征点;而入党当前处于偶数层,则用于信息汇聚的边属于图像之间的边,因此对于原图
A
A
A中的特征点
(
l
)
x
i
A
^{(l)}x_i^A
(l)xiA?而言,他的聚合信息来源是待匹配图像
B
B
B中所有的特征点。上述公式中
W
W
W和
b
b
b都表示线性变换参数,对于每一层图神经网络中所有节点该参数是共享的,且可以通过学习获得。最终用于匹配的特征描述向量可表示为 ??得到用于匹配的特征描述向量后,通过两两之间进行内积计算可得到匹配得分矩阵
S
∈
R
M
×
N
S\in R^{M\times N}
S∈RM×N,
M
,
N
M, N
M,N分别表示原图和待匹配图像中特征点的数量。 因为有些特征点受到遮挡问题的影响并不存在对应的匹配点,因此本文在得分矩阵的基础上增加一行和一列,表示垃圾箱。扩增后的得分矩阵
S
ˉ
\bar{S}
Sˉ,新添加的行和列得分为一个固定值
z
z
z,这个值也可以通过训练得到。 ??
P
∈
R
M
×
N
P\in R^{M\times N}
P∈RM×N表示匹配矩阵,
P
ˉ
∈
R
M
+
1
×
N
+
1
\bar{P}\in R^{M+1\times N+1}
Pˉ∈RM+1×N+1表示扩增后的匹配矩阵,其每一行都表示一个点与其他待匹配点之间的匹配概率,因为每个点至多存在一个匹配点,因此
P
ˉ
\bar{P}
Pˉ每一行的值加起来都为1。最后使用Sinkhorn Algorithm算法求解使得
∑
i
,
j
S
ˉ
i
,
j
P
ˉ
i
,
j
\sum_{i,j}\bar{S}_{i,j}\bar{P}_{i,j}
∑i,j?Sˉi,j?Pˉi,j?取得最大值的,最优匹配结果
P
ˉ
\bar{P}
Pˉ。
实现过程
网络结构
??所有的特征向量维度为256,图神经网络包含9层。
损失函数
??损失函数如下
M
M
M表示匹配点集,
I
,
J
I,J
I,J分别表示原图和待匹配图像中没有对应匹配点的点集
创新点
- 采用一种多重图神经网络结构用于汇集上下文信息
- 采用注意力机制计算汇集信息
算法评价
??本文使用图神经网络解决了特征点匹配问题,能够结合现有的特征描述算法,实现特征点的准确匹配。带有注意力机制的多层图神经网络能够有效的汇集上下文结构信息,使得匹配过程不仅关注特征点的局部特征,更能关注到整个图的全局信息。最后通过求解最优运输问题来实现点和点之间的最佳分配,取得了非常好的匹配效果。
如果大家对于深度学习与计算机视觉领域感兴趣,希望获得更多的知识分享与最新的论文解读,欢迎关注我的个人公众号“深视”。
|