论文题目:DynaSLAM: Tracking, Mapping, and Inpainting in Dynamic Scenes
中文题目:DynaSLAM:动态场景中的跟踪、建图和图像修复
作者:Berta Bescos等
论文链接:https://arxiv.org/pdf/1806.05620.pdf
这篇文章提出的动态物体检测、剔除和修补算法非常清晰直观,我觉得有几个可以学习借鉴的地方:
使用了Mask R-CNN卷积神经网络+多视图几何的方法进行动态物体去除,这两种方法进行互补,对于几何方法,主要问题是初始化并不简单,因为它具有多视图的性质,但它可以解决长期地图中半静态物体问题。学习方法不存在这样的初始化问题,但它们无法识别半静态物体。
我觉得这篇文章的亮点还是在图像修复模块,在他们提供的视频中可以看到,这个修补效果确实很好,这个算法放到增强现实应用中应该很不错。
它的图像修复部分,对回环检测或者长期导航有很大帮助。
目前绝大多数方法和数据集都假定是静态环境。因此,他们只能通过将动态内容分类为静态模型的异常值来管理一小部分动态内容。尽管静态假设适用于某些机器人应用,但它限制了视觉SLAM在许多相关情况下的适用性,例如长时间(long-term) 在人口稠密的现实环境中运行的智能自主系统。
在视觉SLAM中要完成这几个挑战:
本文提出了一种在线算法来处理RGB-D,立体和单目SLAM中的动态目标。这是通过向最先进的ORBSLAM2系统添加前端阶段来完成的,目的是更准确地跟踪和可重复使用的场景地图。在单目和立体情况下,使用CNN 对帧中的先验动态对象(例如人和汽车)进行逐像素分割,这样SLAM算法就不会提取它们的特征。在RGB-D案例中,文章结合多视图几何模型和基于深度学习的算法来检测动态物体,并在将它们从图像中移除后,用正确的场景信息重新绘制被遮挡的背景。
算法框架如下图所示。
1.首先,RGB通道通过一个CNN,该CNN按像素划分出所有先验的动态内容。
2.然后使用多视图几何从两个方面改进动态内容分割:对之前的动态对象分割进行细化、并将大多数时候静态的新对象实例标记为动态对象实例(即检测在CNN阶段未设置为可移动的移动对象)。
3.然后实现了一个低成本的跟踪模块,以在已经创建的场景地图中定位相机。
4.一旦完成了相机的完整动态目标检测和定位,然后用以前视图中的静态信息重建当前帧的遮挡背景。
使用Mask R-CNN逐像素的语义分割信息进行对象实例分割,使用Matterport实现TensorFlow。
Mask R-CNN的输入为RGB原始图像。这个想法是将那些可能是动态的或可移动的类(提前设计了一个数据库列表,保存了一些实例类)分割开来。作者认为,对于大多数环境,可能出现的动态对象都包含在上述列表中。如果需要其他类,在MS COCO上训练的网络可以用新的训练数据进行微调。
假设输入是一张大小为m×n×3的RGB图像,网络的输出是一个大小为m×n×l的矩阵,其中l为图像中物体的个数。对于每个输出通道i∈l,得到一个二进制掩码。通过将所有通道合并为一个通道,可以得到在一个场景图像中出现的所有动态物体的分割。
在对潜在的动态内容进行分割后,使用图像的静态部分跟踪摄像机的姿态,由于边缘轮廓通常为高梯度区域,容易出现跳变的点特征,所以没有考虑这些区域的特征。
在该算法的这个阶段实现的跟踪比ORB-SLAM2中的跟踪更简单,因此计算量更轻。它将地图特征投影到图像坐标系中,在图像的静态区域中搜索对应的地图特征,并最小化重投影误差以优化相机姿态。
通过使用Mask R-CNN,可以对大多数动态对象进行分割。然而,有些对象无法通过这种方法检测到,因为它们不是先验动态的,而是可移动的。比如:某人携带的一本书,某人正在移动的一把椅子,甚至是长期地图中家具的变化。
具体操作如下:
对于每个输入帧,通过考虑新帧和每个关键帧之间的距离和旋转,选择具有最高重叠的前5个关键帧。
然后使用ORB-SLAM2中的特征点提取方法提取特征点x,计算前一帧关键帧中每个关键点x到当前帧的投影 x ‘ x` x‘,以及它们的投影深度 z p r o j z_{proj} zproj。对于每个关键点,其对应的3D点为X,计算x与X的反投影之间的夹角,即视差角α。如果这个角度大于30°,该点可能被遮挡,将其忽略。
作者注意到在TUM数据集测试时,有时候视差角大于30°时,出现错将静态物体划分为动态物体的情况,所以提出了以下方法进一步完善:在考虑重投影误差的情况下,得到当前帧中剩余关键点的深度 z ‘ z` z‘(直接从深度测量中得到),并与 z p r o j z_{proj} zproj进行比较。若两者之差 Δ z = z p r o j − z ‘ Δz = z_{proj}−z` Δz=zproj−z‘大于阈值 τ z \tau _z τz,则认为关键点x∈一个动态对象。
到目前为止,已经判断出哪些关键点属于动态对象。为了对所有属于动态对象的像素进行分类,在深度图像中围绕动态像素生长区域(理解为扩充)。
CNN的结果(图4b)可以与该几何方法的结果相结合,进行全动态目标检测(图4c)。
这两个模块是互补的,互补的方法是这样的:如果用两种方法都检测到一个对象,则分割掩码应该是几何方法的掩码。如果一个对象只被基于学习的方法检测到,分割掩码也应该包含这个信息。
该阶段系统的输入包含RGB和深度图像,以及它们的分割掩码。提取静态图像片段中的ORB特征。由于线段轮廓是高梯度区域,因此必须移除落在该交点上的关键点。
对于每一个被移除的动态对象,应该用之前视图中的静态信息重新绘制被遮挡的背景,这样就可以合成一个没有移动内容的逼真图像。
因为知道之前和当前帧的位置,所以将所有之前关键帧的RGB和深度信息投射到当前帧的动态片段中。一些空白没有对应关系,被留白;一些区域不能被绘制,因为它们对应的场景部分到目前为止还没有出现在关键帧中,或者它出现了,但没有有效的深度信息。这些缝隙不能用几何方法重建,需要更精细的修复填补技术。
在TUM RGB-D数据集和KITTI数据集中评估了,并在动态环境中与其他最先进的SLAM系统进行了比较。每个实验做10次,取中位数。
对该数据集中的六个序列进行不同变化的结果如表1所示。DynaSLAM(N)是只有Mask R-CNN分割出先验动态对象的系统。DynaSLAM(G)表示仅使用基于深度变化的多视图几何方法检测动态目标。DynaSLAM(N+G)代表结合几何和深度学习方法检测动态对象的系统。DynaSLAM(N+G+BI)表示完整系统,并且将背景修复模块放在了Tracking and Mapping模块之前。
这个实验的动机是,如果将动态区域与静态内容进行修补,则系统可以使用修补后的图像作为静态假设下的SLAM系统。在此方案中,ORB特征提取算法同时在帧的真实区域和重建区域工作,找到与先前处理的关键帧的关键点匹配。
结果是:在大多数序列中,使用学习和几何的系统(N+G)是最精确的。
在摄像机定位之前添加背景修复阶段(BI)通常会导致跟踪精度降低。原因是背景修复与相机姿势有很强的相关性。因此,对于纯旋转运动的序列(rpy,halfsphere),估计相机姿势有更大的误差,导致不准确的背景重建。因此应该按照最开始论文的结构,将背景修复模块放在Tracking and Mapping模块之后。
表2显示了与ORB-SLAM2进行了比较。所提出的方法在高动态场景(walking)中优于ORBSLAM2,在静态场景中达到与原始ORB-SLAM2系统相似的误差。在低动态场景(sitting)的情况下,跟踪结果略差,因为跟踪的关键点发现自己比那些属于动态对象的关键点更远。下图显示了DynaSLAM和ORB-SLAM2的估计轨迹与地面真值的对比。
表III显示了所提出的系统与几个为动态环境设计的最先进的RGB-D SLAM系统之间的比较,考虑到和最先进的运动检测方法的有效性,还展示了在每种情况下使用的原始SLAM系统的各自改进值。
DynaSLAM在所有序列(高动态和低动态)中都明显优于它们。一般来说,误差在1-2厘米左右,与静态场景中的最新技术相似。提出的运动检测方法也优于其他方法。
表4显示了TUM数据集中ORB-SLAM和DynaSLAM(单目)的跟踪结果和跟踪轨迹的百分比。尽管DynaSLAM的精度略低,但它成功地引导了具有动态内容的系统,并生成了没有这些内容的地图(见图1),可用于长期应用。DynaSLAM精度略低的原因是估计的轨迹较长,因此存在累积误差的空间。
表V显示了11个训练序列中的结果,与立体ORB-SLAM2进行了比较。表6显示了ORB-SLAM和DynaSLAM单目在相同序列下的结果。
当不使用属于先验动态对象(即汽车、自行车等)的特征时,跟踪的准确性得到了提高;回环检测和重定位算法工作得更健壮,因为最终的地图只包含结构性对象,也就是说,地图可以被重用并在长期应用程序中工作。
表7显示了其不同阶段的平均计算时间。注意,DynaSLAM没有针对实时操作进行优化。然而,它创建静态场景内容的终身地图的能力也与在离线模式下运行有关。
多视图几何阶段的增加是一个额外的减速,主要是由于区域增长算法。背景修复也引入了延迟,这也是为什么它应该在跟踪和映射阶段之后进行的另一个原因。
本文提出了一个视觉SLAM系统,在ORB-SLAM的基础上,增加了一个运动分割方法,使其在动态环境中对单目、立体和RGB-D相机具有鲁棒性。提出的系统精确地跟踪相机,并创建一个静态的,因此可重复使用的场景地图。在RGB-D情况下,DynaSLAM能够获得没有动态内容和被遮挡背景的合成RGB帧,以及它们对应的合成深度帧,这对于虚拟现实应用可能非常有用。
这项工作的未来扩展可能包括,实时性能、基于RGB的运动检测器、或通过使用更精细的绘画技术来合成RGB帧的更逼真的外观。