论文:https://arxiv.org/pdf/2301.03102.pdf
摘要:
神经辐射场(Neural Radiance Fields,NeRF)在同时定位与地图构建(Simultaneous Localization and Mapping,SLAM)任务中提供了灵活性和鲁棒性的地图表示。本文扩展了最新的NeRF-based SLAM算法NICE-SLAM,该算法能够生成高质量的NeRF地图。然而,根据所使用的硬件不同,生成这些地图所需的迭代次数往往使NICE-SLAM无法实时运行。此外,估计的轨迹无法与传统SLAM方法相媲美。最后,NICE-SLAM要求在运行时之前定义涵盖所考虑环境的网格,这使得它难以扩展到以前未见过的场景。本文旨在通过改进鲁棒性和跟踪精度,将NICE-SLAM更具开放世界能力,并将地图表示推广到处理无约束环境。具体做法包括改进测量不确定性处理、整合运动信息以及将地图建模为具有明确前景和背景。实验证明,这些改变能够提高85%到97%的跟踪精度,具体取决于可用资源,同时也改善了在具有超出预定义网格范围的视觉信息的环境中的地图构建能力。
方法:
文章基于NICE-SLAM 算法进行相关改进,
NICE-SLAM使用一系列具有不同网格分辨率的编码特征的固定大小的体素网格来表示地图。在对给定的RGB-D图像评估像素时,NICE-SLAM使用与[“NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis]相同的射线投射技术,但通过在体素网格中插值采样点来评估射线(类似于[“Plenoxels: Radiance Fields without Neural Networks,”]),使用(较小的)MLP解码每个采样特征,并将结果聚合为估计的像素颜色和深度。
建图(Mapping):地图更新线程负责更新体素网格NeRF地图表示。它通过不断优化体素网格特征和存储的一组相关关键帧的姿态来实现这一点。类似于ORB-SLAM ,关键帧是根据其提供的信息增益级别进行选择,并包括RGB-D图像以及相应的估计相机姿态。对于每次地图更新,基于预测的与当前帧的重叠区域,选择一组关键帧,并将它们与当前帧一起用于构建损失函数。损失函数既有基于深度的组成部分,也有基于颜色的组成部分。在地图更新线程中,每个网格分辨率的基于N个像素的基于深度的损失函数如下:
跟踪(Tracking):跟踪线程执行类似于地图构建线程的优化过程,但只优化当前帧的姿态(即不修改地图)。损失函数中的颜色部分只考虑当前帧。另一方面,跟踪线程中基于深度的损失根据网络中的深度不确定性进行加权。对于每个网格分辨率,基于N个像素计算损失如下:
改进点:
A. 深度不确定性
标准的NICE-SLAM算法不考虑从测量的RGB-D深度dn中得到的深度不确定性。因此,在考虑N个像素时,每个测量的深度像素对于计算的深度损失在建图和追踪阶段的贡献是相等的。尽管根据NeRF生成的深度值的代理不确定性测量对贡献进行了降权处理,但仍然将RGB-D深度值视为具有相等的价值。这种相等的估值不仅与潜在的传感器特定的不确定性波动或偏差相违背,例如由于光圈影响等产生的伪影,而且与基于视觉的深度传感器所产生的测量值通常随深度函数增加而不确定性增加的事实相违背。尽管在深度相对稳定的环境中通常被忽视,但在较大的场景中,这种不确定性可能变得相当显著。为了考虑这种不确定性的变化,重新定义了深度损失函数。将公式1和公式4改进如下:
B. 加入运动数据
运动数据可以作为状态估计的宝贵信息来源。本文在跟踪和地图优化中包含了运动数据,以利用相机姿态之间的时间关系。这些数据通常由惯性测量单元(IMU)提供。然而,迄今用于评估基于NeRF的SLAM方法性能的数据集中并没有包含IMU测量。因此,需要从真实姿态生成运动数据。由于以这种方式生成加速度会产生很多误差,因为存在双重差分,所以考虑的“IMU”测量是线速度v和角速度u。假设这些测量值都受到加性高斯噪声w m ∼ N(0, Σm)的影响,其中m ∈ [v, u]。这里介绍的方法可以类似地扩展到线加速度。
1)利用运动数据进行跟踪:在跟踪目标中添加了基于IMU的损失函数,该损失函数根据当前相机姿态与其上一个姿态之间的运动关系提供一个运动先验。为了简化起见,将上一个相机姿态视为固定的,基于IMU的损失函数按照与IMU噪声对应的因子进行加权。时间为tk时的相机姿态被定义为Xk = (Ck, rk),其中C ∈ SO(3)表示相机的方向,r ∈ R 3表示相机的位置。
2)利用运动数据进行地图构建:为了在地图优化中利用IMU数据,采用了IMU预积分的方法。在[13]中引入的IMU预积分允许将多个IMU测量值组合成相对运动增量(RMI)。然后,RMI作为一个单独的“测量”来定义两个姿态之间的概率性运动约束,这两个姿态可以通过任意数量的IMU测量值分隔。由于每个地图构建步骤使用的关键帧是不确定的,可能会将不同数量的IMU测量值与每个连续的关键帧相连接。IMU预积分极大地简化了这些关键帧之间相应运动约束的计算,并且无需跟踪每个接收到的IMU测量值。由于使用的是相同的信息,因此性能不会改变。
C. 后端模型
对于基于SLAM的算法,将远处的特征编码到地图中可以显著提高方向估计的准确性[“A Unified Framework for Nearby and Distant Landmarks in Bearing-only SLAM]。相反,原始的NICE-SLAM算法只能编码位于(受限制的)边界框内的地图特征。为了将NICE-SLAM扩展到无界环境,而不需要无界的内存资源,给定场景的背景使用球形网格进行编码。这种表示类似于[15“NeRF++: Analyzing and Improving Neural Radiance Fields]中提出的多球体图像(MSI)并在[Plenoxels: Radiance Fields without Neural Networks]中使用的表示方法。
结论:
通过添加深度不确定性和运动数据,可以改善基于NeRF的SLAM算法的准确性,特别是在需要实时性能的情况下。还证明了当场景过大无法用有界前景NeRF建模时,球形背景模型可以改善NeRF地图的图像重建效果。为了使基于NeRF的SLAM接近现有稠密SLAM算法的可用性,必须能够实时构建真正无界场景的NeRF地图表示。
本文介绍的改进开始朝着这个目标迈进。未来的一个研究方向是借鉴[Vox-Fusion: Dense Tracking and Mapping with Voxel-based Neural Implicit Representation]中的思想,避免使用预定义的网格。此外,这项工作还发现对于基于NeRF的SLAM方法,需要更多的数据集,特别是那些提供户外网格模型、运动数据和完全表征传感器的数据集。