NICE-SLAM——论文简析

news2024/11/26 0:54:21

NICE-SLAM: Neural Implicit Scalable Encoding

现有的神经隐式表征方法会产生过度平滑的场景重建,并且难以扩展到大型场景。这些局限性主要是由于其简单的全连接网络架构没有将局部信息纳入观测。NICE-SLAM通过引入分层场景表示法,纳入了多层次的局部信息。利用预训练的几何先验优化该表示,可实现大型室内场景的重建。

一、简介

传统的适用于构建稠密图的视觉 SLAM,无法对未观察到的区域进行估计。另一类基于学习的方法通常是在特定任务的数据集上进行训练,因此能达到一定的预测能力。此外,基于学习的方法往往能更好地处理噪声和异常值,但是只适用于有几个物体的小场景。

iMAP 应用了神经隐式表征,在房间大小的数据集上显示了不错的跟踪和建图结果。但是当扩展到更大的场景(如由多个房间组成的公寓)时,稠密图重建和相机跟踪精度都出现了明显的性能下降。其限制在于只用了一个 MLP 来表示场景,且只能根据新的局部数据进行全局更新。

Convolutional occupancy networks 和 Neuralrecon 这两个工作提出建立多层 grid-based 特征有助于保留几何细节,但这些都是离线的。这种表征是可以 local update 的,从而适用于大场景。

NICE-SLAM 将分层场景表征和神经隐式表征两者的优点结合起来,用分层 feature girds 来表示场景,并且结合神经隐式 decoder (在多分辨率下预训练)的归纳偏置。利用 occupancy decoder 和 color decoder 输出的深度和颜色,能够以减少重渲染 loss 的方式,在视角范围内优化 feature grids。

二、相关

Dense Visual SLAM

地图表征可以分为 view-centric 和 world-centric,第一种方法是将 3D 几何图形固定到特定的关键帧上,在稠密图中通常表现为深度图;第二种方法将 3D 几何图形固定在统一的世界坐标上,并可进一步划分为 surfel 和 voxel grid,通常存储 occupancy 或 TSDF。

NICE-SLAM 采用 voxel grid,存储几何图形的隐式编码信息,并在建图过程中直接对其进行优化。这使得在较低的网格分辨率下获得更精确的几何图形。

Neural Implicit Representations

iMAP 局限于单个 MLP 的容量有限,NICE-SLAM是其扩展方案。

三、方法

在这里插入图片描述

3.1. Hierarchical Scene Representation

分层场景表示法将多级网格特征与预训练解码器相结合,用于 occupancy 预测。几何图形被编码入三个特征网格 ϕ 及其相应的 MLP 解码器 f,其中 l ∈ {0, 1, 2} 表示粗、中、细三级场景细节。此外还有一个特征网格 ψ 和解码器 g 来建立场景外观,即颜色。

Mid-&Fine-level Geometric Representation
观测到的场景几何图形由中、细特征网格表示。在重建过程中,首先通过优化中层特征网格来重建几何图形,然后再使用精细网格进行细化。 在实现过程中,使用边长分别为 32cm 和 16cm 的 voxel grid,在 TUM RGBD 中,使用了 16cm 和 8cm 的网格。对于中层,使用相关的 MLP f1 将特征直接解码为 occupancy 值。 对于任意 3D 点 p ,我们得到的 occupancy 为:
在这里插入图片描述
其中,ϕ§表示特征网格在点 p 处进行了三线性插值。相对较低的分辨率使得能够有效优化网格特征,以适应观测结果。为了捕捉场景几何中较小的高频细节,以残差的方式添加了精细特征。具体来说,细粒度特征解码器将相应的中层特征和细粒度特征作为输入,并输出中层 occupancy 的偏移量,即
在这里插入图片描述
在整个优化过程中固定了预训练的解码器 f1 和 f2,只优化特征网格 ϕ1 和 ϕ2。这有助于稳定优化并学习一致的几何形状。

Coarse-level Geometric Representation
粗级特征网格旨在捕捉场景中如墙壁、地板等图形,并独立于中、细网格进行优化。粗网格的目标是能够预测未观察到的 occupancy,这使得在大部分图像未观察到时也能进行追踪相机位姿。实现时的边长为 2m。与中层网格类似,直接解码为 occupancy,即
在这里插入图片描述
Pre-training Feature Decoders
粗解码器和中解码器作为 ConvONet 的一部分预先训练。训练完成后,只使用解码器 MLP,这样预训练的解码器在解码优化的特征时,就能利用从训练集中学到的特定分辨率先验。

Color Representation
为了对场景中的颜色进行编码,使用了另外的特征网格 ψ 和解码器 g:
在这里插入图片描述
与具有强大先验的几何图形不同,联合优化颜色特征 ψ 和解码器 g 可以提高跟踪性能。与 iMAP 类似,这可能会导致遗忘问题,而且颜色只在局部保持一致。如果我们想将整个场景的颜色可视化,可以将其作为后处理步骤进行全局优化。

Network Design
对于所有 MLP 解码器,使用 32 的隐藏特征维度和 5 个全连接层。除了粗略的几何表征外,对 p 采用可学习的高斯位置编码,然后将其作为 MLP 解码器的输入。这样可以发现几何和外观的高频细节。

3.2. Depth and Color Rendering

给定相机内参和当前位姿后,我们可以计算出像素坐标的观察方向 r。首先沿着这条射线抽取 Nstrat 个点进行分层抽样,然后再均匀地抽取靠近深度的 Nimp 个点(根据经验将采样间隔定义为 ±0.05D,其中 D 是当前射线的深度值)。对每条射线总共取样 N = Nstrat + Nimp 个点。更具体地说,让 pi = o + dir, i∈ {1, - - , N} 表示给定相机原点 o 的射线 r 上的采样点,di 对应于 pi 在这条射线上的深度值。将 p 点的射线终止概率建模为:粗级为 wc ,细级为 wf 。

最后,每条射线在粗级和细级的深度以及颜色都可以渲染为:
在这里插入图片描述

3.3. Mapping and Tracking

Mapping
为了优化场景表示,从当前帧和选定的关键帧中均匀采样总共 M 个像素,分阶段进行优化,以尽量减少几何损失和光度损失。

几何损失指的是观测深度与粗或细预测深度之间的 L1 损失:
在这里插入图片描述
光度损失也是 M 个采样像素的渲染值和观测值之间的 L1 损失:
在这里插入图片描述
在第一阶段,使用公式 (8) 中的几何损耗 l = f 优化中层特征网格。接下来,联合优化中层和细层的 ϕ1 、ϕ2 特征,使用相同的细层深度损失 l = f。最后,进行局部 BA,以共同优化各级特征网格、色彩解码器以及 K 个选定关键帧的相机外参 {Ri,ti}:
在这里插入图片描述
多阶段优化方案能带来更好的收敛性,因为更高分辨率的外观和精细级特征可以依赖于中级特征网格中已经细化的几何图形。 实现时将系统并行化为三个线程,以加快优化过程:一个线程用于粗级映射,一个线程用于中级和细级几何和色彩优化,另一个线程用于相机跟踪。

Camera Tracking
除了优化场景表示之外,还并行运行相机追踪,以优化当前帧的位姿,即旋转和平移 {R, t}。为此,我们对当前帧中的 Mt 个像素进行采样,修改后的几何损失:
在这里插入图片描述
在这里插入图片描述
修改后的损失会降低某些区域的权重,例如物体边缘。

Robustness to Dynamic Objects
为了使优化对追踪过程中的动态物体更加稳健,过滤了深度/颜色重渲染损失较大的像素。具体来说,会从优化中剔除损失公式(12)大于当前帧中所有像素损失中值 10 倍的任何像素。但只实现了在建图过程中优化场景表示。要联合优化相机位姿和场景是一个研究方向。

3.4. Keyframe Selection

与 iMAP 类似,维护一个全局关键帧列表,并根据信息增益逐步添加新的关键帧。与 iMAP 不同的是,在优化场景几何时,我们只包含与当前帧有视觉重叠的关键帧。之所以能做到这一点,是因为能对基于网格的表征进行局部更新,而且不会出现与 iMAP 相同的遗忘问题。

这种关键帧选择策略不仅能确保当前视图之外的几何图形保持静态,还能带来非常高效的优化。在实际操作中,首先随机采样像素,并使用优化后的相机位姿反向投影相应的深度。然后,将点云投影到每个关键帧。从这些有点投影到的关键帧中,我们随机选择 K - 2 个帧。此外,将最近的关键帧和当前帧纳入场景优化中,从而形成总共 K 个活动帧。

4.Experiments

metrics:对于2D,从重建网格和gt网格中随机抽取 1000 张深度图来评估 L1 损失。对于 3D,考虑Accuracy [cm], Completion [cm], Completion Ratio [< 5cm%]。删除了不在任何摄像头内的未见区域。相机跟踪使用 ATE RMSE。
在这里插入图片描述
由于 iMAP 使用了单个 MLP,MLP 的容量限制可能需要更多参数,从而导致 FLOPs 增加。

使用多个浅层 MLP 解码器的特征网格比使用单个深层 MLP 更有优势。

iMAP 从整个场景中选择关键帧。这对 iMAP 来说是必要的,可以防止他们的简单 MLP 遗忘之前的图形。不过,这也会导致收敛缓慢和跟踪不准确。

五、Conclusion

预测能力受限于粗表示的规模。此外,我们的方法没有回环检测。最后,虽然传统方法缺乏某些特征,但与基于学习的方法相比,我们的方法在性能上仍有差距,需要加以弥补。

一些细节见补充材料。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1070878.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

2019架构真题2020案例(四十七)

数据存储在中央仓库&#xff0c;处理流程独立&#xff0c;交互性好数据和处理耦合在一起&#xff0c;每次修改需要重启劣势&#xff1a;需要通过连接组件进行连接&#xff0c;性能降低优势&#xff1a;支持并发通过仓库连接组件访问&#xff0c;效率高 (8分)缓存中存储当前的热…

基于Java的考试报名系统设计与实现(亮点:可修改任意形式的考试报名,如驾校考试报名、竞赛考试报名、英语四级考试报名等)

文章目录 前言具体实现截图论文参考详细视频演示为什么选择我自己的网站自己的小程序&#xff08;小蔡coding&#xff09;有保障的售后福利 代码参考源码获取 前言 &#x1f497;博主介绍&#xff1a;✌全网粉丝10W,CSDN特邀作者、博客专家、CSDN新星计划导师、全栈领域优质创作…

左值、右值、左值引用和右值引用

左值、右值和左值引用&#xff0c;在C11之前&#xff0c;我们都很熟悉也都很好理解。左值(LValue)就是有名字能够寻址的对象的值类型&#xff0c;右值就是在内存上没有名字的数值的值类型&#xff0c;左值引用就是指向左值的引用。 C11引入了右值引用&#xff0c;从而可以去读…

奔驰与蔚来,“联姻”只是传闻?

继比亚迪与丰田&#xff0c;小鹏汽车与大众&#xff0c;零跑汽车与Stellantis陆续展开或传出合作机会之后&#xff0c;近日蔚来也被曝出正在与奔驰进行合作洽谈。 这意味着&#xff0c;在新能源尤其是智能电动时代&#xff0c;传统外资车企占据技术主动权&#xff08;所谓的技术…

HarmonyOS/OpenHarmony原生应用-ArkTS万能卡片组件Span

作为Text组件的子组件&#xff0c;用于显示行内文本的组件。无子组件 一、接口 Span(value: string | Resource) 从API version 9开始&#xff0c;该接口支持在ArkTS卡片中使用。 参数&#xff1a; 参数名 参数类型 必填 参数描述 value string | Resource 是 文本内…

主流的图像—文本的多模态技术实现方法有哪些?

大体上可划分为3类&#xff1a; 1&#xff09;训练中间层以对齐视觉模块和语言模型。该类方法首先预训练视觉模块&#xff0c;将这些视觉模块与LLM冻结&#xff0c;然后在视觉模块与LLM之间插入可训练的中间层&#xff0c;构建多模态模型。接着在大规模的图像—文本对数据集上…

基于SSM的实验室考勤管理系统设计与实现

末尾获取源码 开发语言&#xff1a;Java Java开发工具&#xff1a;JDK1.8 后端框架&#xff1a;SSM 前端&#xff1a;采用JSP技术开发 数据库&#xff1a;MySQL5.7和Navicat管理工具结合 服务器&#xff1a;Tomcat8.5 开发软件&#xff1a;IDEA / Eclipse 是否Maven项目&#x…

项目总监必看:如何利用Git深度统计团队代码贡献?多语言实践教程揭秘!

&#x1f337;&#x1f341; 博主猫头虎 带您 Go to New World.✨&#x1f341; &#x1f984; 博客首页——猫头虎的博客&#x1f390; &#x1f433;《面试题大全专栏》 文章图文并茂&#x1f995;生动形象&#x1f996;简单易学&#xff01;欢迎大家来踩踩~&#x1f33a; &a…

AP5193 DC-DC降压恒流驱动器 大功率宽电压LED驱动IC

产品描述 AP5193是一款PWM工作模式,高效率、简单、内置功率MOS管&#xff0c;适用于4.5-100V输入的高精度降压LED恒流驱动芯片。电流2.5A。AP5193可实现线性调光和PWM调光&#xff0c;线性调光脚有效电压范围0.55-2.6V.AP5193 工作频率可以通过RT 外部电阻编程来设定&#xff…

ffprobe命令

查看一个音频文件&#xff0c;在终端命令行输入一下命令 ffprobe video/audio.m4a 可以看到audio.m4a这个文件的所有信息。 Duration&#xff1a;音频总时长&#xff1a;开始播放时间&#xff1a;比特率 Stream&#xff1a;说明是一个音频流&#xff0c;编码格式是aac&…

珠宝饰品商家为什么要做微信小程序开发

珠宝饰品商家为什么要做微信小程序开发&#xff1f; 随着互联网的发展&#xff0c;微信小程序作为一种新型的应用形态&#xff0c;正逐渐成为商家们关注的热点。对于珠宝饰品商家来说&#xff0c;开发微信小程序具有以下几个方面的优势&#xff1a; 一、获取更多流量 微信小程…

浅谈霍尔传感器在电子设备中的应用

安科瑞虞佳豪壹捌柒陆壹伍玖玖零玖叁 0摘 要&#xff1a;本文介绍了霍尔传感器的原理、应用和发展情况&#xff0c;详细讨论了其在电子设备中的应用。霍尔传感器在电子设备中具有高精度、高灵敏度、高稳定性等特点&#xff0c;可以应用于磁场测量、位置检测、电流检测等多个领…

zookeeper入门篇之分布式锁

文章目录 前言非公平锁公平锁 前言 上一篇说过&#xff0c;zookeeper是一个类似文件系统的数据结构&#xff0c;每个节点都可以看做是一个文件目录&#xff0c;也就是说&#xff0c;我们所创建的节点是唯一的&#xff0c;那么分布式锁的原理就是基于这个来的。 代码仓库&…

196、管理 RabbitMQ 的用户

开启Rabbitmq的一些命令&#xff1a; 小黑窗输入&#xff1a; rabbitmq-plugins enable rabbitmq_management 启动控制台插件&#xff0c; 就是启动登录rabbitmq控制台的页面&#xff0c;rabbitmq_management 代表了RabbitMQ的管理界面。 rabbitmq-server 启动rabbitMQ服务器…

NoSQL Redis

NoSQL Redis 1、数据库1.1关系型数据库1.2非关系型数据库1.3关系型和非关系型区别 2、非关系型数据库应用场景3、存储结构4、redis4.1redis概述4.2Redis 优点4.3Redis为什么这么快&#xff1f; 5、部署redis6、redis基础操作 1、数据库 1.1关系型数据库 关系型数据库是一个结…

房地产行业如何有效进行软文推广?

对于房地产行业来说&#xff0c;软文营销是常见的营销方式&#xff0c;也有不少地产行业来找媒介盒子进行软文推广&#xff0c;和传统的硬广相比&#xff0c;软文成本更低&#xff0c;而且效果是持续性的&#xff0c;那么房地产行业如何有效进行软文推广呢&#xff1f;接下来就…

Stable Diffusion生成图片

画质 masterpiece,best quality,illustration,extremely detail CG unity 8k wallpaper,ultra-detailed,depth of field 杰作&#xff0c;最佳质量&#xff0c;插图&#xff0c;极度详细的8K壁纸&#xff0c;超高详细度&#xff0c;景深 画风 Chinese ink painting,water color…

一文弄懂 if __name__ == “__main__“:(洒洒水啦!)

本篇文章是博主在AI、无人机、强化学习等领域学习时&#xff0c;用于个人学习、研究或者欣赏使用&#xff0c;并基于博主对人工智能等领域的一些理解而记录的学习摘录和笔记&#xff0c;若有不当和侵权之处&#xff0c;指出后将会立即改正&#xff0c;还望谅解。文章分类在AI学…

C#练习题-构造函数

文章目录 前言题目习题1运行示例 习题2运行示例 参考答案习题1习题2 其他文章 前言 本篇文章的题目为C#的基础练习题&#xff0c;构造函数部分。做这些习题之前&#xff0c;你需要确保已经学习了构造函数的知识。 本篇文章可以用来在学完构造函数后加深印象&#xff0c;也可以…

在JavaScript中,什么是生成器函数(generator function)?它的作用是什么?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 生成器函数概述⭐ 生成器函数的作用⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 欢迎来到前端入门之旅&#xff01;感兴趣的可以订阅本专栏哦&#xff01;这个专栏是为那些对Web开发感兴趣、刚刚踏入前端领域…