论文解读:Towards Open World NeRF-Based SLAM,迈向开放世界的NeRF-SLAM

在线体验各类最新模型,更有模型 免费Token 额度领取!
立即体验
简介: Towards Open World NeRF-Based SLAM,迈向开放世界的NeRF-SLAM

73ea1a6dde084d1db70351eaced10576.png

论文:https://arxiv.org/pdf/2301.03102.pdf

摘要:

神经辐射场(Neural Radiance Fields,NeRF)在同时定位与地图构建(Simultaneous Localization and Mapping,SLAM)任务中提供了灵活性和鲁棒性的地图表示。本文扩展了最新的NeRF-based SLAM算法NICE-SLAM,该算法能够生成高质量的NeRF地图。然而,根据所使用的硬件不同,生成这些地图所需的迭代次数往往使NICE-SLAM无法实时运行。此外,估计的轨迹无法与传统SLAM方法相媲美。最后,NICE-SLAM要求在运行时之前定义涵盖所考虑环境的网格,这使得它难以扩展到以前未见过的场景。本文旨在通过改进鲁棒性和跟踪精度,将NICE-SLAM更具开放世界能力,并将地图表示推广到处理无约束环境。具体做法包括改进测量不确定性处理、整合运动信息以及将地图建模为具有明确前景和背景。实验证明,这些改变能够提高85%到97%的跟踪精度,具体取决于可用资源,同时也改善了在具有超出预定义网格范围的视觉信息的环境中的地图构建能力。

方法:

文章基于NICE-SLAM 算法进行相关改进,

NICE-SLAM使用一系列具有不同网格分辨率的编码特征的固定大小的体素网格来表示地图。在对给定的RGB-D图像评估像素时,NICE-SLAM使用与[“NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis]相同的射线投射技术,但通过在体素网格中插值采样点来评估射线(类似于[“Plenoxels: Radiance Fields without Neural Networks,”]),使用(较小的)MLP解码每个采样特征,并将结果聚合为估计的像素颜色和深度。

建图(Mapping):地图更新线程负责更新体素网格NeRF地图表示。它通过不断优化体素网格特征和存储的一组相关关键帧的姿态来实现这一点。类似于ORB-SLAM ,关键帧是根据其提供的信息增益级别进行选择,并包括RGB-D图像以及相应的估计相机姿态。对于每次地图更新,基于预测的与当前帧的重叠区域,选择一组关键帧,并将它们与当前帧一起用于构建损失函数。损失函数既有基于深度的组成部分,也有基于颜色的组成部分。在地图更新线程中,每个网格分辨率的基于N个像素的基于深度的损失函数如下:


eafc70446e374681a37e999128eb3b12.png

跟踪(Tracking):跟踪线程执行类似于地图构建线程的优化过程,但只优化当前帧的姿态(即不修改地图)。损失函数中的颜色部分只考虑当前帧。另一方面,跟踪线程中基于深度的损失根据网络中的深度不确定性进行加权。对于每个网格分辨率,基于N个像素计算损失如下:

242fc43bb6e04aa7911c1d7c01f26282.png

改进点:

A. 深度不确定性

标准的NICE-SLAM算法不考虑从测量的RGB-D深度dn中得到的深度不确定性。因此,在考虑N个像素时,每个测量的深度像素对于计算的深度损失在建图和追踪阶段的贡献是相等的。尽管根据NeRF生成的深度值的代理不确定性测量对贡献进行了降权处理,但仍然将RGB-D深度值视为具有相等的价值。这种相等的估值不仅与潜在的传感器特定的不确定性波动或偏差相违背,例如由于光圈影响等产生的伪影,而且与基于视觉的深度传感器所产生的测量值通常随深度函数增加而不确定性增加的事实相违背。尽管在深度相对稳定的环境中通常被忽视,但在较大的场景中,这种不确定性可能变得相当显著。为了考虑这种不确定性的变化,重新定义了深度损失函数。将公式1和公式4改进如下:

55e31415c2a94d79b8006eee93c0095f.png

B. 加入运动数据

运动数据可以作为状态估计的宝贵信息来源。本文在跟踪和地图优化中包含了运动数据,以利用相机姿态之间的时间关系。这些数据通常由惯性测量单元(IMU)提供。然而,迄今用于评估基于NeRF的SLAM方法性能的数据集中并没有包含IMU测量。因此,需要从真实姿态生成运动数据。由于以这种方式生成加速度会产生很多误差,因为存在双重差分,所以考虑的“IMU”测量是线速度v和角速度u。假设这些测量值都受到加性高斯噪声w m ∼ N(0, Σm)的影响,其中m ∈ [v, u]。这里介绍的方法可以类似地扩展到线加速度。

1)利用运动数据进行跟踪:在跟踪目标中添加了基于IMU的损失函数,该损失函数根据当前相机姿态与其上一个姿态之间的运动关系提供一个运动先验。为了简化起见,将上一个相机姿态视为固定的,基于IMU的损失函数按照与IMU噪声对应的因子进行加权。时间为tk时的相机姿态被定义为Xk = (Ck, rk),其中C ∈ SO(3)表示相机的方向,r ∈ R 3表示相机的位置。

2)利用运动数据进行地图构建:为了在地图优化中利用IMU数据,采用了IMU预积分的方法。在[13]中引入的IMU预积分允许将多个IMU测量值组合成相对运动增量(RMI)。然后,RMI作为一个单独的“测量”来定义两个姿态之间的概率性运动约束,这两个姿态可以通过任意数量的IMU测量值分隔。由于每个地图构建步骤使用的关键帧是不确定的,可能会将不同数量的IMU测量值与每个连续的关键帧相连接。IMU预积分极大地简化了这些关键帧之间相应运动约束的计算,并且无需跟踪每个接收到的IMU测量值。由于使用的是相同的信息,因此性能不会改变。

C. 后端模型

对于基于SLAM的算法,将远处的特征编码到地图中可以显著提高方向估计的准确性[“A Unified Framework for Nearby and Distant Landmarks in Bearing-only SLAM]。相反,原始的NICE-SLAM算法只能编码位于(受限制的)边界框内的地图特征。为了将NICE-SLAM扩展到无界环境,而不需要无界的内存资源,给定场景的背景使用球形网格进行编码。这种表示类似于[15“NeRF++: Analyzing and Improving Neural Radiance Fields]中提出的多球体图像(MSI)并在[Plenoxels: Radiance Fields without Neural Networks]中使用的表示方法。

761cdcd38ada4238a796c8ba686a92cd.png

结论:

通过添加深度不确定性和运动数据,可以改善基于NeRF的SLAM算法的准确性,特别是在需要实时性能的情况下。还证明了当场景过大无法用有界前景NeRF建模时,球形背景模型可以改善NeRF地图的图像重建效果。为了使基于NeRF的SLAM接近现有稠密SLAM算法的可用性,必须能够实时构建真正无界场景的NeRF地图表示。

本文介绍的改进开始朝着这个目标迈进。未来的一个研究方向是借鉴[Vox-Fusion: Dense Tracking and Mapping with Voxel-based Neural Implicit Representation]中的思想,避免使用预定义的网格。此外,这项工作还发现对于基于NeRF的SLAM方法,需要更多的数据集,特别是那些提供户外网格模型、运动数据和完全表征传感器的数据集。


目录
相关文章
|
JSON 算法 Go
Golang语言使用 jwt-go 库生成和解析 token
Golang语言使用 jwt-go 库生成和解析 token
970 0
|
前端开发 JavaScript
使用 CSS variables 和Tailwind css实现主题换肤
最近在网上看到 Tailwind Labs的实现的[换肤视频],决定使用 Tailwind css 实现博客列表主题换肤。
1731 0
|
8月前
|
存储 编解码 算法
推荐一款视频压缩神器!视频体积能压缩减少80%,支持指定大小压缩、批量压缩,压缩不可能不损失质量的。
推荐一款高效视频压缩工具,支持AVI、MP4、MKV等格式,可批量压缩,体积减少达80%。支持按比例或指定大小压缩,采用H.265等无损编码技术,在保证画质的前提下显著减小文件体积,操作简单,拖拽即可完成压缩,适合日常分享与存储。
700 0
|
8月前
|
传感器 人工智能 边缘计算
机器视觉公司有哪些:国产平台德创引领产教融合
本文整合苏州德创、基恩士、康耐视、奥普特、研华科技五家机器视觉公司,涵盖资质、产品、产教融合优势,提供选型参考,助力院校实现教学与产业需求精准对接。
|
7月前
|
JSON 安全 Java
支付宝支付实战全攻略
本文详细介绍了基于JDK17的企业级支付宝支付实现方案。首先阐述了支付宝支付的核心参与者、安全机制和支付场景区分,重点分析了RSA2签名验证流程。随后提供了完整的开发指南,包括开放平台配置、Maven环境搭建、数据库设计以及核心工具类封装。文章详细展示了基于MyBatis-Plus的持久层实现和Swagger3接口文档集成,并重点讲解了支付回调处理、退款功能等核心业务逻辑的实现。针对企业级应用场景,特别强调了幂等性设计、高可用方案和常见问题的解决方案,包括异步通知丢失兜底机制和安全加固措施。
675 2
|
前端开发 Java C++
JUC系列之《CompletableFuture:Java异步编程的终极武器》
本文深入解析Java 8引入的CompletableFuture,对比传统Future的局限,详解其非阻塞回调、链式编排、多任务组合及异常处理等核心功能,结合实战示例展示异步编程的最佳实践,助你构建高效、响应式的Java应用。
|
Ubuntu 编译器 Linux
go语言中SQLite3驱动安装
【11月更文挑战第2天】
628 7
|
机器学习/深度学习 人工智能 程序员
大模型时代的思考:小心陷入ChatLLMs构建的蜜糖陷阱-基于人类反馈的间接(反向)驯化-你是否有注意到?
本文探讨了大模型基于人类反馈训练的原理及其潜在风险,特别是大模型在迎合用户需求时可能带来的“蜜糖陷阱”。通过实际案例分析,强调了理性使用大模型的重要性,提出了保持批判性思维、明确人机协作边界、提升人类判断力和创新能力等建议,旨在让大模型真正为人类服务,而不是限制人类思维。
542 4
|
Prometheus 监控 Cloud Native
Java一分钟之-Micrometer:应用指标库
【6月更文挑战第11天】Micrometer是Java应用的度量库,提供统一API与多监控系统集成,如Prometheus、InfluxDB。它有标准化接口、广泛后端支持、自动配置和多种度量类型。常见问题包括度量命名不规范、数据过载和忽略维度。解决办法包括遵循命名规范、选择重要指标和使用标签。了解API、设计度量策略和选好监控系统是关键。通过正确使用Micrometer,可建立高效监控体系,保障应用稳定性和性能。
716 1
|
机器学习/深度学习 人工智能 自然语言处理
大模型是如何理解人类语言的?
大模型是如何理解人类语言的?
861 0