北京大學陳寶權團隊聯合香港大學等推出的實時三維重建系統SLAM3R,首次實現從單目RGB長視頻中實時且高質量重建場景稠密點云。該系統通過前饋神經網絡無縫集成局部3D重建與全局坐標配準,提供端到端解決方案,使用消費級顯卡(如4090D)即可達20+ FPS性能,重建點云的準確度和完整度達當前最先進水平,兼顧運行效率與重建質量。該研究成果被 CVPR 2025 評為 Highlight 論文,并在第四屆中國三維視覺大會(China3DV 2025)上被評選為年度最佳論文(TOP1)。
本篇論文的相關即插即用模塊和代碼論文,感興趣的dd~
論文這里
2. 【論文基本信息】
- 論文標題:SLAM3R: Real-Time Dense Scene Reconstruction from Monocular RGB Videos
- 作者:Yuzheng Liu、Siyan Dong、Shuzhe Wang、Yingda Yin、Yanchao Yang、Qingnan Fan、Baoquan Chen(其中Yuzheng Liu和Siyan Dong為共同第一作者)
- 論文鏈接:https://arxiv.org/pdf/2412.09401
- 項目鏈接:https://github.com/PKU-VCL-3DV/SLAM3R
3.【背景及相關工作】
3.1 研究背景
- 密集3D重建需解決場景幾何結構捕捉問題,傳統多階段方法依賴離線處理,適用性受限。
- 現有密集SLAM方法在精度、完整性、效率中至少存在一項缺陷;單目SLAM系統常效率低下,如NICER-SLAM速度遠低于1 FPS。
- 雙視圖幾何方法(如DUSt3R)有潛力,但多視圖擴展需全局優化,效率不足;Spann3R雖加速重建,卻導致累積漂移和質量下降。
3.2 相關工作
- 傳統離線方法:通過SfM和MVS實現重建,神經隱式等表示提升質量,但需離線處理,無法實時應用。
- 密集SLAM:早期方法側重實時性但結構稀疏;現有方法雖融入幾何信息,卻存在重建不完整、依賴深度傳感器等問題;單目系統運行慢,且依賴相機姿態與場景表示交替求解策略。
- 端到端密集3D重建:DUSt3R開創無相機參數的端到端流程,后續工作擴展至多領域,但多視圖擴展效率低;Spann3R雖優化效率,卻有累積漂移問題。
4. 【算法框架與核心模塊】
4.1 算法框架
SLAM3R采用兩級層次結構框架,通過滑動窗口機制將輸入的單目RGB視頻轉換為重疊片段,先由Image-to-Points(I2P)網絡從每個窗口中重建局部3D點云,再通過Local-to-World(L2W)網絡將這些局部點云逐步配準到全局坐標系,形成一致的場景重建,全程無需顯式求解相機參數。
4.2 核心模塊
4.2.1 Image-to-Points(I2P)網絡
- 功能:從視頻片段中恢復局部3D點云,以窗口中的關鍵幀為參考坐標系。
- 結構:
-
圖像編碼器:采用多分支Vision Transformer(ViT),對窗口內的每個幀進行編碼,得到特征令牌Fi(T×d)=Eimg(Ii(H×W×3)),i=1,...,LF_{i}^{(T × d)}=E_{i m g}\left(I_{i}^{(H × W × 3)}\right), i=1, ..., LFi(T×d)?=Eimg?(Ii(H×W×3)?),i=1,...,L。
-
關鍵幀解碼器:引入多視圖交叉注意力機制,聚合支持幀信息,輸出解碼后的關鍵幀令牌Gkey=Dkey(Fkey,Fsup1,...,FsupL?1)G_{k e y}=D_{k e y}\left(F_{k e y}, F_{s u p_{1}}, ..., F_{s u p_{L-1}}\right)Gkey?=Dkey?(Fkey?,Fsup1??,...,FsupL?1??)。
-
支持幀解碼器:與關鍵幀交換信息,解碼得到支持幀令牌Gsupi=Dsup(Fsupi,Fkey),i=1,...,L?1G_{sup _{i}}=D_{sup }\left(F_{sup _{i}}, F_{key }\right), i=1, ..., L-1Gsupi??=Dsup?(Fsupi??,Fkey?),i=1,...,L?1。
-
點云重建:通過線性頭從解碼令牌中回歸3D點云和置信度圖X^i(H×W×3),C^i(H×W×1)=H(Gi(T×d)),i=1,...,L\hat{X}_{i}^{(H × W × 3)}, \hat{C}_{i}^{(H × W × 1)}=H\left(G_{i}^{(T × d)}\right), i=1, ..., LX^i(H×W×3)?,C^i(H×W×1)?=H(Gi(T×d)?),i=1,...,L。
-
- 損失函數:置信度感知損失LI2P=∑i=1LMi?(C^i?L1(1z^X^i,1zXi)?αlogC^i)\mathcal{L}_{I 2 P}=\sum_{i=1}^{L} M_{i} \cdot\left(\hat{C}_{i} \cdot L 1\left(\frac{1}{\hat{z}} \hat{X}_{i}, \frac{1}{z} X_{i}\right)-\alpha log \hat{C}_{i}\right)LI2P?=∑i=1L?Mi??(C^i??L1(z^1?X^i?,z1?Xi?)?αlogC^i?)。
4.2.2 Local-to-World(L2W)網絡
- 功能:將局部3D點云增量配準到全局坐標系,維持全局一致性。
- 結構:
- 點云嵌入:對I2P輸出的點云進行編碼,與視覺特征融合Fi(T×d)=Fi(T×d)+Pi(T×d),i=1,...,K+1\mathcal{F}_{i}^{(T × d)}=F_{i}^{(T × d)}+\mathcal{P}_{i}^{(T × d)}, i=1, ..., K+1Fi(T×d)?=Fi(T×d)?+Pi(T×d)?,i=1,...,K+1。
- 注冊解碼器:將關鍵幀局部點云轉換到全局坐標系,Gkey=Dreg(Fkey,Fsce1,...,FsceK)\mathcal{G}_{key }=D_{reg }\left(\mathcal{F}_{key }, \mathcal{F}_{sce _{1}}, ..., \mathcal{F}_{sce _{K}}\right)Gkey?=Dreg?(Fkey?,Fsce1??,...,FsceK??)。
- 場景解碼器:優化場景幾何,Gscei=Dsce(Fscei,Fkey),i=1,...,K\mathcal{G}_{sce _{i}}=D_{sce }\left(\mathcal{F}_{sce _{i}}, \mathcal{F}_{key }\right), i=1, ..., KGscei??=Dsce?(Fscei??,Fkey?),i=1,...,K。
- 全局點云重建:輸出全局坐標系下的點云和置信度圖X~i(H×W×3),C~i(H×W×1)=H(Gi(T×d)),i=1,...,K+1\tilde{X}_{i}^{(H × W × 3)}, \tilde{C}_{i}^{(H × W × 1)}=H\left(\mathcal{G}_{i}^{(T × d)}\right), i=1, ..., K+1X~i(H×W×3)?,C~i(H×W×1)?=H(Gi(T×d)?),i=1,...,K+1。
- 損失函數:無需尺度歸一化的置信度損失LL2W=∑i=1LMi?(C~i?L1(X~i,Xi)?αlogC~i)\mathcal{L}_{L 2 W}=\sum_{i=1}^{L} M_{i} \cdot\left(\tilde{C}_{i} \cdot L 1\left(\tilde{X}_{i}, X_{i}\right)-\alpha log \tilde{C}_{i}\right)LL2W?=∑i=1L?Mi??(C~i??L1(X~i?,Xi?)?αlogC~i?)。
4.2.3 檢索與緩沖機制
- 緩沖集:采用水庫采樣策略維持已注冊的場景幀,最多保留B個幀,新幀插入概率為B/idB/idB/id。
- 檢索模塊:基于I2P解碼器塊,計算關鍵幀與場景幀的相關分數Retrieval(Fkey(T×d),{Fscei(T×d)})Retrieval \left(F_{k e y}^{(T × d)},\left\{F_{s c e_{i}}^{(T × d)}\right\}\right)Retrieval(Fkey(T×d)?,{Fscei?(T×d)?}),選擇top-K場景幀作為參考。
4.3 模塊配置
- I2P訓練:輸入長度為11的視頻片段,中間幀為關鍵幀,訓練100個epoch,初始化權重來自DUSt3R預訓練模型。
- L2W訓練:窗口大小設為13,訓練200個epoch,使用無尺度歸一化的損失函數。
- 檢索模塊:凍結其他模塊,訓練20個epoch,采用L1損失監督相關分數。
- 窗口與采樣:滑動窗口步長為1,訓練圖像裁剪為224×224像素,使用8塊NVIDIA 4090D GPU訓練。
5.【實驗結果】
5.1 數據集與實現細節
- 訓練用ScanNet++、Aria Synthetic Environments、CO3D-v2混合數據,共約880K片段;在7 Scenes、Replica上定量評估,還測試了多種數據集和野外視頻以驗證泛化能力。
- 模型基于DUSt3R架構修改,用其預訓練權重初始化。I2P訓練100 epoch(約6小時),L2W訓練200 epoch(約15小時),檢索模塊訓練20 epoch;訓練圖像裁剪為224×224,用8塊NVIDIA 4090D GPU。
5.2 對比實驗
- 用精度、完整性、FPS評估,通過Umeyama算法和ICP對齊預測與真實點云。
- 7 Scenes數據集:SLAM3R在精度、完整性上優于DUSt3R、MASt3R、Spann3R,保持~25 FPS,漂移更小。
- Replica數據集:SLAM3R超過DUSt3R、NICER-SLAM等方法,~24 FPS,重建質量接近優化方法。
5.3 分析實驗
-
I2P模型:支持視圖增加,重建質量提升,窗口超11后效率下降,故用窗口大小11。
-
L2W模型:I2P+L2W+Re在對齊精度和效率上優于全局優化、傳統方法。
-
檢索模塊:比僅選最近幀的方法性能更優。
-
野外場景:在多種數據集上表現可靠,泛化能力強。
6.【總結展望】
6.1 總結
本文提出了SLAM3R,一種新穎高效的單目RGB SLAM系統,可實現實時高質量的密集3D重建。該系統采用雙層級神經網絡框架,通過高效的前饋過程實現端到端3D重建,無需顯式求解相機參數。實驗表明,SLAM3R在多個數據集上均達到了最先進的重建精度和完整性,同時保持20+ FPS的實時性能,彌合了RGB-only密集場景重建中質量與效率之間的差距。
6.2 展望
當前系統因未顯式求解或優化相機參數,無法進行全局光束平差,在大規模戶外場景中仍面臨累積漂移的挑戰。未來工作將重點解決這一局限性,進一步提升系統在復雜場景下的穩定性和準確性。
7.【快速上手指南】
7.1 安裝
克隆倉庫并進入目錄:
git clone https://github.com/PKU-VCL-3DV/SLAM3R.git
cd SLAM3R
創建并激活環境:
conda create -n slam3r python=3.11 cmake=3.14.0
conda activate slam3r
pip install torch==2.5.0 torchvision==0.20.0 torchaudio==2.5.0 --index-url https://download.pytorch.org/whl/cu118
pip install -r requirements.txt
可選加速配置:
pip install xformers==0.0.28.post2
cd slam3r/pos_embed/curope/
python setup.py build_ext --inplace
cd ../../../
7.2 演示
Replica數據集演示:
# 下載樣本場景至./data/Replica_demo/
bash scripts/demo_replica.sh
自定義數據演示:
# 下載戶外數據至./data/wild/
bash scripts/demo_wild.sh
# 可視化
bash scripts/demo_vis_wild.sh
Gradio界面:
python app.py
7.3 評估
在Replica數據集上評估:
cd data
wget https://cvg-data.inf.ethz.ch/nice-slam/data/Replica.zip
unzip Replica.zip && rm -rf Replica.zip
python evaluation/process_gt.py
bash ./scripts/eval_replica.sh
7.4 訓練
準備數據集和預訓練權重后:
mkdir checkpoints
wget https://download.europe.naverlabs.com/ComputerVision/DUSt3R/DUSt3R_ViTLarge_BaseDecoder_224_linear.pth -P checkpoints/
bash ./scripts/train_i2p.sh
bash ./scripts/train_l2w.sh