ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

SLAM-Former:将视觉SLAM统一到Transformer的端到端新范式

SLAM-Former:将视觉SLAM统一到Transformer的端到端新范式 ECCV 2026 论文解读SLAM-Former——把 SLAM 收进一个 Transformer“把整个 SLAM 做进一个 Transformer”这种标题放在 ECCV 2026 的论文列表里辨识度相当高。它不打算在传统 SLAM 流程外面套一个 Transformer 模块而是想把特征匹配、深度估计、位姿图优化和束调整整件事都放进同一个 Transformer 框架里解决。这就把 SLAM 从“几何模型 后端优化”的话语体系直接换成了“token 变换”的话语体系。这篇文章不是简单翻译论文摘要而是站在工程和研究两个角度看清楚SLAM-Former 到底做了什么、它和传统视觉 SLAM 的区别在哪、如果你想复现或者跟进有什么值得提前留意的地方。整个分析基于论文标题和目前已公开的论文信息具体数值和实验细节以官方原文为准。1. 核心能力速览先给一张速览表快速定位这篇论文的几个关键信息。注意这里不是软件项目的功能清单而是论文研究维度的能力画像。维度说明论文标题SLAM-Former: Putting SLAM into One Transformer所属会议ECCV 2026研究方向视觉 SLAM / 端到端建图与定位核心主张将 SLAM 中的特征匹配、深度估计、位姿图优化、束调整统一到一个 Transformer 框架中设计模式稀疏 稠密双分支兼顾鲁棒位姿估计与稠密建图与传统 SLAM 差异不依赖显式分模块几何后端改用注意力机制统一表达匹配、深度和位姿优化显存需求暂未公布需等官方代码和评测环境开源状态以论文公开信息和后续开源情况为准技术门槛需要 Transformer、视觉 SLAM、多视图几何的基础适合读者研究视觉 SLAM、端到端学习、Transformer 应用的工程师和研究生从标题和摘要能确定的事情是这个工作想做“一个 Transformer 解决 SLAM”而不是“SLAM 流程里塞一个注意力模块”。这个定位本身就是一个很重要的研究信号。2. 为什么需要“一个 Transformer”来做 SLAM视觉 SLAM 的传统路线是模块化的。前端负责特征提取和帧间匹配初始化负责恢复相对位姿和三角化后端通过滑窗或位姿图做优化最后再进入建图和回环检测。这套体系最大的问题不是精度而是“难以端到端训练”。每一个模块都有自己的误差定义和优化目标。特征匹配追求可重复性位姿优化追求几何重投影误差最小建图模块追求表面重建质量。这些目标在数学上不一定完全一致。于是出现了很多专门设计的算法来弥合模块之间的裂缝比如 RANSAC 来剔除错误匹配鲁棒核函数来抑制异常值以及各种复杂度精简策略来保证实时性。深度学习进入 SLAM 之后很多工作并没有真正打破模块边界。它们做的事情更像是“用神经网络替换某一个环节”前端匹配用 CNN深度估计用单目网络后端优化仍然交给传统 BA。这样替换的效果是单点提升但整体流程仍然是拼装式的。SLAM-Former 的思路更激进把 SLAM 重新定义成一组 token 变换任务。图像帧进来之后先变成 token 表示特征匹配变成 token 之间的注意力交互深度估计变成 token 解码位姿优化变成 token 状态更新。整个系统变成一个大模型的前向过程。这个方向的吸引力在于所有子任务共享同一套特征表示。匹配结果可以直接引导深度注意力深度信息又可以反馈到位姿优化。在传统模块化 SLAM 中这些反馈通常需要人为设计接口而在统一 Transformer 中它们只是不同注意力层之间的信息流动。一旦训练收敛模型内部可能学习到我们没显式建模的很多几何规律。当然这也是风险所在。统一 Transformer 意味着更大的搜索空间和更高的训练难度。SLAM 本身是一个多变量强耦合问题把所有约束全部压到注意力机制里能不能在标准数据集上稳定收敛是需要实验证明的。3. 统一框架的核心从 SLAM 流程到 token 变换这一节从框架层面拆解“把 SLAM 放进一个 Transformer”到底是怎么实现的。3.1 图像帧如何变成 token图像进入系统后首先要变成 Transformer 能处理的 token 序列。常见的视觉 Transformer 方案是把图像切成交叠或非交叠的 patch然后加位置编码。SLAM 场景里还需要考虑多帧关联因此 token 不仅要包含单帧的空间信息还可能要携带帧间的时间信息。一个合理的做法是提取每帧的特征图然后把多帧特征通过可学习的编码器投影到同一 token 空间。这样后续无论做匹配、深度还是位姿更新操作的都是同一个表示空间里的向量。3.2 特征匹配变成注意力交互经典特征匹配要做描述子提取、最近邻搜索、交叉验证、RANSAC 剔除。在统一 Transformer 里匹配问题可以转化为对于两帧 token计算 query 和 key 的相似度矩阵注意力权重高的位置就是高置信匹配。这里的关键设计在于注意力矩阵本身就是软匹配关系。传统匹配是离散的“是/否”决策注意力机制输出的是连续的相似度分数。这个连续值既保留了匹配的置信度信息又天然可导可以直接参与端到端训练。配合掩码机制可以把低纹理区域和遮挡区域为缺乏区分度而带来的错误匹配抑制掉。3.3 深度估计变成 token 解码深度估计在传统 SLAM 中依赖三角化和多视图几何约束。单目深度估计则依赖网络先验。SLAM-Former 的思路可以理解为用注意力机制把匹配信息注入深度解码器帧间匹配出的对应关系告诉模型哪些区域是同一个物理点模型利用这个约束收敛深度输出。如果想进一步利用多帧约束可以把前几帧的深度 token 作为上下文让当前帧的深度解码器参考历史信息。这样既不是纯单目估计也不是传统立体匹配而是一种基于注意力上下文的自适应深度估计。3.4 位姿图和束调整变成状态更新位姿优化是传统 SLAM 的另一个核心模块。传统 BA 通过最小化重投影误差来同时更新相机位姿和路标点坐标需要求解大规模非线性最小二乘问题。在统一 Transformer 中位姿可以被视为全局 token深度和匹配结果作为上下文输入到位姿更新层。每一层通过注意力机制收集各帧和路标点对位姿的“意见”然后进行状态更新。这种设计把 BA 变成了一种学习到的迭代优化过程。模型的迭代次数、更新幅度、信息聚合方式都不是人工设定的而是从数据中学习出来的。这种方案的优势是它不再依赖某个具体的几何误差函数。模型可以自己发现新的约束关系比如纹理稀疏区域的弱约束、动态物体的权重衰减等。问题在于学习的优化过程很难保证收敛到几何意义上正确的解。这也是所有端到端 SLAM 方法面临的共同挑战。4. 稀疏与稠密双分支设计从论文公开信息看SLAM-Former 设计了稀疏和稠密两个分支。这个设计比较务实。稀疏分支面向的是鲁棒位姿估计和增量建图。它不关心逐像素重建只关注那些具有足够区分度的特征点。这些特征点配对之后通过注意力匹配估计帧间位姿再维护一个轻量级的地图结构。这个分支的优势是速度快、内存占用低适合实时定位和轨迹估计。稠密分支面向的是全分辨率建图。它需要每个像素的深度信息因此计算量显著增加。稠密分支可以利用稀疏分支已经计算好的匹配和位姿结果作为初始值再通过注意力上下文细化深度和地图表面。这种级联设计让模型在稀疏模式下保持了效率在需要详细地图的时候才切换到稠密模式。双分支设计的直接好处是它避免了“一个模型同时做速度和密度”的困境。之前的很多学习方法为了兼顾实时性和建图质量只能在分辨率、特征数量、网络深度之间做折中。双分支结构把两个需求拆开各用一套更合适的表示比单一模型硬吃两个任务要合理一些。5. 和现有视觉 SLAM 路线的定位差异把 SLAM-Former 放在整个视觉 SLAM 谱系里能更清楚地看到它的边界。技术路线典型优势典型局限SLAM-Former 的差异化传统几何 SLAM可解释性强成熟稳定精度基准高弱纹理、动态环境、极端光照下容易失败用注意力替代手工匹配和后端优化理论上对模糊环境更鲁棒特征学习 传统优化匹配精度提升复用成熟后端仍然是两套系统拼接难以全局优化匹配、深度、位姿共享同一 Transformer 表示端到端位姿回归网络结构简单前向速度快泛化差无法利用多视图几何强约束引入注意力匹配和迭代位姿更新几何约束更强NeRF / 3DGS 建图建图质量高新视角渲染效果好定位能力弱通常需要外部位姿输入同时维护位姿估计和密度建图而不只是重建SLAM-Former 真正想占据的位置是“端到端可训练 多视图几何可信”的结合点。它保留了几何方法用多帧约束来消除单目深度歧义的优点又用注意力机制把整个流程变成可微分的模型。6. 关键技术表达与损失设计思路目前官方代码还没公开这里基于论文标题做一个“关键技术框架”推演帮助理解它的实现路径。更准确的模块细节需要等代码和补充材料。6.1 注意力匹配与可学习最小二乘如果要把匹配输出转化为位姿一个常见做法是使用加权最小二乘。注意力矩阵提供了匹配权重权重可以进入最小二乘求解器中计算出帧间相对位姿的封闭解。为了让这个求解过程可导需要实现一个支持权重的可微最小二乘层。# 伪代码用匹配权重求解帧间位姿示意 # 实际实现需要根据论文给定的位姿参数化方式调整 import torch def weighted_least_squares_pose(src_points, dst_points, weights): src_points/dst_points: [N, 3] 匹配点对 weights: [N] 来自注意力模块的置信度 返回: 4x4 相对位姿估计 # 归一化权重避免数值不稳定 w weights / (weights.sum() 1e-8) # 计算加权质心 src_center (src_points * w.unsqueeze(1)).sum(dim0) dst_center (dst_points * w.unsqueeze(1)).sum(dim0) # 去中心化 src_aligned src_points - src_center dst_aligned dst_points - dst_center # 构造协方差矩阵并做 SVD 分解 cov (src_aligned * w.unsqueeze(1)).T dst_aligned u, _, vt torch.svd(cov) # 通过正交约束构造旋转和平移 r vt.T u.T if torch.det(r) 0: vt[-1, :] * -1 r vt.T u.T t dst_center - r src_center pose torch.eye(4, devicesrc_points.device) pose[:3, :3] r pose[:3, 3] t return pose这是一种比较通用的思路具体到论文的实现可能不是 SVD而是通过迭代方式最小化误差。但整体思路是一致的匹配模块给权重求解模块回归位姿然后整个链路参与反向传播。6.2 深度一致性约束深度估计如果只依赖单帧特征很容易出现尺度不确定性和边缘模糊。多视图深度一致性是一种常见的自监督约束同一物理点在多帧重投影后其深度值应保持一致。这个约束不需要真值深度只需要位姿和帧间对应关系。SLAM-Former 既然已经得到匹配和位姿构建这种一致性损失是非常自然的。# 伪代码多视图深度一致性损失示意 def depth_consistency_loss(depth_cur, depth_ref, pose_cur_to_ref, intrinsic): 将当前帧深度投影到参考帧再投影回来比较一致性。 # 当前帧像素网格 h, w depth_cur.shape[-2:] y, x torch.meshgrid( torch.arange(h, devicedepth_cur.device), torch.arange(w, devicedepth_cur.device), indexingij ) ones torch.ones_like(x) # 当前帧相机坐标系 x_cam (x - intrinsic[0, 2]) / intrinsic[0, 0] * depth_cur y_cam (y - intrinsic[1, 2]) / intrinsic[1, 1] * depth_cur z_cam depth_cur pts_cur torch.stack([x_cam, y_cam, z_cam, ones], dim-1) # [H, W, 4] # 变换到参考帧 pts_ref torch.einsum(ij,hwj-hwi, pose_cur_to_ref, pts_cur) pts_ref pts_ref[..., :3] / (pts_ref[..., 3:4] 1e-8) # 投影到参考帧像素坐标 u_ref intrinsic[0, 0] * pts_ref[..., 0] / (pts_ref[..., 2] 1e-8) intrinsic[0, 2] v_ref intrinsic[1, 1] * pts_ref[..., 1] / (pts_ref[..., 2] 1e-8) intrinsic[1, 2] # 经采样参考帧深度再重投影回来做一致性计算 # 这里省略双线性采样过程 depth_reprojected sample_depth(depth_ref, u_ref, v_ref) return torch.mean((depth_reprojected - depth_cur) ** 2)6.3 端到端联合训练的关键风险把匹配、深度、位姿放在同一个 Transformer 里训练最大的风险是“任务失衡”。位姿误差和深度误差不处于同一量纲直接相加会让大的损失项主导梯度。通常需要设置可学习的损失权重或者分阶段训练。比如先在前几层训练匹配和深度再打开后端位姿优化。具体到 SLAM-Former 的训练策略需要看实验章节是怎么消融的。7. 复现和部署的工程观察虽然这是一篇研究论文但很多读者关心的是代码开源之后怎么跑起来需要多少资源。7.1 数据准备视觉 SLAM 论文常见的数据集是 TUM RGB-D、ScanNet、KITTI、EuRoC 等。如果要做室内 RGB-D SLAMScanNet 和 TUM RGB-D 是最常见的评测组合。数据准备阶段通常需要做三件事解析相机内参、整理帧间位姿真值、生成训练和测试序列的索引。# 通用流程下载并解压数据集后检查文件结构 # 实际目录需要按官方仓库要求调整 wget https://example.com/dataset/scannet_sample.zip unzip scannet_sample.zip -d ./data/scanent ls ./data/scanent这里需要说明上面命令只是通用的数据集准备示意不能直接套用。7.2 训练资源评估思路Transformer 结构在视频帧上的注意力计算复杂度很高。如果输入是 N 帧、每帧 M 个 token那么两两交互的复杂度是 O(N²M²)。在视觉 SLAM 场景中N 和 M 都不会太小。因此实际复现时可能要做以下取舍先降低输入分辨率比如 320×240减少参与匹配的 token 数量比如只保留高响应特征区域增大帧间隔减少序列中的帧数使用梯度检查点技术降低显存占用从工程经验看如果论文代码并不刻意优化性能在 8G 显存上跑完整训练很紧张更现实的选择是 16G 以上的显卡。推理阶段如果只跑稀疏模式显存需求会明显下降。但这些都只是推测最终以官方 README 和环境要求为准。7.3 代码运行的通用验证流程对于研究代码拿到手之后不要立刻全量训练而是先跑通三个环节。第一步跑推理验证前向流程。# 先看官方是否提供预训练权重下载后跑一次前向 python demo.py \ --ckpt ./checkpoints/slamformer.pth \ --input_dir ./data/demo \ --output_dir ./outputs/trajectory第二步用单样本或最小批次跑过反向传播确认梯度没有问题。python train.py \ --config ./configs/mini_test.yaml \ --max_steps 20 \ --log_every 5第三步用一个小规模数据集复现论文中的某一项实验核对指标是否在同一量级。这里不要期待一次就完全一致研究代码经常有环境依赖和预处理细节的差异。7.4 显存和性能观察方法复现这类模型时建议提前准备好显存监控工具。最简单的做法是用nvidia-smi实时查看或者在训练循环里打印当前显存峰值。watch -n 1 nvidia-smi如果你用 Python 监控也可以直接读取 PyTorch 的显存接口import torch def print_memory(): print(fallocated: {torch.cuda.memory_allocated() / 1024**3:.2f} GB) print(freserved: {torch.cuda.memory_reserved() / 1024**3:.2f} GB)在跑长序列时重点关注两件事显存是否随帧数线性增长如果是说明模型没有做截断或窗口化长序列可能直接爆显存。推理耗时是否随匹配 token 数量超线性增长如果是说明注意力交互是主要瓶颈。这两个指标直接决定了这个模型能不能从论文走向实际工程。8. 常见问题与排查方法这里整理一些复现或跟进论文时常见的问题。因为官方代码还没开源这一节更像“预判清单”等代码发布后可以直接对照。问题现象可能原因排查方式解决方案训练时位姿不收敛损失权重失衡位姿项远大于深度项打印各项损失数值调整损失系数或使用可学习损失权重稠密建图出现大量空洞深度估计在弱纹理区域不稳定检查深度中间输出是否退化增加深度一致性损失权重或降低帧间距训练显存溢出输入帧数和 token 数过大监控显存增长曲线减少帧数、降低分辨率、使用梯度检查点匹配权重过于均匀注意力没有学到有效的特征对应关系可视化注意力矩阵更换预训练视觉主干或加大匹配监督稀疏模式很快但稠密模式极慢稠密分支没有复用稀疏阶段的粗位姿观察前向各阶段耗时先固定粗位姿再细化深度和表面不同数据集上泛化差训练数据分布单一用跨数据集指标做验证加入域随机化和多数据集混合训练如果你的目标是复现论文核心结果建议先做一组小规模消融实验把模型结构跑通再逐步提高分辨率、帧数和数据量。不要在第一次训练就追求完整复现。9. 研究和实验建议9.1 先验证哪个功能拿到模型后第一步应该验证的是“端到端匹配是否真的能支撑位姿回归”。也就是说先做一个两帧相对位姿估计实验检查注意力匹配加上可微位姿求解的误差有多少。如果两帧位姿估计都有问题后面所有的多帧优化和建图都不可靠。第二步再验证多帧一致性。连续输入一段小序列看模型能否保持轨迹平滑。此时重点检查是否有累计漂移以及回环出现时位姿是否会被拉回。第三步才轮到稠密建图质量。先看单帧深度图质量再看多帧融合后的全局一致性。9.2 数据划分和评测指标SLAM 实验的评测不能只看平均误差。建议至少记录这些指标全局位姿轨迹的 ATE 或 RPE运行时间和每帧耗时各类场景的失败率比如纹理稀疏、动态物体、纯旋转稠密重建的深度误差或 F-score不同数据的难易差异很大。同一个模型在室内场景和室外驾驶场景上的表现可能完全不同。建议在论文使用的数据集之外额外准备一个域外测试集用来判断通用性。9.3 工程化落地的现实距离如果目标是把它用在机器人或无人机项目里需要重点关注三件事。第一是否有稳定的输出频率。论文模型的推理速度如果无法达到传感器采集帧率就需要降频运行并谨慎处理结果。第二能否在中断后恢复运行。SLAM 系统经常需要在轨迹中断、地图丢失之后重新初始化统一 Transformer 有没有类似全球重定位的能力目前无法从标题判断。第三是否有足够的失败诊断能力。传统 SLAM 有明确的协方差、内点数和重投影误差这些可以帮助系统判断当前估计是否可信。Transformer 模型如果只输出一个轨迹没有不确定性估计工程集成会有难度。10. 总结SLAM-Former 的选题踩准了当前视觉 SLAM 研究的核心矛盾深度学习模型越来越强但端到端系统和传统几何 SLAM 之间始终隔着一道“可解释性 可优化性”的鸿沟。它把特征匹配、深度估计、位姿图和束调整重新定义成一组 token 变换确实是一个值得关注的研究方向。如果代码开源我会第一时间做这几件事先跑两帧相对位姿估计再跑一个短序列观察漂移最后看一眼它在弱纹理场景下的匹配注意力可视化。这三个结果基本能决定这个框架的实际价值。需要提醒的是目前这篇论文还没有公开完整的技术细节以上分析是基于标题信息和通用技术路线做的推演。论文的最终价值还得等代码发布和社区复现之后才能完全判断。建议关注这条路线的读者先把 Transformer 在位姿估计和多视图几何中的应用基础打好到时候复现起来会快很多。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进