深度学习相关VO梳理

news2025/4/15 19:44:51

相关论文

基于学习的VO 相关:
DeepVO Towards End-to-End Visual Odometry with Deep Recurrent Convolutional Neural Networks(ICRA,2017)
TartanVO: A Generalizable Learning-based VO(CoRL2021)
SimVODIS: Simultaneous Visual Odometry ,Object Detection, and Instance Segmentation(PAMI,2022)

基于学习的SLAM:
DROID-SLAM: Deep Visual SLAM for Monocular,Stereo, and RGB-D Cameras
NICE-SLAM: Neural Implicit Scalable Encoding for SLAM(CVPR,2022)
NeRF-SLAM: Real-Time Dense Monocular SLAM with Neural Radiance Fields(arXiv,2022)

对Dynamic的处理:
DytanVO:Joint Refinement of Visual Odometry and Motion Segmentation in Dynamic Environments(ICRA2023)

SimVODIS++: Neural Semantic Visual Odometry in Dynamic Environments(RAL,2022)
MaskVO: Self-Supervised Visual Odometry with a Learnable Dynamic Mask(SII,2022)

GeoNet: Unsupervised Learning of Dense Depth, Optical Flow and Camera Pose(CVPR,2018)
Competitive Collaboration: Joint Unsupervised Learning of Depth, Camera Motion, Optical Flow and Motion Segmentation(CVPR,2019)

背景

传统方法

基于几何的VO方法在实际中不够鲁棒

传统SLAM方法容易特征缺失、优化算法发散、误差累计

基于学习的方法

基于学习的方法的VO在并没有表现出强大的性能,当前表现甚至不如几何的方法:
a.现有的VO模型训练多样性不足
b.大多数基于学习的VO模型没有关注到问题的一些基本性质

动态环境

基于学习的视觉里程计在动态、人口稠密的环境中容易失败

基于无监督和自监督方式的VO泛化性不行

基于语义方式的问题:1.漏报 2.无法区分实际运动和静态但能运动

Tartanvo

提出了第一个基于学习的视觉里程计(VO)模型,该模型可以推广到多个数据集和现实场景:

  1. 我们通过比较不同数量的训练数据的性能来证明数据多样性对 VO 模型泛化能力的关键影响。
  2. 我们设计了一个尺度损失函数(up-to-scale loss function)来处理单目 VO 的尺度模糊性。
  3. 我们在 VO 模型中创建一个本征层 (IL,instrinsics layer),以实现跨不同相机的泛化。

整体结构

匹配模块+位姿模块
input:相邻帧图像
output:相对相机运动(T|R)
在这里插入图片描述

多样化训练

利用异常丰富的大规模数据集TartanAir

我们在任务中利用单目图像序列 { I t } \{I_t\} {It}、光流标签 { F t t + 1 } \{F ^{t+1}_t \} {Ftt+1} 和地面实况相机运动 { δ t t + 1 } \{δ^{t+1}_t\} {δtt+1}。我们的目标是共同最小化光流损耗 L f L_f Lf 和相机运动损耗 L p L_p Lp。端到端损耗定义为:
在这里插入图片描述

尺度损失函数

尺度模糊度只影响平移 T T T ,我们为 T T T 设计了一个新的损失函数,并保持旋转 R R R 的损失不变。我们为 L P L_P LP 提出了两个大规模损失函数:余弦相似度损失 L p c o s L^{cos}_p Lpcos 和归一化距离损失 L p n o r m L^{norm}_p Lpnorm L p c o s L^{cos}_p Lpcos 由估计的 T ^ \hat{T} T^ 和标签 T T T 之间的余弦角定义:
在这里插入图片描述

相机差异的统一

1. 使用instrinsics layer
我们设计了一个新的姿态网络 P ϕ ( F t t + 1 , K ) P_\phi(F^{t+1}_t , K) Pϕ(Ftt+1,K),而不是仅从特征匹配 F t t + 1 F^{t+1}_t Ftt+1 中恢复相机运动 T t t + 1 T^{t+1}_t Ttt+1 ,该网络也取决于相机内在参数 K = { f x , f y , o x , o y } K = \{f_x ,f_y,o_x,o_y\} K={fx,fy,ox,oy},其中 f x f_x fx f y f_y fy是焦距, o x o_x ox o y o_y oy表示主点的位置。
在这里插入图片描述
2. 将数据裁剪为不同内参的数据
TartanAir 只有一组相机内在函数,其中 f x = f y = 320 、 o x = 320 f_x = f_y = 320、o_x = 320 fx=fy=320ox=320 o y = 240 o_y = 240 oy=240。我们通过随机裁剪和调整 (RCR,Randomly cropping and resizing) 输入图像大小来模拟各种内在函数。

如图3所示,我们首先在随机位置以随机大小裁剪图像。接下来,我们将裁剪后的图像调整为原始大小。
在这里插入图片描述

DytanVO

• 引入了一种新颖的基于学习的VO,以利用相机自我运动、光流和运动分割之间的相互依赖性。

• 我们引入了一个迭代框架,其中自我运动估计和运动分割可以在实时应用的时间限制内快速收敛。

• 在基于学习的 VO 解决方案中,我们的方法无需微调即可在现实动态场景中实现最先进的性能。此外,我们的方法的性能甚至可以与优化后端轨迹的视觉 SLAM 解决方案相媲美。

Architecture

在这里插入图片描述
我们的框架由三个子模块组成:匹配网络、运动分割网络和姿态估计网络

Interactive refine camera motion

在这里插入图片描述
在这里插入图片描述

在实践中,我们发现 3 次迭代足以细化相机运动和分割。为了消除任何歧义,1 次迭代过程由一次 M θ M_θ Mθ 前向过程和一次具有随机掩码的 P ϕ P_{\phi} Pϕ 前向过程组成,而 3 次迭代过程由一次 Mθ 前向过程、两次 U γ U_γ Uγ 前向过程和 3 个 P ϕ P_{\phi} Pϕ 前向过程组成。

Supervision

我们在相机运动损失 LP 上监督我们的网络。

在单目设置下,我们只能恢复最大尺度的相机运动。我们按照[5],在计算到地面实况的距离之前对平移向量进行归一化。给定地面真实运动 R ∣ T R|T RT:
在这里插入图片描述
我们的框架也可以以端到端的方式进行训练,在这种情况下,目标变成光流损失 L M L_M LM 、相机运动损失 L P L_P LP 和运动分割损失 L U L_U LU 的聚合损失,其中 L M L_M LM 是之间的 L1 范数预测流和地面真实流,而 L U L_U LU 是预测概率和分割标签之间的二元交叉熵损失。
在这里插入图片描述

SimVODIS

Architeture

在这里插入图片描述
图3描述了所提出的SimVODIS网络的概念化架构。我们基于以下思想设计了SimVODIS网络:
1)Mask RCNN为语义和几何任务提取通用特征,如区域建议、类标记、边界框回归和掩码提取;
2)我们可以使用这些丰富的特征来估计相对姿态和预测深度图,因为提取的特征对语义和几何工作都有用。

对于SimVODIS,我们设计了两个网络分支:姿态分支和深度分支。姿态分支使用来自特征金字塔网络(FPN)的丰富特征来估计三个连续图像序列之间的相对姿态。

Loss

在这里插入图片描述

SimVODIS++

在这里插入图片描述
我们基于以下推理设计了SimVODIS++网络:
(1)用于语义分支(对象检测和实例分割)的特征金字塔网络(FPN)提取能够执行语义和几何任务的一般特征;
(2)我们可以利用这些丰富的特征来执行位姿估计和深度图预测。对于SimVODIS++,与SimVODIS[10]相比,我们设计了两个新功能:姿态估计和相机校准。我们进行专注的姿态估计以去除动态对象,并进行相机校准以提高VO性能。由于所提出的姿态估计和相机校准导致的参数总量的增加是最小的。

Attention Pose Estimation(比较质疑)

在这里插入图片描述
图2描述了在动态环境中用于鲁棒性能的所提出的注意姿态估计的架构。

Conv. Block 从FPN接收特征,调整输入特征以进行自注意,并通过自注意进行动态特征选择。对于自我注意,我们使用CBAM模块[37]。在训练过程中,CBAM模块让姿势分支学会专注于具有相关特征的区域,并尽量减少对动态对象的关注。

在这里插入图片描述

MaskVO

这项工作的目的是提出一种自监督学习系统,从未标记的图像序列中重建尺度一致的自我运动。
在这里插入图片描述

如图 2 所示,两个未标记的 RGB 图像 I a I_a Ia I b I_b Ib 堆叠在一起并输入到特征提取器中。
I a I_a Ia I b I_b Ib 是源图像和目标图像。与[6]、[12]不同,我们使用图像序列来利用视觉运动的时间依赖性。
特征时间建模模块提取图像序列的时间信息,由循环神经网络组成。
然后,6-DoF 位姿 P a b P_{ab} Pab 由位姿网络生成。同时,输入图像的深度图由深度网络生成。

投影图像 I a ′ I_{a}^{\prime} Ia 使用 D a 、 I b D_a、I_b DaIb和6-DoF位姿 P a b P_{ab} Pab通过等式5生成。

引入掩模网络将学习到的空间信息合并到框架中,减少场景动态的影响。真实图像 I a I_{a} Ia和合成 I a ′ I_{a}^{\prime} Ia 之间的差异可以用作自监督信号来构造光度损失。它可以约束并强制系统根据不同的输入图像序列估计姿态和深度。

GeoNet

GeoNet,这是一种联合无监督学习框架,用于视频中的单目深度、光流和自我运动估计

这三个组件通过 3D 场景几何的性质耦合在一起,由我们的框架以端到端的方式共同学习。具体来说,根据各个模块的预测提取几何关系,然后将其组合为图像重建损失,分别对静态和动态场景部分进行推理。

此外,我们提出了一种自适应几何一致性损失,以提高对异常值和非朗伯区域的鲁棒性,从而有效地解决遮挡和纹理模糊问题。

我们的 GeoNet 的概述如图 2 所示。
在这里插入图片描述

它包含两个阶段,刚性结构推理阶段和非刚性运动细化阶段。

推断场景布局的第一阶段由两个子网络组成,即 DepthNet 和 PoseNet。深度图和相机位姿分别回归并融合以产生刚性流。

第二阶段由 ResFlowNet 完成以处理动态对象。 ResFlowNet 学习到的残余非刚性流与刚性流相结合,得出我们最终的流预测。由于我们的每个子网络都针对特定的子任务,因此复杂的场景几何理解目标被分解为一些更简单的目标。不同阶段的视图合成是我们无监督学习范式的基本监督。

最后但并非最不重要的一点是,我们在训练期间进行几何一致性检查,这显着增强了我们预测的一致性并取得了令人印象深刻的性能

Competitive Collaboration

我们在本文中考虑了四个这样的问题:单视图深度预测、相机运动估计、光流和运动分割。之前的工作已经使用真实数据[5]和合成数据[4]通过监督来解决这些问题。然而,合成数据与真实数据之间始终存在现实差距,并且真实数据有限或不准确。

在这里插入图片描述

如图 2 所示,我们在框架中引入了两个参与者,即静态场景重建器 R = ( D , C ) R = (D, C) R=(D,C),它使用深度 D 和相机运动 C 来推理静态场景像素;以及运动区域重建器 F,其推理独立运动区域中的像素。这两个玩家通过推理图像序列中的静态场景和移动区域像素来竞争训练数据。比赛由运动分割网络 M 主持,该网络分割静态场景和运动区域,并将训练数据分发给选手。不过,主持人也需要培训,以保证公平竞争。因此,玩家 R 和 F 合作训练主持人 M,使其在训练周期的交替阶段正确分类静态和移动区域。这个通用框架在本质上与期望最大化 (EM) 类似,但专为神经网络训练而制定。

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

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

相关文章

第22章 自旋锁死锁实验(iTOP-RK3568开发板驱动开发指南 )

在上一小节中,学习了内核中自旋锁的使用,而自旋锁若是使用不当就会产生死锁,在本章将会对自旋锁的特殊情况-死锁进行讲解。 22.1 自旋锁死锁 死锁是指两个或多个事物在同一资源上相互占用,并请求锁定对方的资源,从而…

【Docker】容器化应用程序的配置管理策略与实践

一、引言 1.1 Docker的背景和优势 Docker是一种开源的容器化平台,简化应用程序的打包、交付和运行过程。基于Linux容器技术,通过提供一个轻量级、可移植和自包含的容器来实现应用程序的隔离和部署。 在传统的应用程序开发和部署中,往往需要…

九科-模块化-创建目录_如果不存在

python代码 # 创建目录_如果不存在 def create_directory_if_not_exists(dir_path):# 如果目录不存在if not os.path.exists(dir_path):# 创建目录os.makedirs(dir_path) 九科组件模块 总图 查询目录是否存在 IF判断目录是否存在 如果目录不存在,创建目录

syn洪流原理

TCP三次握手 建立连接发送或回应第一次握手客户端发送报文,标志位为SYN(seqa)第二次握手服务器发送报文,标志位为SYN,ACK(seqb,acka1)第三次握手客户端回应服务器报文,标志位为ACK&…

Java 设置免登录请求接口被拦截问题

1、在设置免登录时,前端将请求的路由添加到白名单后,请求接口还是被拦截到了,将请求接口也设置后还是会被拦截跳转到登录页面 通过JAVA 注解 Anonymous 进行设置匿名访问就可以了

Docker 的常用命令

0 基本命令 概述 [root192 home]# docker --helpUsage: docker [OPTIONS] COMMANDA self-sufficient runtime for containersOptions:--config string Location of client configfiles (default "/root/.docker")-c, --context string Name of the context…

js中如何判断一个对象是否为空对象?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ 使用 Object.keys()⭐ 使用 for...in 循环⭐ 使用 JSON.stringify()⭐ 使用 ES6 的 Object.getOwnPropertyNames()⭐ 写在最后 ⭐ 专栏简介 前端入门之旅:探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带…

windows本地认证

来自帅气学弟得经验 阅读流程 windows系统认证包括**本地交互式认证 **和 网络认证 交互式登录:向本地计算机或域账户确认用户的身份 网络登录:对用户尝试访问的网络服务或资源提供用户认证 若是本地用户本地认证需要了解**windows密码 **,…

【C++心愿便利店】No.5---构造函数和析构函数

文章目录 前言一、类的6个默认成员函数二、构造函数三、析构函数 前言 👧个人主页:小沈YO. 😚小编介绍:欢迎来到我的乱七八糟小星球🌝 📋专栏:C 心愿便利店 🔑本章内容:类…

通过curl命令分析http接口请求各阶段的耗时等

目录 一、介绍二、功能1、-v 输出请求 响应头状态码 响应文本等信息2、-x 测试代理ip是否能在该网站使用3、-w 额外输出查看接口请求响应的消耗时间4、-o 将响应结果存储到文件里面5、-X post请求测试 (没测成功用的不多) 一、介绍 Curl是一个用于发送和接收请求的命令行工具和…

TCP/IP传输协议学习

了解完整的通信过程 1.发送方源终端设备的应用创建数据。 2.当数据在源终端设备中沿协议栈向下传递,对其分段和封装。 3.在协议栈网络接入层的介质上生成数据。 4.通过由介质和任意中间设备组成的网际层网络传输数据。 5.在目的终端设备中沿协议栈向上传递时对其…

用队列实现栈(C语言版本)

🎈个人主页:🎈 :✨✨✨初阶牛✨✨✨ 🐻强烈推荐优质专栏: 🍔🍟🌯C的世界(持续更新中) 🐻推荐专栏1: 🍔🍟🌯C语言初阶 🐻推荐专栏2: 🍔…

ArcGIS 10.5安装教程!

软件介绍: ArcGIS Desktop 10.5中文特别版是一款功能强大的GSI专业电子地图信息编辑和开发软件,ArcGIS Desktop 包括两种可实现制图和可视化的主要应用程序,即 ArcMap 和 ArcGIS Pro。ArcMap 是用于在 ArcGIS Desktop 中进行制图、编辑、分析…

滴滴:二季度中国出行营收同比增长57%,6月日均单量超3000万单

9月9日,滴滴在其官网发布2023年第二季度业绩报告,二季度滴滴实现总收入488亿元,同比增长52.6%;归属于滴滴普通股股东的净亏损为3亿元,经调整EBITA亏损1000万元。 分业务来看,二季度滴滴中国出行&#xff0…

北京运营《乡村振兴战略下传统村落文化旅游设计》许少辉八一新书

北京运营《乡村振兴战略下传统村落文化旅游设计》许少辉八一新书

当所有行业都在数字化转型时,企咨行业如何快速“破局”

党的二十大报告指出,“加快发展数字经济,促进数字经济和实体经济深度融合,打造具有国际竞争力的数字产业集群。”随着新一轮科技革命和产业变革深入发展,数字化转型已经不是一道“选择题”,而是一堂“必修课”。 数字…

国产触控笔哪个牌子好?开学平价好用触控笔排行榜

很多学生在新学期的时候,都会用到电容笔,这说明电容笔的重要性。苹果推出了ipad专用的电容笔后,这种电容笔便成为了市场上最热门的产品,只是因为Apple Pencil的价格过于昂贵,所以很多人并没有购买得起。所以&#xff0…

一文读懂官方给出torch.nn.RNN API的参数及手写RNN API复现

理论部分 官方给出的文档解释: 计算公式: 该公式对应的结构框图: 其中 xt 表示当前 t 时刻的输入,Wih表示 “输入层” 到 “隐藏层” 的权重矩阵。即 Wih 会将输入映射至隐藏层。bih表示输入层到隐藏层的偏置,ht-1表…

【我的第一千篇文章】

作为一名Java开发者,我很自豪地宣布,这里是我输出的第一千篇文章。在过去的六年里,我一直坚持每月输出优质内容,并将其分享给了全世界的读者们。这一千篇文章中,有很多关于Java编程的技巧、经验分享、优秀实践示例、案…

16 “count(*)“ 和 “count(1)“ 和 “count(field1)“ 的差异

前言 经常会有面试题看到这样的问题 “ select count(*) ”, “ select count(field1) ”, “ select count(1) ” 的效率差异啥的 然后 我们这里 就来探索一下 这个问题 我们这里从比较复杂的 select count(field1) 开始看, 因为 较为复杂的处理过程 会留一下一些关键的调试…