Learning Monocular Visual Odometry via Self-Supervised Long-Term Modeling

news2024/11/18 19:55:45

Paper name

Learning Monocular Visual Odometry via Self-Supervised Long-Term Modeling

Paper Reading Note

URL: https://arxiv.org/pdf/2007.10983.pdf

TL;DR

  • ECCV 2020 文章,该文章认为在短时间序列上训练无法在长时间序列上良好泛华,所以受到传统 vo 方案的启发提出了一种基于长时间序列建模的 learning-based vo 方案,取得了当时自监督训练的 sota 效果

Introduction

在这里插入图片描述

  • 单目 vo 一般分为传统 vo 方案和 learning-based vo 方案
  • 传统单目 vo 方案如下图,流程为特征点检测、特征点匹配、运动估计、keyframe选取、BA 等环节。
    • 关键的思路是通过观察长时间的全局信息来进行状态(6DoF camera poses)更新
    • 问题是在低运动场景初始化困难、大范围低纹理区域、快速运动、rolling shutter、不确定的相机内参等困难场景下容易挂
  • learning-based vo 方案有潜力通过在得到丰富的先验知识情况下在上述困难场景下做得更好,但目前 learning-based vo 方案的效果一般不如传统 vo 方案
  • 作者分析 learning-based 方案效果差的原因是没有利用上长时间序列的时序相关性,因为训练过程中这些网络一般只基于 3 帧或 5 帧数据进行训练,在短时间序列下的评测甚至会比传统方案好,然而将所有短时间序列预测整合后成整体轨迹后效果不好,对比图如下
    在这里插入图片描述
  • 所以本文受到传统 vo 方案的启发,提出一种长时间序列建模的 learning-based VO 方案
    • two-layer LSTM 用于建立长时间的时序信息
    • 参考传统 vo 方案中的 loop closure 设计的 cycle consistency 约束
    • two stage 训练阶段,分别考虑 short-term 和 long-term 约束

Dataset/Algorithm/Model/Experiment Detail

实现方式

在这里插入图片描述

  • 分别参考 monodepth 和 flownet 设计了深度估计模块和 pose 估计模块
    • depth net:与 monodepth2 一样
    • pose network:FlowNet backbone、two-layer LSTM module、two pose prediction head(每个 LSTM 层接一个,第一层聚焦于预测连续帧间运动、第二层修正第一层的预测)
  • Cycle-consistency over two-layer poses:确保第一层与第二层预测的 pose 的一致性

在这里插入图片描述

  • Long-range constraints via stage-wise training:
    • 第一层使用短时间序列训练: 7 帧,训练所有 network
    • 第二层使用长时间序列训练:97 帧,只训练第二层 LSTM
      在这里插入图片描述

实验结果

  • KITTI 数据集上的消融实验
    在这里插入图片描述
  • 可视化对比
    在这里插入图片描述
  • 与 SOTA 方法对比,在自监督方法中是最好的,binary监督方法精度也高,但是和 orbslam2 等传统 vo 方案比还是稍差一点
    在这里插入图片描述

Thoughts

  • 结合传统方案的优势融入到 learning-based 方案的设计值得借鉴

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

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

相关文章

从Web3视角审视茅台的“元宇宙”APP,这或是中国版的“星巴克奥德赛”

图片来源:由无界 AI 绘画工具生成2023年1月1日,一款名为《巽风数字世界》的APP登录App Store,这是由茅台和网易联合推出的虚拟世界APP。因而,有媒体称,茅台要进军元宇宙了!简单讲,这是一款虚拟世…

Spring核心与设计思想 -- IoC与DI

Spring核心与设计思想 -- IoC与DI一、Spring 是什么?1.1 什么是容器?1.2 什么是 IoC?二、理解 IoC2.1 传统程序开发的问题2.2 分析2.3 控制反转式程序开发2.4 对比总结规律2.5 理解 Spring IoC三、DI 概念说明一、Spring 是什么? …

k8s集群部署springboot项目

一、前言 本篇,我们将基于k8s集群,模拟一个比较接近实际业务的使用场景,使用k8s集群部署一个springboot的项目,我们的需求是: 部署SpringBoot项目到阿里云服务器 ;基于容器打包,推送私有镜像仓库 ;采用K8S集群部署,对外暴露服务,pod副本扩容,公网可以访问 ;二、完…

【案例教程】GEE遥感云大数据在林业中的应用

以Earth Engine(GEE)为代表全球尺度地球科学数据(尤其是卫星遥感数据)在线可视化计算和分析云平台应用越来越广泛。该平台存储和同步遥感领域目前常用的MODIS、Landsat和Sentinel等卫星影像、气候与天气、地球物理等方面的数据集超…

禅道的部署与使用

文章目录1、禅道介绍2、下载安装3、使用3.1、创建项目3.2、添加用户3.3、团队管理3.4、测试人员提Bug3.5、开发人员修复Bug4、总结1、禅道介绍 官网地址:https://www.zentao.net禅道是专业的研发项目管理软件,有如下特点: 细分需求、任务、缺…

一篇五分生信临床模型预测文章代码复现——Figure 4-6 临床模型构建(七)

之前讲过临床模型预测的专栏,但那只是基础版本,下面我们以自噬相关基因为例子,模仿一篇五分文章,将图和代码复现出来,学会本专栏课程,可以具备发一篇五分左右文章的水平: 本专栏目录如下: Figure 1:差异表达基因及预后基因筛选(图片仅供参考) Figure 2. 生存分析,…

Redis简介与使用

Redis简介与使用:数据保存在内存。(mysql数据保存在硬盘)是一个 高性能的key-value数据库NoSQL(非关系数据库)和SQL数据库(关系数据库)比较:适用场景不同:sql数据库适合用于关系特别复杂的数据查…

Java8-

https://blog.51cto.com/u_14014612/5677262 Stream到底是什么呢? 是数据渠道,用于操作数据源(集合、数组等)所生成的元素序列。 “集合讲的是数据,Stream讲的是计算!” 流的构成 当我们使用一个流的时…

贴片SD卡移植FATFS文件系统

一、前言 手头有一块深圳雷龙的 SDIO 接口的贴片 SD 卡,挂载个文件系统把玩一下。首先介绍一下使用的贴片 SD 卡,以前使用的都是拔插式的 SD 卡,下面这个样子: 拿到的贴片雷龙 SD 卡如下图: 二、贴片 SD 卡介绍 雷龙的…

RAD Studio 11.2 详细图文安装教程 (delphi 11.2)

准备 准备好安装镜像和嘿嘿工具 镜像可以到官网下载,工具百度搜一搜就能找到 系统环境:win11 专业版 开始安装 双击镜像文件,然后将里面的文件复制到一个地方 注意一定要把这两个文件复制出来再运行,否则会嘿嘿失败 右键点击红色…

前有农民歌唱家大衣哥,后有农民女歌手草帽姐,都给山东人增光了

山东自古以来是孔孟之乡礼仪之邦,也诞生了很多的好儿女,农民歌唱家大衣哥就是其中的一位。大衣哥是从《星光大道》走红,也是大山东人的骄傲,他出名十几年不忘本,扎根农村为老乡们做贡献的精神,也感动了无数…

从0到1完成一个Vue后台管理项目(五、登录页,mock,token,axios封装)

往期 从0到1完成一个Vue后台管理项目(一、创建项目) 从0到1完成一个Vue后台管理项目(二、使用element-ui) 从0到1完成一个Vue后台管理项目(三、使用SCSS/LESS,安装图标库) 从0到1完成一个Vu…

两大js调试工具的安装

首先要确保已经安装nodejs,具体安装步骤可以百度。 node-inspect工具的安装和使用 对于node-inspect工具我们可以全局安装: npm install node-inspect -g由于安装过cnpm,所以几乎在1秒内将node-inspect安装完成。 cnpm的安装方法&#xff…

Multisim14.0仿真应用举例——OCL电路输出功率和效率的研究

安装教程:http://t.csdn.cn/qvvqA一、理论讲解OCL全称: Output Capacitorless,中文名称:无输出电容的功率放大电路。功率放大带电路最重要的技术指标是最大输出功率Pom和效率η 。若输入信号Ui为正弦信号sin(wt),负载上能得到的最大输出电压且…

你是真的“C”——详解C语言实现静态版通讯录

详解C语言实现静态版通讯录😎前言😃通讯录设计的关键思想点分析 🙌通讯录界面(meun)设计 🙌增加信息功能实现代码🙌删除信息功能实现代码🙌查询信息功能实现代码🙌修改信…

【强训】Day04

努力经营当下,直至未来明朗! 文章目录一、选择二、编程1. 计算糖果2. 进制转换答案1. 选择2. 编程普通小孩也要热爱生活! 一、选择 下列与队列结构有关联的是() A 函数的递归调用 B 数组元素的引用 C 多重循环的执行…

【年终总结系列 2022】魔幻、疲惫、收获与成长

时光飞逝,转眼到了2022年的年末了。仿佛昨天还在看冬奥的开幕式,而第一次做核酸又似乎很遥远,生活像是一瞬间恢复了喧嚣,可能是三年之期已到吧。这一年于我们大众而言我愿称之为魔幻的一年,于我自己而言,则…

6.4 工具-RabbitMQ

目录 6.4.1 RabbitMQ概述 6.4.1.1 什么是RabbitMQ 6.4.1.2 Erlang和AMQP 6.4.1.3 RabbitMQ 6.4.1.3.1 RabbitMQ优点 6.4.1.3.2 应用解耦 6.4.1.3.3 异步处理 6.4.1.3.4 流量削峰 6.4.2 RabbitMQ安装 6.4.3 RabbitMQ架构 6.4.3.1 架构图 6.4.3.1.1 术语 6.4.3.1.…

MongoDB入门学习(二)GridFS、GridFS整合SpringBoot

文章目录GridFSGridFS简介GridFS存储原理GridFS整合SpringBoot新增store()查询与下载find()、findOne()删除delete()Demo案例GridFS GridFS简介 GridFS是MongoDB的一个用来存储/获取大型数据(图像、音频、视频等类型的文件)的规范。相当于一个存储文件…

Java中创建不可变集合、Stream流、异常体系、日志框架

创建不可变集合、Stream流、异常体系、日志框架创建不可变集合什么是不可变集合?为什么要创建不可变集合?如何创建不可变集合?不可变集合的特点?Stream流Stream流的概述Stream流的获取Stream流的常用API(中间操作方法&…