开源|如何使用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)功能设计与架构设 ...
随机推荐
- 9.21 form 和Ajax详解
form 表单 参考连接 : http://www.cnblogs.com/liwenzhou/p/8747872.html
- empty是判断一个变量是否为“空”,而isset 则是判断一个变量是否已经设置
1.echo和print的区别php中echo和print的功能基本相同(输出),但是两者之间还是有细微差别的.echo输出后没有返回值,但print有返回值,当其执行失败时返回flase.因此可以作 ...
- Oracle体系结构之rac内存管理
一.内存管理第一层: 1.memory_target和memory_max_target开启自动内存管理. rac1: SQL> show parameter memory NAME TYPE ...
- 系统之锹sysdig:Linux服务器监控和排障利器
当你需要追踪某个进程产生和接收的系统调用时,首先浮现在你脑海中的是什么?你可能会想到strace,那么你是对的.你会使用什么样的命令行工具来监控原始网络通信呢?如果你想到了tcpdump,你又作出了一 ...
- 关于LeNet-5卷积神经网络 S2层与C3层连接的参数计算的思考???
https://blog.csdn.net/saw009/article/details/80590245 关于LeNet-5卷积神经网络 S2层与C3层连接的参数计算的思考??? 首先图1是LeNe ...
- 基础邮件原理(MUA,MTA,MDA)
电子邮件基本概念: MUA(Mail User Agent)接收邮件所使用的邮件客户端,使用IMAP或POP3协议与服务器通信: MTA(Mail Transfer Agent) 通过SMTP协议发送 ...
- 多线程-interrupt(),isInterrupted(),interrupted()
背景 由于使用stop方法停止线程非常暴力,可能会导致一系列问题.因此,提出一种温和的方式:请求另外一个先不要在执行了,这就是中断方式. 此外有这样的场景:编写 一个程序,需要暂停一段时间,于是调用T ...
- 【JMeter】如何优雅的写脚本
cc给发的视频链接: http://v.youku.com/v_show/id_XMzA4Mjg1ODA0MA==.html?spm=a2h3j.8428770.3416059.1 ————————— ...
- zabbix 3.2.5 agent端(源码包)安装部署 (二)
一.zabbix agent 端安装部署 1.创建zabbix用户和组 groupadd zabbix useradd -g zabbix zabbix -s /sbin/nologin 2.解压za ...
- js-jquery-Validate校验【一】
一.导入 js 库 <script src="http://static.runoob.com/assets/jquery-validation-1.14.0/lib/jquery.j ...