RPM-Net: Robust Point Matching using Learned Features 2020 论文笔记


通讯作者:Gim Hee Lee

第一作者:Zi Jian Yew

研究机构:新加坡国立大学

代码链接:https://github.com/yewzijian/RPMNet

论文解决的问题

解决了点云刚性配准任务中,对初始刚性变换和噪声/离群点敏感的问题。

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

迭代最近点法(ICP)分两步迭代求解刚性点云配准问题:

  1. 对空间上最近点对应关系进行硬赋值,
  2. 求出最小二乘刚性变换

然而,基于空间距离的最近点对应的硬赋值对初始刚性变换和离群点敏感,往往导致ICP收敛到错误的局部极小值。

Robust Point Matching (RPM)算法:

  • RPM比ICP更为健壮,但它仍然对初始化和局部极小值敏感,因为仍然仅根据空间距离获得点对应关系。

本文提出的RPM网络,一种对初始化不敏感的基于深度学习的刚性点云配准方法则解决了ICP的问题。

与某些现有方法不同,RPM网络可以处理缺少的对应关系和部分可见性的点云。实验结果表明,与现有的非深度学习和最新的深度学习方法相比,本文的RPM网络达到了SOTA。

论文方法介绍

首先介绍RPM算法:

RPM算法是一种使用退火和软对应方式的配准算法。ICP算法在迭代计算时利用距离最近原则来产生待配准点对,而RPM算法利用软对应方式为任意点对赋予0到1之间的值,并最终收敛到0或1,如果是1则代表这两个点是配准点对。RPM算法最终计算得到的配准点对是一一映射的,而ICP算法通常不是。
argminM,R,tj=1Jk=1Kmjk(Rxj+tyk22α) arg min_{M,R,t}\sum^J_{j=1}\sum^K_{k=1}m_{jk}(‖Rx_j+t−y_k‖_2^2−α)
RPM算法想要找到一个刚性变换{R,t}以及配准矩阵M,使得X能够与Y匹配。

配准矩阵的元素初始化:mjkeβ(Rxj+tyk22α)m_{jk}←e^{−β(‖Rx_j+t−y_k‖^2_2−α)}

其中$\alpha \ \beta $分别为判定异常值的阈值和每次迭代后需要增加的退火参数

RPM-Net:

模型对RPM做了两个修改:

  1. 将基于空间的距离量度换成了基于混合特征距离
  2. 在每次迭代中都要重新计算参数$\alpha \ \beta $

模型概述:

在第i次迭代i时:

  1. 特征提取器从输入点云X、Y中提取混合特征
  2. 参数估计网络预测最佳退火参数$\alpha \ \beta $
  3. 混合特征和α,β参数用于计算初始匹配矩阵,然后进行Sinkhorn归一化以强制执行双重随机约束以获得最终匹配矩阵MiM^i
  4. 计算出更新的变换{R_i,t_i},并在下一次迭代中使用

特征提取器:

对于任意点云x_c,其混合特征:
Fxc=fθ(xc,{xc,i},{PPF(xc,xi)}) F_{x_c}=f_θ(x_c,\{∆x_{c,i}\},\{PPF(x_c,x_i)\}) \\

  • 其中:
    fθPointNetθxiN(xc),N(xc)xcxc,i=xixc f_θ为特征提取网络PointNet,网络参数\theta \\ x_i\in N(x_c), N(x_c)为x_c领域内的点云\\ ∆x_{c,i}=x_i−x_c\\

  • 4D点对特征:(以旋转不变的方式描述质心点x_c与相邻的点x_i之间的曲面)

PPF(xc,xi)=((nc,xc,i),(ni,xc,i),(nc,ni),xc,i2)nc nixc xi PPF(x_c,x_i) = (∠(n_c,∆x_{c,i}),∠(n_i,∆x_{c,i}),∠(n_c,n_i),‖∆x_{c,i}‖_2)\\其中n_c \ n_i 为点云x_c \ x_i 的法向量 \\

参数估计网络:(Parameter Prediction Network)

在RPM算法中,退火参数$\alpha \ \beta $是需要手动设置的。RPM网络中,由于这些参数取决于学习的特征,因此很难手动设置。

将X、Y两个点云连接起来形成一个(J+K,3)的矩阵,用包含0或1的第四列对其进行扩充(X为0,Y为1),并将其输入PointNet,输出得到参数$\alpha \ \beta $

为了确保预测的α和β为正,在最后一层使用softplus**函数

预测刚性变换(Estimating the Rigid Transformation):

配准矩阵预测值得到后,最后一步就是预测刚性变换,即根据X计算对应的坐标Y^\hat Y
yj^=1kKmjkkKmjkyk \hat{y_j}=\frac{1}{\sum^K_km_{jk}}\sum^K_km_{jk}·y_k
然后使用SVD分解计算刚性变换。

由于不是每个X都有对应的Y,所以在计算刚性变换时,所以用wj=kKmjkw_j=\sum^K_km_{jk}来衡量每个对应关系(xj,ˆyj)

损失函数(Loss Functions)

Lreg=1JjJ(Rgtxj+tgt)(Rpredxj+tpred)Linlier=1JjJkKmjk1KkKjJmjkLtotal=Lreg+λLinlier, L_{reg}=\frac{1}{J}\sum^J_j|(R_{gt}x_j+t_{gt})−(R_{pred}x_j+t_{pred})|\\L_{inlier}=−\frac{1}{J}\sum^J_j\sum^K_km_{jk}−\frac{1}{K}\sum^K_k\sum^J_jm_{jk}\\L_{total}=L_{reg}+λL_{inlier},

每次 迭代都计算一次Loss,但是需要加权,前面的loss权值小,后面的大

实现:

使用带有内环的递归神经网络实现。尽管梯度可以从一个迭代流到另一个迭代,但在实践中,这并不能提高性能并导致训练不稳定,因此采用了一种简单的方法,在每个迭代开始时停止{R,t}梯度。具体结构如下图:

RPM-Net: Robust Point Matching using Learned Features 2020 论文笔记