Orbeez-SLAM: A Real-time Monocular Visual SLAMwith ORB Features and NeRF-realized Mapping

2023 IEEE International Conference on Robotics and Automation (ICRA)文章 -- Orbeez-SLAM

文章地址:2209.13274.pdf (arxiv.org)

项目地址:GitHub - MarvinChung/Orbeez-SLAM

Abstract

人们对一种能够通过 visual signals(视觉信号)执行复杂任务并与人类cooperate(合作)的spatial AI充满期待。

为了实现这一目标,我们需要一种视觉SLAM系统,它可以在没有预训练的情况下轻松适应新场景,并实时生成密集地图用于后续任务。

然而,之前的基于学习和非学习的视觉SLAM系统都由于其组件的 intrinsic limitations(固有限制)而不能同时满足所有需求。

在本研究中,我们开发了一种名为Orbeez-SLAM的视觉SLAM系统,它成功地将隐式神经表示和视觉里程计相结合,实现了我们的目标。

此外,Orbeez-SLAM可以使用单目相机,因为它只需要RGB输入,使其在现实世界中具有广泛的应用。实验结果显示,我们的SLAM系统比强基线系统快800倍,并且渲染结果更优

项目地址:https://github.com/MarvinChung/Orbeez-SLAM

I. I NTRODUCTION

一种智能的spatial AI(空间AI)系统,能够接收视觉信号(RGB-D图像)并与人类合作解决复杂任务,这个项目越来越被高度重视。为了高效地从环境中理解语义知识并像人类一样行动,空间AI需要一个名为视觉同时定位与地图构建(SLAM)的核心组件。视觉SLAM应该能够快速适应新场景而无需预先训练,并生成实时的细粒度地图,用于后续任务,比如家用机器人。然而,传统的视觉SLAM系统[1] [2] 主要关注定位精度,而且只提供粗糙的地图。因此,本研究旨在开发具备上述特性的视觉SLAM系统。

为了计算稠密地图,最近出现的基于学习的视觉SLAM系统Tandem [3] 使用截断有符号距离函数TSDF融合技术提供稠密的3D地图。正如[3]中所宣称的那样,Tandem能够实时进行推理,并且可以与单目相机一起工作。然而,TSDF融合涉及深度估计,而Tandem中的深度估计模块需要在推理之前进行预训练,这限制了它在与预训练场景显著不同的新场景中的适应性。

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

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

(1)我们提出了Orbeez-SLAM,这是第一个实时单目视觉SLAM,无需预训练并提供密集地图,专为空间AI应用量身定制。

(2)通过结合视觉里程计和快速的NeRF框架,我们的方法实现了实时推理并生成密集地图

(3)我们在具有挑战性的基准测试中广泛验证了Orbeez-SLAM与最先进的基准线(SOTA),展示了优越的定量和定性结果。

Fig. 1: Orbeez-SLAM process.相机上方的数字表示跟踪的时间戳。左图显示了从零开始训练的27秒的NeRF结果。右图显示,在左侧看到未知区域(即新视角)后,我们的NeRF模型可以在几秒钟内更新该区域。我们的Orbeez-SLAM是实时的,无需预训练。

II. R ELATED WORKS

A. Implicit neural representations

为了表示三维场景,显式表示方法(例如点云)需要大量空间来存储信息(因为点云中的每个点的信息都需要存储)。相比之下,隐式表面表示方法,如有符号距离函数(SDF),可以缓解存储空间问题,并在近年来得到广泛发展。其中,一些研究 [9],[10] 利用神经网络学习隐式函数,称为隐式神经表示(INR)。隐式神经表示具有几个优势:

  • 不受输入信号的空间维度/分辨率限制(隐式表达的优势)
  • 能够预测/合成未观测区域(render的优势)

此外,一种新颖且流行的隐式神经表示方法是 NeRF,在新视角合成方面取得了成功 [4],[11]–[13]。然而,大多数 NeRF 假设相机位姿已知。因此,在 NeRF 相关的研究中通常使用 COLMAP [14],[15] 来估计内部和外部参数(相机位姿)。此外,一些研究 [16]–[18] 通过 NeRF 光度损失优化相机位姿,但该过程需要长时间的训练。因此,正如前面提到的,instant-ngp [7] 开发了一个框架,可以在几秒钟内训练 NeRF,利用多分辨率哈希编码和 CUDA 平台 [8]。

直觉上,隐式表面表示方法可以作为视觉SLAM系统中的地图。例如,一些研究 [19],[20] 利用 SDF 构建地图。此外,最近的两个 NeRF-SLAM 方法 [5],[6] 为 NeRF 和视觉SLAM 的协同使用铺平了道路。然而,它们需要 RGB-D 输入并显示出较慢的收敛速度,这不满足我们的需求。因此,我们的目标是构建一个能够实时生成密集地图的 NeRF-SLAM 方法。此外,我们的方法可以与单目相机配合使用,并在目标场景中从头开始进行训练,而无需冗长的预训练过程。

B. Visual SLAM systems

传统的视觉SLAM方法在户外和大场景方面表现出较强的优势。它们可以快速计算准确的位置,但缺乏场景的细粒度信息。视觉SLAM方法可以分为两类:基于特征的SLAM和直接SLAM。基于特征的SLAM方法 [1],[21],[22] 提取和匹配帧间的图像特征,然后最小化重投影误差。此外,直接SLAM [2] 使用像素强度进行定位并最小化光度误差。

为了满足空间AI的需求,我们需要一种能够为复杂任务提供密集地图的视觉SLAM方法。几种使用深度学习技术实现该目标的方法已经存在 [3],[5],[6]。然而,它们要么需要预训练 [3] 从而限制了适应能力,要么仅依赖于NeRF光度误差和深度监督来优化相机位姿和网络参数 [5],[6],缺乏视觉里程计(VO)的知识

因此,我们开发了Orbeez-SLAM,通过考虑VO引导和快速的NeRF实现来消除这些缺点。因此,Orbeez-SLAM对于新的场景来说是无需预训练的,并且可以实现实时推理(通过在线训练)。

III. P RELIMINARIES

A. NeRF

NeRF [4]通过对来自不同视角的一系列2D图像进行训练来重建3D场景。连续的场景可以表示为一个函数F:(\mathbf{x},\textbf{d})\rightarrow (\mathbf{c},\sigma ),其中\mathbf{x}是3D位置,\mathbf{d}=(dx,dy,dz)是表示方向(\theta ,\varphi)的3D笛卡尔单位向量。输出为颜色\mathbf{c}=(r,g,b)和体积密度\sigma。这样的连续表示作为一个函数可以通过优化权重\Theta来用MLP网络F(\Theta )来近似。

根据上述定义,对于任意射线r(t)=\mathbf{o}+t\textbf{d},在近和远边界[t_{n},t_{f}]内的颜色C(\mathbf{r})可以通过积分来获得,积分由透射率R(t)、体积密度和每个点处的颜色乘积组成,即:

 其中:

 T(t)表示射线在区间 [0,t] 上行进而不撞到任何粒子的概率。

附注:

为了将射线输入到神经网络中,根据积分准则(quadrature rule)来采样N个离散的点t_{i}\in [t_n,t_f],i\in [1,N]来估计公式(1)中的颜色。

其中:

采样点的权重定义为:

B. Density grid

在NeRF中,渲染方程式(1)需要对射线上的位置进行采样。我们只关注与表面相交的位置,因为它们对(1)的贡献更大。一些研究[4],[12],[13]采用粗到精的策略在射线上均匀采样来通过查询NeRF找到密度分布。在了解射线的密度分布后,它们只对接近表面的位置进行采样。然而,这些步骤需要频繁查询NeRF,非常耗时。

为了解决这个问题,最近的一些研究[7],[24]–[27]将查询结果存储在密度网格中,然后通常应用跳跃体素策略(skip voxel strategy),如图2所示。在本工作中,我们进一步扩展了跳跃体素策略,结合对NeRF的理解来处理射线投射三角化(参见第IV-C节)。

IV. METHODOLOGY

与之前需要深度信息来更好地感知几何形状的NeRF-SLAM不同,我们开发了Orbeez-SLAM,利用VO进行准确的姿态估计,通过单目相机生成密集的地图。此外,它实现了无需预训练的适应性和实时推断。接下来,我们在第IV-A节中描述了系统概述,并在第IV-B节中介绍了优化目标。最后,在第IV-C节中介绍了射线投射三角化。

A. System overview

图3显示了我们的系统流程。跟踪过程从输入图像流I中提取图像特征,并通过VO估计相机姿态。mapping system使用三角化生成地图点,并通过bundle adjustment (re-projection error)捆绑调整(重投影误差)优化相机姿态和地图点。这些地图点表示稀疏点云。然后,我们利用更新后的相机姿态和地图来训练NeRF。由于这个过程是可微分的,我们仍然可以通过NeRF的光度损失优化相机姿态。最后,NeRF可以生成用于后续任务的密集地图。此外,这个流程适用于任何提供稀疏点云的SLAM系统。

Fig. 3: System Pipeline.   tracking and mapping(跟踪和映射)过程同时运行。图像流中的一帧必须满足两个条件才能成为关键帧。第一个条件用于过滤掉跟踪结果较差的帧。第二个条件在映射过程繁忙时丢弃帧。跟踪过程提供相机姿态估计。映射过程对相机姿态进行优化并维护地图。我们还展示了由我们提出的射线投影三角化生成的密集点云,该方法在第IV-C节中介绍。

B. Optimization

下面这些对象用来优化 Orbeez-SLAM。

  • (1) 位姿轨迹
  • (2) bundle adjustment
  • (3) NeRF回归

其中,(1) 在跟踪线程中,(2) 和(3) 由建图线程产生。

(a) Pose estimation

Reprojection error [28]被广泛应用于基于特征的SLAM [1], [21], [22]中,用于估计相机的位姿。定义为如下 的公式:

其中:u_{i,j}表示由第j个相机观察到的图像中的像素位置,并且是由第i个3D点投影得到的(也就是说:第j个相机观察到第i个3D点在第j个相机中产生的图像的像素值)。通过公式:\frac{1}{Z}K_j\left ( R_jP_j+t_j\right )投影3D地图点P_i到像素坐标(也就是说:通过旋转+平移的方式,将Pi点重投影到第j个相机图像中的像素值),其中P_i=[X,Y,Z]^{T}K_j,[R|t]_j分别是相机所描述的内参和外参。我们通过最小化重投影误差来优化相机的位姿{[R|t]_j}。(j表示相机ID,i表示3D坐标ID)

 (b) Bundle adjustment

在VO的三角测量之后,一个新的地图点被添加至 local map。 bundle adjustment objective(捆绑调整目标)还最小化了地图点位置和相机位姿的投影误差。(因为位姿变了,所以3D坐标值也跟着变化,所以要一起优化)

最小化公式(6)实际上是一个非线性最小二乘法问题。我们使用像文献[1]中的Levenberg-Marquardt method来实现这两个目标。bundle adjustment优化关键帧(K_j,[R|t]_j)的相机位姿和在关键帧中的可观察点。然后这些优化的关键帧和地图点一起送进NeRF中。

(c) NeRF regression

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

附注:

通过使用 skip voxel 策略,我们在射线中仅表面的位置进行采样。最终,在预测的颜色\widehat{C}(r)和像素颜色{C}(r)之间采用L2范数来表示NeRF的光度误差。

 其中\widehat{C}(\mathbf{r}_{i,j})表示在图像I_i中,射线j上面的观察颜色值。因为公式9是可微的,所以相机外参{[R|t]_j}和网络参数\Theta都可以被L_{pht}优化。但是,在实验(cf. Tab. V)之后,我们仅仅通过(6)进行优化\left \{ [R|t]_j \right \}

C. Ray-casting triangulation

在图2中,我们显示了density grid可以加速渲染过程。然而,这个结构仅仅考虑一条射线,并且高度依赖NeRF预测的密度。所以,我们还额外存储了每个体素采样的次数经常阻挡射线的体素更有可能是表面,如图4所示。为了排除噪声,我们只对在频繁扫描的体素内的点进行三角化。出于实际实现的考虑,我们选择64作为阈值,因为根据我们的经验,这个值在可视化效果上表现最好。

我们还利用了从稀疏点云生成的数据结构的地图点。由于地图点的周围更有可能是表面,我们将大量的样本数添加到密度网格的采样计数器中。我们认为这种方法可以找到更可靠的表面,并通过训练NeRF在线生成地图点。这种方法生成的地图点不会在(8)中进行优化。我们在图3中展示了通过这种方法生成的密集点云。

Fig. 4: Ray-casting triangulation in NeRF.  我们记录了每个密度网格体素的采样计数。如果一个体素的权重(见第III-A节中的(5))超过了作为表面候选的阈值,我们将其体素计数加1。那些采样计数较高的体素很可能包含表面,并将其作为地图点添加到密集点云中。

V. E XPERIMENTS

A. Experimental setup

Datasets.  为了公平的比较,我们在三个数据集上面进行实验( TUM RGB-D [29], Replica [30], and ScanNet [31])。他们提供了大量的图片,深度信息和相机的轨迹,并且广泛的使用在先前的工作中。

Baselines. 我们比较了 Orbeez-SLAM 和其他两类的baselines。

(a) learning-based SLAM: DI-Fusion[32], iMap [5], iMap ∗ (re-implemented in [6]), and NICE-
SLAM [6].

(b) traditional based SLAM: BAD-SLAM [33],Kintinuous [34], and ORB-SLAM2 [1].

Evaluation settings.   在实验中,单目SLAM通常会验证深度版本的有效性,因为在不知道深度的情况下无法正确估计场景的尺度。此外,所有之前的NeRF-SLAM方法都需要深度监督。因此,所有方法都在深度版本上进行了验证。我们仍然展示了Orbeez-SLAM可以使用单目相机工作。此外,我们从跟踪和建图结果两个方面广泛地检查了其有效性。

Metrics(指标).   为评估跟踪结果,我们使用绝对轨迹误差(ATE),它计算了地面实况(GT)轨迹与时间对齐的估计轨迹之间的均方根误差(RMSE)。

评估建图结果,我们将NeRF中常用的PSNR和Depth L1指标扩展到NeRF-SLAM中。PSNR评估了NeRF渲染和GT轨迹遍历的GT图像的失真率。至于Depth L1,我们计算GT轨迹遍历过的图像的估计深度和GT深度的L1误差

与[5],[6]不同,我们不在网格上评估性能。我们认为在网格上评估性能可能是不公平的,因为通过后处理NeRF生成网格的过程不是统一的。此外,我们的设置具有以下优点:

  • 不同研究中采样的关键帧数量各不相同,而使用GT轨迹进行评估提供了一致的标准。
  • 深度和PSNR可以有效地反映NeRF学习到的几何和辐射的质量。
  • 我们的设置可以在新视角上验证方法的表现效果,因为训练过程中只使用关键帧(GT轨迹的子集)。此外,即使模型支持已见关键帧,该指标仍然可以显示当它们被定位到错误的视角时。

备注:

ATE是衡量估计的相机轨迹与地面实况(ground truth)相机轨迹之间的误差。它计算估计轨迹和地面实况轨迹在时间上的对齐后的均方根误差,表示为公式:

其中,pi​是地面实况轨迹中第i时刻的位置,qi​是估计轨迹中对应的位置,N是轨迹中的时间步数。

RMSE是用于衡量回归或预测模型的预测准确度的指标,用于衡量估计值与真实值之间的误差。在SLAM中,RMSE通常用于衡量地图点位置或其他定位相关的误差,如重投影误差等。

Implementation Details.   我们在一台装有Intel i7-9700 CPU和NVIDIA RTX 3090 GPU的台式电脑上进行所有实验。我们遵循ORB-SLAM2 [1]和instant-ngp [7]的官方代码来实现Orbeez-SLAM。请注意,Orbeez-SLAM继承了ORB-SLAM2的闭环处理过程,以提高轨迹准确性。我们不像ORB-SLAM2那样剔除关键帧,以确保在传递给NeRF后关键帧不会被消除。代码使用C++和CUDA编写。关于损失函数,我们使用g2o [35]框架优化重投影误差,并使用tiny-cuda-nn框架 [8]优化NeRF中的光度误差

图5:渲染结果比较。展示了来自Orbeez-SLAM(我们的方法)和NICE-SLAM [6]的NeRF渲染结果的RGB和深度图。我们提供了Orbeez-SLAM(单目和RGB-D)和NICE-SLAM(RGB-D带和不带GT深度的推理)的结果。值得注意的是,在RGB-D设置中,我们不使用深度信息进行NeRF渲染(深度仅在跟踪过程中使用);因此,NICE-SLAM提供了更好的深度渲染结果。

图6:随时间推移的NeRF结果。我们列出了TUM-fr3/office、Replica-office和ScanNet-0207的NeRF渲染结果。左上角显示了经过的时间。第一、第二和第三列分别是训练开始时、跟踪过程结束时和损失值完全收敛时的渲染结果。我们的NeRF在TUM和Replica上得到了良好的结果,但在ScanNet(大场景)上失败了。它成功重建了床,但未能重建左边的桌子,显示大场景更具挑战性。

SLAM is 360 ∼ 800 times faster than NICE-SLAM.

参考文献:

arxiv.org/pdf/2209.13274.pdf

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值