[arXiv ] PCRNet: Point Cloud Registration Network using PointNet Encoding

时间:2024-04-03 18:41:52

零、概要

0.0 摘要

PointNet最近称为非结构化点云数据的一种流行表示,允许将深度学习应用到诸如对象检测、分割和形状补全等任务中。然而,最近的文献表明PointNet表示对于姿态偏差(pose misalignment)的敏感性。本文提出了一种新的基于PointNet表示点云配准框架,它比较template点云和source点云的PointNet特征,以找到精确对齐template点云和source点云的变换。基于点云形状的先验信息,PCRNet可以产生特定于形状或者一般形状的办法,且对噪声和初始位置具有鲁棒性。作者对模拟数据和真实数据进行了大量的实验,以验证PCRNet的有效性,并与最先进的办法进行了性能比较。

一、论文的出发点和贡献

由于激光雷达(lidar)、立体相机(stereo cameras)和结构光传感器(structured light sensors)的发展,3D点云数据如今无处不在。点云配准中的经典ICP算法和其大多数变种,依赖于最近点对应关系(closest points correspondences)的显式计算,在点云较大时,其速度往往较慢;而且它是不可微的,不能够整合到端到端的深度学习框架中。基于特征的方法通常局限于具有可识别和独特特征的点云数据。基于深度学习的方法(PointNetLK)在unseen objects具有较好的泛化性,但其对噪声较敏感。

因此,作者提出了PCRNet和迭代形式的PCRNet:

  • 它不需要最近点对应关系的计算,提高了效率
  • 对噪声较为鲁棒
  • Loss使用了CD(Chamfer Distance) Loss或EMD(Earth Mover Distance) Loss

二、论文的方法

记template点云为 P T P_T PT,source点云为 P S P_S PS,PointNet为 ϕ \phi ϕ。由于PointNet编码的全局特征向量包含了点云的集合信息和方向信息,因此通过比较特征向量可以得到两个点云之间的变换。也就是,计算刚性变换 T ∈ S E ( 3 ) T \in SE(3) TSE(3),使得 ϕ ( P S ) \phi (P_S) ϕ(PS) ϕ ( P T ) \phi (P_T) ϕ(PT)之间的不同最小。

2.1 PCRNet 和 Iterative PCRNet

[arXiv 2019] PCRNet: Point Cloud Registration Network using PointNet Encoding

PCRNet的结构如Figure 2所示,提取特征的网络和PointNet有些类似,是一个多层感知机MLP(64, 64, 64, 128, 1024),经过池化操作得到整个点云的特征(B, 1024),B是batch size。需要注意的template和source点云经过的MLP的参数是共享的。Source点云和template点云的特征进行concat操作,得到(B, 2048)的特征,而后经过FC(1024, 1024, 512, 512, 256, 7)。7维向量的前3维表示平移向量 t ∈ R 3 t \in \mathbb R^3 tR3,后面4维向量经过归一化后表示旋四元数 q ∈ R 4 q \in \mathbb R^4 qR4

[arXiv 2019] PCRNet: Point Cloud Registration Network using PointNet Encoding

在Iterative PCRNet网络中,FC层变为了(1024, 512, 256, 7),同时在输出层增加了dropout层来防止过拟合。整个迭代过程如Figure 3所示。在第一次迭代中,source点云和template点云被送入到PCRNet,得到初始的变换T(1)。在下一次迭代中,T(1)作用于source点云得到transformed点云,和原始的template点云一块送入到PCRNet。经过n次迭代,原始的source点云和template点云的整体变换为每一次迭代变换的组合:

T = T ( n ) × T ( n − 1 ) × . . . × T ( 1 ) T = T(n) \times T(n-1) \times ... \times T(1) T=T(n)×T(n1)×...×T(1)

2.2 损失函数

用于配准网络训练的损失函数的目标应该是最小化变换后的source点云和template点云中的对应点之间的距离。作者在代码里提供了两个损失函数:

  • EMD(Earth Mover Distance) Loss

    E M D ( P S est , P T ) = min ⁡ ψ : P S est − > P T 1 ∣ P S est ∣ Σ x ∈ P S est ∣ ∣ x − ψ ( x ) ∣ ∣ 2 EMD(P_S^{\text{est}}, P_T) = \min_{\psi: P_S^{\text{est}} -> P_T} \frac{1}{|P_S^{\text{est}}|}\Sigma_{x \in P_S^{\text{est}}}||x - \psi(x)||_2 EMD(PSest,PT)=ψ:PSest>PTminPSest1ΣxPSestxψ(x)2

  • CD(Chamfer Distance) Loss

    C D ( P S est , P T ) = Σ x ∈ P S est min ⁡ y ∈ P T ∣ ∣ x − y ∣ ∣ 2 + Σ y ∈ P T min ⁡ x ∈ P S est ∣ ∣ x − y ∣ ∣ 2 CD(P_S^{\text{est}}, P_T) = \Sigma_{x \in P_S^{\text{est}}} \min_{y \in P_T}||x - y||_2 + \Sigma_{y \in P_T } \min_{x \in P_S^{\text{est}}}||x-y||_2 CD(PSest,PT)=ΣxPSestyPTminxy2+ΣyPTxPSestminxy2

三、论文的实验

  • 数据集 ModelNet40, S3DIS

  • 术语定义和评估指标

    success ratio为旋转误差小于success criteria的测试用例数与总用例数的比例。

    横坐标为success criteria,纵坐标为success ratio的曲线为AUC(area under the curve)曲线,其下的面积表示AUC值(一般会进行归一化操作)。

    source点云是通过对template点云进行随机旋转R和平移t得到,构成(source, template, R, t)四元组。

3.1 无噪声数据的性能

作者在这里做了两个实验: 一个是训练ModelNet40中的20类,在未参与训练的5类(unseen categories)样本中进行评估,ICP、PointNetLK和iterative PCRNet的AUC分别为0.802, 0.998和0.682。

第二个实验是在5类的部分数据集上进行训练,同时在这5类其其余数据集上进行测试,ICP、PointNetLK和iterative PCRNet的AUC分别为0.862, 0.998和0.972。

这说明iterative PCRNet在使用object specific information训练时,是非常有效的;同时PointNetLK的泛化能力好于iterative PCRNet。但下面的实验表示PointNetLK对于噪声是不鲁棒的。

3.2 噪声数据的性能

[arXiv 2019] PCRNet: Point Cloud Registration Network using PointNet Encoding

作者在有噪声的数据中做了四组实验,实验结果如Figure 4所示。

Figure 4(a)在多类数据集上进行训练,其中对于source点云添加0均值, 0.04标准差的高斯噪声,从在多类有噪声的数据集上的评估结果可以看到,iterative PCRNet对于噪声的鲁棒性明显高于PointNetLK,iterative PCRNet的效果优于ICP和PointNetLK。

Figure 4(b)的实验是在一类数据上进行的实验,训练集和测试集的source点云均有噪声,实验结果如Figure 4(a)所示,iterative PCRNet的结果优于ICP和PointNetLK。

Figure 4©的实验是在一个model上训练和测试的结果。

Figure 4(d)在无噪声的数据上进行训练,在有噪声的数据集上进行测试的结果,iterative PCRNet结果稍弱于ICP,但明显优于PointNetLK算法。

[arXiv 2019] PCRNet: Point Cloud Registration Network using PointNet Encoding

Figure 6的横坐标是在测试中噪声的标准差,纵坐标是Success Ratio。Iterative PCRNet和PointNetLK都是在多个类别的高斯噪声( μ = 0 , σ = 0.04 \mu=0, \sigma = 0.04 μ=0,σ=0.04)数据上训练的。从图中可以观察到,当噪声的标准差增加到0.02,PointNetLK的性能开始显著降低。当噪声的标准差在0-0.06时,iterative PCRNet的性能是最佳的。

[arXiv 2019] PCRNet: Point Cloud Registration Network using PointNet Encoding

Figure 7的横坐标是迭代次数,纵坐标是旋转角度的误差,可以看到当迭代次数为3时,iterative PCRNet接近收敛,而ICP和PointNetLK需要大约15次才收敛。

这些实验具有一定的指导意义:

  • 虽然配准网络具有一定的泛化能力,但在与测试集同类数据集中训练效果会更佳;
  • PointNetLK对噪声较为敏感;
  • Iterative PCRNet收敛较快;
  • 训练时增加噪声可以提高配准的性能。

3.3 复现

基于作者开源的PyTorch代码进行复现,并与作者提供的pretrained权重进行比较:

  • pretrained loss(0.0345) vs CD Loss(0.0796)
  • pretrained loss(0.1805) vs EMD Loss(训练中)

3.4 速度

论文中在ModelNet40的带有噪声的Car数据上进行了训练和测试,实验结果如Table 1所示,Go-ICP具有最好的结果,但其运行时间比其它算法多几个数量级。PCRNet和iterative PCRNet可以比较好的兼顾效率和配准性能。

[arXiv 2019] PCRNet: Point Cloud Registration Network using PointNet Encoding

3.5 S3DIS实验

作者将在S3DIS数据集中分割的椅子与来自ModelNet40中的椅子进行配准,之后用配准后的ModelNet40的椅子替换S3DIS数据集中的椅子,实验结果如Figure 9所示,iterative PCRNet的结果(d)好于ICP(b)和MIP©算法。

[arXiv 2019] PCRNet: Point Cloud Registration Network using PointNet Encoding

四、对论文的想法

  • 缺点
    • 实验简单,不能够证明在真实点云中的性能
    • 没有考虑部分重叠或者遮挡情形下的点云配准
  • 优点
    • 结构简单
    • 实验部分对比了在噪声和不同训练数据的性能,对设计配置网络具有一定的指导意义。
    • 使用了EMD Loss和CD Loss,在点云配准中不是很常见