经典文献阅读之--Orbeez-SLAM(单目稠密点云建图)

2023-05-16

0. 简介

对于现在的VSLAM而言,现在越来越多的工作开始聚焦于如何将深度学习结合到VSLAM当中,而最近的这个工作就给出了一个比较合适的方法。《Orbeez-SLAM: A Real-time Monocular Visual SLAM with ORB Features and NeRF-realized Mapping》这篇文章,可以轻松适应新的场景,而不需要预先训练,并实时为下游任务生成密集的地图。它成功地与隐式神经表示法(NERF)和视觉里程法相结合,实现了只需要RGB输入即可完成通过视觉信号执行复杂任务并与人类合作的空间人工智能。

1. 主要贡献

本文试图开发一种单目视觉SLAM,它无需预训练,并实现实时推理,以供实际应用。为此,我们提出了Orbeez-SLAM,结合了基于特征的SLAM(例如,ORB-SLAM2[1])和基于instant-ngp框架[7]的NeRF。与[5]、[6]不同的是,我们强调VO(在ORB-SLAM2中)即使在训练的早期阶段也可以提供更好的摄像机姿态估计,这使得orbez - slam可以在单目摄像机上工作,即无需深度监督。此外,我们同时通过VO估计相机姿态并更新NeRF网络。值得注意的是,训练过程是在线实时的,不需要预先训练,如图1所示。因此,OrbeezSLAM可以渲染密集的信息,如场景的深度和颜色。此外,在各种室内场景中进行了验证,并在速度、摄像机跟踪和重建方面优于NeRF-SLAM基线。综上所述,我们的贡献有三:

  1. 我们提出了Orbeez-SLAM,这是第一个实时单目视觉SLAM,它无需预训练,提供密集的地图,专为空间人工智能应用而定制。
  2. 通过结合视觉里程计和快速NERF框架,我们的方法实现了实时推理,并生成了密集的地图。
  3. 我们广泛验证Orbeez-SLAM在挑战性基准方面具有最先进水平(SOTA)的基线,显示出卓越的定量和定性结果。

2. 详细内容

为了计算密集地图,最近一种基于学习的可视化SLAM, Tandem[3],利用截断符号距离函数(TSDF)融合来提供密集的3D地图。如[3]中所述,Tandem实现了实时推断,并可以与单目摄像机一起工作。但是,TSDF融合中涉及深度估计,而Tandem中的深度估计模块在推理前需要进行预训练,这限制了其对与预训练场景有明显不同的新场景的适应性。

神经辐射场(Neural Radiance Field, NeRF)[4]是另一种隐式神经表示,在训练过程中不需要深度监督,可以在目标场景从头开始训练。基于这一特性,在可视化SLAM中使用NeRF作为映射是一个潜在的方向。两个最新的NeRF-SLAM[5],[6]呼应了我们的动机。其中,iMAP[5]是第一个在SLAM中让NeRF作为地图表示的作品。同时,它通过NeRF光度损失的反向传播来优化相机姿态。然后,NICE-SLAM[6]对iMAP进行了扩展,开发了分层特征网格模块。该模块允许NICE-SLAM针对大型场景进行扩展,而不会出现灾难性的遗忘。然而,上述NeRF-SLAM需要RGB-D输入,因为它们纯粹通过神经网络优化相机姿态,而没有视觉里程计(VO),导致初始定位不佳。换句话说,他们仍然需要深度信息来指导三维几何。此外,NeRF的一个显著缺点是收敛速度较慢。具体来说,在进程中有大量的渲染,这使得实时训练NeRF举步维艰。通过观察这一点,instant-ngp[7]补偿了训练速度问题。在多分辨率哈希编码和CUDA框架[8]的帮助下,instant-ngp可以在几秒钟内训练nerf。

与之前需要深度信息来更好地感知几何形状的nerf - slam[5]和[6]不同,本文的Orbeez-SLAM利用VO进行精确的姿态估计,用单目摄像机生成密集地图。实现了预训练自适应和实时推理。

2.1 整个系统结构

在这里插入图片描述
图3显示了我们的系统管道。跟踪过程从输入图像流I中提取图像特征,并通过视觉测程估计相机姿态。映射系统通过三角测量生成地图点,并通过束调整(重投影误差)优化相机姿势和地图点。这些地图点代表稀疏点云。然后我们利用更新的相机姿势和地图来训练NeRF。由于这个过程是可微的,我们仍然可以从NeRF光度损失中优化相机姿态。最后,NeRF可以为下游任务生成密集映射。此外,这个管道应该适用于任何提供稀疏点云的SLAM。

2.2 后端估计优化

以下目标用于优化OrbeezSLAM: ( a ) (a) (a)位姿估计, ( b ) (b) (b)束调整, ( c ) (c) (c) NeRF回归。其中 ( a ) (a) (a)在跟踪过程中, ( b ) (b) (b) ( c ) (c) (c)在映射过程中进行。

  1. 位姿估计:重投影误差[28]在基于特征的SLAM中被广泛用于位姿估计[1],[21],[22],其公式如下:
    在这里插入图片描述
    其中 u i j u_{ij} uij为图像上的像素位置,由第 j j j台摄像机 C j \mathcal{C}_j Cj观测到,由第 i i i个3D点投影。 π ( C j , P i ) π(\mathcal{C}_j, P_i) π(Cj,Pi)通过 1 Z K j ( R j P i + t j ) \frac{1}{Z} K_j (R_jP_i + t_j) Z1Kj(RjPi+tj)将三维地图点Pi投影到像素坐标,其中 P i = [ X , Y , Z ] T P_i = [X, Y, Z]^T Pi=[X,Y,Z]T K j K_j Kj [ R ∣ T ] j [R| T]_j [RT]j C j \mathcal{C}_j Cj描述的内在和外在(世界到相机)。我们通过最小化重投影误差来优化相机姿态 { [ R ∣ t ] j } \{[R|t]_j\} {[Rt]j}:

在这里插入图片描述

Bundle adjustment::在VO的三角测量步骤之后,新的地图点被添加到本地地图中。束调整目标也最小化了地图点位置和相机姿势的重投影误差:

在这里插入图片描述

…详情请参照古月居

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

经典文献阅读之--Orbeez-SLAM(单目稠密点云建图) 的相关文章

  • 【Linux】Ubuntu 18.04安装aptitude命令

    在ubuntu18 04 下通过如下命令进行aptitude命令的安装 xff0c span class token function sudo span span class token function apt get span spa
  • 卡尔曼滤波(Kalman Filter)原理理解和测试

    Kalman Filter学原理学习 1 Kalman Filter 历史 Kalman滤波器的历史 xff0c 最早要追溯到17世纪 xff0c Roger Cotes开始研究最小均方问题 但由于缺少实际案例的支撑 xff08 那个时候哪
  • ROS与开发板入门教程-树莓派3源码安装Turtlebot(ubuntu mate 16.04+kinetic+Turtlebot)

    ROS与开发板入门教程 树莓派3源码安装Turtlebot ubuntu mate 16 04 43 kinetic 43 Turtlebot ROS与开发板入门教程 树莓派3源码安装Turtlebot ubuntu mate16 04 4
  • Linux下Node.js和NPM安装和配置

    目录 前言 1 安装Nodejs和NPM 2 NPM的配置 3 nodejs的基本使用 3 1 搭建简易后端服务器 4 npm的基本使用 4 1 搭建vue 2 0开发环境 前言 Nodejs简介 Node js是一个基于Chrome V8
  • 年轻人,你为什么要来阿里搞技术?

    阿里妹导读 xff1a 刚刚毕业的年轻技术人 xff0c 为何会选择阿里巴巴 xff1f 也许 xff0c 因为这里是学术和实践充分融合的实验场 xff0c 也许是因为在这里理论的确可以改变生活 xff0c 也许只是为了感受在西湖畔写代码的
  • C语言字符数组与字符串的使用及加结束符‘\0‘的问题

    1 字符数组的定义与初始化 字符数组的初始化 xff0c 最容易理解的方式就是逐个字符赋给数组中各元素 char str 10 61 I a m h a p p y 即把10个字符分别赋给str 0 到str 9 10个元素 如果花括号中提
  • 追求技术之路 - 那些陪伴我的书籍

    如今已经在广州一家嵌入式公司实习 xff0c 分享大学里度过的一些书籍 xff0c 有些还没读完 xff0c 个人比较喜欢经典书籍 xff0c 研读起来就有种奇妙的感觉 xff0c 比起人与人之间的复杂的关系 xff0c 书籍带给我的感觉很
  • 中断,异常,系统调用,进程切换时的堆栈变化和寄存器保存

    1 中断 xff0c 异常 xff0c 系统调用相同 xff1a CPU自动压入 xff1a ss 运行级别提升时需切换堆栈 xff0c 因此多压入用户态的栈段ss xff0c esp 运行级别提升时需切换堆栈 xff0c 因此多压入用户态
  • Pipeline 核心语法

    常用开发工具 选择任意pipeline类型的作业 xff0c 点击 流水线语法 即可进入pipeline开发工具页面 1 片段生成器 流水线代码片段生成器 xff0c 非常好用 xff0c 在这里可以找到每个插件以及Jenkins内置的方法
  • Pipeline Groovy 语法

    Groovy是一种功能强大 xff0c 可选类型和动态 语言 xff0c 支持Java平台 旨在提高开发人员的生产力得益于简洁 xff0c 熟悉且简单易学的语法 可以与任何Java程序顺利集成 xff0c 并立即为您的应用程序提供强大的功能
  • Jenkins 共享库应用

    1 创建一个共享库 1 xff09 创建共享库 可以直接在github中创建一个公开类型的仓库 xff0c 也可以创建私有类型的gitlab仓库 xff0c 需要提前配置好仓库的认证凭据 xff0c 这里使用gitlab创建了一个名为jen
  • Generic WebHookTrigger 自动触发

    1 安装配置 Generic WebHookTrigger 目的 xff1a 为Jenkins作业添加触发器 xff0c 便于其他系统调用 安装配置Generic WebHook xff0c 插件名称 xff1a Generic Webho
  • Jenkins 权限管理与凭据

    权限管理 安装插件 Role Based Strategy 可以对Jenkins用户进行权限管理 xff0c 如果在Jenkins控制台安装插件失败 xff0c 可以去Jenkins官网下载插件然后再上传 Role based Author
  • 部署Maven环境

    JDK xff1a 在maven3 3 以上的版本需要JDK版本1 7 43 xff0c 内存 xff1a 没有最低限制 磁盘 xff1a 1G 43 可用磁盘空间 操作系统 xff1a 没有限制 下载地址 xff1a Maven Down
  • Maven 集成

    先在执行节点上安装Maven xff1a 部署Maven环境 lovely nn的博客 CSDN博客 JDK xff1a 在maven3 3 以上的版本需要JDK版本1 7 43 xff0c 内存 xff1a 没有最低限制 磁盘 xff1a
  • 哪些技术好书值得一读再读?阿里大牛列了一份经典书单

    喜爱读书 xff0c 就等于把生活中寂寞无聊的时光换成巨大享受的时刻 有了书 xff0c 各个领域的智慧 xff0c 几乎触手可及 我们能有幸站在前辈 巨人的肩膀上 xff0c 看更远的风景 4月23日世界读书日 xff0c 阿里九位技术大
  • JDK 环境部署

    环境Centos 7 6 卸载旧的 查看旧的java版本 java version 查看jdk信息 rpm qa grep i jdk 卸载jdk rpm e nodeps jdk信息 安装新的 rpm安装1jdk rpm ivh jdk
  • Docker部署Gitlab

    这里用docker部署gitlab ce 14 0 0 ce 0版本 xff1a docker pull gitlab gitlab ce 14 0 0 ce 0 mkdir p gitlab1 config data logs docke
  • Pipeline 部署K8S应用

    概述 提前在K8S集群中部署jenkins和gitlab应用 xff0c gitlab用于存放应K8S的资源清单Yaml文件 xff0c Jenkins用于拉取gitlab上的Yaml文件并将其部署到K8S集群中 将所有Yaml文件放在Gi
  • curl https方式访问kubernetes集群API

    使用curl https方式访问kubernetes集群的api 认证方式需要用到token xff0c 这里使用变量赋予APISERVER 和TOKEN的值 apiserver xff1a APISERVER 61 kubectl con

随机推荐

  • Deployment 回滚

    更新Deployment资源时 xff0c pod状态为Pending xff0c 使用delete命令是删不掉Pending的pod的 xff0c 因为Deployment会无限创建 xff0c 这时候需要用到Deployment的回滚功
  • 在Pod中执行目录操作,提示Permission denied

    问题 xff1a 进入Pod执行创建文件的操作 xff0c 出现如下报错 kubectl exec it jenkins 5b688ddcc7 h72f2 n cicd bash touch test touch cannot touch
  • Copy宿主机文件到Docker容器中

    1 查找容器名 docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 67686c68c78c keycloak v3 34 opt keycloak bin k 3
  • K8S中部署Grafana

    官方部署文档 xff1a Deploy Grafana on Kubernetes Grafana Labs 以下Yaml从官方copy下来的并做了些修改 xff0c Service使用Nodeport方式是为了便于本地访问 cat gra
  • 在 AlertManager 报警通知中展示监控图表

    参考原文档 xff1a 在 AlertManager 报警通知中展示监控图表 Promoter 是一个用于 AlertManager 通知的 Webhooks 实现 xff0c 支持在消息通知中展示实时报警图表 xff0c 也支持定制消息通
  • Github添加SSH keys

    问题 xff1a 在本地 xff08 linux系统 xff09 下载github仓库源代码时 xff0c 执行git clone 命令时出现以下报错 xff1a git clone git 64 github com hh hub pro
  • 阿里技术大牛最爱的“闲书”,你看过多少?

    在忙碌的写代码 修bug生活里 xff0c 你有多久没有闲下来 xff0c 读读 闲书 xff0c 取悦自己了呢 xff1f 正如梁文道所说 xff0c 读一些无用的书 xff0c 做一些无用的事 xff0c 花一些无用的时间 xff0c
  • blackbox_exporter 黑盒监测

    一 简介 blackbox exporter blackbox exporter是Prometheus 官方提供的 exporter 之一 xff0c 可以提供 http dns tcp icmp 的监控数据采集 xff0c blackbo
  • Python 与Django环境搭建

    系统 xff1a Windows 10 python环境搭建 1 python安装步骤 python包下载链接 xff1a https www python org downloads windows 下载版本 xff1a python 3
  • prometheus图

    Prometheus Server 框架图 xff0c 只要能提供对应的metrics接口 xff0c promehteus就能接入监控 xff0c prometheus会把抓取到的指标数据持久化到本地磁盘中 xff0c 跟其它数据库一样它
  • 经典文献阅读之--BEVDistill(BEV蒸馏)

    0 简介 之前作者前段时间在研究BEV的相关算法 xff0c 当时就觉得BEV算法好是好 xff0c 但是所需要的内存以及计算资源实在是太大了 xff0c 无法实时在真实场景中运行 我们知道多视图 xff08 multi view 三维目标
  • 经典文献阅读之--FastFlowNet(轻量光流估计)

    0 简介 密集的光流估计在许多机器人视觉任务中起着关键作用 随着深度学习的到来 xff0c 已经比传统方法以令人满意的精度预测了它 然而 xff0c 当前的网络经常占用大量参数并且需要沉重的计算成本 这些缺点阻碍了在功率或内存受限的移动设备
  • Matlab与ROS(1/2)---Message(三)

    0 简介 消息是ROS中交换数据的主要容器 主题和服务使用消息在节点之间传输数据 为了标识其数据结构 xff0c 每条消息都有一个消息类型 例如 xff0c 来自激光扫描仪的传感器数据通常以sensor msgs LaserScan类型的消
  • Matlab与ROS(1/2)---发布者和订阅者数据通信(四)

    0 简介 我们在前面一节介绍了Matlab与Message的通信 xff0c 而我们这一节主要来介绍发布者和订阅者在Matlab中的操作 这部分我们主要来看一下ROS1和ROS2中分别是如何使用Topic的 1 ROS1的消息订阅与发布 1
  • Matlab与ROS(1/2)---服务端和客户端数据通信(五)

    0 简介 在前几讲我们讲了Matlab中的Message以及Topic的相关知识 而ROS主要支持的通信机制还有服务这一类 服务通过允许请求以及响应的通信方式 xff0c 来给整个系统完成更紧密的耦合 服务客户端向服务服务器发送请求消息并等
  • Matlab与ROS---Action与Gazebo(六)

    0 简介 对于ROS1而言 xff0c 其在Matlab当中相较于ROS2还有一些比较高级的用法 xff0c 比如说我们接下来要说的Action和Gazebo仿真 1 ROS Action ROS的Action行为模式当中也存在有一个客户端
  • Matlab与ROS---TF坐标系(七)

    0 简介 我们上面讲了最基础的通信机制以及在Matlab中如何使用这些通信 xff0c 下面我们这一讲来主要介绍ROS当中最常用的TF坐标系在Matlab中的使用 tf是分布式的 xff0c 因此所有的坐标帧信息对ROS网络中的每个节点都是
  • OCR如何读取皱巴巴的文件?深度学习在文档图像形变矫正的应用详解

    阿里妹导读 xff1a OCR作为智能审核的重要环节 xff0c 其识别准确率影响着最终审核效果的好坏 xff0c 而来自扫描仪 智能手机的文档图像多存在卷曲 折叠 本文旨在利用深度学习算法对文档图像的形变进行矫正 xff0c 从而提高OC
  • 经典文献阅读之--VGICP(体素化的ICP匹配)

    0 简介 之前我们在以前的文章中介绍了很多有关于点云匹配相关的知识 xff0c 最近两年处理GICP这一大一统的ICP匹配方法以外 xff0c 还有一个工作对体素化和ICP这两者打起了心思 xff0c Voxelized GICP for
  • 经典文献阅读之--Orbeez-SLAM(单目稠密点云建图)

    0 简介 对于现在的VSLAM而言 xff0c 现在越来越多的工作开始聚焦于如何将深度学习结合到VSLAM当中 xff0c 而最近的这个工作就给出了一个比较合适的方法 Orbeez SLAM A Real time Monocular Vi