DS-SLAM:面向动态环境的语义可视化SLAM
摘要-同时定位与绘图(SLAM)被认为是智能移动机器人的一项基本能力。在过去的几十年里,许多印象深刻的SLAM系统已经开发出来,并在某些情况下取得了良好的性能。然而,一些问题仍然没有很好地解决,例如如何处理动态环境中的运动物体,如何使机器人真正理解周围环境并完成高级任务。本文提出了一种面向动态环境的鲁棒语义可视化SLAM方法——DS-SLAM。在DS-SLAM中并行运行五个线程:跟踪、语义分割、局部建图、回环关闭和密集语义映射创建。DS-SLAM将语义分割网络与运动一致性检查方法相结合,减少了动态目标的影响,从而大大提高了动态环境下的定位精度。DS-SLAM将语义分割网络与运动一致性检查方法相结合,减少了动态目标的影响,从而大大提高了动态环境下的定位精度。
1.引言
在过去的几年里,视觉SLAM得到了广泛的研究,因为图像存储了丰富的信息,可以用于其他基于视觉的应用,如语义分割和目标检测。现代视觉SLAM系统的框架相当成熟,通常由特征提取前端、状态估计后端、闭环检测等几个关键部分组成。此外,一些先进的SLAM算法已经取得了令人满意的性能,如orb -SLAM[1]、LSD-SLAM[2]。
然而,一些问题仍然没有得到解决,例如,大多数现有的算法是脆弱的。一方面,他们难以处理各种环境,例如异常动态或粗糙的环境。另一方面,它们的地图模型通常基于几何信息,如基于地标的地图和点云地图,因此它们不能提供对周围环境的任何高级理解。根据[3],SLAM进入鲁棒感知时代需要更多的研究来实现真正鲁棒的自主机器人感知和导航。
典型的SLAM方法只提供具有几何实体(点、面等)的地图,这些实体之间没有语义属性的区分。然而,机器人需要语义信息来理解周围的场景。随着深度学习的发展,一些网络在语义分割方面取得了很好的性能[4]。因此,将这些网络与SLAM结合可以生成语义图,从而提高机器人的感知水平[5,6]。
SLAM系统在动态环境中的鲁棒性也是一个挑战。虽然现代SLAM系统已经成功地在特定环境下进行了演示,但是环境的意外变化可能会破坏状态估计的质量,甚至导致系统故障。例如,在基于视觉的SLAM系统中,环境中动态的存在,如行走的人,可能会欺骗特征关联。虽然激光SLAM在减少环境变化的影响方面取得了一些进展,例如[7],一些方法将惯性测量单元与视觉SLAM结合起来提高鲁棒性,但在纯视觉SLAM中仍然没有很好地解决这个问题。
在本文中,我们将语义分割网络和光流方法相结合,致力于减少基于视觉的SLAM中动态对象的影响,同时提供八叉树图的语义表示[8],可用于机器人的高级任务。DS-SLAM概述如图1所示。
本文的主要贡献包括:
- 基于ORB-SLAM2[2]提出了一种完整的动态环境下语义SLAM系统(DS-SLAM),可以减少动态目标对姿态估计的影响。在TUM RGB-D数据集上对系统的有效性进行了评估[9]。结果表明,DS-SLAM在动态环境下的精度和鲁棒性显著优于ORB-SLAM2。该系统还集成了机器人操作系统(Robot Operating system, ROS)[10],并通过在真实环境中对机器人进行DS-SLAM测试来验证其性能。
- 我们将一个实时语义分割网络放在一个独立的线程中,将语义分割与移动一致性检查方法相结合,过滤掉场景中的动态部分,比如行走的人。因此定位模块和建图模块的表现是提高了在动态场景下的鲁棒性和准确性。
- DS-SLAM创建了一个单独的线程来构建密集语义的3D八叉树图[8]。密集语义三维八叉树地图采用og-odds评分法过滤掉不稳定体素并更新这些体素的语义。
在本文的其余部分,结构如下。第二部分概述了语义SLAM和动态环境下SLAM的各种研究成果。然后,第三部分详细介绍了整个SLAM系统的框架,即如何检测动态对象和生成语义图。随后,第四节提供了DS-SLAM在TUM RGB-D数据集[9]和现实环境中的性能定性和定量结果,以证明系统的有效性和准确性。最后,在第五节作了简要的总结和讨论。
2.相关工作
A.语义SLAM
由于纯粹基于几何的地图不能提供关于环境的概念性知识,因此将语义概念与环境中的几何实体相关联已成为近年来的一个热门研究领域。在以往的许多研究中,语义地图通常由几何部分和语义部分两部分组成。然后,一组方法预先训练目标识别子系统,并将语义信息附加到识别的目标模型上。Vasudevan等人[11]应用一个简单的朴素贝叶斯分类器来识别场景类别,并基于预训练的对象给出空间的分层概率表示。最近,Sengupta等人[12]提出了一种有效的3D模型描述,将八元树嵌入到分层鲁棒马尔可夫随机场中,为地图中的每个体素提供语义标签。随着深度学习的出现,语义分割的结果得到了极大的改善。[13]将卷积神经网络应用于三维点分割中,基于最近邻方法将语义标签与对象关联,然后添加或更新目标对象点云信息地图和下属类型置信度值。
然而,他们的工作只集中在语义地图和对象识别方面,而语义信息在其他方面没有得到很好的利用。Bao等[14]首次尝试利用场景中的几何和语义属性共同估计相机姿态、点和物体,显著提高了物体识别精度。在本文中,语义信息不仅用于生成基于八叉树映射的环境表示,还用于在动态环境中跟踪过程中的异常值过滤。为了准确地进行语义分割,我们使用语义分割网络来遵循最先进的工作路线。
B.动态环境SLAM
当前大多数SLAM方法的一个基本假设是环境是静态的。然而,像人类这样的活动物体存在于许多现实世界的场景中。因此,最初为在静态环境中执行SLAM而设计的大多数最先进的方法无法处理严重的动态场景。
为了解决这个问题,从静态部分中识别出动态对象,然后在姿态估计之前丢弃它们是必要的。在密集SLAM中,许多运动目标检测方法都是基于光流技术。当图像中存在运动时就会产生光流,因此通过计算光流的不一致性可以区分静态背景和运动目标。如Fang等[15]采用最优估计和均匀采样的方法检测动态目标。虽然与其他几种导数光流方法相比,它在时间上是有效的,但其精度较低,而且计算量仍然很大,特别是在大图像中密集采样时。Wang等[16]通过基于点轨迹的图像聚类来检测动态目标,并将其排除在能量函数最小化之外。该方法鲁棒性好,但不能实时执行。
3.系统介绍
本节将详细介绍DS-SLAM。本节包括五个方面。首先,给出了DS-SLAM框架的体系结构图。其次,简要介绍了DS-SLAM中采用的实时语义分割方法。然后介绍了用于检测特征点运动一致性的算法。在此基础上,提出了将语义分割和运动一致性检查相结合的异常点过滤方法。最后,提出了构建语义八叉树图的方法。
A.DS-SLAM框架
在实际应用中,准确的姿态估计和恶劣环境下的可靠性是评估自主机器人的关键因素。ORB-SLAM2在大多数实际情况下都具有出色的性能。因此,DS-SLAM采用ORB-SLAM2,提供基于全局特征的SLAM解决方案,使我们能够检测动态对象并生成语义八元树图。DS-SLAM概述如图1所示。
在DS-SLAM中并行运行五个线程:跟踪、语义分割、局部建图、回环和密集建图创建。系统框架如图2所示。Kinect2捕获的原始RGB图像在跟踪线程和语义分割线程中同时进行处理。跟踪线程首先提取ORB特征点,然后粗略检查特征点的移动一致性,并保存潜在的异常值。然后跟踪线程等待由语义分割线程预测的具有逐像素语义标签的图像。分割结果到达后,根据分割结果和之前检测到的潜在异常点,丢弃位于运动物体中的ORB特征点异常点。然后,通过匹配剩余的稳定特征点来计算变换矩阵。
B.语义分割
该系统是为实际应用而设计的,因此应该在实时性和准确性之间取得平衡。DS-SLAM采用SegNet[4]实时提供基于caffe[17]的逐像素语义分割。在PASCAL VOC数据集[18]上训练的SegNet总共可以分割20个类。在实际应用中,人最有可能是动态对象,因此我们假设位于人身上的特征点最有可能是离群值。
C.移动一致性检查
由于运动分割耗时,语义分割结果可以从另一个线程获得,所以我们只需要确定分割结果中的关键点是否在运动。如果确定分割对象内的某些点是动态的,则可以将该对象视为动态对象。本文的移动点检测思路简单明了。第一步是计算光流金字塔,得到当前帧中匹配的特征点。然后,如果匹配对太靠近图像边缘,或者匹配对中心的3x3个图像块的像素差太大,则匹配对将被丢弃。第三步是通过使用具有最多内点的RANSAC来找到基本矩阵。然后利用基本矩阵计算当前坐标系下的极线。
最后,确定从匹配点到其对应的极线的距离是否小于某个阈值。如果距离大于阈值,则确定匹配点正在移动。基本矩阵将上一帧中的特征点映射到当前帧中相应的搜索域,即极线。
p
1
,
p
2
p_1,p_2
p1,p2分别表示上一帧和当前帧中的匹配点,
P
1
,
P
2
P_1,P_2
P1,P2是它们的齐次坐标形式:
式中,uv为图像帧中的值。则记为
I
1
I_1
I1的极线可由下式计算:
式中,X Y Z为线向量,F为基本矩阵。那么匹配点到其对应极线的距离确定如下
其中D表示距离。检查移动一致性和确定动态点的算法如算法1所示,其中
ϵ
\epsilon
ϵ为预设的阈值。
D.外点拒绝
由于人体等运动对象的柔性变形和复杂运动,运动一致性检查方法难以提取完整动态区域的轮廓,且提取整个轮廓的时间成本非常昂贵。在DS-SLAM中,由于采用了语义分割网络,可以很容易地获得物体的完整轮廓。我们的想法是将语义信息和运动一致性检查结果结合起来,完成物体运动或不运动两级语义知识库的建立。如果有一定数量的运动一致性检查产生的动态点落在分割对象的轮廓中,则确定该对象为运动对象。如果被分割的对象被确定为运动对象,则移除位于该对象轮廓中的所有特征点。这样可以精确地消除异常值。此外,还可以在一定程度上减少错误分割的影响。
此外,跟踪线程等待另一个线程的语义分割结果的时间可以得到充分利用。在等待期间,可以执行移动一致性检查。在下一节实验结果中,表4给出了DS-SLAM的消耗时间。可以看出,跟踪线程所用的时间近似等于语义分割线程所用的时间。
由于在大多数实际应用场景中,人类活动严重干扰了机器人的定位,并且语义分割网络能够识别的类别有限,因此在本文的其余部分中,我们将人类作为动态对象的典型代表。理论上,DS-SLAM适用于任何多个被识别和分割的动态对象。
语义分割结果出来后,如果没有检测到人,则将所有ORB特征直接与最后一帧进行匹配,预测姿态。否则,根据移动一致性检查结果判断人员是否在移动。如果确定人物是静态的,则直接预测姿态,否则在匹配之前删除所有落在人物轮廓内的ORB特征点。这样可以显著降低动态物体的冲击。
E.稠密语义三维八叉树地图构建
语义八叉树建图线程从跟踪线程获取新的关键帧,从语义分割线程获取分割结果。利用关键帧变换矩阵和深度图像生成局部点云。然后将局部点云转换并维护为全局八叉树图。我们采用八叉树表示法[8],因为它灵活、紧凑和可更新。八叉树地图存储效率高,并且易于用于导航。
语义信息也被合并到八叉树图中。八叉树图中的每个体素都与一个特定的颜色相关联,每个颜色代表一个语义标签。例如,红色的体素代表它属于沙发,而粉红色的体素代表它属于一个人。
所有的建模和语义融合过程都以概率的方式进行,从而方便了体素属性的更新。这样,密集语义的三维八叉树地图可以为移动机器人完成高级任务提供基础。
DS-SLAM面向处理动态环境,因此动态对象不应该存在于地图中。语义分割结果可以帮助我们有效地过滤出动态对象。然而,语义分割的准确性是有限的。在复杂的情况下,例如对象相互重叠,语义分割结果可能是不完整的,甚至是错误的。为了解决这一问题,DS-SLAM中采用对数赔率评分法[8],以尽量减少动态对象的影响。log-odds分数用于定量表示单个体素被占用的可能性。
p
∈
[
0
,
1
]
p\in [0,1]
p∈[0,1]表示一个体素被占用的概率,
l
∈
R
l\in R
l∈R表示为概率的log-odds分数。
逆变换
设
Z
t
Z_t
Zt表示时间t时体素n的观测结果,从开始到时间t的log-odds是
L
(
n
∣
Z
1
:
t
)
L(n|Z_{1:t})
L(n∣Z1:t),那么在t+1时刻,体素n的log赔率分数可以计算如下:
这里如果体素n在时刻t观察到被占用,则
L
(
n
∣
Z
t
)
L(n|Z_{t})
L(n∣Zt)等于
τ
\tau
τ,否则为0;增量
τ
\tau
τ是一个预定义的值。这个公式表示,当一个体素被反复观察到被占用时,它的对数赔率分数会增加,否则会减少。一个体素的占据概率p可以通过logit逆变换来计算。只有当占用概率p大于预定义的阈值时,才认为该体素已被占用,并将在八叉树图中可视化。换句话说,被观察到多次被占用的体素被认为是稳定的被占用体素。该方法可以很好地解决动态环境下的地图生成问题。
4.实验
5.结论
本文提出了一种完整的实时鲁棒语义SLAM (DS-SLAM)系统,该系统可以减少动态目标对姿态估计的影响,同时提供八元树图的语义表示[8]。在DS-SLAM中并行运行五个线程:跟踪、语义分割、局部建图、回环和密集建图。实时语义分割网络SegNet与移动一致性检查相结合,过滤掉场景的动态部分,如行走的人。然后将匹配的特征点从检测到的动态区域中去除,从而提高动态场景下的鲁棒性和准确性。密集语义三维八叉树地图采用对数赔率评分法过滤掉不稳定体素,可用于机器人的导航和复杂任务。在来自TUM RGB-D数据集的挑战性动态序列上测试了系统对动态目标的有效性。结果表明,DS-SLAM在高动态环境下的精度和鲁棒性显著优于ORB-SLAM2。该系统还集成了机器人操作系统(ROS),并通过在真实环境中的物理机器人上测试DS-SLAM来验证其性能。
然而,DS-SLAM仍然存在一些正在进行的工作。例如,语义分割网络中可识别的对象类型受到限制,限制了其应用范围。当检测到回环时,必须重新构建八叉树映射。在未来,我们将通过优化移动一致性检查方法来提高DS-SLAM在实时性方面的性能。此外,移动机器人将采用密集的语义八叉树建图来完成高级任务。