0. 简介

对于现在的VSLAM而言,现在越来越多的工作开始聚焦于如何将深度学习结合到VSLAM当中,而最近的这个工作就给出了一个比较合适的方法。《Orbeez-SLAM: A Real-time Monocular Visual SLAM with ORB Features and NeRF-realized Mapping》这篇文章,可以轻松适应新的场景,而不需要预先训练,并实时为下游任务生成密集的地图。它成功地与隐式神经表示法(NERF)和视觉里程法相结合,实现了只需要RGB输入即可完成通过视觉信号执行复杂任务并与人类合作的空间人工智能。

1. 主要贡献

本文试图开发一种单目视觉SLAM,它无需预训练,并实现实时推理,以供实际应用。为此,我们提出了Orbeez-SLAM,结合了基于特征的SLAM(例如,ORB-SLAM2[1])和基于instant-ngp框架[7]的NeRF。与[5]、[6]不同的是,我们强调VO(在ORB-SLAM2中)即使在训练的早期阶段也可以提供更好的摄像机姿态估计,这使得orbez - slam可以在单目摄像机上工作,即无需深度监督。此外,我们同时通过VO估计相机姿态并更新NeRF网络。值得注意的是,训练过程是在线实时的,不需要预先训练,如图1所示。因此,OrbeezSLAM可以渲染密集的信息,如场景的深度和颜色。此外,在各种室内场景中进行了验证,并在速度、摄像机跟踪和重建方面优于NeRF-SLAM基线。综上所述,我们的贡献有三:

  1. 我们提出了Orbeez-SLAM,这是第一个实时单目视觉SLAM,它无需预训练,提供密集的地图,专为空间人工智能应用而定制。
  2. 通过结合视觉里程计和快速NERF框架,我们的方法实现了实时推理,并生成了密集的地图。
  3. 我们广泛验证Orbeez-SLAM在挑战性基准方面具有最先进水平(SOTA)的基线,显示出卓越的定量和定性结果。

2. 详细内容

为了计算密集地图,最近一种基于学习的可视化SLAM, Tandem[3],利用截断符号距离函数(TSDF)融合来提供密集的3D地图。如[3]中所述,Tandem实现了实时推断,并可以与单目摄像机一起工作。但是,TSDF融合中涉及深度估计,而Tandem中的深度估计模块在推理前需要进行预训练,这限制了其对与预训练场景有明显不同的新场景的适应性。

神经辐射场(Neural Radiance Field, NeRF)[4]是另一种隐式神经表示,在训练过程中不需要深度监督,可以在目标场景从头开始训练。基于这一特性,在可视化SLAM中使用NeRF作为映射是一个潜在的方向。两个最新的NeRF-SLAM[5],[6]呼应了我们的动机。其中,iMAP[5]是第一个在SLAM中让NeRF作为地图表示的作品。同时,它通过NeRF光度损失的反向传播来优化相机姿态。然后,NICE-SLAM[6]对iMAP进行了扩展,开发了分层特征网格模块。该模块允许NICE-SLAM针对大型场景进行扩展,而不会出现灾难性的遗忘。然而,上述NeRF-SLAM需要RGB-D输入,因为它们纯粹通过神经网络优化相机姿态,而没有视觉里程计(VO),导致初始定位不佳。换句话说,他们仍然需要深度信息来指导三维几何。此外,NeRF的一个显著缺点是收敛速度较慢。具体来说,在进程中有大量的渲染,这使得实时训练NeRF举步维艰。通过观察这一点,instant-ngp[7]补偿了训练速度问题。在多分辨率哈希编码和CUDA框架[8]的帮助下,instant-ngp可以在几秒钟内训练nerf。

与之前需要深度信息来更好地感知几何形状的nerf - slam[5]和[6]不同,本文的Orbeez-SLAM利用VO进行精确的姿态估计,用单目摄像机生成密集地图。实现了预训练自适应和实时推理。

2.1 整个系统结构


图3显示了我们的系统管道。跟踪过程从输入图像流I中提取图像特征,并通过视觉测程估计相机姿态。映射系统通过三角测量生成地图点,并通过束调整(重投影误差)优化相机姿势和地图点。这些地图点代表稀疏点云。然后我们利用更新的相机姿势和地图来训练NeRF。由于这个过程是可微的,我们仍然可以从NeRF光度损失中优化相机姿态。最后,NeRF可以为下游任务生成密集映射。此外,这个管道应该适用于任何提供稀疏点云的SLAM。

2.2 后端估计优化

以下目标用于优化OrbeezSLAM:(a)位姿估计,(b)束调整,(c) NeRF回归。其中(a)在跟踪过程中,(b)(c)在映射过程中进行。

  1. 位姿估计:重投影误差[28]在基于特征的SLAM中被广泛用于位姿估计[1],[21],[22],其公式如下:

    其中$$u_{ij}$$为图像上的像素位置,由第$$j$$台摄像机$$\mathcal{C}_j$$观测到,由第$$i$$个3D点投影。$$π(\mathcal{C}_j, P_i)$$通过$$\frac{1}{Z} K_j (R_jP_i + t_j)$$将三维地图点Pi投影到像素坐标,其中$$P_i = [X, Y, Z]^T$$和$$K_j$$, $$[R| T]_j$$是$$\mathcal{C}_j$$描述的内在和外在(世界到相机)。我们通过最小化重投影误差来优化相机姿态$${[R|t]_j}$$:

Bundle adjustment::在VO的三角测量步骤之后,新的地图点被添加到本地地图中。束调整目标也最小化了地图点位置和相机姿势的重投影误差:


最小化(6)实际上是一个非线性的最小二乘问题。我们用LevenbergMarquardt方法求解这两个目标,遵循[1]。bundle调整优化了关键帧(K, [R|t])和这些关键帧中的可观察地图点的相机姿势。然后,这些优化的关键帧和地图点被传递给NeRF。

NeRF回归:NeRF通过回归图像颜色来最小化光度误差。一条射线可以通过给出一个关键帧(K, [R|t])和一个像素坐标[u, v]来表示:

通过应用图2中提到的跳过体素策略,我们在射线上的采样位置接近表面。最后,NeRF光度损失是预测颜色\hat{C}(r)与像素颜色C(r)之间的L2范数。

其中C(r_{ij})为图像I_i中射线j观测到的颜色。由于(9)是可微的,通过L_{pht}可以优化摄像机外部参数{[R|t]_i}和网络参数Θ

2.3 投影三角化

在图2中,我们展示了密度网格可以加速渲染过程。但该结构只考虑一条射线,高度依赖于NeRF模型的密度预测。我们还存储了每个密度网格的采样次数。一个经常阻挡投射光线的体素更有可能是表面,如图4所示。对于噪声抑制,我们只对那些经常被射线扫描的体素内的点进行三角测量。我们选择64作为实际实现的阈值,因为根据我们的经验,这样的值具有最好的可视化效果。我们还利用稀疏点云生成的数据结构的映射点。由于地图点的周围环境更有可能是表面,我们在密度网格的样本计数器中添加了一个重要的数字。我们声称这种方法可以找到一个更可靠的曲面,而不是依赖于NeRF。该方法生成的Map点没有在(8)中进行优化。我们将该方法生成的稠密点云显示在图3中。

3. 参考链接

https://mp.weixin.qq.com/s/uLPgAKa8KjMbuG1VycatuQ