(VDO-SLAM :A Visual Dynamic Object-aware SLAM System)
论文地址:https://arxiv.org/pdf/2005.11052v2.pdf
代码: https://github.com/halajun/vdo_slam
场景刚性假设,也称为静态环境假设,经常被使用到SLAM算法中。如今大部分算法在复杂的动态环境下运行时,会考虑通过删除移动物体或单独跟踪移动物体来简化问题。这种强假设限制了自主移动机器人系统在涉及高度动态和非结构化环境等一系列重要现实场景中应用的发展。本文介绍了一种鲁棒的动态目标感知SLAM系统(VDO-SLAM),该系统利用语义信息,可以在不具有目标形状或运动模型先验信息的条件下,对场景中的刚性物体进行运动估计。该方法将环境中的动态和静态结构集成到一个统一的估计框架中,从而实现对于机器人相机和时空地图的精确估计。我们提供了一种从运动目标的位姿变化中提取速度估计值的方法,来实现(机器人在)复杂动态环境下的导航功能。我们在大量的室内和室外真实数据集上演示了该系统的性能。结果显示,与最先进的算法相比,我们的系统实现了持续且实质性的改进。本系统已经开放了源代码。
关键词:SLAM,动态场景,目标感知,速度,跟踪,位姿变换
用于复杂环境下的高质量三维虚拟模型,在机器人、智能交通、监视、检查、娱乐和电影制作、自然环境的勘探和监测等等一系列领域中的应用需求正在不断增大。创建这些模型需要重复地感知环境,并使用例如同时定位和建图(SLAM)或从运动中恢复结构(SfM)等估计技术将多种传感器测量的结果融合成一致的表示方式。SLAM是一个在机器人领域成熟的技术,它可以同时估计机器人的状态并构建其环境的模型。尽管存在许多精确和高效的解决方案,但目前的SLAM算法在高度动态的环境下依然很容易失效(Cadena et al. (2016))。SLAM中处理动态物体的传统方法不是将任何与移动物体相关的传感器数据作为异常值处理,并将其从估计过程中去除(Hahnel et al. (2002, 2003);Wolf and Sukhatme (2005); Zhao et al. (2008); Bescoset al. (2018)),就是使用传统的多目标跟踪方法检测运动目标并单独跟踪它们(Wang et al. (2003); Miller and Campbell (2007); Rogerset al. (2010); Kundu et al. (2011))。前者排除了场景中动态物体的信息,只生成静态地图。后者的精度取决于相机的位姿估计,然而在复杂的动态环境中这种方法很容易失效,因为(在这种场景下)都不一定存在可靠的静态结构。随着越来越多的自主系统被应用到动态环境中,作为目前大多数开源SLAM算法和视觉里程计(VO)算法基础的场景刚性假设(或者称为静态环境假设)不断地遭受着挑战。
一个典型的SLAM系统由处理来自传感器原始数据的前端模块,和将获取的信息(原始的和隐式的高级信息)集成到概率估计框架中的后端模块组成。简单原语,例如特征的三维位置等,通常被用来描述环境(信息)。这主要是由于在SLAM估计问题中这些(特征)点很容易被检测、跟踪和集成。其他原语,如线条与平面 (de la Puente and Rodr´ıguez-Losada (2014);Kaess (2015); Henein et al. (2017); Hsiao et al. (2017))甚至是目标 (Mu et al. (2016); Salas-Moreno et al.(2013); Yang and Scherer (2019))都被考虑过用于表达更丰富的地图信息。语义信息和目标分割可以为动态目标的识别提供重要的场景先验信息 (Wang et al. (2007); G´alvez-L´opez et al. (2016))。最新的深度学习技术已经几乎可以实时检测和分割目标类别了(Girshick et al. (2018); He et al. (2017))。尽管基于视觉的目标检测和分割技术在最近有了发展,但视觉SLAM社区还没有充分利用这些信息(Nicholson et al. (2018))。(如果)要将这些信息合并到现有的几何SLAM算法中,场景中每个目标的三维模型数据集必须是可用的(Salas-Moreno et al. (2013);G´alvez-L´opez et al. (2016)) 或者前端必须显式地提供除了检测和分割之外的目标位姿信息 (Milan et al. (2016); Byravan and Fox (2017);Wohlhart and Lepetit (2015)) (这些要求)给这个问题增加了一层复杂性。对三维模型的精确性要求严重限制了它的潜在应用领域,而就我们所知,多目标跟踪和三维位姿估计仍然是一个具有挑战性的技术。这显然需要一种算法,可以利用当前深度学习算法强大的检测和分割能力,而不依赖于额外的位姿估计或目标模型先验。
在本文中,我们提出了VDO-SLAM,一种新颖的基于特征的双目/RGB-D动态SLAM系统,利用基于图像的语义信息来同时定位机器人,绘制静态和动态结构,以及跟踪场景中刚体的运动。总之,本论文的贡献有:
(提出)一种基于机器人位姿、静态和动态三维点以及目标运动的估计的统一框架的动态场景模型。
本算法可以对动态目标的位姿变化 S E ( 3 ) SE(3) SE(3)进行精确估计并估算出场景中目标的(移动)速度,效果优于目前最先进的算法。
(提出)一种利用语义信息跟踪运动目标的鲁棒方法,能够处理由于语义目标分割失败而导致的间接遮挡问题。
(提出)一个在复杂且有代表性的现实场景下能够被演示证明的系统
具我们所知,这是第一个完整的能够实现运动分割,动态目标追踪,估算跟随着静态和动态结构相机的位姿,估算场景中的每一个刚体的完全SE(3)位姿变化,提取速度信息和可以在现实户外场景中被演示证明的动态SLAM系统。我们证明了我们的算法在真实数据集中的性能,并展示了系统解决刚性目标运动估计的能力。本系统对目标运动和相机位姿估计的准确性都比当前最新算法在城市驾驶场景中(的结果)高出一个数量级的性能。
本文的其余部分结构如下,在下面的第2节中,我们将讨论相关的工作。在第3节和第4节,我们会讲解所提出的算法和系统。我们在第5节介绍实验配置,以及结果和评估。我们将在第6部分进行总结并提出结论。
为了可以自主地执行任务,一个机器人必须能够对它所处的环境进行分析。在场景中建立机器人、静止物体和移动物体之间的时空关系是(机器人)理解场景的基础,同时定位、建图和对移动物体进行跟踪等问题是相互促进的 (Wang et al. (2007))。然而,在SLAM社区中,(研究人员认为)与静止物体相关的信息被认为是积极的,而从移动物体提取到的信息则被视为会降低算法性能。最新的SLAM系统要么将从移动物体提取到的数据视为异常值 (Hahnel et al. (2002,2003); Wolf and Sukhatme (2005); Zhao et al. (2008);Bescos et al. (2018)) 要么使用多目标跟踪技术单独跟踪它们 (Wang et al. (2003); Miller and Campbell(2007); Rogers et al. (2010); Kundu et al. (2011))很少有人会把静态和动态物体的信息处理到一个框架中,来提高估计的准确性 (Bibby and Reid (2007); Judd et al. (2018);Yang and Scherer (2019)).
最早应用在动态环境中的SLAM系统之一是由Hahnel et al. (2003)提出的。他使用了最大期望(EM)算法来更新相对于静态/动态物体的测量值概率估计,并在当它们对应于动态物体的估计值时将其删去。Alcantarilla et al. (2012)引入了密集场景流方法用于动态目标检测,并通过消除估计中对动态目标的“错误”测量,改进了定位和映射结果。 Tan et al. (2013)提出了在线关键帧更新方法,该方法能正确地检测外观和结构方面的变化特征,并在必要时丢弃它们。
Wang et al. (2007)开发了一种用于运动目标跟踪(SLAMMOT)的SLAM理论。在他们最新版本的用于运动目标的检测和跟踪的SLAM算法中,估计问题被分解成两个独立的估计器(对于运动目标的和静止物体的), 并可以实时更新两个过滤器。 Kunduet等人(Kundu et al. (2011)) 通过并行解决结构自运动(SfM)和运动目标跟踪问题,将系统输出统一为包含静态和运动目标结构和轨迹的三维动态场景图。Reddy等人(2015)利用了光流和深度计算语义运动分割。在使用语义约束改进三维重建算法之前,他们将静态物体与运动物体分离并独立重构。
Bibby and Reid’s SLAMIDE (Bibby and Reid (2007)使用了一种将可逆数据关联(包括动态位姿)统一进单一SLAM框架的广义EM算法来估计三维特征的状态(静止或动态)。Zou and Tan(2013)提出了一种多相机SLAM系统,该系统能够跟踪多个相机,并重建静态背景和移动前景点的三维位置。他们的系统利用了运动目标上的点在同一时刻共享相关相机信息的想法,可以同时估计出所有的相机位姿。 Judd et al.(2018)通过应用多运动视觉测程(MVO)多模型拟合技术估计相机和场景中刚体的全部SE(3)运动。Yang and Scherer(2019)最近的一项工作提出了一种用于单图像三维长方体检测,以及用于静态和动态环境的多视图位姿SLAM方法。不过,他们的主要目标是相机位姿和目标检测精度,没有提供其目标位姿估计的精度评估。
在过去的二十年里,计算机视觉社区对物体运动分割和多目标跟踪问题进行了大量的研究,这些都是动态场景估计(研究成果)的重要组成部分。当前最先进的运动分割算法试图将基于仿射假设的方法(Vidal and Hartley(2004))和基于对极几何的方法(Rao et al. (2010))结合成一个单一的框架,发挥出他们各自的优势((Elhamifar and Vidal (2009); Lai et al. (2016))。在最近的一种方法中,Xuet al. (2018) 提出了一种仿射模型、一种单应性模型和一个基本矩阵联合集成的多帧光谱聚类框架。(Rubino et al., 2018)已经证明利用语义信息可以有助于处理退化运动和部分遮挡问题,提高运动分割精度。在过去的几年里,多目标跟踪算法已经从传统的基于推理/滤波的算法(Khan et al. (2005); Zhou et al. (2015))转变为数据驱动的(深度学习)方法(Milan et al. (2017); Kim et al. (2018))。目前最先进的STAM-MOT (Chu et al. (2017)) 应用空间和时间图来处理跟踪中的局部遮挡问题。为了找到目标的最优分配,该算法采用了跟踪单一目标时常用的密集搜索策略。
在本节中,我们将展示如何在基于点跟踪的自由模型中建模刚体的运动。我们提出了一种因子图来优化相机和目标运动的估计。
在我们系统的跟踪组件中,如图4所示,被选择的用于估计相机位姿和目标运动的代价函数(见3.2节)与3D-2D重投影误差相关,并在图像上定义。由于噪声在图像平面上可以得到更好的特征,这就为相机定位提供了更准确的结果(Nist´er et al. (2004))。此外,基于这一误差项,我们提出了一种新的公式来联合优化光流以及相机位姿和目标运动,以确保对点的鲁棒跟踪(见3.2.3节)。在建图模块中,我们使用了三维误差代价函数来保证三维结构和目标运动估计的最佳结果,如3.3节所述
设0Xk,0Lk ϵ \epsilon ϵ S E ( 3 ) SE(3) SE(3)分别为在全局参考系0中k时刻的机器人/相机和目标的三维位姿,其中k ϵ \epsilon ϵ Γ \Gamma Γ为时间步长的集合。特别地,在我们的表示法中,大写字母用来表示指标集。图2中将这些位姿转换显示为实线。
设0mik为第i个三维点在k时刻的齐次坐标,0mi=[mix,miy,miz,1]T ϵ \epsilon ϵIE3,i ϵ \epsilon ϵ M M M(点集).我们在机器人/相机框架中描述一个点的形式例如:xkmik=0X-1k0mik。
定义Ik为与相机在k时刻捕捉到的图片左上角的参考系。通过投影函数 π \pi π(.)得到齐次三维点IkPik在坐标系Ik上的像素位置
其中,K为相机内参。
相机或目标运动都会产生光流,它可以由像素在图像帧上的位移向量表示:
图2将这些运动转换形式表示为虚线曲线。我们在其对应的目标坐标系中写一个点
(5)非常重要,因为它通过一个齐次变换把连续时间帧上运动的刚体上的同一个三维点联系了起来。
方程(6)是我们的运动估计方法的核心,因为它以无模型(model-free)的方式通过驻留在目标上的点表示刚体位姿变化,而不需要在估计中包含目标的三维位姿作为随机变量。第3.2.2节详细介绍了如何根据上述方程估计刚体的位姿变化。方程中的0k-1Hk ϵ \epsilon ϵ S E ( 3 ) SE(3) SE(3)表示全局参照系中目标(提取出的)点的运动。对于本论文的其余部分,为了便于阅读,我们将这个量称为目标的位姿变化或目标的运动。
我们用李代数xk ϵ \epsilon ϵ s e ( 3 ) se(3) se(3)中的元素参数化SE(3)中的相机位姿:
通过对 S E ( 3 ) SE(3) SE(3)进行李代数参数化,将(8)代入(7),得到最小二乘代价的解为:
可以使用Levenberg-Marquardt(L-M)算法来求解(9)。
与相机位姿估计类似,构造基于重投影误差的代价函数可以求解目标运动。使用公式(6),目标的三维点通过重投影对应到图像Ik中二维点的误差项为:
相机位姿估计和目标运动估计都依赖于良好的图像对应。由于遮挡、较大的相对运动和较大的相机-目标距离,对于运动目标上(提取出的)点的跟踪非常具有挑战性。为了保证对于点的跟踪的鲁棒性,本文提出的技术旨在结合运动估计和光流估计进行(全局)细分。
对于相机的位姿估计,使用(2)对(7)中的误差项进行重新表述:
使用李代数参数化 S E ( 3 ) SE(3) SE(3)中的元素,通过最小化代价函数可以得到最优解:
该方法将动态SLAM作为一个图优化问题来细化相机位姿和目标运动,并建立包含静态和动态结构的全局一致地图。我们将动态SLAM问题建模为一个因子图,如图3所示。因子图公式具有很强的直观性,它的优点是允许有效的实现批次处理 (Dellaert and Kaess (2006); Agarwal et al. (2012))和增量求解器(Kaess et al. (2011); Polok et al. (2013); Ila et al.(2017))
四种测量/观测被整合到一个联合优化问题中:三维点测量,视觉里程计测量,动态目标上点的运动的观测和目标平滑运动的观测。定义三维点的测量模型误差为:
三维点测量因子如图3中的白色圆圈所示。
里程计因子如图3中橙色圆圈所示。
被测刚体 l l l上所有点的运动特征都由式(6)给出的相同位姿变换0k-1Hlk ϵ \epsilon ϵ S E ( 3 ) SE(3) SE(3)描述,对应因子是一个三元因子,如图3中洋红色圆圈所示,我们称之为刚体上点的运动模型。
研究表明,在动态SLAM中,结合场景中目标运动的先验知识是非常有价值的(Wang et al. (2007);Henein et al.(2020)).由于相机帧率和“控制相对较大目标(车辆)运动的物理定律的影响,并且为了防止它们的运动突然改变,我们引入平滑运动因素,用来最小化连续目标运动的变化,其中的误差项可以定义为:
目标平滑运动因子用于最小化连续时间帧间目标运动的变化,如图3中青色圆圈所示。
我们使用李代数参数化运动目标 S E ( 3 ) SE(3) SE(3)中的元素:
设 θ \theta θ= θ \theta θx ∪ \cup ∪ θ \theta θM ∪ \cup ∪ θ \theta θH代表图中所有节点,利用 S E ( 3 ) SE(3) SE(3)对X和H使用李代数参数化(将(8)代入(16)和(17),将(20)代入(18)和(19),得出最小二乘代价的解为:
系统采用Levenberg-Marquardt(L-M)方法求解(21)中的非线性最小二乘问题。
在本节中,我们提出了一种新的目标感知动态SLAM系统,该系统可以稳健地估计相机和目标的运动,以及环境的静态和动态结构。整个系统概述如图4所示。该系统由图像预处理、跟踪和建图三个主要部分组成。
系统的输入是双目图像或RGB-D图像。对于双目图像,首先采用 Yamaguchi et al. (2014)描述的双目深度估计方法提取深度信息,生成深度地图,所得数据被处理为RGB-D形式。
虽然本系统最初设计为RGB-D系统,但为了充分利用基于图像的语义信息,我们采用了单目相机的单幅图像深度估计来获取深度信息。我们的“基于学习的单目”系统是单目的,因为系统只使用RGB图像作为输入,而估计问题是利用RGB- D数据的,图像的深度是通过单幅图像深度估计得到的。
这个模块需要满足两个挑战问题。一是将静态背景与(动态)目标实现鲁棒地分离,二是保证对于动态目标的长期跟踪。为了实现这一目标,我们利用了计算机视觉的最新技术,例如水平语义分割和密集光流估计,以确保高效的目标运动分割和鲁棒的目标跟踪要求。
使用实例级语义分割对场景中潜在的可移动位姿进行分割和识别。语义信息是区分静止和运动目标点的重要先验,例如建筑物和道路总是静态的,而汽车可以是静态的,也可以是动态的。实例分割有助于将语义前景进一步划分为不同的实例mask,从而更容易跟踪每个单独的位姿。此外,分割mask提供了一个“精确”的目标边界,以确保对目标上的点的鲁棒跟踪。
利用密集光流可以最大化跟踪运动目标上点的数量。大多数运动目标只占图像的一小部分。因此,使用稀疏特征匹配不能保证鲁棒性和长期的特征跟踪。我们的方法利用了密集光流,通过对语义mask内的所有点进行采样来显著增加(对于运动)目标(提取出的)点的数量。密集光流还可以通过分配给目标mask每个点的唯一标识符来持续地跟踪多个位姿。在语义分割失败的情况下,(DVO-SLAM)可以恢复目标mask;而使用稀疏特征匹配很难实现这种任务。
跟踪组件包括两个模块;相机自身运动跟踪包括特征检测和相机位姿估计子模块,目标运动跟踪包括动态目标跟踪和目标运动估计子模块。
为了实现快速的相机位姿估计,我们检测一组稀疏的角点特征并利用光流对其进行跟踪。在每一帧中,只有拟合相机运动估计的内点才被保存到地图中,用于跟踪下一帧的对应(点)。如果跟踪到的内点的数量低于某一阈值,系统就会检测并添加新的特征。在静态背景下检测到的稀疏特征中,图像区域不包括被分割的位姿。
对于所有检测到的3D-2D对应静态点,DVO-SLAM使用公式(13)可以计算得到相机位姿。为了保证估计的鲁棒性,系统采用运动模型生成方法对数据进行初始化。具体说来,该方法基于重投影误差生成了两个模型,并对两个模型的内值进行了比较。一个模型是通过计算相机之前的运动生成的,而另一个模型是通过使用RANSAC的P3P ((Ke and Roumeliotis (2017))算法计算新的运动变换生成的。系统会选择产生较多内点的运动模型进行初始化操作。
运动目标的跟踪过程分为两个步骤。第一步将分割的目标分为静态目标和动态目标。第二步通过连续的帧来关联动态目标。
与光流法不同,场景流(理想情况下仅由场景移动引起)可以直接决定某些结构是否有过移动。理想情况下,对应于所有静态三维点的场景流向量的大小应该为零。然而,在深度和匹配方面的噪声或错误会使真实场景中的情况复杂化。为了稳健地处理这个问题,我们会对每个目标上的所有样本点计算它们的场景流大小。如果场景中某些点的场景流数值大于预先设定的阈值,则认为该点是运动的。在本系统进行的所有实验中,这个阈值都被设置为0.12。如果“动态”点的比例高于某一水平(所有点数的30%),则该目标会被识别为是运动的,否则该目标为静止的。如前文所述,(设置)阈值是用于识别一个位姿是否是动态的,为了(使结果)更加保守,系统可以灵活地将一个静态位姿建模为动态位姿,并每个时间步长对其估计出一个(大小为)零的运动。然而,如果进行相反的处理,则会降低系统的性能。
理想情况下,对于k帧中的每个被检测位姿,其所有点的标签都应该唯一地与k-1帧中的对应标签对齐。但在实际应用中,这会受到噪声、图像边界和遮挡的影响。为了克服这个问题,我们给所有的点都贴上了标签,当这些点对应起来时就会使标签的数目达到最大。对于一个动态目标而言,如果它前一帧中最频繁的标签为0,这意味着该目标(在这一帧才)开始移动,出现在场景的边界上,或者从遮挡中重新出现。在这种情况下,该位姿会被分配一个新的跟踪标签。
如上文所述,(运动)目标在场景中通常是小范围出现的,很难得到足够的稀疏特征来稳健地跟踪和估计目标的运动。我们对所有位姿mask内的第三个点进行了采样,并在图像帧之间对它们进行跟踪。与相机位姿估计相似,只有内点会被保存进地图中并用于下一帧的跟踪。当跟踪的目标点减少到一定水平以下时,会对目标进行采样并添加新的目标点。我们采用了4.2.2节中讨论的方法来生成初始目标运动模型。
在地图模块中,系统会构造并维护一个全局地图。同时,系统会从全局地图中提取出一个基于当前时间步长和前一个时间步长窗口的局部地图。两个地图都是通过批量优化过程更新的。
我们的系统会维护和更新一个局部地图。局部批量优化的目标是确保将精确的相机位姿估计提供给全局批量优化。相机位姿估计对目标运动估计的精度和算法的整体性能有很大的影响。局部地图是使用一个固定大小的包含最后一帧信息的滑动窗口构建的。局部地图会共享一些公共信息:这会造成不同窗口之间的重叠。我们选择只在窗口大小范围内局部优化相机位姿和静态结构,因为局部优化动态结构不会给优化带来任何好处,除非在窗口内假设存在硬约束(例如目标的恒定运动)。但是,如果需要的话,系统能够在局部地图中合并静态和动态结构。当一个局部地图以类似的方式构造时,因子图优化将执行来细化局部地图中的所有变量,然后将它们在全局地图中进行更新。
跟踪模块的输出和局部批量优化包含了相机位姿、目标运动和内点结构。它们被保存在一个全局地图中,这个全局地图是由之前的所有时间帧构建的,并且随着每一个新的时间帧的加入不断更新。在处理完所有输入帧后,系统会基于全局地图构造因子图。为了有效地获得时间约束,系统在因子图中只添加被跟踪超过3个实例的点。该图被表述为如3.3节中描述的优化问题。优化结果将作为整个系统的输出。
维护地图可以为跟踪模块估算当前状态时提供历史信息,如图4所示,蓝色箭头从全局地图指向系统跟踪模块的多个组件。利用最后一帧的内点可以跟踪当前帧中的对应点并估计相机位姿和目标运动。最后的相机和目标运动也可能作为先验模型来初始化4.2.2和4.2.4节中所述的当前估计问题。此外,在语义位姿分割失败导致“间接遮挡”的情况下,通过利用之前分割的mask,(运动)目标(上提取出的)点可以帮助(系统实现)跨帧关联语义mask,以确保对目标的鲁棒跟踪。
我们评估了DVO-SLAM在相机运动,目标运动和速度(检测),以及目标跟踪情况下的性能。对室内场景的牛津多运动数据集(Judd and Gammell (2019))和户外场景的KITTI跟踪数据集(Geiger et al.(2013))进行了评估。我们还将结果与两个最新的方法,MVO(judd et al.(2018))和CubeSLAM(Yang and Scherer(2019))进行对比,以证明VDO-SLAM的卓越性能。
我们采用基于学习的实例级位姿分割Mask R-CNN (He et al.(2017))来生成位姿分割mask。该方法的模型在COCO 数据集上训练(Lin et al.(2014)),可以直接用于本工作中,不需要进行任何微调。对于密集光流,我们利用了最先进的方法PWC-Net (Sun et al.(2018))(进行测试)。该模型在FlyingChairs数据集上进行训练(Mayer et al. (2016)),然后在Sintel上进行微调(Butler et al.(2012)和在KITTI数据集上进行训练(Geiger et al., 2012)。为了在我们系统的“单目”版本生成深度地图,我们采用了一种基于学习的单目深度估计方法MonoDepth2 (Godard et al.(2019)).。在排除本文测试数据的情况下,对该模型进行了深度特征分割(Eigen et al.(2014))训练。特征检测使用FAST完成(Rosten and Drummond(2006))( Rublee et al. (2011)).
我们使用位姿变化误差来评估VDO-SLAM估计的SE(3)运动,即给定一个真值运动变换矩阵T和相应的估计运动矩阵 T ^ \hat{T} T^(进行对比),其中T ϵ \epsilon ϵSE(3)既可以描述为一个相机相对位姿也可以是一个目标运动。位姿变化误差可以通过:E= T ^ \hat{T} T^-1T求得。平移误差Et通过计算E的平移分量的L2范数求得。旋转误差Er通过计算E的旋转分量的轴角表示的旋转角度来计算。对于不同的相机时间步长和序列中不同的目标,我们分别计算相机位姿和目标运动的均方根误差(RMSE)。利用目标位姿的真值,将惯性坐标系中的位姿变化转换为目标坐标系中,我们可以得到目标固定坐标系中的位姿变化数值:
我们也评估了(运动)目标的速度误差。利用位姿变化量并取其差值,即可得到该目标上一点在惯性坐标系中表示的线速度大小。
为了得到更可靠的测量结果,我们对在特定时间的一个(运动)目标上所有点取平均:
则估计速度与真实速度之间的速度误差可以计算为:Es=| v ^ \hat{v} v^|-| v v v|。对于在时间帧上跟踪的不同位姿,我们也计算RMSE作为误差指标。
最新的牛津多运动数据集(Judd and Gammell(2019))包含了通过移动双目或RGB-D相机传感器在室内场景中观察多个摆动箱或玩具车的视频序列。通过Vicon运动捕捉系统我们可以获取相机和运动目标的真实运动轨迹。我们只选择了摆动箱SLAM序列进行评估,因为真实驾驶场景的结果是在KITTI数据集上进行评估的。表1显示了DVO-SLAM与最先进的MVO(Judd et al. (2018))比较的结果。由于MVO是一个没有全局优化(模块)的视觉里程计系统,我们关闭了DVO-SLAM系统中的批量优化模块,并生成结果来进行公平的对比。我们使用了5.2节中描述的误差指标(进行评估)。
总体来说,我们的方法在10个误差指标中有7个对于(数据集中)4个摆动箱的相机位姿估计和运动估计问题表现出了更高的精度。特别地,我们的方法在估计左上角和左下角的相机的位姿和摆动箱的运动时性能可以提高50%。当观测目标的旋转运动时,特别是观测右上角和右下角的摆动箱时我们的系统会产生相对较高的误差。有趣的是,我们提出的算法在这些情况下的表现不如Judd et al. (2018),因为本算法不是为此类运动和场景设计的,而是为观测相对较大的户外目标的运动而设计的,例如城市驾驶场景。我们认为这是由于使用的光流算法不能很好地优化旋转目标。其结果是对(旋转目标上)点运动的估计能力较差,从而导致目标跟踪性能的下降。即使在对于观测旋转目标的相关性能较差的情况下,密集光流运动估计在其他指标上的好处依然是显而易见的。
图5显示了我们算法在牛津多运动数据集上的地图输出结果。摆动箱上的动态特征轨迹在视觉上与箱体的实际运动轨迹相对应。从图5中左下角紫色框的摇摆运动中可以清楚地看出这一点。
KITTI跟踪数据集(Geiger et al.(2013))包含21个序列,其中包含关于相机和目标位姿的真值信息。在这些序列中,有些不包括在我们系统的评估要求中;因为它们不包含移动目标(只有静态场景)或只包含非刚性目标的行人,这超出了本系统的能力范畴。
表2给出了DVO-SLAM在9个序列中对于相机和目标运动估计的结果,与CubeSLAM (Yang and Scherer(2019))给出了的5个序列的结果做对比。我们最初尝试用我们的默认参数来评估CubeSLAM,但会产生很大的错误,因此我们只比较了由CubeSLAM的作者提供的序列结果。由于CubeSLAM是用于单目相机的,我们也计算了DVO-SLAM基于学习的单目版本(如第4节所述)的结果,来进行公平的对比。
总体来说,我们提出的RGB-D和基于学习的单目方法在相机和目标运动估计方面都获得了很高的精度。与CubeSLAM相比,我们的RGB-D版本在(计算)相机运动方面的误差更低,而我们基于学习的单目版本的误差较高。然而,这两个版本在目标运动估计中都获得了一致的较低的误差。特别的,如图6所示,CubeSLAM的平移误差和旋转误差均在3米和3度以上,极端情况下的误差分别达到32米和5度。而在(使用)RGBD版本的情况下,我们的平移误差在0.1-0.3米之间,旋转误差在0.2-1.5度之间,在(使用)单目学习版本的情况下,我们的平移误差在0.1-0.3米之间,旋转误差在0.4-3度之间,这说明了我们的目标运动估计能力(相对于CubeSLAM)有了一个数量级的提高。
我们还演示了系统对于动态目标跟踪的性能,并展示了对于目标速度估计的结果,这是自主驾驶应用的重要信息。图7给出了在所有测试序列中,一些选中目标(跟踪超过20帧)的跟踪长度和速度(估计)的结果。我们的系统能够跟踪大多数目标在其出现的序列中超过80%的比例。此外,我们估计的目标速度始终与其真实速度接近。
除了在5.4节和5.3节的评估之外,我们还提供了详细的实验结果,以证明我们提出的系统中关键模块的有效性。最后,我们将讨论该系统的计算成本。
图优化利用空间和时间信息细化相机位姿和目标运动,以及静态和动态结构。这个过程需要在数量和质量上对正确的点进行鲁棒的跟踪。这是通过结合运动估计对光流估计进行细化实现的,如3.2.3节所述。通过对a的比较,证明了联合优化的有效性,通过将只对(9)相机运动或(11)只对目标运动进行优化的基线方法和对运动和光流(结合)都进行优化的改进方法(使用(13)或(15))进行比较,可以显示出联合优化方法的高效性。表3显示,联合方法可以获得更多的(保证系统可以)长期跟踪的点。
利用联合估计方法得到的跟踪点,系统可以更好地估计相机位姿和目标运动。在之前展示的KITTI数据集的9个序列中,系统观察到的平移和旋转误差都得到了大约15%到20%的改善。详情见表4。
在某些情况下,由于直接或间接遮挡(光照变化等),使用mask分割可能会失败。通过在第4.3.3节中描述的mask传播方法,我们提出的系统能够处理由于间接遮挡引起的mask失效问题。图9展示了DVO-SLAM跟踪一辆白色货车80帧的示例,其中掩模分割在33帧中失败了。尽管目标分割失败,我们的系统仍然能够持续跟踪货车,在整个序列中估计得到速度误差的平均值为2.64km/h。在序列的后半部分,由于部分遮挡和目标离相机越来越远等的原因,系统测得的速度误差变大。
初始目标运动估计(在系统的跟踪部分)是独立于帧之间的,因为它纯粹与传感器的测量能力有关。如图10所示。蓝色曲线描述了在KITTI跟踪数据集的03序列中观察了55帧的货车的初始目标速度估计。如图所示,速度估计不平滑,在序列的后半部分出现了较大的误差。这主要是由于目标距离相机的距离增加导致,整个目标只占据了场景的一小部分。在这种情况下,使用传感器单独测量目标的运动估计变得具有挑战性且十分容易出错。因此,和在第3.3节讨论的内容相同,我们制定了一个因子图并对静态和动态结构都进行了细化。图10中的绿色曲线显示的是全局细化后的目标速度估计结果,序列的前半部分曲线变得更加平滑,后半段(误差)也得到了显著的改善。
最后,我们提供DVO-SLAM系统的计算分析结果。实验在一台16GB内存的Intel Core i7 2.6 GHz笔记本电脑上进行。对目标语义分割和密集光流计算时间取决于电脑的GPU性能和CNN模型的复杂度。许多最新的算法都可以(在上面进行)实时运行(Bolya et al. (2019);Hui et al. (2020))。在本文中,语义分割和光流结果都是离线生成并输入到系统中。整个SLAM系统在CPU上用c++实现,使用修改后的g2o作为其后端 (K¨ummerleet al. (2011))。我们在表5中显示了DVO-SLAM在两个数据集上的计算时间。在局部批量优化中,窗口大小被设置为20帧,并有4帧的重叠。每个系统组件在所有帧和序列上的时间成本都是平均的。总的来说,我们提出的系统的跟踪部分可以根据检测到的运动物体的数量以5-8帧每秒的帧率运行,采用并行计算可以进一步改善性能。全局批量优化的运行时间很大程度上取决于场景中相机位姿数量(帧数)和目标密度(根据每帧观察到的动态目标的数量计算得到)。
在本文中,我们介绍了VDO-SLAM。这是一种新颖的基于动态特征的,基于场景中图像语义信息的,不需要额外的目标位姿或几何信息,就可以实现对动态目标同步定位、建图和跟踪的SLAM系统。该系统可以在室内和具有挑战性的室外数据集中获得全局一致的鲁棒性和准确性的结果,并能在目标运动估计方面展示其卓越的性能。我们认为在目标运动估计中之所以能取得高精度结果是由于我们的系统是一个基于特征的系统。特征点(法)仍然是SLAM系统中最容易检测,跟踪和集成的(方法),不需要前端提供任何关于目标模型的额外信息。
如何减少动态目标的SLAM计算复杂度是一个重要的课题。在长期应用,不同的技术可以被应用来限制图像数量的增长(Strasdat et al. (2011); Ila et al.(2010)).事实上,总结/删除很久之前观测到的动态目标相关的地图点,似乎是长期SLAM系统适应高度动态环境的自然**(nature)**处理手段。
图1。VDO-SLAM系统的结果。(上图)一个完整的地图,包括相机轨迹,静态背景和移动目标的结构。(下图)静态背景上(运动)目标检测得到的点,以及被估计的目标(移动)速度。黑色的圆圈代表静态点,每个目标都用不同的颜色显示。
图2。符号和坐标系。实线曲线表示相机和目标在惯性坐标系下的位姿;虚线曲线表示了在目标固定坐标系中0X和0L各自的运动。实线表示惯性坐标系中的三维点,虚线表示相机坐标系中的三维点。(0X,0L分别为在全局参考系0中机器人/相机和目标的三维位姿)
图3。带有移动位姿的目标感知SLAM的因子图。黑色方块表示相机在不同时间步长的位姿,蓝色方块表示三个静态点,红色方块表示一个运动目标(虚线框)在不同时间步长的相同动态点,绿色方块表示目标在不同时间步长的位姿变化。为了便于可视化,这里只画一个动态点,不过在估计时,被检测动态位姿上的所有点都会被使用到。先验一元因子以黑色圆圈表示,测程二值因子以橙色圆圈表示,点测量二值因子以白色圆圈表示,点运动三值因子以洋红色圆圈表示,平滑运动二元因子以青色圆圈表示。
图4。VDO -SLAM系统概述。首先对输入图像进行预处理,生成实例级位姿分割和密集光流。然后,对预处理后的图像跟踪静态背景结构和动态位姿的特征。接着在全局批量优化中细化根据特征轨迹估计得到的相机位姿和目标运动,并根据每一帧更新局部地图。该系统能够输出相机位姿,静态结构,动态目标位姿的轨迹,并可以估计其随时间的位姿变化情况。
表1。VDO-SLAM与MVO (Judd et al. (2018))在牛津多运动数据集中的swinging-4_unconstrained序列上对于相机和目标运动估计精度的比较结果。粗体的数字表示更好的结果。
图5。我们的方法对牛津多运动数据集的定性结果。(左图:)含有相机轨迹、静态结构和动态点轨迹的3D地图。(右图:)静态背景和运动目标上检测得到的点。黑色点对应静态点,每个目标上的特征以不同的颜色显示。
图6。VDO-SLAM与CubeSLAM (Yang and Scherer (2019))对于目标运动估计精度的比较结果。颜色竖条对应于左边y轴的数值,表示对数尺度下的平移误差。曲线表示旋转误差,在线性尺度上对应于右y轴。
表2。VDO-SLAM与CubeSLAM (Yang and Scherer (2019))在KITTI数据集的第九个序列上对于相机和目标运动估计精度的比较结果。粗体的数字表示更好的结果。
图7。跟踪性能和速度估计。由于空间的限制,VDO-SLAM对于一些选定的目标(跟踪超过20帧)的跟踪长度和速度的演示结果。颜色条表示运动目标轨迹的长度,与左y轴相对应。圆圈代表目标的移动速度,与右y轴相对应。GT表示真值, EST.表示估计值。
表3。在KITTI数据集的9个序列上跟踪超过5帧的点的数量。粗体的数字表示更好的结果。粗体下划线的数字表示增加的数量级。
表4。KITTI数据集第九个序列上的(DVO-SLAM系统的)平均相机位姿和目标运动误差。粗体的数字表示更好的结果。
图8。系统输出的图例展示:含有相机位姿,静态背景结构,和动态目标位姿轨迹的动态地图。如图是VDO-SLAM对KITTI序列的样本结果。黑色点代表静态背景,每个检测到的(运动)目标都用不同的颜色显示。左上角的图片表示01序列,并对序列末尾结果进行了放大展示,右上角的图片表示06序列,底部的图片表示03序列。
图9。当语义分割失败时,系统跟踪和速度估计的鲁棒性展示。如图是一个在00序列上对于白色货车(地面真实平均速度20km/h)在VDO-SLAM下跟踪和速度估计性能的展示例子。(上图)蓝色竖条代表成功的目标分割,绿色曲线代表目标的检测速度误差。(左下图)对货车语义分割失败的图例展示。(右下图)VDO-SLAM在货车(语义分割)之前的跟踪特征结果
图10。全局细化对目标运动估计的影响。在序列03上对沿直线前进的货车的速度估计结果如图所示。蓝色线条表示初始估计速度,绿色线条表示全局细化后的估计速度,红色为速度真值。
表5。在两个数据集上的不同系统组件的运行时间。每个组件的运行时间是所有帧和序列的用时的平均值。特别的,目标运动估计时间统计需要对目标数量的取平均,局部批处理优化时间统计需要对帧数量的取平均。
欢迎加入公众号读者群一起和同行交流,目前有SLAM、检测分割识别、三维视觉、医学影像、GAN、自动驾驶、计算摄影、算法竞赛等微信群(以后会逐渐细分),请扫描下面微信号加群,备注:”昵称+学校/公司+研究方向“,例如:”张三 + 上海交大 + 视觉SLAM“。请按照格式备注,否则不予通过。添加成功后会根据研究方向邀请进入相关微信群。请勿在群内发送广告,否则会请出群,谢谢理解~
投稿、合作也欢迎联系:[email protected]
长按关注计算机视觉life