SLAM-Former 方法解析
1. 方法概述
SLAM-Former: Putting SLAM into One Transformer 是一种基于 Transformer 的单目稠密视觉 SLAM 方法。
它的核心思想是:
使用同一个 Transformer、同一套网络参数,同时完成在线 SLAM 前端和全局优化后端。
SLAM-Former 并不是简单地使用 Transformer 回归相邻图像之间的位姿,而是尝试将传统视觉 SLAM 中的多个模块统一到一个神经网络中,包括:
- 相机跟踪
- 关键帧选择
- 增量式建图
- 长距离数据关联
- 回环修正
- 全局位姿优化
- 稠密三维重建
2. 输入与输出
2.1 输入
系统输入为连续的单目 RGB 图像序列:
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\),其地图状态可以表示为:
这些 Token 隐式编码了:
- 当前关键帧的局部三维结构
- 相机运动信息
- 与历史帧之间的对应关系
- 深度信息
- 几何置信度
- 多帧全局上下文
网络通过预测头从 Map Tokens 中解码:
其中:
- \(\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\) 进行联合处理,预测二者之间的相对位姿:
当估计的相机运动超过设定阈值时,当前帧被选为新的关键帧。
概念流程如下:
新图像
↓
与最近关键帧联合输入网络
↓
预测相对位姿
↓
判断平移或运动幅度
↓
超过阈值 → 新关键帧
与传统 SLAM 不同,SLAM-Former 的关键帧判断主要来自网络预测的运动信息。
传统系统通常综合考虑:
- 特征点跟踪数量
- 共视关系
- 图像视差
- 时间间隔
- 相机位移
- 跟踪质量
6. 增量跟踪与建图
当当前图像被选为关键帧后,系统会利用完整的历史 KV Cache 进行处理:
其中:
- \(X_t\):当前图像的视觉 Token
- \(M_t\):当前关键帧的 Map Tokens
- \(F_t\):网络输出特征
- \(\mathcal{K}_{1:t-1}\):历史 Key Cache
- \(\mathcal{V}_{1:t-1}\):历史 Value Cache
当前关键帧生成的新 Cache 会追加到历史状态中:
这种机制类似大语言模型的自回归推理:
- 历史 Token 不需要重复计算
- 当前帧只计算新的 Query、Key 和 Value
- 历史场景信息通过 KV Cache 被持续复用
因此,SLAM-Former 可以进行增量式在线定位和建图。
7. 前端漂移问题
因果前端只能根据历史信息预测当前状态,不能主动修改过去已经输出的结果。
因此长时间运行后,位姿误差仍然会逐步积累:
可能产生的问题包括:
- 相机轨迹漂移
- 局部尺度不一致
- 同一墙面出现多层结构
- 地图表面发生错位
- 返回旧区域时不能正确闭环
- 历史错误持续影响新帧预测
因此,SLAM-Former 还设计了一个全局 Transformer 后端。
8. 后端:全局 Transformer
后端会周期性读取当前所有关键帧的 Map Tokens,并采用 Full Attention,即全局双向注意力 进行联合优化:
与因果前端不同,全局后端允许任意两个关键帧之间互相建立注意力关系:
即使两个关键帧在时间上相隔很远,只要它们观察到相同场景,网络就可能建立联系。
后端需要学习完成:
- 长距离数据关联
- 回环识别
- 位姿漂移修正
- 全局尺度调整
- 重叠地图融合
- 多帧深度一致性修正
- 三维结构全局优化
9. 与传统回环和图优化的区别
传统 SLAM 的全局优化通常包括以下步骤:
回环候选检索
↓
特征匹配与几何验证
↓
建立回环约束
↓
构建位姿图或因子图
↓
执行图优化或 Bundle Adjustment
SLAM-Former 不需要显式构建:
- 回环检测器
- 位姿图
- 因子图
- 重投影误差项
- Bundle Adjustment 求解器
它通过所有关键帧 Token 之间的全局注意力,隐式学习类似回环和全局优化的行为。
传统 Bundle Adjustment 通常显式求解:
其中:
- \(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:
随后,新帧使用修正后的 Cache 进行定位:
这意味着后端不仅修改过去的轨迹和地图,还会改善后续前端使用的参考地图。
其作用流程为:
前端产生历史地图
↓
后端修正历史漂移
↓
更新历史 Map Tokens 和 KV Cache
↓
前端使用修正后的地图处理新帧
因此,全局优化结果能够反向帮助后续在线跟踪。
10.2 前端帮助后端
前端为后端提供:
- 时序顺序
- 相邻关键帧关系
- 初始位姿
- 初始 Pointmap
- 初始深度
- 初始 Map Tokens
后端不是从无序图像中重新进行完整三维重建,而是在已有前端结果的基础上进行 Refinement。
这降低了全局后端的优化难度。
11. 三种训练模式
为了让同一个 Transformer 同时学会在线前端和全局后端,SLAM-Former 使用了三种训练模式。
11.1 Mode 1:纯前端训练
使用因果注意力进行增量式预测:
训练目标是让模型学会:
- 单目相机跟踪
- 增量深度预测
- 增量 Pointmap 生成
- 历史信息利用
- 在线地图更新
在初始化阶段,前两个关键帧之间可以使用双向注意力,后续关键帧再切换为因果注意力。
这样可以降低系统对第一帧作为唯一参考坐标系的依赖。
11.2 Mode 2:前后端协作训练
首先使用全局注意力更新历史 Map Tokens:
随后,当前新图像通过因果注意力读取已经修正的历史状态:
该训练模式模拟真实系统中的运行过程:
后端修正历史地图
↓
更新 KV Cache
↓
新帧到达
↓
前端基于修正后的历史地图进行跟踪
该模式主要训练前端与后端之间的 Cache Sharing 和状态共享能力。
11.3 Mode 3:纯后端训练
将来自不同时间或不同运行状态的 Map Tokens 输入全局 Transformer:
训练目标是消除:
- 位姿漂移
- 深度冲突
- 地图错位
- 多帧尺度不一致
- 长距离对应关系错误
三种模式共享相同的 Transformer 参数,因此实现了:
One Transformer for Frontend and Backend。
12. 损失函数
SLAM-Former 的总体损失可以表示为:
12.1 深度损失
深度损失用于监督预测深度:
其中:
- \(\hat{D}(p)\):预测深度
- \(D^{\mathrm{gt}}(p)\):真实深度
- \(w_p\):像素置信度或有效性权重
此外,还可以加入深度梯度损失,以约束局部表面结构:
12.2 Pointmap 损失
预测的局部 Pointmap 被变换到统一参考坐标系后,与真实 Pointmap 比较:
该损失用于约束:
- 稠密三维结构
- 多帧几何一致性
- 局部到全局坐标变换
- 深度与位姿之间的一致性
12.3 相机位姿损失
位姿损失用于监督预测相机运动:
其中,\(\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 的基本思路可以概括为:
SLAM-Former 的基本思路可以概括为:
两者区别如下:
| 比较项 | 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 数为:
标准全局注意力的时间和显存复杂度约为:
$$ 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 可以概括为:
其核心特点包括:
- 使用因果注意力进行实时增量跟踪和建图。
- 使用全局注意力进行长期漂移和地图一致性修正。
- 前端和后端共享同一个 Transformer。
- 使用 Map Tokens 表示隐式地图状态。
- 后端修正后的 KV Cache 可以继续帮助前端。
- 不显式执行传统 Bundle Adjustment,而是学习类似优化行为。
- 能够同时输出相机轨迹、深度和稠密 Pointmap。
SLAM-Former 代表了一种新的视觉 SLAM 发展路线:
从“深度网络辅助传统几何 SLAM”,进一步走向“由大型三维 Transformer 统一执行跟踪、建图与全局优化”。