SLAM-Former 方法解析

1. 方法概述

SLAM-Former: Putting SLAM into One Transformer 是一种基于 Transformer 的单目稠密视觉 SLAM 方法。

它的核心思想是:

使用同一个 Transformer、同一套网络参数,同时完成在线 SLAM 前端和全局优化后端。

SLAM-Former 并不是简单地使用 Transformer 回归相邻图像之间的位姿,而是尝试将传统视觉 SLAM 中的多个模块统一到一个神经网络中,包括:

  • 相机跟踪
  • 关键帧选择
  • 增量式建图
  • 长距离数据关联
  • 回环修正
  • 全局位姿优化
  • 稠密三维重建

2. 输入与输出

2.1 输入

系统输入为连续的单目 RGB 图像序列:

\[ I_1, I_2, \ldots, I_t \]

2.2 输出

SLAM-Former 主要预测:

  • 每个关键帧的相机位姿
  • 每帧对应的稠密深度
  • 局部坐标系下的三维 Pointmap
  • 每像素几何置信度
  • 用于后续跟踪和建图的 Map Tokens
  • Transformer 的历史 KV Cache

整体处理流程如下:

单目 RGB 图像
      ↓
图像编码器
      ↓
Patch Tokens + Register Tokens
      ↓
共享 Transformer
      ├── 因果注意力:在线前端
      └── 全局注意力:优化后端
      ↓
Pose / Depth / Pointmap / Confidence

3. Map Token 地图表示

传统 SLAM 通常采用显式地图表示,例如:

  • ORB-SLAM:稀疏三维特征点
  • KinectFusion:TSDF 体素地图
  • NeRF-SLAM:神经辐射场
  • 3DGS-SLAM:三维高斯集合

SLAM-Former 使用 Map Tokens 表示地图。

对于关键帧 \(i\),其地图状态可以表示为:

\[ M_i = {m_{i,1}, m_{i,2}, \ldots, m_{i,N}} \]

这些 Token 隐式编码了:

  • 当前关键帧的局部三维结构
  • 相机运动信息
  • 与历史帧之间的对应关系
  • 深度信息
  • 几何置信度
  • 多帧全局上下文

网络通过预测头从 Map Tokens 中解码:

\[ \hat{P}_i,\quad \hat{D}_i,\quad \hat{T}_i,\quad \hat{C}_i \]

其中:

  • \(\hat{P}_i\):局部 Pointmap
  • \(\hat{D}_i\):深度图
  • \(\hat{T}_i\):相机位姿
  • \(\hat{C}_i\):置信度图

SLAM-Former 主要预测每帧局部坐标系下的 Pointmap,而不是直接将所有三维点预测到固定世界坐标系中。

这种设计可以降低系统对第一帧或固定参考坐标系的依赖。


4. 前端:因果 Transformer

SLAM-Former 的前端负责实时处理不断到达的新图像。

由于在线系统不能访问未来帧,因此前端采用 Causal Attention,即因果注意力

当前帧只能访问:

  • 当前图像
  • 历史关键帧
  • 历史 Map Tokens
  • 历史 KV Cache

当前帧不能访问未来帧。


5. 关键帧选择

对于新输入图像 \(I_t\),系统首先将其与最近关键帧 \(I_k\) 进行联合处理,预测二者之间的相对位姿:

\[ T_{k,t} = T_k^{-1}T_t \]

当估计的相机运动超过设定阈值时,当前帧被选为新的关键帧。

概念流程如下:

新图像
  ↓
与最近关键帧联合输入网络
  ↓
预测相对位姿
  ↓
判断平移或运动幅度
  ↓
超过阈值 → 新关键帧

与传统 SLAM 不同,SLAM-Former 的关键帧判断主要来自网络预测的运动信息。

传统系统通常综合考虑:

  • 特征点跟踪数量
  • 共视关系
  • 图像视差
  • 时间间隔
  • 相机位移
  • 跟踪质量

6. 增量跟踪与建图

当当前图像被选为关键帧后,系统会利用完整的历史 KV Cache 进行处理:

\[ M_t, F_t = \mathcal{T}*{\mathrm{causal}} \left( X_t; \mathcal{K}*{1:t-1}, \mathcal{V}_{1:t-1} \right) \]

其中:

  • \(X_t\):当前图像的视觉 Token
  • \(M_t\):当前关键帧的 Map Tokens
  • \(F_t\):网络输出特征
  • \(\mathcal{K}_{1:t-1}\):历史 Key Cache
  • \(\mathcal{V}_{1:t-1}\):历史 Value Cache

当前关键帧生成的新 Cache 会追加到历史状态中:

\[ \mathcal{C}_{1:t} = \mathcal{C}_{1:t-1} \cup \mathcal{C}_t \]

这种机制类似大语言模型的自回归推理:

  • 历史 Token 不需要重复计算
  • 当前帧只计算新的 Query、Key 和 Value
  • 历史场景信息通过 KV Cache 被持续复用

因此,SLAM-Former 可以进行增量式在线定位和建图。


7. 前端漂移问题

因果前端只能根据历史信息预测当前状态,不能主动修改过去已经输出的结果。

因此长时间运行后,位姿误差仍然会逐步积累:

\[ \delta T_{1,t} \approx \delta T_{1,2} + \delta T_{2,3} + \cdots + \delta T_{t-1,t} \]

可能产生的问题包括:

  • 相机轨迹漂移
  • 局部尺度不一致
  • 同一墙面出现多层结构
  • 地图表面发生错位
  • 返回旧区域时不能正确闭环
  • 历史错误持续影响新帧预测

因此,SLAM-Former 还设计了一个全局 Transformer 后端。


8. 后端:全局 Transformer

后端会周期性读取当前所有关键帧的 Map Tokens,并采用 Full Attention,即全局双向注意力 进行联合优化:

\[ M'_{1:K}= \mathcal{T}*{\mathrm{full}} \left( M*{1:K} \right) \]

与因果前端不同,全局后端允许任意两个关键帧之间互相建立注意力关系:

\[ \operatorname{Attention} \left( Q_i, K_j, V_j \right), \quad \forall i,j \in {1,\ldots,K} \]

即使两个关键帧在时间上相隔很远,只要它们观察到相同场景,网络就可能建立联系。

后端需要学习完成:

  • 长距离数据关联
  • 回环识别
  • 位姿漂移修正
  • 全局尺度调整
  • 重叠地图融合
  • 多帧深度一致性修正
  • 三维结构全局优化

9. 与传统回环和图优化的区别

传统 SLAM 的全局优化通常包括以下步骤:

回环候选检索
      ↓
特征匹配与几何验证
      ↓
建立回环约束
      ↓
构建位姿图或因子图
      ↓
执行图优化或 Bundle Adjustment

SLAM-Former 不需要显式构建:

  • 回环检测器
  • 位姿图
  • 因子图
  • 重投影误差项
  • Bundle Adjustment 求解器

它通过所有关键帧 Token 之间的全局注意力,隐式学习类似回环和全局优化的行为。

传统 Bundle Adjustment 通常显式求解:

\[ \min_{{T_i,X_j}} \sum_{i,j} \rho \left( \left| u_{ij} \pi(T_iX_j) \right|^2 \right) \]

其中:

  • \(T_i\):相机位姿
  • \(X_j\):三维地图点
  • \(u_{ij}\):图像观测
  • \(\pi\):相机投影模型
  • \(\rho\):鲁棒核函数

SLAM-Former 不直接求解这一优化问题,而是通过训练让 Transformer 学习产生类似的全局修正结果。

因此,它属于一种:

学习式、隐式的全局优化方法。


10. 前后端协同机制

SLAM-Former 的关键创新并不只是同时包含前端和后端,而是让二者共享:

  • Transformer 参数
  • Map Tokens
  • KV Cache
  • 几何预测头
  • 三维场景表示

10.1 后端帮助前端

后端完成全局优化后,会更新历史 Map Tokens,并重新产生修正后的 KV Cache:

\[ \mathcal{C}'_{1:K} = \operatorname{Cache} \left( M'_{1:K} \right) \]

随后,新帧使用修正后的 Cache 进行定位:

\[ M_{K+1} = \mathcal{T}*{\mathrm{causal}} \left( X*{K+1}; \mathcal{C}'_{1:K} \right) \]

这意味着后端不仅修改过去的轨迹和地图,还会改善后续前端使用的参考地图。

其作用流程为:

前端产生历史地图
        ↓
后端修正历史漂移
        ↓
更新历史 Map Tokens 和 KV Cache
        ↓
前端使用修正后的地图处理新帧

因此,全局优化结果能够反向帮助后续在线跟踪。

10.2 前端帮助后端

前端为后端提供:

  • 时序顺序
  • 相邻关键帧关系
  • 初始位姿
  • 初始 Pointmap
  • 初始深度
  • 初始 Map Tokens

后端不是从无序图像中重新进行完整三维重建,而是在已有前端结果的基础上进行 Refinement。

这降低了全局后端的优化难度。


11. 三种训练模式

为了让同一个 Transformer 同时学会在线前端和全局后端,SLAM-Former 使用了三种训练模式。

11.1 Mode 1:纯前端训练

使用因果注意力进行增量式预测:

\[ M_t = \mathcal{T}*{\mathrm{causal}} \left( X_t \mid X*{1:t-1} \right) \]

训练目标是让模型学会:

  • 单目相机跟踪
  • 增量深度预测
  • 增量 Pointmap 生成
  • 历史信息利用
  • 在线地图更新

在初始化阶段,前两个关键帧之间可以使用双向注意力,后续关键帧再切换为因果注意力。

这样可以降低系统对第一帧作为唯一参考坐标系的依赖。

11.2 Mode 2:前后端协作训练

首先使用全局注意力更新历史 Map Tokens:

\[ M'_{1:K}= \mathcal{T}*{\mathrm{full}} \left( M*{1:K} \right) \]

随后,当前新图像通过因果注意力读取已经修正的历史状态:

\[ M_{K+1}= \mathcal{T}*{\mathrm{causal}} \left( X*{K+1}; M'_{1:K} \right) \]

该训练模式模拟真实系统中的运行过程:

后端修正历史地图
        ↓
更新 KV Cache
        ↓
新帧到达
        ↓
前端基于修正后的历史地图进行跟踪

该模式主要训练前端与后端之间的 Cache Sharing 和状态共享能力。

11.3 Mode 3:纯后端训练

将来自不同时间或不同运行状态的 Map Tokens 输入全局 Transformer:

\[ M'_{1:K}= \mathcal{T}*{\mathrm{full}} \left( M*{1:K} \right) \]

训练目标是消除:

  • 位姿漂移
  • 深度冲突
  • 地图错位
  • 多帧尺度不一致
  • 长距离对应关系错误

三种模式共享相同的 Transformer 参数,因此实现了:

One Transformer for Frontend and Backend。


12. 损失函数

SLAM-Former 的总体损失可以表示为:

\[ \mathcal{L}= \lambda_d \mathcal{L}*{\mathrm{depth}} + \lambda_p \mathcal{L}*{\mathrm{pointmap}} + \lambda_c \mathcal{L}_{\mathrm{camera}} \]

12.1 深度损失

深度损失用于监督预测深度:

\[ \mathcal{L}_{\mathrm{depth}}= \sum_p w_p \left| \hat{D}(p)-D^{\mathrm{gt}}(p) \right| \]

其中:

  • \(\hat{D}(p)\):预测深度
  • \(D^{\mathrm{gt}}(p)\):真实深度
  • \(w_p\):像素置信度或有效性权重

此外,还可以加入深度梯度损失,以约束局部表面结构:

\[ \mathcal{L}_{\mathrm{grad}}= \left| \nabla \hat{D} - \nabla D^{\mathrm{gt}} \right| \]

12.2 Pointmap 损失

预测的局部 Pointmap 被变换到统一参考坐标系后,与真实 Pointmap 比较:

\[ \mathcal{L}_{\mathrm{pointmap}} = \sum_i \left| T_i\hat{P}_i - P_i^{\mathrm{gt}} \right| \]

该损失用于约束:

  • 稠密三维结构
  • 多帧几何一致性
  • 局部到全局坐标变换
  • 深度与位姿之间的一致性

12.3 相机位姿损失

位姿损失用于监督预测相机运动:

\[ \mathcal{L}_{\mathrm{camera}}= \rho \left( \left| \hat{T}_{ij} - T_{ij}^{\mathrm{gt}} \right| \right) \]

其中,\(\rho\) 通常采用 Huber 类鲁棒损失,以降低异常帧和错误对应关系的影响。


13. 与其他视觉 SLAM 方法比较

方法 前端 后端 地图表示 优化方式
ORB-SLAM3 ORB 特征和几何匹配 BA、位姿图优化 稀疏点云 显式几何优化
DROID-SLAM 神经光流和相关性体 Dense BA 深度与轨迹 可微显式 BA
DPVO 神经图像块跟踪 Patch BA 稀疏 Patch 图 可微显式优化
MASt3R-SLAM 预训练三维匹配 子图和全局优化 稠密 Pointmap 显式优化
VGGT-SLAM 基础模型预测子地图 子地图对齐 稠密子地图 显式变换优化
StreamVGGT 因果 Transformer 较弱或独立后端 神经状态和点图 主要依赖网络预测
SLAM-Former 因果 Transformer 同一网络的全局注意力 Map Tokens 和 Pointmap 隐式学习式优化

14. 与 DROID-SLAM 的区别

DROID-SLAM 的基本思路可以概括为:

\[ \text{神经网络预测稠密对应关系} + \text{Dense Bundle Adjustment} \]

SLAM-Former 的基本思路可以概括为:

\[ \text{Transformer 三维先验} + \text{全局注意力优化} \]

两者区别如下:

比较项 DROID-SLAM SLAM-Former
数据关联 稠密光流与相关性体 Transformer 注意力
位姿更新 Dense BA 网络直接预测和修正
几何约束 显式 隐式学习
地图表示 深度图和相机图结构 Map Tokens 和 Pointmap
回环处理 图结构或全局优化扩展 全局注意力隐式处理
相机模型 依赖投影和标定 可利用预训练三维先验
可解释性 较强 相对较弱
训练依赖 较高 更高
全局语义和三维先验 有限 较强

DROID-SLAM 更接近:

学习型数据关联与几何优化器的结合。

SLAM-Former 更接近:

学习型三维感知与学习型全局优化器的结合。


15. 方法优势

15.1 统一前端和后端

传统 SLAM 通常由多个独立模块构成:

  • 特征提取
  • 数据关联
  • 位姿估计
  • 关键帧管理
  • 回环检测
  • BA
  • 图优化
  • 地图融合

SLAM-Former 使用同一个 Transformer 统一这些功能,减少了手工设计模块之间的接口。

15.2 强三维先验

借助大规模三维数据预训练,模型能够学习:

  • 常见室内结构
  • 物体尺度
  • 表面连续性
  • 多视图对应关系
  • 弱纹理区域的深度先验

因此,在低纹理或特征点较少的区域中,SLAM-Former 可能比传统关键点方法更加稳定。

15.3 稠密地图输出

系统直接预测深度和 Pointmap,因此天然适合:

  • 稠密三维重建
  • AR/VR
  • 数字孪生
  • 室内空间建模
  • 机器人场景理解

15.4 后端结果可反馈给前端

传统 SLAM 的后端优化有时只修正最终地图,而 SLAM-Former 会更新 KV Cache,使后端修正结果直接影响后续跟踪。


16. 方法局限

16.1 全局注意力复杂度高

设关键帧数量为 \(K\),每帧 Token 数量为 \(N\),后端总 Token 数为:

\[ L = KN \]

标准全局注意力的时间和显存复杂度约为:

$$ O(L^2) ======

O((KN)^2) $$

随着关键帧数量增加,计算量和显存占用会快速增长。

因此,大规模长序列需要进一步采用:

  • 稀疏注意力
  • 局部窗口注意力
  • 分层地图
  • 子地图机制
  • Token 合并
  • KV Cache 剪枝

16.2 KV Cache 持续增长

在线前端需要保存历史关键帧的 KV Cache。

如果不进行裁剪:

  • 显存占用会持续增加
  • 每帧读取历史 Cache 的成本会增加
  • 长序列实时性会下降

如果进行过强裁剪,又可能损失:

  • 长距离数据关联
  • 回环信息
  • 全局地图一致性

16.3 缺少显式几何保证

传统 BA 明确最小化重投影误差,而 SLAM-Former 的优化行为来自训练。

因此不能严格保证:

  • 重投影误差一定下降
  • 输出满足多视图几何最优解
  • 位姿图达到局部极值
  • 不同相机模型都能稳定泛化
  • 极端运动下结果仍满足几何约束

16.4 对训练数据依赖较强

系统性能高度依赖:

  • 训练数据中的场景类型
  • 相机运动模式
  • 图像分辨率
  • 相机内参分布
  • 深度和位姿监督质量

在训练分布外场景中,可能出现:

  • 深度尺度偏差
  • 错误的结构先验
  • 动态物体干扰
  • 室外远距离结构退化

16.5 多传感器能力有限

SLAM-Former 主要面向单目 RGB。

相比成熟机器人 SLAM 系统,目前还缺少完善的:

  • IMU 融合
  • 双目约束
  • RGB-D 融合
  • 轮速计融合
  • GNSS 融合
  • 滚动快门建模
  • 时间同步
  • 在线重定位
  • 丢失恢复

17. 适用场景

SLAM-Former 更适合:

  • 单目 RGB 稠密 SLAM
  • 室内环境
  • 中短序列
  • 低纹理区域
  • 未知或变化相机参数
  • 稠密三维重建
  • 基础模型驱动的 SLAM 研究
  • Transformer 前后端一体化研究

目前相对不适合直接用于:

  • 城市级超长序列
  • 低功耗嵌入式平台
  • 严格实时的无人机控制
  • 高动态自动驾驶场景
  • 需要强安全保证的机器人系统
  • 大规模多传感器状态估计

18. 总结

SLAM-Former 可以概括为:

\[ \boxed{ \text{因果 Transformer 前端} + \text{全局 Transformer 后端} + \text{共享 Map Tokens 与 KV Cache} } \]

其核心特点包括:

  1. 使用因果注意力进行实时增量跟踪和建图。
  2. 使用全局注意力进行长期漂移和地图一致性修正。
  3. 前端和后端共享同一个 Transformer。
  4. 使用 Map Tokens 表示隐式地图状态。
  5. 后端修正后的 KV Cache 可以继续帮助前端。
  6. 不显式执行传统 Bundle Adjustment,而是学习类似优化行为。
  7. 能够同时输出相机轨迹、深度和稠密 Pointmap。

SLAM-Former 代表了一种新的视觉 SLAM 发展路线:

从“深度网络辅助传统几何 SLAM”,进一步走向“由大型三维 Transformer 统一执行跟踪、建图与全局优化”。

results matching ""

    No results matching ""