LinK3D: Linear Keypoints Representation for 3D LiDAR Point Cloud【翻译与解读】

时间:2024-07-11 08:28:54

LinK3D: Linear Keypoints Representation for 3D LiDAR Point Cloud

摘要
特征提取和匹配是许多机器人视觉任务的基本组成部分,如 2D 或 3D 目标检测、识别和配准。2D 特征提取和匹配已取得巨大成功。然而,在 3D 领域,当前方法由于描述性差和效率低,可能无法支持 3D LiDAR 传感器在机器人视觉任务中的广泛应用。为了解决这一限制,我们提出了一种新颖的 3D 特征表示方法:3D LiDAR 点云的线性关键点表示 (LinK3D)。LinK3D 的新颖之处在于它充分考虑了 LiDAR 点云的特性(如稀疏性和复杂性),并用其稳健的邻近关键点表示关键点,这在关键点描述中提供了强约束。我们在三个公共数据集上评估了 LinK3D,实验结果表明我们的方法取得了出色的匹配性能。更重要的是,LinK3D 还表现出优异的实时性能,比典型旋转 LiDAR 传感器的 10 Hz 帧率更快。在具有 Intel Core i7 处理器的计算机上,LinK3D 从 64 束 LiDAR 收集的点云中提取特征平均仅需 33 毫秒,而匹配两个 LiDAR 扫描仅需约 22 毫秒。此外,我们的方法可以扩展到 LiDAR 里程计任务,并显示出良好的可扩展性。我们在 GitHub 上发布了我们方法的实现。

索引词
3D LiDAR 点云、特征提取和匹配、实时性能、LiDAR 里程计

I. 引言

特征提取和匹配是大多数机器人视觉任务的基石,例如目标检测【1】和重建【2】任务。在2D视觉领域,已经提出并广泛使用了多种著名的2D特征提取方法(如SIFT【3】和ORB【4】)。然而,在3D视觉领域,仍然存在一些未解决的问题。当前的方法【5】–【11】可能不适用于高频(通常≥10Hz)的3D LiDAR和大规模复杂场景,特别是在效率和可靠性方面。LiDAR点云的不规则性、稀疏性和无序性使得直接应用2D方法于3D场景变得不可行。

现有的3D特征点表示方法主要分为两类:手工设计特征和基于学习的特征。手工设计的特征【5】-【7】、【12】主要以直方图的形式描述特征,并使用局部或全局统计信息来表示特征。由于LiDAR使用的大规模场景中通常存在许多相似的局部特征(例如局部平面),这些局部统计特征很容易导致匹配错误。全局特征【13】、【14】从直觉上看不太可能在点云内部生成准确的点对点匹配。基于学习的方法【8】–【11】、【15】、【16】取得了很大进展,但这些方法的效率和泛化性能仍有待提高。此外,一些方法【5】-【7】是为从小规模对象表面(例如,斯坦福兔子点云)中收集的点云提出的。显然,使用3D LiDAR的大规模场景(例如KITTI【17】的城市场景)与小规模对象之间存在一些差异。具体来说,主要差异如下:

小对象的表面通常是平滑且连续的,其局部表面是独特的。然而,3D LiDAR点云包含大量不连续和相似的局部表面(例如相似的局部平面、树木、杆子等),这些特征很容易导致匹配错误。
与小规模对象的点云相比,LiDAR点云通常更加稀疏,并且点在空间中分布不均匀。如果在固定大小的空间中没有足够的点,可能无法得到有效的统计描述。
与静态和完整的小规模对象不同,LiDAR扫描中通常存在动态对象(例如汽车、行人等)和遮挡。这很容易导致当前和后续LiDAR扫描中对相同局部表面的描述不一致。
根据这些差异,本文提出了一种用于LiDAR点云的新颖3D特征。我们的方法首先提取稳健的聚合关键点,然后将提取的聚合关键点输入到描述子生成算法中。如图2所示,算法生成了一种新颖的关键点表示形式的描述子。在获得LinK3D描述子后,匹配算法可以快速匹配两个LiDAR扫描的描述子。在实验中,提出的LinK3D实现了出色的匹配性能,并且还展示了令人印象深刻的效率。此外,LinK3D还可以潜在地应用于下游3D视觉任务,我们已经将LinK3D应用于LiDAR里程计任务。总结一下,我们的主要贡献如下:

强匹配性能。提出的LinK3D特征考虑了LiDAR点云的特性,并在稀疏LiDAR点云的匹配性能方面取得了显著进展。
实时性能。提出的LinK3D在CPU上的效率令人印象深刻,这使其更适合于移动机器人在计算资源有限情况下的3D应用。
良好的可扩展性。LinK3D可以潜在地应用于下游3D视觉任务。在本文中,LinK3D已应用于LiDAR里程计任务。

II. 相关工作

基于提取策略,当前的3D特征提取方法可以分为手工设计的方法和深度神经网络(DNN)方法。

手工设计方法:直方图通常用于表示局部表面的不同特性。PFH【12】生成支持区域内点对的多维直方图特征。FPFH【5】通过计算点与其邻居之间的关系,为每个点构建简化的点特征直方图(SPFH)。SHOT【6】结合了空间和几何统计信息,并对不同空间位置的表面法线直方图进行编码。为了提高匹配效率,提出了一种二进制量化方法B-SHOT【7】,将实值向量转换为二进制向量。3DHoPD【18】通过将3D关键点转换到一个新的3D空间中来生成直方图描述子。此外,全局描述子Seed【14】是一种基于分割的方法,用于LiDAR SLAM的地点识别任务。此外,GOSMatch【19】提取基于直方图的图形描述子,用于LiDAR SLAM的地点识别。由于LiDAR点云的稀疏性,当点数不足时,统计方法可能无法生成有效的特征表示。

基于DNN的方法:3DFeatNet【15】学习点云匹配的3D特征检测器和描述子,使用弱监督。FCGF【16】通过3D全卷积网络以单次传递提取3D特征,并呈现度量学习损失以提高性能。DeepVCP【8】基于一组候选点的学习匹配概率生成关键点。DH3D【9】设计了一个层次网络,执行局部特征检测、局部特征描述和单次前向传递的全局描述子提取。D3Feat【10】利用自监督检测器损失,由在线特征匹配结果指导训练。语义图表示方法【20】保留了原始点云的语义和拓扑信息,用于LiDAR SLAM的地点识别。Stick-yPillars【11】使用手工设计的方法提取关键点,并结合DNN方法生成描述子,该方法在关键点提取方面效率高,但在描述子生成方面效率低。Geo Transformer【21】编码成对距离和三重角度,使其在低重叠情况下具有鲁棒性并对刚体变换不变。总体而言,基于DNN的方法通常需要GPU加速处理。此外,这些方法的泛化能力尚待提高。

在这里插入图片描述
图1. 提出的LinK3D的核心思想和基于LinK3D的两次LiDAR扫描匹配结果。LinK3D表示当前关键点及其邻近关键点。绿色线条是有效匹配。通过匹配相应的LinK3D描述子可以获得精确的点对点匹配。

在这里插入图片描述
图2. 提出的LinK3D在关键点提取和描述方面的工作流程。首先执行关键点提取以生成聚合关键点。随后,执行描述子生成算法以获得有效的关键点描述子。

III. 方法论

我们的方法流程主要包括两个部分:特征提取和特征匹配。特征提取的过程如图1所示。首先提取LiDAR扫描的边缘点,然后将其输入到边缘关键点聚合算法中,在该算法中进一步提取稳健的聚合关键点,用于后续的描述子生成。在描述子生成算法中,构建了距离表和方向表,以快速生成描述子。

A. 关键点提取
  1. 边缘点提取:
    在关键点提取中,我们将LiDAR点云大致分为两类:边缘点和平面点。边缘点和平面点的主要区别在于其所在局部表面的平滑度。给定一个3D LiDAR点云 P c P_c Pc,设 i i i P c P_c Pc中的一个点。 P s P_s Ps是一组与点 i i i位于同一扫描线上的连续点,并均匀分布在 i i i的两侧。 ∣ S ∣ |S| S P s P_s Ps的基数。当前点 i i i的平滑项定义如下:

    ∇ i = 1 ∣ S ∣ ∥ ∑ j ∈ P s , j ≠ i ( p j ⃗ − p i ⃗ ) ∥ 2 \nabla_i = \frac{1}{|S|} \left\| \sum_{j \in P_s, j \ne i} (\vec{p_j} - \vec{p_i}) \right\|^2 i=S1 jPs,j=i(pj pi ) 2

    其中, p i ⃗ \vec{p_i} pi p j ⃗ \vec{p_j} pj 分别是两个点 i i i j j j的坐标。提取的边缘点(如图3a所示)具有大于阈值 T h v T_hv Thv ∇ \nabla

详细解读

  1. 点云分类:

    • 将LiDAR点云大致分为两类:边缘点和平面点。
    • 区分这两类点的主要依据是其所在局部表面的平滑度。
  2. 点的平滑度:

    • 给定一个3D LiDAR点云 P c P_c Pc,设 i i i P c P_c Pc中的一个点。
    • P s P_s Ps是一组与点 i i i位于同一扫描线上的连续点,并均匀分布在 i i i的两侧。 ∣ S ∣ |S| S P s P_s Ps的基数(即点的数量)。
  3. 平滑项的计算:

    • 当前点 i i i的平滑项定义为:
      ∇ i = 1 ∣ S ∣ ∥ ∑ j ∈ P s , j ≠ i ( p j ⃗ − p i ⃗ ) ∥ 2 \nabla_i = \frac{1}{|S|} \left\| \sum_{j \in P_s, j \ne i} (\vec{p_j} - \vec{p_i}) \right\|^2 i=S1 jPs,j=i(pj pi ) 2
    • 其中, p i ⃗ \vec{p_i} pi p j ⃗ \vec{p_j} pj 分别是两个点 i i i j j j的坐标。
  4. 边缘点的识别:

    • 根据计算出的平滑度 ∇ i \nabla_i i,提取那些具有大于阈值 T h v T_{hv} Thv的点作为边缘点。
    • 边缘点通常表示在局部表面上变化较大的区域,如物体的边缘。

解读公式

  • ∇ i \nabla_i i 表示点 i i i 的平滑度。
  • 1 ∣ S ∣ \frac{1}{|S|} S1 是一个归一化系数,用于确保平滑度与点数量无关。
  • ∑ j ∈ P s , j ≠ i \sum_{j \in P_s, j \ne i}