可靠准确的定位和建图是大多数自主系统的关键组成部分。除了地图环境的几何信息外,语义对智能导航行为的实现也起着重要作用。在大多数现实环境中,由于移动对象引起的动态会导致这个任务特别复杂。在本文中,我们提出了一种基于表面的制图方法的扩展,利用三维激光扫描集成语义信息来促进制图过程。利用全卷积神经网络有效地提取语义信息,并在激光距离数据的球面投影上进行渲染。这种计算的语义分割结果为整个扫描的点添加标签,允许我们建立一个语义丰富的带标签的面元地图。这种语义建图使我们能够可靠地过滤运动目标,同时也通过语义约束改善了投影扫描匹配。我们对来自KITTI数据集的具有挑战性的高速公路序列的实验评估显示,与纯几何的、最先进的方法相比,我们的语义SLAM方法具有优势,该数据集具有很少的静态结构和大量的移动汽车。
准确的定位和未知环境的可靠测绘是大多数自动驾驶汽车的基础。这类系统通常在高度动态的环境中运行,这使得生成一致的地图变得更加困难。此外,需要关于建图区域的语义信息来实现智能导航行为。例如,自动驾驶汽车必须能够可靠地找到合法停车的位置,或在乘客安全出口可能的地方靠边停车,即使是在从未见过的、因此之前没有精确地图的位置。
在这项工作中,我们提出了一种新的方法同步定位和建图(SLAM),能够使用三维激光距离扫描生成语义地图。**我们的方法利用了LiDAR SLAM[2]的思想,并结合了由全卷积神经网络(FCN)[20]生成的语义分割获得的语义信息。**这允许我们生成高质量的语义地图,同时改善地图的几何形状和里程计的质量。
FCN为激光扫描测距的每个点提供类别标签。**我们首先使用球面投影执行高效的点云处理,然后将二维球面投影的分类结果反投影到三维点云上。**然而,反向投影引入了人工现象,我们通过两步过程来减少这种现象,即先对语义标签进行侵蚀,然后再对语义标签进行基于深度的填充。语义标签随后被集成到基于面元的地图表示中,并用于更好地将新的观测结果注册到已经建立的地图中。此外,当在更新地图时,我们通过在新的观测和世界模型之间使用语义一致性检测方法去过滤移动物体。通过这种方式,我们降低了将动态对象集成到建图中的风险。图1显示了语义建图表示的一个示例。语义类别由FCN生成,该FCN由Behley等人[1]使用SemanticKITTI数据集进行训练.
本文的主要贡献是将语义集成到基于面元的地图表示中,以及利用这些语义标签过滤动态对象的方法。总之,(1)能够准确地建图一个环境,特别是在有大量的移动对象的情况下,(2)比相同的建图系统能够实现更好的性能,简单地删除可能在一般环境中是移动的对象,包括在城市、农村,和高速公路场景。我们在具有挑战性的KITTI[10]序列上实验评估了我们的方法,并显示了我们的基于面元的语义建图方法(称为SuMa++)的优越性能,与纯粹的基于面元的几何建图相比,并比较了基于类标签删除所有潜在移动对象的建图。我们的方法的源代码可在:
里程计估计和SLAM是机器人领域的经典主题,有许多概述文章涵盖了大量的科学工作[?]],[6],[27]。本文主要研究基于学习方法和动态场景的语义SLAM的相关工作。
出于深度学习的进步和卷积神经网络(cnn)场景理解,有很多语义SLAM技术利用这些信息使用相机[5]、[30],相机+ IMU数据[4],立体相机[9],[14],[17],[32],[37],或RGB-D传感器[3],[18],[19],[25],[26],[28],[38]。这些方法大多只应用在室内,使用目标检测器或摄像机图像的语义分割。相比之下,我们只使用激光距离数据,并利用语义分割的信息,对激光雷达扫描生成的深度图像进行操作。
也有大量的文献处理定位和建图变化的环境,例如通过过滤移动目标[13],考虑匹配[21]中的残差,或者利用序列信息[33]。为了实现户外大规模语义SLAM,还可以将3D LiDAR传感器与RGB相机相结合。Yan等人[36]将二维图像与三维点进行关联,以改进检测运动目标的分割。Wang和Kim[34]使用来自KITTI数据集[10]的图像和3D点云,通过应用相对位置先验,在语义上联合估计道路布局和分割城市场景。Jeong等人[11],[12]也提出了一种基于多模态传感器的语义三维建图系统,以改进大规模环境以及特征较少环境下的分割结果。Liang等人提出了一种新的三维物体检测器,可以利用激光雷达和相机数据来执行精确的目标定位。所有这些方法都侧重于结合3D激光雷达和摄像机来改进目标检测、语义分割或3D重建。最近由Parkison等人[22]开发了一种点云配准算法,直接将基于图像的语义信息合并到两点云之间的相对变换估计中。Zaganidis等人的后续工作[39]实现了激光雷达结合图像和激光雷达仅语义三维点云配准。这两种方法都使用语义信息来改进姿态估计,但由于处理时间较长,不能用于在线操作。
与本文提出的方法最相似的是Sun et al.[29]和Dube et al.[8],他们只用一个激光雷达传感器实现语义SLAM。Sun等人[29]提出了一种语义建图方法,它被表述为一个序列到序列的编码-解码问题。Dube等人[8]提出了一种SegMap方法,该方法基于从点云中提取的段,并给它们分配语义标签。它们的主要目的是在语义类类型非常有限的情况下,提取有意义的特征,用于全局检索和多机器人协同SLAM。与之相反,我们专注于生成包含大量语义类的语义地图,并使用这些语义过滤由动态对象(如移动的车辆和人)引起的异常值,以提高地图和里程计的准确性。
我们的语义SLAM方法的基础是基于面元的Mapping (SuMa)[2]方法,我们通过使用如图2所示的FCN RangeNet++[20]来集成语义分割提供的语义信息来扩展该方法。标签是由RangeNet++使用点云的球面投影提供的。然后利用该信息对动态目标进行过滤,并在扫描配准中添加语义约束,提高了SuMa姿态估计的鲁棒性和准确性。
我们用 T B A ∈ R 4 × 4 T_{BA}\in R^{4\times 4} TBA∈R4×4表示坐标系 A A A中的点 p A p_A pA到坐标系 B B B中的点 p B p_B pB的变换,使 p B = T B A p a p_B = T_{BA}p_a pB=TBApa。设 R B A ∈ S O ( 3 ) R_{BA}\in SO(3) RBA∈SO(3)和 t B A ∈ R 3 t_{BA}\in R^3 tBA∈R3表示变换 T B A T_{BA} TBA的相应旋转和平移部分。
我们称时间步长 t t t处的坐标系为 C t C_t Ct。坐标系 C t C_t Ct中的每个变量通过姿态 T W C t ∈ R 4 × 4 T_{WC_t}\in R^{4\times 4} TWCt∈R4×4与世界坐标系 W W W相关联,将观测到的点云转化为世界坐标系。
我们的方法依赖于SuMa,但在这里我们只总结与我们的方法相关的主要步骤,并参考原始论文[2]的更多细节。SuMa首先生成点云 P P P在时间步长 t t t处的球面投影,即所谓的顶点建图 V D V_D VD,然后用它生成相应的法向建图 N D N_D ND。有了这些信息,SuMa通过在时间步长 t − 1 t - 1 t−1的渲染地图视图 V M V_M VM和 N M N_M NM中的投影ICP来确定位姿更新 T C t − 1 C t T_{C_{t - 1}C_t} TCt−1Ct,进而通过链接所有位姿增量来确定 T W C t T_{WC_t} TWCt。
地图由面元表示,其中每个面元由位置 v s ∈ R 3 v_s\in R^3 vs∈R3,法线 n s ∈ R 3 n_s\in R^3 ns∈R3,和半径 r s ∈ R r_s\in R rs∈R定义。每个面元额外携带两个时间戳:创建时间戳 t c t_c tc和通过测量的最后一次更新的测量时间戳 t u t_u tu。此外,使用二值贝叶斯滤波器[31]来确定一个面元是稳定的还是不稳定的,从而维持一个稳定对数比值 l s l_s ls。SuMa还通过随后的姿态图优化执行闭环检测,以获得全局一致的建图。
对于每一帧,我们使用RangeNet++[20]来预测每个点的语义标签并生成语义建图 S D S_D SD。RangeNet++语义分割由每个激光扫描的球面投影生成的距离图像。简单地说,该网络基于Wu等人[35]提出的SqueezeSeg架构,并使用了Redmon等人[24]提出的DarkNet53,通过使用更多的参数来提高结果,同时保持方法的实时性。关于语义分割方法的更多细节,参考Milioto et al.[20]的论文。传感器视野内点方向标签的可用性也使得将语义信息集成到地图中成为可能。为此,我们为每个面元添加估计的语义标签 y y y和语义分割中该标签的相应概率。
由于RangeNet++的网络下采样导致投影输入和块状输出,当标签被重新投影到建图时,我们必须处理语义标签的错误。为了减少这些误差,我们使用了泛填充算法,总结在Alg. 1。它位于预处理模块内部,该模块使用来自顶点建图 V D V_D VD的深度信息来精炼语义掩码 S D S_D SD。
填充的输入是由RangeNet++生成的原始语义掩码 S r a w S_{raw} Sraw和相应的顶点建图 V D V_D VD。掩码 S r a w S_{raw} Sraw中每个像素的值都是一个语义标签。顶点图中对应的像素包含了激光雷达坐标系中最近的三维点的三维坐标。该方法的输出是改进的语义掩码 S D S_D SD。
考虑到目标边界的预测不确定性高于目标[15]中心,我们在填充过程中采用了以下两个步骤。第一步是去除半径为 d d d的边界像素或者错误像素(至少一个不同语义标签的像素)从而导致被侵蚀的掩模 S r a w S_{raw} Sraw被侵蚀。将这个掩模与顶点建图 V D V_D VD生成的深度信息相结合,然后填充侵蚀的掩模。为此,如果对应点的距离一致,即小于阈值θ,我们将空的边界像素的标签设为相邻标签像素。
该算法的中间步骤如图3所示。注意,与原始预测相比,过滤后的语义建图包含的细节更少。例如,建筑物墙上的错误标签大都被纠正了,如图3(e)所示。
大多数现有的SLAM系统依赖几何信息来表示环境,并将观测结果与地图联系起来。它们在假定环境基本是静态的情况下工作得很好。然而,世界通常是动态的,特别是在考虑驾驶场景时,一些传统的方法不能考虑移动物体引起的动态场景变化。因此,在这种情况下,移动的物体可能会导致观测结果和地图之间的错误关联,必须谨慎对待。通常,SLAM方法使用某种异常值拒绝,要么通过直接过滤观测数据,要么通过构建建图表示来过滤掉由移动对象引起的变化。
在我们的方法中,我们利用语义分割提供的标签来处理移动对象。更具体地说,当我们更新地图时,我们通过检查新的观测 S D S_D SD和世界模型 S M S_M SM之间的语义一致性来过滤动态。
如果标签不一致,我们假设这些面元属于在扫描之间移动的对象。因此,我们在递归贝叶斯滤波器稳定性项的计算中加入了惩罚项。经过几次观察,我们可以去除不稳定面元。通过这种方法,我们实现了动态检测和最终去除。
更准确地说,我们通过给它的稳定对数比 l s l_s ls来惩罚这个面元, l s l_s ls更新如下:
(1)
其中 o d d s ( p ) = l o g ( p ( 1 − p ) − 1 ) odds(p) = log(p(1-p)^{-1}) odds(p)=log(p(1−p)−1)和 p s t a b l e p_{stable} pstable和 p p r i o r p_{prior} pprior分别是给定一个兼容测量和先验概率的稳定面元的概率。 e x p ( − x 2 σ − 2 ) exp(-x^2σ^{-2}) exp(−x2σ−2)项用于解释噪声测量,其中 α α α是面元的法向量 n s n_s ns和要积分的测量法向量之间的角度, d d d是测量相对于相关面元的距离。测量法线取自 N D N_D ND,对应于帧到模型ICP,详见[2]。
Pomerleau等人提出了一种通过存储速度的时间轨迹来推断地图中主导运动模式的方法,而不是使用语义信息。与我们的方法相反,他们的方法需要一个给定的全局地图来估计当前扫描中的点的速度。此外,他们的机器人姿态估计是相当准确的.
在图4中,我们展示了我们的过滤方法与简单地从对应于可移动对象的类中删除所有曲面相比的效果。当使用朴素方法时,停靠汽车上的面元被删除,即使这些可能对增量姿态估计有价值的特征。利用该过滤方法,我们可以有效地去除动态异常值,获得一个更清晰的语义世界模型,同时避免了静态对象(如停放的汽车)的面元。这些静态对象对于ICP是有价值的信息,简单地删除它们可能会由于缺少对应而导致迭代失败。
为了进一步改进帧到模型的姿态估计,我们在优化问题中加入了语义约束,这有助于降低离群值的影响。ICP的误差最小化函数:
(2)
其中每个顶点 u ∈ V D u\in V_D u∈VD被投影到一个参考顶点 v u ∈ V M v_u\in V_M vu∈VM和它的法向量 n u ∈ N M n_u\in N_M nu∈NM通过
(3,4)
r u r_u ru和 w u w_u wu分别是相应的残量和权重。
对于最小化,我们使用高斯-牛顿方法,通过迭代求解增量 δ δ δ
(5)
其中 W ∈ R n × n W\in R^{n\times n} W∈Rn×n是一个对角矩阵,包含权重 w u w_u wu对应的每个残差 r u r_u ru, r ∈ R n × n r\in R^{n\times n} r∈Rn×n是堆叠的残差向量, J ∈ R n × 6 J\in R^{n\times6} J∈Rn×6是 R R R相对于增量 δ δ δ的雅可比矩阵。除了硬关联和Huber规范加权外,我们还添加了来自更高层次语义场景理解的额外约束来对残差进行加权。这样,我们可以将语义和几何信息结合起来,使ICP过程对离群点更有鲁棒性。
在ICP中,在第 k k k次迭代中,残差 r u ( k ) r^{(k)}_u ru(k)的权值 w u ( k ) w^{(k)}_u wu(k)如下所示:
(6)
其中 ρ H u b e r ( r ) ρ_{Huber}(r) ρHuber(r)对应于Huber范数,由:
(7)
对于语义相容性 C s e m a n t i c ( ( y u , P u ) , ( y v u , P v u ) ) C_{semantic}((y_u,P_u),(y_{v_u},P_{v_u})) Csemantic((yu,Pu),(yvu,Pvu)),定义为:
(8)
即利用预测标签的确定性来加权残差。通过 Ⅱ { a } Ⅱ\{a\} Ⅱ{a},如果参数 a a a为真,则指示函数为1,否则为0。
图5为扫描时可见有两辆车行驶的高速公路场景的加权过程,如图5(a)所示。注意,我们使用语义对动态进行过滤,如第III-E节所述,从地图中删除了移动的汽车,见图5(b)。因此,我们也可以在图5©中看到对应较低强度的低权重,因为观测的类别与地图不一致。
实验评价主要是为了支持我们声称我们是(我)能够准确地建图甚至在大量的移动对象的情况下,我们(ii)能够实现更好的性能比简单地删除可能移动对象在一般环境中,包括城市、农村,和高速公路场景。
为此,我们使用KITTI Vision Benchmark[10]的数据来评估我们的方法,其中我们使用Velodyne HDL-64E S2以10hz速率记录的点云生成。为了评估里程计的性能,该数据集提出计算相对于平移和旋转在不同姿态间距离上的平均误差,并将其平均。地面真位姿是利用惯性导航系统的位姿信息生成的,在大多数序列中,GPS位置参考了一个基站,这使得它相当准确,但通常仍然只是局部一致.
在下面,我们将我们提出的方法(由SuMa++表示)与原始的基于surfer的建图(由SuMa表示)进行比较,并将SuMa与删除所有可移动类(汽车、公共汽车、卡车、自行车、摩托车、其他车辆、人员、自行车、motorcyclist)的语义分割(表示为SuMa nomovable)。
用于语义分割的RangeNet++使用点注释[1]进行训练,使用的是来自KITTI Odometry Benchmark的所有训练序列,这些序列是用于训练目的的标签。这包括序列00到10,除了序列08,因为验证而被忽略了。
我们在Intel Xeon® W-2123和Nvidia Quadro P4000上测试了我们的方法。RangeNet++为每次扫描生成逐点标签平均需要75毫秒,面元mapping平均需要48毫秒,但在某些情况下(在具有多个循环闭包的训练集序列00上),我们最多需要190毫秒来集成循环闭包。
第一个实验是为了证明我们的方法即使在有许多移动物体的情况下也能够生成一致的地图。我们展示了来自KITTI视觉基准的原始数据的道路类别的序列结果。注意,这些序列不是里程计基准的一部分,因此没有为语义分割提供标签,这意味着我们的网络学会了推断道路驾驶场景的语义类,而不是简单的记忆。这些序列,特别是高速公路序列,对于SLAM方法来说是具有挑战性的,因为这里的大多数对象都是移动的汽车。
此外,道路两旁只有稀疏的明显特征,如交通标志或电线杆。没有建筑角或其他更明显的特征来指导注册过程。在这种情况下,对持续移动的异常值(如交通堵塞中的汽车)的错误对应通常会导致错误估计的姿态变化,从而导致生成的地图的不一致。
图6显示了使用SuMa生成的示例和提出的SuMa++。在纯几何方法的情况下,我们清楚地看到,姿势不能正确估计,因为突出的交通标志显示在不同的位置,导致很大的不一致。在我们提出的方法中,我们能够正确地过滤移动的车辆,相反,我们生成了一个一致的地图,突出显示一致的地图交通标志。在本例中,我们还绘制了SuMa和SuMa++测程结果的相对平移误差。这些点表示每个时间戳中的相对平移误差,曲线是给定点的多项式拟合结果。它表明,SuMa++在这样一个充满挑战的环境中实现了更准确的姿态估计,这些环境中有许多由移动对象引起的异常值。
选项卡。I显示了相对平移和相对旋转误差,图7显示了在这部分数据集上测试的不同方法的相应轨迹。总的来说,我们看到我们提出的方法,SuMa++,生成了更一致的轨迹,在大多数情况下实现了比SuMa更低的平移误差。与移除所有可能移动对象的基准SuMa nomovable相比,我们看到的性能与SuMa++非常相似。这证实了在这种情况下,SuMa性能较差的主要原因是实际移动的对象引起的不一致性。然而,我们将在接下来的实验中表明,去除所有潜在的移动物体也会对城市环境中的姿态估计性能产生负面影响。
第二个实验旨在表明,与简单地从观察中删除某些语义类相比,我们的方法表现得更好。该评估是在基蒂里程计基准上进行的。
选项卡。II表示相对平移误差和相对转动误差。IMLS-SLAM[7]和LOAM[40]是最先进的基于激光雷达的SLAM方法。在大多数序列中,我们可以看到与最先进的SuMa++相比相似的性能。更有趣的是,SuMa nomovable基线方法出现了分歧,尤其是在城市场景中。
这可能是违反直觉的,因为这些环境包含大量的人造结构和其他更明显的特征。但是有两个原因导致了这种糟糕的性能,当我们查看结果和出现建图错误的场景的配置时,就会发现这两个原因。首先,尽管我们试图改进语义分割的结果,但仍然存在错误的预测,导致地图中实际上是静态的surfers被删除。第二,移除停着的汽车是问题,因为这是对齐扫描的良好和独特的特征。这两种效果都有助于使面元地图更加稀疏。这一点更加重要,因为停放的汽车是唯一独特或可靠的特征。总之,简单地删除某些类至少在我们的情况下是次优的,并可能导致更差的性能。
为了在不可见的轨迹中评估我们的方法的性能,我们上传了我们的结果,以便在未知的KITTI测试序列上进行服务器端评估,这样就不可能对测试集进行参数调优。因此,这可以很好地反映我们的方法在现实世界中的性能。在测试集中,我们获得的平均旋转误差为0:0032 deg/m,平均平移误差为1:06%,与原始SuMa的0:0032 deg/m和1:39%相比,平移误差有所改善。
地图更新过程中,我们只惩罚面元s动力学的可移动的物体,这意味着我们不惩罚语义静态对象,例如植被,尽管有时叶子的植被变化和植被变化的外观与观点由于激光束,只有从某些观点得到反映。我们这样做的动机是,它们也可以作为很好的地标,例如,树干是静态的,是一个很好的姿态估计特征。此外,采用Huber范数的原始基于几何的离群值剔除机构经常对这些部件进行降权。
我们的方法有一个明显的局限性:我们不能在第一次观察时过滤掉动态对象。一旦在第一次扫描中有大量的运动物体,我们的方法将失败,因为我们不能估计一个适当的初始速度或姿态。我们通过在初始化期间删除所有可能移动的对象类来解决这个问题。然而,一种更稳健的方法是回溯由于观测到的移动状态的变化而产生的变化,从而回溯更新地图。
最后,我们的第二次实验结果令人信服地表明,盲目删除某一组类会降低定位精度,但潜在的移动对象仍然可能从地图的长期表示中删除,以允许表示环境中可能在不同时间点可见的其他遮挡部分。
在本文中,我们提出了一种新的方法来建立语义地图,通过基于激光的点云语义分割,不需要任何相机数据。我们利用这些信息来提高在其他模糊和具有挑战性的情况下的姿态估计精度。特别是,我们的方法利用扫描和建图之间的语义一致性来过滤掉动态对象,并在ICP过程中提供更高级别的约束。这使我们能够成功地结合语义和几何信息,仅仅基于三维激光距离扫描,以获得比纯几何方法更好的姿态估计精度。我们在KITTI Vision Benchmark数据集上评估了我们的方法,显示出与纯几何方法相比,我们的方法的优势。
尽管有这些令人鼓舞的结果,语义建图的未来研究仍有一些途径。在未来的工作中,我们计划研究语义在环路闭合检测中的使用,以及更细粒度的语义信息的估计,如车道结构或道路类型。