EN-SLAM:Implicit Event-RGBD Neural SLAM解读

论文路径:https://arxiv.org/pdf/2311.11013.pdf

目录

1 论文背景

2 论文概述

2.1 神经辐射场(NeRF)

2.2 事件相机(Event Camera)

2.3 事件时间聚合优化策略(ETA)

2.4 可微分的CRF渲染技术

3 EN-SLAM模型

3.1 统一的隐式场景表示

3.2 辐射场分解

3.3 可微分CRF渲染

3.4 追踪与捆绑调整

3.5 损失函数

4 数据集

5 实验

5.1对比实验

5.2 消融实验

5.3 全场景建图的对比

6 未来工作

6.1大规模室外场景

6.2 依赖深度信息

6.3 长距离轨迹


论文背景

       EN-SLAM出自今年CVPR的Highlight名单,由上海AI Lab等机构联合提出的首个事件-RGBD隐式神经SLAM框架。EN-SLAM通过共享可微的相机响应函数(CRF)渲染技术,基于事件和RGBD监督学习,进行相机位姿和地图的体渲染优化,有效解决运动模糊或光照变化等非理想场景中,SLAM算法产生的定位漂移、地图失真等问题。

论文概述

2.神经辐射场(NeRF

        论文中建立在NeRF-SLAM框架上,引入最新的场景重建技术NeRF,通过神经辐射场提高建图质量。相较于传统SLAM框架在单目深度估计中深度特征图的参数难以使用来恢复几何和光度优良的3D map,使用单目稠密SLAM来提供位姿,深度特征图和概率分布,而将NeRF框架用作建图工作,可以实时构建环境辐射场,利用NeRF中提出的基于不确定性的深度估计损失来实现良好的光线和几何恢复。

        下图来自于NeRF-SLAM的损失函数,在原有RGB传感器颜色损失基础上(L2范数),引入光照和几何参数。

λD:平衡颜色和深度监督参数

LD:计算深度图和不确定性深度图的损失(L2范数)

2.事件相机(Event Camera

        对于以往的SLAM框架,甚至是最新的NeRF-SLAM仍然没有解决的问题,大多数是为光线优良的情况场景而设计,在低光照条件,或受到运动模糊或光照变化等问题,往往容易导致收敛失败。主要原因在于单一的使用了RGB传感器。

        而本文中基于RGB和事件相机结合的NeRF结构进行重建。

        为什么引入了事件相机?事件相机较于RGB相机(传统快门相机)的优势?

        事件相机:使用了一种高动态范围(HDR)传感器,它不会捕捉整个图像帧,而是仅捕捉场景中发生变化的像素点。这些变化被称为“事件”,每个事件包含像素位置、时间戳和光强度变化的信息。

       相较于传统相机,事件相机的优势:

(1)高时间分辨率和低延迟:事件相机能够以微秒级的时间分辨率捕捉场景变化,响应速度非常快,适用于高速运动场景,大大改善运动模糊问题。

(2)高动态范围:事件相机能够捕捉高对比度场景中的细节信息,避免了过曝或欠曝的问题。

(3)鲁棒性:事件相机对光照变化和运动模糊等环境因素更加鲁棒,在恶劣环境下仍能保持良好的性能。

2.事件时间聚合优化策略(ETA

       对于传统使用事件相机的SLAM中,并没有很好的将事件数据与RGB数据高度融合,传统方法引入了基于特征的方法(如USLAM)、直接方法(如EDS),运动补偿方法(如InteriorNet)均存在一些问题。

基于特征的方法:存在运动模糊和光照变化的复杂环境中,缺乏足够的视觉特征,导致跟踪和重建性能下降。

直接方法:对于精确的相机姿态和细致的优化要求较高,难以与事件数据和RGB-D数据有效集成。

运动补偿方法:无法充分利用事件数据的时间差异特性,无法提供高效的连续差异约束,从而限制了性能的提升。

        相较于传统方法,本文EN-SLAM引入了事件时间聚合优化策略,有效利用了事件数据的时间差异特性,大幅提高了跟踪和重建的性能。

2.可微分的CRF渲染技术

        Differentiable CRF是EN-SLAM模型用于融合事件数据和RGB数据的一种技术,本文先建模RGB颜色场,并使用事件生成模型推导事件亮度场,并将统一的神经辐射场分解成的RGB场和事件亮度场两个可微分的色调映射过程,再依据这两个场利用CRF技术重新渲染最终的3D建图的亮度、深度、RGB。

        这一方法,也有效地解决了事件和RGB数据之间的差异,并在真实场景和黑暗场景下均可以渲染出HDR的亮度结果和更准确的网格结构,提高系统的鲁棒性和性能。

3 EN-SLAM模型

      EN-SLAM模型(the first event-RGBD implicit neural SLAM framework),该模型输入RGB图像、RGBD深度图像和事件数据,最终输出Depth、RGB、Luminance三个图,并根据这三个图计算损失函数反馈模型,优化参数。生成模型的输出为三个特征图的融合得到的高质量的三维重建结果以及相机姿态估计。

3.统一的隐式场景表示

        本文由于面临两个挑战(事件数据稀疏性和不同相机成像物理原理不同),EN-SLAM学习了一个共享的统一的隐式场景表示。首先使用多分辨率的几何特征和颜色网格特征描述辐射场,并利用Geometry Decoder将几何关系和颜色映射到几何隐藏向量、辐射场和TSDF(三维点阵距离场)中。

3.辐射场分解

        对于传统NeRF工作,简化了成像过程,而导致渲染图像与真实图像之间的偏差,而在本文工作同时使用RGB-D与事件数据多模态情况下偏差问题进一步放大,而造成视图不一致(即伪影产生),动态范围低(暗区和过曝区信息丢失,而造成跟踪漂移和映射失真)。

        另外由于事件数据捕获对数亮度变化,事件数据的预测无法很好的表示出差异性,本文建模了事件数据的亮度场、辐射、曝光的关系,并将神经辐射场分解为RGB和事件数据两个可微分方向用于后续的CRF渲染。

3.可微分CRF渲染

        根据上面得到的两个可微分的数据流沿着光线方向进行不同的积分操作,得到最终生成图像的颜色、光强、深度信息。

        并将第一步计算的TSDF通过钟形模型生成上式的权重wi。

3.追踪与捆绑调整

        利用事件相机的HDR和时间差异特性,针对追踪与全局BA问题提出ETA策略。

        针对追踪问题:

        使用自适应的事件前向窗口选择策略,即利用前向窗口进行邻域搜索,计算事件损失最小的帧为前向帧,来约束参与优化帧之间的局部稳定性。

        采用概率加权的采样策略,将RGB图像划分为若干patch,并从中随机采样若干射线来计算采样点损失,并将单一patch的平均损失投影到下采样的mini平面来引导事件相机的整体射线采样的反馈操作,最终通过最小化目标函数来调整位姿,这也有利于降低计算成本。

针对全局BA问题:

什么是全局BA

        捆绑调整(Bundle Adjustment)使用最小化重投影误差,可以进行多次迭代,使重构点足够拟合真实值,可以应用于欧式结构、仿射结构和透视结构多种情况,是一个恢复结构和运动的非线性方法。

        在本模型中计算RGBD摄像机与事件相机之间的最小重构化误差,使用固定的迭代次数,相较于传统方法在训练途中增加迭代次数的崩溃问题,这样做仍能在高帧率情况下,保持较高的跟踪精度和鲁棒性。

3.损失函数

损失函数包含五个损失的叠加,分别是Lev,Lrgb,Ld,Lsdf,Lfs。

Lev:事件重建损失,计算事件流域渲染亮度差异(对数亮度)的均方误差。

Lrgb:颜色渲染损失,表示渲染颜色与观测颜色之间的均方误差。

Ld:深度损失,表征渲染的深度与观测深度间的均方误差。

Lsdf:符号距离场(SDF)损失,表征采样点与SDF间的距离平方和。

Lfs:自由空间损失,表示采样点与相机射线之间的距离平方和。

数据集

        相较于以往的SLAM数据集没有令人强运动模糊和亮度变化的挑战,或者缺乏深度信息,本文提出新的数据集DEV-Reals和DEV-Indoors,来进行针对事件相机以及运动模糊与亮度问题场景的评估。

        DEV-Reals数据集:包含LiDAR、Realsense D435I RGBD相机和DAVIS346事件相机等多传感器数据,包含三个场景办公室、车库、宿舍,涵盖不同的照明条件与相机运动速度,这也包含了深度信息和事件相机带来的噪声,更适合评估鲁棒性。

        DEV-Indoors数据集:使用Blender合成的事件相机SLAM数据集,用于评估算法运动模糊和亮度变化下的性能。

5 实验

5.1对比实验

        基于BEV-Indoors数据集、Bev-Reals数据集针对不同的SLAM框架在重建和跟踪性能上进行了比较。由于针对光照影响和运动模糊数据集,在引入事件相机的EN-SLAM模型中高动态范围的提升优势还是相对明显的。

        另外,EN-SLAM相较于其他SLAM框架在运行时间、参数量方面进行了比较,在参数量近似的情况下,FPS提升最为明显达到了惊人的17FPS。

5.消融实验

        分别测试了RGB和事件相机的影响以及CRF和加权采样(PWS)的影响。通过事件相机得到了较低的跟踪误差,并获得了更精确的渲染细节。并证明了CRF渲染和PWS对于事件数据融合的HDR影响较为明显。

        另外,也做了关于ETA策略、迭代设置在多数据集上的消融实验。

5.3 全场景建图的对比

        下图为在不同SLAM框架中,基于BEV-Indoors数据集的不同场景下的不同运动模糊、光照情况下的场景建图。

6 未来工作

6.1大规模室外场景

        该模型目前主要针对室内场景,在大规模户外环境中可能会面临挑战。未来可以考虑扩展模型的适用范围,增强其在户外环境下的泛化能力。

6.2 依赖深度信息

        由于一些数据集中缺失深度信息,或者在某些场景中就难以获得深度信息,考虑未来可以不依赖深度的输入,或建立新的损失函数来反馈系统,并建立弱深度信息数据集来优化模型。

6.3 长距离轨迹

        在实验中我们看到在长距离轨迹问题下,虽然FPS有所提升,但误差整体高于ESLAM模型,考虑到优化运动模糊和光照变化性能而丧失了一部分长距离理解性能。

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

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

相关文章

CosyVoice多语言、音色和情感控制模型,one-shot零样本语音克隆模型本地部署(Win/Mac),通义实验室开源

近日,阿里通义实验室开源了CosyVoice语音模型,它支持自然语音生成,支持多语言、音色和情感控制,在多语言语音生成、零样本语音生成、跨语言声音合成和指令执行能力方面表现卓越。 CosyVoice采用了总共超15万小时的数据训练&#…

学习笔记——动态路由——OSPF(邻接/邻居)

十、OSPF的邻接/邻居 1、OSPF路由器之间的关系 (1)基本介绍 在OSPF网络中,为了交换链路状态信息和路由信息,邻居设备之间首先要建立邻接关系,邻居(Neighbors)关系和邻接(Adjacencies)关系是两个不同的概念。 OSPF路由器的两种关系&#x…

创建线程的五种方式

一.继承Thread ,重写run class MyThread extends Thread{Overridepublic void run() {//这里的内容就是该线程要完成的工作while(true) {System.out.println("hello thread");try {Thread.sleep(1000);} catch (InterruptedException e) {throw new RuntimeExceptio…

【CUDA】

笔者在学习Softmax实现时遇到了一个问题,很多文章直接将softmax的计算分成了五个过程,而没有解释每个过程的含义,尤其是在阅读这篇文章时,作者想计算最基本的softmax的效率,以展示可行的优化空间: 贴一个g…

windows 服务器安装svn服务端、迁移svn

svn服务器版本 因为要把旧svn迁移到新的svn,为了保证迁移后的稳定性,安装包使用的旧服务器的svn服务器版本 VisualSVN-Server-3.6.1-x64.msi 安装 配置仓库路径等 其他没截图的就默认配置下一步即可。安装完成先不要启动 迁移 旧的svn服务器直接把…

软件工程(上)

目录 软件过程模型(软件开发模型) 瀑布模型 原型模型 V模型 构件组装模型 螺旋模型(原型瀑布) 基于构件的软件工程(CBSE) 快速应用开发模型(RAD) 统一过程(UP&a…

论文复现-基于决策树算法构建银行贷款审批预测模型(金融风控场景)

作者Toby,来源公众号:Python风控模型,基于决策树算法构建银行贷款审批预测模型 目录 1.金融风控论文复现 2.项目背景介绍 3.决策树介绍 4.数据集介绍 5.合规风险提醒 6.技术工具 7.实验过程 7.1导入数据 7.2数据预处理 7.3数据可…

SpringBoot3+Vue3开发园区管理系统

介绍 在当今快速发展的城市化进程中,高效、智能的园区管理成为了提升居民生活品质、优化企业运营环境的关键。为此,我们精心打造了全方位、一体化的园区综合管理系统,该系统深度融合了园区管理、楼栋管理、楼层管理、房间管理以及车位管理等…

基于S32K144驱动NSD8381

文章目录 1.前言2.芯片介绍2.1 芯片简介2.2 硬件特性2.3 软件特性 3.测试环境3.1 工具3.2 架构 4.软件驱动4.1 SPI4.2 CTRL引脚4.3 寄存器4.4 双极性步进电机驱动流程 5.测试情况6.参考资料 1.前言 最近有些做电磁阀和调光大灯的客户需要寻找国产的双极性步进电机驱动&#xf…

mysql 命令 —— 查看表信息(show table status)

查询表信息,如整个表的数据量大小、表的索引占用空间大小等 1、查询某个库下面的所有表信息: SHOW TABLE STATUS FROM your_database_name;2、查询指定的表信息: SHOW TABLE STATUS LIKE your_table_name;如:Data_length 显示表…

郭明錤:苹果将为Vision Pro推出红外摄像头款AirPods

在科技界,苹果公司的每一次创新都备受瞩目。近日,著名苹果分析师郭明錤透露了一个令人振奋的消息:苹果计划在2026年推出配备红外摄像头的新款AirPods,这款耳机将特别优化与Apple Vision Pro头显的空间体验。这一消息不仅预示着苹果在音频设备领域的又一次技术飞跃,也进一步…

记录第一次使用air热更新golang项目

下载 go install github.com/cosmtrek/airlatest 下载时提示: module declares its path as: github.com/air-verse/air but was required as: github.com/cosmtrek/air 此时,需要在go.mod中加上这么一句: replace github.com/cosmtrek/air &…

【项目管理】常见的敏捷实践:Scrum框架

【项目管理】常见的敏捷实践:Scrum框架 精益、敏捷与Scrum框架Scrum框架实践Sprint(冲刺)Scrum角色Scrum工件Scrum会议 精益、敏捷与Scrum框架 敏捷与精益思想、看板、Scrum等概念的关系如下图所示: Lean 精益 Kanban 看板 Ag…

QT入门笔记-自定义控件封装 30

具体代码如下: QT core guigreaterThan(QT_MAJOR_VERSION, 4): QT widgetsCONFIG c17# You can make your code fail to compile if it uses deprecated APIs. # In order to do so, uncomment the following line. #DEFINES QT_DISABLE_DEPRECATED_BEFORE0x060000 …

Kyutai 推出了 Moshi Chat,这是一种既可以实时收听又可以说话的 AI

Kyutai 是一家专注于开放式 AI 研究的非营利性实验室,它推出了开源的 Moshi Chat 项目 Kyutai 是一家致力于推进人工智能 (AI) 开放研究的非营利性实验室,其最新创新 Moshi Chat 取得了重大进展。这种尖端的实时原生多模态基础模…

加密(3)非对称加密

一、介绍 1、概念 非对称加密,又称现代加密算法,非对称加密是计算机通信安全的基石,保证了加密数据不会被破解。加密和解密使用的是两个不同的密钥,这种算法叫作非对称加密算法。 2、示例 首先生成密钥对, 公钥为(5,14)&#…

【图解大数据技术】Flume、Kafka、Sqoop

【图解大数据技术】Flume、Kafka、Sqoop FlumeFlume简介Flume的应用场景 KafkaKafka简介Kafka架构Flume与Kafka集成 SqoopSqoop简介Sqoop原理sqoop搭配任务调度器实现定时数据同步 Flume Flume简介 Flume是一个数据采集工具,多用于大数据技术架构下的日志采集。 …

【C++】#1

关键字&#xff1a; 基本框架、多个main执行、快捷键、cout规则 基本框架&#xff1a; #include <iostream> using namespace std;int main() {//具体内容return 0; } 多个main函数可执行&#xff1a; 常用快捷键&#xff1a; cout规则&#xff1a;

使用 Git Hooks 防止敏感信息泄露

欢迎关注公众号&#xff1a;冬瓜白 在日常开发中&#xff0c;我们可能会不小心将敏感信息提交到 Git。为了防止这种情况&#xff0c;可以利用 Git Hooks 编写一个简单的脚本&#xff0c;当发现提交中包含敏感词时&#xff0c;给出提示。 以下是一个基于 pre-commit 钩子的示例…

Stream流真的很好,但答应我别用toMap()

你可能会想&#xff0c;toList 和 toSet 都这么便捷顺手了&#xff0c;当又怎么能少得了 toMap() 呢。 答应我&#xff0c;一定打消你的这个想法&#xff0c;否则这将成为你噩梦的开端。 让我们先准备一个用户实体类。 Data AllArgsConstructor public class User { priv…