2D图片3秒变立体,Adobe实习生的智能景深算法,登上顶级期刊

本文主要是介绍2D图片3秒变立体,Adobe实习生的智能景深算法,登上顶级期刊,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

640?wx_fmt=png

来源:本文经AI新媒体量子位(公众号 ID: QbitAI)授权转载

本文约2500字,建议阅读8分钟

本文为你介绍了Adobe放出的新魔法,2-3秒拍出立体感。

640?wx_fmt=gif

你离礁石越来越近,仿佛还有一秒就要触礁了。

不过这张动图,并不是从人类拍摄的视频里截下来的。

是Adobe放出的新魔法,把这张静态照片变出了立体感,整个过程只需要2-3秒:

640?wx_fmt=gif

这种特效处理,常常用于纪录片等视频的后期制作,名为Ken Burns Effect。

原本只是2D缩放 (下图左) ,通过对静止图像的平移和缩放,来产生视差,从而实现动画效果。

640?wx_fmt=gif

但Adobe这种3D效果 (上图右) ,不仅有平移和缩放,还有视角转换,给人更沉浸的体验。

想要实现,需要专业的设计师在Photoshop等软件中花费数个小时时间。

而且制作成本也很高,一张照片大概需要40-50美元 (约合人民币280-350元) 。

Adobe也登上了ACM主办的计算机图形学顶级期刊TOG,引发了大量讨论与关注。不乏有激动的网友给出“三连”:
Incredible. Amazing. Holy shit.

完全不是简单的缩放

透视原理决定,前景比背景的移动/缩放更剧烈。

所以,前景移动的时候,背景除了移动,也要跟着修复。

AI的背景修复十分自然,手法明显比“前辈”更高超:

640?wx_fmt=gif
△形状有点奇怪的教堂

并且,不论背景简单复杂,AI都不怕。

比如,走到沙发跟前,沙发就挡住了后面窗户外的草地:

640?wx_fmt=gif

背景的色彩和结构都很复杂,但AI并没有蒙蔽。

如果你觉得,刚才的视角变化只是由远及近,不够复杂。那就看一眼这古老的台阶吧:

640?wx_fmt=gif

仿佛你打算走上台阶,所以正在朝着它的方向,慢慢转身。

除此之外,一条古老的走廊,你置身其中,好像正在从上仰的视角,变得平视前方。

640?wx_fmt=gif

当然,不只是风景,人像也可以处理。

比如,草地上的新娘,可以远观,也可以近距离欣赏:

640?wx_fmt=gif

就像开头说的那样,所有的变换,只靠一张静态图来完成。

这自然不是普通的缩放可以做到的:

640?wx_fmt=gif
△ 左为普通缩放,右为3D魔法

所以,究竟是怎样的技术做到的?

三步定边界,结合上下文感知

用单个图像合成逼真的相机移动的效果要解决两个基本问题。

首先,要设置一个新的相机位置,合成新视图,并且需要准确地恢复原始视图的场景几何结构。

其次,根据预测的场景几何结构,要将新视图在连续的时间线上合成,这就涉及到去遮挡这样的图像修复手段。

640?wx_fmt=png

研究人员们用了三个神经网络来构建处理框架。

用以训练的数据集是用计算机生成的。研究人员从UE4 Marketplace2收集了32种虚拟环境,用虚拟摄像机在32个环境中捕获了134041个场景,包括室内场景,城市场景,乡村场景和自然场景。每个场景包含4个视图,每个视图都包含分辨率为512×512像素的颜色、深度和法线贴图。

640?wx_fmt=png

指定一张高分辨率图像,首先根据其低分辨率版本估计粗糙深度。这一步由VGG-19来实现,根据VGG-19提取的语义信息指导深度估计网络的训练,并用具有ground truth的计算机合成数据集进行监督。如此,就能提取出原始图像的深度图。

第二个网络,是Mask R-CNN。为了避免语义失真,平行于VGG-19,用Mask R-CNN对输入的高分辨率图像进行分割,而后用分割的结果来对深度图进行调整,以确保图中的每个对象都映射到一个相干平面上。

最后,利用深度细化网络,参考输入的高分辨率图像,对提取出的粗糙深度进行上采样,确保深度边界更加精确。

640?wx_fmt=png

之所以要采用深度细化网络,是因为裁切对象的过程中,对象很可能在边界处被撕开。

有了从输入图像获得的点云和深度图(注:点云指通过3D扫描得到的物品外观表面的点数据集合),就可以渲染连续的新视图了。

不过,这里又会出现一个新的问题——当虚拟摄像机向前移动的时候,对象本身会产生裂隙(下图中高塔右侧像被网格切开了)。

640?wx_fmt=png

为了解决这个问题,研究人员采取了结合上下文感知修复的方法。

结合上下文信息能够产生更高质量的合成视图。上下文信息划定了相应像素在输入图像中位置的邻域,因此点云中的每个点都可以利用上下文信息来进行扩展。

具体而言,第一步,是进行颜色和深度图像修复,以从不完整的渲染中恢复出完整的新视图,其中每个像素都包含颜色,深度和上下文信息。

而后,利用图像修复深度,将图像修复颜色映射到点云中新的色调点。

重复这一过程,直到点云充分扩展,填补空隙,可以实时地呈现完整且连续的画面。

640?wx_fmt=png


“用过都说好”

研究人员觉得好,那不算好。新方法效果如何,还是用户说了算。

于是,研究团队搞出了一个“非正式用户调研”。他们在YouTube上搜集了30个人类创造的3D Ken Burns视频,将其分成“风景”,“肖像”,“室内”,“人造室外环境”四组,每组随机抽取三个视频作为样本。

8位志愿者参与到了这个测试之中。团队为每个志愿者分配了一张静态图,并提供了人类作品作为参考,要求志愿者使用新方法和Adobe After Effects模板、移动App Viewmee这两种Ken Burns制作工具创作类似的效果。

志愿者会依据自己的主观意见评价每种工具的可用性和质量。

640?wx_fmt=png

在志愿者们看来,不论是从效果上,还是易用性上,Adobe的这个新工具显然好得多。

来自Adobe的实习生(现已转Google)

这项研究的第一作者,是一名波特兰州立大学的博士生,名为Simon Niklaus,研究方向为计算机视觉与深度学习。

他在Adobe Research实习的时候完成了这项工作,目前他正在Google实习。

640?wx_fmt=png

他的博士生导师,名为Feng Liu,博士毕业于威斯康辛大学麦迪逊分校,现在是波特兰州立大学的助理教授,也是这一研究的做作者之一。

此外,这项研究还有另外两名作者,分别是Long Mai和Jimei Yang,都是Adobe的研究科学家。

640?wx_fmt=png

Simon Niklaus在Hacker News上与网友互动时也谈到了研究的开源计划。

他说,自己计划公布代码以及数据集,但还没有得到批准。因为这项工作是“实习生”完成的, Adobe在开源方面都比较大度。

当然,这也无法排除他们商业化的可能性,如果你对这一研究感兴趣,可以先看下研究论文:

3D Ken Burns Effect from a Single Imagehttps://arxiv.org/abs/1909.05483

One more thing……

关于Ken Burns Effect,也有一段乔布斯的往事。

为了将这一特效用到苹果中,乔布斯还专程联系了Ken Burns,希望能够得到他的许可。

一开始,Burns是拒绝的,他不想自己的名字被商业化。

但后来,Burns透露,他同意了乔布斯的请求。

640?wx_fmt=jpeg

这中间到底发生了什么,也没有太多信息传递出来。

现在,这一效应在iPhone中应用非常广泛,比如照片的“回忆”功能,就能够自动利用这一特效,把一张张照片制作成视频。

这也给Burns带来了很多“麻烦”。

他说,有时候自己走在街上,会有陌生人冲到他面前,说自己如何在iPhone上使用它,或者是问他问题。

对于这种情况,他说自己都是尽力快速逃离现场。跟明星遇上私生饭差不多。

emmm……

— 完 —

编辑:王菁
校对:林亦霖

这篇关于2D图片3秒变立体,Adobe实习生的智能景深算法,登上顶级期刊的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/901489

相关文章

Python3脚本实现Excel与TXT的智能转换

《Python3脚本实现Excel与TXT的智能转换》在数据处理的日常工作中,我们经常需要将Excel中的结构化数据转换为其他格式,本文将使用Python3实现Excel与TXT的智能转换,需要的可以... 目录场景应用:为什么需要这种转换技术解析:代码实现详解核心代码展示改进点说明实战演练:从Excel到

如何使用CSS3实现波浪式图片墙

《如何使用CSS3实现波浪式图片墙》:本文主要介绍了如何使用CSS3的transform属性和动画技巧实现波浪式图片墙,通过设置图片的垂直偏移量,并使用动画使其周期性地改变位置,可以创建出动态且具有波浪效果的图片墙,同时,还强调了响应式设计的重要性,以确保图片墙在不同设备上都能良好显示,详细内容请阅读本文,希望能对你有所帮助...

Python脚本实现图片文件批量命名

《Python脚本实现图片文件批量命名》这篇文章主要为大家详细介绍了一个用python第三方库pillow写的批量处理图片命名的脚本,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下... 目录前言源码批量处理图片尺寸脚本源码GUI界面源码打包成.exe可执行文件前言本文介绍一个用python第三方库pi

golang字符串匹配算法解读

《golang字符串匹配算法解读》文章介绍了字符串匹配算法的原理,特别是Knuth-Morris-Pratt(KMP)算法,该算法通过构建模式串的前缀表来减少匹配时的不必要的字符比较,从而提高效率,在... 目录简介KMP实现代码总结简介字符串匹配算法主要用于在一个较长的文本串中查找一个较短的字符串(称为

Python爬虫selenium验证之中文识别点选+图片验证码案例(最新推荐)

《Python爬虫selenium验证之中文识别点选+图片验证码案例(最新推荐)》本文介绍了如何使用Python和Selenium结合ddddocr库实现图片验证码的识别和点击功能,感兴趣的朋友一起看... 目录1.获取图片2.目标识别3.背景坐标识别3.1 ddddocr3.2 打码平台4.坐标点击5.图

通俗易懂的Java常见限流算法具体实现

《通俗易懂的Java常见限流算法具体实现》:本文主要介绍Java常见限流算法具体实现的相关资料,包括漏桶算法、令牌桶算法、Nginx限流和Redis+Lua限流的实现原理和具体步骤,并比较了它们的... 目录一、漏桶算法1.漏桶算法的思想和原理2.具体实现二、令牌桶算法1.令牌桶算法流程:2.具体实现2.1

Python利用PIL进行图片压缩

《Python利用PIL进行图片压缩》有时在发送一些文件如PPT、Word时,由于文件中的图片太大,导致文件也太大,无法发送,所以本文为大家介绍了Python中图片压缩的方法,需要的可以参考下... 有时在发送一些文件如PPT、Word时,由于文件中的图片太大,导致文件也太大,无法发送,所有可以对文件中的图

java获取图片的大小、宽度、高度方式

《java获取图片的大小、宽度、高度方式》文章介绍了如何将File对象转换为MultipartFile对象的过程,并分享了个人经验,希望能为读者提供参考... 目China编程录Java获取图片的大小、宽度、高度File对象(该对象里面是图片)MultipartFile对象(该对象里面是图片)总结java获取图片

Java实战之自助进行多张图片合成拼接

《Java实战之自助进行多张图片合成拼接》在当今数字化时代,图像处理技术在各个领域都发挥着至关重要的作用,本文为大家详细介绍了如何使用Java实现多张图片合成拼接,需要的可以了解下... 目录前言一、图片合成需求描述二、图片合成设计与实现1、编程语言2、基础数据准备3、图片合成流程4、图片合成实现三、总结前

使用Python实现图片和base64转换工具

《使用Python实现图片和base64转换工具》这篇文章主要为大家详细介绍了如何使用Python中的base64模块编写一个工具,可以实现图片和Base64编码之间的转换,感兴趣的小伙伴可以了解下... 简介使用python的base64模块来实现图片和Base64编码之间的转换。可以将图片转换为Bas