【SLAM系列】UnDeepVO: Monocular Visual Odometry through Unsupervised Deep Learning
文章目录
-
1 概要
-
- 1.1 简介
- 1.2 背景知识
-
2. Motivation
-
3. 思想
-
4. 算法
-
- 4.1 损失函数
-
- 4.1.1 立体图像对的空间图像损失
- 4.1.2 连续单目图像的时序图像损失
-
5. 实验结果
-
6. 总结与思考
1 概要
1.1 简介
题目:UnDeepVO: Monocular Visual Odometry through Unsupervised Deep Learning
论文:https://arxiv.org/pdf/1709.06841.pdf
代码:https://github.com/drmaj/UnDeepVO
简介:一种新的单目视觉里程计(VO)系统UnDeepVO。
1.2 背景知识
由于新接触视觉SLAM方面,所以看论文会写一下这部分促进对文章的理解。
视觉里程计(VO)可以让一个机器人在不同环境下仅通过低成本摄像机来定位。
过去的几年里,基于模型的VO和几何VO在两个方面研究广泛:基于特征的方法与直接方法,又来很大成果。但基于模型的方法对于摄像机参数非常敏感,因而在无特征地、动作模糊、或光照改变的情况下非常具有挑战性。
近些年来,数据驱动的VO或基于深度学习的VO由于其学习力和对相机参数的鲁棒性,吸引了众多关注。比如:
CNN-VO【7】、RCNN-VO【111】、DeMoN【12】
在视觉里程计(VO)相关非监督学习的研究主要着力于深度估计 ,源于图像wrap技术“spatial transformer”。
2. Motivation
当前阶段的方法大部分基于监督学习,需要相机位姿或深度图的真值。当前获取到真值的数据集难且昂贵,即使现有用于监督学习的标签也很有限。
—>无监督VO模式, 使用无标签数据集来轻松训练实现定位机制。
3. 思想
UnDeepVO能够利用深度神经网络估计单目相机的六自由度姿态和景深。
两个特点:
- 无监督的深度学习方案;
- 绝对尺度恢复。
我们使用立体图形对(Stereo images)来训练不可重复性,但是使用连续的单目图形来测试它。如下图所示。

4. 算法
整体系统包括 位姿估计 和深度估计 。输入连续单目 图作为输入,输出6自由度+深度作为输出。
其中 位姿估计:VGG-based CNN框架;

使用空间和时间几何一致性来衡量损失函数。
空间图形损失 会促使网络通过立体图像对,恢复缩放的深度图;
时间图形损失 是用来最小化连续两个单目图像相机运动损失;

损失函数:基于时空密集信息的。
4.1 损失函数
4.1.1 立体图像对的空间图像损失
测度一致性损失 :左右图投影测度差。
p_l(u_l,v_l)与p_r(u_r,v_r)是对应左图与右图像素。
空间约束u_l=u_r且v_l=v_r +D_p。
D_p为水平距离。B是立体相机的baseline, f是焦距,D_{dep}是对应像素的深度值。

我们可以使用网络估计的深度图来构建D_p图来定义左图与右图的约束,即可通过一个图的空间转换得到另一个图;
测度一致性损失: L_1范式 + SSIM 项

其中I_l'是通过I_r获得的关于I_l的估计。
差异一致性损失 :考虑差异图(深度的反转),差异图(disparity map)定义:

I_W是原始图像的宽度。定义左与右的差异图为D^l_{dis}和D^r_{dis}。可以使用D_p来
通过D^l_{dis}来生成D^{l'}_{dis},右边同样。因此,损失可定义为:

位姿一致性损失 :同时使用左和右图像序列在训练中来预测6自由度。因此,可以惩罚两个预测的不同:

其中\lambda_p是左右位置一致性权重,\lambda_0是左右方向一致性权重,[x'_l,\phi'_l]是来自左图序列的预测位姿。
4.1.2 连续单目图像的时序图像损失
时序损失:两个连续的单目图像的几何限制。对于恢复6自由度至关重要,包括测度一致性和3D几何注册损失。
测度一致性损失 :两个连续单目图像。p_k(u_k,v_k)是I_k中一个像素,可以由p_k推出p_{k+1}。

其中K是相机内参矩阵,D_{dep}是第k帧的深度,T_{k,k+1}是第k与k+1帧之间的坐标转换矩阵。因此我们可以通过第k+1帧来获取第k帧。因此,两个图像序列的测试一致性损失定义为:

3D几何注册损失 :通过对齐两个点云来实现。通常使用ICP。假设第k个相机的 一个点P_k(x,y,z)是输入,可以通过转换矩阵T来得到第k+1帧P_k'(x,y,z)。同样的,也可以通过k+1得到k帧。因此损失定义为:

所有损失嘉禾为系统损失。
5. 实验结果
数据集:UnDeepVO只需要立体图像进行训练而不需要标记数据集,因此可以使用大量的未标记数据集对其进行训练,以不断提高其性能。



6. 总结与思考
通过类似pre-train的模型,也就是用立体对来训练,然后做单目图像的非监督学习,测试。
一个重要点就是针对空间和时序上的损失设置。
