CVPR 2025 | 北大團隊SLAM3R:單目RGB長視頻實時重建,精度效率雙殺!

北京大學陳寶權團隊聯合香港大學等推出的實時三維重建系統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雖優化效率,卻有累積漂移問題。

 A novel dense SLAM system - SLAM3R

4. 【算法框架與核心模塊】

4.1 算法框架

SLAM3R采用兩級層次結構框架,通過滑動窗口機制將輸入的單目RGB視頻轉換為重疊片段,先由Image-to-Points(I2P)網絡從每個窗口中重建局部3D點云,再通過Local-to-World(L2W)網絡將這些局部點云逐步配準到全局坐標系,形成一致的場景重建,全程無需顯式求解相機參數。
System overview

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??)
      Illustration of a decoder block in the proposed keyframe decoder Dkey.

    • 支持幀解碼器:與關鍵幀交換信息,解碼得到支持幀令牌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對齊預測與真實點云。
     We visualize the reconstruction results on two scenes: Office-09 and Office 2 from the 7-Scenes and Replica datasets
  • 7 Scenes數據集:SLAM3R在精度、完整性上優于DUSt3R、MASt3R、Spann3R,保持~25 FPS,漂移更小。
    Reconstruction results on 7 Scenes dataset
  • Replica數據集:SLAM3R超過DUSt3R、NICER-SLAM等方法,~24 FPS,重建質量接近優化方法。
    Reconstruction results on Replica dataset

5.3 分析實驗

  • I2P模型:支持視圖增加,重建質量提升,窗口超11后效率下降,故用窗口大小11。
    Inner-window keyframe reconstruction results with various window lengths
    Inner-window keyframe reconstruction results from various window lengths

  • L2W模型:I2P+L2W+Re在對齊精度和效率上優于全局優化、傳統方法。

  • 檢索模塊:比僅選最近幀的方法性能更優。
    Reconstruction results using various point alignment methods and scene frame selection strategies

  • 野外場景:在多種數據集上表現可靠,泛化能力強。
    Qualitative examples

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

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/web/93147.shtml
繁體地址,請注明出處:http://hk.pswp.cn/web/93147.shtml
英文地址,請注明出處:http://en.pswp.cn/web/93147.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

現代化水庫運行管理矩陣建設的要點

2023年8月24日,水利部發布的水利部關于加快構建現代化水庫運行管理矩陣的指導意見中指出,在全面推進水庫工程標準化管理的基礎上,強化數字賦能,加快構建以推進全覆蓋、全要素、全天候、全周期“四全”管理,完善體制、機…

【工具】用于視頻遮蓋行人及車牌的工具,基于YOLO

最近錄制數據時,為了保護隱私,我做了一個小工具:video-privacy-blur 在采集街景、測試視頻時,經常會拍到人臉和車牌,這些信息在分享或存儲前必須做匿名化處理。手動后期太耗時,于是我基于 Ultralytics YOLO…

EtherCAT概念介紹

一、EtherCAT 簡介?EtherCAT(Ethernet Control Automation Technology)是一種工業以太網現場總線,它將計算機網絡中的以太網技術應用于工業自動化領域,構成工業控制以太網(工業以太網、工業以太網現場總線&#xff09…

【LeetCode】4. 尋找兩個正序數組的中位數

文章目錄4. 尋找兩個正序數組的中位數題目描述示例 1:示例 2:提示:解題思路算法分析問題本質分析二分查找分割算法詳解分割策略可視化分割點計算過程邊界情況處理算法流程圖各種解法對比時間復雜度分析空間復雜度分析關鍵優化點實際應用場景測…

HarmonyOS 開發實戰:搞定應用名字與圖標更換,全流程可運行示例

好的,我幫你把這篇《HarmonyOS 開發實戰:快速更改應用名字與圖標的終極指南》擴展到約 4000 字,重點會放在代碼示例和代碼解釋部分,并且保留你要的口語化、易讀風格。 我會在原文的基礎上增加: 更完整的目錄結構演示&a…

Keep-Alive 的 “愛情故事”:HTTP 如何從 “短命” 變 “長情”?

🚀 揭秘HTTP Keep-Alive:前端面試不再“短”路! 引言:HTTP連接的“愛恨情仇” 各位前端的小伙伴們,在面試中,HTTP協議絕對是繞不開的話題。而其中一個看似簡單卻又暗藏玄機的知識點,就是HTTP的“…

僅需8W,無人機巡檢系統落地 AI 低空智慧城市!可源碼交付

一、項目介紹無人機管控系統是融合無人機技術、傳感器技術、物聯網及人工智能的智能化檢測方案。依托先進無人機技術與前沿 AI 算法,該系統可替代傳統人工巡檢模式,針對高危、復雜或大面積區域實現高效、精準監測,為城市基礎設施檢查、安防監…

java-JVM詳解

一、JVM 是什么? 定義: JVM(Java Virtual Machine)是一個虛擬計算機,為 Java 字節碼提供運行環境。它是 Java “一次編寫,到處運行”(Write Once, Run Anywhere)的核心基礎&#xff…

QT中ARGB32轉ARGB4444優化4K圖像性能的實現方案(完整源碼)

QT中ARGB32轉ARGB4444優化4K圖像性能的實現方案(完整源碼) 一、問題背景 在QT界面項目中,4K圖像采用QImage::Format_ARGB32格式(4字節/像素)時,因數據量大導致編解碼疊加性能不足。底層framebuffer實際為AR…

反射在Spring IOC容器中的應用——動態創建Bean

今天在看Java八股文時,對這里產生了一些疑惑,因為在目前做的練手項目中還沒有用到過除了new以外的新建對象方式,在請教了其他前輩后對此有了新的理解,所以專門記錄以用于梳理思路和復習基礎。這里著重講解反射機制實現新建對象這里…

TRS(總收益互換)系統架構設計:多市場交易的技術實現分析

一、多市場交易環境的技術特征 1.1 市場機制差異(技術視角)技術維度典型實現差異交割周期T0/T1/T2等多種結算模式價格穩定機制部分市場存在波動率控制措施系統接入協議FIX 4.4/ITCH/OMD-C等協議族衍生品支持工具種類與中央對手方清算差異1.2 技術挑戰分析…

深度學習-卷積神經網絡CNN-批量歸一化 BatchNorm

為什么需要批量規范化層呢?讓我們來回顧一下訓練神經網絡時出現的一些實際挑戰:首先,數據預處理的方式通常會對最終結果產生巨大影響。 回想一下我們應用多層感知機來預測房價的例子。使用真實數據時,我們的第一步是標準化輸入特征…

機器學習-支持向量機器(SVM)

0.1 數字識別 from sklearn.svm import SVC from sklearn.metrics import silhouette_score import numpy as np import pandas as pd import matplotlib.pyplot as plt from sklearn.decomposition import PCA from sklearn.feature_extraction import DictVectorizer from sk…

昆山PCB板工廠有哪些?

在長三角電子信息產業版圖中,昆山憑借完整的產業鏈配套和精湛的制造工藝,成為國內PCB(印制電路板)生產的重要基地。本文精選五家具有代表性的本土工廠,從技術實力到服務特色展開深度剖析,為行業客戶提供精準…

rk3588 ubuntu20.04安裝包經常出現的問題總結(chatgpt回復)

問題1 問題 我在rk3588 ubuntu20.04安裝相關環境的時候經常出現下面類似的問題,如何系統的解決 The following packages have unmet dependencies : openssh-server : Depends: openssh-client ( 1:8.2p1-4ubuntu0.13) but 1:8.2p1-4ubuntu0.11 is to be installed …

從根源到生態:Apache Doris 與 StarRocks 的深度對比 —— 論開源基因與長期價值的優越性

在 OLAP 領域,Apache Doris 與 StarRocks 常被一同提及,兩者有著深厚的技術淵源 ——StarRocks 源自 Apache Doris 的代碼 Fork,卻在后續發展中走向了不同的路徑。本文將從代碼根源、架構演進、社區生態、功能特性等多維度展開對比。 一、代…

【從零開始學習Redis】項目實戰-黑馬點評D1

項目實戰-黑馬點評 項目架構短信登錄發送短信驗證碼 實現思路就是按照上圖左一部分&#xff0c; 實現類如下 Slf4j Service public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements IUserService {/*** 驗證手機號發送驗證碼** param phone* pa…

自然語言處理的范式轉變:從Seq2Seq模型到Transformer架構

Seq2Seq 定義 Seq2Seq是一個Encoder-Decoder結構的網絡&#xff0c;它的輸入是一個序列&#xff0c;輸出也是一個序列&#xff0c; Encoder使用循環神經網絡(RNN,GRU&#xff0c;LSTM等)&#xff0c;將一個可變長度的信號序列(輸入句子)變為固定維度的向量編碼表達&#xff0c;…

【博客系統測試報告】---接口自動化測試

目錄 1、需求分析 2、挑選接口 3、設計博客系統的測試用例 4、設計自動化測試框架 test_add.py: test_detail.py: test_getAuthorInfo.py: test_getUserInfo: test_list.py: test_login.py: logger_util.py: request_util.py: yaml_util.py: 1、需求分析 根據業務…

Mysql數據庫遷移到GaussDB注意事項

mysql數據庫遷移高斯數據庫 建議開啟高斯數據庫M模式&#xff0c;mysql兼容模式&#xff0c;可以直接使用mysql的建表語句&#xff0c;自增主鍵可以使用AUTO_INCREMENT&#xff0c;如果不開啟M模式&#xff0c;只能使用高斯數據庫的序列添加自增主鍵1&#xff1a;如果使用數據庫…