点击上方“3D视觉工坊”,选择“星标”
干货第一时间送达
作者:robot L | 来源:知乎
https://zhuanlan.zhihu.com/p/133212711
本文仅做学术分享,如有侵权,请联系删除。
面向动态环境基于点的语义SLAM系统。ORB-SLAM2的动态环境扩展版本,面向单目,双目和RGB-D相机。具体内容如下:
动态物体检测方法。使用深学习方法(Mask R-CNN检测可能运动的物体:车,人等)和几何方法(将深度或者角度差距较大的数据关联点当做动态点)分别检测可能运动和正在运动的物体。
只使用静态区域且非动态物体掩膜边缘的ORB特征点进行相机位姿估计。
使用历史观测进行背景填充。
代码地址:https://github.com/BertaBescos/DynaSLAM
该方法选择去除所有有潜在运动可能的物体,如停在路边的汽车等。这可能会导致剩余的静止特征点过少而影响相机位姿估计。如KITTI的00序列效果变差。
B. Bescos, J. M. Facil, J. Civera, J. Neira. DynaSLAM: Tracking, Mapping and Inpainting in Dynamic Scenes. IEEE Robotics and Automation Letters, 3(4), 4076-4083, 2018.
假设环境刚体性在SLAM算法中是典型的。这种强假设限制了大多数SLAM在真实环境中的使用,这是一些相关应用的目标,如服务机器人或自动驾驶。Bescos等人展示了DynaSLAM,一种视觉SLAM系统,建立在ORB-SLAM2上,增加了动态物体检测和背景修补。DynaSLAM在动态场景中是鲁棒的。作者能够通过多视图几何,深度学习或者两者同时来检测动态物体。得到的静态场景地图允许修补被动态物体遮挡的帧背景。DynaSLAM 超过了标准SLAM的表现在高动态环境中。同时,它也估计了环境静态部分的地图,对于真实环境的长期应用是必要的。
SLAM是许多机器人应用的前提,例如无碰导航,SLAM技术联合估计未知环境的地图和机器人在该地图中的位姿。该地图允许机器人在相同场景中连续定位且没有累积误差。这和里程计方法相反,其整合窗口内的增量运动,并且在重新访问地点时不能修正漂移。
视觉SLAM,其中主要的传感器是相机,已经受到了很大程度的关注和过去几年研究人员的努力。单目相机的最小解决方案具有实际优势在大小,功率和代价上,还具有一些挑战例如尺度的不可观或者状态初始化。通过使用更复杂的设置,例如双目或者RGB-D相机,这些问题将会被解决并且视觉SLAM系统的鲁棒性能够被很大程度地提高。
研究社区已经从很多角度解决了SLAM。但是,大多数方法和数据集假设静态环境。因此,它们只能管理很少的动态内容通过分类它们为静态模型的外点。即使静态假设对于这些机器人应用成立,它限制了视觉SLAM在许多相关情形中的应用,例如在现实世界中长期操作的智能自主系统。
视觉SLAM能够被分类为基于特征的[2][3]方法,其依赖显著的点匹配并且只能估计一个稀疏的重建;和直接法[4]-[6],其能够估计完全稠密的重建通过光度误差的直接最小化和TV正则化。一些直接法专注于高梯度区域估计半稠密地图[7][8]。
上述方法没有解决场景中动态物体的常见问题,例如人的行走,自行车或者汽车。检测和处理动态物体在视觉SLAM中揭示了一些挑战对于建图和跟踪,包括:
1)如何在图片中检测这种动态物体:
a)避免跟踪算法使用属于动态物体的匹配。
b)避免建图算法包含运动物体作为3D地图的一部分。
2)如何完整化3D地图中暂时被运动物体遮挡的部分。
沿着这些方向,许多应用将会受益。除了这些,AR,自动驾驶和医疗影像。所有这些将会从成功复用之前得到的地图。检测和处理动态物体是必须的来估计静态地图,对于长期应用非常有用。如果动态成分没有被检测到,它将变成3D地图的一部分,复杂化它的跟踪和重定位的应用。
在我们的工作中,我们提出一种在线算法来解决RGB-D,双目和单目SLAM中的动态物体。这被解决通过增加一个前端到SOTA ORB-SLAM2系统中,为了具有更准确的跟踪和复用场景地图的作用。在单目和双目例子中,我们的目的是使用CNN到逐像素的分割帧中的先验动态物体,从而SLAM算法不会提取它们上的特征。在RGB-D的例子中,我们提出组合多视角几何模型和基于深度学习的算法用于检测动态物体并且之后从图片中移除它们,去除遮挡背景的瑕疵通过场景的修正信息(图1)。
图1. DynaSLAM结果的综述在RBG-D情形下。
本文的剩余部分如下:第二节讨论相关工作。第3节给出我们方法的细节,第4节详细讨论实验结果,第5节展示结论和未来工作。
动态物体,在大多数SLAM系统中,被分类为虚假数据,并因此既不被包含在地图中也不被用于相机跟踪。最经典的外点拒绝算法是RANSAC(例如,在ROB-SLAM中[3][1])和鲁棒代价函数(如,在PTAM中[2])。
有一些SLAM系统解决了更具体的动态场景内容,在基于特征的SLAM中,最相关的为:
Tan等人[9]检测发生在场景中的变化通过投影地图特征到当前帧中用于外观和结构验证。
Wangsiripitak和Murray[10]跟踪场景中已知的3D动态物体。类似地,Riazuelo等人[11]解决人类行为通过检测和跟踪行人。
最近地,Li和Lee的工作[12]使用深度边缘点,其被加权关联以表示属于动态物体的概率。
直接法,一般来说,对于场景中的动态物体更敏感。为了动态场景设计的最相关的工作为:
Alcantarilla等人[13]检测运动物体通过双目相机的场景流表示。
Wang和Huang[14]分割场景中的动态物体使用RGB光流。
Kim等人[15]提出获得场景的静态部分通过计算投影到相同平面中的连续深度图片的差异。
Sun等人[16]计算连续RGB图片之间的密度差异。像素分类在深度图片的分割上被执行。
所有这些方法(包括基于特征的和直接法)——建图静态场景部分只从序列信息中[1][3][9][12]-[17],没有估计长期模型当一个先验运动物体保持静止时,例如停下来的车或者坐下来的行人。另一方面,Wangsiripitak和Murray[10]以及Riazuelo等人[11]想要检测先验动态物体,但是没有检测由静态物体引起的变化。前者成功检测运动物体,后者成功检测一些可能运动的物体。我们的方法DynaSLAM,组合了多视角几何和深度学习以解决上述两种情形。类似地,Anrus等人[18]分割动态物体通过组合一个动态分类器和多视角几何。
图2展示了我们系统的综述。首先,RGB通道通过一个CNN传递先验动态成分的逐像素分割,例如行人或者汽车。
图2. 我们提出方法的框图。在双目和单目流程中(黑色连续线)图片通过CNN(Mask R-CNN)用于计算先验动态物体的逐像素语义在用于建图和跟踪之前。在RGB-D情形中(黑色虚线),基于多视角几何的第二种方法被添加用于更准确的运动分割,其中我们需要一个低成本跟踪算法。一旦相机位置已知,我们可以去除被动态物体遮挡的背景瑕疵。红色虚线表示存储的稀疏地图的数据流。
在RGB-D情形中,我们使用多视角几何来提高动态成分分割以两种方式。首先,我们精修之前从CNN得到的动态物体的分割。其次,我们标号动态新物体实例,其在大多数时候都是静止的(即,检测没有在CNN阶段中设置为可移动物体的运动物体)。
为此,需要知道相机位姿,其中低代价跟踪模块已经被应用以定位已创建场景地图中的相机。
这些被分割的帧是那些被用于获得相机轨迹和场景地图的帧。注意到如果场景中的运动物体不在CNN类别内,多视角阶段将会检测动态成分,但是准确可能会降低。
一旦这个全动态物体检测和相机定位已经被完成,我们致力于重建当前帧的被遮挡背景具有之前视角中的静态信息。这些合成的帧与类似AR和VR以及长期建图中的场景识别等应用是相关的。
在单目和双目情形中,图片被分割通过CNN以致于属于先验动态物体的关键点没有被跟踪和建图。
所有不同的阶段在如下章节中被详细描述(III-A和III-E)。
为了检测动态物体,我们提出使用一个CNN,获得逐像素的图片语义分割。在我们的实验中,我们使用Mask R-CNN[19],其是SOTA对于物体实例分割。Mask R-CNN可以同时获得逐像素语义分割和实例标号。对于该工作我们使用逐像素语义分割信息,但是实例标号能够在未来工作中被使用为了跟踪不同的运动物体,我们使用Matterport的TensorFlow应用:https://github.com/matterport/Mask_RCNN
Mask R-CNN的输入是RGB原始图片。该想法是分割那些潜在动态或者可能运动的物体(人,自行车,汽车,摩托车,飞机,公交车,火车,货车,船,鸟,猫,狗,马,船,奶牛,大象,熊,斑马和长颈鹿)。我们考虑,对于大多数环境,动态物体很有可能被包含在这个列表中。如果其它类需要,在MS COCO中[20]训练的网络,可能使用新训练数据精修。
网络的输出,假设输入是大小为 的RGB图片, 是图片中物体的数量。对于每个输出通道 ,一个二值掩膜被获得。通过组合所有通道到一个,我们可以获得出现在场景的一张图片中的所有动态物体的分割。
去除通过Mask R-CNN实力分割得到的潜在运动物体的内部和周围像素。基于落在其他区域(静态区域)的特征点,使用轻量级的ORB-SLAM2[1]进行低成本相机跟踪。它投影地图特征到图片帧中,搜索图片静态区域的对应,并最小化重投影误差来优化相机位姿。
通过使用Mask R-CNN,大多数动态物体可以被分割并且不被用于跟踪和建图。但是,有一些物体不能被该方法检测到,因为它们不是先验动态的,但是可移动。最新的例子是某人拿着一本书,一个人坐在椅子上移动,或者甚至是家具在长期建图中的变化。用于解决这些情形的方法在本节中被详细描述。
对于每个输入帧,我们选择之前具有最大重叠的关键帧。这个被完成通过同时考虑新帧与每个关键帧之间的距离和旋转,类似Tan等人[9]。重叠关键帧的数量已经在我们的实验中被设置为5,作为计算代价和动态物体检测准确性的折中。
我们然后计算每个关键点 从之前关键帧到当前帧的投影,获得关键点 和投影深度 ,由相机运动计算得到。注意到关键点 来自ORB-SLAM2中的特征提取器算法。对于每个关键点,其对应的3D点是 ,我们计算 的反投影和 之间的角度,即,它们的平行角度 。如果角度大于 ,点可能被遮挡,并且将会被忽略。我们观察到,在TUM数据集中,对于夹角大于 的静态物体被考虑为动态物体,由于它们的视角差。我们获得留下在当前帧 中关键点的深度(直接从深度测量),考虑重投影误差,并且我们比较他们和 。如果差值 超过一个阈值 ,关键点 被考虑为属于动态物体。该想法被展示在图3中。为了设置阈值 ,我们手工标号TUM数据集中30张图片中的动态物体,并且同时评估我们方法对于不同阈值 的准确率和召回率。通过最大化表达式 ,我们总结 是一个合理的选择。
图3. 来自关键帧KF的关键点x被投影到当前帧CF使用它的深度和相机位姿。投影深度被计算。像素被标号为动态如果深度差大于某阈值。
一些关键点被标号动态的当它们为位于运动物体边界上时(如图4中坐着的人后面的桌板)。为了避免这些动态点导致问题,我们使用深度图片给定的信息。如果关键点被设置为动态,但是它周围深度地图具有较大方差,我们改变编号为静态。
到目前为止,我们知道哪个关键点属于动态物体,哪个不是。为了分类所有属于动态物体的像素,我们扩展动态像素附近的深度图片中的区域[21]。一个RGB帧的例子和它对应的动态掩膜可以被看到在图4(a)中。
图4. 使用多视角几何(左),深度学习(中)和组合的动态物体检测和分割。
CNN的结果(图4b)可以被组合和几何方法用于全物体检测(图4c)。我们可以发现在两种方法中的好处和限制,因此它们组合使用的动机。对于几何方法,主要问题是初始化很麻烦由于多视角性质。学习方法和它们令人印象深刻的单视角的表现,没有初始化问题。它们的主要限制是被应该是静态的物体可能会被移除,并且该方法不能识别它们。上个例子可以使用多视角一致性测量被解决。
面对动态物体检测问题的两种方法被可视化在图4中。在图4(a)中我们看到后面那个人,其是潜在的动态物体,没有被检测到。有两个原因。首先,RBG-D相机面临的困难是当测量较远物体的深度时。第二,可靠特征位于定义的,图片边界。虽然,这个人被深度学习方法检测到(图4b)。除了这个,一方面我们看到在图4(a)中,不仅图片中前方被检测到的人。而且它手中的书也被检测为动态的。并且它们的分割是不准确的。如果只有深度学习方法被使用,一个漂浮的书将会被留在图片中并允许不准确的3D地图的部分。
由于两种方法的优劣势,我们考虑它们是互补的,并且因此它们的组合使用是一个有效的方法来达到准确的跟踪和建图。为了达到该目标,如果一个物体同时被该方法检测到,分割掩膜将会是几何方法。如果植被学习方法检测到,分割掩膜将也会包含该信息。该例子最终的分割图片可以在图4(c)中看到。分割的动态部分被移除从当前帧和地图中。
系统该阶段的输入包含RGB和深度图片,以及分割掩膜。我们提取ORB特征在图片分割中分类为静态。因为分割边缘是高度梯度的区域,落在分割边缘的关键点不得不被移除。
对于每个移除的动态物体,我们致力于填充遮挡的背景使用之前视角中的静态信息,从而我们可以合成一张没有运动物体的真实图片。我们相信这个合成图片,包含环境的静态结构,对许多应用是有用的,例如VR,AR,重定位和地图创建后的相机跟踪。
因为我们已知之前和当前帧的位置,我们投影到当前帧RGB和深度通道的动态分割从一组之前的关键帧中(前20在我们的实验中)。一些缝隙没有对应并设置为空白:一些区域不能被填充,因为在关键帧中没有出现过,或者出现过但没有合法的深度信息。这些缝隙不能被重建使用几何方法,将需要一种更精致的填充技术。图5展示了结果的合成图片对于三张输入帧从TUM的不同序列中。注意大动态成分如何被成功地分割和移除。同时,大多数被分割的部分已经被填充使用静态背景的信息。
这些合成帧的另一个应用如下:如果该帧中动态区域被静态内容填充,系统将会在静态假设下使用填充后的图片进行SLAM。
在TUM RGB-D和KITTI数据集上与SOTA动态环境SLAM方法进行了对比。和ORB-SLAM2进行了对比,验证在动态环境中的优势。如Mur和Tardos[1]提出的那样,每个序列需要运行5次取中值结果以弥补系统的不确定性质。我们对每个序列运行10次。
两个序列:sitting和walking。前者环境中的运动成分较少,后者较多。相机进行四种不同运动。使用Sturm等人提出的绝对轨迹的RMSE作为评测标准[22]。
消融实验。由表1可知,结合语义分割和多视角几何信息分割结合的方法效果最好;先背景填充再跟踪(图6)不如先跟踪再背景填充(图2)的位姿估计精度高。
表1. 消融实验。DynaSLAM的几个版本的绝对轨迹RMSE[m]。DynaSLAM(N):使用Mask-RCNN分割出先验动态物体。(G)使用基于深度变化的多视角几何信息检测动态物体。(N+G)组合两种方法检测动态物体。(N+G+BI)如图6所示检测动态物体并背景填充后再跟踪。
图6. DynaSLAM(N+G+BI)的流程图。先填充背景,再跟踪。
与ORB-SLAM2的RGB-D版本比较。
表2. DynaSLAM与ORB-SLAM2的RGB-D版本比较。度量标准:ATE的RMSE。为了补偿程序的不确定性,各运行10次程序,比较这10次的RMSE的中值。
与ORB-SLAM2的单目版本的比较。
表4. ATE的RMSE和成功跟踪率。
面向动态环境的SOTA算法比较。
表3. ATEde RMSE [m],和SOTA 面向动态环境的RGB-D SLAM系统的比较。每种方法额外提供相对不考虑运动检测的原始方法的提高程度。
表5. ATE的RMSE,RPE和RRE的平均值。DynaSLAM和ORB-SLAM2的双目系统比较。
表6. ATE的RMSE。DynaSLAM和ORB-SLAM2的单目系统比较。
表7. DynaSLAM平均每帧运行时间
此外,Mask R-CNN处理每张图片在Nvidia Tesla M40 GPU上需要195ms。
推荐阅读:
专辑|相机标定
专辑|3D点云
专辑|SLAM
专辑|深度学习与自动驾驶
专辑|结构光
专辑|事件相机
专辑|OpenCV学习
专辑|学习资源汇总
专辑|招聘与项目对接
专辑|读书笔记
重磅!3DCVer-学术论文写作投稿 交流群已成立
扫码添加小助手微信,可申请加入3D视觉工坊-学术论文写作与投稿 微信交流群,旨在交流顶会、顶刊、SCI、EI等写作与投稿事宜。
同时也可申请加入我们的细分方向交流群,目前主要有3D视觉、CV&深度学习、SLAM、三维重建、点云后处理、自动驾驶、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、学术交流、求职交流等微信群,请扫描下面微信号加群,备注:”研究方向+学校/公司+昵称“,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进去相关微信群。原创投稿也请联系。
▲长按加微信群或投稿
▲长按关注公众号
3D视觉从入门到精通知识星球:针对3D视觉领域的知识点汇总、入门进阶学习路线、最新paper分享、疑问解答四个方面进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业为一体的铁杆粉丝聚集区,近1000+星球成员为创造更好的AI世界共同进步,知识星球入口:
学习3D视觉核心技术,扫描查看介绍,3天内无条件退款
圈里有高质量教程资料、可答疑解惑、助你高效解决问题