从一段视频重建三维世界:Every-Embodied LingBot-Map流式三维重建完整教程
【免费下载链接】every-embodied仅需Python基础,从0构建自己的具身智能机器人;从0逐步构建VLA/OpenVLA/SmolVLA/Pi0, 深入理解具身智能项目地址: https://gitcode.com/gh_mirrors/ev/every-embodied
Every-Embodied 是一个只需 Python 基础、从 0 构建具身智能机器人的开源教程项目。本篇教程聚焦其中的LingBot-Map 流式三维重建模块:输入一段连续视频,它就能边"看"边估计相机轨迹、逐帧深度和点云地图——不需要深度相机、不需要激光雷达。跟着本文,你也能用自己的手机视频快速重建出一个三维世界。
为什么值得学"视频流式三维重建"
传统三维重建(摄影测量、SfM)要先把整个场景拍完,再离线等待数小时;而机器人真正需要的是边走边建图:
- 📹流式推理:视频逐帧输入,空间表示持续更新,不用等视频拍完再处理;
- 🗺️直接产出可用几何:相机位姿 + 深度 + 点云/体素渲染视频,可作为 SLAM、导航、3DGS 的前端输入;
- 🪶门槛低:一段普通单目视频即可,仓库自带官方示例,几分钟跑通。
小提示:LingBot-Map 的输出更接近"流式相机位姿 + 深度 + 点云/体素渲染",并不是一个可直接编辑的 3DGS 场景模型,两者的区别后文会讲。
下图是官方示例university(校园雪景连续行走镜头)流式推理逐步生成的点云地图关键帧:
快速上手:3 步跑通官方示例
- 建独立环境:建议单独建 mamba/conda 环境,安装 PyTorch 2.8.0 + CUDA 12.8,再
pip install -e .并安装渲染依赖(完整命令见 03-LingBot-Map视频流式三维重建.md)。 - 下载权重:把长视频权重
lingbot-map-long.pt放到checkpoints/目录(长视频、大场景优先用它)。 - 跑官方
university场景:
python demo_render/batch_demo.py \ --input_folder example --scenes university \ --image_range 0:240:2 \ --output_folder outputs/official_university_scan \ --model_path checkpoints/lingbot-map-long.pt常用参数速查:
| 参数 | 作用 | 首次运行建议 |
|---|---|---|
--image_range | 帧采样范围与步长 | 0:240:2(约 120 帧) |
--num_scale_frames | 尺度参考帧数 | 4 |
--video_width / --video_height | 输出视频分辨率 | 640 / 360 |
--use_sdpa | 注意力加速 | 开启 |
--save_predictions | 保存中间预测结果 | 开启 |
120 帧的 smoke test 推理速度约十几 FPS,并生成百万级点云/体素,速度会随 GPU 与分辨率变化。
扫描自己的环境:4 条拍摄技巧 🎬
拿到自己的视频后,重建质量一半取决于"怎么拍":
- 单场景连续移动:剪辑视频会瞬间切换视角,模型会把不连续的空间关系硬接在一起,产生漂移和破碎点云;
- 让相机有视差:可以转弯、环绕、轻微俯仰,但纯原地旋转或纯远景平移很难恢复稳定尺度;
- 减少纯天空占比:室外扫描时尽量压低天空占比,必要时启用 sky mask;
- 先短后长:先用 60~120 帧验证管线稳定,再逐步加长视频。
LingBot-Map 只需要单目 RGB 视频,不依赖深度相机的主动测距结构:
流式三维重建是怎么工作的
LingBot-Map 不孤立地处理每一帧,而是维护跨帧流式状态,把前面看到的内容作为后续帧的上下文,可以拆成三层能力:
| 层次 | 做什么 |
|---|---|
| 视觉编码 | 把每一帧图像转成视觉特征 |
| 时序聚合 | 用流式状态保留历史帧信息,避免长视频重复计算 |
| 几何输出 | 预测相机位姿、深度与世界点,再转成点云/体素渲染 |
其中"深度"是最核心的中间产物——每一帧都会得到一张对应的深度图,深度叠加相机位姿后就还原出了三维空间:
点云渲染 vs 3DGS:别搞混这两个概念
很多人第一反应是"这不就是 3D Gaussian Splatting 吗?"区别在于:
- LingBot-Map(本文):流式输出几何估计 + 点云/体素渲染,可接近实时,产物是"可用于导航和检查的三维结构";
- 3DGS:需要显式高斯参数优化或训练流程,产物是可交互渲染的高质量场景,见下图示意:
所以定位要清晰:LingBot-Map 回答的是"从机器人视角的视频流中持续恢复三维结构",3DGS 回答的是"把场景做成一张可编辑的高保真渲染地图",两者可以串联使用。
Web demo:上传视频,直接看点云
教程仓库内置了一个极简 Web 包装器 tools/lingbot_map_web_demo/,三步出结果:
- 克隆教程仓库获取 demo(
git clone https://gitcode.com/gh_mirrors/ev/every-embodied); - 用环境变量指向你的 LingBot-Map 项目、权重和 Python 解释器,然后运行
python app.py; - 浏览器打开
127.0.0.1:7860,上传一段连续视频,页面即可展示原始视频 / 点云渲染 / 原视频与点云对照三段结果和执行日志。
下方动图左为点云渲染、右为原始视频,可以直观看到流式重建与拍摄轨迹的对应关系:
⚠️ 注意:该 Web demo 定位为教程展示与 smoke test,长视频推理占用显存和磁盘较多,不建议直接作为生产服务公开部署。
常见问题 FAQ
Q1:输出是"实时 3DGS"吗?不是。它是流式几何估计 + 点云/体素渲染,3DGS 还需要额外的高斯参数优化流程。
Q2:为什么剪辑视频重建效果差?重建依赖相邻帧的几何一致性,剪辑会造成空间关系突变,点云容易漂移、错位。
Q3:没有 CUDA 12.8 / 新架构 GPU 怎么办?若 CUDA kernel 或 CUDA 扩展编译失败,再考虑升级 CUDA Toolkit,并保证 PyTorch、驱动与依赖版本一致;smoke test 本身通常不受影响。
Q4:权重和大体积输出文件要提交到仓库吗?不建议。原始视频、权重和.npz预测文件放在本地数据目录或对象存储即可。
延伸阅读
- 📘 完整复现教程(环境安装、CUDA 注意事项、论文与代码对应关系):04-具身场景的计算机视觉、3D重建/03-LingBot-Map视频流式三维重建.md
- 🌐 Web demo 入口与部署说明:tools/lingbot_map_web_demo/README.md、tools/lingbot_map_web_demo/app.py
- 👁️ 深度估计与 SAM 分割前置知识:04-具身场景的计算机视觉、3D重建/01-sam和深度估计.md
- 🧭 把重建的地图用起来——导航算法入门:08-具身导航及VLN/01快速入门导航算法详解及实战/具身导航算法基本介绍.md
一段视频、一台带 GPU 的机器,就能让机器人"看见"三维世界——这就是流式三维重建的魅力,也是 Every-Embodied 具身智能学习路径中空间理解的关键一环。
【免费下载链接】every-embodied仅需Python基础,从0构建自己的具身智能机器人;从0逐步构建VLA/OpenVLA/SmolVLA/Pi0, 深入理解具身智能项目地址: https://gitcode.com/gh_mirrors/ev/every-embodied
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考