LingBot-Map 教程:先跑短序列,再处理窗口和显存
LingBot-Map 用 Geometric Context Transformer 逐帧预测深度、世界坐标点和相机位姿。它维护几何上下文与 KV cache,并提供短序列浏览器查看器和长视频离线渲染两套入口。
1. 数据从图像到点云怎样流动
输入图像先预处理,初始尺度帧建立参考;后续帧按 streaming 或 windowed 模式更新上下文。模型输出深度、置信度、世界点和相机姿态。demo.py 把结果交给 Viser,默认地址为 http://localhost:8080。
长视频走 demo_render/batch_demo.py,还会涉及 ONNX 天空分割、GPU 点云渲染、Kaolin CUDA 扩展和 ffmpeg。它和最小 demo 的安装成本差别很大。
2. 按官方版本建立最小环境
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 . pip install -e ".[vis]"
需要 FlashInfer 时再安装:
pip install --index-url https://pypi.org/simple flashinfer-python
FlashInfer 会在首次使用时 JIT 编译 CUDA kernel。没有它可用 --use_sdpa 回退到 PyTorch 原生注意力。模型 checkpoint 约 4.4GB,官方提供 Hugging Face 与 ModelScope 下载入口;不要把权重下载时间误算成推理延迟。
python demo.py \ --model_path /path/to/lingbot-map.pt \ --image_folder example/courthouse \ --mask_sky
3. 长序列的关键不是只加帧
README 说明 video RoPE 用 320 views 训练,KV cache 持续保存超过该范围的帧时,质量会下降。keyframe_interval 只让每隔若干帧的关键帧进入缓存,非关键帧仍产生预测。超过约 3000 帧时可切到 windowed 模式,并用 overlap_keyframes 保留相邻窗口的上下文。
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
模型默认不做状态重置,推理距离还受训练数据最长距离约束。出现 pose collapse 时,官方建议先调整 keyframe_interval,仍不稳定再用 windowed 模式。它没有声明默认提供全局回环优化,测绘或机器人应用必须自行验证闭环漂移。
4. 显存、网络与输出权限
--offload_to_cpu 默认把逐帧预测移到 CPU;把 num_scale_frames 从 8 降到 2 可减少初始尺度阶段的峰值;把相机迭代从 4 降到 1 会少做三次 refinement。它们都会改变速度或质量,不能只记录“能跑”。
Viewer 端口、输入视频、天空 mask 缓存、逐帧 NPZ 与输出 MP4 都要纳入权限检查。带敏感图像时不要转发 8080 端口,也不要把数据集目录放到共享服务。
5. 与 VGGT 对比
Meta 的 VGGT接收一个到数百张图,一次前馈预测相机、深度、点图和跟踪。LingBot-Map 加入流式状态、分页 KV cache、关键帧和窗口重置,更关注连续长序列。
短批次、多任务几何预测可先评估 VGGT;需要连续视频和长序列状态管理时,LingBot-Map 的接口更贴合。
这里仅补原教程没有展开的事实和边界。安装命令与操作步骤仍以前文为准。
先判断这个项目是否适合你
适合谁用
适合研究长视频的相机轨迹、深度和点云重建,以及复现实验基准。它不是零配置 CPU 工具,也没有默认全局回环优化;用于机器人或测绘前,要在自己的相机、运动速度、尺度和回环场景上评估漂移。
原教程未展开的系统信息
核心功能
流式几何上下文
模型用上下文 token、参考窗口和轨迹记忆处理连续帧,输出深度、点图与相机姿态;FlashInfer 提供分页 KV cache 路径。
技术栈和运行条件
语言
Python >=3.10
框架
PyTorch;推荐 torch 2.8.0 + torchvision 0.23.0 + CUDA 12.8
关键依赖
- Pillow
- huggingface_hub
- einops
- safetensors
- opencv-python
- scipy
- 可选 FlashInfer
- 可选 Viser/Trimesh/ONNX Runtime
- 离线渲染另需 Kaolin 与 ffmpeg
运行环境
需要下载约 4.4GB 的 1.19B 参数 checkpoint;交互查看器默认监听 localhost:8080;FlashInfer 首次运行会 JIT 编译 CUDA kernel
官方与对比资料
以下链接用于核对版本、安装方式、功能边界和同类差异。
- https://github.com/facebookresearch/vggt
- https://github.com/Robbyant/lingbot-map
- https://github.com/Robbyant/lingbot-map#streaming-with-keyframe-interval
- https://github.com/Robbyant/lingbot-map#interactive-demo-demopy
- https://github.com/Robbyant/lingbot-map/blob/main/pyproject.toml
- https://github.com/Robbyant/lingbot-map#installation
- https://github.com/Robbyant/lingbot-map/releases
常见问题
LingBot-Map 没装 FlashInfer 还能运行吗?
可以。官方提供 --use_sdpa,回退到 PyTorch 原生注意力;README 仍建议 FlashInfer 获得更好的流式性能。两条后端的速度、显存和长序列质量应在同一硬件上分别测。
LingBot-Map 为什么长序列要调 keyframe_interval?
模型用 320 views 训练 video RoPE,缓存持续超过这个范围时性能会下降。提高 keyframe_interval 只让部分帧进入 KV cache,非关键帧仍会产生预测,从而把更长视频放进有限上下文。
LingBot-Map 的查看器会开放到公网吗?
README 写的是 Viser 默认运行在 http://localhost:8080。仍应检查实际绑定地址、防火墙和运行环境,不要在含敏感图像时把端口转发到公网。
LingBot-Map 能直接在 8GB 显卡上稳定处理长视频吗?
官方只给出 --offload_to_cpu、减少 num_scale_frames 和降低相机迭代等节省显存方法,没有承诺所有 8GB 设备可稳定运行。应先用短 example 测峰值显存,再逐步增加帧数。
LingBot-Map 和 VGGT 的主要区别是什么?
VGGT 面向一个到数百张图的一次前馈几何预测;LingBot-Map 增加流式状态、分页 KV cache、关键帧和窗口模式,重点处理连续长序列。