论文链接:https://arxiv.org/pdf/2208.01925.pdf
代码链接:https://github.com/zxrzju/SuperLine3D
摘要
电线杆和建筑物的轮廓是城市道路上随处可见的物体,可为计算机视觉提供可靠的提示。为了重复提取它们作为特征并在离散的LiDAR帧之间实现关联以进行点云匹配。本文提出了一个用于LiDAR点云中3D线的基于学习的特征分割和描述子模型。为了高效的训练模型,本文首先为目标线的基本外观生成synthetic primitives,并构建迭代线的自动标记过程,以逐步细化真实LiDAR扫描上的线标签。本文提出的分割模型可以在任意尺度扰动下提取目标线段,并使用共享的EdgeConv编码层来联合训练分割头和描述头。使用SuperLine3D,本文可以在没有初始转换提示的情况下构建一个高复用的全局点云配准模块。实验表明,SuperLine3D的基于线的配准方法与最先进的基于点的方法相比具有很强的竞争力。
本文的整体框架如下图所示,贡献总结如下:
- 首次提出基于学习的线分割和描述子的用于LiDAR点云的方法,为全局配准提出了一个适用的特征类别;
- 提出用于点云的线段标记方法,该方法可以将从合成数据中学习到的模型迁移到真实的LiDAR场景中以进行自动标记;
- 探索了点云特征的尺度不变形,并通过消除Sim(3)变换中的尺度因子,为在尺度扰动下改进基于学习的任务在点云上的泛化性提供了一个可行的思路。
方法
由于缺乏相关数据集,本文遵循SuperPoint [11]的自监督思想,首先构建简单的合成数据来初始化基础模型,然后对模型进行细化来训练线分割模型,期间迭代地使用来自几何适应的自动标记的真实LiDAR点云数据。之后,收集不同LiDAR扫描之间的线对应关系,并以端到端的方法联合训练线分割和描述子模型。
Line Segmentation Model
合成数据生成:本文主要检测两种线段:1)平面之间的交点;2)极点。因此,本文选择使用如下图(a)所示的两个mesh primitives来分别模拟它们的局部外观。这两个网格模型首先均匀采样4000个点云,如下图(b)所示,每个点添加5%的3自由度相对位置扰动。然后,为了模拟附近的背景点,进一步随机裁剪了40个basic primitives,每个primitives包含1000个真实的点云[14],并将它们组合在一起以构建最终的合成数据。本文一共生成了5000个合成点云,每个云有5000个点。
尺度不变的线分割:本文将线检测视为点云分割问题,主要挑战是原始缩放问题:在真实的LiDAR帧中,点的密度随着扫描距离的增加而减小,当目标特征远离传感器时,体素网格下采样无法完全归一化密度。此外,上述的合成数据生成也没有考虑线段的比例,如上图(e)所示。如果不处理这样的问题,当训练和测试数据在不同尺度时,模型将无法产生合理的预测。
为了解决这个问题,本文的网络通过消除 Sim(3) 变换的比例因子并使用相对距离来获得尺度不变性:
上式中,本文搜索点p附近20个最近点,并将尺度不变的局部特征计算为曼哈顿距离与p与其最近邻之间的欧几里得的距离之比。这样的特征定义的权衡是局部特征不能反映原点在欧几里得空间中的位置,所以变换有信息损失。
模型结构:本文选择DGCNN[39]作为主干,因为它直接对点及其最近邻进行编码,而不需要复杂的操作。下式为EdgeConv [39]的局部特征编码函数:
自动线段标注:由于没有可用的相关数据集。因此本文构建了一个自动线段标记的方法,如下图所示。受SuperPoint [11]中的单应自适应的启发,本文对LiDAR扫描进行几何自适应。首先,在合成数据集上训练分割模型,并将XOY中20m和偏航中360°均匀分布的2D变换作用于LiDAR点云。然后,基于训练好的模型来预测扰动数据上的标签,从所有扰动聚合标签,并将预测超过80%属于线的点云作为候选点云。为了将二进制点云聚类成线,本文使用了区域增长算法。一旦提取得到了线段,就会加入到训练中以进一步细化分割模型。本文重复几何适应3次,在KITTI里程计序列[14]上生成了12989个自动标记的LiDAR帧。
Joint Training of Line Segmentation and Description
线段描述子的定义:与只需要线段端点的几何定义不同。每条线的描述子应通过其所属点传达局部外观,因为观察到的端点可能由于遮挡而在帧之间变化。因此,本文将线段的描述子定义为其所有所属点的平均值。
模型结构:网络结构如下图所示,包含堆叠的三个EdgeConv [39]层用于特征编码,和两个解码器分别用于线段分割和描述子提取。
损失函数:分割损失是标准的cross-entropy损失,本文按照[38]和[5]为线段描述子构建判别损失。具体来说,首先使用线段标签得到每条线段的均值描述子μ,然后使用每条线的将点云描述子拉向μ。提出是为了使不同线段的描述子互相排斥。另外对于点云对,需要计算匹配损失和非匹配线之间的损失。每项损失如下所示:
最终损失如下:
基于线段的配准:本文的网络为每个点云输出标签和描述子。使用上述步骤提取后,进一步执行描述子匹配以获取线对应。匹配描述子符的阈值设置为0.1。通过最小化所有线匹配的损失,即最小化point-to-line的距离,进而实现将源点云配准到目标点云的变换。
实验结果
Point Cloud Registration Test
上表列出了各种算法的配准性能对比。在随机旋转扰动下,ICP的recall仅为11.3%。基于FPFH特征的FGR和RANSAC方法具有更高的recall,但错误也更高。在处理大扰动场景时,基于学习的端到端方法HRegNet和DGR的性能也会大幅降低。下图展示了不同错误阈值下的配准recall
本文的基于线的配准实现了与基于点云特征方法相当的性能。下图展示了KITTI测试序列的可视化结果,本文的方法成功地配准了任意旋转扰动下的点云。
Ablation on RANSAC iterations
基于点云特征的配准需要RANSAC去除异常值并计算正确的变换。相比之下,本文不依赖RANSAC 过滤错误匹配。为了在变换估计期间去除异常值,本文在初始对齐后计算线对应的line-to-line距离,进而删除平均距离大于1m的结果并重新计算。
上图展示了不同RANSAC迭代下点云配准的性能。在没有 RANSAC 的情况下,D3Feat 和SpinNet 都无法获得准确的转换,直到最大迭代次数超过1000次。
Line Segmentation Evaluation
下图展示了网络预测的准确率和mIOU,没有尺度适应的方法在尺度变化时性能骤降。vanilla DGCNN在小尺度干扰(0.8 到 1.6)中获得最佳精度和 mIOU,本文提出的尺度不变方法在任意尺度下都是稳定的。此外,本文还发现,当尺度固定后,使用尺度不变的方法会降低准确率,因此本文只在合成数据训练中使用。在分割和描述子的联合训练中,改用vanilla DGCNN。
可视化的对比:
Generalization on Unseen Dataset
为了比较泛化性,本文在Apollo Sourthbay数据集[23]上进行测试,可视化结果如下:
性能对比:
消融实验
进一步验证了Skip Encoding和Descriptor Dimension对模型性能的影响。
参考
[1] SuperLine3D: Self-supervised Line Segmentation and Description for LiDAR Point Cloud
原文首发微信公众号【自动驾驶之心】:一个专注自动驾驶与AI的社区(https://mp.weixin.qq.com/s/NK-0tfm_5KxmOfFHpK5mBA)