http://mp.ofweek.com/vr/a745673021206

周四晚上11点,万众瞩目的世界杯终于开踢了,虽然意大利、荷兰、智利、中国(手动滑稽)等强队没能进入本届世界杯,但C罗梅西谁主沉浮、桑巴足球可否复仇、冰岛国足能走多远依旧看点十足。比起能在家门口看球的毛子和有闲钱闲功夫飞赴球场的球迷,大多数人还是只能囿于屏幕前。再加上顾及会遇到正面刚无敌的战斗民族,英国人还是坐在家中看球比较稳妥。

可若是在家吃着烧烤,喝着啤酒,换了大屏幕甚至改用投影仪,看球还不爽怎么办?新系统来帮你忙,给予你真·上帝视角的体验。

想象一下,如果可以在桌子地板上观看足球比赛的3D全息图,还能四处走动从不同视角观看球员,那该有多炫酷。想要获得此种体验的一种方法便是在球场各个方位布置多台同步摄像机,然后利用多视图几何技术重建场地和球员的3D模型。然而多摄像机的布置降低了它的适用性。今天要说的另一种方法则是利用单目视频完成对球场和球员的3D重建。在前一段时间,我们也提到过两个单目动捕方案:Vnect和MonoPertCap,就基本原理来说,三者也有着一些异曲同工之妙。

导入YouTube视频后,研究人员使用字段线来恢复相机参数,通过提取边界框、姿势和运动轨迹(跨多个帧)分割出球员轮廓。然后使用训练有素的深层网络在场中重建每个球员的深度图并在3D查看器或AR设备上渲染这些深度图。

于是识别球员的重任就落在了深度学习网络上,而它的训练方法又显得十分巧妙。有别于传统的训练方式,此系统选择了FIFA游戏作为训练素材。倘若使用普通2D足球视频,很难从干巴巴的平面中提取出训练所需的深度数据信息,而本身基于大量数据编辑而成的FIFA则可以提供更加详细的数据集。

研究人员使用RenderDoc (RenderDoc是一款功能强大的开源图形调试器,除了可以用于图形开发,还可以用来分析各游戏大作的渲染流程)来拦截游戏引擎和GPU之间的调用。与大多数游戏类似,FIFA在游戏过程中使用延迟着色,因此可以很方便地捕获每帧的深度和颜色缓冲区。一旦给定帧的深度和颜色被捕获,研究人员就将处理它以提取球员。提取的颜色缓冲区即是游戏的RGB屏幕截图。接下来用OpenGL相机矩阵来将缓冲区转化为坐标系中的三维点从而得到点云,再用DBSCAN聚类算法将球员分开,最后将每个球员的3D集群投影到图像上,并使用度量深度重新计算深度缓冲区。简单来说,利用FIFA,不光有图,还有现成的数据作参考,岂不美哉。

可是球场上的激烈角逐免不了身体碰撞,再加上摄像机机位的角度问题,很容易就造成画面内的球员相互遮挡。在有遮挡的情况下,深度学习网络的计算是混乱的。尽管有训练样本带有遮挡,但还是不足以让网络计算出一名球员的深度。出于这个原因,研究人员通过提供一个分割掩模来帮助深度网络计算,其中被追踪的球员是前景,场地、体育场和其他球员是背景。

完成了深度学习网络的计算,接下来就是对于场景的重建了。首先自然是对于摄像机参数的把握。由于需要令重建的场景为用户提供可旋转拉伸的视角,因此研究者们取球场上的边线、中线、底线等作为特征坐标以便定位。在完成了对于球员身体关键点(骨架)的捕捉后,就要生成网格了。

因为深度学习网络输出是每个像素量化的符号距离、球员的表面和虚拟平面之间的距离,所以为了获得度量深度图,要将球员的边界框提升为3D,创建一个平面(假设玩家的底部像素位于地面上)。然后,我们将网络输出的距离偏移应用到3D平面上,以获得所需的深度图。然后辅以相机参数将深度图投影到坐标中,从而以3D形式生成玩家的点云。每个像素对应一个3D点,连接像素建立面部,再对网格进行纹理贴图。根据应用的不同,还可以通过抽取部分网格来进一步简化网格结构,以节省设备中的储存空间。

当然就目前来看,该系统还有着很多不完善的地方,比如无法模拟球员跳跃、无法获得全方位令人满意的观看体验、无法实时重构、无法高效数据压缩、足球总是闪烁不定等。

总的来说,游戏的发展似乎为深度学习网络提供了丰富的素材,由此也侧面推动了AR VR技术的进步。这也为直男提供了一个新思路:等下次再有妹子问你什么是越位的时候,你就可以一帧一帧得和她讲解了。

为了好好看球,学霸们用深度学习重建整个比赛3D全息图的更多相关文章

  1. 2020国防科大综述:3D点云深度学习——综述(3D点云分割部分)

    目录 摘要 1.引言: 2.背景 2.1 数据集 2.2评价指标 3.3D点云分割 3.1 3D语义分割 3.1.1 基于投影的方法 多视图表示 球形表示 3.1.2 基于离散的方法 稠密离散表示 稀 ...

  2. Deep Learning 6_深度学习UFLDL教程:Softmax Regression_Exercise(斯坦福大学深度学习教程)

    前言 练习内容:Exercise:Softmax Regression.完成MNIST手写数字数据库中手写数字的识别,即:用6万个已标注数据(即:6万张28*28的图像块(patches)),作训练数 ...

  3. 深度学习的2016: NIPS 2016速览

    With best wishes for a happy New Year! NIPS(Nerual Information Processing Systems)是人工智能.机器学习领域的顶级学术会 ...

  4. [深度学习]实现一个博弈型的AI,从五子棋开始(1)

    好久没有写过博客了,多久,大概8年???最近重新把写作这事儿捡起来……最近在折腾AI,写个AI相关的给团队的小伙伴们看吧. 搞了这么多年的机器学习,从分类到聚类,从朴素贝叶斯到SVM,从神经网络到深度 ...

  5. [深度学习]实现一个博弈型的AI,从五子棋开始(2)

    嗯,今天接着来搞五子棋,从五子棋开始给小伙伴们聊AI. 昨天晚上我们已经实现了一个五子棋的逻辑部分,其实讲道理,有个规则在,可以开始搞AI了,但是考虑到不够直观,我们还是顺带先把五子棋的UI也先搞出来 ...

  6. 深度学习课程笔记(二)Classification: Probility Generative Model

    深度学习课程笔记(二)Classification: Probility Generative Model  2017.10.05 相关材料来自:http://speech.ee.ntu.edu.tw ...

  7. (zhuan) 126 篇殿堂级深度学习论文分类整理 从入门到应用

    126 篇殿堂级深度学习论文分类整理 从入门到应用 | 干货 雷锋网 作者: 三川 2017-03-02 18:40:00 查看源网址 阅读数:66 如果你有非常大的决心从事深度学习,又不想在这一行打 ...

  8. 深度学习哪家强?吴恩达、Udacity和Fast.ai的课程我们替你分析好了

    http://www.jianshu.com/p/28f5473c66a3 翻译 | AI科技大本营(rgznai100) 参与 | reason_W 引言 过去2年,我一直积极专注于深度学习领域.我 ...

  9. [深度学习]实现一个博弈型的AI,从五子棋开始

    好久没有写过博客了,多久,大概8年???最近重新把写作这事儿捡起来……最近在折腾AI,写个AI相关的给团队的小伙伴们看吧. 搞了这么多年的机器学习,从分类到聚类,从朴素贝叶斯到SVM,从神经网络到深度 ...

随机推荐

  1. eclipse中安装maven,配置本地仓库和镜像

    1.安装maven,配置MAVEN_HOME 首先:下载免安装版解压配置MAVEN_HOME(和配置JAVA_HOME一样) 然后按照下面的配置,主要第3步,指定settings.xml文件的位置(在 ...

  2. wordvector to sentence vector

    wordvector已经通过word2vec训练出来了,可是如何通过WV得到SV(Sentence Vector)? 思路1: 直接将句子的向量叠加取平均:效果很不好,每个词没有考虑权重,获取的向量会 ...

  3. selenium python3

    安装pip3 install selenium 查看版本pip3 show selenium 安装后还是提示找不到相应的模块 Mac安装PyCharm后,将已有工程导入,之前使用Mac终端执行脚本时正 ...

  4. Java Selenium - 几种对话框处理Alert\confirm\prompt

    1. Alert , 先用常规办法定位到能触发alert的按钮 , 然后 Alert alert = driver.switchTo().alert(); alert.accept(); 如果aler ...

  5. 解决PuTTY中文乱码

    转载:http://lhdeyx.blog.163.com/blog/static/3181969720091115113716947/ 打开putty,选择 Category中的Windows--- ...

  6. iOS 开发笔记 - 开发中如何实现自动检测更新APP

    1.获取当前项目APP版本号 2.拿到AppStore项目版本号 3.对比版本号,实现更新功能 直接上代码: #import "ViewController.h" //1一定要先配 ...

  7. cocos2d JS touch(触摸监听)-快速添加事件监听器到管理器

    cc.eventManager.addListener({ event: cc.EventListener.TOUCH_ALL_AT_ONCE, onTouchesMoved: function (t ...

  8. cocos2dx (关于斗地主人物偏移位置)

    就是说不管是谁登陆游戏,你的人物信息资料始终在平板电脑的屏幕正下方(位置坐标需要自己设定,我设置定的是0号位() char LandLordsScene::getUIPosition(char pos ...

  9. cocosStudio制作ScrollView并在cocos2dx 3.0中使用。

    使用cocosStudio制作界面基本已成为基础了,之前都是拖动一些 Image.Button的小控件,再用到层容器和滚动层的时候,习惯性的用拖动来改变控件的大小.但是你在把其他的控件拖动到上面的时候 ...

  10. 利用css伪类编写冒泡小三角

    HTML代码 <div class="lf otherLogin"> <span>其他方式注册</span> <div class=&qu ...