GeoNet: Unsupervised Learning of Dense Depth, Optical Flow and Camera Pose 论文阅读
论文信息
题目: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} Tt→s 来定义静态场景几何形状。从目标图像 I t I_t It到源图像 I s I_s Is的相对二维刚性流可以表示为:
另一方面,我们将无约束的物体运动建模为经典光流概念,即二维位移矢量。
我们学习残差流 f t → s r e s f^{res}_{t→s} ft→sres 而不是非刚性情况的完整表示。
GeoNet OverViwe
我们提出的 GeoNet 以无人监督的方式感知 3D 场景几何的本质。
特别是,
- 我们使用单独的组件分别通过刚性结构重建器和非刚性运动定位器来学习刚性流和物体运动。
- 采用图像外观相似度来指导无监督学习,可以推广到无限数量的视频序列,而无需任何标记成本。
我们的 GeoNet 的概述如图 2 所示。
它包含两个阶段,刚性结构推理阶段和非刚性运动细化阶段。
推断场景布局的第一阶段由两个子网络组成,即 DepthNet 和 PoseNet。深度图和相机位姿分别回归并融合以产生刚性流。
第二阶段由 ResFlowNet 完成以处理动态对象。 ResFlowNet 学习到的残余非刚性流与刚性流相结合,得出我们最终的流预测。由于我们的每个子网络都针对特定的子任务,因此复杂的场景几何理解目标被分解为一些更简单的目标。不同阶段的视图合成是我们无监督学习范式的基本监督。
最后但并非最不重要的一点是,我们在训练期间进行几何一致性检查,这显着增强了我们预测的一致性并取得了令人印象深刻的性能
Rigid Structure Reconstructor
我们的第一阶段旨在重建刚性场景结构,并对非刚性和异常值具有鲁棒性。
训练示例是具有已知相机内在特性的时间连续帧 I i ( i = 1 ∼ n ) I_i(i = 1 ∼ n) Ii(i=1∼n)。通常,目标帧 I t I_t It被指定为参考视图,而其他帧是源帧 I s I_s Is。
DepthNet 将单一视图作为输入,并利用累积的场景先验进行深度预测。在训练期间,整个序列被视为独立图像的小批量并输入到 DepthNet 中。
相反,为了更好地利用不同视图之间的特征对应关系,我们的 PoseNet 将沿通道维度连接的整个序列作为输入,一次性回归所有相对 6DoF 相机姿势 T t → s T_{t→s} Tt→s。
基于这些基本预测,我们能够根据方程(1) 推导出全局刚性流。 我们可以立即合成任意一对目标帧和源帧之间的另一个视图。
我们将 I ~ s r i g \tilde{I}^{rig}_s I~srig 表示为基于 f t → s r i g f^{rig}_{t→s} ft→srig 从 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} ft→sres 。最终的全流预测 f t → s f u l l f^{full}_{t→s} ft→sfull 由 f t → s r i g + f t → s r e s f^{rig}_{t→s} + f^{res}_{t→s} ft→srig+ft→sres 构成。
如图 3 所示,我们的第一阶段,刚性结构重建器,在大多数刚性场景中产生高质量的重建,这为我们的第二阶段奠定了良好的起点。因此,我们的运动定位器中的 ResFlowNet 仅关注其他非刚性残基。请注意,ResFlowNet 不仅可以纠正动态对象中的错误预测,而且由于我们的端到端学习协议,还可以改进第一阶段可能由高饱和度和极端照明条件引起的不完美结果。
同样,我们可以简单修改一下把第一阶段扩展到第二阶段。具体来说,按照完整流程 f t → s f u l l f^{full}_{t→s} ft→sfull ,我们再次在任意一对目标帧和源帧之间执行图像扭曲。将等式(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)] 像素加权。
相关文章:
GeoNet: Unsupervised Learning of Dense Depth, Optical Flow and Camera Pose 论文阅读
论文信息 题目:GeoNet: Unsupervised Learning of Dense Depth, Optical Flow and Camera Pose 作者:Zhichao Yin and Jianping Shi 来源:CVPR 时间:2018 Abstract 我们提出了 GeoNet,这是一种联合无监督学习框架&a…...
蓝桥杯官网填空题(振兴中华)
题目描述 本题为填空题,只需要算出结果后,在代码中使用输出语句将所填结果输出即可。 小明参加了学校的趣味运动会,其中的一个项目是:跳格子。 地上画着一些格子,每个格子里写一个字,如下所示࿱…...
node基础之七:Mongodb 数据库
下载地址:https://www.mongodb.com/try/download/community v:5.0.20 platform:window package:zip 复制到 c 盘/Programs Files c 盘创建 data/db 文件夹 默认存放数据地址 在 bin 目录下启动数据库 mongod, 客户端连接数据库…...
基于Python和mysql开发的智慧校园答题考试系统(源码+数据库+程序配置说明书+程序使用说明书)
一、项目简介 本项目是一套基于Python和mysql开发的智慧校园答题考试系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的Python学习者。 包含:项目源码、项目文档、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都…...
OPPO/真我手机ColorOS13系统解账户锁-移除手机密码图案锁方法
在搞机之前,请确定自己的手机不是非法获取,本文只讲叙ColorOS13系统解锁方法,仅为个人测试研究出来的经验,未对官方系统进行任何修改。只推荐专业维修师傅从维修的角度进行解锁,不推荐个人用户对非自己的手机进行非法破…...
阿里云大数据实战记录9:MaxCompute RAM 用户与授权
文章目录 问题来源:maxcompute 管理员无法访问敏感列?主线问题:如何提高用户等级衍生问题1:怎么知道自己的等级和表单的等级衍生问题2:为什么 dataworks 空间管理员也没有设置等级的权限?衍生问题3…...
JavaScript基础07——变量拓展-数组
哈喽,大家好,我是雷工! 每天打卡学习一点点,今天继续学习JavaScript基础知识,以下是学习笔记。 一、数组的基本介绍 数组 (Array)——一种将一组数据存储在单个变量名下的优雅方式。 数组的作用和变量一样…...
go-zerogo web集成redis实战
前言 上一篇:go-zero&go web集成JWT和cobra命令行工具实战 从零开始基于go-zero搭建go web项目实战-03集成redis实战 源码仓库地址 源码 https://gitee.com/li_zheng/treasure-box golang redis 客户端 Go-Redis 地址: GitHub: https://github.…...
油猴浏览器(安卓)
油猴浏览器页面设计非常简约,在主页上还为小伙伴们推荐了很多的常用书签,像油猴脚本,常用导航,新闻,热搜类的,快递查询等等,可以设置快捷访问,把常用到的一些网站设置在主页上。 浏览…...
Redis 6.0多线程模型比单线程优化在哪里了
推荐阅读 项目实战:AI文本 OCR识别最佳实践 AI Gamma一键生成PPT工具直达链接 玩转cloud Studio 在线编码神器 玩转 GPU AI绘画、AI讲话、翻译,GPU点亮AI想象空间 资源分享 史上最全文档AI绘画stablediffusion资料分享 AI绘画关于SD,MJ,GPT,SDXL百科全书 AI绘画 stable…...
[hello,world]这个如何将[ ] 去掉
[hello,world]这个如何将[ ] 去掉? 你可以使用编程语言中的字符串处理函数来去掉方括号。以下是一个示例代码,使用Python的strip()函数去掉方括号: text "[hello,world]" text text.strip("[]") print(text)输出为&a…...
机器学习_个人笔记_周志华(更新中......)
第1章 绪论 1.1 引言 形成优秀的心理表征,自然能成为领域内的专家。 系统1 & 系统2。 机器学习:致力于研究如何通过计算的手段,利用经验来改善系统自身的性能。主要研究计算机从数据中产生model的算法,即“learning algori…...
嵌入式Linux驱动开发(LCD屏幕专题)(二)
一、结合APP分析LCD驱动程序 1、open app: open("/dev/fb0", ...) 主设备号: 29, 次设备号: 0 -------------------------------------------------------------- kernel:fb_open // fbmem.cstruct fb_info *info;info get_fb_info(fbidx);if (info->fbop…...
React的jsx的用法
React是一个流行的JavaScript库,用于构建用户界面。它使用一种名为JSX的语法扩展来描述组件的结构和样式。JSX是React的核心语言之一,它允许开发人员在JavaScript中编写HTML,从而使代码更加简洁和易于阅读。 JSX是一种语法扩展,它…...
Ei Scopus检索 | 2024年第四届能源与环境工程国际会议(CoEEE 2024)
会议简介 Brief Introduction 2024年第四届能源与环境工程国际会议(CoEEE 2024) 会议时间:2023年5月22日-24日 召开地点:意大利米兰 大会官网:www.coeee.org CoEEE 2024将围绕“能源与环境工程”的最新研究领域而展开,为研究人员、…...
习题练习 C语言(暑期第四弹)
自我小提升! 前言一、数组二、指针运算三、统计每个月兔子的总数四、双指针的应用五、判断指针六、珠玑妙算七、两数之和八、数组下标九、指针十、寻找峰值十一、二级指针十二、大端小端十三、无符号参数十四、数对十五、截取字符串总结 前言 重要的事说三遍&#…...
【docker快速部署微服务若依管理系统(RuoYi-Cloud)】
工作原因,需要一个比较完整的开源项目测试本公司产品。偶然发现RuoYi-Cloud非常适合,它有足够多的中间件,而且官方提供docker安装,但我本人在安装过程中遇到了很多坑,在这里记录一下防止下次会再次遇到。 项目地址 ht…...
面试求职-简历编写技巧
没有高水平简历 只有高匹配的简历 试问一下:如果一个非常牛逼的软件工程的硕士,投递市场营销岗位,结果会是什么样呢? 这位同学大概率没办法通过简历。 不是因为他不够优秀,而是因为简历和岗位不够匹配。 在公司的招…...
云原生安全性:构建可信任的云应用的最佳实践
文章目录 云原生安全性的重要性1. 数据隐私2. 恶意攻击3. 合规性要求4. 业务连续性 构建可信任的云应用的最佳实践1. 安全开发2. 身份验证与授权3. 容器安全性4. 监控与审计5. 持续集成与持续交付(CI/CD)6. 安全培训和教育 未来趋势:服务网格…...
第一章 数据库SQL-Server(及安装管理详细)
❄️作者介绍:奇妙的大歪❄️ 🎀个人名言:但行前路,不负韶华!🎀 🐽个人简介:云计算网络运维专业人员🐽 前言 21 世纪,人类迈入了“信息爆炸时代”,…...
chrome extension无法获取window对象
背景见上一篇博客修改网页内容的方法 上一篇博客之后,我要修改的网页有一个新改版,然后有个数据存在了window中,我直接在js中使用window.xxx发现无法获取。所以有本文。 https://juejin.cn/post/7145749643316428830 https://onelinerhub.com…...
在linux虚拟机上安装docker(我的实践)
参考文章: https://blog.csdn.net/qq_29479041/article/details/82659218 步骤: 1.安装docker 参考文章: https://blog.csdn.net/qq_29479041/article/details/82659218 https://blog.csdn.net/qq_38345468/article/details/110128659 2.…...
Spring之事务开发
什么是事务? 事务是指数据库管理系统中的一个执行单位或一个逻辑工作单元,它由一个或多个数据库操作序列组成。事务具有以下四个特性,通常被称为ACID特性: 原子性(Atomicity):事务是一个不可分…...
干了三年的功能测试,让我女朋友跑了,太难受了...
简单概括一下 先说一下自己的情况,普通本科,19年通过校招进入深圳某软件公司,干了3年多的功能测试,21年的那会,因为大环境不好,我整个人心惊胆战的,怕自己卷铺盖走人了,我感觉自己不…...
JavaScript函数的使用
前言 程序中的foo、bar、baz 在学习编程的过程中,你可能会经常看到foo、bar、baz这些名词: 它们通常被用来作为函数、变量、文件的名词;目前已经编程了计算机编程的术语一部分;但是它们本身并没有特别的用途和意义;…...
【算法】Java-使用数组模拟单向链表,双向链表
目录 试题1:实现一个单链表,并实现以下功能: 试题2:实现一个双链表,并实现以下功能 思路总结: 什么情况下可能涉及到用数组实现链表呢? 在学习时了解到了可以用数组模拟链表,使其…...
Nessus简单介绍与安装
Nessus简单介绍与安装 1.Nessus简介 Nessus号称是世界上最流行的漏洞扫描程序,全世界有超过75000个组织在使用它。该工具提供完整的电脑漏洞扫描服务,并随时更新其漏洞数据库。Nessus不同于传统的漏洞扫描软件,Nessus可同时在本机或远端上遥…...
【每天一道算法题】day2-认识时间复杂度
认识时间复杂度: O:读作big O,在数学上指的是上限的意思 常数时间的操作 一个操作如果和样本的数据量没有关系,每次都是固定时间内完成的操作,叫做常数操作。时间复杂度为一个算法流程中,常数操作数量的一…...
前端报错合集
error Component name “index“ should always be multi-word vue/multi-word-component-names 的解决办法 原因组件命名是 没有采用驼峰 error Component name “index“ should always be multi-word vue/multi-word-component-names 的解决办法_error component name &qu…...
Milvus以及Web UI 安装
向量数据库懂的都懂 版本数据 [rootiZ7xv7q4im4c48qen2do2bZ project]# cat /etc/redhat-release CentOS Stream release 9 [rootiZ7xv7q4im4c48qen2do2bZ project]# docker version Client: Docker Engine - CommunityVersion: 24.0.5API version: 1.43Go v…...
招聘类网站建设/山东seo
这个学校的教务系统从大一用到了大三,给予我本人的感受有好有坏。先说说优点吧 1 方便简洁,当时我们大一还是老宿舍的时候网速特别慢,没有有线用电脑来选课查成绩是特别麻烦,这个平台就非常的快捷。 2 每次选体育,公选…...
网站推广 济南/湘潭网站设计外包服务
GUI程序的基本结构 基本结构如下: # 导入需要的包 from PyQt5.Qt import * import sysapp QApplication(sys.argv) #创建一个应用程序(比不可少的)代码主功能模块区 #控件操作#窗口显示 #开始执行应用程序,并进入消息循环 sys…...
石家庄网站建设布局/seo职业发展
只会一些python就能理解的pytorch入门 PyTorch提供设计精美的模块和类 torch.nn、 torch.optim , Dataset 和DataLoader 来帮助您创建和训练神经网络。 为了充分利用他们的力量并针对您的问题定制他们,您需要真正了解他们在做什么。 为了加深这一理解,我…...
做网站的s标的软件/郑州网络营销推广
概要 本分步指南介绍如何在 Microsoft Visual Studio 2005年中的可执行文件 (.exe) 文件中嵌入的清单文件。如果您要开发"认证 Windows Vista"程序,您需要将清单文件嵌入在可执行文件。更多信息 在本文中,占位符appname是指一个示例应用程序。…...
包头哪有做网站的/seo实战密码第四版pdf
斐波纳契数列(Fibonacci Sequence),又称黄金分割数列。在数学上,斐波纳契数列以如下被以递归的方法定义:F00,F11,FnF(n-1)F(n-2)(n>2,n∈N*)在现代物理、准…...
网站建设的步骤/今日头条官网
如果要给C11颁一个“最令人困惑新词”奖,constexpr十有八九会折桂。当用于对象上面,它本质上就是const的加强形式,但是当它用于函数上,意思就大不相同了。有必要消除困惑,因为你绝对会用它的,特别是当你发现…...