来看一场 AI 重建的 3D 全息世界杯比赛!

640?wx_fmt=gif


世界杯来了!央视名嘴白岩松调侃 “俄罗斯世界杯,中国除了足球队没去,其他的都去了”,这届世界杯,中国球迷购买球票的数量在所有国家中排名第 9,可见球迷对世界杯的热情。那么,除了准备好小龙虾在电视机前观看世界杯比赛,你有没有想过让 C罗、梅西或者内马尔在你家桌子上踢一场比赛会是什么样子?


华盛顿大学、Facebook 和 Google 的研究人员开发了第一个端到端的深度学习系统,该系统可以将足球比赛的 YouTube 视频转换为运动的 3D 全息图。


用CNN重建一场足球比赛


“对一场足球比赛进行单目重建有很多挑战。我们必须估计相对于场地的摄像机姿态,检测并跟踪每个球员,重新构建他们的身体形状和姿势,并对联合重建进行渲染,” 研究人员在他们的研究论文中写道。 


640?wx_fmt=png

图1:以足球比赛的 YouTube 视频为输入,系统输出比赛的动态 3D 重建,可以使用增强现实设备在桌面上以交互式的方式观看。


下面的视频演示了这个系统:




这种方法的关键是卷积神经网络(CNN),研究人员通过训练 CNN 来估计每个球员与拍摄比赛的摄像机之间的距离。该网络分析了从足球视频游戏《FIFA》中提取的12000 张 2D 球员图像,以及从游戏引擎提取的相应 3D 数据,以了解两者之间的相关性。


这样,网络就能从没见过的 2D 图像中预估球员的深度图( depth maps)。当被展示没见过的视频时,系统能准确地预测每个球员的深度图,并将其与颜色素材结合,以3D 的方式重建每个球员。

640?wx_fmt=png

图 2:重建方法的概览


以 YouTube 视频的帧作为输入,我们使用 field lines 来恢复摄像机参数。然后,提取边界框、姿势和轨迹(跨多个帧)来分割球员。通过在视频游戏数据上训练好的深度网络,我们在游戏环境中重建了每个球员的深度图,这样就可以在 3D 查看器或 AR 设备上呈现出来。


然后,球员们被放在一个虚拟的足球场上。其结果令人惊叹,并且可以通过 3D 查看器或 AR 设备从任何角度观看比赛。


640?wx_fmt=png

图3:训练数据:从《FIFA》游戏中提取图像和对应的深度,这里展示了几个可视化为深度图和网格的例子。


该团队使用 NVIDIA GeForce GTX 1080 GPU 和 NVIDIA TITAN Xp GPU,以及cuDNN 加速的 PyTorch 深度学习框架,在从世界杯比赛视频中提取的数小时的 3D 球员数据上对卷积神经网络进行训练。


基于这些比赛视频数据,神经网络能够重构球场上的每个球员的深度图,这些图可以在3D 查看器或 AR 设备上呈现。


640?wx_fmt=gif


640?wx_fmt=gif


“事实证明,在玩 EA 的《FIFA》游戏并截取游戏引擎和 GPU 间的调用时,可以从视频游戏中提取深度图。具体来说,我们使用 RenderDoc 来截取游戏引擎和 GPU 之间的调用。” 研究团队表示:“FIFA 与大多数游戏类似,在游戏过程中使用延迟渲染。通过访问 GPU 调用,可以捕获每帧的深度和颜色缓冲区。一旦特定的帧被捕获了深度和颜色,就可以提取出球员。”


640?wx_fmt=png

图4:合成数据集的结果以及与当前最优技术和 ground truth 的比较,可视化为depth maps 和 3D 网格。我们的方法更准确,实现了更好的网格重构。


为了验证这个系统,研究团队用 YouTube 上找到的 10 个高分辨率的职业足球比赛视频测试他们的方法。值得注意的是,该系统只在合成视频素材上进行训练。但是,在真实的场景中,系统也有非常好的结果。


640?wx_fmt=png

来自 YouTube 视频的实际图像的结果


640?wx_fmt=png

从 Youtube 框架开始(顶行),我们网络重建的深度图可以添加到虚拟 3D 球场环境中,这里显示为仅网格和纹理渲染(第 2-4 行)。


研究人员用微软的 HoloLens AR 眼镜进行测试。HoloLens 可以将 3D 重建叠加到真实的桌面上。最终的产品虽然不完美,它无法重建球,不能实时地工作,并且只允许从视频录制的球场侧面观看。但是,这项技术可能比当前 3D 重建运动的最先进方法更具可扩展性,因为当前的方法需要在每一个角度布置相机。研究人员称,这种方法也适用于预定义的其他事件,例如音乐会或剧场。


640?wx_fmt=png

桌面实际的场景


640?wx_fmt=png

用HoloLens看到的场景


研究人员承认他们的系统并不完美。他们的下一个项目将专注于训练系统以更好地检测球,并开发可从任何角度观察的系统。


这项研究将于 6 月 18 日至 22 日在犹他州盐湖城举行的年度计算机视觉和模式识别(CVPR)会议上首次亮相。


论文地址:

http://grail.cs.washington.edu/projects/soccer/soccer_on_your_tabletop.pdf


来源:grail.cs.washington.edu

文章版权归原作者所有,转载仅供学习使用,不用于任何商业用途,如有侵权请留言联系删除,感谢合作。


640?wx_fmt=png

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

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

相关文章

杨中科.NET5视频教程更新了:DI、配置系统、Logging、EF Core等

我的.NET5视频教程又更新了一些内容了,包含依赖注入、配置系统、日志系统以及部分Entity Framework Core的内容。Entity Framework Core还没全讲完,会继续更新。已经有.NET Core开发经验的朋友,可以直接看配置系统第4、5节,讲了自…

编译Linux 2.6内核

编译内核易如反掌。让人叹为观止的是,这实际上比编译和安装像glibc这样的系统级组伴还要简单。2.6内核提供了一套新工具,使编译内核更加容易,比早期发布的内核有了长足的进步。 2.3.1 配置内核 因为Linux源码随手可得,那就意味着在…

获取父线程 java_java子线程中获取父线程的threadLocal中的值

我们都知道线程本地变量表也就是ThreadLocal在我们做线程级的数据隔离时非常好用,但是有时候我们会想如何让子线程获取到父线程的ThreadLocal,其实在线程中除了ThreadLocal外还有InheritableThreadLocal,顾名思义,可继承的线程变量…

源码分享,送你一份Google Python class源码

几年前,Google推出Python课堂。Google Python课堂:https://developers.google.com/edu/python/小编也整理了一下Google Python课堂的源码,里面有四个例子。logpuzzle这个例子主要是利用urllib模块做一个图片拼接的小游戏,主要是从一大堆的网页里面解析分…

用YARP当网关

Yarp是微软开源的一个用.net实现的反向代理工具包,github库就叫reverse-proxy(反向代理)(吐槽一下微软起名字233333)nuget包preview9之前都叫Microsoft.ReverseProxy,preview10变成Yarp.ReverseProxy了放上…

nginx 反向代理+ip智能解析

ocation / { if ($request_uri ~ ^/refresh.do$) { proxy_pass http://edtnew; break; 一 } if ($request_method POST) { proxy_pass http://edtold; break; 二 …

yum java 1.7_centos通过yum安装jdk1.7或1.8

今天安装elasticsearch的时候提示which: no1、 检查系统是否自带有jdk[rootnetpc.com.cn software]# rpm -qa |grep java[rootnetpc.com.cn software]# rpm -qa |grep jdk[rootnetpc.com.cn software]# rpm -qa |grep gcj如果有信息输出则需要卸载掉原来的jdk版本,用…

从生物神经网络到人工神经网络

如今提及人工智能,大家期待的一定是某种可以“学习”的方法,这种方法使用数学模型从数据中获取模式的某种表示。在众多“学习”方法中,获得最多关注,承载最多期望的非“神经网络”莫属。既然我们将这种数学方法称作神经网络&#…

很遗憾,我们正在逐渐丧失专注阅读的能力

这是头哥侃码的第238篇原创最近生活没什么规律,睡得晚,起得早,似乎除了工作之外,其余所有的节奏都有点乱了。前几天去体检,没想到像我这样的 “老司机”,居然会忘记 “要空腹” 的规定,愣是在体…

socket案例一

编写一个网络应用程序,有客户端与服务器端;当客户端向服务器端发送请求时,客户端输出服务器端返回的字符串。 回顾下socket的开发步骤: 1) 建立Socket连接 2) 获得输入/输出流 3)读/写数据 4) 关闭输入/输出流 5) 关闭…

java成员变量垃圾回收_JAVA 对象被垃圾回收后其成员变量可用吗? | 学步园

我们知道JVM中一个对象实例超出作用域或无引用的时候会被垃圾回收,那么他被垃圾回收后,依赖其成员变量的其他实例是否还能正常使用呢?经过测试后发现即使一个实例被垃圾回收,如果他内部的数据被其他对象使用,是不受影响…

陶哲轩的10岁与30岁

Terence Tao(陶哲轩),1975年7月17日出生于澳大利亚Adelaide(阿德莱德)。本讲话作于1985年上半年,即陶哲轩尚未满10周岁时所作,一个稚气儿童,给大学生和教授们作报告,少见…

NET问答: 重写了 Equals,还有必要重写 GetHashCode 吗?

咨询区 David Basarab:直入主题,参考如下代码:public class Foo {public int FooId { get; set; }public string FooName { get; set; }public override bool Equals(object obj){Foo fooItem obj as Foo;if (fooItem null) {return false;…

【转载】DataKeyNames,DataKeys 用法浅谈

原文地址:http://www.cnblogs.com/amos/archive/2010/07/16/1778796.htmlDataKeyNames作为GridView中的一个属性,我们可以利用这个属性结合DataKeys方便的访问GridView中每个字段的值。先说怎么用DataKeyNames可以直接在GridView属性中设置,多…

如果编程替换成中文就会怎样? 程序员看了表示头疼

首先大概的看一下中文编码:你以为会写中文就会编程吗?这就像你以为会写汉字就会写出好文章一样。编程是和机器沟通,因此要用机器的语言而不是人类的语言。最早的程序就是0和1的数字,不是中文也不是英文。以前的程序员,…

java new 面试_java面试30问

第一,谈谈final, finally, finalize的区别。第二,Anonymous Inner Class (匿名内部类) 是否可以extends(继承)其它类,是否可以implements(实现)interface(接口)?第三,Static Nested Class 和 Inner Class的不同,说得越…

使用visio 2016 绘制画UML时序图(Sequence Diagram)

什么是时序图?时序图(Sequence Diagram),又名序列图、循序图,是一种UML交互图。它通过描述对象之间发送消息的时间顺序显示多个对象之间的动态协作。让我们来看一看Visio2016对时序图的的解释。时序图的元素我们在画时序图时会涉及到7种元素&…

网页颜色搭配

兼职请上猪八戒网站转载于:https://blog.51cto.com/ayyzddq/598474

数字化诗人:这可能是第一位用算法写诗的诺贝尔文学奖得主

一位英国教授发现,一些优秀的诗人早在20世纪60年代就开始使用编码算法来写诗了。著名作家J.M.Coetzee,在早期的英国超级计算机上开发了创作诗歌的软件当我们回顾历史上探索科技应用的人才时,通常不会想到英语教授。但是伦敦国王学院现代文学博…

在asp.net core中使用的验证框架FluentValidation

FluentValidation在asp.net core中怎么使用?先安装包。Install-Package FluentValidation.AspNetCore和上一篇的实体类和验证类一样。实体类:public class Person {public int Id { get; set; }public string Name { get; set; }public string Tel { get…