DeepVO 论文阅读

news2024/9/22 9:41:22

论文信息

题目:DeepVO Towards End-to-End Visual Odometry with Deep Recurrent Convolutional Neural Networks
作者:Sen Wang, Ronald Clark, Hongkai Wen and Niki Trigoni
代码地址:http://senwang.gitlab.io/DeepVO/ (原作者并没有开源)
pytorch版本代码地址:https://github.com/ChiWeiHsiao/DeepVO-pytorch
时间:2017年

Abstract

大多数现有的单目视觉里程计(VO)算法都是在标准流程下开发的,包括特征提取、特征匹配、运动估计、局部优化等。虽然其中一些算法已经表现出优越的性能,但它们通常需要仔细设计和专门微调才能正常工作在不同的环境中。恢复单眼 VO 的绝对尺度还需要一些先验知识

本文通过使用深度循环卷积神经网络 (RCNNs) ,提出了一种新颖的单目 VO 端到端框架。由于它是以端到端的方式进行训练和部署的,因此它可以直接从一系列原始RGB图像(视频)数据中推断出相机姿态,无需采用传统VO管道中的任何模块。

基于 RCNN,它不仅通过卷积神经网络自动学习 VO 问题的有效特征表示,而且还使用深度循环神经网络隐式建模顺序动态和关系。

Introduction

在本文中,我们利用深度循环卷积神经网络(RCNN)提出了一种基于深度学习的新型单目 VO 算法 。由于它是以端到端的方式实现的,因此它不需要经典 VO 管道中的任何模块(甚至相机校准)。
主要贡献有三方面:
1)我们证明单目VO问题可以通过基于深度学习的端到端方式解决,即直接从原始 RGB 图像估计姿势。恢复绝对尺度既不需要先验知识也不需要参数。
2)我们提出了一种 RCNN 架构,通过使用 CNN 学习的几何特征表示,能够将基于 DL 的 VO 算法推广到全新的环境。
3) 图像序列的序列依赖性和复杂的运动动力学对于 VO 很重要,但人类无法显式或轻松地建模,但它们可以由深度递归神经网络 (RNN) 隐式封装和自动学习。

Related Work

基于几何的方法

(这部分不多解释)
1)基于稀疏特征的方法:
2)直接方法:

基于学习的方法

由于 CNN 无法对顺序信息进行建模,因此之前的工作都没有考虑图像序列或视频进行顺序学习。在这项工作中,我们通过利用 RNN 来解决这个问题。

通过 RCNN 进行端到端视觉里程计

提出的RCNN框架

所提出的端到端 VO 系统的架构如图 所示。它以视频剪辑或单目图像序列作为输入。在每个时间步,通过减去训练集的平均 RGB 值来对 RGB 图像帧进行预处理,并且可以选择将其大小调整为 64 倍数的新大小。两个连续图像堆叠在一起以形成张量深度 RCNN 学习如何提取运动信息和估计姿势。具体来说,图像张量被输入 CNN,为单目 VO 生成有效特征,然后通过 RNN 进行顺序学习。每个图像对都会在网络的每个时间步产生一个姿态估计。 VO 系统随着时间的推移而发展,并在捕获图像时估计新的姿势。
在这里插入图片描述

基于CNN的特征提取

KITTI 数据集上的张量示例。它有 9 个卷积层,除了 Conv6 之外,每层后面都有一个修正线性单元 (ReLU) 激活,即:共17层。网络中感受野的大小逐渐从 7 × 7 减小到 5 × 5,然后减小到 3 × 3,以捕获小的有趣特征。引入零填充是为了适应感受野的配置或在卷积后保留张量的空间维度。通道的数量,即用于特征检测的滤波器的数量,增加以学习各种特征。
在这里插入图片描述
CNN的构成:
在这里插入图片描述

基于RNN的序列建模

RNN 与 CNN 的不同之处在于,它随着时间的推移保持其隐藏状态的记忆,并且它们之间具有反馈循环,这使得其当前隐藏状态成为先前隐藏状态的函数,如图 2 所示的 RNN 部分。因此, RNN 可以找出输入与序列中先前状态之间的联系。给定时间 k k k 的卷积特征 x k x_k xk,RNN 在时间步 k k k 更新为:
在这里插入图片描述
where h k h_k hk and y k y_k yk are the hidden state and output at time k k k respectively, W terms denote corresponding weight matrices, b b b terms denote bias vectors, and H H H is an element-wise non- linear activation function, such as sigmoid or hyperbolic tangent.

为了能够发现和利用长轨迹拍摄的图像之间的相关性,我们采用长短期记忆(LSTM)作为我们的 RNN,它能够通过引入记忆门和单元来学习长期依赖性。它明确确定要丢弃或保留哪些先前的隐藏状态以更新当前状态,并期望在姿势估计期间学习运动。
在这里插入图片描述

图 3 显示了折叠的 LSTM 及其随时间的展开版本以及 LSTM 单元的内部结构。可以看到,展开LSTM后,每个LSTM单元都与一个时间步相关联。给定时间 k k k 处的输入 x k x_k xk 以及前一个 LSTM 单元的隐藏状态 h k − 1 h_{k−1} hk1 和存储单元 c k − 1 c_{k−1} ck1 ,LSTM 根据以下公式在时间步 k k k 处更新:
在这里插入图片描述
where ⊙ \odot is element-wise product of two vectors, σ is sigmoid non-linearity, t a n h tanh tanh is hyperbolic tangent non-linearity, W terms denote corresponding weight matrices, b b b terms denote bias vectors, i k , f k , g k , c k i_k, f_k, g_k, c_k ik,fk,gk,ck and o k o_k ok are input gate, forget gate, input modulation gate, memory cell and output gate at time k k k, respectively

尽管 LSTM 可以处理长期依赖性并具有深层时间结构,但它仍然需要网络层的深度来学习高级表示和对复杂动态进行建模。

在我们的例子中,深度 RNN 是通过堆叠两个 LSTM 层来构建的,其中一个 LSTM 的隐藏状态是另一个 LSTM 层的输入,如图 2 所示。在我们的网络中,每个 LSTM 层都有 1000 个隐藏状态。

成本函数和优化

所提出的基于 RCNN 的 VO 系统可以被认为是计算相机姿势的条件概率 Y t = ( y 1 , . . . , y t ) Y_t = (y_1, ..., y_t) Yt=(y1,...,yt) 给定一系列单目 RGB 图像 X t = ( x 1 , . . . , x t ) X_t = (x_1, ..., x_t) Xt=(x1,...,xt) 直到时间 t t t从概率的角度来看:
在这里插入图片描述

建模和概率推理在深度 RCNN 中进行。为了找到 VO 的最佳参数 θ*,DNN 最大化 (3):
在这里插入图片描述
为了学习 DNN 的超参数 θ,时间 k 时的地面真实姿势 ( p k , ϕ k ) (p_k, \phi_k) (pk,ϕk) 与其估计姿势 ( p ^ k , ϕ ^ k ) (\hat{p}_k, \hat{\phi}_k) (p^k,ϕ^k)之间的欧几里德距离被最小化。损失函数由所有位置 p 和方向 ϕ \phi ϕ的均方误差 (MSE) 组成:
在这里插入图片描述
其中 ∥ ⋅ ∥ \left \| \cdot \right \| 是 2-范数,κ(实验中为 100)是平衡位置和方向权重的比例因子,N 是样本数。方向 ϕ \phi ϕ 由欧拉角而不是四元数表示,因为四元数受到额外的单位约束,这阻碍了深度学习的优化问题。我们还发现,在实践中使用四元数会在一定程度上降低方向估计。

EXPERIMENTAL RESULTS

1)数据集:KITTI VO/SLAM基准[3]有22个图像序列,其中11个(序列00-10)与地面实况相关。其他 10 个序列(序列 11-21)仅提供原始传感器数据。

由于该数据集是在动态物体较多的城市地区行驶时以相对较低的帧率(10 fps)记录的,并且行驶速度高达90 km/h,因此对于单目VO算法来说非常具有挑战性。

2)训练和测试:进行两个单独的实验来评估所提出的方法。第一个是基于序列00-10,通过groundtruth定量分析其性能,因为groundtruth仅针对这些序列提供。为了有单独的数据集进行测试,仅使用相对较长的序列00、02、08和09进行训练。将轨迹分割成不同的长度,以生成大量的训练数据,总共产生 7410 个样本。训练好的模型在序列03、04、05、06、07和10上进行测试以进行评估。

在这里插入图片描述

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

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

相关文章

驶向专业:嵌入式开发在自动驾驶中的学习之道

导语: 自动驾驶技术在汽车行业中的快速发展为嵌入式开发领域带来了巨大的机遇。作为自动驾驶的核心组成部分,嵌入式开发在驱动汽车的智能化和自主性方面发挥着至关重要的作用。本文将探讨嵌入式开发的学习方向、途径以及未来在自动驾驶领域中的展望。 一、学习方向:…

备战携程面试:Redis Master-Slave异步同步进度独家解析!

Hello 大家好,我是你们的小米!今天我要和大家分享一道来自携程的面试题:Redis Master-Slave异步同步的话怎么判断Slave同步进度? Redis,作为一款非常火热的内存数据库,提供了Master-Slave的异步复制机制&a…

什么是嵌入式软件开发?

嵌入式软件一般是在交叉的开发环境下进行的,这样的运行环境能够让软件开发过程中更加稳定、可靠和安全,在很大程度上提升了软件开发的质量和效率,同时也使得软件开发的难度和程度大大降低。 嵌入式软件的交叉开发环境,反映了用于…

【数据结构篇C++实现】- 特殊的线性表 - 串

友情链接:C/C系列系统学习目录 文章目录 串🚀一、串的定义🚀二、串的存储结构🛴(一)串的顺序存储结构1、定长顺序存储表示2、堆分配存储表示 🛴(二)串的链式存储结构3、块…

ES6 - Iterator迭代器和for...of 循环

文章目录 前言一、Iterator介绍二、Iterator原理三、实现Iterator接口的原生对象有五、默认调用 Iterator 接口的场合六,for... of 循环七,总结 前言 JavaScript 原有的表示“集合”的数据结构,主要是数组(Array)和对…

【每天40分钟,我们一起用50天刷完 (剑指Offer)】第四十二天 42/50【unordered_set】【双指针处理连续】【翻转字符串】

专注 效率 记忆 预习 笔记 复习 做题 欢迎观看我的博客,如有问题交流,欢迎评论区留言,一定尽快回复!(大家可以去看我的专栏,是所有文章的目录)   文章字体风格: 红色文字表示&#…

优思学院|企业遇到瓶颈期怎么办?六西格玛管用吗?

企业遇到瓶颈期应该分析一下原因,企业内部应该和各级一起思考如何解决、如何舒缓,即使找管理咨询公司同样也是这样做的,关键是企业是否连一个领导者也没有呢? 企业每天都会遇到新的问题,是否每次都要找管理咨询公司&a…

第七篇:k8s集群使用helm3安装Prometheus Operator

安装Prometheus Operator 目前网上主要有两种安装方式,分别为:1. 使用kubectl基于manifest进行安装 2. 基于helm3进行安装。第一种方式比较繁琐,需要手动配置yaml文件,特别是需要配置pvc相关内容时,涉及到的yaml文件太…

iOS--frame和bounds

坐标系 首先,我们来看一下iOS特有的坐标系,在iOS坐标系中以左上角为坐标原点,往右为X正方向,往下是Y正方向如下图: bounds和frame都是属于CGRect类型的结构体,系统的定义如下,包含一个CGPoint…

卡片布局 可左右上删除,可向下拉出上一个 支持复用

效果 支持左右上 三个方向删除内容,支持下拉显示上一个。支持adapter 支持复用。 使用 myLayout.setAdapter(new StackAdapter() {final int[] bgColorsnew int[]{Color.RED,Color.GREEN,Color.BLUE};Overridepublic View getView(int position, LayoutInflater …

Docker Hub和镜像仓库

目录 前言 创建存储库 推送镜像(可选) 搜索镜像 拉取镜像 前言 Docker Hub 是 Docker 公司提供的官方公共 Docker 镜像注册表,允许用户存储、分享和获取 Docker 镜像。在 Docker Hub 上,你可以找到许多官方和社区维护的 D…

三、前端高德地图、测量两个点之前的距离

点击测距工具可以开启测量,再次点击关闭测量,清除地图上的点、连线、文字 再次点击测量工具的时候清除。 首先 上面的功能条河下面的地图我搞成了两个组件,他们作为兄弟组件存在,所以简单用js写了个事件监听触发的对象&#xff…

JavaScript三元运算符

条件运算符(三元运算符)的基本结构 条件 ? true:false例如: const age 20; age > 18 ? console.log("你已经成年了"):console.log("你还是一个孩子!");我们这里把条件运算符和IF来做个区分…

高等数学中如何求间断点

高等数学中求间断点是一项重要的技巧,特别适用于分析函数的性质和图像的特征。在本文中,我们将深入探讨如何在给定函数中找到间断点,并解释其数学原理和实际应用。 什么是间断点? 在高等数学中,间断点是指函数在某个点…

Trello的功能、优缺点、国内使用体验,及4大类似的项目工具

1、Trello是什么软件,有哪些功能; 2、Trello的价格及国内用户的使用体验; 3、盘点国内同类型的项目管理软件; 4、对比国内工具Worktile、Teambition等工具如何。 一、Trello是什么软件,有哪些功能? 【官网…

Pytorch 最全入门介绍,Pytorch入门看这一篇就够了

本文通过详细且实践性的方式介绍了 PyTorch 的使用,包括环境安装、基础知识、张量操作、自动求导机制、神经网络创建、数据处理、模型训练、测试以及模型的保存和加载。 1. Pytorch简介 在这一部分,我们将会对Pytorch做一个简单的介绍,包括它…

uniapp打包本地资源使用原生安卓打包

Android安装打包 1. 安装sdk 2.安装解压openjdk到D盘 3.安装编辑器 在D盘新建文件 Androidstudio 将编辑器安装到这个Androidstudio 文件内 配置sdk路径 打包步骤: 1. 打开项目,如图: 2. uniapp的本地打包资源可以在 这里替换apps包下 再修…

java+springboot+mysql疫情物资管理系统

项目介绍: 使用javaspringbootmysql开发的疫情物资管理系统,系统包含超级管理员,系统管理员、员工角色,功能如下: 超级管理员:管理员管理;部门管理;职位管理;员工管理&…

港联证券:股市降印花税是什么意思?股市降印花税利好还是利空?

在股票买卖过程中,需求交纳必定的印花税、佣钱费用和过户费用,那么,股市降印花税是什么意思?股市降印花税利好仍是利空?下面港联证券为我们预备了相关内容,以供参阅。 股票降印花税是指下调投资者买卖股票的…

计算机毕设 深度学习实现行人重识别 - python opencv yolo Reid

文章目录 0 前言1 课题背景2 效果展示3 行人检测4 行人重识别5 其他工具6 最后 0 前言 🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉…