神经隐式表示在SLAM中的演进:从TSDF-Fusion到NICE-SLAM
本教程将系统介绍神经隐式表示在实时SLAM(同步定位与地图构建)中的经典方法与最新进展。内容涵盖从传统TSDF-Fusion、DI-Fusion,到开创性的IMAP,再到大规模场景下表现优异的NICE-SLAM。通过对比各方法的原理、优势与局限性,帮助您理解这一领域的技术演进与核心设计思路。
一、经典方法的回顾:TSDF-Fusion 与 DI-Fusion
1.1 TSDF-Fusion:显式体素表达
TSDF-Fusion 是一种经典的显式场景表达方法,最早于1996年提出。其核心思想是在每个体素(voxel)中存储TSDF值(截断符号距离函数值),也可以存储颜色值。这些值存储在一个密集的三维网格中,网格的分辨率直接决定了几何的清晰程度。如果希望获得较好的结果(即不在TSDF步骤出现精度损失),通常需要 512×512×512 的网格数据量。
更新方式如图1所示,通过深度图(DS图)进行融合更新。

图1 TSDF更新方式
小提示: TSDF方法虽然经典且直观,但高分辨率下内存消耗极大。实际应用中需在精度与资源之间权衡。
1.2 DI-Fusion:隐式表达的早期尝试
DI-Fusion 是一种较新的方法,分为 Mapping(建图) 和 Tracking(跟踪) 两个部分。
- Mapping部分: 采用纯前向计算方式,不急于优化,而是预先训练好编码层和解码层。编码层输入体素范围内点的坐标和法线,编码后得到一个特征,再通过解码层得到该点的SDF值。如果有多张深度图输入,训练时已加入更新过程来更新特征。
- Tracking部分: 包含两个损失函数:
- 几何SDF损失: 最小化当前输入深度图按待优化相机外参反投到点云后对应的SDF值(该值理论上应接近0)。SDF值由特征通过解码层得到。
- 基于颜色的intensity warp损失: 当前帧图片按待优化相机外参warp到前一帧后,颜色应与前一帧相同。
常见问题: Q: DI-Fusion的Mapping为什么不需要在线优化?
A: 因为编码层和解码层已提前在大规模数据上训练完成,具有通用先验能力。在线运行时只需根据深度图更新特征,不需要重新优化整个网络。
二、IMAP:首个神经隐式表达的实时SLAM系统
2.1 动机与创新点
IMAP的目标是创建一个输入为RGB-D、仅用MLP作为场景唯一表达的实时SLAM系统。其主要创新点包括:
- 第一个使用神经隐式表达(Neural Implicit Representation)的稠密实时SLAM系统,能同时优化整个MLP表达的三维地图。
- 引入增强隐式神经网络训练的方法,包括关键帧选择和基于loss指导的采样策略。
- 并行实现,可直接连接RGB-D相机在线运行。
2.2 系统概述(System Overview)
如图2所示,系统分为上下两条线:上为Tracking,下为Mapping。

图2 IMF系统概述
- Tracking: 对每个新帧优化其相机位姿(tracked pose),然后判断该帧是否为关键帧(keyframe)。若是,则加入keyframe set。
- Mapping: 更新隐式表达和相机参数。使用单MLP结构,feature size为256,输出与NeRF一样的颜色(color)和体密度(volume density),可渲染深度图和彩色图。
关键计算:occupancy probability 通过类似激活函数的变换得到,进而计算光线到该点的截止概率,获得权重(类似加权平均)。将权重加在深度上可渲染深度图,加在颜色上可渲染颜色图。此外还计算 depth variance,即整条射线上深度的加权方差。
2.3 Joint optimization(联合优化)与 Camera Tracking
Joint optimization 用于Mapping,同时优化MLP的所有参数以及选中的关键帧相机外参。损失函数包括光度损失(photometric loss)和几何损失(geometric loss),两者通过平衡权重合并为目标函数:
minimize θ(MLP参数) + t_i(相机外参)的集合,使得总损失最小。
2.4 Keyframe Selection(关键帧选择)
每当已有新关键帧加载完成后,获取当前网络参数的备份(类似地图快照)。每新来一帧,从此快照中渲染部分像素的深度图,与真实深度图对比,计算已由lock区域表达的部分占比。若小于阈值,则说明该帧看到新区域,加入关键帧列表。
2.5 Active Sampling(主动采样)
- Image active sampling: 将待优化图片分成多个bin,先均匀采样并渲染,获得loss分布。若loss相差较大,则根据分布分配每个bin中的像素数量。
- Keyframe active sampling: 全局keyframe set中每次只选固定数量的帧(可通过某种机制或随机选取)加入Mapping。
2.6 实验结果
渲染结果与关键帧跟踪对比ground truth。与TSDF Fusion比较时(TSDF Fusion仅为Mapping方法,需预设相机位置),IMAP在准确性上优于TSDF Fusion(加粗表示最佳结果)。
小提示: IMAP使用单个大MLP作为场景唯一表达,在小房间内表现良好,但随着场景增大,MLP容量受限,会面临遗忘问题且优化变慢。
三、NICE-SLAM:面向大规模场景的分层特征网格方法
3.1 背景与动机
NICE-SLAM(CVPR 2022)针对IMAP的不足提出改进。给定手持相机捕获的RGB-D序列,NICE-SLAM可在大规模室内场景中生成密集几何和准确的相机跟踪。其核心组件是神经隐式表达——给定空间点p,训练网络表示该点的不同场景属性(如SDF、颜色值)。
IMAP使用单个大MLP存在三大问题:
- 容量有限: 场景变大时失败。
- 遗忘问题: 每个新RGB-D帧更新整个MLP,导致旧信息遗忘。
- 速度慢: 优化整个MLP耗时,尤其MLP变大时。
相比之下,NICE-SLAM采用 分层特征网格 表达,结合不同空间层级下预训练的微型MLP的归纳偏差,有效解决上述问题。
3.2 系统Pipeline(整体框架)

图3 NICE SLAM整体框架
给定RGB-D序列,NICE-SLAM同时估计相机位姿和场景三维几何(表示为分层特征网格)。步骤如下:
- 根据相机参数随机采样射线。
- 沿每条射线进行三维点采样,使用三线性插值提取每个点的特征。
- 使用微型MLP预测光线上的占用值(occupancy)和颜色值。
- 采用类似NeRF的体渲染方程沿射线积分,生成深度和彩色图像。
- 通过重渲染损失(输入与生成图像之间的差异)进行反向传播:优化分层特征网格实现Mapping,优化相机参数实现Tracking。
3.3 分层特征网格详解
- Coarse level: 分辨率较大的网格,单独输出occupancy,渲染粗粒度的深度图,仅用于未被观测到的几何部分,训练时使用观测到的深度图。
- Middle level: 中等分辨率的特征网格,从中提取特征并与点坐标一起经过MLP得到occupancy值。
- Fine level: 在中等分辨率基础上预测残差(residual),从更高分辨率网格获取特征,与中等分辨率结合,通过MLP得到fine level occupancy(两个occupancy叠加)。
- 颜色预测: 需要较高分辨率网格,从features grid提取特征,与点坐标经过MLP得到颜色值。
最终通过类似NeRF的渲染器得到深度图和彩色图。注意:几何MLP是局部更新的,只优化当前相机视锥内的特征。
3.4 实验结果与计算效率
- 在Replica数据集中,与复现的IMAP相比,NICE-SLAM在较小场景中也产生更准确的几何和相机跟踪。
- 在更难的ScanNet数据集上,相机跟踪比IMAP和DI-Fusion更稳健。
- 计算效率方面,如图4所示,NICE-SLAM仅需IMAP 1/4的FLOPs,且在大场景下FLOPs保持不变(因为只优化视锥内特征),而IMAP随着场景增大需要更多参数和FLOPs。

图4 计算复杂度对比
常见问题: Q: NICE-SLAM如何解决遗忘问题?
A: 通过分层特征网格,每个网格只存储局部信息,且微型MLP预训练后只优化网格特征,不全局更新网络参数。新帧只会影响当前相机视锥内的网格,旧区域不受影响。
四、未来工作方向
神经隐式表达在SLAM领域仍有广阔发展空间,以下是一些值得关注的方向:
- 加入闭环检测(Loop Closure): 在大场景中实现闭环是一个难点,但能显著提升全局一致性。
- 全局BA(Bundle Adjustment): 如何将全局光束法平差融入神经隐式SLAM,是一个有趣的研究点。
- 自适应体素分配: 根据场景复杂度动态分配网格分辨率,提升效率。
- 拓展到室外场景: 室外场景对传感器(如相机、LiDAR)有不同要求,需要新的适应性设计。
- 提升相机跟踪精度: 希望神经隐式方法的跟踪精度能达到甚至超越传统方法。
小提示: 未来工作涉及SLAM系统的许多经典模块与神经隐式表达的结合,是学术界和工业界的热点,值得持续关注。
编辑:黄飞
