基于程序化生成和机器学习的地形快速生成方法研究

2021-03-04 02:44张仁杰
现代电影技术 2021年2期
关键词:程序化样本机器

张仁杰 孙 略

(1.北京电影学院中国电影高新技术研究院,北京 100088)

(2.北京电影学院影视技术系,北京 100088)

1 引言

随着科技的进步,电影制作经过胶片时代、数字时代,逐渐进入了虚拟制作的新时代。电影虚拟化制作进一步降低了高质量影片的制作门槛,以往需要大量人力物力参与的后期制作环节,逐渐被前置到现场拍摄环节,同时电影制作技术的复杂度也在快速降低。在创作领域,同等时间下制作迭代时间越短,调整反馈越快,就更有可能创作出高质量的作品。以电影虚拟化制作中最新的LED 背景墙为例,通过将绿幕更换为肉眼真实可见的LED 屏幕,现场人员真正做到了所见即所得。导演可以在现场看到真实的结果,并根据现场的想法进行实时调整,而非等待数周后看到后期处理的结果,再进行调整;摄影指导可以清晰地感知到场景中光影的变换,并在拍摄现场对灯光进行精细的调整,每一簇灯光都能精确地映射到角色身上;演员可以感受到真实的背景带来的氛围,不用再靠想象进行生硬的表演。

随着渲染能力的加强,硬件存储成本的降低,高质量虚拟场景的实时渲染不再是梦想。但虚拟场景作为电影虚拟化制作中必不可少的部分,虚拟资产的制作始终是一个成本很高的环节。无论是角色、模型道具、建筑还是自然场景,都需要投入巨大的时间和人力进行制作。在虚拟制作时代,能够在拍摄现场对场景元素进行快速调整并获得及时反馈是其最大优势。现有的虚拟制作依靠先进的游戏引擎构建虚拟场景,拍摄现场可以快速的对灯光、关键道具摆放位置、白天黑夜等场景元素进行快速调整。但在面对大型的自然场景时,这种快速调整的需求就变得难以实现。

从结构关系上来说,自然场景通常由基础地形、植被生态群落、河流瀑布等元素构成。地形是自然场景的基础,地形是否好看、是否逼真,在很大程度上决定着整个自然场景的质量。地形的生成方法通常分为三种:程序化生成、基于样本生成和基于物理模拟生成。在影视领域的实际制作中,地形通常采用程序化生成和基于物理模拟生成结合的方法进行生成。

为了保证工具的可控性,使得制作出的地形符合艺术需求,在实际制作中通常采用的方法是先利用不同类型、不同强度、不同频率噪声的叠加完成初级的地形,然后再通过物理模拟,如侵蚀地形,使得地形变得更具真实感,最后再在生成的地形上散布植被、河流等元素。在这套工作流程中,程序化生成的方法通过预先定义好的规则能够快速进行生成,但是基于物理的侵蚀处理通常需要大量的时间和计算资源。在以往的制作过程中,地形通常是在后期环节进行精雕细琢,慢慢计算渲染,但在如今,这种制作流程难以满足虚拟制作中对地形实时调整的要求。

图1 实验流程图

近几年,机器学习的相关研究又得到了复兴,在计算机视觉、计算机图形学、音频处理、语音合成等领域都取得了巨大的突破。以本文研究地形侵蚀效果为例,对4K 的地形进行一次侵蚀处理,通常需要花费5~10分钟。精度要求越高、范围越大的地形侵蚀时间越长。而通过机器学习技术,同样规模的地形只需几秒,甚至几十毫秒的时间便可快速生成。在实际的地形制作过程中,地形侵蚀的地理准确性只是作为一个辅助指标,更多的是需要地形符合影片的审美需求。在此前提下,即使机器学习进行的侵蚀处理不能100%达到基于物理的侵蚀处理,也无伤大雅。

通过程序化生成技术生成大量成对的侵蚀前后的地形样本,输入到机器学习模型中进行训练学习,由此可以获得高质量的侵蚀模型,从而达到快速侵蚀的效果。在虚拟拍摄现场就能快速生成具有高度真实感的自然场景。

2 程序化生成数据

无论是机器学习领域,还是图像分割、视频分割、语音识别等领域的学习研究,都受制于数据集的数量和质量。虽然目前已有一些神经网络能够基于较少样本得到较好的结果,但是其质量还是不如经过大量样本学习的神经网络。而大量成对的数据集获取的成本大都非常高昂。

这个难题可以通过程序化生成技术得以解决。程序化生成技术指的是通过特定的构建算法、随机噪声等方法生成具有一定规则性的虚拟资产。在影视领域,程序化生成技术生成的虚拟资产主要为建筑、树木、地形等。Houdini、City Engine、Speed Tree、World Machine、Substance Designer等软件是当今业内主流的程序化生成软件,其中最具代表性的则是Side FX 公司的Houdini。Houdini在特效领域独一无二的地位无需再赘述。2019 年,Houdini推出了PDG (Procedural Dependency Graph)工作流程,旨在增强Houdini的程序化生成架构,以更好地分发任务、管理更大规模不同资源依赖关系。具体的,PDG 通过可视化的节点描述依赖关系,将计算资源合理地分布到一台或多台计算机,甚至是云端服务器上。通过Houdini官方高度优化的计算流程,可以实现高效地并行计算,清晰地管理逻辑,最大限度地提高大规模虚拟资产的生成效率。同时,伴随着Houdini 18.5发布,Side FX 也推出了新版的Houdini到UE4 (Unreal Engine 4)的插件。新版的插件极大地优化了Houdini和UE4之间的数据传输效率,缩短了HDA (Houdini Digital Asset)的构建效率;支持世界构建 (World Composition)系统、几何笔刷(Geometry Brush or BSP)、蓝图调用HDA、直接导入场景文件(.bego)等功能。新版插件能够实现在虚拟制作现场更快地构建虚拟场景。

表1 Wedge节点中创建多个随机属性

图2 PDG 架构图

图3 具体生成细节

本文采用Houdini的PDG 工作流程,批量生成腐蚀前后的地形图。在PDG 中,地形生成的架构为:Wedge节点创建多个随机属性;Rop Geometry Output中,根据上游Wedge 节点创建随机属性,将多个噪声进行组合以生成地形,并将相应的场景文件保存到本地;Rop Fetch (erode)读取对应的场景文件,进行侵蚀处理,将计算得到的地形高度图保存到本地;Rop Fetch (unerode)读取对应的场景文件,将计算得到的地形高度图保存到本地。Wait for all节点将两个Rop Fetch作并联处理,两个方向同时计算。在本文的实验中,输出地形的大小为512×512。

3 机器学习

3.1 模型的选取

在计算机图形学中,地形的渲染与其它模型的渲染方法相同,都是以三角网格为最小拓扑单位进行渲染。一般来说,地形是根据对应的高度图生成具有一定拓扑关系的三角网格。由此可见,地形的生成问题可以抽象为高度图的图像处理问题。即将一张输入的图像经过算法处理,得到另一张符合用户需求的图像。类比于语言翻译问题,这种图像自动转换的任务被称为图像翻译。图像翻译能将一个真实照片转换成梵高画像风格,或者实现黑白图像自动着色、白天黑色的转换、四季的变换、斑马转换为普通马等应用。不同于常见的图像风格转换,在本文所研究的案例中,机器学习模型需要将未侵蚀的高度图转换为侵蚀后的高度图。

图4 将真实照片转换为梵高画像风格照片

2014年,由Goodfellow 等人提出的生成对抗网络(Generative Adversarial Network,GAN)是近年神经网络领域为数不多的新锐突破。该模型由一个生成网络和一个判别网络组成,生成网络负责生成样本,判别网络负责判别生成样本和真实样本之间的差异。如此循环往复,直到判别网络在一定标准下识别不出生成样本和真实样本之间的差异,完成训练。和其他的生成模型相比,生成对抗网络的生成速度与样本维度无关,其生成函数基本没有限制,从而能快速生成更加逼真的样本。

3.2 模型训练

图像翻译问题有多种解决方法,本文所采用的是2017年由Phillip Isola等人提出的Pix2pix生成对抗网络。该模型已经开源,且经过一段时间的实际使用,较为稳定。Pix2pix基于cGAN 的网络模型结构,目的是根据条件去监督生成网络生成的样本,由此生成网络生成的样本不是完全自由无监督的。

本文采用开源的基于Pytorch框架的Pix2pix模型。该模型通过调用命令行参数进行训练或测试。可调参数的文件在Options文件夹下:Base_options.py为基础参数,训练或测试都起作用,其包括图像的频道数、图像的尺寸、Batch size、数据库地址等;Test_options.py为测试参数,只在测试阶段起作用,其包括测试输出地址、测试输入地址、图像宽高比等;Train_options.py为训练参数,只在训练阶段起作用,其包括epoch次数、decay epoch次数、初始学习率等。本文将数据分为两类:A类是未侵蚀的512×512的地形高度图,其中99%作为训练数据集,1%作为测试数据集;B类是侵蚀处理后的512×512的地形高度图,其中99%作为训练数据集,1%作为测试数据集。测试数据集可用于测试生成网络的准确性。该模型输入的图像需是成对的并联图像样本。在本文中,单个图像样本的尺寸为512×512,故输入的图像对的尺寸为1024×512。Pix2pix模型支持两个方向的生成对抗学习,即从未侵蚀到侵蚀,或从侵蚀还原为未侵蚀。

4 实验结果

在本文实验的训练过程中,选取了5000份随机生成地形侵蚀前后的高度图进行训练。设置训练的参数为:输入输出图像频道数为1;输出输入图像尺寸为512×512;学习方向为从A 到B,也就是从未侵蚀到侵蚀;初始学习速率为0.00015,其余参数保持默认。在测试的过程中,选取50份随机生成地形侵蚀前后的高度图进行测试。设置测试的参数为:输入输出图像频道数为1;输出输入图像尺寸为512×512。其余参数保持默认。

图5 训练数据图

图6 测试结果图一

图7 测试结果图二

图8 UE4地形预览图,从左至右分别为:未侵蚀的原始地形;机器学习算法侵蚀后的地形;基于物理的算法侵蚀后的地形

在两份测试结果图中,分别选取了3种不同的地形进行测试。每种地形的第一列为真实未侵蚀,第二列为生成侵蚀结果,第三列为真实侵蚀结果。第一行为地形,第二行为地形对应的高度图。从以上图表可以看出,机器学习生成的侵蚀地形可以有效拟合基于物理方法的侵蚀地形,并且生成效率得到了极大提升。机器学习侵蚀所用时间大多在1秒左右,与基于物理侵蚀所用时间相比,计算效率提升了数十至数百倍不等。新的方法能够基本满足在虚拟制作拍摄现场对地形进行快速调整的需求。

表2 不同尺寸地形的两种侵蚀效率对比

5 结语

以上是本文提出的基于程序化生成和机器学习的地形快速生成方法。使用该方法,能够有效提高地形的侵蚀处理效率,从而加快虚拟自然场景的调整速度。

在今后的研究中,将会从以下两个方向进行改进和研究:首先是考虑将机器学习用于自然场景生成的其他环节,如植物群落的撒点分布,结合计算机视觉技术,输入一张实拍图片,合理输出其对应的植被分布信息。其次是地形风格转换,如在保持地形大体结构不变的情况下,如何将沙漠地形转换为雨林地形。

程序化生成技术能提供大量数据样本,结合机器学习技术,可以在电影制作的许多方面进行深入研究,达到利用先进技术提高电影虚拟化制作的工作效率的目的。❖

猜你喜欢
程序化样本机器
机器狗
程序化镇静镇痛护理干预对颅脑损伤术后护理的临床效果
程序化操作在调度运行中的应用
机器狗
直击高考中的用样本估计总体
随机微分方程的样本Lyapunov二次型估计
神奇的独眼机器
基于支持向量机的测厚仪CS值电压漂移故障判定及处理
七年级数学下册期末检测题(B)