K2E-B-G5-6 · Paper Note

GO-SLAM

Created 2024-03-31Updated 2026-06-08slam / papers / g-geometry-rendering / g5-nerf-slam

  • Description:GO-SLAM 论文笔记 — 全局优化神经隐式 SLAM:DROID 风格回环检测 + 全局 BA + Instant-NGP 隐式 SDF 建图,实现全局一致三维重建
  • My Notion Note ID:K2E-B-G5-6
  • Created:2024-03-31
  • Updated:2026-06-08
  • License转载欢迎:转载请注明作者 Yu Zhang 并附原文出处(yuzhang.io

Table of Contents


1. Summary

Title: GO-SLAM: Global Optimization for Consistent 3D Instant Reconstruction Authors: Y. Zhang, F. Tosi, S. Mattoccia, M. Poggi Paper: arXiv:2309.02436 (ICCV 2023) Github: youmi-zym/GO-SLAM

GO-SLAM (博洛尼亚大学, 2023):神经隐式 SLAM 的"全局优化"代表作。前作(iMAPNICE-SLAMVox-Fusion)均为纯增量系统,无回环 → 长轨迹漂移累积 → 地图不一致。GO-SLAM 在 DROID-SLAM 风格稠密 BA 的基础上引入回环检测 + 全局 BA,并让 Instant-NGP 隐式 SDF 地图在位姿全局更新后即时重对齐,实现全局一致重建。支持单目 / 双目 / RGB-D 三种输入,无需架构变更。

Replica 平均 ATE 0.34 cm (RGB-D) / 0.39 cm (单目),F-score 85.56%;TUM RGB-D ATE 平均 1.1 cm;EuRoC 11 序列平均 ATE 2.4 cm;整体 ~8 FPS (RTX 3090)。

GO-SLAM 三线程架构:前端跟踪 + 回环检测 / 后端全局 BA / 即时 SDF 建图

2. Key Contributions

  • 回环检测:基于关键帧间平均刚性光流衡量共视,阈值 τco=25\tau_{co}=25,检测长期闭合
  • 全局 BA:在整个关键帧图上做稠密 BA(非滑窗),把闭环误差均摊回全轨迹
  • 即时重对齐:全局 BA 更新历史位姿后,神经隐式 SDF 地图持续在线 fine-tune 跟随,保持几何-位姿一致
  • 多传感器统一架构:同一框架支持单目 / 双目 / RGB-D,核心算法不变
  • 全局关键帧选择策略:三路:最新/未建图帧 + 位姿变化 top-10(优先 BA 修正过的帧)+ 历史分层采样,兼顾局部稳定和全局覆盖

3. Method

3.1 三线程架构

线程 功能 频率
前端跟踪 RAFT 光流 → 局部稠密 BA → 关键帧图 → 回环检测 实时级
后端全局 BA 在整个关键帧图上全局稠密 BA,回环后触发 ~10 FPS
即时建图 Instant-NGP + 隐式 SDF,订阅最新全局位姿 → 即时重对齐 异步

3.2 前端跟踪与回环检测

前端沿用 DROID-SLAM 的做法,用 RAFT(Recurrent All-Pairs Field Transforms,一种用循环 GRU 对全像素对相关体迭代更新光流场的稠密光流网络)风格的循环更新算子计算帧间稠密光流,输出局部稠密 BA 的位姿 + 逐像素逆深度;同时维护关键帧图 (V,E)(\mathcal{V}, \mathcal{E}):顶点 V\mathcal{V} = 关键帧,边 E\mathcal{E} = 有共视/光流约束、参与联合 BA 的关键帧对。

回环检测:计算关键帧对之间的平均刚性光流 —— 把一帧像素按当前估计的逆深度 + 相对位姿"刚性"投影到另一帧,得到纯由相机运动诱导的像素位移场,对其求均值(区别于网络直接预测的光流,它只反映几何位移)。位移均值小 ⇒ 两帧视角接近、共视高。均值低于阈值 τco=25\tau_{co}=25(像素)的帧对为回环候选 → 需连续三帧候选才确认(防误检)→ 建边,纳入全局 BA 图。邻域抑制半径 rloop=Nlocal/2r_{loop} = N_{local}/2,避免同一位置重复建边。

3.3 后端全局 BA

完整关键帧历史图上执行稠密 BA(不只滑窗),cost function:

E(G,d)=(i,j)EpijΠc(GijΠc1(pi,di))Σ2E(G,d) = \sum_{(i,j)\in\mathcal{E}} \|p^*_{ij} - \Pi_c(G_{ij}\circ\Pi_c^{-1}(p_i, d_i))\|^2_\Sigma

pip_i 为源帧 ii 中的像素坐标(2D);pijp^*_{ij} 为该像素在目标帧 jj 中的对应坐标(由 RAFT 光流网络预测);GijG_{ij} 为关键帧 iji\to j 的相对位姿变换;Πc1(pi,di)\Pi_c^{-1}(p_i, d_i) 为反投影(像素坐标 + 逆深度 did_i → 3D 点);Πc()\Pi_c(\cdot) 为投影;Σ\Sigma 为 RAFT 输出的逐像素光流置信权重矩阵(不确定处权重低)。

阻尼 Gauss-Newton 联合优化所有关键帧位姿和每像素深度。回环触发后全局 BA 把闭环误差通过图均摊 → 消除长轨迹漂移。

3.4 即时隐式 SDF 建图

采用 Instant-NGP 多分辨率哈希编码(NeuS 风格 SDF 体渲染):

  • SDF 网络(单层 MLP,哈希编码输入):Φ(x),g=fΘsdf(x,hΘhash(x))\Phi(x),\, g = f_{\Theta_{sdf}}\bigl(x,\, h_{\Theta_{hash}}(x)\bigr),输出 SDF Φ(x)\Phi(x) + 几何特征 gghΘhashh_{\Theta_{hash}} 为多分辨率哈希编码)
  • 颜色网络(两层 MLP):Ω(x)=fΘcolor(x,n,g)\Omega(x) = f_{\Theta_{color}}(x,\, \mathbf{n},\, g),其中 n=Φ/Φ\mathbf{n} = \nabla\Phi/\|\nabla\Phi\| 为 SDF 梯度归一化得到的表面法向
  • 体渲染权重wi=αij<i(1αj)w_i = \alpha_i\prod_{j<i}(1-\alpha_j),透明度
αi=max ⁣(σ(Φ(xi))σ(Φ(xi+1))σ(Φ(xi)),  0)\alpha_i = \max\!\left(\frac{\sigma(\Phi(x_i)) - \sigma(\Phi(x_{i+1}))}{\sigma(\Phi(x_i))},\; 0\right)

(NeuS 无偏 SDF→密度,σ()\sigma(\cdot) 为 sigmoid)

采样:24 分层 + 48 重要性采样;截断距离 τtrunc=16\tau_{trunc}=16 cm;每次更新 M=200M=200 像素。

建图总损失:λcLc+λdepLdep+λeikLeik+λsdfLsdf\lambda_c\mathcal{L}_c + \lambda_{dep}\mathcal{L}_{dep} + \lambda_{eik}\mathcal{L}_{eik} + \lambda_{sdf}\mathcal{L}_{sdf}。其中两项关键非平凡式:

  • 深度损失(按 DBA 给出的逐像素方差 Varm\text{Var}_m 加权,非普通 L1):
Ldep=1MmDmD^mVarm\mathcal{L}_{dep} = \frac{1}{M}\sum_m \frac{|D_m - \hat{D}_m|}{\text{Var}_m}
  • SDF 损失近表面用 Φ(x)b(x)|\Phi(x) - b(x)|b(x)b(x) 为该点到观测深度的带符号距离),自由空间(远离表面)用指数惩罚:
Lfs=max ⁣(e5Φ(x)1,  Φ(x)b(x),  0)\mathcal{L}_{fs} = \max\!\bigl(e^{-5\Phi(x)} - 1,\; \Phi(x) - b(x),\; 0\bigr)

Lc\mathcal{L}_c = RGB L1,Leik\mathcal{L}_{eik} = Eikonal 正则)

3.5 地图在线重对齐

建图线程持续异步运行,每轮都拉取最新的全局位姿对 Instant-NGP 做在线 fine-tune(Adam 更新哈希表 + MLP),不等某一轮全局 BA 完成才触发——这正是"instant"的来源。于是全局 BA 一旦改了历史位姿,隐式 SDF 几何就随后续训练轮即时跟随,实现"全局 BA 改位姿 ↔ 隐式地图跟随"。这是 GO-SLAM 区别于纯增量神经 SLAM 的核心机制。

4. Experiments & Results

数据集

数据集 场景 评估
Replica 8 (合成室内) ATE + F-score + 重建质量
TUM RGB-D 3 序列 ATE
ScanNet 8 场景 ATE
EuRoC 11 双目序列 ATE

Replica 平均 (8 场景)

Method ATE (cm) ↓ F-score (%) ↑ Comp Ratio (%) ↑
iMAP* 18.34 79.06
NICE-SLAM 1.95 82.41
Vox-Fusion 0.54 92.86
GO-SLAM (RGB-D) 0.34 85.56 88.09
GO-SLAM (单目) 0.39

TUM RGB-D (ATE, m)

Sequence GO-SLAM
fr1/desk 0.015
fr2/xyz 0.006
fr3/office 0.013

ScanNet 跟踪 (ATE, cm)

DROID-SLAM NICE-SLAM GO-SLAM (单目) GO-SLAM (RGB-D)
8 场景平均 52.60 9.63 17.59 7.02

EuRoC (11 双目序列)

GO-SLAM 平均 ATE 2.4 cm,媲美传统双目 SLAM。

GO-SLAM 三维重建对比:全局 BA 保证场景一致性

5. Ablation & Discussion

回环 + 全局 BA 贡献 (ScanNet 8 场景):

配置 ATE (cm) FPS
无回环 + 无全局 BA ~11.59 ~30
+ 回环 (无全局 BA) ~8.83 ~20
+ 全局 BA (无回环) ~7.11 ~12
+ 回环 + 全局 BA (完整) 7.02 ~10

关键帧选择策略 (F-score):

策略 F-score (%)
只取最新帧 49.55
最新 2 + 历史分层采样 85.56

SDF 建图损失 (F-score):

损失 F-score (%)
仅 RGB 34.64
完整 SDF 损失 85.56
  • 回环 + 全局 BA 对长轨迹一致性贡献最大
  • 分层关键帧选择对重建质量影响巨大(49.55% → 85.56%)
  • SDF 近表面约束不可或缺

6. Strengths / Limitations / Future Work

Strengths

  • 神经隐式 SLAM 中首个做全局回环 + 全局 BA 的系统,长轨迹一致性大幅改善
  • 单目 / 双目 / RGB-D 统一框架,versatile
  • EuRoC 双目媲美传统 SLAM 精度,Replica RGB-D ATE 0.34 cm

Limitations

  • 建图线程持续异步 fine-tune SDF 地图(不等 BA 完成,但一直在训),计算成本高,整体仅 8 FPS
  • 大规模室外场景尚未验证;动态物体处理未讨论
  • 内存需求高 (RTX 3090 ~15.63 GB)

Future Work

  • 更高效的地图更新策略(避免全量重训)
  • 室外和动态场景扩展

References