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的魯棒的迭代演算法。 實驗表明, 論文中的方法在真實資料集中優於SO他的經典演算法和基於學習的演算法。
一、論文的出發點和貢獻
三維重建、跟蹤、姿態估計和目標檢測等很多應用程式,都將點雲配準問題作為其操作的一部分。點雲配準的精度和速度在現實世界的應用中都是很重要的。最近,基於學習的端到端的網路被證明在配準的經典流程裡是有效的。但是基於學習的端到端的網路存在不少問題: 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
論文的不足
相關文章
- SCSS !globalCSS
- 4.4global
- JavaScript Global 物件JavaScript物件
- Codeforces Global Round 27
- Codeforces Global Round 26
- GLOBAL TEMPORARY TABLE(轉)
- Codeforces Global Round 13
- Deep "Hello world!"
- 5407. Deep
- deep learing basics
- @@GLOBAL.GTID_PURGED can only be set when @@GLOBAL.GTID_EXECUTED is empty
- Vue 中的樣式穿透 v-deep、/deep/ 和 >>>Vue穿透
- [Vue] Provide and Inject Global StorageVueIDE
- Codeforces Global Round 26 (A - D)
- Python GIL(Global Interpreter Lock)Python
- Deep Learning with Differential Privacy
- Deep learning - note 1
- vim之強大的global
- Synced Global AI Weekly | 2018.10.20—10.26AI
- Synced Global AI Weekly | 2018.10.6—10.12AI
- Synced Global AI Weekly | 2018.10.27—11.2AI
- NodeJS require a global module/package in linuxNodeJSUIPackageLinux
- Synced Global AI Weekly | 2018.8.4—8.10AI
- Synced Global AI Weekly | 2018.9.8—9.14AI
- Synced Global AI Weekly | 2018.9.15—9.21AI
- 《DEEP LEARNING·深度學習》深度學習
- 深度學習(Deep Learning)深度學習
- js deep clone 深克隆JS
- python中global是什麼意思?Python
- MySQL5.7 Waiting for global read lockMySqlAI
- 正規表示式 global屬性
- 正規表示式 global 屬性
- Synced Global AI Weekly | 2018.6.23-6.29AI
- Deep Hashing Network for Efficient Similarity RetrievalMILA
- Deep Learn I'm back.
- Codeforces Global Round 19 E. Best PairAI
- Misans global字型在vue中如何使用Vue
- COMP9444 Neural Networks and Deep Learning