开源|如何使用CNN将视频从2D到3D进行自动转换(附源代码)
http://www.sohu.com/a/128924237_642762
全球人工智能
文章来源:GitHub 作者:Eric Junyuan Xie
它是如何运行的?
在运行代码之前,请先根据官方文件安装MXNet。Deep3D要求MXNet的配置环境为Cuda7.0和Cudnn 4版本及以上。首先打开mxnet/config.mk,并将USE_CUDA和USE_CUDNN的值设置为1。然后,将EXTRA_OPERATORS=path/to/ deep3d/operators添加到path/to/mxnet/ config .mk后面,并重新编译MXNet。
研究动机
从2008年电影《阿凡达》首映以来,3D电影技术已经迅速发展并成为主流科技。每年3D电影的发行量大约为10到20部,并且伴随着OculusRift和其他VR头戴式耳机的推出,3D电影技术的需求只会有增无减。
然而,制作3D电影的难度依然很大。目前制作3D电影主要有两种方法,并且这两种方法在实际制作中的应用程度基本相同:一种是用特殊的3D立体摄像机直接拍摄成3D电影,另一种是先拍摄成2D电影,然后人工转换成3D的。但是这两种方法都不是很完美,对于第一种方法来说,3D摄像机十分昂贵并且使用很不方便,而第二种人工转换的方法需要请很多“深度艺术家”坐在那里,为每一帧画面绘制深度图。
设想一下,如果照片能自动的进行2D到3D的转换,也就是说用一个普通手机就可以照一张3D的立体自拍,这难道不是一件很酷的事情吗?
预告片
看到这里,或许你已经开始犯困了,下面我们展示了一些通过Deep3D技术将2D图片转换到3D的精彩电影截图。一般情况下我们需要使用3D眼镜或VR设备来观看3D图像,但是大部分人通常不会随身携带这些,所以我们用GIF的形式来展示这些3D图像的立体效果。
实现方法
3D图像有两个视角,一个是左眼的角度,另一个是右眼的角度。要把一张2D图像转换成3D立体图,首先需要估测每个像素点相对于相机的距离(即深度图),然后基于得到的深度图对图像进行处理来创建两个视角。
该算法中最困难的步骤是估测深度图。为了实现自动转换,我们可以让它通过学习得到一个算法模型。目前已经有一些工作是基于DNN实现的单张2D图像的深度估测。然而还需要用图像和深度图数据对来进行训练。由于这种数据对收集起来很困难,所以他们使用的数据库都比较小,比如NYU深度数据库和KITTI,这类数据库中只包含几百张样例。此外,这些数据集只有静态场景,很难想像如何将这项技术应用到人物照片里。
相比之下,Deep3D可以直接在具有数千万帧的3D电影的基础上进行训练。我们在进行训练时,把深度图作为一个网络内部的表示,而不是作为末端的预测输出。所以我们的方法并不是先预测一张深度图,然后用这张深度图通过一个单独的算法去重建缺失的视角,而是在同一神经网络中重新创建端到端的方法来训练它。
这里展示了一些可视化的网络内部深度结构,希望可以帮助大家理解网络是如何工作的:
每张图像后面是4*3的不同深度层的图示,按从近到远的顺序排列。离观众近的物体会出现在靠前的几张深度图中,而离观众远的物体则出现在最后几张。这表明内部深度表示法正在学习从2D图像推断深度,而不需要直接在图像上进行训练。
关于代码
这项工作是通过MXNet实现的,MXNet是一个灵活高效的深度学习库。训练模型和预测脚本包含在deep3d.ipynb中。我们近期将公开训练代码。
GitHub资源:https://github.com/piiswrong/deep3d
开源|如何使用CNN将视频从2D到3D进行自动转换(附源代码)的更多相关文章
- 用live555将内网摄像机视频推送到外网server,附源代码
近期非常多人问,怎样将内网的摄像机流媒体数据公布到公网,假设用公网与局域网间的port映射方式太过麻烦,一个摄像机要做一组映射,并且不是每个局域网都是有固定ip地址,即使外网主机配置好了每个摄像机的映 ...
- 2D到3D视频转换 三维重建
2D到3D视频转换(也称为2D到立体3D转换和立体转换)是将2D(“平面”)胶片转换为3D形式的过程,几乎在所有情况下都是立体声,因此它是创建图像的过程.每个眼睛来自一个2D图像. 内容 1概述 1. ...
- 论文翻译——Rapid 2D-to-3D conversion——快速2D到3D转换
https://blog.csdn.net/qq_33445835/article/details/80143598 目前想做一个关于2D转3D的项目,由于国内资料比较少而且大部分都是基于国外的研究 ...
- 介绍用C#和VS2015开发基于Unity架构的2D、3D游戏的技术
[Unity]13.3 Realtime GI示例 摘要: 分类:Unity.C#.VS2015 创建日期:2016-04-19 一.简介 使用简单示例而不是使用实际示例的好处是能让你快速理解光照贴图 ...
- Rapid 2D-to-3D conversion——快速2D到3D转换
https://blog.csdn.net/qq_33445835/article/details/80143598 目前想做一个关于2D转3D的项目,由于国内资料比较少而且大部分都是基于国外的研究 ...
- 单图像三维重建、2D到3D风格迁移和3D DeepDream
作者:Longway Date:2020-04-25 来源:单图像三维重建.2D到3D风格迁移和3D DeepDream 项目网址:http://hiroharu-kato.com/projects_ ...
- 《zw版·Halcon-delphi系列原创教程》 2d照片-3d逆向建模脚本
<zw版·Halcon-delphi系列原创教程> 2d照片-3d逆向建模脚本 3D逆向建模,是逆向工程的核心要素. 3D逆向建模,除了目前通用的3D点云模式,通过2D图像实现 ...
- css3动画2D、3D转换
css3动画的2D.3D转换代码: <!DOCTYPE html> <html lang="en"> <head> <meta chars ...
- GitHub开源:升讯威微信营销系统(第三方微信平台)完整源代码
GitHub:https://github.com/iccb1013/Sheng.WeixinConstruction 升讯威微信营销系统开发实践系列升讯威微信营销系统开发实践:(1)功能设计与架构设 ...
随机推荐
- numpy中的reshape中参数为-1
上篇文章中的reshape(-1,2),有的时候不明白为什么会有参数-1,可以通过查找文档中的reshape()去理解这个问题 根据Numpy文档(https://docs.scipy.org/doc ...
- php base64转图片
1.解析base64数据成图片 The problem is that data:image/bmp;base64, is included in the encoded contents. This ...
- Saltstack生产案例之Haproxy安装
cd /srv/salt/prod/ mkdir haproxymkdir keepalivedmkdir nginxmkdir phpmkdir memcachedmkdir pkg cd pkg ...
- JavaScript 包管理工具npm 和yarn 对比
- js里常用函数之高阶函数
高阶函数:将函数作为参数或者返回值的函数.将函数作为参数的用法通常称作回调函数,函数参数通常会在主函数被执行之后被高阶函数调用. 高阶函数的使用实例.可以把有相似操作的函数用一个高阶函数来重构,精简代 ...
- .windows安装使用这些偏底层的Python扩展太
.windows安装使用这些偏底层的Python扩展太不爽了,怎么彻底解决 error: Unable to find vcvarsall.bat呢? 1.不要按网上说的,安装MinGW,然后在“.. ...
- 洛谷P4424 寻宝游戏 [HNOI/AHOI2018]
正解:思维题 解题报告: 传送门! 这题就是很思维题,,,想到辣实现麻油特别难,但难想到是真的TT 这题主要是要发现一个性质:&1无意义,&0相当于赋值为0,|1无意义,|1相当于赋值 ...
- Django单元测试简单示例
对一个功能的验证往往是需要很多多测试用例,可以把测试用例集合在一起执行,这就产生了测试套件TestSuite 的概念,它是用来组装单个测试用例,规定用例的执行的顺序,而且TestSuite也可以嵌套T ...
- OC导航栏跳转指定界面
方法一: [self.navigationController popToViewController:[self.navigationController.viewControllers objec ...
- Jquery WeUI(一)
用于微信端的控件UI , 首先,需要做的是开发一个微信能访问的网页,并和微信关联 A. 创建一个空网站 B. 增加一般处理程序 A. 增加 web 网页 和空文件到项目中 B. 申请和配置测试服务 创 ...