经典激光slam回环检测框架:SegMatch: Segment based place recognition in 3D point clouds

SegMatch是一种基于3D点云分割的场景识别算法,它提取点云的特征向量并使用随机森林进行匹配和几何验证。该方法在不依赖完美物体分割和假设简单环境的情况下,提高了鲁棒性和准确性。实验表明,SegMatch在实时定位和回环检测中表现出色,优于基于关键点的方法。
摘要由CSDN通过智能技术生成

论文地址:

SegMatch: Segment based place recognition in 3D point clouds | IEEE Conference Publication | IEEE Xplore

开源链接:

https://github.com/ZengYeGe/segmatch

1 摘要:

提出基于分割的3D点云景识别方法。基于分割的场景识别方法既考虑了局部特征,又包含了“类别“这种高维特征,并且不依赖于物体级别的完美分割方法,是一种折中的场景识别方案。

首先将当前帧点云通过特定的聚类方法分割成若干块点云簇

接着,SegMatch从每一块点云簇中提取一个特征向量。特征向量提取混合了特征值和直方图两种方法,鲁棒性更强。

接着匹配当前帧的点云簇集合和地图中的点云簇集合。具体做法是,提取当前帧点云簇在地图邻域范围内的点云簇集合,然后通过随机森林预测两两点云簇的相似度,最终得到一系列候选点云簇关联对。

最终,利用RANSAC方法进行集合验证测试,寻找最少数量的几何一致性较强的点云簇关联对集合,并利用点云簇中心的相对位置关系估计相对位姿变换,从而完成场景识别任务。

2 介绍:

基于物体分割的匹配虽然是完美的,但事实上分割技术并不完美,物体也不一定全部会被识别或者扫描到。

因此介绍了SegMatch,一种基于分割的方法利用可描述的形状而不是基于关键点的特征,且不需要基于物体方法的较强假设。换句话说,我们通过匹配属于部分或者全部物体的分割或者更大结构的部分(窗户,弧,外墙)来识别地点。这种分割的例子可以在图1中看到,其数据在市区中收集。

我们的系统展示了一个模块设计。它首先提取和描述了来自3D点云的分割,将它们和已经访问过的地点的分割进行匹配,并使用几何验证步骤来提出地点识别候选。这个基于分割的技术的优势之一是它压缩点云到一组不同和可分辨的元素用于场景识别。我们展示了这个不仅减少了需要匹配的时间,而且减少了得到虚假匹配的可能性。

2.1 贡献:

  • SegMatch,一个基于分割的算法来执行3D点云的场景识别。
  • 一个SegMatch的开源应用用于在线,实时回环检测和定位。
  • 一个在现实世界应用的完整的算法表现评估。

3 相关工作:

以前的巴拉巴拉多不好,因此,我们的目标是一种方法,它不依赖于环境由简单的几何基元(如平面)或丰富的对象库组成的假设。 这允许更通用的、可扩展的解决方案。 灵感来自 Douillard 等人。  [19] 和 Nieto 等人。  [20] 提出了基于分段的不同 SLAM 技术。  [19] 中提出了一种基于片段对齐 Velodyne 扫描的策略,其中使用对称形状距离来比较和匹配 [21] 中定义的片段。 类似地,[20] 提出了一种扩展卡尔曼滤波器解决方案,它使用段作为地标,而不是点特征。

4 算法介绍:

由四个不同模块组成:点云分割,特征提取,分割匹配和几何验证。模块化在设计过程中是一个驱动因素。在后续,我们为系统的每个模块提出一种实例应用,可以被简单地更改用于在不同环境中的操作。

4.1 分割:

SegMatch 的第一个构建块将点云分割成不同的元素以进行匹配。 对于全局参考系中给定的每个传入点云 P,我们首先通过定义以当前机器人位置为中心的半径为 R 的圆柱邻域来提取局部点云。 然后将体素网格应用于生成的源云,以滤除体素中没有足够证据证明占用的噪声。 过滤后的点云最终使用 [22] 的“Cluster-All 方法”分割成一组点簇 Ci。 这种分割需要预先去除地平面,这可以通过基于垂直均值和方差对相邻体素进行聚类来实现 [22]。 一旦地平面被移除,欧几里得聚类用于增长段。 对于每个集群 Ci,质心 ci 计算为其所有点的平均值。

4.2 特征提取:

一旦我们对点云进行了分割,我们就为每个段提取特征。 此特征提取步骤用于压缩原始数据并构建适合识别和分类的段签名。 由于 3D 数据没有明确的黄金标准描述符,我们使用了几种不同的描述符。

   给定一个集群 Ci ,计算描述符导致特征向量

 虽然这个特征向量可以扩展到包括大量的描述符,但这里提供了两个产生有趣结果的描述符。

   f 1 基于特征值:在这个描述符中,线段点云的特征值被计算并组合在维度为 1x7 的特征向量中。 我们计算 [23] 中提出的线性度、平面度、散射、全方差、各向异性、特征熵和曲率变化。

   f 2 形状直方图集合:维度 1x640 的这一特征由 10 个直方图组成,这些直方图对 [6] 中描述的形状函数 D2、D3 和 A3 进行编码。  D2 形状函数是随机选择的点对之间距离的直方图,而 D3 对随机选择的点三元组之间的区域进行编码。  A3 形状函数描述了从这些三元组中获得的两条线之间的角度。

4.3 匹配分割:

使用这些功能,我们希望识别来自源云和目标云的段之间的匹配。 对于这个操作,我们选择了一种学习方法,因为通常很难选择合适的距离度量和阈值,尤其是在涉及多种特征类型时。 因此,分类器用于做出关于两个片段是否代表相同对象或对象部分的最终决定。 为了保持效率,我们首先通过在特征空间中执行 k-d 树搜索来检索候选匹配项,然后将其馈送到分类器。

   具体来说,我们使用随机森林来进行分类和计时。 这个分类器背后的想法是构建大量不同的决策树,并让它们投票给获胜的类。 在学习阶段,每棵树都使用训练数据集的引导子集和特征的随机子集进行训练。

   随机森林提供类似于 AdaBoost 算法的分类性能,但对输出标签中的噪声(例如错误标记的候选者)不太敏感,因为它们不会将精力集中在错误分类的候选者上 [24]。

   随机森林还可以提供有关特征对分类任务的相对重要性的信息。

   为了让随机森林分类器确定集群 Ci 和 Cj 是否代表同一对象,我们计算基于特征值的特征向量之间的绝对差:

特征向量 fi1 和 fj1 也被馈送到分类器,以获得基于特征值的总特征维度为 1x21。 对于形状特征集合的十个直方图,计算直方图交集,得到维度为 1x10 的特征。 给定这组特征,随机森林分类器分配一个匹配的分类分数 w。  w 上的阈值用于构建传递给下一个模块的候选匹配的最终列表。 该阈值取决于用于匹配的特征子集,并在表 I 中定义。

4.4 几何验证:

使用随机样本一致性 (RANSAC) [25] 将候选匹配输入到几何验证测试中。 使用分段质心评估转换。 最终基于其中的最小段数接受几何一致的段簇,从而产生 6DOF 变换和表示位置识别候选的匹配段列表。

5 实验

使用 KITTI 里程计数据集 [26] 评估所提出的基于分段的算法。 我们首先说明如何处理此数据集以生成用于训练和测试分类器的段匹配样本(第 IV A 和 IV-B 部分)。 这导致对不同分类器参数化的性能进行分析(第 IV-C 节)。 然后将基于段的定位策略与作为基线的关键点方法进行比较(第 IV-D 部分)。 然后,我们展示了如何将基于段的循环检测框架用于在线地点识别应用程序,以及它如何在不同环境中成功运行(第 IV-E 和 IV-F 部分)。

5.1 数据集

以下三个分析是使用 KITTI 数据集的序列 00、05 和 06 进行的。 序列 06 持续 1.2 公里(114 秒),仅用于训练分类器。 序列 00 持续 3.7 公里(470 秒)并且特别有趣,因为它包含一个大循环,其中车辆重新访问相同的环境 500 米。 因此,在定位实验中将使用具有多次遍历的这一部分。 序列05持续2.2公里(287秒),用于呈现框架的在线运行。
   如前所述,我们基于片段的位置识别算法的输入是全局参考系中的点云。 为了从 Velodyne 传感器提供的大量测量中实时生成点云,首先应用均匀速率子采样滤波器来去除一半的扫描点。 每当机器人行驶至少 1 米的距离时,这些扫描就会添加到点云中。 由于汽车上的传感器配置是已知的(例如传感器的高度),地平面提取是通过按最小高度直接过滤输入扫描来执行的。 这个简单的假设是有效的,并且非常适用于这个驾驶数据集。
   为了提取源点云,圆柱邻域 R 的半径设置为 60 米。 体素网格叶大小设置为0.1米,一个体素内至少需要两个点才能认为它被占用。
   对于分割,两个被占用的体素之间的最大欧几里得距离被设置为 0.2 米。 我们选择仅考虑包含最少 100 个点和最多 15000 个点的段。

5.2 训练和测试设置

执行以下过程以生成训练和测试数据。 在给定序列的第一部分,通过提取和描述片段来生成和处理目标图。 当车辆重新访问环境的同一部分时,地面实况信息用于存储对应的成对以及来自源和目标云的不同部分。
   对于本地云中的每个段,我们在特征空间中执行 k-最近邻 (k-NN) 检索并识别目标地图中的 200 个最近邻。 这些候选被保存为对应片段的真实匹配和不同片段的错误匹配。 在 KITTI 数据集的序列 06 上使用此过程,我们生成 2000 个真和 800000 个假段匹配。 为了训练随机森林,我们采用正负样本数量之间的 1:50 比率,这导致训练集包含 102000 个样本。

5.3 段匹配性能

第一个实验的目标是评估三段匹配技术的性能。 第一个名为 L2 的策略对两个段的特征向量之间的欧几里德距离应用阈值。 第二种策略 RF_eigen 基于仅依赖于基于特征值的特征的随机森林。 最后一个策略 RF_eigen+shapes 使用了第 III-B 节中描述的全套特征。 用于每个分类器的参数总结在表 I 中。
   图 3 显示了在对从序列 00 中提取的数据进行测试时三种方法的接收器操作特征 (ROC) 曲线。与 L2 范数对应物相比,随机森林分类器提供了性能改进。 由 RF_eigen+shapes 策略正确识别的相应段的示例如图 4 所示。


   在下一节的实验中,我们将说明这些分类器在实时定位过程中的表现。
   我们将 0.2 的误报率 (FPR) 定义为所有分类器的操作点,以限制错误的片段匹配并避免错误的位置识别。 该参数和表 I 中总结的其他参数用于部分 IV-D 和 IV-E 的定位和闭环实验。

5.4 本地化表现

本节评估 SegMatch 算法在目标段图中定位的性能。 序列 00 中感兴趣的部分(如第 IV A 部分所述)用于创建目标地图,并在重新访问该部分时执行定位。 将 IV-C 部分中描述的基于三个片段的策略与基于关键点的位置识别技术进行比较。

1)关键点基线:对于关键点定位方法,首先使用0.3米的半径为过滤后的云的每个点计算法线。 使用 PCL 库 [27] 的 Harris 3D 关键点提取器在目标和源云中选择关键点。 这些关键点经过过滤后,每个关键点之间的最小距离为 0.5 米。 这确保了相同的区域不会被描述两次,从而在后面的几何验证步骤中减少歧义。 每个关键点都使用半径为 0.4 米的快速点特征直方图 (FPFH) 来描述 [7]。 源关键点与目标云中的 75 个最近邻点匹配,并且使用第 III D 节中描述的几何验证算法来过滤关键点匹配列表并输出定位。 选择参数是为了获得我们能找到的最佳性能。
   2) 结果:为了显示结果的可重复性,并且由于计算机负载会影响每次运行中执行定位的位置,我们对每个策略执行 90 次运行并呈现平均结果。
   以与 [28] 类似的方式记录和评估每个定位之间的距离。 图 5 显示了在目标地图中没有成功定位的情况下行进给定距离的概率。 具体来说,这个指标是计算如下。

 尽管 RF_eigen+shapes 是最复杂和计算要求最高的策略(见表 II),但在成功定位之前,它从未需要超过 55 米,而 L2 和 RF_eigen 分别为 67 和 88 米。 另一方面,虽然 L2 是最快的策略,但它也进行了 14 次错误定位,这可能会促使进一步降低 0.2 FPR 的操作点。
  对于这两种基于随机森林的策略,车辆可以在 95% 的时间内成功定位在 35 米内。
  最后,所有段匹配方法明显优于关键点基线,这需要更多的工作才能提供积极的结果。 基于关键点匹配,我们无法在不考虑一些误报的情况下获得有趣数量的真阳性。 也就是说,平均在一分钟的定位运行中,基线检测到 5.23 个真阳性和 3.25 个假阳性定位。
  该算法在 Intel i7-4900MQ CPU @ 2.80GHz 上的计算要求如表 II 所示。请注意,包括形状特征提取、直方图交集和随机森林分类的​​集合在内的所有操作都可以受益于并行化。

 5.5 回环检测性能

我们现在展示如何在线使用基于段的循环检测算法,以及如何轻松地将其与姿势图轨迹估计系统集成。 在这种情况下,目标地图是通过积累从源云中提取的片段在线构建的,而不是在第 IV-D 节中执行的实验之前加载。 特别注意避免“重复段”使目标图混乱,即由同一对象部分产生的段,但在不同时间分段并在目标图中重叠。
   在 KITTI 数据集的序列 05 上应用此策略的结果如图 6 所示。对于此序列,使用 ICP 创建全局地图以在 Velodyne 扫描之间添加约束。 正如在无 GPS 状态估计解决方案中所预期的那样,这会随着时间的推移引入漂移。 在这个序列上,我们的实时算法成功检测到 12 个真阳性闭环,没有假阳性闭环。 一旦检测到循环,它们就会被输入一个类似于 [29]2 中描述的姿势图优化系统。 如前所述,该优化的结果用于更新目标片段位置并从目标地图中删除重复片段。

5.6 使用更复杂的数据进行演示

总结实验部分,我们简要地表明,通过简单地替换管道的子模块,所提出的位置识别算法可以应用于其他环境和传感器模式。 例如,在无法应用第 III B 节中描述的分割算法的情况下,可以将该模块替换为不同的算法。 图 7 显示了一个正确循环检测的例子,通过匹配从基于平滑约束的区域增长分割点云获得的片段[30]。 尽管这些类型的片段对人类来说似乎没有什么意义,但它们为闭环算法提供了区分特征,如图 7 中所示的匹配所示。

6 总结

本文提出了 SegMatch,这是一种基于段匹配概念在 3D 激光数据中执行位置识别的算法。 与关键点方法相比,在分段级别进行操作提供了几个优势,而无需对完美分段或环境中“对象”的存在做出任何假设。 我们的模块化方法首先从源点提取片段云,然后描述并匹配到先前映射的目标段。 最后应用几何验证步骤将这些候选匹配转换为位置识别候选。
   该框架已经在 KITTI 数据集上进行了详尽的评估。 我们首先分析了使用随机森林分类器学习足够的特征距离度量以匹配段的影响。 然后我们证明了该算法能够在 KITTI 数据集的最大地图中以高于 1Hz 的频率准确定位。 我们还演示了如何以在线方式稳健地检测循环,以及如何将这些循环输入姿态图轨迹估计器。 由于该框架的模块化方法,我们进一步说明它可以通过简单地更改算法的构建块轻松地应用于不同的场景。 整个框架的源代码可在线获取,为 3D 点云流提供实时分割和闭环检测。
   基于这种段匹配技术,我们预见到系统中的几个可能的优势,而不是映射 - 使用段来匹配和描述环境。 我们将采用监督学习技术将这些基于片段的地图解释为结构和对象语义类。

  • 0
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

和道一文字_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值