英国诺丁汉大学
本文设计了一个孪生神经网络,其以图像对为输入,网络的每一支各输出一个绝对位姿估计,以及共同预测一个相对位姿。除了常见的绝对位姿损失函数之外,作者还设计了三个基于相对位姿数据的损失函数项。
网络的两支时共享权重特征的。在测试时,选择网络的任意一支对图像进行位姿估计即可
可以看出网络的backbone式ResNet50,输出的特征图分别被GPRU和RPRU模块作为输入。
GPRU:global pose regression unit
一个1024的全连接层,然后接了两个3和4 的全连接层,输出位置和姿态估计。
这里每个全连接层后面要dropout防止过拟合,初始化时候使用xavier初始化(用于线性层,如果是非线性层则使用kaimin初始化)
GPRU以特性图为输入。
RPRU: relative pose regression unit
结构和GPRU相同,但是输入变成了两个特征图的连接。
损失函数:
1.绝对位位姿损失:
L G = L G x + L G q L G x = ∥ x − x ^ ∥ 2 L G q = ∥ q − q ^ ∥ q ^ ∥ ∥ 2 L_{G}=L_{G x}+L_{G q}\\L_{G x}=\|x-\hat{x}\|_{2}\\L_{G q}=\left\|q-\frac{\hat{q}}{\|\hat{q}\|}\right\|_{2} LG=LGx+LGqLGx=∥x−x^∥2LGq=∥∥∥∥q−∥q^∥q^∥∥∥∥2
2.相对几何损失:
根 据 绝 对 位 姿 真 值 的 计 算 相 对 位 姿 真 值 : x r e l = x − x r e f q r e l = q r e f ∗ × q 带 ∗ 为 共 轭 四 元 数 计 算 相 对 几 何 损 失 : L C = L C x + L C q L C x = ∥ x ^ r e l − x r e l ∥ 2 L C q = ∥ q ^ r e l − q r e l ∥ 2 根据绝对位姿真值的计算相对位姿真值:\\\begin{array}{l}x_{r e l}=x-x_{r e f} \\q_{r e l}=q_{r e f}^{*} \times q \quad 带*为共轭四元数\end{array}\\计算相对几何损失:\\L_{C}=L_{C x}+L_{C q}\\\begin{array}{l}L_{C x}=\left\|\hat{x}_{r e l}-x_{r e l}\right\|_{2} \\L_{C q}=\left\|\hat{q}_{r e l}-q_{r e l}\right\|_{2}\end{array} 根据绝对位姿真值的计算相对位姿真值:xrel=x−xrefqrel=qref∗×q带∗为共轭四元数计算相对几何损失:LC=LCx+LCqLCx=∥x^rel−xrel∥2LCq=∥q^rel−qrel∥2
3.相对位姿回归损失:
这里计算的是预测的相对位姿的损失,而上一项是关于预测的绝对位姿损失
L
R
=
L
R
x
+
L
R
q
L
R
x
=
∥
x
r
e
l
−
x
~
r
e
l
∥
2
L
R
q
=
∥
q
r
e
l
−
q
~
r
e
l
∥
q
~
r
e
l
∥
∥
2
L_{R}=L_{R x}+L_{R q}\\\begin{array}{c}L_{R x}=\left\|x_{r e l}-\widetilde{x}_{r e l}\right\|_{2} \\L_{R q}=\left\|q_{r e l}-\frac{\widetilde{q}_{r e l}}{\left\|\widetilde{q}_{r e l}\right\|}\right\|_{2}\end{array}
LR=LRx+LRqLRx=∥xrel−x
rel∥2LRq=∥∥∥qrel−∥q
rel∥q
rel∥∥∥2
4.自适应度量损失:
L M D = 1 2 N ∑ n = 1 N { max ( d x + α × d q − d , 0 ) } 2 L_{M D}=\frac{1}{2 N} \sum_{n=1}^{N}\left\{\max \left(d_{x}+\alpha \times d_{q}-d, 0\right)\right\}^{2} LMD=2N1n=1∑N{max(dx+α×dq−d,0)}2
d
x
d
q
d_x \ d_q
dx dq是相对位姿的L2距离,
d
d
d是两个输出特征之间的L2距离 :
d
x
=
∥
x
−
x
r
e
f
∥
2
d
q
=
∥
q
−
q
r
e
f
∥
2
d
=
∥
f
−
f
r
e
f
∥
2
d_{x}=\left\|x-x_{r e f}\right\|_{2}\\d_{q}=\left\|q-q_{r e f}\right\|_{2}\\d=\left\|f-f_{ref}\right\|_{2}\\
dx=∥x−xref∥2dq=∥q−qref∥2d=∥f−fref∥2
该损失期望两个输出的特征之间的差异 不小于 输入图像对的位姿之间的差异
总的损失函数:
L = L G + L C + L R + L M D L=L_{G}+L_{C}+L_{R}+L_{M D} L=LG+LC+LR+LMD
除了最后一项,其每一项由位置损失和姿态损失组成,因此可以写成:
L
=
L
x
+
L
q
+
L
M
D
L=L_{x}+L_{q}+L_{M D}
L=Lx+Lq+LMD
其中:
L
x
=
L
G
x
+
L
C
x
+
L
R
x
L
q
=
L
G
q
+
L
C
q
+
L
R
q
\begin{array}{l}L_{x}=L_{G x}+L_{C x}+L_{R x} \\L_{q}=L_{G q}+L_{C q}+L_{R q}\end{array}
Lx=LGx+LCx+LRxLq=LGq+LCq+LRq
为了去掉损失函数中的权重参数,最后作者使用了PoseNet2中的可学习参数的损失函数形式:
L
=
L
x
×
exp
(
−
s
^
x
)
+
s
^
x
+
L
q
×
exp
(
−
s
^
q
)
+
s
^
q
+
L
M
D
L=L_{x} \times \exp \left(-\hat{s}_{x}\right)+\hat{s}_{x}+L_{q} \times \exp \left(-\hat{s}_{q}\right)+\hat{s}_{q}+L_{M D}
L=Lx×exp(−s^x)+s^x+Lq×exp(−s^q)+s^q+LMD
实验结果:
- 7-scenes:
- cambridge
由于端到端的深度学习重定位方法。
对各个损失函数的性能测试:
对图像对选择的实验验证:
-
随机选择两个图像最为输入
-
选择前后连续的两个图像
结果显示使用相邻两帧作为输入更加精确