SLAIM:一个实时的RGB-D NeRF-SLAM系统

news/2024/9/24 14:21:30/

图片

SLAIM:一个实时的RGB-D NeRF-SLAM系统与现有的NeRF-SLAM系统相比,我们的方法在跟踪性能上始终表现出更强的竞争力。我们的方法采用体积密度表示,并引入了一种新的KL正则化器在射线终止分布上,将场景几何限制为空隙空间和不透明表面。icon-default.png?t=N7T8https://mp.weixin.qq.com/s/YzUdxIIvgebqpszaL1okLA

01  引言

尽管最近的NeRF-SLAM系统在跟踪和3D重建方面取得了进展,但它们的跟踪性能通常仍然不如传统的SLAM系统。一些最近的工作通过使用高斯金字塔滤波器来平滑输入信号,从而扩大了优化损失函数的吸引域,以避免陷入局部最小值。

本文提出了一种名为SLAIM的基于神经辐射场(NeRF)的鲁棒稠密实时RGB-D SLAM系统,该系统能够在线进行跟踪和建图。作者指出,现有的NeRF-SLAM系统在跟踪性能上通常不如传统的SLAM系统。为了解决这个问题,作者提出了一种新的基于NeRF的粗细粒度跟踪和建图方法。

图片

02  方法

作者提出了一个基于高斯金字塔滤波的粗细粒度跟踪和建图方法。他们首先在重建的图像和真实图像上都应用了高斯金字塔滤波器,以在早期迭代中有效平滑输入信号,从而扩大优化损失函数的吸引域,避免陷入局部最小值。然后,他们通过在多个金字塔层上采样像素,并计算对应的颜色和深度值,来限制NeRF像素重建的范围。

图片

2.1 NeRF pre-requisites

该节介绍了NeRF的预先要求,包括:

· 使用多分辨率哈希网格表示场景几何,并使用两个浅层MLP解码器来估计给定3D输入位置的颜色和密度。

· 定义了射线终止分布w(r),并通过采样方法将其近似为高斯分布。

图片

图片

· 渲染颜色和深度像素时,使用alpha合成沿射线的值。

· 场景被限制在单位立方体内,并且使用固定步长\Delta r进行均匀采样。

图片

2.2 Depth Supervision

该节介绍了使用深度监督的重要性。使用直接对深度值进行回归的方法可能会导致在只有有限视角的区域出现重构错误。因此,作者提出了一种新的方法,通过在射线终止分布上应用KL正则化,使其成为单峰分布,并将其中心对准深度测量。

图片

2.3 Coarse-to-fine Tracking and Mapping

该节提出了一种基于高斯金字塔滤波的粗细粒度跟踪和建图方法。使用高斯金字塔滤波器平滑输入信号,以在早期迭代中扩大优化损失函数的吸引域,避免陷入局部最小值。在重建图像和真实图像上都应用了高斯金字塔滤波器。

· 高斯金字塔滤波:作者在重建的图像和真实图像上都应用了高斯金字塔滤波器,以在早期迭代中有效平滑输入信号,从而扩大优化损失函数的吸引域,避免陷入局部最小值。具体来说,作者在重建图像上使用了卷积滤波器,在真实图像上使用了中值滤波器。

· 像素采样:作者在多个金字塔层上采样像素,并计算对应的颜色和深度值,来限制NeRF像素重建的范围。这个采样范围对应于原始图像的某一感受野。

· 粗细粒度跟踪和建图:作者将这种粗细粒度的策略应用于跟踪和建图过程中。在跟踪过程中,作者首先在粗粒度图像上进行局部束调整,然后在细粒度图像上进行全局束调整,以获得最佳的跟踪和重建结果。在建图过程中,作者首先在粗粒度图像上进行局部优化,然后在细粒度图像上进行全局优化。

图片

03   实验

作者在多个数据集(ScanNet, TUM, Replica)上进行了实验,结果表明,与仅使用粗粒度或细粒度的方法相比,这种联合使用可以获得更好的跟踪和重建性能。

图片

图片

图片

04  结论

本论文介绍SLAIM,一个鲁棒的实时的RGB-D NeRF-SLAM系统,能够在实时中进行在线跟踪和建图。与现有的NeRF-SLAM系统相比,我们的方法在跟踪性能上始终表现出更强的竞争力。我们的方法采用体积密度表示,并引入了一种新的KL正则化器在射线终止分布上,将场景几何限制为空隙空间和不透明表面。我们的解决方案实现了局部和全局束调整,以产生一个稳健(粗细粒度)和准确(KL正则化)的SLAM解决方案。

我们在多个数据集(ScanNet, TUM, Replica)上进行了实验,结果显示,在跟踪和重建准确性方面,我们的方法取得了最先进的结果。我们的方法是第一个在跟踪和3D重建方面同时达到最先进水平的NeRF-SLAM系统。


http://www.ppmy.cn/news/1454720.html

相关文章

交换两个变量

1.创建一个临时变量 创建一个临时变量tmp用来存储变量a,将b的值赋给a,最后再将tmp的值赋给b,完成变量a和变量b的交换 int main() {int a 10;int b 20;int tmp a;a b;b tmp;printf("a %d, b %d", a, b);return 0; } 2…

vue快速入门(五十五)插槽基本用法

注释很详细&#xff0c;直接上代码 上一篇 新增内容 当传输内容只有一种时的基础写法 源码 App.vue <template><div id"app"><h1>被淡化的背景内容</h1><my-dialog><!-- 插槽内容:文字以及dom结构都可以传 --><span>你确…

int * function(int a )和(int*)function(int a )和int (*function(int a )区别和使用

以下是对这几种形式的详细解释和举例&#xff1a; int * function(int a )&#xff1a;这表示定义了一个函数function&#xff0c;它接受一个整型参数a&#xff0c;并返回一个整型指针。 例如&#xff1a; int *getPointer(int a) {int *ptr &a;return ptr; }(int*)fun…

使用CNN或resnet,分别在flower5,flower17,flower102数据集上实现花朵识别分类-附源码-免费

前言 使用cnn和resnet实现了对flower5&#xff0c;flower17&#xff0c;flower102数据集上实现花朵识别分类。也就是6份代码&#xff0c;全部在Gitee仓库里&#xff0c;记得点个start支持谢谢。 本文给出flower17在cnn网络实现&#xff0c;flower102在resnet网络实现的代码。…

21.使用哈希桶封装unordered_set和unordered_map(哈希桶的迭代器的实现)

1. hash表迭代器的实现 1.1 普通迭代器 // 由于迭代器的实现&#xff0c;需要使用哈希桶&#xff0c;但是哈希桶的实现&#xff0c;又在迭代器之后 // 因此&#xff0c;我们给出一个前置声明&#xff0c;旨在告诉系统&#xff0c;哈希桶已经被实现了 // 前置声明 template<…

[SpringBoot启动报错];Error starting ApplicationContext

报错原因&#xff1a;没有配置数据源 解决方案&#xff1a; 在application.yml中配置数据源即可

ES与关系数据库的同步练习(hotel_admin)

目录 1 es与数据库同步的方法2 实践2.1 任务介绍2.2 MQ方面操作2.2.1 声明交换机队列并且绑定2.2.2 hotel_admin端web层设置mq发送消息2.3 hotel_demo端监听接受消息并执行es操作 1 es与数据库同步的方法 方式一&#xff1a;同步调用 优点&#xff1a;实现简单&#xff0c;粗…

如何理解Go语言的逃逸分析(escape analysis)?

文章目录 什么是逃逸分析&#xff1f;逃逸的原因逃逸的影响 如何查看逃逸分析的结果&#xff1f;解决方案和示例代码减少逃逸的策略示例代码 在Go语言中&#xff0c;逃逸分析&#xff08;escape analysis&#xff09;是一个编译器优化过程&#xff0c;它决定了哪些变量会被分配…