暑期研习系列:动态室外场景SLAM研究后续
VDO-SLAM:论文、安装与代码阅读
一、VDO-SLAM论文阅读
OK,我们来看下VDO-SLAM( A Visual Dynamic Object-aware SLAM System )是什么?其实从名字上就能很清晰的看出,该SLAM系统主要用于解决动态场景的问题。并且,由于具有物体级别的感知功能,能够追踪场景中运动刚体,并计算其速度。此外,该系统开源代码:https://github.com/halajun/vdo_slam。
该系统在室内室外都有测试,但是文章也指出,由于系统原理性设计,使得室内小物体难以识别及追踪,因此该系统主要适用于室外场景下的车辆追踪上面,并在kitti数据集上进行了测试,表现优异。
该系统可以在单目、双目、RGBD版本上应用。但是,由于系统需要视差图,因此单目版本还需要额外的视差估计模块。但是最佳使用的应该是基于基于双目的室外场景。
大致了解这个系统之后,开始看论文:
-
引言。作者认为,现有存在处理动态场景的思路:直接把动态场景当做外点扔掉、使用传统的多目标追踪方法进行处理。这两种思路都存在一定的缺陷。前者仅仅处理静态数据(有点浪费);后者取决于相机位姿估计的精度,在复杂动态场景下可能会因为缺乏可靠的静态结构而失效(简而言之就是slam与追踪两种功能是分离的,没有相互促进)。VDO-SLAM解决了上述两者的缺陷。作者认为VDO-SLAM具有以下贡献( 主要内容在第1和第3点 ):
- 设计了统一的估计框架,将机器人位姿、动态点和静态点、运动物体的位姿(object motions)联合起来计算与优化
- 对动态物体 SE(3) 位姿变化,以及提取场景中物体速度的方法 进行了精确的估计,并优于最先进的算法。
- 能够处理由于非直接遮挡导致的语义分割失败,使算法具有更大的鲁棒性。
- 一种在复杂和扣人心弦(compelling,不知道怎么翻译好)的真实场景中的可演示系统。
-
相关工作。作者列举的
detect moving objects and track them separately using traditional multi-target tracking approaches (Wang et al. (2003); Miller and Campbell (2007); Rogers et al. (2010); Kundu et al. (2011)).
few aim to utilise information from static and dynamic objects into a single framework to improve the accuracy of the estimation (Bibby and Reid (2007); Judd et al. (2018); Yang and Scherer (2019))
a multi-frame spectral clustering framework is introduced by Xu et al. (2018) with joint integration of an affine model, a homography model and a fundamental matrix.
Making use of semantic information has proven to help deal with the issues of degenerate motions and partial occlusions increasing the motion segmentation accuracy (Rubino et al. (2018)).
data-driven (deep learning) approaches (Milan et al. (2017); Kim et al. (2018)).
The state-of-the-art STAM-MOT (Chu et al. (2017))
可以看下。除了最后一个STAM-MOT用于对比实验外,基本与本文无关,仅仅作为扩展阅读。
-
符号说明:详见论文,还是比较详细的。
-
推导:大部分推导就不再赘述,详见论文即可,这里挑几个重点的来说下。
不知为何博客输入公式总出错,就直接放截图吧
-
预处理:
- 实例级别的语义分割:采用mask r-cnn网络,由coco数据集训练,未经过微调。
- 稠密光流估计:采用PWC-Net网络,由FlyingChairs数据集训练,经过Sintel 和 KITTI 数据集微调。
- 立体匹配视差图:单目情况下,使用 MonoDepth2 (Godard et al. (2019)) 网络。数据集:Depth Eigen split
-
流程图:
-
稠密光流估计作用:第一为语义掩码提供采样点,保证有足够数量和鲁棒的点来传播,使得多物体追踪能够进行;第二,能够在语义分割失败后用于恢复语义掩码。之所以选择稠密光流而非稀疏光流,是因为稠密光流能够保证长期追踪的鲁棒性。
-
特征检测与追踪:采用稀疏的改进型FAST角点检测( Rublee et al. (2011). ),并用光流法进行追踪。
-
位姿变换:静态点采用3D-2D方法求解。初始化则计算两种模型:先前运动的传播模型、以及带有RANSAC方法的P3P模型,并计算内点数量,取内点数量多的为初始化标准。
-
动态物体的判断:计算空间内某一点m在k、k-1帧时刻位置偏差,得到场景流(scene flow)如果该点的场景流变化大于预先设定的阈值(文中取0.12),则认定该点为动态点。在语义分割后的掩码范围内,计算每个物体场景流的动态点占比是否大于某一阈值(文中取30%),如果大于则判定该物体掩码对应的物体为动态物体。
-
动态追踪:实例级别的语义分割仅仅能够提供单阶段(单张图片)的分割结果,但是没法实现追踪,因此需要引入稠密光流进行数据关联。使用光流为每个运动物体进行编号,对受到噪声,图像边界及遮蔽影响的运动物体,当其上一帧周边的点场景流运动标签为0时,重新对其编号。
-