北京大学陈宝权团队联合香港大学等推出的实时三维重建系统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,...,FsupL1)
      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,...,L1

    • 点云重建:通过线性头从解码令牌中回归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=1LMi(C^iL1(z^1X^i,z1Xi)α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=1LMi(C~iL1(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;如果使用数据库…