通讯作者:Gim Hee Lee
第一作者:Zi Jian Yew
研究机构:新加坡国立大学
代码链接:https://github.com/yewzijian/RPMNet
解决了点云刚性配准任务中,对初始刚性变换和噪声/离群点敏感的问题。
迭代最近点法(ICP)分两步迭代求解刚性点云配准问题:
- 对空间上最近点对应关系进行硬赋值,
- 求出最小二乘刚性变换
然而,基于空间距离的最近点对应的硬赋值对初始刚性变换和离群点敏感,往往导致ICP收敛到错误的局部极小值。
Robust Point Matching (RPM)算法:
- RPM比ICP更为健壮,但它仍然对初始化和局部极小值敏感,因为仍然仅根据空间距离获得点对应关系。
本文提出的RPM网络,一种对初始化不敏感的基于深度学习的刚性点云配准方法则解决了ICP的问题。
与某些现有方法不同,RPM网络可以处理缺少的对应关系和部分可见性的点云。实验结果表明,与现有的非深度学习和最新的深度学习方法相比,本文的RPM网络达到了SOTA。
首先介绍RPM算法:
RPM算法是一种使用退火和软对应方式的配准算法。ICP算法在迭代计算时利用距离最近原则来产生待配准点对,而RPM算法利用软对应方式为任意点对赋予0到1之间的值,并最终收敛到0或1,如果是1则代表这两个点是配准点对。RPM算法最终计算得到的配准点对是一一映射的,而ICP算法通常不是。
a
r
g
m
i
n
M
,
R
,
t
∑
j
=
1
J
∑
k
=
1
K
m
j
k
(
‖
R
x
j
+
t
−
y
k
‖
2
2
−
α
)
arg min_{M,R,t}\sum^J_{j=1}\sum^K_{k=1}m_{jk}(‖Rx_j+t−y_k‖_2^2−α)
argminM,R,tj=1∑Jk=1∑Kmjk(‖Rxj+t−yk‖22−α)
RPM算法想要找到一个刚性变换{R,t}以及配准矩阵M,使得X能够与Y匹配。
配准矩阵的元素初始化: m j k ← e − β ( ‖ R x j + t − y k ‖ 2 2 − α ) m_{jk}←e^{−β(‖Rx_j+t−y_k‖^2_2−α)} mjk←e−β(‖Rxj+t−yk‖22−α)
其中$\alpha \ \beta $分别为判定异常值的阈值和每次迭代后需要增加的退火参数
RPM-Net:
模型对RPM做了两个修改:
- 将基于空间的距离量度换成了基于混合特征距离
- 在每次迭代中都要重新计算参数$\alpha \ \beta $
模型概述:
在第i次迭代i时:
- 特征提取器从输入点云X、Y中提取混合特征
- 参数估计网络预测最佳退火参数$\alpha \ \beta $
- 混合特征和α,β参数用于计算初始匹配矩阵,然后进行Sinkhorn归一化以强制执行双重随机约束以获得最终匹配矩阵 M i M^i Mi
- 计算出更新的变换{R_i,t_i},并在下一次迭代中使用
特征提取器:
对于任意点云x_c,其混合特征:
F
x
c
=
f
θ
(
x
c
,
{
∆
x
c
,
i
}
,
{
P
P
F
(
x
c
,
x
i
)
}
)
F_{x_c}=f_θ(x_c,\{∆x_{c,i}\},\{PPF(x_c,x_i)\}) \\
Fxc=fθ(xc,{∆xc,i},{PPF(xc,xi)})
-
其中:
f θ 为 特 征 提 取 网 络 P o i n t N e t , 网 络 参 数 θ x i ∈ N ( x c ) , N ( x c ) 为 x c 领 域 内 的 点 云 ∆ x c , i = x i − x c f_θ为特征提取网络PointNet,网络参数\theta \\ x_i\in N(x_c), N(x_c)为x_c领域内的点云\\ ∆x_{c,i}=x_i−x_c\\ fθ为特征提取网络PointNet,网络参数θxi∈N(xc),N(xc)为xc领域内的点云∆xc,i=xi−xc -
4D点对特征:(以旋转不变的方式描述质心点x_c与相邻的点x_i之间的曲面)
P P F ( 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 的 法 向 量 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 的法向量 \\ PPF(xc,xi)=(∠(nc,∆xc,i),∠(ni,∆xc,i),∠(nc,ni),‖∆xc,i‖2)其中nc ni为点云xc xi的法向量
参数估计网络:(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
Y^
y
j
^
=
1
∑
k
K
m
j
k
∑
k
K
m
j
k
⋅
y
k
\hat{y_j}=\frac{1}{\sum^K_km_{jk}}\sum^K_km_{jk}·y_k
yj^=∑kKmjk1k∑Kmjk⋅yk
然后使用SVD分解计算刚性变换。
由于不是每个X都有对应的Y,所以在计算刚性变换时,所以用 w j = ∑ k K m j k w_j=\sum^K_km_{jk} wj=∑kKmjk来衡量每个对应关系(xj,ˆyj)
损失函数(Loss Functions)
L r e g = 1 J ∑ j J ∣ ( R g t x j + t g t ) − ( R p r e d x j + t p r e d ) ∣ L i n l i e r = − 1 J ∑ j J ∑ k K m j k − 1 K ∑ k K ∑ j J m j k L t o t a l = L r e g + λ L i n l i e r , 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}, Lreg=J1j∑J∣(Rgtxj+tgt)−(Rpredxj+tpred)∣Linlier=−J1j∑Jk∑Kmjk−K1k∑Kj∑JmjkLtotal=Lreg+λLinlier,
每次 迭代都计算一次Loss,但是需要加权,前面的loss权值小,后面的大
实现:
使用带有内环的递归神经网络实现。尽管梯度可以从一个迭代流到另一个迭代,但在实践中,这并不能提高性能并导致训练不稳定,因此采用了一种简单的方法,在每个迭代开始时停止{R,t}梯度。具体结构如下图: