python 3d图如何改变视角_2D变3D,视角随意换,神还原高清立体感,还是不用3D建模的那种 | 代码数据开源...
原标题:2D变3D,视角随意换,神还原高清立体感,还是不用3D建模的那种 | 代码数据开源
原标题:2D变3D,视角随意换,神还原高清立体感,还是不用3D建模的那种 | 代码数据开源 来源:量子位
Original 关注前沿科技 量子位
十三 鱼羊 发自 凹非寺
量子位 报道 | 公众号 QbitAI
十三 鱼羊 发自 凹非寺
量子位 报道 | 公众号 QbitAI
看到这张恐龙化石的动态图片,你肯定会认为是用视频截出来的吧?
然而真相却是——完全由静态图片生成!
没错,而且还是不用3D建模的那种。
这就是来自伯克利大学和谷歌的最新研究:NeRF,只需要输入少量静态图片,就能做到多视角的逼真3D效果。
还需要专门说明的是,这项研究的代码和数据,也都已经开源。
你有想法,尽情一试~
静态图片,合成逼真3D效果
我们先来看下NeRF,在合成数据集(synthetic dataset)上的效果。
可以看到,这些生成的对象,无论旋转到哪个角度,光照、阴影甚至物体表面上的细节,都十分逼真。
就仿佛是拿了一台录影设备,绕着物体一周录了视频一样。
正所谓没有对比就没有伤害,下面便是NeRF分别与SRN、LLFF和Neural Volumes三个方法的效果比较。
不难看出,作为对比的三种方法,或多或少的在不同角度出现了模糊的情况。
而NeRF可谓是做到了360度无死角高清效果。
接下来是NeRF的视点相关 (View-Dependent)结果。
通过固定摄像机的视点,改变被查询的观看方向,将视点相关的外观编码在NeRF表示中可视化。
NeRF还能够在复杂的遮挡下,展现场景中详细的几何体。
还可以在现实场景中,插入虚拟对象,并且无论是“近大远小”,还是遮挡效果,都比较逼真。
当然,360度捕捉真实场景也不在话下。
神经辐射场(neural radiance field)方法
这样出色的效果,是如何实现的呢?
首先,是将场景的体积表示优化为向量函数,该函数由位置和视图方向组成的连续5D坐标定义。具体而言,是沿相机射线采样5D坐标,来合成图像。
而后,将这样的场景表示参数化为一个完全连接深度网络(MLP),该网络将通过5D坐标信息,输出对应的颜色和体积密度值。
通过体积渲染技术将这些值合成为RGB图像。
渲染函数是可微分的,所以可以通过最小化合成图像和真实图像之间的残差,优化场景表示。
需要进一步说明的是,MLP使用8个完全连接层(ReLU激活,每层256个通道)处理输入,输出σ和256维特征向量。然后,将此特征向量与摄像机视角连接起来,传递到4个附加的全连接层(ReLU激活,每层128个通道),以输出视点相关的RGB颜色。
NeRF输出的RGB颜色也是空间位置x和视图方向d的5D函数。
这样做的好处可以通过对比来体现。可以看到,如果去掉视点相关,模型将无法重现镜面反射;如果去掉位置编码,就会极大降低模型对高频几何形状纹理的表现能力,导致渲染出的外观过于平滑。
另外,针对高分辨率的复杂场景,研究人员还进行了两方面的改进。
其一,是输入坐标的位置编码,可以帮助MLP表示高频函数。
其二,是分层采样。用以更高效地采样高频表示。
GitHub代码开源
目前,NeRF项目的代码已经在GitHub上开源。
代码主要基于Python 3,还需要准备的一些库和框架包括:TensorFlow 1.15、matplotlib、numpy、imageio、configargparse。
优化一个NeRF
研究人员表示,优化NeRF只需要一个GPU就可以完成,时间方面,需要花费几个小时到一两天(取决于分辨率)。
而从优化的NeRF渲染图像,大约只需要1~30秒时间。
运行如下代码可以获取生成Lego数据集和LLFF Fern数据集:
bash download_example_data.sh
若想优化一个低解析度的Fern NeRF:
python run_nerf.py --config config_fern.txt
在经过200次迭代之后,就可以得到如下效果:
若想优化一个低解析度的Lego NeRF:
python run_nerf.py --config config_lego.txt
在经过200次迭代之后,就可以得到如下效果:
开始渲染
运行如下代码,为Fern数据集获取经过预训练的高分辨率NeRF。
bash download_example_weights.sh
渲染代码,在 render_demo.ipynb 中。
另外,你还可以将NeRF转换为网格,像这样:
具体示例,可以在 extract_mesh.ipynb 中找到。还需要准备PyMCubes、trimesh和pyrender包。
关于作者:三位青年才俊
这篇论文的研究团队,来自加州大学伯克利分校、谷歌研究院和加州大学圣地亚哥分校。
共同一作有三位。
Ben Mildenhall,本科毕业于斯坦福大学,目前在伯克利电气工程与计算机科学系(EECS)助理教授吴义仁(Ren Ng)门下读博。致力于计算机视觉和图形学研究。
Pratul P. Srinivasan,同样为伯克利EECS在读博士,师从吴义仁和Ravi Ramamoorthi。
Matthew Tancik,前面两位作者的同门,本硕毕业于MIT。除了专注于计算机成像和计算机视觉研究外,他还是一位摄影爱好者。
1个GPU就能完成优化,优化后渲染又只需要1-30秒,如此方便又效率的项目,还不快来试试?
One More Thing
最后,还想介绍个这方面有意思的研究。
NeRF确实强,但在输入上还需要多张照片……
那么有没有方法,一张图片就能玩3D效果呢?
问就有。
之前,Adobe的实习生就提出了一个智能景深算法,单张2D图片秒变3D。
让我们感受下效果。
也是很有大片既视感了。
而最近,同样是单张2D图片变3D,台湾清华大学的研究人员,在老照片上玩出了新花样,论文入选CVPR 2020。
你看看女神奥黛丽·赫本,看看毕加索,看看马克吐温:
感觉以后看照片——摇一摇更有感觉啊。
再来看看“登月”、“宇航员和民众握手”照片裸眼3D效果:
颇有点身临其境之感。
与此前介绍过的Adobe的算法(后台加链接)类似,这一3D图像分层深度修复技术的核心算法,同样有关上下文感知修复:
初始化并切割分层深度图像(LDI),使其形成前景轮廓和背景轮廓,然后,仅针对边缘的背景像素进行修补。从边缘“已知”侧提取局部上下文区域,并在“未知”侧生成合成区域(如下图c所示)。
说起来,对于个人视频制作者、游戏开发人员,以及缺乏3D建模经验的动画公司来说,这类技术的成熟,可谓“福音”。
通过AI技术,让3D效果的实现进一步简化,这也是Facebook、Adobe及微软等公司纷纷投入这方面研究的原因所在。
最后,这个项目的代码也开源了……
稿子还没写完,我就准备好一系列“雪藏”已久的照片要试试了。
这也是最近看到最酷的3D图片方面的突破了。
(声明:本文仅代表作者观点,不代表新浪网立场。)返回搜狐,查看更多
责任编辑:
python 3d图如何改变视角_2D变3D,视角随意换,神还原高清立体感,还是不用3D建模的那种 | 代码数据开源...相关推荐
- 2D变3D,视角随意换,神还原高清立体感,还是不用3D建模的那种 | 代码数据开源...
十三 鱼羊 发自 凹非寺 量子位 报道 | 公众号 QbitAI 看到这张恐龙化石的动态图片,你肯定会认为是用视频截出来的吧? 然而真相却是--完全由静态图片生成! 没错,而且还是不用3D建模的那种. ...
- python requests返回值为200 但是text无内容_爬取高清无版权美图
01 前言 做公众号,总是会需要使用一些图片做封面或背景.我的公众号的图片有两种来源:一是通过创可贴自己动手修改下就可以用了,还一种就是在网上下载图片. 那如何下载高清并且可以供使用(无版权)的图片了 ...
- python批量下载静态页面_Python静态网页爬取:批量获取高清壁纸
前言 在设计爬虫项目的时候,首先要在脑内明确人工浏览页面获得图片时的步骤 一般地,我们去网上批量打开壁纸的时候一般操作如下: 1.打开壁纸网页 2.单击壁纸图(打开指定壁纸的页面) 3.选择分辨率(我 ...
- python 3d图如何改变视角_python – 改变3D图垂直(z)轴的位置(Matplotlib)?
我需要类似的东西:在两边画Zaxis.感谢@crayzeewulf的答案我来到了解决方法(左,右或双方): 首先根据需要绘制您的3d,然后在调用show()之前,使用简单地覆盖draw()方法的Wra ...
- python灰度图cv2到plt变颜色_python中plt.imshow与cv2.imshow显示颜色问题
python中plt.imshow与cv2.imshow显示颜色问题 在用plt.imshow和cv2.imshow显示同一幅图时可能会出现颜色差别很大的现象. 这是因为:opencv的接口使用BGR ...
- 3D动画片《不一样的卡梅拉》(小鸡来了) 中文版高清 23集,法国名著改编
<不一样的卡梅拉>告诉我们的道理:要有冒险的精神,不要因为自己的平凡而不敢去尝试新鲜的事物. 法国名著<不一样的卡梅拉>系列故事,讲的是母鸡卡梅拉和她的儿女们卡梅利多和卡门的历 ...
- python让你再也不为文章配图与素材发愁,让高清图片占满你的硬盘! #华为云·寻找黑马程序员#
欢迎添加华为云小助手微信(微信号:HWCloud002 或 HWCloud003),输入关键字"加群",加入华为云线上技术讨论群:输入关键字"最新活动",获取华 ...
- python爬虫开发与项目实战pdf_Python爬虫开发与项目实战PDF高清文档下载
随着大数据时代到来,网络信息量也变得更多更大,基于传统搜索引擎的局限性,网络爬虫应运而生,本书从基本的爬虫原理开始讲解,通过介绍Pthyon编程语言和Web前端基础知识引领读者入门,之后介绍动态爬虫原 ...
- python让你再也不为文章配图与素材发愁,让高清图片占满你的硬盘!
怪毛病 最近写公众号写的染上了个怪毛病,不到12点根本不知道写啥.一过凌晨那简直是吃了大回复一般的文思泉涌.结果就是越熬夜越晚了.公众号是每天定时发的,简书上的发帖时间才是真正的睡前倒计时...然后, ...
最新文章
- 转 mac svn用法
- python多进程存储数据_Python 多进程及进程间通信
- liunx内核中的互斥自旋锁和读写自旋锁的实现详解
- react-redux中的持久化数据存储redux-persist
- 6-搭建一个私有registry
- 将DHCP从win2000转移到2003上
- (77)译码器与编码器(八三编码器)
- iPhone 13系列7款新机已通过EEC认证:或继续9月亮相
- python萌新:从零基础入门到放弃
- 移动端web开发——视口
- 主键思维定势导致的惨案
- Linux环境下软件安装
- 安全运营SOC Security Operations Center
- 计算机课会点名吗,大学课堂点名技术日新月异:电脑摇号扫码上课
- 矩阵乘法(幂次计算)
- oracle取字段第三位字符,oracle字符串根据分隔符号获取第几个元素
- ubuntu16.04,exFAT格式U盘无法打开解决方式
- flac转换mp3格式使用什么软件好
- 微信摇一摇效果HTML,JavaScript+H5实现微信摇一摇功能
- 通信原理 | 波段的划分
热门文章
- iPhone 12、iPhone 12 Pro、iPhone 12 Pro Max屏幕尺寸,分辨率,PPI 详细数据对比 iPhone 12 mini
- 七张 Python 思维导图,理清 Python 知识体系
- busybox 安装方法
- 【单片机】单片机时钟
- miniupnpc的主要函数介绍
- SpringMvc-maven-Mysql-ajax-bootsrap进行一个简单的web开发(大二下期末考试内容)
- 【技巧】降低HTTP前端服务器压力
- 以太坊上海升级重回2000美元,TGT黄金标的货币潜力将现
- 12306网购火车票
- C#异常提示.WAV,MP3等文件不是一个有效的波形文件