谷歌CVPR最新成果!采用数据驱动方法通过YouTube视频生成深度图(效果最先进!)

本文主要是介绍谷歌CVPR最新成果!采用数据驱动方法通过YouTube视频生成深度图(效果最先进!),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

点上方蓝字计算机视觉联盟获取更多干货

在右上方 ··· 设为星标 ★,与你不见不散


本文来源于联盟成员翻译笔记

昨日(4月25日)刚更新的文章

地址:https://arxiv.org/pdf/1904.11111.pdf

摘要:

本文提出了一种在自由移动的场景中预测密集深度的方法。现有的从单目视频中恢复动态非刚性物体深度的方法对物体的运动有很强的假设,只能恢复稀疏深度。在本文中采用数据驱动的方法,从一个新的数据源中学习人类的深度先验信息:成千上万的模仿人体模型的人的互联网视频,即冻结在不同的自然姿势,而手持摄像机巡视现场。由于人是静止的,训练数据可以通过多视图立体重建生成。在推理时,使用来自场景静态区域的运动视差提示来指导深度预测。我们演示了移动手持相机捕捉到的复杂人体动作的真实序列的方法,展示了对最先进的单目深度预测方法的改进,并展示了使用我们的预测深度产生的各种三维效果。

1 简介

手持摄像机观看动态场景是现代摄影中常见的场景。在这种情况下,恢复密集的几何图形是一项具有挑战性的任务:移动对象违反了三维视觉中使用的极线约束,并且为了可视化的目的,经常被视为现有结构中的噪波或异常值,并将其称为深度图:从运动(SFM)和多视图立体(MVS)方法。然而,人类的深度感知并不容易被物体运动所愚弄,相反,即使物体和观察者都在移动,即使只有一只眼睛观察到场景,我们仍然可以对物体的几何结构和深度顺序进行可行的解释[11]。在这项工作中,我们朝着计算上实现这一能力迈出了一步。

       我们专注于从普通视频中预测准确、密集的深度,在普通视频中,摄像机和场景中的人都是自然移动的。我们关注人类有两个原因:i)在许多应用中(例如,增强现实),人类构成了场景中的突出物体;ii)人类的运动是有关节的,难以建模。通过采用数据驱动的方法,我们可以避免对人的形状或变形进行明确的假设,而是从数据中学习这些先验。

我们从哪里获取数据来训练这种方法?生成高质量的合成数据,在这些数据中,摄像机和场景中的人都是自然移动的,这是非常具有挑战性的。深度传感器(如Kinect)可以提供有用的数据,但此类数据通常仅限于室内环境,需要在捕获和处理过程中进行大量的人工工作。此外,很难将不同年龄和性别、不同姿势的人聚集在一起。相反,我们从一个令人惊讶的来源获得数据:YouTube视频中,人们模仿人体模型,即,在精心制作的自然姿势中冻结,而手持摄像机则在现场巡视(图2)

这些视频包括我们的新人体模型(MC)数据集,我们计划为研究社区发布,因为整个场景,包括人,都是静止的,我们使用SFM和MVS估计相机的姿势和深度,并使用这个衍生的三维数据作为训练的监督。

特别是,我们设计并训练了一个深度神经网络,它接收输入的RGB图像、人类区域的遮罩和环境的初始深度(即非人类区域),并在整个图像上输出一个密集的深度图,包括环境和人(见图1)

请注意,使用视频两帧之间的运动视差计算环境的初始深度,为网络提供单帧中不可用的信息。一旦经过训练,我们的模型可以处理自然视频与任意摄像机和人体运动。

我们展示了我们的方法在各种真实的互联网视频上的适用性,这些视频是用手持摄像机拍摄的,描绘了复杂的人类行为,如行走、跑步和跳舞。我们的模型预测深度的精度比最先进的单目深度预测和运动立体方法更高。我们还将进一步展示我们的深度贴图如何用于产生各种3D效果,例如合成景深、深度感知绘制以及将虚拟对象插入具有正确遮挡的3D场景中。

贡献是:i)一个新的深度预测数据源,包括大量互联网视频,其中摄像头以自然姿势围绕“冻结”的人移动,以及生成精确深度图和摄像头姿势的方法;ii)一个基于深度网络的模型,设计和训练用于预测密集度深度图在同时相机运动和复杂人体运动的挑战情况下。

2.相关工作

基于学习的深度预测。许多基于有监督和无监督学习的算法最近被提出用于预测单个RGB图像的密集深度。一些最新的基于学习的方法也考虑多个图像,要么假设已知的相机姿势,要么同时预测相机姿势和深度。然而,它们都不能用来预测动态物体的深度,这是我们工作的重点。

       动态场景的深度估计。RGBD数据已广泛用于动态场景的三维建模,但只有少数几种方法试图估计单眼相机的深度。提出了几种方法来重建动态场景的稀疏几何体。罗素等]和Ranftl等人建议基于运动/对象分割的算法将动态场景分解为分段刚性部分。然而,这些方法对物体的运动施加了强烈的假设,而这种假设是人类关节运动所违反的。Konstantinos等人利用国际足联视频游戏的综合训练数据预测足球运动员的移动深度。然而,他们的方法仅限于足球运动员,不能处理一般人在野外。

       用于学习深度的RGBD数据。有许多室内场景的RGBD数据集,使用深度传感器或综合渲染捕获。然而,这些数据集都不能为在自然环境中移动的人提供深度监控。有几种动作识别方法使用深度传感器来捕捉人类的动作,但大多数都使用静态摄像机,只提供有限数量的室内场景。Refresh是一个最新的半合成场景流数据集,通过将动画人物叠加到nyuv2图像上创建。在这里,数据也局限于室内,由人造人组成,他们被放置在与周围不现实的配置中。

       人体形状和姿势预测。从单个RGB图像中恢复构成的三维人体网格引起了极大的关注。最近的方法在跨越各种姿势的自然图像上取得了令人印象深刻的效果。然而,这种方法只是模拟人体,不理会头发、衣服和非人体部位的场景。最后,这些方法中的许多依赖于正确地检测人体关键点,要求身体的大部分都在框架内。

3.MannequinChallenge Dataset

   人体模型挑战[42]是一种流行的视频趋势,在这种趋势中,当摄像机操作员在场景周围移动拍摄人体模型时,人们通常会以有趣的姿势原地不动(如图2)。自2016年底以来,已有数千个此类视频被创建并上传至YouTube。如果人们在视频中成功地保持静止,我们可以假设场景是静态的,并通过使用SFM和MVS算法对其进行处理来获得准确的摄像机姿态和深度信息。我们发现大约2000个候选视频,这个处理是可能的。这些视频包括我们的新的(MC)数据集,它涵盖了不同年龄的人的广泛场景,自然呈现在不同的组配置中。接下来,我们将详细描述如何处理这些视频并导出我们的培训数据。

       估计相机姿态。采用与周等类似的方法。我们使用ORB-SLAM2[24]来识别每个视频中的可跟踪序列,并估计每个帧的初始摄像机姿势。在这个阶段,我们处理低分辨率的视频以提高效率,并将视场设置为60度(现代手机摄像头的典型值)。然后,我们使用视觉SFM系统[32]以更高的分辨率重新处理每个序列,该系统优化了初始摄像机姿态和固有参数。该方法提取并匹配跨帧的特征,然后执行全局束调整优化。最后,利用周等的技术去除了摄像机运动不平稳的序列。

      用MVS计算密集深度。一旦对每个片段的相机姿势进行了估计,我们就可以重建每个场景的密集几何体。特别是,我们使用最先进的MVS系统colmap恢复每帧密集深度图。

       过滤剪辑。有几个因素会使视频剪辑不适合训练。例如,人们可能在视频中的某一点“解冻”(开始移动),或者视频可能在背景中包含合成图形元素。动态对象和合成背景不受多视图几何约束,因此被视为异常值,并被MVS过滤掉,可能只留下少量有效像素。因此,在经过两次清洗阶段后,我们删除了小于20%像素具有有效MVS深度的帧。

此外,我们移除了估算径向畸变系数k1>0.1(表示鱼眼相机)或估算焦距小于等于0.6或大于等于1.2(相机参数可能不准确)的帧。我们保持的序列至少有30帧长,纵横比为16:9,并且具有超过1600像素的宽度。最后,我们手动检查剩余序列的轨迹和点云,并消除明显不正确的重建。删除的图像示例显示在补充材料中。

       经过处理,得到4690个序列,有效图像深度对超过170K。我们用80:3:17的片段将我们的mc数据集分解为培训、验证和测试集。

4. 模型

       我们以有监督的方式对人体模型数据集的深度预测模型进行训练,即通过回归到MVS管道生成的深度。一个关键的问题是如何构造网络的输入,以允许对冻结的人进行训练,但对自由移动的人进行推理。一种选择是从单个RGB图像回归到深度,但是这种方法忽略了有关场景静态区域的几何信息,这些静态区域通过考虑多个视图而可用。为了从这些信息中获益,我们向网络输入一张静态非人类区域的深度图,根据运动视差w.r.t.另一个场景视图进行估算。

5 结果

      我们对我们的方法进行了定量和定性的测试,并将其与几种最先进的单视图和基于运动的深度预测算法进行了比较。我们对复杂的人体运动和自然的摄像机运动的挑战性互联网视频显示了额外的定性结果,并演示了我们预测的深度图如何用于几种视觉效果。

MCtest set 和TUM RGBD dataset

5.1MCtest set

   为了量化我们设计的模型输入的重要性,我们比较了几个模型的性能,每个模型在我们的mc数据集上训练,具有不同的输入配置。两种主要配置是:(i)单视图模型(输入为RGB图像)和(ii)我们的全双帧模型,其中输入包括参考图像、初始遮罩深度图DPP、置信图C和人体遮罩M。我们还通过将输入深度替换为光流F、从输入中删除C以及添加人类关键点图。

    定量评价如表1所示。通过比较第(i)、(iii)和(iv)行,可以清楚地看出,添加初始环境深度和置信度图可以显著提高人类和非人类区域的性能。在网络输入中添加人工关键点位置可以进一步提高性能。请注意,如果我们向网络输入光流场而不是深度(ii),则性能仅与单视图方法相当。从二维光流到深度的映射取决于摄像机的相对姿态,而这些姿态并没有提供给网络。结果表明,该网络不能隐式学习相对姿态,不能提取深度信息。

    图4显示了我们的单视图模型(I)和我们的完整模型(IDPPCMK)之间的定性比较。我们的全模型结果在人类区域(例如,第一列)和非人类区域(例如,第二列)中更准确。此外,在所有例子中,人们与周围环境之间的深度关系都得到了改善。

5.2

    我们使用了tum-rgbd数据集[38]的一个子集,其中包含执行复杂动作的人的室内场景,这些场景是从不同的相机姿势捕获的。该数据集的样本图像如图5(a-b)所示。

     为了运行我们的模型,我们首先使用ORB-SLAM2 3估计相机姿态。

    定量比较如表2所示,其中我们报告了5种不同的尺度不变性误差测量,以及标准的RMSE和相对误差;最后两种是通过应用一个单一的比例因子来计算的,该比例因子在最小二乘意义上对齐预测和地面真值深度。我们的单视图模型已经优于其他单视图模型,证明了用于培训的MC数据集的好处。注意,由于挑战性的摄像机和物体运动,Viopopop[ 31 ]未能产生有意义的结果。我们的完整模型,通过使用初始(掩蔽)深度图,显著地改善了所有错误度量的性能。与我们的MC测试集结果一致,当我们使用光流作为输入(而不是初始深度图)时,性能只比单视图网络稍好。最后,我们展示了我们提出的“深度清理”方法的重要性,该方法应用于培训数据(见等式1)。与同一模型相比,仅使用原始MVS深度预测作为监督进行培训,我们发现性能下降了约15%。

图5显示了不同方法之间的定性比较。我们的模型的深度预测(图5(f-g))与地面情况非常相似,显示出高度的细节和尖锐的深度不连续。这一结果是对竞争方法的无表改进,这通常会在两个人类区域(如图5第二行中的腿)和非人类区域(如最后两行中的桌子和天花板)中产生显著错误。

如图6所示,我们的深度预测明显优于基线方法。我们预测的深度图描绘了场景中人与其他物体之间(如人与建筑物之间、图6第四行)以及人类区域内(如图6前三行中人的胳膊和腿)的精确深度排序。

基于深度的视觉效果。我们的深度可以用来应用一系列基于深度的视觉效果。图7显示了基于深度的散焦、插入合成的3D图形,以及去除附近的人。更多示例,包括单声道到立体声转换,请参见补充材料。

随着时间的推移,深度估计值足够稳定,可以从视频中的其他帧进行绘制。为了使用帧进行修复,我们从深度图、纹理与视频帧的高程场构造三角高程场,并使用相对摄像机变换渲染目标帧的高程场。图7(D,F)显示了修复两个街道场景的结果。摄像机附近的人是用人脸M移除的,在视频的后期,洞里充满了200帧的颜色。一些人工制品可以在人体面具漏掉的地方看到,例如地上的阴影。

END

声明:本文来源于联盟学习笔记

如需转载,联系后台

加群交流

欢迎加入CV联盟群获取CV和ML等领域前沿资讯

扫描添加CV联盟微信拉你进群,备注:CV联盟

热文荐读

CVPR2019北大最新成果!基于语义解析转换的无监督人图像生成

CVPR2019| 中科院VIPL实验室11篇CVPR解读:弱监督学习、视频分割、目标检测

Google CVPR 2019最新成果!NAS-FPN:可扩展特征金字塔结构用于目标检测

一文带你领略GANs核心

卡内基·梅隆大学新提出AdaScale:自适应缩放实现视频对象实时检测算法

点个好看支持一下吧

这篇关于谷歌CVPR最新成果!采用数据驱动方法通过YouTube视频生成深度图(效果最先进!)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/636859

相关文章

Java中流式并行操作parallelStream的原理和使用方法

《Java中流式并行操作parallelStream的原理和使用方法》本文详细介绍了Java中的并行流(parallelStream)的原理、正确使用方法以及在实际业务中的应用案例,并指出在使用并行流... 目录Java中流式并行操作parallelStream0. 问题的产生1. 什么是parallelS

MySQL数据库双机热备的配置方法详解

《MySQL数据库双机热备的配置方法详解》在企业级应用中,数据库的高可用性和数据的安全性是至关重要的,MySQL作为最流行的开源关系型数据库管理系统之一,提供了多种方式来实现高可用性,其中双机热备(M... 目录1. 环境准备1.1 安装mysql1.2 配置MySQL1.2.1 主服务器配置1.2.2 从

Python版本信息获取方法详解与实战

《Python版本信息获取方法详解与实战》在Python开发中,获取Python版本号是调试、兼容性检查和版本控制的重要基础操作,本文详细介绍了如何使用sys和platform模块获取Python的主... 目录1. python版本号获取基础2. 使用sys模块获取版本信息2.1 sys模块概述2.1.1

Python实现字典转字符串的五种方法

《Python实现字典转字符串的五种方法》本文介绍了在Python中如何将字典数据结构转换为字符串格式的多种方法,首先可以通过内置的str()函数进行简单转换;其次利用ison.dumps()函数能够... 目录1、使用json模块的dumps方法:2、使用str方法:3、使用循环和字符串拼接:4、使用字符

Python版本与package版本兼容性检查方法总结

《Python版本与package版本兼容性检查方法总结》:本文主要介绍Python版本与package版本兼容性检查方法的相关资料,文中提供四种检查方法,分别是pip查询、conda管理、PyP... 目录引言为什么会出现兼容性问题方法一:用 pip 官方命令查询可用版本方法二:conda 管理包环境方法

Linux云服务器手动配置DNS的方法步骤

《Linux云服务器手动配置DNS的方法步骤》在Linux云服务器上手动配置DNS(域名系统)是确保服务器能够正常解析域名的重要步骤,以下是详细的配置方法,包括系统文件的修改和常见问题的解决方案,需要... 目录1. 为什么需要手动配置 DNS?2. 手动配置 DNS 的方法方法 1:修改 /etc/res

Linux下利用select实现串口数据读取过程

《Linux下利用select实现串口数据读取过程》文章介绍Linux中使用select、poll或epoll实现串口数据读取,通过I/O多路复用机制在数据到达时触发读取,避免持续轮询,示例代码展示设... 目录示例代码(使用select实现)代码解释总结在 linux 系统里,我们可以借助 select、

通过React实现页面的无限滚动效果

《通过React实现页面的无限滚动效果》今天我们来聊聊无限滚动这个现代Web开发中不可或缺的技术,无论你是刷微博、逛知乎还是看脚本,无限滚动都已经渗透到我们日常的浏览体验中,那么,如何优雅地实现它呢?... 目录1. 早期的解决方案2. 交叉观察者:IntersectionObserver2.1 Inter

JavaScript对象转数组的三种方法实现

《JavaScript对象转数组的三种方法实现》本文介绍了在JavaScript中将对象转换为数组的三种实用方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友... 目录方法1:使用Object.keys()和Array.map()方法2:使用Object.entr

Vue3视频播放组件 vue3-video-play使用方式

《Vue3视频播放组件vue3-video-play使用方式》vue3-video-play是Vue3的视频播放组件,基于原生video标签开发,支持MP4和HLS流,提供全局/局部引入方式,可监听... 目录一、安装二、全局引入三、局部引入四、基本使用五、事件监听六、播放 HLS 流七、更多功能总结在 v