0%

论文精读——NeRF+LiDAR SLAM

本文是近期阅读NeRF + LiDAR SLAM 相关论文的精读笔记。

1、LiDAR-NeRF: Novel LiDAR View Synthesis via Neural Radiance Fields

摘要翻译

我们引入了一种新的任务,即激光雷达传感器的新视图合成。虽然传统的基于模型的带有风格转移神经网络的激光雷达模拟器可以应用于渲染新视图,但由于渲染器依赖于显式的 3D 重建和利用游戏引擎,其忽略了 LiDAR 点的重要属性,因此它们未能产生准确和逼真的 LiDAR 模式。据我们所知,我们提出了第一个可微的端到端激光雷达渲染框架 LiDAR-NeRF,利用神经辐射场(NeRF)来促进几何和 3D 点属性的联合学习,从而应对这一挑战。然而,简单地使用 NeRF 并不能取得令人满意的结果,因为它只关注学习单个像素而忽略局部信息,特别是在低纹理区域,导致几何性较差。为此,我们通过引入结构正则化方法来保留局部结构细节来解决这个问题。为了评估我们方法的有效性,我们建立了一个以物品为中心的多视图 LiDAR 数据集,称为 NeRF-MVL 。它包含从多个 LiDAR 传感器捕获的 360 度视点看到的 9 个类别物体的观察数据。我们在场景级数据集KITTI-360以及在我们的对象级 NeRF-MVL 上进行广泛的实验的结果表明,我们的 LiDAR-NeRF 显著优于基于模型的算法。

方法介绍

  • Overview

image-20230915103955498

  • 问题定义

如何通过输入一系列的 LiDAR 位姿以及相应的观测点,通过定义一个渲染函数的方式产生任意观测位姿下的新的观测图像?

  • Pipeline

image-20230915104503985

  1. LiDAR model and range image representation

这个步骤主要是通过 LiDAR 模型将 LiDAR 的测距信息以“伪图像”的形式进行表示。

这里使用了 球面投影模型(Spherical Projection) 将点云转换为 距离图(Range Images) ,具体公式如下:

  1. LiDAR-NeRF framework

将步骤一得到的距离图传入到 MLP 网络中分别输出 体密度(density)$\sigma$ ,强度(intensity)$i$ ,丢弃概率(ray-drop probability)$p$ ,接着对于三个输出值,均采用体渲染公式进行渲染。

  1. Structural characteristics

这一步骤主要是防止模型在 低纹理区域 的学习效果不佳所提出来的一种正则化的方法。主要做法是 在低纹理地区掩码取梯度

其中$G_M()$ 为低纹理地区掩码取梯度的操作。

  1. Loss function

最终构成损失函数:

其中距离损失取一范数,强度损失和丢弃损失均去二范数。

2、SHINE-Mapping: Large-Scale 3D Mapping Using Sparse Hierarchical Implicit Neural Representations

摘要翻译

大场景下的精密建图是大多数室外自动驾驶系统的一个重要组成部分。传统建图的方法所面临的挑战包括了平衡内存消耗和建图精度的难题。该文章主要解决了在大场景下利用3D LiDAR测量数据使用隐式表达进行重建的问题。我们使用一种具有稀疏性和可扩展性的基于八叉树,多层结构去学习和储存隐式特征。该隐式特征可以通过浅层的神经网络转化成符号距离值。我们利用二值交叉熵损失去优化我们局部特征,并使用3D测距信息作为监督。基于我们的隐式表达,我们设计了一种具有归一化的增量式建图系统去解决连续学习过程中的遗忘问题。我们的实验结果表明我们的3D重建对比目前的SOTA方法具有更准确,更完整和内存效率更高的效果。

方法介绍

  • 问题定义

如何在大场景下利用 LiDAR 数据进行隐式表达进行重建?

  • Pipeline

image-20230915141712128

  1. Implicit Neural Map Representation

这一步的目的是 获得 LiDAR 数据的特征信息

首先将构建地图以 八叉树地图 进行划分,然后采用 不同尺度的网格 对 LiDAR 数据进行特征提取,最后将各层采样到的特征进行 累加操作 ,作为网络的输入。

  1. Training Pairs and Loss Function

训练过程中采用 采样点到射线端点的距离值直接作为监督值 ,接着采用与 论文iSDF 中相同的策略,在传入 sigmoid 函数前先映射到 [0, 1]上,这样的做法是可以使得 距离表面更近的值获得更大的权重 。最终值经过 sigmoid函数后,采用 BCE(binary cross entropy) 作为损失函数。

为了提高精度,添加 Eikonal loss 损失部分:

  1. Incremental Mapping Without Forgetting

在基于学习的大规模重建问题中,随着场景的扩大,可能导致模型 更关注后续学习到的内容,而对前期学习到的内容产生了“遗忘” ,最终导致建图一致性较差的问题。

为此本文提出一项正则化方法以解决该系统的遗忘问题。添加了正则项损失如下:

其中 $\theta_i、\theta_i^*$ 分别表示当前的参数值和之前帧重已经收敛后的参数值,$\Omega_i$ 表示不同参数值的权重。

最终构成损失函数如下:

3、NeRF-LOAM: Neural Implicit Representation for Large-Scale Incremental LiDAR Odometry and Mapping

摘要翻译

使用LiDAR数据进行同时里程测量和建图是移动系统在大场景环境下完成完全自动驾驶的一项重要任务。然而,现存的绝大多数的基于LiDAR的方法优先考虑追踪质量多于重建质量。尽管最近开发的神经辐射场(NeRF)已经在室内环境下的隐式重建表现出富有前途的优势,但是,在大场景下使用增量式LiDAR数据进行同时里程测量和建图的问题仍然没能被探索。为了弥合这一缺陷,本文我们提出了一种新型的基于NeRF的LiDAR里程计与建图方法——NeRF-LOAM,其中包含了三种模块——神经里程计、神经建图以及mesh重建。所有这些模块使用了我们提出的神经符号距离函数,它将LiDAR点分离成在地面以及非地面两种类型的点以减少在Z轴上的漂移,同时优化里程计和体素嵌入,最后,生成关于环境的稠密光滑的mesh地图。而且,这种联合优化使得我们的NeRF-LOAM可以不用进行预训练以及展示了它应用在不同环境下的强大的泛化能力。在三个公开可用的数据集上的广泛评估显示我们的方法达到了SOTA表现,同时表现出大场景环境下使用LiDAR数据的强大的泛化能力。进一步,我们通过多重消融实验验证了我们所设计网络的有效性。

方法介绍

  • 问题定义

基于 NeRF 的大场景下使用增量式LiDAR数据进行同时里程测量和建图的问题仍然没能被探索,本文提出了一种新型的基于 NeRF 的 LiDAR 里程计与建图方法——NeRF-LOAM。

  • Pipeline

image-20230915151841407

image-20230915151852643

  1. Rays and points sampling

在当前给定的体素上,与该体素相交的射线并且和该体素产生交点 ,设置一个阈值来避免表面遮挡的影响,由于 Lidar 光线是由扫描位姿变换得到的,所以每条射线包含姿态信息,这样优化时就能同时优化位姿和体素嵌入。

  1. Neural SDF value

通过 三次线性插值 对采样点进行嵌入体素插值,然后将其输入到神经网络中:

  1. Training SDF pairs

image-20230915152921994

LiDAR 可以直接获得到物体表面的信息,即 SDF 值,但在 Z 轴上可能出现漂移,即上图中蓝色为真值, 红色为近似值,随着角度越来越小,其偏移量越来越大,故需要将地面分成 地面和非地面 两种情况:

其中 $p_s、p、n_p$ 分别为采样点,激光沿着射线打到的点,激光沿着射线打到的点的法向量。

  1. Optimization

    1. 自由空间损失:使得Lidar到截断正区域 $P_f$ 的各点 SDF 为截断距离 $Tr$。为了避免表面相交歧义,不考虑负截断区域,该损失函数在去除动态对象时非常重要。

    2. SDF损失:

    3. Eikonal loss:

  2. Dynamic voxel embeddings generation

通过 Neural Odometry 估计出的位姿可以将当前扫描的点转到世界坐标系中,任何不在现有体素中的点都被分配给新生成的体素,这些体素与对应体素嵌入一起被添加到八叉树中,为了快速定位所需的嵌入,将3D体素坐标编码为唯一的标量值,即莫顿代码。

image-20230915154914857

  1. Mesh Reconstruction

最终通过得到的 SDF 值,通过 Marching Cube 算法进行 mesh 重建。

4、Efficient Implicit Neural Reconstruction Using LiDAR

摘要翻译

使用隐式神经表达创建模型场景几何已经表现其在精度、灵活性以及低存储使用的优势。之前的方法已经展示了使用彩色或者深度图所表现出来令人影响深刻的结果,但对于在低光照条件已经大规模场景的应用仍然是困难的。使用全局点云作为输入的方法需要精确的配准以及坐标标签的真值,其限制了它们的应用场景。本文中,我们提出了一种使用稀疏LiDAR点云和粗糙里程计去在几分钟内高效重建精细隐式占据地图的新方法。我们提出了一种直接监督三维空间,而不适用二维渲染的新的损失函数,该函数避免了信息的丢失。我们还设法以端到端的方式细化输入帧的姿势,在没有全局点云配准的情况下创建一致的几何图形。就我们所知,我们的方法是第一个仅使用LiDAR数据作为输入的隐式场景表达方法。在包括室内和室外场景的合成以及真实的数据集的实验上表明我们的方法是有效的,高效的和准确的,该方法获得了与现有使用稠密输入的方法相当的结果。

方法介绍

  • 问题定义

本文中,我们提出了一种使用稀疏LiDAR点云和粗糙里程计去在几分钟内高效重建精细隐式占据地图的新方法。

  • Pipeline

image-20230915160609405

  1. Implicit Representation with Hash Encoder

采用多分辨率哈希编码,对不同分辨率下的特征值采用哈希编码 ,然后将各个特征向量进行累加,传入神经网络中得到网格的 占据值 。该策略与 Instant-ngp 相同。

image-20230915161101947

  1. Direct Supervision

为了防止 观测歧义性(因为激光被遮挡后,物体厚度未知,在某一帧中可能是遮挡,在另一帧中可能是未遮挡),对 BCE损失函数 进行改进, 这里主要的操作是 假设遮挡物体的厚度是符合正态分布的

image-20230915162053107

  1. Joint Optimization

通过对 表面点附近进行采样 ,结合 法向量损失(normal loss) 对重建平面进行光滑化。

得到最终的损失函数如下:

5、NF-Atlas: Multi-Volume Neural Feature Fields for Large Scale LiDAR Mapping

摘要翻译

LiDAR建图是机器人领域中长期存在的一个问题。最近神经隐式表达领域的进步给机器人建图带来了全新的机会。在本文中,我们提出了多体素神经特征场,称为NF-Atlas,其可以将神经特征体素与位姿图优化进行联系。通过将神经特征体素视为位姿图节点,将体素之间的相对位姿视为位姿图边,整个神经特征场都变为局部刚性和全局弹性。对于局部,神经特征体素部署了一个稀疏特征八叉树和小型的MLP网络对局部子图的SDF进行编码,且可以进行语义选取。使用这种结构去学习地图使得可以解决基于概率地图的端到端的最大后验问题。全局部分,地图由一个个单独的体素构成,避免了增量建图中灾难性的遗忘问题。更进一步的,当回环产生的时候,伴随着基于表示的弹性位置图只更新器神经体素的原点信息而不用进行重映射。最终,NF-Atlas的这些功能都被验证有效。由于稀疏性和基于优化的公式,NF-Atlas在模拟和真实数据集上的准确性、效率和内存使用方面表现出具有竞争力的性能。

方法介绍

  • 问题定义

在本文中,我们提出了多体素神经特征场,称为NF-Atlas,其可以将神经特征体素与位姿图优化进行联系。

  1. Neural Feature Volume

采用 八叉树 存储局部特征值,然后将其特征值进行 三次线性插值 后累加,输入到神经网络中。

将位置信息进行 编码操作,这里的编码与 NeRF 中的相同。将特征向量与位置编码向量同时输入到神经网络中:

image-20230915164446269

  1. Differentiable Range Approximation

采用 NeuS 中的渲染方式,其渲染公式与体渲染公式组成相同:

采样方式参考 Neural 3D Reconstruction in the Wild .

  1. Likelihood Measurement Model

    1. Range Measurements

      采用最经典的占据概率地图建模:

      对不同距离的构建不同的概率模型:

    2. Semantic Measurements

      这部分是对语义进行测量,不太明白。

  2. Probabilistic Mapping

最终得到 最大后验概率问题

  1. Loop Closure without Remapping

本方法在进行回环后,仅更新每个子图的原点位置,然后将子图进行拼接,避免了轨迹更新后的地图重映射。

image-20230915170142448

  1. On-demand Global Mapping

可以按需从世界坐标系中得到各个体素的 SDF 值:

  1. Loop Closure Updating

通过比较两个子图的最大似然值进行回环更新:

6、LONER: LiDAR Only Neural Representations for Real-Time SLAM

摘要翻译

本文提出了 LONER,第一个使用神经隐式场景表达的实时 LiDAR SLAM算法。现存的在大场景下的 LiDAR 隐式建图方法展现了富有前途的结果,但他们要么需要位姿真值,要么运行速度远达不到实时性。相反,LONER使用了 LiDAR 数据去实时训练一个 MLP 去预测稠密地图,同时同步估计传感器的轨迹信息。为了达到实时性的表现,本文提出了一种新的信息论损失函数,该函数解释了整个在线训练的过程中,不同地区的地图可以被不同程度地学习的事实。本方法在两个公开数据集上定性定量地进行了评估。评估结果说明了所提出的损失函数比其他使用深度监督的神经隐式框架的损失函数收敛速度更快,几何重建效果更加精确。最终,本文展示了 LONER 跟 SOTA 的 LiDAR SLAM系统相比具有竞争性的轨迹估计能力,同时也产生了与现存的需要位姿真值的隐式建图方法相比具有竞争性的稠密地图。

方法介绍

  • 问题定义

设计一个实时的基于神经隐式表达的 LiDAR SLAM 算法。

  • Pipeline

image-20230919104523483

  1. Tracking

Tracking部分主要采用 ICP 算法进行跟踪,运动过程采用匀速运动模型。

  1. Implicit Map Representation

隐式表达采用 Instant-npg 模型,渲染还是采用体渲染公式:

  1. Mapping
    1. 关键帧:当添加关键帧时,将当前关键帧以及之前的 $N_W-1$ 个关键帧进行优化更新;
    2. 优化:通过选取的 $N_W$ 个关键帧进行位姿优化;
    3. 采样:随机按选取 $N_R$ 条射线,再通过占据网格从每条射线采样 $N_S$ 个深度采样点。
  2. JS Dynamic Margin Loss Function
  • JS Loss

    由 LOS Loss修改得到,主要根据目标分布和预测样本分布之间的相似性为每一条射线设置一个动态边界 $\epsilon$ 。学习过的区域设置较低的边距来细化学习到的几何形状,未学习的部分设置较宽的区域加快收敛。

    image-20230919134527285

  • Depth Loss

    深度损失为测量值和渲染深度之间的误差的平方:

  • Sky Loss

    这个损失主要是区分天空部分的。在没有接受到激光雷达反射信号的情况下,若仰角满足一定的阈值,则判定为天空部分。

  1. Meshing

采用 Marching cube 算法进行重建。

7、CLONeR: Camera-Lidar Fusion for Occupancy Grid-aided Neural Representations

摘要翻译

NeRF领域的最新进展实现了SOTA级别的新视角合成并促进了场景属性的稠密估计。然而NeRF通常无法再室外、无边界的场景中使用,这些场景实在非常稀疏的视图下拍摄的,同时这些场景内容主要集中在远离相机的位置,这是野外机器人应用的典型情况。特别地,NeRF风格的算法在如下方面表现不佳:(1)当位姿多样性下的视图比较少的时候;(2)当场景包含饱和度和阴影时;(3)当使用精细结构对无边界大场景进行精细采样的时候导致的计算密集时。本文提出了CLONeR,它显著改进了NeRF,允许它对从稀疏输入的传感器视图观察到的大型无界户外驾驶场景建模。这是通过将NeRF框架内的占用和颜色学习解耦为分别使用激光雷达和相机数据训练的单独的多层感知器(MLP)来实现的。此外,本文还提出了一种新的方法,在NeRF模型的基础上构建可微分的3D占用网格图(OGM),并利用该占用网格改进沿射线的点采样,以在度量空间中进行体积绘制。通过对KITTI数据集场景的大量定量和定性实验,本文证明了当在稀疏输入数据上训练时,所提出的方法在新视图合成和密集深度预测任务上都优于SOTA的NeRF模型。

方法介绍

  • 问题定义

设计一种方法,允许它对从稀疏输入的传感器视图观察到的大型无界户外驾驶场景建模。

  • Pipeline

image-20230922210431844

  1. CLONeR World Coordinate System

这一步与 NeRF 相同,通过外部源如GNSS系统将相机和 LiDAR 的 Z 轴指向相机本身,然后将 LiDAR 数据置于感兴趣的区域内。

感兴趣区域的定义:通过相机本质参数和用户定义,确定视锥点的八个位置,然后通过计算一个放缩因子,将所有的位姿置于该放缩区域内。

  1. Integrating LiDAR Measurements into NeRF

这一步主要是通过激光雷达模型将测量点置于整个世界坐标系下。

  1. Decoupled NeRF Model

这部分主要是本论文的核心,借用 Instant-ngp 的框架,拆分成 Sigma MLP 和 RGB MLP 两个网络。LiDAR 数据传入 Sigma MLP 中, 相机数据传入 Sigma MLP 和 RGB MLP 中。其中位置信息编码采用原 NeRF 中的位置编码,观测角度编码采用 Spherical Harmonics 论文中提到的一种编码方式。

在本文的模型中采用了全针孔模型相机,在多层采样过程中对图像信息进行二次线性插值以得到更高分辨率的像素RGB真值。

  1. Loss Functions for NeRF MLPs

主要参考了 URF 中的损失函数。

  1. Occupancy Grid Mapping

image-20230922221005120

把OGM作为一个优化问题,使用随机梯度下降法去优化,然后使用这个学习到的OGM去代替原NeRF中的粗糙MLP.

通过占据网格地图更新公式,改进成优化函数:

采样一共分为两步:1、在射线上采样 N/2 个点;2、对占据区域进行剩下的 N/2 个点的采样:

LiDAR 射线上的占据概率:

定义随机梯度函数:

  1. Training Details

训练的三个阶段:1、只输入LiDAR训练S网络;2、冻结1中的权重,只输入相机数据训练C网络;3、两种数据共同训练S、C网络。

8、Urban Radiance Fields

摘要翻译

本工作的目标是从扫描平台获取到的数据执行三维重建以及新视图合成,这些平台普遍被部署在城市室外环境下的世界映射中。给定一系列从相机和扫描仪通过通过室外场景移动得到的RGB图像和雷达扫描数据,我们生成了一个可以从中提取三维表面并合成新的RGB图像的模型。我们的方法扩展了神经辐射场,它已经被证明可以在可控设定下对小场景生成逼真的新图片,利用异步捕获的激光雷达数据解决捕获图片之间的曝光变化,同时利用预测的图像分割去监测指向天空的光线的体密度。这三个扩展中的每一个在街景数据集上的实验中提供了显著的性能提升。我们的系统产生了SOTA的三维表面重建,并与传统方法和最近的神经表示方法相比我们得到了更高质量的新视角合成图像。

方法介绍

  • 问题定义

如何在给定一系列从相机和扫描仪通过通过室外场景移动得到的RGB图像和雷达扫描数据,生成了一个可以从中提取三维表面并合成新的RGB图像的模型。

  • Overview

image-20230922221358071

  1. Loss Function

总的损失函数:

  1. Photometric-based Losses

RGB损失和 NeRF 中相同:

但其中的 RGB 函数有所不同:

  1. Exposure compensation

对每一张图片进行曝光的潜在编码是过度参数化的,这会影响到非曝光的相关误差。本篇文章的解决方法是利用一个网络生成一个3*3的矩阵,用来对图片的颜色做仿射变换,这个映射将白平衡和曝光参数以更具有约束性的函数去建模。

  1. Sky modeling

本篇文章使用了spherical radiance map。首先用一个预训练模型语义分割出天空的部分,然后加入一个 Loss,使得其对于天空部分的体密度预测为 0:

  1. Lidar losses

首先是深度损失:

接着是 Line-of-sight priors 的设计:

光路上的介质不影响其最终的颜色,我们期望辐射亮度集中在沿射线的一个点上:

将上式分为三个部分:

目的就是为了在观测到的位置具有更大的权重值。

为了数值上便于处理,采样积分为1的核函数代替狄拉克函数,该核函数满足正态分布:

给出各个部分的定义:

其中最后一项主要是为了保证射线上整个权重值 $w(t)$ 为1。