首个将SLAM能力融入单一Transformer的框架。该框架由前端和后端部分组成,前端对弹幕图像进行实时处理以实现增量式建图与跟踪,后端执行全局优化,以确保几何一致性的结果。这种交替执行使前端和后端能够相互促进,从而提高整体系统性能。
Transformer架构
SLAM-Former建立在单一Transformer上,其中Transformer backbone fff聚集帧间和帧内信息,特定任务头ggg解码场景几何和相机姿态。Backbone包含帧间和跨帧L层注意力模块以联合捕捉局部图像上下文和时序对应关系。
前端模块
当新帧到达时,前端模块首先决定该帧是否应该是关键帧。如果是关键帧,系统会继续执行跟踪和建图。
给定图像序列{It∈R3×H×w}\\{I_{t}\\in \\mathbb{R}^{3\\times H\\times w}\\}{It∈R3×H×w},前端模块映射每一帧为图令牌(map token):
Ft=ffn(It){Ck}k∈S
F_{t}=f_{fn}(I_{t})_{\\{C_{k}\\}_{k\\in S}}
Ft=ffn(It){Ck}k∈S
其中{Ck}k∈S\\{C_{k}\\}_{k\\in S}{Ck}k∈S是先前关键帧的KV缓存,存储从帧间注意力模块获得的K,V。SSS是关键帧索引集合。该过程中新生成的KV缓存Ct=Cache(f(Ft))C_{t}=Cache(f(F_{t}))Ct=Cache(f(Ft))添加在{Ck}k∈S\\{C_{k}\\}_{k\\in S}{Ck}k∈S中用于后续的过程。特定任务头抽取点云,置信度和相机姿态。
关键帧检测策略
在生成图令牌后,前端模块使用姿态头估计相机姿态hposeh_{pose}hpose。如果与最近关键帧的相对姿kprevk_{prev}kprev超过阈值τ\\tauτ,则新帧被认为是关键帧。
前端模块跟踪和建图
一旦关键帧被认证,需要使用完整的KV缓存重新计算FtF_{t}Ft并更新令牌集合MMM和关键帧索引SSS。
前端模块仅依赖于过去的帧,这符合因果性且对于在线跟踪是合适的。然而因果设计不可避免地会造成误差累积和局部不一致的问题。为了缓解这个问题,引入了后端模块实现全局优化。
后端模块
后端模块负责优化图令牌以强迫全局一致性。传统的SLAM框架依赖于回环检测和图优化实现这个目标。本文方法使用基于Transformerfbnf_{bn}fbn的后端模块通过单一的前向过程优化图令牌:M^=fbn(M)\\hat{M}=f_{bn}(M)M^=fbn(M)。
该设计的有效性源于建立所有图令牌之间密集交互的全注意力机制。注意力模块中的全局感受野使得后端模块纠正累积飘逸并通过重建后场景强迫结构连贯性。
缓存共享机制
本文框架中前端模块重用后端共享的KV缓存。基于该机制,后续的帧会相对于精炼后的全局结构进行跟踪和映射,从而降低长序列中误差积累的风险。
训练策略
本节介绍的训练策略用于使得单一Transformer模块支持前端和后端模块具备SLAM的能力。训练过程中包含三个模式:1. 前端模块训练,2. 后端模块+前端模块训练,3. 后端模块训练。
前端模块训练
前端模块基于因果注意力掩码训练(模式1)。在推断时,前端模块从先前模块以数学等价形式重用KV缓存F=f(I)KVF=f(I)_{KV}F=f(I)KV。
基于后端模块合作的前端模块训练
为了连接前端和后端操作,在训练过程时使用混合注意力处理后端和缓存共享功能(模式2)。后端模块基于全注意力模块优化图令牌,而前端模块在相同的前向过程中处理新输入图像。
后端模块优化
后端模块优化来自不同运行或KV缓存状态的图令牌(模式3)。整个过程中应用全注意力,这使得模型纠正漂移并强迫全局一致性。
联合训练策略
在所有训练模式中,生成的令牌作为几何和相机姿态的隐式表示。任务特定头预测点云P∗P^{*}P∗,置信度Σ∗\\Sigma^{*}Σ∗和相机姿态g∗g^{*}g∗。与预测全局几何的VGGT不同,本文SLAM-Former对于每个帧预测局部点云以避免定义特定世界坐标的需要。
整体损失函数是深度、点云和相机监督的加权和。预测深度图D∗D^{*}D∗和GT深度图DDD对应的损失为:
Ldepth=∑t(∣∣Σt∗⊙(s∗Dt∗−Dt)∣∣+∣∣Σt∗⊙(∇s∗Dt∗−∇Dt)∣∣)−αlogΣt∗
L_{depth}=\\sum_{t}(||\\Sigma_{t}^{*}\\odot(s^{*}D_{t}^{*}-D_{t})||+||\\Sigma_{t}^{*}\\odot(\\nabla s^{*}D_{t}^{*}-\\nabla D_{t})||)-\\alpha\\log \\Sigma_{t}^{*}
Ldepth=t∑(∣∣Σt∗⊙(s∗Dt∗−Dt)∣∣+∣∣Σt∗⊙(∇s∗Dt∗−∇Dt)∣∣)−αlogΣt∗
s∗s^{*}s∗是遵循pi3算法估计的比例因子:s∗=argmins∑t∣∣(sPt∗−Pt)/Dt∣∣1s^{*}=\\arg\\min_{s}\\sum_{t}||(sP_{t}^{*}-P_{t})/D_{t}||_{1}s∗=argmins∑t∣∣(sPt∗−Pt)/Dt∣∣1。
点云损失与深度损失类似,但建立在变换后与第一帧对齐的局部点云上:Pt,1∗=g1∗−1gt∗Pt∗P_{t,1}^{*}=g_{1}^{* -1}g_{t}^{*}P_{t}^{*}Pt,1∗=g1∗−1gt∗Pt∗。损失描述为:
Lpmap=∑t(∣∣Σt∗⊙(s∗Pt,1∗−Pt)∣∣+∣∣Σt∗⊙(∇s∗Pt,1∗−∇Pt)∣∣)−αlogΣt∗
L_{pmap}=\\sum_{t}(||\\Sigma_{t}^{*}\\odot(s^{*}P_{t,1}^{*}-P_{t})||+||\\Sigma_{t}^{*}\\odot(\\nabla s^{*}P_{t,1}^{*}-\\nabla P_{t})||)-\\alpha\\log \\Sigma_{t}^{*}
Lpmap=t∑(∣∣Σt∗⊙(s∗Pt,1∗−Pt)∣∣+∣∣Σt∗⊙(∇s∗Pt,1∗−∇Pt)∣∣)−αlogΣt∗
相机损失使用对于相对姿态监督的缩放Huber损失函数:
Lcam=∑i,j∣∣s∗⊙(gi∗−1gj∗−(gi−1gj)∣∣ϵ
L_{cam}=\\sum_{i,j}||s^{*}\\odot (g_{i}^{* -1}g_{j}^{*}-(g_{i}^{-1}g_{j})||_{\\epsilon}
Lcam=i,j∑∣∣s∗⊙(gi∗−1gj∗−(gi−1gj)∣∣ϵ
KV剪枝策略
为了缓解长序列处理中可扩展性问题,本文算法引入KV剪枝策略以加速后端模块,后续重用剪枝后KV作为缓存以加速前端模块。
与DivPrune算法相似,本节算法将令牌保留视为最大-最小多样性问题(MNDP)。对于每个关键帧,定义τ={t1,…,tp}\\tau=\\{t_{1},\\ldots,t_{p}\\}τ={t1,…,tp}为P个非寄存补丁令牌(及对应的KV对)。本文目标是选择尺寸为k=γ⋅Pk=\\gamma\\cdot Pk=γ⋅P的子集S以最大最小成对相似度。实现时使用贪心选择算法迭代选择令牌。
网硕互联帮助中心







评论前必须登录!
注册