摘要:
DynSLAM是一个基于ORB-SLAM2的视觉SLAM系统,增加了动态目标检测和背景修复功能。DynSLAM在单目、立体声和RGB-D配置的动态场景中是强大的。我们可以通过多视点几何、深度学习或两者结合来检测运动目标。使用场景的静态地图可以修复被这些动态对象遮挡的框架背景。
1 引言
动态场景SLAM的一些挑战
检测和处理视觉SLAM中的动态物体,在建图和追踪中有以下几个挑战:
1)在图像中怎么检测动态物体从而达到:
a.防止追踪算法使用属于动态物体的匹配。
b.防止建图算法将动态物体作为3D图的一部分
2)怎样完成被动态物体暂时遮挡部分的3D建图
本文提出了一种基于RGB-D、立体和单目SLAM的动态目标在线处理算法。这是通过向最先进的ORB-SLAM2系统添加前端阶段来实现的,目的是获得更精确的跟踪和场景的可重用地图。在单目和立体声的情况下,我们的建议是使用CNN像素级分割帧内的先验动态物体(如人和汽车),从而使SLAM算法不提取他们的特征。在RGB-D案例中,我们提出将多视图几何模型和基于深度学习的算法结合起来检测动态目标,并在将它们从图像中去除后,用场景的正确信息填充遮挡的背景(图1)。
2 相关工作
有几个SLAM系统可以更具体地处理动态场景内容。在基于特征的SLAM方法中,一些最相关的是:
- Tanet al.[9] detect changes that take place in the scene by projecting the map features into the current frame for appearance and structure validation.
- Wangsiripitak and Murray [10] track known 3D dynamic objects in the scene.
- L. Riazueloet al.[11] deal with human activity by integrating a person detection and tracking stage [12] in the front-end of their visual SLAM system.
- More recently, the work of Li and Lee [13] uses for the odometry depth edges points, which have an asso-ciated weight indicating its probability of belonging to a dynamic object, calculated with the Euclidean distance between the projections in the map of all the edges.
一般来说,直接方法对场景中的动态对象更加敏感。最相关的动态场景设计作品有:
- Alcantarillaet al.[14] detect moving objects by means of a scene flowrepresentationwithstereocameras.
- Wang and Huang [15], [16] segment the dynamic objects in the scene using RGB optical flow.
- Kimet al.[17] propose to obtain the static parts of the scene by computing the difference between consecutive depth images projected over the same plane.
- Sunet al.[18] calculate the difference in intensity between consecutive RGB images. Pixel classificationis donewiththesegmentationofthequantizeddepthimage.
所有这些方法存在的局限性:
♣当一个先验的动态物体保持静止的时候不能估计一个长期的模型。比如说停着的车,坐着的人们等
♣不能检测由静止物体产生的变化。例如,一把正在由人推着的椅子,被人扔掉的球。
那么就是说现在方法,一种是能够成功检测到物体的动作,另一种是能够检测到会动 的物体。我们的方案是,将多视几何与深度学习结合来处理两种情况。类似的,Anrus分割动态物体是通过动态分类和多视几何的办法。
3 系统描述
图2显示了我们的系统概述。首先,RGB通道通过CNN,将像素分割出所有的先验动态内容。
在RGB-D的情况下,我们使用多视图几何从两方面改进动态内容分割。首先,我们对之前CNN得到的动态目标的分割进行细化。其次,我们将大多数时候是静态的新对象实例标记为动态对象实例(例如,检测在cnn阶段没有被设置为可移动的移动对象)。
为此,有必要知道摄像机的姿态,为此,一个低成本的跟踪模块已经实现,以在已经创建的场景地图中定位摄像机。这些分割帧用于获取摄像机的轨迹和场景的地图。
3.1 使用CNN分割潜在的动态内容
为了检测动态目标,我们提出使用CNN来获得图像的像素级语义分割。在我们的实验中,我们使用Mask R-CNN,这是对象实例分割的最新技术。Mask R-CNN既可以获得像素级的语义分割,也可以获得实例标签。对于这项工作,我们只使用像素级语义分割信息,但实例标签可能在未来的工作中用于跟踪不同的运动对象。我们使用了Matterport的TensorFlow实现。
3.2 低代价跟踪
在潜在的动态内容被分割后,使用图像的静态部分跟踪摄像机的姿态。由于分割轮廓成为高梯度区域,容易出现明显的点特征。我们没有考虑轮廓的特征。与ORB-SLAM2中的跟踪相比,算法这一阶段实现的跟踪更简单,因此计算量更轻。它将地图特征投影到图像帧中,在图像静态区域中寻找对应点,最小化重投影误差,优化摄像机姿态。
3.3 使用Mask R-CNN和多视图几何对动态内容分割
对于每一个输入的帧,我们选择之前的关键帧,这些关键帧有高程度的重叠。完成这个任务,是通过考虑新帧和每一个关键帧之间的距离和旋转得到的。重叠的关键帧的数目在我们实验中设置为5个,在动态目标检测中,作为计算量和精度之间的折中。
然后,我们计算来自之前关键帧的每一个关键点x到当前帧上的投影,获得投影点x‘,还有他们的深度zproj。对于每一个关键点,我们计算x与x’之间的视差角度。如果角度大于30度,这个点可能被遮挡了,然后这个点就会被忽略。在TUM数据集上,我们观察到对于视差角度大于30度的动态物体被视为动态的,由于他们的视点的不同。考虑投影点之间深度的差别,如果差值大于阈值,我们就认为关键点属于动态物体。如图3所示。
为了设置深度阈值,我们人工标记30张图像的的动态物体在TUM的数据集中,并且对不同的深度阈值对精确度和召回率做了评估。得出深度阈值为0.4m是一个合理的选择的结论。
一些关键点会落在动态物体的轮廓边缘,为了避免这种情况的发生,我们使用给出的深度图像信息,如果关键点被认为是动态的,但是它周围的小块区域的深度有很大的不同,那么我们将这个点标签改为静止。
到现在,我们知道哪些点属于动态物体,哪些点不属于。