摘要
神经隐式 SLAM 方法(如 NICE-SLAM、SplaTAM)精度出色但帧率通常不到 1 FPS,无法用于实时应用。Imperial College 的 ACE-SLAM 首次将**场景坐标回归(Scene Coordinate Regression, SCR)**作为核心地图表示,通过训练轻量 MLP 将 2D 图像特征直接映射到 3D 全局坐标,实现 29.7 FPS 严格实时运行 ,地图仅 ~1MB,且无需专用回环检测模块即可隐式处理回环闭合。
论文 :ACE-SLAM: Scene Coordinate Regression for Real-Time SLAM
代码 :github.com/ialzugaray/ace-slam(预告)
一、问题背景:神经隐式 SLAM 的实时性鸿沟
当前神经隐式 SLAM 有两大阵营:
| 阵营 | 代表 | 精度 | FPS | 地图大小 |
|---|---|---|---|---|
| 体积渲染 | NICE-SLAM, ESLAM, SplaTAM | 高 | 0.3~7 | 45~96 MB |
| 传统特征 | ORB-SLAM3 | 中 | 30+ | 小 |
矛盾:体积渲染方法需要逐帧做神经渲染优化(极慢),传统方法快但缺乏隐式表示的泛化和紧凑性。
ACE-SLAM 的思路完全不同:不做体积渲染,而是训练一个网络直接预测"这个像素对应全局坐标系的哪个 3D 点"------这就是场景坐标回归。预测出 2D-3D 对应后,用 RANSAC + Kabsch 算法直接闭式求解位姿,不需要迭代优化。
二、核心方法

图 1:ACE-SLAM 系统架构。上半部分为实时定位流程(特征提取→TriMLP 坐标回归→RANSAC 位姿求解),下半部分为在线地图更新循环(关键帧触发 SGD 更新网络权重),底部说明隐式回环闭合机制。重绘自 design skill
2.1 系统流水线
三步走:
- 特征提取 :预训练冻结的特征提取器(ACE 密集特征或 SuperPoint 稀疏特征)从 RGB 帧提取特征 f i t f_i^t fit
- 场景坐标回归 :SCR 网络 M M M 将特征映射为全局 3D 坐标 y ^ i = M ( f i t ) \hat{y}_i = M(f_i^t) y^i=M(fit)
- 位姿估计:RANSAC 采样 triplet → Kabsch-Umeyama 闭式求解 → 内点精化
回归损失函数:
L y ( M , P ) = ∑ P t ∈ P ∑ f i t ∈ F t ∥ M ( f i t ) − P t ⋅ y i t ∥ 2 \mathcal{L}y(M, P) = \sum{P^t \in \mathcal{P}} \sum_{f_i^t \in \mathcal{F}^t} \|M(f_i^t) - P^t \cdot y_i^t\|^2 Ly(M,P)=Pt∈P∑fit∈Ft∑∥M(fit)−Pt⋅yit∥2
其中 M M M 是 SCR 网络, P t P^t Pt 是相机位姿, y i t y_i^t yit 是由深度图反投影得到的局部 3D 点经位姿变换后的全局坐标。网络通过最小化预测坐标与观测坐标之间的 L2 距离来在线学习场景几何。
2.2 TriMLP:三正交平面坐标回归
这是 ACE-SLAM 的架构创新。传统 HomMLP 直接回归 3D 坐标 ( x , y , z ) (x,y,z) (x,y,z)------这是一个高维连续回归问题,在大场景中容易混淆。
TriMLP 的核心思想 :将 3D 坐标回归分解为三个正交 2D 平面上的分类问题(XY、XZ、YZ 平面),每个平面独立做 softmax 投票,最终坐标由三个平面预测的加权平均组合得到:
y ~ i = x \~ i , y \~ i , z \~ i ⊤ \tilde{y}_i = \\tilde{x}_i,\\; \\tilde{y}_i,\\; \\tilde{z}_i^\top y~i=x\~i,y\~i,z\~i⊤
每个坐标分量由对应两个平面的预测取均值( x x x 来自 XY 和 XZ 平面,以此类推)。
这种分解提供了更强的归纳偏置:
- 把连续回归变成离散分类 → 优化更稳定
- 三平面冗余约束 → 单平面预测错误可被其他平面纠正
- 适合在线学习 → 新区域可独立更新对应平面的权重
2.3 位姿估计:RANSAC + Kabsch
从 SCR 预测的 2D-3D 对应中:
- 随机采样 triplet(3 个点对),用 Kabsch-Umeyama 算法闭式求解 SE(3) 位姿假设
- 生成最多 H H H 个假设,选择内点比例 λ t \lambda^t λt 最高的假设
- 仅用内点重新精化位姿
内点阈值 τ \tau τ 决定了匹配严格程度。 λ t \lambda^t λt 同时用于评估跟踪质量------低 λ t \lambda^t λt 意味着地图对当前帧的覆盖不足,触发关键帧添加。
2.4 隐式回环闭合
这是 ACE-SLAM 最优雅的设计:不需要专门的回环检测和位姿图优化。
原理:SCR 网络在整个序列上持续训练,旧区域的特征-坐标映射自然保持在网络权重中。当机器人重访某区域时,网络仍能正确预测该区域的全局坐标 → RANSAC 自动给出与全局一致的位姿 → 回环隐式闭合。
这种设计避免了传统方法中回环检测器失败导致的灾难性漂移修正。
2.5 关键帧与地图更新策略
- 时间阈值 σ ˉ \bar{\sigma} σˉ:每隔固定时间强制添加关键帧,保证场景覆盖
- 内点比例阈值 λ ˉ \bar{\lambda} λˉ :当 λ t < λ ˉ \lambda^t < \bar{\lambda} λt<λˉ 时添加关键帧(地图对当前帧不熟悉)
- 优化窗口采样:概率性偏向低置信度帧,平衡全局覆盖与薄弱区域加强
#mermaid-svg-pAnoNGvY2ZMdWmtv{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-pAnoNGvY2ZMdWmtv .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-pAnoNGvY2ZMdWmtv .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-pAnoNGvY2ZMdWmtv .error-icon{fill:#552222;}#mermaid-svg-pAnoNGvY2ZMdWmtv .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-pAnoNGvY2ZMdWmtv .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-pAnoNGvY2ZMdWmtv .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-pAnoNGvY2ZMdWmtv .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-pAnoNGvY2ZMdWmtv .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-pAnoNGvY2ZMdWmtv .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-pAnoNGvY2ZMdWmtv .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-pAnoNGvY2ZMdWmtv .marker{fill:#333333;stroke:#333333;}#mermaid-svg-pAnoNGvY2ZMdWmtv .marker.cross{stroke:#333333;}#mermaid-svg-pAnoNGvY2ZMdWmtv svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-pAnoNGvY2ZMdWmtv p{margin:0;}#mermaid-svg-pAnoNGvY2ZMdWmtv .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-pAnoNGvY2ZMdWmtv .cluster-label text{fill:#333;}#mermaid-svg-pAnoNGvY2ZMdWmtv .cluster-label span{color:#333;}#mermaid-svg-pAnoNGvY2ZMdWmtv .cluster-label span p{background-color:transparent;}#mermaid-svg-pAnoNGvY2ZMdWmtv .label text,#mermaid-svg-pAnoNGvY2ZMdWmtv span{fill:#333;color:#333;}#mermaid-svg-pAnoNGvY2ZMdWmtv .node rect,#mermaid-svg-pAnoNGvY2ZMdWmtv .node circle,#mermaid-svg-pAnoNGvY2ZMdWmtv .node ellipse,#mermaid-svg-pAnoNGvY2ZMdWmtv .node polygon,#mermaid-svg-pAnoNGvY2ZMdWmtv .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-pAnoNGvY2ZMdWmtv .rough-node .label text,#mermaid-svg-pAnoNGvY2ZMdWmtv .node .label text,#mermaid-svg-pAnoNGvY2ZMdWmtv .image-shape .label,#mermaid-svg-pAnoNGvY2ZMdWmtv .icon-shape .label{text-anchor:middle;}#mermaid-svg-pAnoNGvY2ZMdWmtv .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-pAnoNGvY2ZMdWmtv .rough-node .label,#mermaid-svg-pAnoNGvY2ZMdWmtv .node .label,#mermaid-svg-pAnoNGvY2ZMdWmtv .image-shape .label,#mermaid-svg-pAnoNGvY2ZMdWmtv .icon-shape .label{text-align:center;}#mermaid-svg-pAnoNGvY2ZMdWmtv .node.clickable{cursor:pointer;}#mermaid-svg-pAnoNGvY2ZMdWmtv .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-pAnoNGvY2ZMdWmtv .arrowheadPath{fill:#333333;}#mermaid-svg-pAnoNGvY2ZMdWmtv .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-pAnoNGvY2ZMdWmtv .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-pAnoNGvY2ZMdWmtv .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-pAnoNGvY2ZMdWmtv .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-pAnoNGvY2ZMdWmtv .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-pAnoNGvY2ZMdWmtv .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-pAnoNGvY2ZMdWmtv .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-pAnoNGvY2ZMdWmtv .cluster text{fill:#333;}#mermaid-svg-pAnoNGvY2ZMdWmtv .cluster span{color:#333;}#mermaid-svg-pAnoNGvY2ZMdWmtv div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-pAnoNGvY2ZMdWmtv .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-pAnoNGvY2ZMdWmtv rect.text{fill:none;stroke-width:0;}#mermaid-svg-pAnoNGvY2ZMdWmtv .icon-shape,#mermaid-svg-pAnoNGvY2ZMdWmtv .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-pAnoNGvY2ZMdWmtv .icon-shape p,#mermaid-svg-pAnoNGvY2ZMdWmtv .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-pAnoNGvY2ZMdWmtv .icon-shape .label rect,#mermaid-svg-pAnoNGvY2ZMdWmtv .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-pAnoNGvY2ZMdWmtv .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-pAnoNGvY2ZMdWmtv .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-pAnoNGvY2ZMdWmtv :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 是
否
是
否
RGB-D 帧到达
冻结特征提取器
ACE/SuperPoint
TriMLP 场景坐标回归
features → 3D coords
RANSAC + Kabsch
闭式位姿求解
内点比例 λ > λ̄?
输出位姿
继续下一帧
添加关键帧
更新 SCR 网络
重访区域?
SCR 自动预测全局坐标
隐式回环闭合
三、实验分析
3.1 静态场景精度
| 方法 | Replica (m) | TUM (m) | ScanNet (m) | FPS | 地图大小 |
|---|---|---|---|---|---|
| NICE-SLAM | 0.016 | 0.030 | 0.056 | 0.33 | 95.86 MB |
| ESLAM | 0.006 | 0.025 | 0.057 | 7.35 | 45.46 MB |
| ACE-SLAM | 0.034 | 0.053 | 0.212 | 29.7 | 1.11 MB |
精度上 ACE-SLAM 不如体积渲染方法,但换来的是:
- 速度快 90×(29.7 vs 0.33 FPS)
- 地图小 86×(1.11 vs 95.86 MB)
- 首个达到 99% 实时率的神经隐式 SLAM
3.2 动态场景鲁棒性
| 序列 | ACE-SLAM (m) | 说明 |
|---|---|---|
| fr3/s/xyz | 0.037 | 小物体运动 |
| fr3/s/static | 0.007 | 静态参考 |
| fr3/w/xyz | 0.072 | 大面积运动 |
ACE-SLAM 在动态场景中无需语义分割或动态物体检测------SCR 网络通过多帧训练自然"忽略"不一致的动态区域。
3.3 TriMLP vs HomMLP 消融
| 数据集 | TriMLP (m) | HomMLP (m) | 提升 |
|---|---|---|---|
| Replica Avg | 0.034 | 0.046 | -26% |
| TUM Avg | 0.053 | 0.056 | -5% |
| ScanNet Avg | 0.212 | 0.254 | -17% |
TriMLP 在大型复杂场景(Replica、ScanNet)上优势显著------三平面分解的归纳偏置在空间跨度大时特别有效。
3.4 运行时分解
| 配置 | 定位速度 | FPS | RT-Factor |
|---|---|---|---|
| ACE 密集特征 | 11 ms | 93 FPS (定位) | 99.0% |
| SuperPoint 稀疏 | 13 ms | 76 FPS (定位) | 99.0% |
端到端 FPS 29.7 是因为包含了地图更新的 SGD 步骤------但系统通过跳帧策略保证时间对齐,实时率 99%。
小结
ACE-SLAM 重新定义了"实时"在神经隐式 SLAM 中的含义。它的核心决策是放弃体积渲染换取速度------用 SCR 网络直接回归坐标,用 RANSAC 直接求位姿,不做任何迭代渲染优化。
三个设计亮点:
- TriMLP 三平面分解:把 3D 回归变成 2D 分类,优化更稳定,归纳偏置更强,大场景下精度提升 26%
- 隐式回环:SCR 网络的权重本身就是"记忆",重访时自动给出全局一致坐标,不需要回环检测器
- 极致紧凑:整个场景地图仅 1MB------比 NICE-SLAM 小 86 倍,可以在资源受限设备上部署
权衡也很明确:精度不如体积渲染方法(ATE 差 2-4×),因为 SCR 本质上是做回归近似而非精确几何建模。但对于"实时性优先、存储受限"的场景(如无人机、AR 眼镜),这个 tradeoff 是合理的。
这篇工作证明了一个反直觉的结论:你不需要渲染就能做神经 SLAM。场景坐标回归是一条被低估的路线------快、轻、天然抗动态,只是精度还需要追赶。
参考文献:I. Alzugaray, M. Taher, A. J. Davison, "ACE-SLAM: Scene Coordinate Regression for Real-Time SLAM," arXiv:2512.14032, 2025.