Deep Global Registration
零、概要
- 论文: Deep Global Registration
- tag:
CVPR 2020
;Registration
- 代码: https://github.com/chrischoy/DeepGlobalRegistration
- 作者: Christopher Choy, Wei Dong, Vladlen Koltun
- 机构: Stanford University, Carnegie Mellon University, Intel Labs
论文提出了用于真实世界中3D点云配准的可微框架: Deep Global Registration. Deep Global Registration基于以下三个框架: 用于预测correspondence confidence的卷积网络, 用于求解R,t的可微的Weighted Procrustes算法和用于优化R,t的鲁棒的迭代算法。 实验表明, 论文中的方法在真实数据集中优于SOTA的经典算法和基于学习的算法。
一、论文的出发点和贡献
三维重建、跟踪、姿态估计和目标检测等很多应用程序,都将点云配准问题作为其操作的一部分。点云配准的精度和速度在现实世界的应用中都是很重要的。最近,基于学习的端到端的网络被证明在配准的经典流程里是有效的。但是基于学习的端到端的网络存在不少问题: PointNetLK使用单一的全局特征, 这在复杂场景时会失败; DCP对点和对应点的分布做了强有力的假设(X中每个点在Y中都要有对应点), 这对于只有部分overlap的点云是不成立的; 3DRegNet在训练3DMatch数据集时不收敛; 使用PRNet训练3DMatch时由于随机crash和高方差的训练loss, 作者也没有得到合理的结果.
作者为了实现鲁棒和精确的配准, 提出了3个模块来解决上述问题:
- 用于correspondence confidence估计的卷积网络
- 用于求解R, t的可微分的Weighted Procrustes方法
- 用于微调配准结果的优化器
二、论文的方法
先整体看一下Deep Global Registration的流程:
- 输入: X ∈ R n × 3 , Y ∈ R m × 3 X \in \mathbb R^{n \times 3}, Y \in \mathbb R^{m \times 3} X∈Rn×3,Y∈Rm×3
- 输出: R ∈ S O ( 3 ) , t ∈ R 3 × 1 R \in SO(3), t \in \mathbb R^{3 \times 1} R∈SO(3),t∈R3×1
- 计算点云 X X X和 Y Y Y中每个点的特征 F x F_x Fx和 F y F_y Fy
- 对于 X X X中的每个点 x i x_i xi, 在点云 Y Y Y中寻找特征( F x i F_{x_i} Fxi, F y j F_{y_j} Fyj)最近的点 y j y_j yj, 构成对应对 M = { ( i , j ) ∣ i ∈ [ 1 , . . . , n ] } M = \lbrace (i, j) | i \in [1, ..., n] \rbrace M={(i,j)∣i∈[1,...,n]}
- 通过卷积神经网络预测 M M M中每一对 ( i , j ) (i, j) (i,j)是inlier的置信度 w w w
- 通过 w w w计算有效correspondence所占比重 r r r
- 若 r < τ s r < \tau_{s} r<τs, 通过精确的配准算法求解, 例如RANSAC
- 否则:
- 通过Weighted Procrustes求得 R 、 t R、t R、t闭式解
- 将 R R R 通过 f − 1 ( R ) f^{-1}(R) f−1(R)转成 a ∈ R 6 a \in \mathbb R^6 a∈R6, 将 a 、 t a、t a、t作为下面函数的初值进行优化
- l = Σ ( i , j ) ∈ M ϕ ( w i , j ) L ( Y j , f ( a ) X i + t ) l = \Sigma_{(i, j) \in M} \phi(w_{i, j})L(Y_j, f(a)X_i + t) l=Σ(i,j)∈Mϕ(wi,j)L(Yj,f(a)Xi+t)
- 返回 f ( a ) , t f(a), t f(a),t
2.1 提取特征
作者使用Fully Convolutional Geometric Features(FCGF)来对点云进行提取特征, 每个点的特征维度较低: 16或32。
2.2 Correspondence Confidence预测
基于上述特征 F x = { f x 1 , . . . , f x N } F_x = \lbrace f_{x_1}, ..., f_{x_N} \rbrace Fx={fx1,...,fxN}和 F y = { f y 1 , . . . , f y M } F_y = \lbrace f_{y_1}, ..., f_{y_M} \rbrace Fy={fy1,...,fyM}, 建立映射关系 M = { ( i , arg min j ∣ ∣ f x i − f y j ∣ ∣ ) ∣ i ∈ [ 1 , . . . , N ] } M = \lbrace (i, \text{arg min}_j ||f_{x_i} - f_{y_j}||) | i \in [1, ..., N] \rbrace M={(i,arg minj∣∣fxi−fyj∣∣)∣i∈[1,...,N]}
通过
M
M
M中的映射关系
(
i
,
j
)
(i, j)
(i,j), 利用点坐标, 生成6维向量
(
x
,
y
)
∈
R
6
(x, y) \in \mathbb R^6
(x,y)∈R6, 接下来通过如下图所示神经网络进行预测其confidence。
在训练时如何生成confidence的G.T.呢?
作者设置了一个超参数
τ
\tau
τ和两个集合
P
,
N
P, N
P,N:
P
=
{
(
i
,
j
)
∣
∣
T
∗
(
x
i
)
−
y
j
∣
∣
<
τ
,
(
i
,
j
)
∈
M
}
,
N
=
P
c
⋂
M
P = \lbrace(i, j) | |T^*(x_i) - y_j|| < \tau, (i, j) \in M \rbrace, N = P^c \bigcap M
P={(i,j)∣∣T∗(xi)−yj∣∣<τ,(i,j)∈M},N=Pc⋂M
T
∗
T^*
T∗是G.T.的旋转平移变换。
Loss是二值交叉熵损失:
L
b
c
e
=
1
∣
M
∣
(
Σ
(
i
,
j
)
∈
P
log
p
(
i
,
j
)
+
Σ
(
i
,
j
)
∈
N
l
o
g
(
1
−
p
(
i
,
j
)
)
)
L_{bce} = \frac{1}{|M|}(\Sigma_{(i, j) \in P}\text{log}p_{(i, j)} + \Sigma_{(i, j) \in N}log(1 - p_{(i, j)}))
Lbce=∣M∣1(Σ(i,j)∈Plogp(i,j)+Σ(i,j)∈Nlog(1−p(i,j)))
2.3 Weighted Procrustes
作者利用上述卷积得到了每一对correspondence的权重
w
w
w, 接下来优化下式来求解
R
,
t
R, t
R,t.
e
2
=
e
2
(
R
,
t
;
w
,
X
,
Y
)
=
Σ
(
i
,
j
)
∈
M
w
^
(
i
,
j
)
(
y
j
−
R
(
x
i
)
−
t
)
2
\begin{aligned} e^2 &= e^2(R, t; w, X, Y) \\ &= \Sigma_{(i, j) \in M}\hat{w}_{(i, j)}{(y_j - R(x_i) - t)}^2 \end{aligned}
e2=e2(R,t;w,X,Y)=Σ(i,j)∈Mw^(i,j)(yj−R(xi)−t)2
其中 w ^ = [ w ^ 1 , . . . , w ^ ∣ M ∣ ] = ϕ ( w ) ∣ ∣ ϕ w ∣ ∣ 1 \hat w = [\hat w_1, ..., \hat w_{|M|}] = \frac{\phi (w)}{||\phi w||_1} w^=[w^1,...,w^∣M∣]=∣∣ϕw∣∣1ϕ(w), ϕ \phi ϕ是一个非线性变换
先粘贴一下论文中的定理, 由定理得知我们的R,t可以由闭式解求出。接下来我们通过真实 R ∗ , t ∗ R^*, t^* R∗,t∗的监督信息来优化参数, loss包括旋转loss和平移loss。
L rot ( R ) = arccos Tr ( R T R ∗ ) − 1 2 , L trans = ∣ ∣ t − t ∗ ∣ ∣ 2 L_{\text{rot}}(R) = \text{arccos} \frac{\text{Tr}(R^TR^*) - 1}{2}, L_{\text{trans}} = ||t - t^*||^2 Lrot(R)=arccos2Tr(RTR∗)−1,Ltrans=∣∣t−t∗∣∣2
最终的loss是 L rot L_{\text{rot}} Lrot, L trans L_{\text{trans}} Ltrans和 L bce L_{\text{bce}} Lbce的加权和。
貌似问题解决了? 但在实际应用中, 由于输入点云 X X X和 Y Y Y的小的overlap和噪声的影响, 有效correspondences不够时, 会得到数值上不稳定的输出。作者提出计算 Σ i ϕ ( w i ) / ∣ M ∣ \Sigma_i \phi(w_i) / |M| Σiϕ(wi)/∣M∣来估计有效correspondences的比重, 进而预测配准是否稳定。当比重较低时, 选择使用耗时但精确的配准算法, 比如RANSAC算法等。
接下来讨论当有效correspondences足够多时, 作者是如何优化接触的R和t。
2.4 微调R, t
作者使用6D向量表示旋转矩阵:
a
1
,
a
2
∈
R
3
a_1, a_2 \in \mathbb R^3
a1,a2∈R3, 并且原始旋转矩阵
b
b
b可以通过如下关系进行返回:
f
(
[
a
1
,
a
2
]
)
=
[
b
1
,
b
2
,
b
3
]
f([a_1, a_2]) = [b_1, b_2, b_3]
f([a1,a2])=[b1,b2,b3]
b
1
,
b
2
,
b
3
∈
R
3
,
b
1
=
N
(
a
1
)
,
b
2
=
N
(
a
2
−
(
b
1
⋅
a
2
)
b
1
)
,
b
3
=
b
1
×
b
2
b_1, b_2, b_3 \in \mathbb R^3, b_1 = N(a_1), b_2 = N(a_2 - (b_1 \cdot a_2)b_1), b_3 = b_1 \times b_2
b1,b2,b3∈R3,b1=N(a1),b2=N(a2−(b1⋅a2)b1),b3=b1×b2,
N
(
⋅
)
N(\cdot)
N(⋅)表示L2归一化。
通过上述关系, 可以互相转换 [ a 1 , a 2 ] , t [a_1, a_2], t [a1,a2],t和 R , t R, t R,t( R , t R, t R,t -> a 1 , a 2 a_1, a_2 a1,a2通过查看源码确定)。定义损失函数 L = Σ ( i , j ) ∈ M ϕ ( w ( i , j ) L ( Y j , f ( a ) X i + t ) L = \Sigma_{(i, j) \in M} \phi(w_{(i, j)}L(Y_j, f(a)X_i + t) L=Σ(i,j)∈Mϕ(w(i,j)L(Yj,f(a)Xi+t)来优化 a , t a, t a,t, 优化算法可以使用一阶的SGD, Adam算法, 由于参数数量较少, 高阶优化算法也可以使用。
至此, 介绍了Deep Global Registration的流程和一些细节。
三、论文的实验
作者做了哪些实验来证明Deep Global Registration算法的有效性 ?
3.1 基于3DMatch的pairwise registration实验
- Recall 成功配准的比例: 如果旋转误差和平移误差小于预先设定的阈值, 则表明配准成功.
- TE 平移误差, 由上述 trans {\text{trans}} trans定义
- RE 旋转误差, 由上述 rot {\text{rot}} rot定义
表格中前面6行是我们方法和经典全局配准方法的结果(w/o表示without); 7-10行是ICP变种的结果; 11-12行是基于学习的配准方法的结果(作者也尝试了PRNet, 3DRegNet等方法, 但在3DMatch 数据集上不收敛或者结果不稳定)。
由表格可以看出, Deep Global Registration方法在真实的数据集上远超其它的结果。
3.2 Multi-way 配准
Multi-way配准生成一个全局一致的重建结果。作者是在3DMatch数据集上进行训练, 在multi-way 配准数据集上进行测试, 这样证实了跨数据集的泛化能力。
Table 2是在ICL-NUIM数据集上的测试结果; ATE是指的absolute trajectory error(The absolute trajectory error directly measures the difference between points of the true and the estimated trajectory.)
3.3 Outdoor LIDAR Registration
在Kitti上的实验结果如Table 3