RDS-SLAM论文翻译

RDS-SLAM:基于语义分割方法的实时动态SLAM

摘要-在典型的视觉同步定位与映射(vSLAM)算法中,场景刚性是一个很强的假设。这种强烈的假设限制了大多数vSLAM在动态现实环境中的使用,而动态现实环境是增强现实、语义映射、无人驾驶汽车和服务机器人等几个相关应用的目标。提出了许多解决方案,使用不同类型的语义分割方法(例如,Mask R-CNN, SegNet)来检测动态对象并去除异常值。然而,据我们所知,这类方法的架构是在跟踪线程中等待语义结果,处理时间取决于所使用的分割方法。本文提出了一种基于ORB-SLAM3的实时视觉动态SLAM算法RDS-SLAM,该算法增加了一个语义线程和一个基于语义的优化线程,用于动态环境下的实时鲁棒跟踪和建图。这些新线程与其他线程并行运行,因此跟踪线程不再需要等待语义信息。此外,我们提出了一种尽可能获取最新语义信息的算法,从而可以统一使用不同速度的分割方法。我们使用移动概率更新和传播语义信息,将其保存在地图中,并使用数据关联算法从跟踪中去除异常值。最后,我们使用公共TUM RGB-D数据集和Kinect相机在动态室内场景中评估跟踪精度和实时性能。
索引词-动态SLAM,ORBSLAM,Mask R-cnn,SegNet,实时

1.引言

同时定位和绘图(SLAM)[1]是许多应用的基础技术,如增强现实(AR)、机器人技术和无人驾驶汽车(UAV)。Visual SLAM (vSLAM)[2]使用相机作为输入,在场景理解和决策方面很有用。然而,强烈的场景刚性假设限制了大多数vSLAM在现实环境中的使用。动态对象在SLAM过程中会产生许多不良或不稳定的数据关联,从而积累漂移。例如,在图1中,假设m1在一个人身上,并且它在场景中的位置发生了变化。不良或不稳定的数据关联(图1中的红线)将导致在动态环境中不正确的相机自运动估计。通常,vSLAM有两个基本要求:跟踪的鲁棒性和实时性。因此,如何在填充场景中检测动态物体并防止跟踪算法使用与这些实时动态对象相关的数据关联是允许在现实世界中部署vSLAM的挑战。
在这里插入图片描述
我们将解决方案分为两类:纯基于几何[3][7]和基于语义[8][13]的方法。这些基于几何的方法不能去除所有潜在的动态对象,例如,坐着的人。这些物体上的特征是不可靠的,也需要从跟踪和建图中删除。这些基于语义的方法使用语义分割或对象检测方法来获取潜在动态对象的逐像素掩码或边界框。坐着的人可以被检测到,并从跟踪和建图中移除,使用语义信息和静态对象的地图可以建立。通常,在基于语义的方法中,几何检查,如随机样本一致性(RANSAC)[14]和多视图几何,也用于去除异常值。这些基于语义的方法首先检测或分割对象,然后从跟踪中去除异常值。跟踪线程在跟踪之前必须等待语义信息(相机自运动估计),本文称之为阻塞模型(如图2所示)。在这里插入图片描述
其处理速度受到所用语义分割方法耗时的限制。例如,Mask R-CNN分割一幅图像大约需要200ms[15],这将限制整个系统的实时性。
我们的主要挑战是如何在动态场景下使用各种以不同速度运行的逐像素语义分割方法(如SegNet和Mask R-CNN)实时执行vSLAM。我们提出了一个语义线程来等待语义信息。它与跟踪线程并行运行,跟踪线程不需要等待段结果。因此,跟踪线程可以实时执行。
本文称其为非阻塞模型。较快的分割方法(例如SegNet)可以比较慢的方法(例如Mask R-CNN)更频繁地更新语义信息。虽然我们无法控制分割速度,但我们可以使用一种策略来获取尽可能最新的语义信息,从而从当前帧中去除异常值。
由于语义线程与跟踪线程并行运行,我们使用地图点来保存和共享语义信息。如图1所示,我们使用移动概率更新和传播语义信息,并根据移动概率阈值将地图点分为静态、动态和未知三类。
这些分类的地图点将用于在跟踪中选择尽可能稳定的数据关联。本文的主要贡献有:
(1)提出了一种新的基于语义的实时动态vSLAM算法RDS-SLAM,使得跟踪线程不再需要等待语义结果。该方法在保持算法实时性的同时,有效地利用语义分割结果进行动态目标检测和异常点去除。
(2)提出了一种关键帧选择策略,该策略尽可能使用最新的新语义信息,以便在任何不同速度的语义分割方法中以统一的方式去除异常点。
(3)使用TUM数据集,我们证明了该方法的实时性优于现有的同类方法。
本文的其余部分结构如下。第二节论述了相关工作。第三部分描述了系统概述。第四、五、六节详细介绍了所提方法的实现。第七节展示了实验结果,第八节给出了结论并讨论了未来的工作。

2.相关工作

A.视觉slam

vSLAM[2]可分为基于特征的方法和直接方法。mr - artal等人提出了ORB-SLAM2[16],这是一个完整的SLAM系统,适用于单目、立体和RGB-D相机,可在各种环境下的标准cpu上实时工作。该系统通过匹配当前帧与前一帧之间对应的ORB[17]特征来估计相机的自运动,并有三个并行线程:跟踪、局部建图和闭环。Carlos等人提出了最新版本的ORB-SLAM3[18],主要增加了两个新颖之处:1)基于特征的紧密集成视觉惯性SLAM,完全依赖于最大后验估计(MAP);2)多地图系统(ATLAS[19]),它依赖于一种新的地方识别方法,提高了召回率。与基于特征的方法相比,例如,Kerl等人提出了一种用于RGB-D相机的密集视觉SLAM方法,DVO[20],该方法可以最大限度地减少所有像素的光度和深度误差。然而,上述方法都不能解决动态对象的常见问题。动态场景中动态目标的实时检测和处理是vSLAM中的一项具有挑战性的任务。
我们的工作遵循ORB-SLAM3的实现[18]。在我们的实现中还使用了ORB-SLAM3中的概念:关键帧、共可视性图、ATLAS和束调整(BA)。

1)关键帧

关键帧[18]是为了避免跟踪和优化中不必要的冗余而选择的帧的子集。每个关键帧存储1)相机姿态的刚体变换,将点从世界变换到相机坐标系2) ORB特征,关联或不关联到一个地图点。本文采用与ORB-SLAM3相同的策略选择关键帧;如果满足以下所有条件,则选择一个关键帧:1)从最后一次全局重新定位或最后一次关键帧插入已经经过了20帧;2)局部建图线程空闲;3)当前帧比参考关键帧至少跟踪50个点或小于90%点。

2)共视图

共可视性图[16]被表示为无向加权图,其中每个节点是一个关键帧,边缘保存常见观测到的地图点的个数。

3)ALTAS

Atlas[19]是一种多地图表示,可以处理无限数量的子地图。在地图集中管理两种地图,活动地图和非活动地图。当摄像机跟踪被认为丢失并且重新定位失败几帧时,活动地图将变为非活动地图,并初始化新地图。在图集中,关键帧和地图点使用共视图和生成树进行管理。

B.基于几何的解决方案

Li等[5]提出了一种基于帧到关键帧配准的动态环境下基于实时深度边缘的RGB-D SLAM系统。它们只使用深度边缘点,这些点具有关联的权重,表明其属于动态对象的概率。Sun等[6]利用对量化深度图像的分割对像素进行分类,并计算连续RGB图像之间的强度差。Tan等人[3]提出了一种新的在线关键帧表示和更新方法来自适应地对动态环境建模。使用一种新颖的基于先验的自适应RANSAC算法,即使在具有挑战性的情况下,也可以可靠地估计相机姿态,以有效地去除异常值。
动态环境下基于几何的vSLAM解决方案虽然在一定程度上限制了动态目标的效果,但也存在一定的局限性:1)无法检测到暂时保持静态的潜在动态目标;2)语义信息缺失。我们不能使用场景的先验知识来判断动态对象。

C.基于语义的解决方案

在ORB-SLAM2[16]上实现的DS-SLAM[10]将语义分割网络(SegNet[22])与移动一致性检查相结合,以减少动态对象的影响并生成密集的语义八树图[23]。DS-SLAM假设人身上的特征点最有可能是离群值。如果一个人被确定为静止的,那么这个人身上的匹配点也可以用来预测相机的姿势.
DynaSLAM[9]也是基于ORB-SLAM2构建的,通过增加动态目标检测和背景绘制功能,在单目、立体和RGB-D数据集的动态场景中具有鲁棒性。它可以通过多视图几何、深度学习或两者同时检测移动物体,并使用场景的静态地图绘制被动态物体遮挡的框架背景。它使用Mask R-CNN来分割出所有先验的动态对象,如人或车辆。DynaSLAM II[24]紧密集成了多目标跟踪能力。但这种方法只适用于刚性物体。然而,在TUM[25]数据集的动态场景中,人们时而站时而坐,改变着他们的形状。

Detect-SLAM[12]同样建立在ORB-SLAM2的基础上,将视觉SLAM与单镜头多盒探测器(single-shot multi-box detector, SSD)[26]相结合,使两者功能互补。他们把一个特征点属于一个运动物体的概率称为运动概率。他们将关键点分为四种状态:高置信度静态、低置信度静态、低置信度动态和高置信度动态。考虑到检测的延迟和连续帧的时空一致性,他们只使用关键帧的彩色图像进行SSD检测,同时在跟踪线程中逐帧增加概率。一旦获得检测结果,他们将关键帧插入到局部地图中,并更新局部地图上的移动概率。然后他们更新与关键帧匹配的局部地图中3D点的移动概率。
DM-SLAM[11]结合Mask R-CNN、光流和极外约束来判断离群值。自我运动估计模块估计相机的初始姿态,类似于低成本跟踪模块在DynaSLAM。DM-SLAM还使用先验动态对象中的特征,如果它们没有剧烈移动,以减少删除所有先验动态对象导致的无特征情况。
DM-SLAM[11]结合Mask R-CNN、光流和极外约束来判断离群值。自我运动估计模块估计相机的初始姿态,类似于低成本跟踪模块在DynaSLAM。DM-SLAM还使用先验动态对象中的特征,如果它们没有剧烈移动,以减少删除所有先验动态对象导致的无特征情况。
所有这些方法都使用阻塞模型。在估计相机姿态之前,它们等待每帧或关键帧的语义结果。因此,他们的处理速度受到他们使用的特定CNN模型的限制。本文提出了一种采用非阻塞模型的RDS-SLAM方法,并通过与这些方法的比较来展示其实时性。

3.系统概述

每个帧将首先通过跟踪线程。在跟踪上一帧后,估计当前帧的初始相机姿态,并通过局部地图跟踪进一步优化。然后,选择关键帧,它们在语义跟踪、基于语义的优化和局部建图线程中是有用的。我们修改了跟踪和局部建图线程中的几个模型,利用语义信息去除相机自运动估计中的异常值。在跟踪线程中,我们提出了一种数据关联算法,尽可能地使用静态对象上的特征。
语义线程与其他线程并行运行,从而不阻塞跟踪线程,并将语义信息保存到图集中。语义标签用于生成先验动态对象的掩码图像。利用语义信息更新与关键帧中特征匹配的地图点的移动概率。最后,利用图集中的语义信息对相机姿态进行优化。
我们将在接下来的章节中介绍新特性和修改后的模型。我们跳过与ORB-SLAM3相同的模块的详细解释。
在这里插入图片描述

4.语义线程

语义线程负责生成语义信息并将其更新到地图集地图中。在介绍语义线程的详细实现之前,我们使用一个简单的示例来解释一般流程,如图4所示。假设每两帧选择一些关键帧。关键帧由ORB- SLAM3选择并依次插入到关键帧列表KF中。假设,在t = 12时刻,KF2-KF6在KF内。下一步是从KF中选择关键帧,以便从语义服务器请求语义标签。本文将此过程称为语义关键帧选择过程。我们从KF的头部(KF2)和后部(KF6)取一个关键帧来请求语义标签。然后,我们使用语义标签S2和S6计算先验动态对象的掩码。接下来,我们更新存储在地图集中的地图点的移动概率。移动概率稍后将用于从跟踪线程中移除异常值。
在这里插入图片描述
算法1显示了语义线程的详细实现。第一步是从关键帧列表KF中选择语义关键帧(第2行)。接下来,我们从语义模型中请求语义标签并返回语义标签SLs(第3行)。第4-8行是保存和处理每个返回项的语义结果。第6行生成动态对象的掩模图像,第7行更新存储在图集中的移动概率。我们将依次介绍语义线程的每个子模块(见图3)。
在这里插入图片描述

A.语义关键帧选择算法

语义关键帧选择算法是为以后请求语义标签选择关键帧。我们需要在使用不同的语义分割方法的同时保持实时的性能。然而,其中一些方法,如Mask R-CNN,耗时长,如果我们按顺序分割每个关键帧,当前帧可能无法获得新的语义信息。
为了定量地评估距离,我们定义了语义延迟,即具有保存最新语义信息的语义标签(St)的最新帧id与当前帧id (Ft)之间的距离,如下所示:

图5显示了几种情况下的语义延迟。其总体思路是按照图5 (a)所示的时间顺序,对每一帧或关键帧进行顺序分割。我们称这种模型为顺序分割模型。
在这里插入图片描述
然而,在使用耗时的分割方法时,这会单调地增加时间延迟,如图6中的蓝线所示。例如,在时间t =10 (F10)时,语义模型完成了KF0 (F0)的分割,语义延迟d =10。同样,在时间40 (F40)时,语义延迟变为34。也就是说,具有语义信息的最后一帧比当前帧晚34帧。当前帧无法获得最新的语义信息。
为了缩短距离,假设我们同时按顺序分割两帧(图5 (b))。如果同时对KF0和KF1进行分割,则延时变为12 2 =10。延迟仍然呈线性增长,如图6中的红线所示。
在这里插入图片描述
为了进一步缩短语义延迟,我们使用双向模型。我们不按顺序分割关键帧。相反,我们使用列表前后的关键帧进行语义分割,尽可能使用最新的语义信息,如图5 ©和图6中的黄线所示。语义延迟成为一个常数值。在实际中,双向模型中的延迟并不总是10。距离受所使用的分割方法、关键帧选择的频率和相关线程的处理速度的影响。
图7的左侧指示了语义键框选择示例,图7的右侧显示了从语义模型/服务器请求语义信息的时间行。我们从关键帧的头和尾选择请求语义标签。(第一轮)在时间t =2时,选择两个关键帧KF0和KF1。分割在t = 12时完成。这时,新的关键帧被选中,然后插入到KF中(参见第2轮)。然后我们从前面取两个元素KF2,从后面取两个元素KF6来请求语义标签。在时间t =22时,我们收到了语义结果,并继续下一轮(第3轮)。
在这里插入图片描述
如果我们在KF列表的尾部分割关键帧,我们可以获得相对较新的信息。那么为什么我们还需要分割列表前面的关键帧呢?与阻塞模型不同的是,我们的方法中没有前几帧(如果使用Mask R-CNN大约10帧)的语义信息。由于跟踪线的处理速度通常比语义线程更快,因此由于动态对象,VSLAM可能已经累积了大错误。因此,我们需要使用语义信息来纠正这些漂移错误,通过将KF列表正面的关键帧顺序馈送到基于语义的优化线程中,以纠正/优化相机姿势。

B.语义分割

在我们的实验中,我们使用了两个不同速度的模型,Mask R-CNN(较慢)和SegNet(较快),如图8所示。Mask R-CNN[15]是用MS COCO[28]训练的,它既有逐像素的语义分割结果,也有实例标签。我们基于Matterport.1的TensorFlow版本实现了它。SegNet[22]使用Caffe实现,2使用PASCAL VOC[29] 2012数据集进行训练,其中提供了20个类。我们没有使用TUM数据集来优化网络,因为SLAM通常在未知的环境中运行。

C.语义掩膜生成

我们将实例分割结果的所有二值掩模图像合并为一个掩模图像,该掩模图像用于生成人的掩模图像(图8)。然后利用掩模计算地图点的先验移动概率。在实践中,由于物体边界上的分割有时不可靠,直接应用掩模图像无法检测到边界上的特征,如图9 (a)所示。因此,我们使用形态学滤波器扩大掩模,以包括动态对象的边缘,如图9 (b)所示。
在这里插入图片描述
在这里插入图片描述

4.移动概率更新

为了避免在跟踪线程中等待语义信息,我们将语义分割从跟踪中分离出来。我们利用移动概率将语义信息从语义线程传递到跟踪线程。移动概率用于检测和去除跟踪中的异常值。

1)移动概率的定义

我们知道,vSLAM通常是在未知的环境中运行的,如果CNN网络没有根据当前环境进行很好的训练或改进,其语义结果并不总是鲁棒的(图10)。为了检测异常点,考虑帧的时空一致性比只使用一帧的语义结果更合理。因此,我们使用移动概率来利用连续关键帧的语义信息。
在这里插入图片描述

我们定义每个地图点i在当前时刻的移动概率 ( p ( m t i ) , m t i ∈ M ) (p(m^i_t),m^i_t \in M) (p(mti)mtiM),如图11所示。如果地图点的移动概率接近于1,那么它的状态就更有可能是动态的。如果地图点更接近于零,那么它就越静态。为了简化,我们将di地图点i在时刻 t ( p ( m t i ) ) t (p(m^i_t)) t(p(mti))的移动概率简化为p(m_t)。每个地图点有动态和静态两种状态(M),初始概率(初始置信度)设为 0.5 ( b e l ( m 0 ) ) 0.5 (bel(m_0)) 0.5(bel(m0))
在这里插入图片描述
在这里插入图片描述

2)观测移动概率的定义

考虑到语义分割不是100%准确,我们将观察到的移动概率定义为:
在这里插入图片描述
α和β值是人工给出的,它与语义分割的准确性有关。在实验中,我们将α和β值设为0.9,从而使得语义分割相当可靠。

3)移动概率更新

基于观察值 z 1 : t z_{1:t} z1:t(语义分割)和初始状态 m 0 m_0 m0,预测了当前时间 b e l ( m t ) bel(m_t) bel(mt)的移动概率。我们将移动概率更新问题表述为贝叶斯滤波问题[30]:
在这里插入图片描述
在Eq. 2中,利用Bayes规则和条件独立性,即当前观测 z t z_t zt仅依赖于当前状态 m t . η m_t. η mt.η是一个常数。预测 b e l ˉ ( m t ) \bar{bel}(m_t) belˉ(mt)
在这里插入图片描述
在式(3)中,我们假设我们的状态是完全的。这意味着如果我们知道之前的状态 m t − 1 m_{t-1} mt1,过去的测量没有传达关于状态 m t m_t mt的信息。我们假设状态转移概率 p ( m t = d ∣ m t − 1 = s ) = 0 p(m_t =d|m_{t-1} = s) = 0 p(mt=dmt1=s)=0 p ( m t = d ∣ m t − 1 = d ) = 1 p(m_t =d|m_{t-1} =d) = 1 p(mt=dmt1=d)=1,因为我们无法检测到物体的突然变化。 η η η ( b e l ( m t = d ) + b e l ( m t = s ) ) / 2 (bel(m_t = d)+bel(m_t = s))/2 (bel(mt=d)+bel(mt=s))/2计算。属于动态的地图点的概率由以下方式计算。
在这里插入图片描述

4)判断静态和动态点

使用预定义的概率阈值θd和θs判断一个点是动态的还是静态的(见图11)。在实验中分别设置为0.6和0.4。
在这里插入图片描述

5.跟踪线程

跟踪线程是实时运行的,由于动态对象导致的每帧三维地图点与二维特征的数据关联不正确或不稳定,容易积累漂移误差。我们修改了ORB-SLAM3跟踪线程的Track Last Frame模型和Track Local Map模型以去除异常值(见图3)。我们提出了一种数据关联算法,该算法利用存储在地图集中的移动概率尽可能地使用良好的数据关联。

A.跟踪最后一帧

算法2给出了跟踪最后一帧模型的数据关联算法。对于上一帧中的每个特征i,我们首先得到它们匹配的映射点m(第2行)。接下来,我们通过比较ORB特征的描述符距离(第3行)找到当前帧中匹配的特征。为了消除动态地图点的不良影响,我们跳过那些具有较高移动概率的地图点(第4-6行)。然后,剩下两种地图点,静态地图点和未知地图点。我们希望尽可能只使用静态地图点。因此,我们根据其移动概率将剩余的地图点分为两个子集:静态子集和未知子集(第7-12行)。最后,我们使用选择的相对较好的匹配。我们首先使用存储在静态子集中的所有好的数据(第14-16行)。如果这些数据的大小不够(小于阈值τ =20,即ORB-SLAM3中使用的值),我们也使用未知子集中的数据(第17-21行)。
在这里插入图片描述
我们尝试使用存储在地图集中的移动概率从跟踪中排除异常值。异常值去除的好坏对跟踪精度有很大影响。我们在图12中展示了一些帧的结果。前几帧的所有特征都是绿色的,因为没有语义信息可以使用,所有地图点的移动概率为初始值0.5。红色的特征属于动态对象,它们比静态特征(蓝色特征)更难与上一帧匹配。由于地图点随着时间的推移获得了语义信息,因此绿色特征几乎消失。我们只使用静态子集的特征,如果它的大小足以估计相机的自我运动。在这里插入图片描述

B.跟踪局部地图

跟踪局部地图模型中数据关联算法的基本思想与ALG相似。2.不同之处在于,我们在这里使用局部地图中的所有地图点来查找良好的数据关联。在跟踪本地地图后的数据关联结果如图13所示。在此模型中,使用的映射点要多于跟踪最后一帧。人的特征几乎被成功检测到或不匹配/使用。
在这里插入图片描述

6.优化

A.基于语义的优化

我们使用语义关键帧选择算法给出的关键帧来优化相机姿态。由于跟踪线程比语义线程运行速度快,在动态对象的影响下,漂移已经积累了一定程度。因此,我们尝试使用语义信息来校正相机姿态。我们通过使用地图点的移动概率进行加权来修改ORB-SLAM3中使用的误差项,如下所示。在经验中,我们只使用匹配的静态地图点进行优化。
假设 X j w ∈ R 3 X^w_j \in \mathbb R^3 XjwR3为地图点j在世界坐标系中的三维位姿。世界坐标中的第i个关键帧姿态为 T i w ∈ S E ( 3 ) T^w_i\in SE(3) TiwSE(3)。通过最小化地图点的匹配关键点 x i j ∈ R 2 x_{ij}\in \mathbb R^2 xijR2的重投影误差来优化相机姿态 T i w T^w_i Tiw。在关键帧i中观测地图点j的误差项为
在这里插入图片描述
其中 π i π_i πi为投影函数,将三维地图点投影到关键帧i中的二维像素点。移动概率越大,对误差的贡献越小。需要优化的代价函数为
在这里插入图片描述
其中ρ是Huber鲁棒代价函数, Ω i , j − 1 \Omega^{-1}_{i,j} Ωi,j1是协方差矩阵。

B.局部建图中的BA

我们利用语义信息对局部BA模型进行修改,以减少动态地图点的影响。我们修改的是:1)误差项,其中使用移动概率,如式6所示;2) BA只使用已经获得语义信息的关键帧。

7.实验

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值