赞
踩
CNN-SVO: Improving the Mapping in Semi-Direct Visual Odometry Using Single-Image Depth Prediction
与现有的VO和V-SLAM算法相比,半直接视觉里程计(SVO)具有两个主要优势,可以实现最先进的帧速率相机运动估计:直接像素对应和概率映射方法的高效实现
其好处是双重的:视图之间的可靠特征对应关系和快速收敛到真实深度以创建新的地图点
当前帧和前帧之间的匹配特征是解决视觉里程计 (VO) 和视觉同步定位和映射 (V-SLAM) 的最重要步骤之一。主要有两种特征匹配方法
半直接视觉里程计(SVO)是一种混合方法,它结合了直接和间接方法的优点来求解结构和运动,提供了一种有效的概率映射方法,为直接相机运动估计提供可靠的映射点。但 SVO 的一个主要限制是地图点初始化时具有较大的深度不确定性
Fig. 1 (a) 由于沿极点线的搜索范围较大,SVO对具有较大深度不确定性的地图点进行初始化会导致错误的特征对应关系
本文工作
从单图像深度预测神经网络[7]初始化具有深度先验的新地图点(即以预测深度为中心的小方差),从而大大降低识别相应特征的不确定性
Fig. 1 (b) CNN-SVO 示意图
改进的SVO映射,本文称之为CNN-SVO,能够处理具有挑战性的照明条件,这要归功于估计深度图的照明不变性
Fig. 2 CNN-SVO: HDR环境下的摄像机运动估计。(左)单图像深度预测模型展示了估计深度图时的光照不变性,在连续五帧的样本序列上用颜色编码的重投影地图点显示了重投影地图点到那些用于相机运动估计的帧上(最好以颜色观看)。注意CNN-SVO只预测关键帧的深度图。(右)由CNN-SVO1生成的相机轨迹(用线表示)和洋红地图点
首先解释本文其余部分使用的术语。特征是FAST角点检测器提取的图像中的一个二维点。将特征对应称为图像小块的匹配。地图点是从深度已知的特征位置投影出来的3D点
SVO 包含两个并行运行的线程:跟踪线程和映射线程
给定两帧(其中一帧为关键帧)的相机姿态,通过在非关键帧中沿极线查找特征对应,然后通过三角剖分恢复深度,可以获得特征的深度
由于离群点匹配的发生是不可避免的,因此将深度滤波器建模为二维分布:第一维描述深度的概率分布,第二维建模为先验概率
在本文中着重于改进 SVO 中的映射
SVO映射在具有较大不确定性的参考关键帧中初始化新的地图点,并将其平均深度设置为参考帧中的平均场景深度
在主要深度信息存在的地方,深度的不确定性很大,限制了映射确定地图点的真实深度的能力,其中地图点的深度变化很大。特别是,深度不确定性大带来了两个问题:在附近的帧中沿极线可能存在错误的特征对应,以及需要大量的深度测量才能收敛到真实深度
Fig. 3 CNN-SVO管道。我们的工作用CNN深度估计模块(绿色标记)增强了SVO管道,以改善SVO中的映射
添加了CNN深度估计模块(以绿色标记),以便在选择关键帧时在地图点初始化过程中提供强深度先验-深度滤波器的初始化
给定一组三角深度测量值,使用深度滤波器的目的是将好的测量值与坏的测量值分离开来
好的测量值在真实深度周围正态分布,坏的测量值在区间 [ ρ i min , ρ i max ] [ρ^{\min}_i,ρ^{\max}_i] [ρimin,ρimax] 内均匀分布
具体给定一组对应相同特征的三角剖分反演深度测量值
ρ
i
1
,
ρ
i
2
,
.
.
.
,
ρ
i
N
ρ^1_i,ρ^2_i,...,ρ^N_i
ρi1,ρi2,...,ρiN,测量值
ρ
i
N
ρ^N_i
ρiN 在SVO中采用高斯+均匀混合模型建模
p
(
ρ
i
n
∣
ρ
i
,
γ
i
)
=
γ
i
N
(
ρ
i
n
∣
ρ
i
,
τ
i
2
)
+
(
1
−
γ
i
)
U
(
ρ
i
n
∣
ρ
i
min
,
ρ
i
max
)
(1)
p(ρ^n_i |ρ_i,γ_i) = γ_i\mathcal{N}(ρ^n_i |ρ_i,τ^2_i) + (1-γ_i)\mathcal{U}(ρ^n_i |ρ^{\min}_i,ρ^{\max}_ i) \tag{1}
p(ρin∣ρi,γi)=γiN(ρin∣ρi,τi2)+(1−γi)U(ρin∣ρimin,ρimax)(1)
其中
ρ
i
ρ_i
ρi 为真实逆深度,
τ
i
2
τ^2_i
τi2为逆深度方差,
γ
i
γ_i
γi 为内比值。假设深度逆测量值
ρ
i
1
,
ρ
i
2
,
⋅
⋅
⋅
,
ρ
i
N
ρ^1_i,ρ^2_i,···,ρ^N_i
ρi1,ρi2,⋅⋅⋅,ρiN 是独立的,真实深度逆后验的近似值可以由深度的高斯分布与内氏比的Beta分布的乘积增量计算得到:
q
(
ρ
i
,
γ
i
∣
a
n
,
b
n
,
µ
n
,
σ
n
2
)
=
B
e
t
a
(
γ
i
∣
a
n
,
b
n
)
N
(
ρ
i
∣
µ
n
,
σ
n
2
)
(2)
q(ρ_i, γ_i|a_n, b_n, µ_n, σ^2_n) = Beta(γ_i|a_n, b_n)\mathcal{N}(ρ_i|µ_n, σ^2_n)\tag{2}
q(ρi,γi∣an,bn,µn,σn2)=Beta(γi∣an,bn)N(ρi∣µn,σn2)(2)
其中
a
n
a_n
an 和
b
n
b_n
bn 为Beta分布中的参数,
µ
n
µ_n
µn 和
σ
n
2
σ^2_n
σn2 为高斯深度估计的均值和方差,当
σ
n
2
σ^2_n
σn2 小于某个阈值时,深度滤波器收敛到真实深度
Tab. 1 SVO算法与CNN-SVO算法参数初始化的比较。参数由场景的先验知识定义,其中 d a v g d_{avg} davg 为参考关键帧的平均场景深度, d C N N d_{CNN} dCNN 为单图像深度预测网络的深度预测, d min d_{\min} dmin 为参考关键帧的最小场景深度
关键的区别在于CNN-SVO使用学习到的场景深度来初始化特征的均值和方差,而不是使用参考关键帧中的平均和最小场景深度。我们的经验发现,将深度方差设置为
1
(
6
d
C
N
N
)
2
\frac{1}{(6d_{CNN})^2}
(6dCNN)21,为带噪深度预测提供了足够的收敛空间;如果深度方差很大(例如,用一个更大的数字代替6),我们将失去绝对尺度,因为测量中存在更多的不确定性
ρ
i
min
=
μ
n
+
σ
n
2
(3)
\rho^{\min}_i=\mu_n+\sqrt{\sigma^2_n} \tag{3}
ρimin=μn+σn2
(3)
$$
\rho =
\begin{cases}
0.00000001,\ \ \ \ &if\ \mu_n-\sqrt{\sigma^2_n}<0 \
\mu_n-\sqrt{\sigma^2_n},\ \ \ &otherwise
\end{cases}
\tag{4}
$$
通过单幅图像深度预测网络获得强深度先验,其好处是双重的:识别特征对应的不确定性更小,地图点收敛速度更快
Fig. 4 改进的映射策略能够提供更快的映射点收敛。洋红色线的长度表示深度不确定度。(a)初始化深度滤波器,其中SVO采用大间隔来模拟每个初始地图点的不确定性,而CNN-SVO采用短间隔;(b)三次更新后深度滤波器对地图点的深度估计;©深度过滤器在5次更新后对地图点的深度估计
将我们的方法与最先进的直接和间接方法进行了比较,即直接稀疏里程法(DSO),半直接视觉里程法(SVO) 和无闭环的 ORB-SLAM。使用绝对轨迹误差(ATE)作为上述论文中使用的性能度量。此外,用“X”表示由于序列中间丢失跟踪而无法完成序列的方法
为了在CNN-SVO的地图点初始化中提供深度预测,我们采用了的编码器-解码器架构的Resnet50变体,该架构已经在Cityscape数据集上进行了训练
在KITTI原始数据(不包括KITTI Odometry Sequence 00-10)中对50个epoch的立体图像进行网络微调
为了产生一致的结构信息,即使在过度曝光或曝光不足的图像上,图像的亮度在整个训练过程中都是随机调整的,产生照明变化的效果
为了对其他数据集的深度预测进行缩放,可以将推断的深度流乘以当前焦距流与训练焦距流的比值,即缩放后的深度流
d
c
u
r
r
e
n
t
=
f
c
u
r
r
e
n
t
f
t
r
a
i
n
e
d
d
t
r
a
i
n
e
d
(5)
d_{current}=\frac{f_{current}}{f_{trained}}d_{trained}\tag{5}
dcurrent=ftrainedfcurrentdtrained(5)
将一帧中跟踪特征的最大和最小数量分别设置为 200 和 100。关于深度滤波器,我们修改 SVO 以使用 5 个先前关键帧来增加深度滤波器中的测量数量。还在评估过程中启用捆绑调整
Tab. 2 KITTI 数据集上的绝对关键帧轨迹 RMSE(以米为单位)
Tab. 3 Oxford Robotcar 数据集上的绝对关键帧轨迹 RMSE(以米为单位)
本文的系统能够跟踪除 KITTI Sequence 01 之外的所有序列,因为无法准确匹配具有重复结构的场景中的特征。
将 CNN-SVO 的稳健跟踪归因于其将连续帧中的特征与附加深度信息进行匹配的能力,即使图像曝光过度或曝光不足也是如此
Fig. 5 ORB-SLAM(无回环)、DSO 和 CNN-SVO 生成的相机轨迹的定性比较。 (a) KITTI 序列 00 和 08; (b) 牛津机器人汽车序列 2014-05-06-12-54-54 和 2014-06-25-16-22-15。 SVO 未包含在该图中,因为它由于跟踪和建图失败而无法完成轨迹
在图5(b)中,CNN-SVO在序列2014-05-06-12-54-54中的轨迹末端附近产生了一条S状曲线,这是由摄像机前面移动的汽车引起的
局部 BA(约 29 毫秒)和单图像深度预测(约 37 毫秒)是管道中要求最高的过程,但这两个过程仅在创建新关键帧时才需要
尽管有计算需求,我们通过实验发现 CNN-SVO 在 Oxford Robotcar 数据集上以 16 FPS 的速度运行,比在 KITTI 数据集上以 10 FPS 的速度运行得更快
这是由于高帧率序列中帧之间的距离很近,因此相对于序列中的帧总数而言,选择的关键帧较少。因此,可以实现实时计算
由于网络是在已知基线的校正立体图像上进行训练的,因此我们根据网络的预测深度检查里程计的缩放
Tab. 4 CNN-SVO 的 VO 输出中相对于绝对比例的比例
表IV(a)显示,由于训练图像主要来自KITTI数据集,里程计的比例尺接近KITTI数据集中的绝对比例尺。对于 Oxford Robotcar 数据集,我们使用等式缩放深度预测。 VO的尺度在0.9和0.97之间
对于里程表尺度不一致,我们提供两种可能的解释。首先,正如Oxford Robotcar数据集文档中提到的,提供的地面真值姿态不准确,原因如下:
通过初始化具有低不确定性的地图点和从单图像深度预测神经网络获得的平均深度来改进 SVO 映射,称为 CNN-SVO
主要有点
由于单图像深度预测网络中的光照不变性,从曝光过度或曝光不足的图像生成的深度图仍然可以用于促进视图之间的特征对应,克服了原始 SVO 的关键限制
解决一些缺点
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。