NICE-SLAM: Neural Implicit Scalable Encoding
现有的神经隐式表征方法会产生过度平滑的场景重建,并且难以扩展到大型场景。这些局限性主要是由于其简单的全连接网络架构没有将局部信息纳入观测。NICE-SLAM通过引入分层场景表示法,纳入了多层次的局部信息。利用预训练的几何先验优化该表示,可实现大型室内场景的重建。
一、简介
传统的适用于构建稠密图的视觉 SLAM,无法对未观察到的区域进行估计。另一类基于学习的方法通常是在特定任务的数据集上进行训练,因此能达到一定的预测能力。此外,基于学习的方法往往能更好地处理噪声和异常值,但是只适用于有几个物体的小场景。
iMAP 应用了神经隐式表征,在房间大小的数据集上显示了不错的跟踪和建图结果。但是当扩展到更大的场景(如由多个房间组成的公寓)时,稠密图重建和相机跟踪精度都出现了明显的性能下降。其限制在于只用了一个 MLP 来表示场景,且只能根据新的局部数据进行全局更新。
Convolutional occupancy networks 和 Neuralrecon 这两个工作提出建立多层 grid-based 特征有助于保留几何细节,但这些都是离线的。这种表征是可以 local update 的,从而适用于大场景。
NICE-SLAM 将分层场景表征和神经隐式表征两者的优点结合起来,用分层 feature girds 来表示场景,并且结合神经隐式 decoder (在多分辨率下预训练)的归纳偏置。利用 occupancy decoder 和 color decoder 输出的深度和颜色,能够以减少重渲染 loss 的方式,在视角范围内优化 feature grids。
二、相关
Dense Visual SLAM
地图表征可以分为 view-centric 和 world-centric,第一种方法是将 3D 几何图形固定到特定的关键帧上,在稠密图中通常表现为深度图;第二种方法将 3D 几何图形固定在统一的世界坐标上,并可进一步划分为 surfel 和 voxel grid,通常存储 occupancy 或 TSDF。
NICE-SLAM 采用 voxel grid,存储几何图形的隐式编码信息,并在建图过程中直接对其进行优化。这使得在较低的网格分辨率下获得更精确的几何图形。
Neural Implicit Representations
iMAP 局限于单个 MLP 的容量有限,NICE-SLAM是其扩展方案。
三、方法
3.1. Hierarchical Scene Representation
分层场景表示法将多级网格特征与预训练解码器相结合,用于 occupancy 预测。几何图形被编码入三个特征网格 ϕ 及其相应的 MLP 解码器 f,其中 l ∈ {0, 1, 2} 表示粗、中、细三级场景细节。此外还有一个特征网格 ψ 和解码器 g 来建立场景外观,即颜色。
Mid-&Fine-level Geometric Representation
观测到的场景几何图形由中、细特征网格表示。在重建过程中,首先通过优化中层特征网格来重建几何图形,然后再使用精细网格进行细化。 在实现过程中,使用边长分别为 32cm 和 16cm 的 voxel grid,在 TUM RGBD 中,使用了 16cm 和 8cm 的网格。对于中层,使用相关的 MLP f1 将特征直接解码为 occupancy 值。 对于任意 3D 点 p ,我们得到的 occupancy 为:
其中,ϕ§表示特征网格在点 p 处进行了三线性插值。相对较低的分辨率使得能够有效优化网格特征,以适应观测结果。为了捕捉场景几何中较小的高频细节,以残差的方式添加了精细特征。具体来说,细粒度特征解码器将相应的中层特征和细粒度特征作为输入,并输出中层 occupancy 的偏移量,即
在整个优化过程中固定了预训练的解码器 f1 和 f2,只优化特征网格 ϕ1 和 ϕ2。这有助于稳定优化并学习一致的几何形状。
Coarse-level Geometric Representation
粗级特征网格旨在捕捉场景中如墙壁、地板等图形,并独立于中、细网格进行优化。粗网格的目标是能够预测未观察到的 occupancy,这使得在大部分图像未观察到时也能进行追踪相机位姿。实现时的边长为 2m。与中层网格类似,直接解码为 occupancy,即
Pre-training Feature Decoders
粗解码器和中解码器作为 ConvONet 的一部分预先训练。训练完成后,只使用解码器 MLP,这样预训练的解码器在解码优化的特征时,就能利用从训练集中学到的特定分辨率先验。
Color Representation
为了对场景中的颜色进行编码,使用了另外的特征网格 ψ 和解码器 g:
与具有强大先验的几何图形不同,联合优化颜色特征 ψ 和解码器 g 可以提高跟踪性能。与 iMAP 类似,这可能会导致遗忘问题,而且颜色只在局部保持一致。如果我们想将整个场景的颜色可视化,可以将其作为后处理步骤进行全局优化。
Network Design
对于所有 MLP 解码器,使用 32 的隐藏特征维度和 5 个全连接层。除了粗略的几何表征外,对 p 采用可学习的高斯位置编码,然后将其作为 MLP 解码器的输入。这样可以发现几何和外观的高频细节。
3.2. Depth and Color Rendering
给定相机内参和当前位姿后,我们可以计算出像素坐标的观察方向 r。首先沿着这条射线抽取 Nstrat 个点进行分层抽样,然后再均匀地抽取靠近深度的 Nimp 个点(根据经验将采样间隔定义为 ±0.05D,其中 D 是当前射线的深度值)。对每条射线总共取样 N = Nstrat + Nimp 个点。更具体地说,让 pi = o + dir, i∈ {1, - - , N} 表示给定相机原点 o 的射线 r 上的采样点,di 对应于 pi 在这条射线上的深度值。将 p 点的射线终止概率建模为:粗级为 wc ,细级为 wf 。
最后,每条射线在粗级和细级的深度以及颜色都可以渲染为:
3.3. Mapping and Tracking
Mapping
为了优化场景表示,从当前帧和选定的关键帧中均匀采样总共 M 个像素,分阶段进行优化,以尽量减少几何损失和光度损失。
几何损失指的是观测深度与粗或细预测深度之间的 L1 损失:
光度损失也是 M 个采样像素的渲染值和观测值之间的 L1 损失:
在第一阶段,使用公式 (8) 中的几何损耗 l = f 优化中层特征网格。接下来,联合优化中层和细层的 ϕ1 、ϕ2 特征,使用相同的细层深度损失 l = f。最后,进行局部 BA,以共同优化各级特征网格、色彩解码器以及 K 个选定关键帧的相机外参 {Ri,ti}:
多阶段优化方案能带来更好的收敛性,因为更高分辨率的外观和精细级特征可以依赖于中级特征网格中已经细化的几何图形。 实现时将系统并行化为三个线程,以加快优化过程:一个线程用于粗级映射,一个线程用于中级和细级几何和色彩优化,另一个线程用于相机跟踪。
Camera Tracking
除了优化场景表示之外,还并行运行相机追踪,以优化当前帧的位姿,即旋转和平移 {R, t}。为此,我们对当前帧中的 Mt 个像素进行采样,修改后的几何损失:
修改后的损失会降低某些区域的权重,例如物体边缘。
Robustness to Dynamic Objects
为了使优化对追踪过程中的动态物体更加稳健,过滤了深度/颜色重渲染损失较大的像素。具体来说,会从优化中剔除损失公式(12)大于当前帧中所有像素损失中值 10 倍的任何像素。但只实现了在建图过程中优化场景表示。要联合优化相机位姿和场景是一个研究方向。
3.4. Keyframe Selection
与 iMAP 类似,维护一个全局关键帧列表,并根据信息增益逐步添加新的关键帧。与 iMAP 不同的是,在优化场景几何时,我们只包含与当前帧有视觉重叠的关键帧。之所以能做到这一点,是因为能对基于网格的表征进行局部更新,而且不会出现与 iMAP 相同的遗忘问题。
这种关键帧选择策略不仅能确保当前视图之外的几何图形保持静态,还能带来非常高效的优化。在实际操作中,首先随机采样像素,并使用优化后的相机位姿反向投影相应的深度。然后,将点云投影到每个关键帧。从这些有点投影到的关键帧中,我们随机选择 K - 2 个帧。此外,将最近的关键帧和当前帧纳入场景优化中,从而形成总共 K 个活动帧。
4.Experiments
metrics:对于2D,从重建网格和gt网格中随机抽取 1000 张深度图来评估 L1 损失。对于 3D,考虑Accuracy [cm], Completion [cm], Completion Ratio [< 5cm%]。删除了不在任何摄像头内的未见区域。相机跟踪使用 ATE RMSE。
由于 iMAP 使用了单个 MLP,MLP 的容量限制可能需要更多参数,从而导致 FLOPs 增加。
使用多个浅层 MLP 解码器的特征网格比使用单个深层 MLP 更有优势。
iMAP 从整个场景中选择关键帧。这对 iMAP 来说是必要的,可以防止他们的简单 MLP 遗忘之前的图形。不过,这也会导致收敛缓慢和跟踪不准确。
五、Conclusion
预测能力受限于粗表示的规模。此外,我们的方法没有回环检测。最后,虽然传统方法缺乏某些特征,但与基于学习的方法相比,我们的方法在性能上仍有差距,需要加以弥补。
一些细节见补充材料。