Deep Closest Point: Learning Representations for Point Cloud Registration && 2019论文笔记


作者:Yue Wang, Justin M. Solomon

研究机构:MIT

代码链接:代码

使用概率的方法可以得到soft的结果从而保证了可微性。

论文解决的问题

目标任务:点云配准,输入两个点云数据,寻找点云数据之间的刚性变换,输出点云之间的变换矩阵和点云的对应关系。

本文提出基于深度学习的单步(无需迭代)点云配准方法Deep Closest Point,性能SOTA,提取的点云特征在未见类别和目标上获得了很好的泛化性,以及证明了局部特征对于点云配准的促进作用。

Deep Closest Point: Learning Representations for Point Cloud Registration && 2019论文笔记

现有方法的不足 & 本文贡献

现有方法有ICP以及其变种方法,即通过迭代优化点云对应关系和变换矩阵来得到最终的最优解。但是这种方法由于目标函数是非凸函数,倾向于陷入局部最小值,在点云初始对应距离过大时甚至会得到伪最优。加入启发式的ICP变种方法速度满,且精度没有很大提升。

此外还有基于深度学习的配准方法PointNetLK,精度也不是很高。

论文方法介绍

Deep Closest Point 分为三个部分:(输入为两个点云X,Y)

  1. 点云特征提取网络,得到点云特征
  2. 基于注意力的点云匹配预测,得到点云之间的预测matching
  3. 可微的SVD模块,得到点云XY之间的刚性变换

Deep Closest Point: Learning Representations for Point Cloud Registration && 2019论文笔记

下面逐个介绍:

1.特征提取网络:

输入:点云X,Y

输出:特征Fx,FyF_x,F_y

这里作者选择了PointNet和DGCNN作为特征提取器。

其中DGRCNN相比于PointNet额外编码了局部几何信息,作者认为这将有助于配准精度。

在实验阶段,作者验证了两个网络之间的性能差别,结果符合预期。

2.注意力模块

论文提出每个点云的特征不应当独立的提取,而是联合两个输入点云进行提取,使得最终得到的两个特征适用于特定的任务(即配准)。

由于求解两个点云之间的对应关系与NLP领域中的sequence-to-sequence问题很相近,作者引入了Transformer作为注意力函数ϕ\phi,将注意力输出作为残差项修正原来的特征Fx,FyF_x,F_y,得到最终的特征:
ΦX=FX+ϕ(FX,FY)ΦY=FY+ϕ(FY,FX) \Phi_X = F_X + \phi(F_X , F_Y ) \\ \Phi_Y = F_Y + \phi(F_Y , F_X )
进而得到匹配关系(一个概率向量):
m(xi,Y)=softmax(ΦYΦxiT) m(x_i,Y) = softmax(\Phi_Y\Phi_{x_i}^T)
可将其视为点x_i到Y中各个点的软指针。

3.SVD模块

使用软指针生成平均意义下的(即注意力机制)每个x_i对应的Y中的点:
yi^=YTm(xi,Y)R3 \hat{y_i} = Y^Tm(x_i, Y) ∈ R^3
其中Y为NX3的矩阵表示点云Y中的所有点云。

得到两个点云之间的匹配关系(xi,yi^)(x_i, \hat{y_i})后,使用SVD分解得到从X到Y的变换矩阵RXYR_{XY} 和平移向量tXYt_{XY}:
xˉ=1Ni=1Nxi, yˉ=1Ni=1NyiH=i=1N(xixˉ)(yiyˉ)SVDH=USVTRXY=VUT  ,  tXY=RXYxˉ+yˉ 首先计算两个点云的中心:\bar x =\frac1N\sum_{i=1}^N x_i,\ \bar y =\frac1N\sum_{i=1}^N y_i \\ 各个点对之间的互协方差矩阵: H = \sum_{i=1}^N (x_i − \bar x)(y_i − \bar y)\\ SVD分解:H = USV^T \\ 变换矩阵:R_{XY} = VU^T \ \ ,\ \ t_{XY} = −R_{XY}\bar x + \bar y
其中SVD 分解在tensorflow和pytorch中都有实现。

LOSS函数

直接使用变换矩阵与真值之间的偏差作为损失:
Loss=RXYTRXYGI2+tXYtXYG2+λθ2 Loss = ||R_{XY}^TR_{XY}^G-I||^2 + ||t_{XY}-t_{XY}^G||^2 + \lambda||\theta||^2

实验内容以及分析

两个版本V1、V2:无注意力机制的为V1

在未见点云上进行测试:

Deep Closest Point: Learning Representations for Point Cloud Registration && 2019论文笔记

在未见类别的点云上进行测试:

Deep Closest Point: Learning Representations for Point Cloud Registration && 2019论文笔记

鲁棒性测试:使用有噪声的输入

Deep Closest Point: Learning Representations for Point Cloud Registration && 2019论文笔记

速度测试:ICP很快,可以看出其复杂度不高于线性,DCP在4096之前都很快,但是到4096突然变慢了10倍,复杂度应该高于线性。

Deep Closest Point: Learning Representations for Point Cloud Registration && 2019论文笔记

PointNet 与 DGCNN的对比:选择DGRCNN没错

Deep Closest Point: Learning Representations for Point Cloud Registration && 2019论文笔记

MLP与SVD分解的对比: MLP是一个通用逼近器,因此与SVD做了一下对比:选择SVD没错

Deep Closest Point: Learning Representations for Point Cloud Registration && 2019论文笔记

PointNet作者指出特征维度对模型的精度是有很大影响的,越大越好,但是

高于阈值之后就影响甚微了。实验结果显示1024维优于512维度。这里作者并没有找到最优阈值,个人觉得用grid search找到最佳阈值然后再测试精度可能更好?

Deep Closest Point: Learning Representations for Point Cloud Registration && 2019论文笔记

最后作者提使用ICP作为后优化策略,即 使用DCP+ICP 可以得到更好的结果,但是只给出了示意图没有误差结果。

Deep Closest Point: Learning Representations for Point Cloud Registration && 2019论文笔记