GeoNet: Unsupervised Learning of Dense Depth, Optical Flow and Camera Pose 论文阅读

news2024/11/14 6:07:22

论文信息

题目:GeoNet: Unsupervised Learning of Dense Depth, Optical Flow and Camera Pose
作者:Zhichao Yin and Jianping Shi
来源:CVPR
时间:2018

Abstract

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

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

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

Introduction

在本文中,我们提出了一种无监督学习框架 GeoNet,用于联合估计视频中的单眼深度、光流和相机运动。我们的方法的基础建立在 3D 场景几何的性质之上(详细信息请参见第 3.1 节)。

直观的解释是,大多数自然场景都是由刚性静态表面组成,即道路、房屋、树木等。它们在视频帧之间投影的二维图像运动可以完全由深度结构和相机运动决定。同时,此类场景中普遍存在行人和汽车等动态物体,通常具有位移大、排列混乱的特点。

因此,我们使用深度卷积网络抓住了上述原则。具体来说,我们的范例采用了分而治之的策略。设计了一种由两个阶段组成的新颖的级联架构来自适应地解决场景刚体流和目标运动。因此,全局运动场能够逐步细化,使我们的完整学习流程变得分解且更易于学习。这种融合运动场引导的视图合成损失导致无监督学习的自然正则化。预测示例如图 1 所示。
在这里插入图片描述
作为第二个贡献,我们引入了一种新颖的自适应几何一致性损失,以克服纯视图合成目标中未包含的因素,例如遮挡处理和照片不一致问题。通过模仿传统的前后(或左右)一致性检查,我们的方法自动过滤掉可能的异常值和遮挡。在非遮挡区域中的不同视图之间强制执行预测一致性,而错误的预测会被平滑,尤其是在遮挡区域中。

Related Work

场景流估计是与我们的工作密切相关的另一个主题,它从立体图像序列中解决场景的密集 3D 运动场 [49]。 KITTI 基准上排名靠前的方法通常涉及几何、刚性运动和分割的联合推理 [3, 51]。 MRF [27] 被广泛采用来将这些因素建模为离散标记问题。然而,由于存在大量需要优化的变量,这些现成的方法在实际使用中通常太慢。另一方面,最近的几种方法强调了通用场景流中的严格规律。 Taniai 等人[46]提出使用二元掩模从刚性场景中分割出移动物体。 Sevilla-Lara 等人[41]根据语义分割定义了不同的图像运动模型。

Method

在本节中,我们从 3D 场景几何的本质开始。然后我们概述了 GeoNet。它由两个组件组成:分别是刚性结构重建器和非刚性运动定位器。

最后,我们提出了几何一致性执行,这是 GeoNet 的核心。

Nature of 3D Scene Geometry

视频或图像是 3D 空间投影到特定维度的屏幕截图。 3D 场景自然由静态背景和移动对象组成。视频中静态部分的运动完全是由摄像机运动和深度结构引起的。而动态物体的运动则更为复杂,由均匀的相机运动和特定物体运动共同作用。

与完整的场景理解相比,理解均匀的相机运动相对容易,因为大部分区域都受到其约束。

为了从本质上分解 3D 场景理解问题,我们希望分别学习由相机运动控制的场景级一致运动,即刚性流和具体的物体运动。

为了对严格限制的刚性流进行建模,我们通过帧 i 的深度图 D i D_i Di 的集合以及从目标帧到源帧的相对相机运动 T t → s T_{t→s} Tts 来定义静态场景几何形状。从目标图像 I t I_t It到源图像 I s I_s Is的相对二维刚性流可以表示为:
在这里插入图片描述
另一方面,我们将无约束的物体运动建模为经典光流概念,即二维位移矢量。

我们学习残差流 f t → s r e s f^{res}_{t→s} ftsres 而不是非刚性情况的完整表示。

GeoNet OverViwe

我们提出的 GeoNet 以无人监督的方式感知 3D 场景几何的本质。

特别是,

  1. 我们使用单独的组件分别通过刚性结构重建器和非刚性运动定位器来学习刚性流和物体运动。
  2. 采用图像外观相似度来指导无监督学习,可以推广到无限数量的视频序列,而无需任何标记成本。

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

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

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

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

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

Rigid Structure Reconstructor

我们的第一阶段旨在重建刚性场景结构,并对非刚性和异常值具有鲁棒性。

训练示例是具有已知相机内在特性的时间连续帧 I i ( i = 1 ∼ n ) I_i(i = 1 ∼ n) Ii(i=1n)。通常,目标帧 I t I_t It被指定为参考视图,而其他帧是源帧 I s I_s Is
DepthNet 将单一视图作为输入,并利用累积的场景先验进行深度预测。在训练期间,整个序列被视为独立图像的小批量并输入到 DepthNet 中。

相反,为了更好地利用不同视图之间的特征对应关系,我们的 PoseNet 将沿通道维度连接的整个序列作为输入,一次性回归所有相对 6DoF 相机姿势 T t → s T_{t→s} Tts

基于这些基本预测,我们能够根据方程(1) 推导出全局刚性流。 我们可以立即合成任意一对目标帧和源帧之间的另一个视图。

我们将 I ~ s r i g \tilde{I}^{rig}_s I~srig 表示为基于 f t → s r i g f^{rig}_{t→s} ftsrig I s I_s Is 到目标图像平面的逆扭曲图像。

因此,我们当前阶段的监督信号自然以最小化合成视图 I ~ s r i g \tilde{I}^{rig}_s I~srig 和原始帧 I t I_t It 之间的差异(或相反)的形式出现。

但需要指出的是,刚性流仅主导非遮挡刚性区域的运动,而在非刚性区域则失效。尽管这种负面影响在相当短的序列中略有减轻,但我们对光度损失采用了鲁棒的图像相似性测量[15],它保持了适当的感知相似性评估和异常值的适度弹性之间的平衡,并且本质上是可微分的如下:
在这里插入图片描述

Non-rigid Motion Localizer

第一阶段为我们提供了刚性场景布局的立体感知,却忽略了动态物体的普遍存在。因此,我们提出了第二个组件,即 ResFlowNet 来定位非刚性运动。

直观上,通用光流可以直接对无约束运动进行建模,这在现成的深度模型中通常采用[8, 18]。但它们并没有充分利用刚性区域的良好约束特性,而我们实际上已经在第一阶段做到了这一点。

我们制定 ResFlowNet 来学习残余非刚性流,即仅由相对于世界平面的对象运动引起的移动。具体来说,我们按照[18]推荐的方式在第一阶段之后级联 ResFlowNet。对于任何给定的帧对,ResFlowNet 利用刚性结构重建器的输出,并预测相应的残差信号 f t → s r e s f^{res}_{t→s} ftsres 。最终的全流预测 f t → s f u l l f^{full}_{t→s} ftsfull f t → s r i g + f t → s r e s f^{rig}_{t→s} + f^{res}_{t→s} ftsrig+ftsres 构成。
在这里插入图片描述

如图 3 所示,我们的第一阶段,刚性结构重建器,在大多数刚性场景中产生高质量的重建,这为我们的第二阶段奠定了良好的起点。因此,我们的运动定位器中的 ResFlowNet 仅关注其他非刚性残基。请注意,ResFlowNet 不仅可以纠正动态对象中的错误预测,而且由于我们的端到端学习协议,还可以改进第一阶段可能由高饱和度和极端照明条件引起的不完美结果。

同样,我们可以简单修改一下把第一阶段扩展到第二阶段。具体来说,按照完整流程 f t → s f u l l f^{full}_{t→s} ftsfull ,我们再次在任意一对目标帧和源帧之间执行图像扭曲。将等式(2) 中的 I ~ s r i g \tilde{I}^{rig}_s I~srig 替换为 I ~ s f u l l \tilde{I}^{full}_s I~sfull得到完整变形损失 L f w L_{fw} Lfw。类似地,我们扩展了方程(3) 中二维光流场的平滑度损失,我们将其表示为 L f s L_{fs} Lfs

Geometric Consistency Enforcement

我们的 GeoNet 采用刚性结构重建器用于静态场景,采用非刚性运动定位器作为动态物体的补偿。两个阶段都利用视图合成目标作为监督,并隐含地假设光度一致性。尽管我们采用了强大的图像相似性评估,例如等式 (2)。

遮挡和非朗伯曲面在实践中仍然无法完美处理。

为了进一步减轻这些影响,我们在学习框架中应用了前向后向一致性检查,而不改变网络架构。 Godard 等人 [15] 的工作将类似的想法融入到他们的具有左右一致性损失的深度学习方案中。然而,我们认为这种一致性约束以及扭曲损失不应该强加在遮挡区域(参见第 4.3 节)。相反,我们优化了最终运动场的自适应一致性损失。

具体来说,我们的几何一致性强制是通过优化以下目标来实现的
在这里插入图片描述
由于这些区域违反了照片一致性以及几何一致性假设,因此我们仅使用平滑度损失 L f s L_{fs} Lfs 来处理它们。因此,我们的全流扭曲损失 L f w L_{fw} Lfw 和几何一致性损失 L g c L_{gc} Lgc 均按 [ δ ( p t ) ] [δ(pt)] [δ(pt)] 像素加权。
在这里插入图片描述

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

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

相关文章

Kafka3.0.0版本——消费者(消费者组案例)

目录 一、消费者组案例1.1、案例需求1.2、案例代码1.2.1、消费者1代码1.2.2、消费者2代码1.2.3、消费者3代码1.2.4、生产者代码 1.3、测试 一、消费者组案例 1.1、案例需求 测试同一个主题的分区数据,只能由一个消费者组中的一个消费。如下图所示: 1…

[CISCN 2019华北Day1]Web1

文章目录 涉及知识点解题过程 涉及知识点 phar反序列化文件读取 解题过程 打开题目,注册用户为admin 进去发现有文件上传的功能,我们随便上传个图片 然后就有下载和删除两个功能 我们尝试抓包下载文件的功能 发现参数可控,我们尝试读取一下…

C++如何查看栈的变量

在如下行下断点,然后运行,中断; 右击中断的代码行,选择 转到反汇编; 红线标示的行是调用AddNum()函数处;看一下之前使用了push把a和b压入栈;使用push压入栈的变量就是放入栈的变量; …

Net跨平台UI框架Avalonia入门-安装和使用(v11版本)

介绍Avalonia v11版本 avalonia v11版本发布了,增加了很多新的功能,Avalonia的扩展也同步升级了。 主要更新内容: 辅助功能:增加了对各种辅助工具的支持,提高了Avalonia应用程序的可用性。输入法编辑器(I…

模型压缩-对模型结构进行优化

模型压缩-对模型结构进行优化 概述 模型压缩通常都是对推断过程而言,训练过程的计算代价通常不考虑,因为GPU可以快速完成任意复杂度模型的训练对于推断过程来说,模型应用才是对于速度敏感的场景多数情况下 希望使用尽可能少的能耗完成京可能…

通俗讲解傅里叶变换

参考:六一礼物:给孩子解释什么是傅里叶变换 牛!不看任何数学公式来讲解傅里叶变换 如何直观形象、生动有趣地给文科学生介绍傅里叶变换? - 知乎 从基说起…… 从数学的角度,提供一个形象有趣的解释。理解傅里叶变换的钥匙是理解基♂,它能让你重新认识世界。 1. 什么是…

概率有向图模型(一)

文章目录 前言概率有向图模型验证回到书中隐马尔可夫模型信念网络朴素贝耶斯 总结 前言 经过前面的复习,我们把李航老师的《统计学习方法》中的监督学习部分回顾了一遍,接下来我们在此基础上,开始学习邱锡鹏老师的《神经网络与深度学习》&am…

02_常见网络层协议的头结构

1.ARP报文的报文结构 ARP首部的5个字段的含义: 硬件类型:值为1表示以太网MAC地址。 协议类型:表示要映射的协议地址类型,0x0800 表示映射为IP地址。 硬件地址长度:在以太网ARP的请求和应答中都是6,表示M…

【LeetCode题目详解】第九章 动态规划part06 完全背的讲解 518. 零钱兑换 II 377. 组合总和 Ⅳ (day44补)

本文章代码以c为例! 动态规划:完全背包理论基础 思路 # 完全背包 有N件物品和一个最多能背重量为W的背包。第i件物品的重量是weight[i],得到的价值是value[i] 。每件物品都有无限个(也就是可以放入背包多次)&#…

QT QScrollArea控件 使用详解

本文详细的介绍了QScrollArea控件的各种操作,例如:新建界面、源文件、布局、进度条宽、进度条高、水平滚动条值、垂直滚动条值、移入事件、移出事件、效果图、其它文章等等操作。 实际开发中,一个界面上可能包含十几个控件,手动调…

Qt creator中项目的构建配置和运行设置

使用 Qt Creator 集成开发环境构建和运行程序是一件非常简单的事情,一个按钮或者一个快捷键搞定全部,大家已经都了解了。但是,这些看起来简单的过程,背后到底发生了什么呢? 点击 Qt Creator 项目模式,可以…

elasticsearch的DSL查询文档

DSL查询分类 查询所有:查询出所有数据,一般测试用。例如:match_all 全文检索(full text)查询:利用分词器对用户输入内容分词,然后去倒排索引库中匹配。例如: match_query multi_ma…

(源码版)2023 年高教社杯全国大学生数学建模竞赛-E 题 黄河水沙监测题一数据分析详解+Python代码

十分激动啊啊啊题目终于出来了!!官网6点就进去了结果直接卡死现在才拿到题目,我是打算A-E题全部做一遍。简单介绍一下我自己:博主专注建模四年,参与过大大小小数十来次数学建模,理解各类模型原理以及每种模…

50etf期权最多能开仓多少手?

50etf期权限仓限额的操作,是为了能更好防范和控制期权交易的风险,无论是期货还是期权,在交易中都有规定的持仓限额,不能超过某个额度,那么50etf期权最多能开仓多少手?下文为你们全面介绍!本文来…

2023高教社杯数学建模E题思路模型 - 黄河水沙监测数据分析

# 1 赛题 E 题 黄河水沙监测数据分析 黄河是中华民族的母亲河。研究黄河水沙通量的变化规律对沿黄流域的环境治理、气候变 化和人民生活的影响, 以及对优化黄河流域水资源分配、协调人地关系、调水调沙、防洪减灾 等方面都具有重要的理论指导意义。 附件 1 给出了位…

项目01—基于nignx+keepalived双vip的负载均衡高可用Web集群

文章目录 一.项目介绍1.拓扑图2.详细介绍 二.前期准备1.项目环境2.IP划分 三. 项目步骤1.ansible部署软件环境1.1 安装ansible环境1.2 建立免密通道1.3 批量部署nginx 2.配置NFS服务器和负载均衡器搭建keepalived2.1 修改nginx的index.html界面2.2 nginx实现七层负载均衡2.4 使…

[LeetCode]栈,队列相关题目(C语言实现)

文章目录 LeetCode20. 有效的括号LeetCode225. 用队列实现栈LeetCode232. 用栈实现队列LeetCode622. 设计循环队列 LeetCode20. 有效的括号 题目 给定一个只包括 (,),{,},[,] 的字符串 s ,判断字符串是否有…

【数据结构与算法系列4】长度最小的子数组

给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 连续子数组 [numsl, numsl1, ..., numsr-1, numsr] ,并返回其长度**。**如果不存在符合条件的子数组,返回 0 。 示例 1: 输入&…

读书笔记-《ON JAVA 中文版》-摘要24[第二十一章 数组]

文章目录 第二十一章 数组1. 数组特性2. 一等对象3. 返回数组4. 多维数组5. 泛型数组6. Arrays的fill方法7. Arrays的setAll方法8. 数组并行9. Arrays工具类10. 数组拷贝11. 数组比较12. 流和数组13. 数组排序14. binarySearch二分查找15. 本章小结 第二十一章 数组 1. 数组特…

【Spring面试】一、SpringBoot启动优化与Spring IoC

文章目录 Q1、SpringBoot可以同时处理多少请求Q2、SpringBoot如何优化启动速度Q3、谈谈对Spring的理解Q4、Spring的优缺点Q5、Spring IoC容器是什么?作用与优点?Q6、Spring IoC的实现机制是什么Q7、IoC和DI的区别是什么Q8、紧耦合与松耦合的区别&#xf…