DeepSLAM
Li 2020 · 论文
一句话总结 — DeepSLAM用神经网络搭建出一个完整的单目SLAM流程——用于位姿估计的Tracking-Net、用于深度估计的Mapping-Net、用于回环检测的Loop-Net,再加上g2o位姿图优化——整套系统在双目影像上以完全无监督的方式训练,并部署在单目视频上。
问题
到2020年,学习式视觉里程计已经存在监督式(DeepVO/ESP-VO)和自监督式(SfM-Learner)两种形式,但监督变体需要昂贵的真值轨迹,单目自监督又会丢失度量尺度,而且几乎所有学习式系统都只是里程计:没有回环检测,因此漂移会无限增长。与此同时,几何方法在挑战性场景(雨天、夜晚、过曝)下十分脆弱,且无法从数据中改进。DeepSLAM探讨的问题是:经典SLAM的整套分解——跟踪、建图、回环检测、图优化——能否用完全不需要标注真值训练的网络来复现。
方法与架构
前端网络(测试时,单目输入)。 Tracking-Net是一个RCNN——由VGGNet卷积层向一个跨图像序列(长度为5)的LSTM输入特征——输出相对6自由度位姿及每个估计的不确定度,直接产生每个窗口内 个相对位姿构成的局部位姿图。Mapping-Net是一个编码器-解码器,预测具有度量尺度的稠密深度图(每5帧运行一次)。Loop-Net是一个ImageNet预训练的Inception-ResNet-V2(未做任何SLAM专门训练),将图像嵌入为特征向量;当一对图像的余弦距离 低于某阈值时,即被判定为一次回环,此后Tracking-Net(序列长度为2)计算回环变换,并由g2o对局部图与全局图组合而成的位姿图进行优化。
在双目序列上的无监督训练。 空间(左-右)与时间(帧到帧)几何一致性构成损失函数,双目提供度量尺度,因此不需要位姿或深度标签。给定双目基线 和焦距 ,预测深度 给出对应距离 ,据此对图像进行交叉变形。左-右光度损失(右到左类似,视差图 亦类似)为
再加上左右两条流估计出的位姿之间的一致性损失 。在时间维度上,像素通过下式在帧间变形:
(为内参,为预测位姿,为预测深度),从而得到带遮罩的光度损失以及一个类似ICP的3D几何配准损失 ,其中 建立在反投影点云之上。
不确定度与异常剔除。 光度/几何误差的均值定义了一个不确定度 (Sigmoid函数 ,取值范围0.5–1),它用于监督Tracking-Net的不确定度输出,并通过百分位数 自适应地调整二值误差图掩膜的大小——在训练中剔除运动物体(光度掩膜)以及天空、物体边缘等不可靠深度区域(几何掩膜)。
实验结果
- KITTI里程计(训练序列00-02、08、09(以及无标签的11-21);测试序列03-07、10;输入分辨率416×128):平均 为5.58%, 为2.47°/100米——优于监督式ESP-VO(6.15%,6.66°)和SfMLearner(16.40%,5.99°)以及单目VISO2-M(17.48%),但落后于ORB-SLAM(3.21%,0.37°)和双目VISO2-S(1.89%)。加入无标签序列11-21后,平均值从6.34%提升到5.58%——这正是无监督训练所带来的优势。若不使用Loop-Net,存在回环的序列会表现出明显更大的累积误差。
- KITTI深度(Eigen划分指标,仅在里程计子集上训练):在80米截断下,Abs Rel为0.1724,RMSE为6.362——优于监督式Eigen(0.214)和无尺度的SfMLearner(0.208),但落后于更高分辨率的Monodepth ResNet-50(0.148)。
- 鲁棒性(Oxford RobotCar):在畸变、过曝、雨天以及夜间雨天场景下仍能保持跟踪,而LSD-SLAM甚至双目ORB-SLAM都在这些场景下丢失了跟踪;在自采集的低成本ZED相机数据上也能正常工作。
- 运行速度:在GTX 980M笔记本上,Tracking-Net以40 Hz运行,显存占用不到400 MB;Mapping-Net每帧48毫秒,Loop-Net每张图像120毫秒(两者均每5帧运行一次);多线程完整系统运行速度约为20 Hz。
对SLAM的意义
DeepSLAM将”用网络替换每个模块,但保留架构”这一策略推向了极致,甚至包括了纯学习式VO论文所省略的回环检测和位姿图阶段——并展示了无监督训练的收益:仅通过摄取监督对手无法使用的无标签KITTI序列,它就能持续提升性能。它”双目训练、单目部署”的方案至今仍是获得具有尺度感知能力的自监督的标准方法,而它在RobotCar上的鲁棒性结果也预示了学习式SLAM相对于几何方法的主要卖点:在手工特征失效的条件下依然能够优雅地工作。