当前位置: 首页 > news >正文

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模型,考虑到优化运动模糊和光照变化性能而丧失了一部分长距离理解性能。

相关文章:

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渲染技术…...

2407C++,从构生成协议文件

原文 protobuf会根据proto文件生成c对象及其序化/反序化方法,而iguana的struct_pb则是以结构为核心,编译期反射来生成序化/反序化代码. 有人提出能不能按proto文件输出结构呢,这样就可给其它语言用了,很好建议,实现起来也比较简单. protobuf是从proto文件到c对象,而struct_p…...

遗传算法求解TSP

一、基本步骤 遗传算法求解旅行商问题(TSP)的一般步骤如下: 编码: 通常采用整数编码,将城市的访问顺序表示为一个染色体。例如,假设有 5 个城市,编码为[1, 3, 5, 2, 4],表示旅行商的…...

鸿蒙开发:Universal Keystore Kit(密钥管理服务)【明文导入密钥(C/C++)】

明文导入密钥(C/C) 以明文导入ECC密钥为例。具体的场景介绍及支持的算法规格 在CMake脚本中链接相关动态库 target_link_libraries(entry PUBLIC libhuks_ndk.z.so)开发步骤 指定密钥别名keyAlias。 密钥别名的最大长度为64字节。 封装密钥属性集和密钥材料。通过[OH_Huks_I…...

视频汇聚/安防监控/GB28181国标EasyCVR视频综合管理平台出现串流的原因排查及解决

安防视频监控系统/视频汇聚EasyCVR视频综合管理平台,采用了开放式的网络结构,能在复杂的网络环境中(专网、局域网、广域网、VPN、公网等)将前端海量的设备进行统一集中接入与视频汇聚管理,视频汇聚EasyCVR平台支持设备…...

TypeError: Cannot read properties of null (reading ‘nextSibling‘)

做项目用的Vue3Vite, 在画静态页面时,点击菜单跳转之后总是出现如下报错,百思不得其解。看了网上很多回答,也没有解决问题,然后试了很多方法,最后竟然发现是template里边没有结构的原因。。。 原来我的index.vue是这样…...

解决 npm intasll 安装报错 Error: EPERM: operation not permitted

Node.js安装及环境配置完成之后 npm install express -g 安装全局的模块报错提示没有权限operation not permitted mkdir 错误编号4048: 其原因是当前用户操作该目录权限不足,当以管理员身份运行cmd,再执行npm install express -g 是不会报权…...

redis实用技能

为什么要使用redis及其使用场景 大部分场景是应对高并发高性能场景才会使用,就是访问量已经超过mysql所能承受的,需要做缓存,帮助mysql分流。或者一些复杂查询,mysql执行很慢没法优化,可以做缓存提速(做缓存)做认证服务的时候需要存储用户的session信息,使用redis数据有…...

AcWing 1260:二叉树输出

【题目来源】https://www.acwing.com/problem/content/1262/【题目描述】 树的凹入表示法主要用于树的屏幕或打印输出,其表示的基本思想是兄弟间等长,一个结点的长度要不小于其子结点的长度。 二叉树也可以这样表示,假设叶结点的长度为 1&…...

刷爆leetcode第十期

题目一 相同的树 给你两棵二叉树的根节点 p 和 q ,编写一个函数来检验这两棵树是否相同。 如果两个树在结构上相同,并且节点具有相同的值,则认为它们是相同的。 首先我们要来判断下它们的根是否相等 根相等的话是否它们的左子树相等 是否…...

Python28-7.5 降维算法之t-分布邻域嵌入t-SNE

t-分布邻域嵌入(t-distributed Stochastic Neighbor Embedding,t-SNE)是一种用于数据降维和可视化的机器学习算法,尤其适用于高维数据的降维。t-SNE通过将高维数据嵌入到低维空间(通常是二维或三维)中&…...

一个最简单的comsol斜坡稳定性分析例子——详细步骤

一个最简单的comsol斜坡稳定性分析例子——详细步骤 标准模型例子—详细步骤 线弹性模型下的地应力平衡预应力与预应变、土壤塑性和安全系数求解的辅助扫描...

Java 变量类型

在Java中,变量类型包括基本数据类型和引用数据类型,每种类型有其特定的用途和存储方式。 ### 1. 基本数据类型 Java的基本数据类型包括整数类型、浮点类型、字符类型和布尔类型,它们分别是: - **整数类型**:用于存储…...

【排序算法】—— 快速排序

快速排序的原理是交换排序,其中qsort函数用的排序原理就是快速排序,它是一种效率较高的不稳定函数,时间复杂度为O(N*longN),接下来就来学习一下快速排序。 一、快速排序思路 1.整体思路 以升序排序为例: (1)、首先随…...

前端JS特效第22波:jQuery滑动手风琴内容切换特效

jQuery滑动手风琴内容切换特效&#xff0c;先来看看效果&#xff1a; 部分核心的代码如下&#xff1a; <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xm…...

redis的数据类型对应的使用场景

Redis提供了多种数据类型&#xff0c;每种数据类型都有其特定的适用场景。以下是Redis主要数据类型及其典型应用场景&#xff1a;1. 字符串(String) 应用场景&#xff1a;适用于存储简单的键值对数据&#xff0c;如用户基本信息、计数器&#xff08;如网页访问次数&…...

ctfshow-web入门-命令执行(web118详解)Linux 内置变量与Bash切片

输入数字和小写字母&#xff0c;回显 evil input 查看源码&#xff0c;发现这里会将提交的参数 code 传给 system 函数 使用 burpsuite 抓包进行单个字符的模糊测试 fuzz&#xff1a; 发现过滤掉了数字和小写字母以及一些符号&#xff0c;下面框起来的部分是可用的 结合题目提…...

C语言 指针和数组——指针和二维数组之间的关系

目录 换个角度看二维数组 指向二维数组的行指针 按行指针访问二维数组元素 再换一个角度看二维数组 按列指针访问二维数组元素 二维数组作函数参数 指向二维数组的行指针作函数参数 指向二维数组的列指针作函数参数​编辑 用const保护你传给函数的数据 小结 换个角度看…...

问题集锦1

01.inner中使用JwtTokenUtil.getUserCode() 前端调用上传&#xff08;java&#xff09;&#xff0c;上传使用加购 Overridepublic Boolean insertShoppingCart(InsertShoppingCartParamsDto dto) {// 通过userCode,itemCode和supplierCode来判断当前加购人添加到购物车的商品是…...

浅析MySQL-索引篇01

什么是索引&#xff1f; 索引是帮助存储引擎快速获取数据的一种数据结构&#xff0c;类似于数据的目录。 索引的分类 按数据结构分类&#xff1a; MySQL 常见索引有 BTree 索引、HASH 索引、Full-Text 索引。 Innodb是MySQL5.5之后的默认存储引擎&#xff0c;BTree索引类型也…...

2028年企业云存储支出翻倍,达到1280亿美元

根据Omdia的研究&#xff0c;到2028年&#xff0c;企业云存储支出将从去年的570亿美元翻一番以上&#xff0c;达到1280亿美元。该研究分析了基础设施即服务&#xff08;IaaS&#xff09;和平台即服务&#xff08;PaaS&#xff09;数据中心的收入&#xff0c;作为年度存储数据服…...

ActiViz中的颜色映射表vtkLookupTable

文章目录 一、简介二、VtkLookupTable的创建与初始化三、设置数据范围四、颜色映射设置五、不透明度设置六、自定义颜色映射七、 不连续性颜色映射八、 预设颜色映射方案九、可视化效果优化十、与其他VTK组件的整合十一、 动态调整映射表十二、保存和加载颜色映射表一、简介 V…...

【Spring AOP 源码解析前篇】什么是 AOP | 通知类型 | 切点表达式| AOP 如何使用

前言&#xff08;关于源码航行&#xff09; 在准备面试和学习的过程中&#xff0c;我阅读了还算多的源码&#xff0c;比如 JUC、Spring、MyBatis&#xff0c;收获了很多代码的设计思想&#xff0c;也对平时调用的 API 有了更深入的理解&#xff1b;但过多散乱的笔记给我的整理…...

Laravel HTTP客户端:网络请求的瑞士军刀

标题&#xff1a;Laravel HTTP客户端&#xff1a;网络请求的瑞士军刀 Laravel的HTTP客户端是一个功能强大的工具&#xff0c;它提供了一种简洁、直观的方式来发送HTTP请求。无论是与外部API集成&#xff0c;还是进行网络数据抓取&#xff0c;Laravel的HTTP客户端都能满足你的需…...

7月07日,每日信息差

第一、6 月份&#xff0c;北京、上海、广州和深圳的新建商品住宅成交量分别环比增加 21%、66%、48% 和 38%&#xff0c;均创年内新高 第二、2024 年世界人工智能大会上&#xff0c;上海向四家企业发放了首批无驾驶人智能网联汽车示范应用许可&#xff0c;这些企业可以在浦东部…...

ubuntu 网络常用命令

在Ubuntu中&#xff0c;有许多网络相关的常用命令。以下是一些主要命令及其用途&#xff1a; ifconfig&#xff1a;此命令用于显示和配置网络接口信息。你可以使用它来查看IP地址、子网掩码、广播地址等。 例如&#xff1a;ifconfig 注意&#xff1a;在新版本的Linux发行版中…...

Python28-7.4 独立成分分析ICA分离混合音频

独立成分分析&#xff08;Independent Component Analysis&#xff0c;ICA&#xff09;是一种统计与计算技术&#xff0c;主要用于信号分离&#xff0c;即从多种混合信号中提取出独立的信号源。ICA在处理盲源分离&#xff08;Blind Source Separation&#xff0c;BSS&#xff0…...

Spring Boot与Okta的集成

Spring Boot与Okta的集成 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天我们将探讨如何在Spring Boot应用中集成Okta&#xff0c;实现身份认证和授权的功能…...

MVC(Model-View-Controller)模式

MVC&#xff08;Model-View-Controller&#xff09;模式三个主要组件&#xff1a;模型&#xff08;Model&#xff09;&#xff0c;视图&#xff08;View&#xff09;&#xff0c;和控制器&#xff08;Controller&#xff09;&#xff1a; 模型&#xff08;Model&#xff09;&a…...

MuLan:模仿人类画家的多对象图像生成

在图像生成领域&#xff0c;处理包含多个对象及其空间关系、相对大小、重叠和属性绑定的复杂提示时&#xff0c;现有的文本到图像模型仍面临挑战&#xff1a;当文本提示中包含多个对象&#xff0c;并且这些对象之间存在特定的空间关系时&#xff0c;现有模型往往难以准确地捕捉…...