流式3D重建入门:LingBot-Map如何颠覆传统SfM与SLAM
【免费下载链接】lingbot-mapA feed-forward 3D foundation model for reconstructing scenes from streaming data项目地址: https://gitcode.com/GitHub_Trending/li/lingbot-map
LingBot-Map 是一个用于流式3D重建的开源前馈式 3D 基础模型:无需离线迭代优化,视频帧逐帧输入即可实时输出相机位姿与稠密点云,且能在超过 10000 帧的长序列上稳定运行。这篇文章带你从零上手这个 3D 重建基础模型 🗺️
为什么传统 SfM 与 SLAM 不够用了?
在做 3D 场景重建时,新手通常会遇到两类传统方案,但都有明显短板:
| 方案 | 工作方式 | 主要痛点 |
|---|---|---|
| SfM(运动恢复结构) | 离线全局优化,需要所有帧参与 | 不能实时、序列一长就慢到无法接受 |
| SLAM(即时定位建图) | 逐帧迭代优化位姿与地图 | 长序列误差累积(漂移)、参数难调 |
LingBot-Map 换了一条路:前馈推理。模型像一个"一次看完"的视觉大模型,帧进来、结果出去,没有束调整、没有闭环优化循环——这正是"流式 3D 重建"的核心含义。
三大核心能力:GCT、KV Cache 与长序列支持 🧠
LingBot-Map 的核心是一个GCT(Geometric Context Transformer,几何上下文 Transformer),它在单一流式框架中统一了三件事:
- 锚点上下文(Anchor Context):为坐标定位提供稳定参照,避免长序列位姿漂移
- 位姿参考窗口(Pose-Reference Window):稠密几何线索的局部聚合
- 轨迹记忆(Trajectory Memory):远距离漂移校正,走 13 分钟视频也不"迷路"
效率方面,项目采用FlashInfer 分页 KV Cache 注意力(实现见 lingbot_map/aggregator/stream.py 与 lingbot_map/models/gct_stream.py):
⚡ 在 518×378 分辨率下稳定跑到约 20 FPS,支持10000+ 帧长序列流式推理。
下面这张图就是官方长视频 Demo 的成片:约 25000 帧、13 分钟的室内走动视频,被流式重建出一张带相机轨迹的完整点云地图:
一键安装与首次运行(5 分钟上手)🚀
1. 克隆仓库并创建环境
git clone https://gitcode.com/GitHub_Trending/li/lingbot-map cd lingbot-map conda create -n lingbot-map python=3.10 -y && conda activate lingbot-map pip install torch==2.8.0 torchvision==0.23.0 --index-url https://download.pytorch.org/whl/cu128 pip install -e .2. 安装 FlashInfer(推荐,流式推理更快)
pip install flashinfer-python3. 下载模型权重
从 HuggingFace 或 ModelScope 的robbyant/lingbot-map仓库下载:
lingbot-map:均衡版(论文与基准测试使用,推荐新手)lingbot-map-long:更适合长序列与大场景lingbot-map-stage1:可加载进 VGGT 做双向推理的中间检查点
4. 跑通第一个场景
python demo.py --model_path /path/to/lingbot-map.pt \ --image_folder example/courthouse --mask_sky浏览器打开http://localhost:8080,就能看到交互式 3D 点云查看器(基于 viser)——拖拽旋转、缩放,你的第一个流式 3D 重建场景就完成了 ✅
三个示例场景:打开即用的 Demo 素材
项目自带example/目录,三个场景可直接运行:
| 场景 | 命令要点 | 看点 |
|---|---|---|
example/courthouse | --mask_sky | 户外建筑,天空掩膜过滤天空点 |
example/university | --mask_sky | 大学校园,长走廊结构 |
example/loop | 无额外参数 | 闭环轨迹,直观展示漂移校正 |
💡
--mask_sky使用 ONNX 天空分割模型过滤天空点,首次使用会自动下载分割模型;掩膜结果会缓存,二次运行零开销。
基准测试结果:9 大主流数据集实测 📊
项目在 benchmark/ 下提供了完整的评测流水线(prepare → run → evaluate → report),覆盖 ETH3D、7-Scenes、TUM RGB-D、KITTI、Oxford Spires、VBR、DROID-W 等 10 个数据集。部分关键指标(ATE 为 Sim(3) 对齐后的绝对轨迹误差,越低越好):
| 数据集 | 场景数 | ATE ↓ | RPE-平移 ↓ |
|---|---|---|---|
| TUM RGB-D | 9 | 0.045 | 0.013 |
| 7-Scenes | 18 | 0.079 | 0.020 |
| Tanks and Temples | 6 | 0.210 | 0.087 |
| DROID-W(动态场景) | 7 | 0.909 | 0.184 |
| Oxford Spires | 10 | 5.374 | 0.930 |
| KITTI (504×280) | 11 | 24.046 | 2.861 |
蓝色实线为预测轨迹、灰色虚线为真值轨迹的对比图,可看到两条轨迹高度贴合:
室内 RGB-D 场景同样稳健,桌面级小尺度场景中 ATE 仅 0.045:
长序列与离线渲染:从 Demo 到成片 🎥
交互式 viewer 有长度限制,超过 3000 帧时建议两种玩法:
窗口化推理(Windowed Mode)——让 KV Cache 分窗滑动,窗口间共享关键帧保持位姿连续:
python demo.py --model_path /path/to/lingbot-map.pt \ --video_path video.mp4 --fps 10 \ --mode windowed --window_size 128 \ --overlap_keyframes 16 --keyframe_interval 2离线渲染流水线——demo_render/batch_demo.py 一条命令输入视频、输出一段无人指点云飞越 MP4,内置follow追拍、birdeye鸟瞰揭示等电影感镜头模式(预设见 demo_render/config/)。官方 13 分钟室内视频即由该流水线渲染(命令与参数解释详见仓库 README 的 Worked Example 部分)。
实用参数速查表 ⚙️
| 参数 | 默认 | 作用 |
|---|---|---|
--keyframe_interval | 自动 | 每 N 帧存一个关键帧,显著降低 KV Cache 显存(>320 帧序列强烈建议开启) |
--mask_sky | 关 | 户外场景过滤天空点,点云更干净 |
--camera_num_iterations | 4 | 位姿头迭代精修次数,设为 1 可提速(略损精度) |
--use_sdpa | 关 | 未装 FlashInfer 时的 PyTorch 原生注意力回退 |
--offload_to_cpu | 开 | 显存不足时把逐帧预测卸载到 CPU |
--downsample_factor | 10 | 点云显示空间下采样倍数 |
写在最后:新手从哪开始?
给刚接触 3D 重建基础模型的开发者一条最短路径:
- 按上文5 分钟安装跑通
example/courthouse - 换自己的相机素材(图片文件夹或视频)替换
--image_folder/--video_path - 长序列加
--keyframe_interval,超过 3000 帧切--mode windowed - 想看量化指标,用
benchmark/的三命令流水线对自己的数据做评测
从"离线全局优化"到"一次前馈推理",LingBot-Map 展示了流式 3D 重建的新范式:更快的推理、更稳的长序列、更少的调参。不妨今天就把它跑起来,亲眼看看逐帧生长的 3D 世界 🌍
【免费下载链接】lingbot-mapA feed-forward 3D foundation model for reconstructing scenes from streaming data项目地址: https://gitcode.com/GitHub_Trending/li/lingbot-map
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考