BundleFusion: Real-time GloballyConsistent 3D Reconstruction... 論文解析
1 概述
在BundleFusion之前的很多相似的方案中,在重建的過程中總是出現以下問題:
- 需要額外的時間來糾正線上的錯誤,從而無法很好的實現實時處理
- 十分脆弱的tracking方案,從而導致位姿估計出現錯誤
- 掃描的結果試用點的形式在表示,限制了掃描的質量和適用性
BundleFunsion 從以下幾個方面把上面的問題進行了解決:
- 通過分級的方式,使得歷史的所有幀,都參與了優化
- 不再是短暫的tracking,而是全域性的tracking
- 設計了一個並行系統來進行優化。同時分別使用了稀疏的特徵和稠密的光度特徵和幾何結構特徵來實現匹配
- 該方法實現了位姿全域性實時的優化,同時tracking失敗後也可以重新定位
- 可以對已生成的3D模型進行新的估計
作者認為在三維重建中比較重要的一些要素:
- 高質量的表面建模
- 可伸縮性:因為需要同時處理小的和大的場景的掃描,同時保證全域性結構和區域性結構的精度
- 全域性建模的一致性:可以通過迴環檢測實現
- 已經建好的模型可以根據實時的輸入進行動態的更新
- 實時的建模速率
2 實現方法
首先概括的說一下本文的方法。
- RGB-D相機作為輸入
- 為了實現全域性的一致性,使用了由稀疏到稠密的全域性位姿優化方案:首先試用檢測到的稀疏的影像特徵(SIFT)來進行粗糙的位姿優化,同時該稀疏的特徵也可以用來進行迴環檢測和重定位。之後再用稠密的光度資訊和幾何資訊來進一步優化
- 通過設計濾波器來阻止誤匹配的發生,也可以有效地防止錯誤的加入迴環幀進行優化
- 為了實現實時的全域性位姿優化,設計了由區域性到全域性的優化方案:每n個連續幀,進行打包稱為一個chunk,來進行區域性的位姿優化;之後通過chunk之間的聯絡來進行全域性的位姿優化
- 利用並行的GPU來解決這個非線性優化的問題
- 可以通過新的實時的de-integration 和 integration 對TSDF地圖進行實時更新
3 Global pose aligenment
實時的RGB-D資料用 S \textbf{S} S來表示, S = { f i = { C i , D i } } \textbf{S}=\{f_i=\{C_i,D_i\}\} S={fi={Ci,Di}}, C i C_i Ci代表 f i f_i fi幀的顏色資料, D i D_i Di代表 f i f_i fi幀的深度資料。採集資料的頻率是30Hz,解析度為 640 × 480 640\times480 640×480。 T i ( p ) = R i p + t i T_i(\textbf{p})=\textbf{R}_i \textbf{p}+\textbf{t}_i Ti(p)=Rip+ti是把在 f i f_i fi座標系的點 p \textbf{p} p轉到世界座標系中。
3.1 Feature correspondence search
首先使用特徵查詢,特徵匹配和correspondences濾波器,來查詢稀疏的correspondences。本文使用的是SIFT,而且correspondences search全部是在GPU上進行處理,可以在0.05ms中查詢一對影像的特徵點。
3.1.2 Correspondence Filtering
Key Point Correspondence Filter
在
f
i
f_i
fi和
f
j
f_j
fj兩幀之間在三維空間中有相互對應的correspondences points 集合
P
P
P 和
Q
Q
Q。在此之前,經過位姿的優化求解(後面會介紹),已經獲得了
T
i
T_i
Ti 和
T
j
T_j
Tj ,結合 Kabsch algorithm 來計算
T
i
j
T_{ij}
Tij(點從
f
i
f_i
fi 到
f
j
f_j
fj 的變換矩陣)。然後再求一下
P
c
u
r
P_{cur}
Pcur 和
Q
c
u
r
Q_{cur}
Qcur 的 corss-covariance;如果值比較大(>100)那麼證明該系統不穩定,需要進一步操作。如果一對特徵點的重投影誤差或者經過條件分析認為它不穩定,那麼移除該對應的點。直到符合要求或者correspondences的個數不足以求
f
i
f_i
fi和
f
j
f_j
fj 的變換才停止。如果最後還沒有產生符合要求的
T
i
j
T_{ij}
Tij,我們就把整個
f
i
f_i
fi和
f
j
f_j
fj 全部拋棄。
Surface area filter
把
f
i
f_i
fi 的 3D keypoints
P
P
P 和
f
j
f_j
fj 的 3D keypoints
Q
Q
Q 投影到相機平面上,再用 2D oriented bounding box 的方法來圈住這些點,求 bounding box 的面積,如果面積太小(
<
0.032
m
2
<0.032m^2
<0.032m2)則認為不夠穩定,拋棄這些匹配。
Dense verification
為了效率考慮,在驗證的時候,我們使用經過濾波且降取樣的圖片進行驗證
∣
∣
T
i
j
(
p
i
,
x
,
y
)
−
q
j
,
x
,
y
∣
∣
2
<
τ
d
(
1
)
\left| \left| T_{ij}(\textbf{p}_{i,x,y})-\textbf{q}_{j,x,y}\right| \right|_2<\tau_d \qquad (1)
∣∣∣∣Tij(pi,x,y)−qj,x,y∣∣∣∣2<τd(1)
(
T
i
j
(
n
i
,
x
,
y
)
)
⋅
n
j
,
x
,
y
>
τ
n
(
2
)
(T_{ij}(\textbf{n}_{i,x,y} ))\cdot \textbf{n}_{j,x,y}>\tau_n \qquad (2)
(Tij(ni,x,y))⋅nj,x,y>τn(2)
∣
∣
C
i
l
o
w
(
x
,
y
)
−
C
j
l
o
w
(
x
,
y
)
∣
∣
1
<
τ
c
(
3
)
\left| \left| C_i^{low}(x,y) - C_j^{low}(x,y) \right| \right|_1<\tau_c \qquad (3)
∣∣∣∣Cilow(x,y)−Cjlow(x,y)∣∣∣∣1<τc(3)
C i l o w C_i^{low} Cilow是經過降取樣的color intensity, D i l o w D_i^{low} Dilow是深度資訊。 P i l o w P_i^{low} Pilow和 N i l o w N_i^{low} Nilow是 D i l o w D_i^{low} Dilow對應的位置資訊和法向量。 p i . x . y = P i l o w ( x , y ) \textbf{p}_{i.x.y}=P_i^{low}(x,y) pi.x.y=Pilow(x,y)並且 q i , x , y = P j l o w ( π − 1 ( T i j p i , x , y ) ) q_{i,x,y}=P_j^{low}(\pi^{-1}(T_{ij}\textbf{p}_{i,x,y})) qi,x,y=Pjlow(π−1(Tijpi,x,y))。但是式(1)對於遮擋產生的錯誤十分敏感,所以我們拋棄有較大深度差異、法向量偏差或者缺少光度一致性的correspondences,從而得到了式(2)和(3)。如果這些檢驗都通過了的話,那麼把correspondences加入有效集合。幀與幀之間至少需要3對correspondences,實驗證明5個的話,效果更好。
3.2 Hierarchical optimization
在第一階段,我們在一個chunk內優化位姿變換,第二階段,優化chunk之間的位姿變換。
Local Intra-Chunk Pose Optimization
- 把 N c h u n k = 11 N_{chunk}=11 Nchunk=11連續幀作為一個chunk。因為每個chunk幀數很少且連續,所以變化不大,因此可以用單位矩陣來初始化transformation。
- 為了保證區域性位姿優化的準確度,我們在得到chunk內部初步優化過的trajectory後,使用Dense verification檢測。
- 如果重投影誤差很大,那麼整個chunk將會被拋棄。
Per-Chunk Keyframes
經過前面的處理之後,把每個chunk的第一個元素作為該chunk的keyframe。也計算一個chunk裡面聚合的keyframe feature集合,即把chunk裡面所有的特徵點的座標系變換到keyframe的座標系,那些在三維空間中一致的點用最小二乘法優化到一個最佳的位置。因此一個chunk最終可以獲得一幀即keyframe,裡面包含統一的特徵位置以及深度資訊。
Global Inter-Chunk Pose Optimization
- 稀疏的correspondence search 和 filtering和chunk內的操作一樣。只不過這次在keyframe上操作
- 如果在全域性的keyframe上沒有找到和以前相匹配的keyframes,那麼該幀暫定為無效幀,放入候選名單,如果未來找到匹配的keyframes再使用
- 全域性的位姿優化計算keyframes位姿在全域性範圍內的一致性,可以把chunks在世界座標系下進行校準。
3.3 Pose alignment as energy optimization
前面多次提到了位姿的優化和校準,那麼本節將會介紹具體的方法。如果有一系列幀
S
S
S,那麼所有幀的引數向量是
χ
=
(
R
0
,
t
0
,
…
,
R
∣
S
∣
,
t
∣
S
∣
)
T
=
(
x
0
,
…
,
x
N
)
T
\chi =(\textbf{R}_0,\textbf{t}_0, \dots,\textbf{R}_{|S|},\textbf{t}_{|S|})^T=(x_0,\dots,x_N)^T
χ=(R0,t0,…,R∣S∣,t∣S∣)T=(x0,…,xN)T
其中
R
i
∈
s
o
3
∈
R
3
\textbf{R}_i \in so_3\in \mathbb{R}^3
Ri∈so3∈R3
基於sparse features 和 dense photometric and geometric constraints的方程為:
E
a
l
i
g
n
(
χ
)
=
ω
s
p
a
r
s
e
E
s
p
a
r
s
e
(
χ
)
+
ω
d
e
n
s
e
E
d
e
n
s
e
(
χ
)
E_{align}(\chi)=\omega_{sparse}E_{sparse}(\chi)+\omega_{dense}E_{dense}(\chi)
Ealign(χ)=ωsparseEsparse(χ)+ωdenseEdense(χ)
ω
s
p
a
r
s
e
\omega_{sparse}
ωsparse和
ω
d
e
n
s
e
\omega_{dense}
ωdense是sparse和dense matching terms的權重。
Sparse matching
E
s
p
a
r
s
e
(
χ
)
=
∑
i
=
1
∣
S
∣
∑
j
=
1
∣
S
∣
∑
(
k
,
l
)
∈
C
(
i
,
j
)
∣
∣
T
i
p
i
,
k
−
T
j
p
j
,
l
∣
∣
2
2
E_{sparse}(\chi)=\sum_{i=1}^{|S|}\sum_{j=1}^{|S|}\sum_{(k,l)\in\textbf{C}(i,j)}\left|\left|T_i\textbf{p}_{i,k}-T_j\textbf{p}_{j,l}\right|\right|_{2}^2
Esparse(χ)=i=1∑∣S∣j=1∑∣S∣(k,l)∈C(i,j)∑∣∣∣∣Tipi,k−Tjpj,l∣∣∣∣22
p
i
,
k
\textbf{p}_{i,k}
pi,k是第i幀第k個檢測到的特徵點,
C
i
,
j
\textbf{C}_{i,j}
Ci,j是第i幀和第j幀之間的匹配對。
Dense matching
E
d
e
n
s
e
(
T
)
=
ω
p
h
o
t
o
E
p
h
o
t
o
(
T
)
+
ω
g
e
o
E
g
e
o
(
T
)
E_{dense}(T)=\omega_{photo}E_{photo}(T)+\omega_{geo}E_{geo}(T)
Edense(T)=ωphotoEphoto(T)+ωgeoEgeo(T)
E
p
h
o
t
o
(
χ
)
=
∑
(
i
,
j
)
∈
E
∑
k
=
0
∣
I
i
∣
∣
∣
I
i
(
π
(
d
i
,
k
)
)
−
I
j
(
π
(
T
j
−
1
T
i
d
i
,
k
)
)
∣
∣
2
2
E_{photo}(\chi)=\sum_{(i,j)\in\textbf{E}}\sum_{k=0}^{|I_i|}\left|\left| I_i(\pi(\textbf{d}_{i,k}))- I_j(\pi(T_j^{-1}T_i\textbf{d}_{i,k}))\right|\right|_2^2
Ephoto(χ)=(i,j)∈E∑k=0∑∣Ii∣∣∣∣∣Ii(π(di,k))−Ij(π(Tj−1Tidi,k))∣∣∣∣22
E
g
e
o
(
χ
)
=
∑
(
i
,
j
)
∈
E
∑
k
=
0
∣
D
i
∣
[
n
i
,
k
T
(
d
i
,
k
−
T
i
−
1
T
j
π
−
1
(
D
j
(
π
(
T
j
−
1
T
i
d
i
,
k
)
)
)
)
]
2
E_{geo}(\chi)=\sum_{(i,j)\in\textbf{E}}\sum_{k=0}^{|D_i|}\left[ \textbf{n}_{i,k}^T(\textbf{d}_{i,k}-T_i^{-1}T_j\pi^{-1}(D_j(\pi(T_j^{-1}T_i\textbf{d}_{i,k})))) \right]^2
Egeo(χ)=(i,j)∈E∑k=0∑∣Di∣[ni,kT(di,k−Ti−1Tjπ−1(Dj(π(Tj−1Tidi,k))))]2
這裡
C
i
C_i
Ci是顏色資訊,
D
i
D_i
Di是深度資訊,集合
E
\textbf{E}
E包含的是相機角度相似,有交集的“幀對(frame pair)”
(
i
,
j
)
(i,j)
(i,j)。
ω
p
h
o
t
o
\omega_{photo}
ωphoto和
ω
g
e
o
\omega_{geo}
ωgeo是對應的權重。
I
i
I_i
Ii是
C
i
C_i
Ci的亮度梯度,可以使得優化更魯棒。
3.4 Fast and robust optimization strategy
該部分主要工作室完成以下方程的解:
χ
∗
=
a
r
g
min
χ
E
a
l
i
g
n
(
χ
)
\chi^*=arg\min_\chi E_{align}(\chi)
χ∗=argχminEalign(χ)
本文采用了高斯牛頓法求解,過程不再贅述。
4 Dynamic 3D reconstruction
本文使用的是TSDF來建圖,與以往不同的是,除了integration還考慮了de-integration
D
′
(
v
)
=
D
(
v
)
W
(
v
)
+
w
i
(
v
)
d
i
(
v
)
W
(
v
)
+
w
i
(
v
)
,
W
′
(
v
)
=
W
(
v
)
+
w
i
(
v
)
D'(v)=\frac{D(v)W(v)+w_i(v)d_i(v)}{W(v)+w_i(v)},\qquad W'(v)=W(v)+w_i(v)
D′(v)=W(v)+wi(v)D(v)W(v)+wi(v)di(v),W′(v)=W(v)+wi(v)
D
′
(
v
)
=
D
(
v
)
W
(
v
)
−
w
i
(
v
)
d
i
(
v
)
W
(
v
)
−
w
i
(
v
)
,
W
′
(
v
)
=
W
(
v
)
−
w
i
(
v
)
D'(v)=\frac{D(v)W(v)-w_i(v)d_i(v)}{W(v)-w_i(v)},\qquad W'(v)=W(v)-w_i(v)
D′(v)=W(v)−wi(v)D(v)W(v)−wi(v)di(v),W′(v)=W(v)−wi(v)
相關文章
- 論文翻譯:Real-Time High-Resolution Background Matting
- WBL論文解析
- LTMU論文解析
- 深度學習論文翻譯解析(十三):Faster R-CNN: Towards Real-Time Object Detection with Region Proposal Networks深度學習ASTCNNObject
- 兩篇論文同時獲最佳論文榮譽提名,SIGGRAPH上首個Real-Time Live的中國團隊用生成式AI建立3D世界AI3D
- 論文閱讀 Real-Time Streaming Graph Embedding Through Local Actions 11
- Focal loss論文解析
- 論文翻譯:2022_PercepNet+: A Phase and SNR Aware PercepNet for Real-Time Speech Enhancement
- 論文翻譯:2021_A Perceptually Motivated Approach for Low-complexity, Real-time Enhancement of Fullband SpeechAPP
- 【PR】3D Gaussian Splatting for Real-Time Radiance Field Rendering3D
- 論文翻譯:2020_Weighted speech distortion losses for neural-network-based real-time speech enhancement
- 論文翻譯:2020_Densely connected neural network with dilated convolutions for real-time speech enhancement in the time domainAI
- 論文翻譯:2022_2022_TEA-PSE 2.0:Sub-Band Network For Real-Time Personalized Speech EnhancementZed
- 論文翻譯:Fullsubnet: A Full-Band And Sub-Band Fusion Model For Real-Time Single-Channel Speech Enhancement
- Hugging Face 論文平臺 Daily Papers 功能全解析Hugging FaceAI
- 【論文】軍事理論課程論文
- 實時 3D 深度多攝像頭跟蹤 Real-time 3D Deep Multi-Camera Tracking3D
- [原始碼解析] PyTorch 分散式(8) -------- DistributedDataParallel之論文篇原始碼PyTorch分散式Parallel
- 《Stereo R-CNN based 3D Object Detection for Autonomous Driving》論文解讀CNN3DObject
- 論文
- 深度學習論文翻譯解析(十二):Fast R-CNN深度學習ASTCNN
- 深度學習論文翻譯解析(十):Visualizing and Understanding Convolutional Networks深度學習
- 深度學習論文翻譯解析(十九):Searching for MobileNetV3深度學習
- 深度學習論文翻譯解析(十五):Densely Connected Convolutional Networks深度學習
- 深度學習論文翻譯解析(十六):Squeeze-and-Excitation Networks深度學習
- (讀論文)推薦系統之ctr預估-DeepFM模型解析模型
- 深度學習論文翻譯解析(十四):SSD: Single Shot MultiBox Detector深度學習
- Python中的3D繪圖命令~放到論文或PPT裡太加分了Python3D繪圖
- 『論文精讀』Vision Transformer(VIT)論文解讀ORM
- CVPR 2018 Spotlight論文:單攝像頭數秒構建3D人體模型3D模型
- 解析-理論剖析
- 【小白寫論文】技術性論文結構剖析
- 論文專題
- 論文筆記筆記
- 論文記錄
- 如何讀論文
- 論文學習
- 畢設論文