Scalix: Uncertainty-Aware Scale-Consistent Monocular SLAM
Sebastian Barbas Laina, Tianyi Zhang, Panagiotis Petropoulakis, Simon Schaefer, Simon Boche, Jaehyung Jung, Cedric Le Gentil, Stefan Leutenegger
cs.RO
2026-08-18
Scalix把单目深度模型的尺度当作可优化变量塞进因子图后端优化,KITTI轨迹误差比第二名低37%,室内室外均可实时运行。
单目相机做 SLAM(同时定位与建图)时有个先天缺陷:一张图片算不出真实世界的尺度(scale)。只用视觉,系统能重建出形状对但大小不对的轨迹和地图,乘以任意常数都成立。传统解法是加惯性测量单元(IMU)做视觉惯性 SLAM,但机器人做匀速直线运动时 IMU 也测不出尺度,这是移动机器人常见工况。近几年出现的单目深度基础模型(如 Metric3Dv2,能直接把单张图片估成米制深度的神经网络)理论上能补上尺度信息,但这类模型逐帧输出的深度图噪声大,不同帧之间尺度不一致,直接接入 SLAM 系统容易越走越飘。Scalix 要解决的是怎么把这种不太可靠但部分有用的深度先验,以数学上站得住的方式并入 SLAM 的状态估计。
核心思路是把网络输出的深度拆成两部分:metric depth(米制深度)= scale × unscaled depth(未定尺度的原始深度)。scale 是每帧一个的全局标量,建模成正态分布,均值 1、方差由网络自己学出来;unscaled depth 是逐像素的,同样建模成正态分布,带逐像素方差。原本混在一起的「哪个像素错了」和「整体差多少」被拆开处理。
为了让网络吐出这两种不确定性,作者在冻结的 Metric3Dv2 骨干上加了两个小头:一个出全局 scale 不确定性(卷积加池化加 MLP 压成一个标量),一个出逐像素深度不确定性(结构和原深度头一样)。训练时监督信号只有真实深度,两种不确定性要通过误差传播换算回统一的 metric depth 协方差矩阵。这个矩阵不是对角阵,因为同一帧内所有像素共享一个 scale,天然相关。直接对这个矩阵算负对数似然损失代价很高,作者用 Sherman-Morrison 公式把它化简成逐像素求和的封闭形式。
拿到两种不确定性后,Scalix 把 scale 当成一个可优化的状态变量,塞进 OKVIS2 那套经典因子图(factor graph,把位姿、路标点、约束都当节点和边的概率优化框架)后端里。每个关键帧除了位姿,还多一个 scale 状态。优化目标里有三类残差:reprojection error(2D 特征点重投影误差,传统 SLAM 标配)、depth error(3D 点反推深度和网络预测深度之间的差,受当前 scale 影响)、scale prior(把每帧 scale 拉向网络给出的先验值 1.0,权重就是学出来的不确定性)。为保证实时,旧关键帧会被边缘化(marginalization,把老状态折叠进简化约束以控制计算量)成一个位姿图,Scalix 在位姿图的边里专门加了一项相对 scale,尺度信息不会在边缘化时丢掉。
室外大场景 KITTI 数据集上,Sim(3)对齐(只对齐形状不管尺度)下平均 ATE(绝对轨迹误差)4.60米,比第二名 CUT3R 的 7.31米(排除失败序列后的平均)低 37%。能直接输出真实尺度的 SE(3)对齐下平均 ATE 7.19米,比同样用 Metric3D 做先验的 DROID-SLAM+Metric3D(12.07米)低 40%。开启完整 bundle adjustment 后进一步降到 3.87米和7.22米。室内 7-Scenes 数据集上 Sim(3) ATE 8.6厘米,比专为室内调优的 MASt3R-SLAM(4.7厘米)差一截,但后者在 KITTI 全部 11 条序列上都跟丢了,Scalix 是唯一室内室外都能跑通的方法。运行速度上,前端关键点匹配 20ms、深度网络推理 79ms(不是每帧触发)、路标初始化 5ms,后端优化 59ms,前后端并行跑,Intel i7-13700 CPU 加 RTX 3080 能实时运行。消融实验里,去掉 scale 优化后 KITTI 序列 01 的 ATE 从 10.72米恶化到 96.91米(Sim3)、575.58米(SE3),同一套深度不确定性,只是不让 scale 参与优化,结果差了一个数量级。
这篇论文没有造新的深度基础模型,拿的是现成的 Metric3Dv2,做的事是把「基础模型输出不可信」这个业界公认的痛点,转成概率图优化里一个显式的、带学习权重的变量。这个思路能移植到别的下游任务:凡是拿基础模型输出当先验、又要多帧融合的场景,都能借鉴这种不确定性建模加因子图的组合。这套系统在 CPU 上跑,深度网络只在部分关键帧触发,不依赖 GPU 做在线推理,对无人机、小型移动机器人这类算力受限的平台更现实。
论文承认室内场景的精度短板来自 Metric3Dv2 本身在室内数据上不够准,换更强的深度模型可能直接补上这个差距,这也说明 Scalix 的上限被底层深度模型锁死。scale 建模目前只有单一假设,遇到场景里同时存在多个合理尺度解释,比如强烈遮挡或大面积无纹理区域,论文提到未来要探索多尺度假设,说明当前版本还没处理这类情况。训练不确定性头只用了 ScanNet 和 Waymo 两个数据集,能否扩展到更多样的机器人平台和传感器噪声特性,论文没有验证。结论里提到室外整体提升 48%,和正文里 Sim3、SE3 分别 37%、40% 的数字口径不完全一致,论文没有解释这个 48% 具体怎么算出来的。