神经隐式表征slam(implict neural representaton,INR)使用一个连续函数来表征图像或者三维voxel,并用神经网络来逼近这个函数。Co-SLAM 也是这类工作,Co-SLAM 将场景表示为多分辨率哈希网格,以利用其较高的收敛速度和表示高频局部特征的能力。此外,Co-SLAM 还采用了one-blob encoding,以促进未观察区域的表面一致性和完整性;在所有关键帧上进行 BA。
传统的 SLAM 目前可以在将深度或颜色度量融合到一张高保真地图中的同时,稳定跟踪相机位置。然而,它们使用经过人工设计的损失函数,而不会充分利用基于数据的先验知识。
目前有一些工作就是探索神经网络在 SLAM 中的能力,如直接从数据中学习平滑一致性先验。比如经典的 NeRF,使用基于坐标的网络,将场景密度和颜色编码进神经网络,再结合体绘制(Volume Rendering)可以重新合成输入图像,这对附近不可见的视图有很高的泛化能力。
基于坐标的网络使用正弦编码等方式将点坐标嵌入高维空间,结合编码进 MLP 的平滑一致性先验,从而捕捉高频细节。然而,基于 MLP 的方法所需的训练时间较长(有时需要数小时)。最近的研究将实时 SLAM(如 iMAP)建立在具有 frequency embedding 的基于坐标表示的网络上,它们需要采用稀疏射线采样和减少跟踪迭代的策略,来维持交互式操作。 这就会导致细节丢失,重构会过度平滑,而且相机跟踪可能会出现误差。
parametric embedding 能够表示高保真的局部特征,且收敛速度很快,有的研究为了提高 denseGrid(将空间划分网格,每个顶点处为可训练的特征) 的效率,对特征进行稀疏表示,如 hashGrid(只给T个位置存储特征),但缺乏 MLP 固有的平滑一致性先验,在没有观测到的区域难以进行 hole-filling。
Co-SLAM 结合 coordinate based encoding (本文使用one-blob)和 parametric embedding (本文使用hashGrid)的优势,one-blob enconding 提供了平滑一致性先验,hashGrid 优化了速度和局部细节。
Co-SLAM 还采用全局 BA,从所有的关键帧中采样射线,这就提高了位姿估计的准确性。
稠密图视觉 SLAM
传统采用 3D-3D ICP 求解,采用深度学习可以提升准确性和鲁棒性,但大部分的 pipeline 仍然采用传统方法。
INR
INR在神经网络中编码三维图像,如具有代表性的 NeRF,采用了带有 MLP的 coordinate encoding 通过体绘制进行场景重建,但是训练事件过长,后续有 parametric embedding 等工作,虽然增加了参数量,但是减少了训练时间。
Neural Implicit SLAM
iMAP 采用 MLP 在接近实时内同时追踪和建图,从而实现了 10 Hz tracking 和 2 Hz 建图。为了减少计算开销并提高可扩展性,NICE-SLAM 采用了多层特征网格来表示场景。然而,由于特征网格只进行局部更新,因此无法实现合理的hole-filling。
其中 f 代表神经隐式表征,x 代表世界坐标,c 代表颜色,s 代表截断符号距离(TSDF)。
整个过程分为 tracking 和 mapping。初始化是在第一帧上迭代几次训练。对于随后的每一帧,首先优化相机位姿,并以简单的匀速恒定运动模型进行初始化。然后对一小部分像素进行采样,并复制到全局像素集中。在每次映射迭代中,都会对从全局像素集中随机取样的一组像素进行全局 BA,以共同优化场景表示 θ 和所有相机位姿 {ξt} 。
基于坐标的表示方法受益于 MLP 中的平滑一致性先验,能得到高保真的重建结果,但是收敛缓慢,且会发生灾难性遗忘。
parametric encoding 方法提升了计算效率,但是在平滑性和 hole-filling 上表现不佳。
本文结合两者的优点,使用 One-blob 编码 γ(x),而不是将空间坐标嵌入多个频段。在 hashGrid 的多分辨率特征网格表征中使用 One-blob 编码,可实现快速收敛、高效内存使用和 online SLAM 所需的 hole-filling。
(Neural Importance Sampling 4.3)An important consideration is the encoding of the inputs to the network. We propose to use the one-blob encoding—a generalization of the one-hot encoding [Harris and Harris 2013]—where a kernel is used to activate multiple adjacent entries instead of a single one. Assume a scalars ∈ [0, 1] and a quantization of the unit interval into k bins (we use k = 32). The one-blob encoding amounts to placing a kernel (we use a Gaussian with σ = 1/k) at s and discretizing it into the bins. With the proposed architecture of the neural network (placement of ReLUs in particular, see Figure 3), the one-blob encoding effectively shuts down certain parts of the linear path of the network, allowing it to specialize the model on various sub-domains of the input.
In contrast to one-hot encoding, where the quantization causes a loss of information if applied to continuous variables, the one-blob encoding is lossless; it captures the exact position of s.
作为场景表示,我们采用基于哈希的多分辨率特征网格 Vα 。每一层的空间分辨率在最粗分辨率 Rmin 和最细分辨率 Rmax 之间逐步设置。每个采样点 x 上的特征向量 Vα(x) 通过三线性插值法进行查询。decodeer 输出预测的 SDF 值 s 和特征向量 h:
color MLP 输出颜色:
通过对沿采样射线的预测值进行积分,来呈现深度和色彩。具体来说,给定摄像机原点 o 和光线方向 r,对 M 个点 xi = o + di r 进行均匀采样,i ∈ {1, ., M},深度值为 {t1, ., tM} ,颜色为 {c1, ., cM}, 并将颜色和深度渲染为
wi 为沿射线方向的权重,这是通过一个转换函数将预测的 SDF si 转换得到的,其中 tr (10cm)是截断距离:
目标函数
颜色和深度 loss 通过平方误差计算,其中 Rd 是射线集合,u、v是图像平面的相应像素:
为了实现精确、平滑的重建,还应用了近似 SDF 和特征平滑损失。
具体来说,对于截断区域内的样本,即 |D[u, v] - d| ≤ tr 的点,我们使用采样点与其观测深度值之间的距离作为 gt SDF 的近似值进行监督:
对于 |D[u, v] - d| > tr 的点,采用 free-space loss ,迫使 SDF 预测值成为截断距离 tr:
为了防止在未观测到的区域发生 hash 冲突而导致的噪声重建,对插值特征进行了额外的正则化处理:
∆ 表示 hashGrid 上相邻采样顶点在三个维度上的特征度量差异。由于在整个特征网格上进行正则化对于实时建图来说在计算上不可行,因此只在每次迭代中的一小块随机区域进行正则化。
Camera Tracking
相机到世界的变换矩阵 T,基于匀速恒定运动模型:
然后选取当前帧内的 Nt (1024)个像素,通过最小化目标函数来优化位姿,而目标函数则与相机外参 ξt 有关。
Bundle Adjustment
在 neural SLAM 中,BA 通常包括关键帧选择以及相机位姿和场景表示的联合优化。经典的稠密图 vSLAM 方法需要保存关键帧,因为损失是在所有像素上计算的。
iMAP 的 neural SLAM 优势在于,BA 可以使用稀疏的采样射线集。这是因为使用神经网络将场景表示为隐式场。然而,iMAP 和 NICE-SLAM 并没有充分利用这一点,它们仍然按照经典的 SLAM 模式存储完整的关键帧图像,并依靠关键帧选择(如信息增益、视觉重叠)对一小部分关键帧(通常少于 10 个)进行联合优化。
在 Co-SLAM 中,不再需要存储完整的关键帧图像或关键帧选择。相反只存储代表每个关键帧的像素子集(约 5%)。为了进行联合优化,我们从全局关键帧列表中随机抽取 Ng 条射线,以优化场景表示和相机位姿。
联合优化以交替的方式进行。具体来说,km 步优化场景表示 θ,然后利用相机外参 {ξt} 的累积梯度更新位姿。由于外参只使用 6 个参数,这种方法可以提高位姿优化的鲁棒性,而梯度累积的额外计算成本几乎可以忽略不计。
重建 metrcis:Depth L1 (cm), Accuracy (cm), Completion (cm), Completion ratio (%) with a threshold of 5cm
相机追踪:ATE RMSE (cm)
实验还删除了相机半径内但目标场景外的噪声点,这对于所有已有的方法都有提升。这为 neural SLAM 方法带来了 hole-filling 能力,但也有可能在 ROI 外产生不必要的伪影。现有剔除方法要么基于 frustum (NICE-SLAM 和 iMAP),要么基于 frustum+occlusion(Neural-RGBD 和 GO-Surf)。前者可能会在 ROI 外留下伪影(如墙后的伪影),而后者则会移除 ROI 内的遮挡部分。在 Co-SLAM 中则使用了 frustum+oclusion+virtual cameras,即引入额外的虚拟视图来覆盖感兴趣区域内的遮挡部分。见补充材料第 1.2 节。
baseline:iMAP、NICE-SLAM
局限:Co-SLAM 依靠 RGB-D 的输入,因此对光照变化和不准确的深度测量非常敏感。与随机抽样关键帧像素相比,信息引导像素抽样策略有助于进一步减少像素数量,提高跟踪速度。采用回环检测可进一步提高跟踪质量。
参考
[1]Neural Importance Sampling: https://arxiv.org/pdf/1808.03856.pdf
[2]Co-SLAM: https://arxiv.org/abs/2304.14377
[3]https://github.com/HengyiWang/Co-SLAM
[4]http://liuxiao.org/kb/3dvision/3d-reconstruction/tsdf-truncated-signed-distance-function/
[5]https://blog.csdn.net/weixin_49003609/article/details/130328062