来源:IROS 2019
链接:https://ieeexplore.ieee.org/document/8967704
0、摘要
可靠、准确的定位和映射是大多数自动驾驶系统的关键组成部分。除了映射环境的几何信息外,语义在实现智能导航行为方面也起着重要作用。在大多数现实环境中,由于移动对象引起的动态变换,这个任务特别复杂,这可能会破坏建图或定位。在本文中,我们提出了最近发表的基于表面的建图方法的扩展,利用三维激光距离扫描,通过整合语义信息来促进建图过程。利用全卷积神经网络高效提取语义信息,并在激光距离数据的球面投影上进行渲染。这种计算的语义分割结果是整个扫描的逐点标签,允许我们用标记的冲浪建立一个语义丰富的地图。这种语义映射使我们能够可靠地过滤运动物体,但也通过语义约束改善投影扫描匹配。我们对KITTI数据集中具有挑战性的高速公路序列进行了实验评估,其中包含很少的静态结构和大量的移动车辆,与纯几何的、最先进的方法相比,我们的语义SLAM方法具有优势。
I. INTRODUCTION
准确的定位和对未知环境的可靠建图是大多数自动驾驶汽车的基础。这类系统通常在高度动态的环境中运行,这使得生成一致的地图变得更加困难。此外,需要关于映射区域的语义信息来实现智能导航行为。例如,一辆自动驾驶汽车必须能够可靠地找到一个合法停车的位置,或者在乘客可能安全出口的地方靠边停车------即使是在从未见过的位置,因此没有准确地绘制出来。
在这项工作中,我们提出了一种新的同时定位和建图(SLAM)方法,能够通过使用三维激光距离扫描生成这种语义地图。我们的方法利用了现代激光雷达SLAM管道[2]的思想,并结合了由全卷积神经网络(FCN)[21]生成的语义分割获得的语义信息。这使我们能够生成高质量的语义地图,同时改进地图的几何形状和里程计的质量。
FCN为激光范围扫描的每个点提供类别标签。我们首先使用球面投影对点云进行高效处理。然后将二维球面投影上的分类结果反投影到三维点云上。然而,反向投影引入了伪影,我们通过两个步骤的侵蚀过程来减少伪影 ,然后是基于深度的语义标签的洪水填充。然后将语义标签集成到基于面元表示的地图表示中,并利用它来更好地将新的观察结果注册到已经构建的地图中。在更新地图时,我们进一步通过检查新观察和世界模型之间的语义一致性来使用语义过滤移动物体。通过这种方式,我们减少了将动态对象集成到地图中的风险。图1显示了我们的语义图表示的一个例子。语义类由Milioto等人的FCN生成,该FCN由Behley等人使用SemanticKITTI数据集进行训练。
本文的主要贡献是将语义集成到基于面元地图表示中,以及利用这些语义标签过滤动态对象的方法。总而言之,我们声称我们(i)能够准确地映射环境,特别是在有大量移动物体的情况下,我们(ii)能够比在一般环境(包括城市,农村和高速公路场景)中简单地删除可能移动的物体的相同映射系统实现更好的性能。我们在KITTI[11]的挑战性序列上实验评估了我们的方法,并显示了我们的语义冲浪映射方法(称为suma++)与纯粹基于几何冲浪的映射和基于类标签去除所有潜在移动对象的映射相比的优越性能。我们的方法的源代码可在:GitHub - PRBonn/semantic_suma: SuMa++: Efficient LiDAR-based Semantic SLAM (Chen et al IROS 2019)
II. RELATED WORK
里程估计和 SLAM 是机器人技术中的经典主题,多篇概述文章 [6]、[7]、[28] 涵盖了大量的科学工作。在这里,我们主要关注基于学习方法和动态场景的语义SLAM的相关工作。
受深度学习和用于场景理解的卷积神经网络 (CNN) 进步的推动,出现了许多使用相机 [5]、[31]、相机 + IMU 数据 [4]、立体相机 [10] 来利用这些信息的语义 SLAM 技术。 ]、[15]、[18]、[33]、[38] 或 RGB-D 传感器 [3]、[19]、[20]、[26]、[27]、[30]、[39] 。这些方法大多数仅应用于室内,并使用对象检测器或相机图像的语义分割。相比之下,我们仅使用激光距离数据,并利用对激光雷达扫描生成的深度图像进行语义分割的信息。
还存在大量解决定位和映射变化环境的文献,例如通过过滤移动对象[14]、考虑匹配中的残差[22]或通过利用序列信息[34]。为了实现户外大规模语义SLAM,还可以将3D LiDAR传感器与RGB相机相结合。严等人。 [37]将 2D 图像和 3D 点关联起来以改进检测移动对象的分割。 Wang 和 Kim [35] 使用 KITTI 数据集 [11] 中的图像和 3D 点云来联合估计道路布局,并通过应用相对位置先验从语义上分割城市场景。郑等人。 [12]、[13]还提出了一种基于多模态传感器的语义 3D 映射系统,以在大规模环境以及具有功能很少。梁等人。 [17] 提出了一种新颖的 3D 物体检测器,可以利用 LiDAR 和相机数据来执行准确的物体定位。所有这些方法都侧重于将 3D LiDAR 和相机结合起来,以改进对象检测、语义分割或 3D 重建。
Parkison 等人最近的工作。 [23]通过直接将基于图像的语义信息纳入两个点云之间相对变换的估计中,开发了一种点云配准算法。 Zaganidis 等人的后续工作。 [40]实现了LiDAR与图像结合和仅LiDAR的语义3D点云配准。这两种方法都使用语义信息来改进姿态估计,但由于处理时间长,它们不能用于在线操作。
与本文提出的方法最相似的是 Sun 等人 [29] 和 Dub´e 等人 [9],仅使用单个 LiDAR 传感器即可实现语义 SLAM。孙等人。[29]提出了一种语义映射方法,该方法被表述为序列到序列的编码解码问题。杜布埃等人[9]提出了一种称为 SegMap 的方法,该方法基于从点云中提取的片段并为其分配语义标签。他们的主要目的是为全局检索和多机器人协作 SLAM 提取有意义的特征,语义类的类型非常有限。与它们相反,我们专注于生成具有丰富语义类的语义地图,并使用这些语义来过滤由动态对象(如移动车辆和人类)引起的异常值,以提高地图和里程计的准确性。
III. OUR APPROACH
我们的语义 SLAM 方法的基础是基于 Surfel 的建图 (SuMa) [2] 管道,我们通过使用 FCN RangeNet++ [21] 集成语义分割提供的语义信息来扩展该管道,如图 2 所示。 RangeNet++ 使用点云的球形投影点云的标签。然后,该信息用于过滤动态对象并向扫描配准添加语义约束,从而提高 SuMa 姿态估计的鲁棒性和准确性。
A. Notation符号
我们用表示坐标系 A 中的点 pA 到坐标系 B 中的点 pB 的变换,使得 。令和 表示变换TBA 对应的旋转和平移部分。(就是变换矩阵)
我们将时间步 t 处的坐标系称为。坐标系 中的每个变量通过位姿与世界坐标系 W 相关联,将观察到的点云转换为世界坐标系。
B. Surfel-based Mapping
我们的方法依赖于 SuMa,但我们仅在此总结与我们的方法相关的主要步骤,并参考原始论文 [2] 以获取更多详细信息。 SuMa首先在时间步t生成点云P的球面投影,即所谓的顶点图VD,然后用其生成相应的法线图ND。给定这些信息,SuMa 通过渲染地图视图 VM 和 NM 中的投影 ICP 在时间步 t−1 确定姿势更新,并通过链接所有姿势增量来确定。
地图由面元表示,其中每个面元由位置 、法线 和半径 ∈ R 定义。每个面元还带有两个时间戳:创建时间戳 tc 和其最后一个的时间戳 tu,通过测量更新。此外,使用二元贝叶斯滤波器[32]维护稳定性对数优势比 ls 来确定面元是否被认为是稳定的或不稳定的。 SuMa 还执行闭环检测和后续位姿图优化,以获得全局一致的地图。
(面元的定义是由Suma这个激光slam的表示,可以理解为三维空间中的一个平面圆,圆心的三维坐标+三维朝向+一维半径,具体的定位过程不在本文讨论。具体原理可以参考 经典激光SLAM系列 | SuMa,基于面元地图的室外大场景SLAM - 知乎)
C. Semantic Segmentation
对于每一帧,我们使用 RangeNet++ [21] 预测每个点的语义标签并生成语义图。 RangeNet++ 对每次激光扫描的球形投影生成的距离图像进行语义分割。简而言之,该网络基于 Wu 等人提出的 SqueezeSeg 架构 [36]并使用 Redmon 等人提出的 DarkNet53 主干网。 [25]通过使用更多参数来改进结果,同时保持方法的实时能力。有关语义分割方法的更多详细信息,我们参考 Milioto 等人的论文 [21]。传感器视野中的逐点标签的可用性使得将语义信息集成到地图中成为可能。为此,我们为每个面元添加推断的语义标签 y 以及来自语义分割的该标签的相应概率。
(RangeNet先将点云转换为平面,类似图像的2D分割后,将点云的分割结果和分割概率给到面元)
D. Refined Semantic Map
由于投影输入和作为 RangeNet++ 网络内下采样副产品产生的类似 blob 的输出,当标签重新投影到地图时,我们必须处理语义标签的错误。为了减少这些错误,我们使用洪水填充算法,在 Alg1 中进行了总结,它位于预处理模块内部(preprocessing module),该模块使用来自顶点图VD的深度信息来细化语义掩模SD。
Due to the projective input and the blob-like outputs produced as a by-product of in-network down-sampling of RangeNet++
( blob 输出什么意思?这里没看懂)
洪水填充的输入是 RangeNet++ 生成的原始语义掩码 Sraw 和相应的顶点图 VD。Sraw中每个像素的值是一个语义标签。顶点图中的相应像素包含LiDAR坐标系中最近的3D点的3D坐标。该方法的输出是精炼的语义掩码 SD。
考虑到对象边界的预测不确定性高于对象中心的预测不确定性[16],我们在洪水填充中使用以下两个步骤。第一步是腐蚀,删除像素,其中大小为 d 的内核内的邻居显示至少一个不同的语义标签,从而产生腐蚀掩模 。(第一个foreach 周围有不同于自己的点,设置为空白点)
将此掩模与从顶点图 VD 生成的深度信息相结合,然后我们填充腐蚀的掩模。为此,如果对应点的距离一致,即小于阈值θ,我们将空边界像素的标签设置为相邻标记像素。(第二个foreach 将空白点和附近的点标签设置一样)
图 3 显示了该算法的中间步骤。请注意,与原始预测相比,过滤后的语义图确实包含更少的伪影。例如,建筑物墙上的错误标签大多已被纠正,如图3(e)所示。
(把与周围相差太大的点变为与周围环境一致的点,感觉类似滤波,把高频的噪声删除?)
E. Filtering Dynamics using Semantics
大多数现有的 SLAM 系统依靠几何信息来表示环境并将观察结果与地图相关联。它们在环境大部分是静态的假设下运行良好。然而,世界通常是动态的,特别是在考虑驾驶场景时,一些传统方法无法考虑移动物体引起的动态场景变化。因此,在这种情况下,移动物体可能会导致观测值与地图之间的错误关联,必须谨慎对待。通常,SLAM 方法使用某种异常值拒绝,或者通过直接过滤观察结果,或者通过构建地图表示来过滤掉由移动对象引起的变化。
在我们的方法中,我们利用语义分割提供的标签来处理移动对象。更具体地说,当我们更新地图时,我们通过检查新观察 SD 和世界模型 SM 之间的语义一致性来过滤动态。如果标签不一致,我们假设这些面元属于在扫描之间移动的对象。因此,我们在递归贝叶斯滤波器中稳定性项的计算中添加了惩罚项。经过多次观察,我们可以去除不稳定的面元。通过这种方式,我们实现了动态检测并最终去除。
更准确地说,我们通过对其稳定性对数优势比 ls 给予惩罚优势(penalty)来惩罚该 surfel,该优势将更新如下:
其中 odds(p) = log(p(1 − p)−1) 和 和 分别是给定兼容测量和先验概率的稳定面元的概率。exp(−x2σ−2) 用于考虑噪声测量,其中 α 是面元法线 ns 与要积分的测量法线之间的角度,d 是测量相对于相关联的距离。瑟费尔。测量法线取自 ND 以及框架与模型 ICP 的对应关系,请参阅 [2] 了解更多详细信息。
(这里其实是suma)
Pomerleau 等人没有使用语义信息 [24]提出了一种通过存储速度的时间历史来推断地图内的主要运动模式的方法。与我们的方法相反,他们的方法需要给定的全局地图来估计当前扫描中点的速度。此外,他们的机器人姿态估计被认为是相当准确的。
在图 4 中,我们展示了我们的过滤方法与从与可移动对象对应的类中简单地删除所有面元相比的效果。当使用朴素方法时,停放汽车上的面元被移除,即使这些可能对于增量姿态估计来说是有价值的特征。通过所提出的过滤,我们可以有效地去除动态异常值并获得更清晰的语义世界模型,同时保持面元远离静态对象,例如停放的汽车。这些静态对象对于 ICP 扫描配准来说是有价值的信息,简单地删除它们可能会因缺少对应关系而导致扫描配准失败。
F. Semantic ICP
为了进一步改进使用帧到模型 ICP 的姿态估计,我们还在优化问题中添加了语义约束,这有助于减少异常值的影响。我们最小化 ICP 的误差函数由下式给出:
其中每个顶点通过投影与参考顶点及其法线相关联
为了最小化,我们使用高斯牛顿并通过迭代求解来确定增量 δ:
其中是包含每个残差的权重的对角矩阵,是堆叠残差向量,是 r 相对于增量 δ 的雅可比行列式。除了 Huber 范数的硬关联和加权之外,我们还添加了来自更高级别语义场景理解的额外约束来对残差进行加权。通过这种方式,我们可以将语义与几何信息结合起来,使 ICP 过程对异常值更加鲁棒。
在 ICP 中,我们计算迭代 k 中残差 r(k) u 的权重 w(k) u ,如下所示:
其中 ρHuber(r) 对应于 Huber 范数,由下式给出:
对于语义兼容性 Csemantic (yu, Pu), (yvu , Pvu ) ,该术语定义为:
这是利用预测标签的确定性来对残差进行加权。 I{a} 表示指示函数,如果参数 a 为真,则该函数为 1,否则为 0。
图 5 显示了扫描中可见两辆移动汽车的高速公路场景的权重,见图 5(a)。请注意,我们使用语义过滤动态,如 III-E,从地图上移除移动的汽车,见图5(b)。因此,我们还可以在图 5(c)中看到与较低强度相对应的较低权重,因为观测类别和地图不一致。
(直接看这个感觉有点难懂,把语义信息融合到原始sumade icp匹配中)
IV. EXPERIMENTAL EVALUATION
我们的实验评估旨在支持我们的主要主张,即我们(i)即使在有大量移动物体的情况下也能够准确地绘制地图,并且我们(ii)能够比简单地在一般环境中删除可能移动的物体获得更好的性能,包括城市、乡村和高速公路场景。
为此,我们使用 KITTI Vision Benchmark [11] 中的数据来评估我们的方法,其中我们使用由 Velodyne HDL-64E S2 以 10 Hz 的速率记录生成的点云。为了评估里程计的性能,该数据集建议计算姿势之间不同距离上平移和旋转的平均相对误差并对其进行平均。地面真实姿态是使用来自惯性导航系统的姿态信息生成的,并且在大多数序列中,GPS 位置参考基站,这使得它相当准确,但通常仍然只是局部一致。
下面,我们将我们提出的方法(用 SuMa++ 表示)与原始的基于面元的映射(用 SuMa 表示)进行比较,并将 SuMa 与删除所有可移动类(汽车、公共汽车、卡车、自行车、摩托车等)的朴素方法进行比较。车辆、人、自行车手、摩托车手)由语义分割给出(用SuMa nomovable表示)。
用于语义分割的 RangeNet++ 使用逐点注释 [1] 进行训练,使用 KITTI Odometry Benchmark 中的所有训练序列,这些序列是可用于训练目的的标签。这包括序列 00 到 10,但序列 08 除外,序列 08 被省略以进行验证。
我们在 8 核 @3.60 GHz、16 GB RAM 的 Intel Xeon(R) W-2123 和 8 GB RAM 的 Nvidia Quadro P4000 上测试了我们的方法。 RangeNet++ 平均需要 75 ms 为每次扫描生成逐点标签,面元映射平均需要 48 ms,但在某些情况下我们最多需要 190 ms 来集成循环闭包(在训练集的序列 00 上)多个循环闭合)。
A. KITTI Road Sequences
第一个实验旨在表明,即使在有许多移动物体的情况下,我们的方法也能够生成一致的地图。我们展示了 KITTI Vision Benchmark 原始数据的道路类别序列的结果。请注意,这些序列不是里程计基准的一部分,因此没有为语义分割提供标签,这意味着我们的网络学会了推断道路驾驶场景的语义类别,而不仅仅是记忆。这些序列,尤其是高速公路序列,对于 SLAM 方法来说是具有挑战性的,因为这里大多数物体都是移动的汽车。此外,路边只有稀疏的明显特征,例如交通标志或电线杆。建筑角落或其他更具特色的特征无法用于指导注册过程。在这种情况下,对持续移动的异常值(例如交通堵塞中的汽车)的错误对应通常会导致错误地估计姿态变化,从而导致生成的地图不一致。
图 6 显示了使用 SuMa 和建议的 SuMa++ 生成的示例。在纯几何方法的情况下,我们清楚地看到无法正确估计姿势,因为突出显示的交通标志出现在不同的位置,导致很大的不一致。通过我们提出的方法,我们能够正确过滤移动的汽车,而是生成一致的地图,如突出显示的一致映射的交通标志所示。在此示例中,我们还绘制了 SuMa 和 SuMa++ 的里程计结果的相对平移误差。点表示每个时间戳中的相对平移误差,曲线是给定点的多项式拟合结果。它表明,SuMa++ 在这种具有挑战性的环境中实现了更准确的姿态估计,其中有许多由移动物体引起的异常值。
表格 I 显示了相对平移和相对旋转误差,图 7 显示了在这部分数据集上测试的不同方法的相应轨迹。一般来说,我们看到我们提出的方法 SuMa++ 生成了更一致的轨迹,并且在大多数情况下实现了比 SuMa 更低的平移误差。与仅删除所有可能移动对象的基线 SuMa nomovable 相比,我们看到与 SuMa++ 非常相似的性能。这证实了 SuMa 在这种情况下性能较差的主要原因是实际移动物体造成的不一致。然而,我们将在接下来的实验中证明,移除所有潜在移动物体也会对城市环境中的姿态估计性能产生负面影响。
B. KITTI Odometry Benchmark
第二个实验旨在表明,与简单地从观察中删除某些语义类相比,我们的方法表现更佳。该评估是在 KITTI 里程计基准上进行的。
表 II 显示相对平移和相对旋转误差。 IMLS-SLAM [8] 和 LOAM [41] 是最先进的基于 LiDAR 的 SLAM 方法。在大多数序列中,我们可以看到 SuMa++ 与最先进的技术相比具有相似的性能。更有趣的是,基线方法 SuMa nomovable 存在分歧,特别是在城市场景中。
这可能是违反直觉的,因为这些环境包含大量人造结构和其他更独特的特征。但是,当查看结果和发生映射错误的场景的配置时,有两个原因会导致这种较差的性能。首先,即使我们尝试改进语义分割的结果,仍然存在错误的预测,导致地图中实际上是静态的面元被删除。其次,移除停放的汽车是个问题,因为这些对于对齐扫描来说是良好且独特的功能。这两种效应都有助于使面元图变得更加稀疏。这一点更为重要,因为停放的汽车是唯一独特或可靠的特征。总之,简单地删除某些类至少在我们的情况下不是最优的,并且可能导致性能更差。
为了评估我们的方法在未见过的轨迹中的性能,我们上传了对未知 KITTI 测试序列进行服务器端评估的结果,以便不可能对测试集进行参数调整。因此,这可以很好地代表我们方法的实际性能。在测试集中,我们实现了 0.0032 deg/m 的平均旋转误差和 1.06% 的平均平移误差,与原始 SuMa 的 0.0032 deg/m 和 1.39% 相比,在平移误差方面有了改进。
V. CONCLUSION
在本文中,我们提出了一种构建语义地图的新方法 ,该方法通过基于激光的点云语义分割而无需任何相机数据。我们利用这些信息来提高在其他模糊和具有挑战性的情况下的姿态估计准确性。特别是,我们的方法利用扫描和地图之间的语义一致性来过滤动态对象并在 ICP 过程中提供更高级别的约束。这使我们能够成功地将仅基于三维激光距离扫描的语义和几何信息结合起来,以实现比纯几何方法更好的姿态估计精度。我们在 KITTI Vision Benchmark 数据集上评估了我们的方法,显示了我们的方法与纯几何方法相比的优势。尽管取得了这些令人鼓舞的结果,但语义映射的未来研究还有多种途径。在未来的工作中,我们计划研究语义在闭环检测中的使用以及更细粒度的语义信息的估计,例如车道结构或道路类型。