UndeepVO
Li 2018 · 论文
一句话总结 — 一种通过无监督深度学习训练的单目视觉里程计系统,通过在立体图像对上训练来恢复绝对度量尺度,而在测试时仅使用单目输入运行。
问题
监督学习的VO(DeepVO)需要真值6自由度位姿,而大规模采集这类数据代价高昂;第一个自监督替代方案(SfM-Learner)仅依靠单目视频进行训练,因而继承了单目方法的根本局限:深度和轨迹只能恢复到一个未知的尺度。UnDeepVO给出的答案是:让训练阶段的立体几何(而非运行时的传感器或后处理)来提供尺度信息——其两大所声称的”显著特点”是无监督训练方案和绝对尺度恢复。
方法与架构
- 位姿估计器。 一个基于VGG的CNN接收两帧连续的单目图像,并回归出6自由度变换,其中平移和欧拉角旋转采用解耦的全连接分支,以便对旋转单独加权(旋转具有高度非线性,更难训练)。
- 深度估计器。 一个直接预测深度图(而非视差)的编码器-解码器——作者报告称,这样整个系统更容易收敛。
- 立体训练,单目测试。 训练时左右两路图像序列都被送入网络;损失函数将预测结果与已知且固定的基线联系起来。测试时只使用连续的单目图像。
- 空间损失(在一个立体对内部) 利用了对应像素按视差发生位移这一事实:
(为焦距,为预测深度)——度量尺度正是从这里进入模型的。一幅图像通过空间变换器由另一幅合成,并用SSIM与L1相结合的光度损失进行惩罚,例如:
再加上一个视差图一致性损失,以及一个位姿一致性损失,强制左、右序列的位姿预测保持一致。
- 时间损失(在连续帧之间) 用于恢复运动:像素利用预测的深度和位姿进行重投影,
并用相同的SSIM+L1光度损失进行惩罚,再加上一个类似ICP的三维几何配准损失,在下对齐两帧的点云。
- 训练。 使用Adam优化器(,),学习率0.001,每训练总迭代数的1/5就减半,训练20–30个epoch,输入分辨率为416×128,并进行颜色/旋转/左右翻转的数据增强。推理:在GTX 980M上以40 Hz运行,显存占用不足400 MB。
实验结果
- KITTI里程计(在序列00–08上训练,与SfMLearner使用相同数据;两种方法均未使用回环检测):序列00/02/05/07/08的平均值——UnDeepVO的为4.07%,为2.02°/100m,相比SfMLearner为36.23%/4.56(经过7自由度对齐后),VISO2-M为17.93%/2.80,ORB-SLAM-M(仅VO)为27.05%/10.23,后两者都需要完整的1242×376图像,而UnDeepVO仅用416×128。(这些序列与训练集有重叠——论文将此视为衡量网络拟合优度的方式;在没有真值的序列11–21上,其轨迹与立体VISO2-S相当。)
- 尺度。 位姿和深度直接以度量尺度输出,无需任何尺度后处理——SfMLearner和ORB-SLAM-M都需要与真值进行7自由度对齐,VISO2-M则需要固定相机高度的先验假设。
- 深度(KITTI Eigen划分): Abs Rel为0.183,Sq Rel为1.73,RMSE为6.57,RMSE log为0.268——优于监督式的Eigen等人方法(0.214)和无尺度的SfMLearner(0.208),落后于立体训练的MonoDepth(0.148,后者使用了更高分辨率、ResNet架构以及完整的KITTI原始数据集)。
对SLAM的意义
UndeepVO是最早展示单目尺度问题可以借助训练数据的几何信息(而非运行时额外传感器)来解决的工作之一:一次性使用立体监督,之后永久以单目方式部署。这种立体监督式自监督方案后来成为自监督深度和VO方法中的标准要素(MonoDepth风格的光度损失结合位姿网络,后来经过改进并整合进D3VO的直接VO中)。它是一个很好的案例,展示了经典多视图几何约束如何可以充当学习的免费监督信号。
相关条目
- SfM-Learner — 纯单目的自监督深度+位姿前驱方法(存在尺度歧义)。
- MonoDepth — 立体监督的自监督深度估计。
- DeepVO — 监督式端到端学习VO的对应方法。
- D3VO — 后续将自监督深度、位姿和不确定性整合进直接VO的系统。
- Self-supervised depth — 相关的一般性概念。
- Scale ambiguity — UnDeepVO所规避的单目局限性。