核心思想
本文提出一种基于学习的寻找最优匹配点的方法,利用多层感知机为每一对候选的匹配点进行加权,认为是正确匹配的概率越大,权值越大,认为是错误匹配的概率越大,则权值越小。利用匹配点的权值,对传统的八点法进行改进,得到加权的八点法用于计算本征矩阵。
首先分别对两幅匹配图像进行特征提取,分别得到N个特征点
(
k
i
,
f
i
)
(k_i,f_i)
(ki,fi)和
(
k
j
′
,
f
j
′
)
(k'_j,f'_j)
(kj′,fj′),
k
i
k_i
ki和
k
j
′
k'_j
kj′表示特征点的坐标,
f
i
f_i
fi和
f
j
′
f'_j
fj′表示特征点的特征描述向量。根据特征描述向量之间的距离,对两组特征点进行匹配,得到N对候选匹配点集
x
=
[
q
1
,
q
2
.
.
.
q
N
]
\mathbf{x}=[q_1,q_2...q_N]
x=[q1,q2...qN],每对匹配点
q
i
q_i
qi由两个点的坐标构成,
q
i
=
[
u
i
,
v
i
,
u
i
′
,
v
i
′
]
q_i=[u_i,v_i,u'_i,v'_i]
qi=[ui,vi,ui′,vi′]。利用相机的内参矩阵将坐标正则化到[-1,1]的范围内,目的是让优化过程在数值上表现的更好。
然后将候选匹配点集
x
\mathbf{x}
x输入到多层感知机MLP中,为每对候选匹配点计算权重值
w
=
[
w
1
,
w
2
,
.
.
.
w
N
]
w=[w_1,w_2,...w_N]
w=[w1,w2,...wN],
w
i
∈
[
0
,
1
]
w_i\in[0,1]
wi∈[0,1],权重越接近1,则表示这对匹配点正确匹配的概率越大,否则是误匹配的概率越大。每对匹配点都有对应的一个多层感知机,各个感知机之间的权重是共享的,如图中P所示。
为了融入上下文信息,作者又提出了上下文规范化(Context Normalization),其实现过程如下
其中
o
i
l
o_i^l
oil表示第
i
i
i对匹配点在第
l
l
l层网络的输出,上述过程看起来和普通的规范化过程并无区别(减去均值除以方差),但是由于面向的维度不同发挥的作用也不同。例如BN层是假设一组图像是满足独立同分布条件的,然后对一个Batch内的多幅图像进行规范化。而本文提出的CN是对一幅图像中的多个匹配点进行规范化,而对于多幅图像之间是分开的,形式上与实例规范化(Instance Normalization)接近。这使得特征图中编码了场景的几何信息及相机的运动信息,将上下文信息融入到MLP中。经过CN层后,为了加速收敛过程,仍采用BN层进行处理,并选择ReLU激活函数。
MLP+CN+BN+ReLU构成一个最小单元,两个最小单元构成一个残差块,这里要与常见的ResNet 区分开,ResNet使用的卷积神经网络CNN。整个网络共有12个残差块构成,每个残差块之间都包含跳跃连接。最后利用MLP将输出维度压缩到1维,并在ReLU函数后增加了tanh函数将输出的范围压缩至[0,1),表示权重值。
得到权重值
w
w
w后,就要根据匹配点坐标计算本征矩阵
E
E
E。传统的八点法是将匹配点的坐标构建成一个矩阵
X
∈
R
N
×
9
X\in \mathbb{R}^{N\times9}
X∈RN×9,其中每行对应一对匹配点,其内容如下
将本征矩阵
E
E
E重新组织成列向量
V
e
c
(
E
)
Vec(E)
Vec(E),则该向量应为单位向量,且能使
∥
X
T
X
V
e
c
(
E
)
∥
\|X^TXVec(E)\|
∥XTXVec(E)∥取得最小值
即
V
e
c
(
E
)
Vec(E)
Vec(E)为矩阵
X
T
X
X^TX
XTX最小的特征值对应的特征向量,此外因为本征矩阵需要满足秩为2,因此我们还需寻找一个秩为2的矩阵
E
^
\hat{E}
E^使得该F范数
∥
E
−
E
^
∥
F
\|E-\hat{E}\|_F
∥E−E^∥F最小。
相对于传统的八点法,本文设计的加权八点法,就是将匹配点的权重值
w
w
w引入到本征矩阵的计算过程中,用下式
∥
X
T
d
i
a
g
(
w
)
X
V
e
c
(
E
)
∥
\|X^Tdiag(w)XVec(E)\|
∥XTdiag(w)XVec(E)∥取代了原本的
∥
X
T
X
V
e
c
(
E
)
∥
\|X^TXVec(E)\|
∥XTXVec(E)∥,其余过程与八点法相同。
本文设计的损失函数包含两个部分:分类损失用于筛除误匹配点,回归损失用于预测本征矩阵。分类损失函数如下
其中
y
k
i
y_k^i
yki表示第
k
k
k幅图中第
i
i
i个匹配点的标签值,0表示误匹配,1表示正确匹配,
o
k
i
o_k^i
oki表示第
k
k
k幅图中第
i
i
i个匹配点的网络输出值,
S
S
S是logistic函数方便使用二元交叉熵损失函数H计算损失值,
γ
k
i
\gamma_k^i
γki表示用于平衡正负样本的权重。为了避免大量的标记数据集,ground-truth标签值是利用对极几何约束计算得到的,简单来说就是如果给定图中的一个特征点,如果它对应的匹配点不在另一幅图中对应的极线上,则认为是误匹配点。这个过程可以用极线距离进行定量化描述如下
p
=
[
u
,
v
,
1
]
p=[u,v,1]
p=[u,v,1],
p
′
=
[
u
′
,
v
′
,
1
]
p'=[u',v',1]
p′=[u′,v′,1]分别表示两个匹配点的齐次坐标,
E
E
E表示本征矩阵,
v
[
i
]
v_{[i]}
v[i]表示向量
v
v
v中第
i
i
i个元素。如果极线距离之和
d
(
p
,
E
p
′
)
+
d
(
p
′
,
E
T
p
)
d(p,Ep')+d(p',E^Tp)
d(p,Ep′)+d(p′,ETp)超过
1
0
−
2
10^{-2}
10−2则认为是误匹配点。
回归损失计算过程如下
E
k
∗
E_k^*
Ek∗表示本征矩阵的真实值,
g
g
g表示加权八点法计算过程,因为
g
g
g符号会根据
E
k
∗
E_k^*
Ek∗进行反转,因此既需要计算差值,又需要计算和。
创新点
- 使用MLP通过分类的方式来预测匹配点是否正确,并设计了加权八点法来计算本征矩阵
- 使用规范化处理后匹配点的坐标配合MLP进行计算,而不是常见的特征信息配合CNN
- 增加了上下文规范化层,融入了场景几何信息和相机运动信息
算法评价
本文使用的方法不仅选择出正确的匹配点还可以预测两幅图像对应的本征矩阵,并且仅使用匹配点的坐标作为输入信息,而无需特征向量的做法也较为少见。根据实验结果来看,本文提出的方法相对于其他方法有显著的性能提升,但在对匹配点坐标进行规范化处理时,需要使用相机的内参矩阵,这在某些情况下可能难以满足。
如果大家对于深度学习与计算机视觉领域感兴趣,希望获得更多的知识分享与最新的论文解读,欢迎关注我的个人公众号“深视”。