这项由蚂蚁集团旗下研究团队主导完成的研究,于2026年4月15日以预印本形式发布在arXiv平台,论文编号为arXiv:2604.14141v1,研究方向归属于计算机视觉领域。有兴趣深入了解的读者可以通过该编号在arXiv网站上查阅完整原文。
一、 为什么机器"看世界"这么难?
闭上眼睛,回忆一下你昨天走过的那条街道。你大概不会记得每一块砖的颜色,但你对整条街的布局、哪里有个拐角、哪里有家咖啡馆,却有着清晰的空间印象。人类的大脑天生就会做一件神奇的事:一边走路一边建立精简而准确的心理地图,只记住关键信息,扔掉无关细节。
现在把这个问题交给机器。给它一台摄像机,让它边走边拍,要求它实时告诉你:摄像机现在在哪里、朝哪个方向、周围的三维空间长什么样。这就是所谓的"流式三维重建",也是无人驾驶、增强现实、机器人导航等领域的核心挑战之一。
听起来没什么难的?实则麻烦重重。摄像机拍的是二维图像,要从中推算出三维空间,本身就已经是一道难题。更要命的是,视频是一帧一帧实时传来的,机器不能等全部拍完再处理,必须边看边算。时间一长,每一帧微小的误差会像滚雪球一样越积越大,最终导致整张地图"漂移"得面目全非——行话叫做"轨迹漂移"。与此同时,如果把每一帧的所有信息都存下来,内存很快就会被撑爆。
正是为了解决这个两难困境,蚂蚁集团的研究团队提出了一个名叫LingBot-Map的新系统,并将支撑它的核心技术命名为"几何上下文注意力机制",英文缩写为GCA。
二、 向人类的空间记忆取经
研究团队在设计这套系统时,把目光投向了一个很有意思的参照系——经典的SLAM系统。SLAM是"同时定位与建图"的英文缩写,这是机器人和无人机领域已经研究了几十年的技术,核心思想是:让机器一边在未知环境中移动,一边建立这个环境的地图,同时搞清楚自己在地图上的位置。
经典SLAM系统在工程实践中摸索出一套行之有效的"记忆管理哲学":把所有需要记住的信息分成三类,分别对应不同的作用。第一类是"参考帧",负责确立坐标系统和整体比例尺,就像你走进一个陌生城市时先找到的那块"你在此处"地图牌,给你一个稳定的起点。第二类是"近期帧窗口",保存最近一段时间看到的画面,提供密集的局部细节,好让你知道刚才拐了几个弯、走了多远。第三类是"全局地图",对整段历史旅程做一个压缩摘要,用来纠正长时间积累的偏差——比如你绕了一大圈回到出发点,突然意识到自己走偏了,就得靠全局地图来校正。
LingBot-Map把这套哲学照单全收,但用深度学习的方式彻底重新实现了它。与传统SLAM需要人工设计每一条规则不同,LingBot-Map通过在大量数据上训练,让系统自动学会如何管理、压缩和使用这三类信息,整个过程端对端可导、完全自动。
三、 三层记忆的精巧设计
GCA机制的核心,就是把上述三类信息转化为三种不同的"注意力上下文",共同服务于当前帧的处理。
第一层叫做"锚定上下文"。视频开始时,系统会把最初几帧图像当作锚点,用这几帧建立整个坐标系和距离比例尺。这是因为单目摄像头(就是普通的一个镜头,没有激光雷达,也没有立体视觉辅助)天生有个毛病:无法判断绝对距离,你往前走了一步还是十步,单靠图像是分不清的。锚定上下文通过给系统一个固定的"出发点",解决了这个比例尺模糊的问题。在训练时,研究团队也相应地把所有的真值标注统一归一化到以锚帧为基准的坐标系下,让模型从一开始就学会以锚帧为参考。
第二层叫做"局部位姿参考窗口"。在处理当前帧时,系统会保留最近k帧的完整图像特征,让当前帧可以与邻近帧进行密集的视觉比对。这种比对提供了非常丰富的局部几何线索:相机相对于刚才的位置转了多大角度、移动了多少距离。就好比你认路时,不光要记得从哪出发,还要知道刚刚走过的几个路口长什么样,否则很容易迷失在当下。这个窗口的大小k在训练时会随机从16到64之间采样,确保模型在推理时对不同大小的窗口都能适应。
第三层叫做"轨迹记忆"。对于那些已经离开局部窗口、又不是最初锚帧的"历史帧",系统不会完全丢掉它们,而是把每一帧压缩成极其精简的6个"摘要令牌",扔掉那些占内存大户的图像像素特征,只保留摄像机位置和方向的核心信息。这就像你回忆一次长途旅行,不会记得每一棵路边的树,但大概记得几点在哪个城市、拐过几次大弯。同时,研究团队还为这些历史摘要令牌加上了"时间标记"——参考WAN视频生成模型中使用的视频时序位置编码技术——让系统能感知到每帧在时间轴上的先后顺序,从而在修正轨迹漂移时更有方向感。
四、 "注意力"的精妙分配
理解了三层记忆,就能理解GCA在技术层面最关键的设计:注意力掩码(Attention Mask)。在深度学习中,"注意力机制"就是模型在处理某一块信息时,决定要"看"哪些其他信息、以多大权重来参考。
GCA设计了一套特殊的注意力规则:当前帧在做判断时,可以"看"所有的锚定帧(保留完整图像特征)、可以"看"局部窗口内的最近k帧(同样保留完整特征),以及可以"看"所有历史帧的精简摘要令牌。整个机制的妙处在于,随着视频越来越长,每处理一帧新画面,系统的计算量增加的非常少——新进来的历史帧只贡献6个精简令牌,而不是几百个完整的图像令牌。
具体来说,完整的图像令牌数量通常在每帧500个左右(记为M)。用传统的因果注意力机制(即"只看过去,不看未来"的滚动记忆),处理第T帧时需要参考的令牌总数大约是M×T,随帧数线性爆炸。而GCA的设计下,令牌总数约等于(n+k)×M加上6×T,其中n和k是固定的小常数,所以实际上每增加一帧,内存只增加6个令牌。以n=3个锚帧、k=16帧的窗口、T=10000帧的长视频为例,传统方法积累约500万个令牌,而GCA只需要约7万个,差了将近80倍。这种极度压缩的设计,让LingBot-Map在标准的518×378分辨率下,针对千帧以上的长序列能达到约每秒20帧的实时推理速度。
五、 从零开始的两阶段训练
仅有架构设计还不够,如何把这套系统训练好,本身也是一道难题。蚂蚁集团的团队为此设计了一套两阶段训练方案。
第一阶段叫做"基础模型训练"。此时系统还没有引入GCA机制,而是用标准的全局注意力,在大量短序列的多视角图像数据上预训练,让模型先学会扎实的几何推理能力——怎么从二维图像里推算三维空间,怎么估计摄像机的位置和方向。这个阶段用了整整29个数据集,涵盖室内、室外、合成、真实等各种场景,图像对的数量从2张到24张不等,训练消耗约2.15万GPU小时。ViT骨干网络用DINOv2进行初始化,共包含24个交替的帧内注意力和跨帧注意力模块。优化器采用AdamW,学习率从10??逐渐预热到2×10??后再余弦退火。数据增强方面,对亮度、对比度、饱和度等做了大量随机扰动,还专门设计了"同步色彩抖动"——有30%的概率对同一场景的所有帧做完全相同的色彩变换,逼迫模型更多依赖几何线索而非色彩线索来完成配准。
第二阶段叫做"流式模型训练"。把第一阶段的权重迁移过来,把全局注意力替换为GCA,然后开始在长序列视频数据上微调。为了防止早期训练时误差积累过快导致梯度爆炸,团队采用了"渐进式视图课程"策略:训练开始时每次只处理24帧的短片段,随着训练推进逐渐增加到320帧。这就好比教一个孩子打篮球,先练定点投篮,再慢慢加上移动、防守等复杂动作。与此同时,这个阶段还额外引入了相对位姿损失函数,专门监督滑动窗口内任意两帧之间的相对旋转和平移误差,确保局部一致性。随着训练帧数增多,显存成为瓶颈,团队采用了Ulysses上下文并行策略,把不同帧分散到多块GPU上并行计算注意力,通过高效的全转发(All-to-All)通信聚合结果,这个阶段消耗约1.536万GPU小时。
六、 用了哪些数据?
LingBot-Map的训练数据来自29个数据集,横跨室内场景、室外场景、以物体为中心的场景以及合成场景。这些数据在两个训练阶段的使用比例有所不同。
第一阶段以多样化的短序列为主,广泛覆盖BlendedMVS、HyperSim、MegaDepth、TartanAir、TartanAirV2、ScanNet、ScanNet++、MatrixCity、DL3DV等众多来源,同时包括从Objaverse和Texverse这样的三维模型库中渲染出来的合成数据。第二阶段则大幅提升了具有长轨迹连续视频的数据集权重,包括TartanAir系列、MatrixCity、Waymo、KITTI-360、ScanNet系列以及蚂蚁内部的游戏引擎数据集,而将那些缺乏时序结构的纯多视角数据集降权或移除。
为了产生连续且自然的训练视频片段,团队还专门设计了一种名为"折返视频采样器"的策略:从随机帧出发,以随机步长向前采帧,到达序列边界后折返并换一个不同步长继续采,避免无效来回震荡,产生帧率自然变化的训练片段。
除了公开数据集,团队还围绕数据处理做了大量工程工作:统一各数据集的坐标系、深度单位和文件格式,过滤损坏帧,处理天空区域(置零深度),最终将所有数据整合进统一的元数据格式。对于缺乏时间连续性的MatrixCity航拍数据,团队将网格布局建模为图结构,通过随机游走生成连续轨迹。针对需要跨房间长距离导航训练数据的缺失问题,团队借助Habitat-Sim仿真环境,从Gibson、Matterport3D和HM3D三个大规模室内数据集中渲染了约2800段跨房间连续RGBD视频,每段包含1千到5千帧,总计14.4TB,让模型学会应对摄像机穿越走廊、进出房间时的剧烈场景变化。
七、 推理时的两种模式
LingBot-Map在实际使用时支持两种工作模式,分别适用于不同长度的视频。
第一种叫"直接输出模式",是默认的推理设置。摄像机每拍一帧,系统就通过GCA的三层上下文实时估算出当前摄像机的六自由度位姿和深度图,不做任何外部优化或全局调整,误差完全来自模型自身的逐帧推理。这种模式在序列长度不超过约3000帧时表现最佳,性能非常稳定。
第二种叫"视觉里程计模式",英文缩写VO,专为超长序列(比如上万帧的城市级别驾驶视频)而设计。此时系统将超长视频切分为有重叠的局部窗口,每个窗口内独立运行GCA完成局部重建,相邻窗口之间通过计算一种叫做Sim(3)的相似变换(包含旋转、平移和缩放)来拼接成全局轨迹。这种模式牺牲了一点精度(每次拼接都会引入一点额外误差),但允许在固定内存下处理理论上任意长的视频序列。
两种模式都共用了一套"关键帧选择"机制:系统根据预测的深度图和摄像机位姿估算出当前帧相对于上一个关键帧的光流大小,如果光流超过阈值就保留当前帧为新关键帧,否则丢弃,这样在摄像机静止或者缓慢移动时不会无谓地堆积重复信息。
为了进一步加速推理,团队还引入了分页KV缓存技术,借鉴了大语言模型推理服务领域的工程经验。传统的连续内存布局在频繁插入和删除缓存条目时会引起大量内存重排,而分页布局把不同帧的KV缓存存在独立的页中,更新时只需操作新页,整体推理速度从约每秒10.5帧提升到约每秒20帧,接近翻倍。
八、 在哪些地方测试?结果如何?
研究团队在五个公开基准数据集上全面评测了LingBot-Map,这五个数据集在规模、场景类型、挑战难度上各有侧重,形成互补。
牛津尖塔数据集(Oxford Spires)是最具挑战性的一个,拍摄地点遍及牛津大学的历史性建筑群,场景既有开阔的室外庭院,也有昏暗的室内走廊,摄像机轨迹中包含多次"重访"——也就是绕一大圈后回到之前见过的地方。这对系统的长程一致性是极大的考验。研究团队设计了两套评测配置:一套稀疏设置,从整段轨迹中每隔12帧采一帧,共320帧,测试系统在训练范围内的表现;一套密集设置,直接处理完整的3840帧,用于压力测试超长序列能力。
在稀疏设置下,LingBot-Map的AUC@15指标(一种衡量相对位姿估计精度的综合分数,数值越高越好)达到61.64,而同类最好的纯流式方法CUT3R仅有5.98,差了足足10倍。绝对轨迹误差(ATE,数值越低越好,直接反映轨迹漂移程度)方面,LingBot-Map达到6.42米,而竞争对手中最好的TTT3R是19.35米,Wint3R是21.10米。更令人惊讶的是,LingBot-Map甚至超越了那些可以看到所有帧、做全局优化的"离线方法":最好的离线方法DA3的AUC@15只有49.84,ATE是12.87米;专门做迭代优化的VIPE方法AUC@15只有45.35,ATE是10.52米。一个实时流式系统,在位姿精度上击败了"上帝视角"的离线方法,这在该领域相当罕见。
在密集设置下,这一差距更加凸显。当序列长度从320帧扩展到3840帧(增加了12倍),CUT3R的ATE从18.16米跳升到32.47米,Wint3R从21.10米跳升到32.90米,而LingBot-Map几乎纹丝不动,只从6.42米微升到7.11米,增幅不到0.7米。这种在超长序列下几乎恒定的精度,正是轨迹记忆机制发挥作用的有力证明。
在ETH3D数据集(包含室内外多种场景,配有激光扫描仪提供的高精度三维真值)上,LingBot-Map的ATE为0.22米,次优方法Wint3R是0.86米,差了近4倍。在7-Scenes数据集(室内RGB-D序列,有大量无纹理表面和运动模糊,对位姿估计极为不友好)上,LingBot-Map的ATE达到0.08米,同样位居第一。在坦克与神庙数据集(Tanks and Temples,户外大型结构的多视角重建)上,AUC@30指标达到92.80,次优的Stream3R是81.33。
三维重建质量方面,团队在ETH3D、7-Scenes和NRGBD三个数据集上评测了点云的精度、完整度和F1综合分数。ETH3D上,LingBot-Map的F1分数达到98.98,次优方法Wint3R是77.28,提升了约22个百分点。NRGBD上,F1达到64.26,次优的Wint3R是56.96,提升约7个百分点。这些提升不仅仅是数字上的,从可视化对比图中可以清晰看到:其他方法由于轨迹漂移,常常把同一个建筑的边缘渲染成两条甚至更多条"影子",而LingBot-Map产出的点云干净利落,建筑轮廓清晰,墙面连续无断裂。
九、 各个组件分别贡献了多少?
为了验证每个设计决策是否真正有效,研究团队在TartanAir和TartanGround数据集上做了一组系统性消融实验——也就是逐一"关掉"某个组件,看看指标如何变化。
从只保留相对位姿损失函数的基础版本出发,逐步叠加各个模块。加入锚定初始化后,AUC@3从9.80提升到13.63,ATE从8.59降到7.88,证明建立稳定的坐标原点和比例尺对整体精度有显著帮助。在此基础上再加入轨迹记忆令牌,AUC@3进一步提升到15.75,ATE降到7.46,说明即使每帧只保留6个精简令牌,也能有效抑制长程漂移。最后加入视频时序位置编码(Video RoPE),AUC@3再升到16.39,而ATE从7.46骤降到5.98,单这一步的ATE改善量是1.48米,远超仅加轨迹令牌时的0.42米。这说明轨迹记忆令牌携带的几何信息是有价值的,但如果令牌缺乏时间顺序感,这些信息就无法被充分利用——时序位置编码就是让系统"知道"哪帧更早、哪帧更晚的那把钥匙,两者结合才发挥出最大效果。
另一组对比实验则比较了"固定大小的局部窗口"和"完整因果注意力"(即保留所有历史帧的完整令牌)。固定窗口不仅速度提升了1.7倍(每秒20.29帧对比11.87帧),内存下降了2.7倍(13.28GB对比36.06GB),而且轨迹精度也更好:ATE从6.60降到5.98,RPE-trans从1.50降到1.33。这个"反直觉"的结果其实有合理解释:保留全部历史帧的图像令牌,会把大量与当前帧关系疏远的"噪音信息"也送进注意力计算,反而干扰了模型的判断;GCA的做法是有针对性地保留重要信息、丢弃冗余细节,让注意力更聚焦。
说到底,LingBot-Map干的事情其实很像一位经验老到的探险向导——他不会把沿路看到的每块石头都记下来,但他清楚地记得出发时的那个路口(锚定上下文),也随时掌握过去几公里走过的地形细节(局部窗口),还对整段旅途画了一张简化到只有路点和转弯标记的草图(轨迹记忆)。凭借这三样东西,他不需要翻阅每一张拍下的照片,就能在复杂的山地里保持方向感,而且走得比带着全套装备的队员还要快。
LingBot-Map带来的实际意义,远不止于学术榜单上的一串数字。自动驾驶汽车在陌生城市行驶时需要实时建立精确的本地地图,增强现实眼镜在用户走进咖啡馆时需要瞬间对齐虚实坐标系,机器人在复杂仓库里需要边走边记录货架位置。这些应用都有一个共同需求:实时、准确、长程稳定的三维重建。LingBot-Map在实时性(约20帧/秒)、准确性(在多个公开榜单上领先)和长程稳定性(万帧序列下几乎恒定的精度)上同时做到了优化,而且不依赖激光雷达或深度传感器,只用普通摄像机就能工作,这大大降低了部署门槛。
当然,这套系统也不是没有局限。它目前还不能自动识别"我回到老地方了"这件事——也就是没有主动的闭环检测,当轨迹兜了一大圈回到原点时,无法像经典SLAM那样主动触发一次全局修正。轨迹记忆的压缩方式(每帧固定6个令牌)对于极端长序列来说也可能丢失一些细节。未来的改进方向,研究团队认为包括将闭环检测融入注意力机制本身、扩展到包含移动物体的动态场景,以及接入激光雷达或IMU等多模态传感器。有兴趣深入追踪这一方向的读者,可以通过arXiv:2604.14141v1查阅完整原文,也可以在GitHub仓库robbyant/lingbot-map找到相关代码和演示资源。
Q&A
Q1:LingBot-Map的"轨迹记忆"是怎么工作的?
A:LingBot-Map对于那些已经离开最近滑动窗口的历史帧,不会完全扔掉,而是把每一帧压缩成只有6个"摘要令牌",保留摄像机位置和朝向的核心信息,丢掉占用大量内存的图像像素特征。同时,这些摘要令牌还被加上了视频时序位置编码,让系统知道各帧的先后顺序。这样一来,随着视频越来越长,新增的历史记录每帧只多6个令牌,而不是几百个,整体计算量几乎恒定,又能纠正长程轨迹漂移。
Q2:LingBot-Map为什么在超长序列上比其他方法稳定得多?
A:LingBot-Map的稳定性主要来自三层上下文的协同设计。锚定上下文保证整段轨迹有一个固定的坐标基准,不会因为累积误差整体飘移;局部位姿参考窗口保证每帧都有足够的邻近几何细节来精确配准;轨迹记忆则用极简方式记录了整段历史,让系统有能力感知并修正长时间积累的偏差。三者缺一不可,相互补充,而其他方法通常只重点解决其中一两个问题,遇到很长的序列时会逐渐崩溃。
Q3:GCA机制和传统因果注意力相比,内存效率提升了多少?
A:以处理一万帧的视频为例,传统因果注意力(保留所有历史帧完整令牌)需要积累约500万个令牌;而GCA在n=3个锚帧、k=16帧的局部窗口配置下,总共只需要约7万个令牌,节省了约70倍。每处理一新帧,传统方法新增约500个以上令牌,而GCA只新增6个令牌,每帧增量减少了约80倍。这使得LingBot-Map可以在普通GPU上以约每秒20帧的速度处理超长序列,同时峰值显存占用从约36GB降低到约13GB。