LingBot-Map:一个面向流式3D重建的前馈式基础模型

0 阅读8分钟

一、问题定义:流式3D重建的挑战

流式3D重建的目标是从连续视频流中实时恢复相机位姿和场景三维点云。与离线方法不同,流式重建要求系统“边看边理解”——摄像头一边采集,系统一边输出定位和建图结果。

这个任务面临三重挑战:几何精度、时序一致性、计算效率。三者之间存在天然张力——精度要求模型保留充分的几何上下文,一致性要求长序列不漂移,效率要求计算和存储开销可控。

近年来,以VGGT、Depth Anything 3为代表的三维基础模型在离线重建上取得了巨大成功。但当场景转向在线流式输入时,问题变得棘手:模型无法预知未来,只能依赖过往观测实时估计当前帧的位姿和深度。现有流式方法各有取舍:有的采用循环状态但激进的压缩导致状态遗忘;有的依赖迭代优化或RNN/LSTM维护状态,难以在长序列、低延迟、高保真三者间取得平衡。

666.png

LingBot-Map的定位是首个面向流式重建的前馈式3D基础模型,核心架构为几何上下文变换器(Geometric Context Transformer, GCT)。

二、核心架构:几何上下文变换器(GCT)

LingBot-Map的设计受经典SLAM系统空间信息分层管理的启发。SLAM系统在几十年工程实践中提炼出一个关键洞见:鲁棒的实时重建需要维护三种不同类型的空间上下文——用于坐标定位的参考系、用于密集局部几何估计的局部窗口、以及用于漂移校正的全局地图。

GCT将这一思想用注意力机制实现了出来,通过三重注意力设计显式维护三种互补的上下文。

2.1 锚点上下文(Anchor Context)

锚点上下文解决的是坐标系对齐的问题。第一帧或选定的关键帧作为全局坐标系的锚点,后续所有帧的位姿都相对于这个锚点估计。这避免了每帧重新定义坐标系的混乱,也防止了尺度漂移。

每帧图像首先通过ViT骨干网络编码为图像令牌,并与相机、配准及锚点等特殊令牌拼接。锚点令牌在注意力机制中作为全局参照系,确保所有预测共享统一的坐标空间。

2.2 位姿参考窗口(Pose-Reference Window)

位姿参考窗口编码局部稠密几何约束。只保留最近若干帧的详细几何信息——包括密集视觉特征和深度估计——用于精确的局部几何估计。

这既保证了局部重建的精度(有足够多的邻近帧做三角化),又控制了计算量(不保留全部历史帧的稠密特征)。窗口大小是一个可配置的超参数,训练中从24帧逐步增长到320帧。

这既保证了局部重建的精度(有足够多的邻近帧做三角化),又控制了计算量(不保留全部历史帧的稠密特征)。窗口大小是一个可配置的超参数,训练中从24帧逐步增长到320帧。

2.3 轨迹记忆(Trajectory Memory)

轨迹记忆解决的是长程漂移校正问题。它将完整的观测历史压缩成仅6个摘要token的紧凑状态,建模长期运动先验。

这是GCT最精妙的设计——不是简单地丢弃历史信息,而是用极紧凑的表示保留长程几何一致性。通过丢弃历史帧图像token、仅保留6个摘要token,实现了约73倍的token压缩。区别于依赖迭代优化或RNN/LSTM状态维护的传统方法,GCT采用轻量、无循环的前馈架构,在保证几何严谨性的同时实现真正流式推理。

三、训练策略

3.1 渐进式视图训练

LingBot-Map采用渐进式视图训练策略,从短子序列开始,训练视图数量从24帧线性递增至320帧。这种策略让模型先学会局部几何(短序列足够),再逐步学习长程一致性(需要更多上下文)。

模型使用复合损失函数进行训练,包括深度损失、绝对位姿损失与相对位姿损失。三重监督确保深度估计、全局位姿、帧间相对几何三个维度都得到充分约束。

3.2 纯自回归设计

LingBot-Map采用纯自回归建模方式——严格遵循因果律,仅依赖历史帧推理当前帧。不依赖任何未来帧信息,不做任何后处理优化。

这不是一个学术上的“纯洁性”追求。在实际系统中,你不能“偷看”未来帧来做平滑——任何对未来的依赖都会在真实部署中失效。纯自回归设计保证了模型在真实流式场景中的可用性。

四、工程实现:从论文到可用代码

4.1 Paged KV Cache + FlashInfer

Transformer的KV cache如果无限制增长,长序列推理很快就会撑爆显存。LingBot-Map借鉴了大语言模型的Paged KV Cache机制,配合FlashInfer加速,实现了近恒定内存下的长序列推理。

Paged KV Cache将KV cache分页管理,避免频繁的内存重分配。FlashInfer是一个纯Python包,在首次使用时JIT编译CUDA内核,单个wheel即可跨CUDA/PyTorch版本工作。

如果当前环境无法安装FlashInfer,模型会自动回退到PyTorch原生的SDPA(Scaled Dot-Product Attention),通过--use_sdpa参数即可启用。

4.2 Keyframe Interval策略

--keyframe_interval参数进一步压缩了内存占用:只将每N帧中的一帧作为关键帧存入KV cache,非关键帧仍产生预测但不存入cache。

项目组训练时视频RoPE基于320帧,当KV cache存储超过320帧时性能会下降。通过keyframe策略,可以在不增加KV cache容量的情况下覆盖更多实际帧。例如--window_size 128 --keyframe_interval 13的配置下,一个窗口(128个KV cache槽位)可覆盖8 + (128-8) × 13 = 1568个实际帧。

对于超过3,000帧的超长序列,支持滑动窗口模式(--mode windowed),相邻窗口通过--overlap_keyframes共享关键帧上下文,保持跨窗口位姿对齐稳定。

4.3 内存优化与加速选项

--offload_to_cpu:将每帧预测结果在推理过程中卸载到CPU(默认开启),大幅降低显存占用

--num_scale_frames:将双向尺度帧从默认8帧减少到2帧,缩减初始尺度阶段的激活峰值

--camera_num_iterations:降低相机头的迭代优化步数(默认4步),可牺牲少量位姿精度换取更快速度

--compile:通过torch.compile进一步加速

项目组实测显示,模型运行显存仅需13.28GB,普通消费级显卡即可流畅部署

4.4 Sky Masking

针对室外场景,LingBot-Map集成了一个ONNX格式的天空分割模型(skyseg.onnx),自动过滤点云中的天空点。天空掩码会缓存到本地_sky_masks/目录,后续运行直接复用,避免重复计算。

五、性能表现

5.1 轨迹精度

Oxford Spires数据集(以大尺度、复杂光照著称)上,LingBot-Map的绝对轨迹误差(ATE**)仅为6.42米。轨迹精度较此前最优流式方法提升约2.8倍,显著优于离线方法DA3(12.87米)和优化方法VIPE(10.52米)。

5.2 重建质量

ETH3D基准上,重建F1分数达到98.98,较第二名提升超过21个百分点。(另一报道中F1分数为85.70、较第二名提升超过8%,可能涉及不同子集或指标。)

7-ScenesTanks and TemplesNRGBD等多个主流基准上,LingBot-Map在位姿估计和三维重建质量两个维度全面领先现有流式方法。

5.3 实时性与长序列稳定性

推理速度约20 FPS(518×378分辨率)。支持超过10,000帧的长视频序列连续推理,精度几乎不衰减。项目组还放出了一个约25,000帧13分钟的室内漫游demo。

六、应用场景

机器人:仅需一颗普通RGB摄像头即可完成实时定位与建图。蚂蚁灵波已推出人形机器人Robbyant-R1,可完成烹饪、导游、药品分拣等任务。

自动驾驶:在行驶过程中实时感知路面、建筑、行人等三维结构,纯自回归、无未来帧依赖的特性尤其适合车载实时系统。

AR/VR眼镜:轻量化和低硬件门槛(13.28GB显存)让它在移动设备上具备部署潜力。

七、结语

LingBot-Map在“纯自回归+低显存+高精度+长序列”这四个看似矛盾的要求之间找到了可行的平衡点。它从SLAM的空间记忆管理哲学中汲取灵感,用Transformer的注意力机制实现了端到端学习,让实时3D重建不再依赖昂贵的传感器阵列和复杂的后处理优化。代码已经开源,值得在实际数据上跑一跑。