NICE-SLAM——论文简析

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.mzph.cn/news/97609.shtml

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

相关文章

【Kotlin精简】第2章 集合

1 简介 在 Kotlin 中集合主要分为可变集合与只读集合&#xff0c;其中可变集合使用 “Mutable” 前缀 集合类名表示&#xff0c;比如 MutableList、MutableSet、MutableMap 等。而对于只读集合就是和 Java 中集合类名是一致。 Java 中的 List 非 Kotlin 中的 List , 因为 Kot…

GPT系列论文解读:GPT-3

GPT系列 GPT&#xff08;Generative Pre-trained Transformer&#xff09;是一系列基于Transformer架构的预训练语言模型&#xff0c;由OpenAI开发。以下是GPT系列的主要模型&#xff1a; GPT&#xff1a;GPT-1是于2018年发布的第一个版本&#xff0c;它使用了12个Transformer…

ChatGPT Vision初体验

本周&#xff0c;OpenAI为其广受欢迎的 ChatGPT 平台发布了一项突破性的补充。除了处理文本之外&#xff0c;ChatGPT 现在还可以处理图像并聊天。 很难夸大这件事的重要性。目前多达70% 的内容是视觉内容而不是书面内容。人们每年会生成数千张照片&#xff0c;而当今许多最大的…

VR模拟鸡胚培养接种实验,打造沉浸式的学习环境

在医学教育领域&#xff0c;传统的鸡胚接种实验一直是教学的重要组成部分。然而&#xff0c;这种实验方法存在一定的局限性&#xff0c;如操作难度大、成本高、安全隐患等。为了解决这些问题&#xff0c;越来越多的教育机构开始尝试引入虚拟现实(VR)技术&#xff0c;以模拟鸡胚…

研发质量管理体系

研发质量管理体系的脉络是怎样的&#xff1f;如何建立适合组织发展的研发质量管理体系&#xff1f;质量管理的核心是什么&#xff1f;一些思考&#xff0c;一些线索&#xff0c;欢迎朋友们一起探讨、碰撞。

vscode 乱码解决

windows 10 系统 vs code 编译运行和调试 C/C_vscode windows编译_雪的期许的博客-CSDN博客 VS Code默认文件编码时UTF-8&#xff0c;这对大多数情况是没有问题的&#xff0c;却偏偏对C/C有问题。如果以UTF-8编码保存C/C代码&#xff0c;那么只能输出英文&#xff0c;另外使用…

我在 NPM 发布了新包: con-colors

链接地址&#xff1a;npmjs.com con-colors 安装依赖 yarn add con-colors使用 导入&#xff1a; import { print } from "con-colors";使用&#xff1a; print.succ("成功的消息"); print.err("失败的消息")例子&#xff1a; import { p…

红包雨高并发压测记录(200台机器压测实录)

压测5000线程10秒内循环5次&#xff0c;5台2核心4线程的机器&#xff0c;QPS2500 压测10000线程10秒内循环5次&#xff0c;10台2核心4线程的机器&#xff0c;QPS5000 压测200000线程10秒内循环5次&#xff0c;200台2核心4线程的机器&#xff0c;QPS100000 虽然接口异常率都为零…

【云计算网络安全】DDoS 缓解解析:DDoS 攻击缓解策略、选择最佳提供商和关键考虑因素

文章目录 一、前言二、什么是 DDoS 缓解三、DDoS 缓解阶段四、如何选择 DDoS 缓解提供商4.1 网络容量4.2 处理能力4.3 可扩展性4.4 灵活性4.5 可靠性4.6 其他考虑因素4.6.1 定价4.6.2 所专注的方向 文末送书《数据要素安全流通》本书编撰背景本书亮点本书主要内容 一、前言 云…

AI工程化—— 如何让AI在企业多快好省的落地?

作为计算机科学的一个重要领域&#xff0c;机器学习也是目前人工智能领域非常活跃的分支之一。机器学习通过分析海量数据、总结规律&#xff0c;帮助人们解决众多实际问题。随着机器学习技术的发展&#xff0c;越来越多的企业将机器学习技术作为核心竞争力&#xff0c;并运用在…

如何用万界星空科技低代码平台快速开发一个MES系统?

一、制造业工厂生产现状&#xff1a; 1、生产计划复杂 生产效率低&#xff0c;工作量大&#xff0c;周期长&#xff1b;生产计划执行准确性不高&#xff0c; 生产工单准时完工率过低&#xff1b;计划人员很难得到实际生产进度的准确信息&#xff1b;人员沟通成本高&#xff1…

端口没有占用,Springboot却提示端口占用了

1.问题描述 *************************** APPLICATION FAILED TO START ***************************Description:Web server failed to start. Port 19004 was already in use.Action:Identify and stop the process thats listening on port 19004 or configure this applica…

Python 无废话-办公自动化Excel修改数据

如何修改Excel 符合条件的数据&#xff1f;用Python 几行代码搞定。 需求&#xff1a;将销售明细表的产品名称为PG手机、HW手机、HW电脑的零售价格分别修改为4500、5500、7500&#xff0c;并保存Excel文件。如下图 Python 修改Excel 数据&#xff0c;常见步骤&#xff1a; 1&…

机器学习必修课 - 编码分类变量 encoding categorical variables

1. 数据预处理和数据集分割 import pandas as pd from sklearn.model_selection import train_test_split导入所需的Python库 !git clone https://github.com/JeffereyWu/Housing-prices-data.git下载数据集 # Read the data X pd.read_csv(/content/Housing-prices-data/t…

【SQL】MySQL中的约束

1. 主键约束&#xff08;primary key&#xff09;&#xff1a; 相当于唯一约束非空约束分为单列主键&#xff0c;多列联合主键&#xff0c;一个表只有一个主键多列联合主键的每列都不能为空 2. 自增长约束&#xff08;auto_increment&#xff09;&#xff1a; 用在单列主键后…

Vim教程

目录 vim 介绍 常用的四种模式 首先先学会如何正确进入和退出vim&#xff1a; normal模式 insert模式&#xff1a; command模式&#xff1a; v-block模式&#xff1a; vim异常退出 vim配置 vim 介绍 Vim是一款高度可定制的文本编辑器&#xff0c;它的前身是Vi&#xf…

vue-devtools插件安装

拓展程序连接 链接&#xff1a;https://pan.baidu.com/s/1tEyZJUCEK_PHPGhU_cu_MQ?pwdr2cj 提取码&#xff1a;r2cj 一、打开谷歌浏览器&#xff0c;点击扩展程序-管理扩展程序 二、打开开发者模式&#xff0c;将vue-devtools.crx 拖入页面&#xff0c;点击添加扩展程序 成…

Kafka是什么,以及如何使用SpringBoot对接Kafka

系列文章目录 上手第一关&#xff0c;手把手教你安装kafka与可视化工具kafka-eagle Kafka是什么&#xff0c;以及如何使用SpringBoot对接Kafka 系列文章目录一、Kafka与流处理二、Spring Boot与Kafka的整合Demo1. 新建springboot工程2. 添加Kafka依赖3. 配置Kafka4. 创建Kafka…

JS进阶-原型

原型 原型就是一个对象&#xff0c;也称为原型对象 构造函数通过原型分配的函数是所有对象所共享的 JavaScript规定&#xff0c;每一个构造函数都有一个prototype属性&#xff0c;指向另一个对象&#xff0c;所以我们也称为原型对象 这个对象可以挂载函数&#xff0c;对象实…

不标准的 json 格式的字符串如何转为标准的(json字符串属性名不带双引号如何转

背景 不规范的 json 字符串例如 属性名不带双引号 {name:"abc"}属性名带单引号而不是双引号 {name:"abc"}属性值该用双引号的时候用了单引号 {"name":abc}还有一种情况就是以上情况的混合 所谓规范的json字串就是属性名要用双引号&#xf…