开源|如何使用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)功能设计与架构设 ...
 
随机推荐
- UVM/OVM中的factory【zz】
			
原文地址:http://bbs.eetop.cn/viewthread.php?tid=452518&extra=&authorid=828160&page=1 在新的项目中再 ...
 - Visual Studio启用64位 IIS Express 解决 x64位的dll 而出现 未能加载文件或程序集“xxxxxxxx”或它的某一个依赖项。试图加载格式不正确的程序。
 - 170822、解决PLSQL记录被另一个用户锁住的问题
			
1.查看数据库锁,诊断锁的来源及类型: select object_id,session_id,locked_mode from v$locked_object; 或者用以下命令: select b. ...
 - Python数据分析必备Anaconda安装、快捷键、包安装
			
Python数据分析必备: 1.Anaconda操作 Anaconda是一个用于科学计算的Python发行版,支持 Linux, Mac, Windows系统,提供了包管理与环境管理的功能,可以很方便 ...
 - IDEA2016.3搭建Struts2+Hibernate+Spring项目环境
			
IDEA搭建SSH环境 1.环境 软件版本:IntelliJ IDEA 2016.3.2 系统:windows 7 32位 / ubuntu 框架:Hibernate3,Spring3.2, Stru ...
 - 静默方式安装10g数据库软件+升级patch+手工建库
			
通常我们安装Oracle数据库软件,都是用OUI图形界面来完成的,但有些Unix/Linux系统中并未安装图形系统,也就无法使用图形界面来安装Oracle的产品了,对于这种场景,就只能采用静默方式来安 ...
 - 初识Spring Webflux
			
Important to know is that there are two ways to use Spring Webflux. One using annotations, which is ...
 - ubuntu 添加用户到已存在的组
			
sudo adduser 用户名 组名 sudo minicom –s 配置 minicom访问ttyUSB0没权限,发现属于dialout 组 james@james-OptiPlex-380: ...
 - 数据挖掘领域十大经典算法之—C4.5算法(超详细附代码)
			
https://blog.csdn.net/fuqiuai/article/details/79456971 相关文章: 数据挖掘领域十大经典算法之—K-Means算法(超详细附代码) ...
 - linux删除指定行&删除行首空格&替换字符
			
打印并删除2~1000行 nl /etc/passwd | sed '2,1000d' |more 删除行首空格 sed -i 's/^[][ ]*//g' file 替换分隔符 说明:文件中数据是由 ...