Deep Illumination: Approximating Dynamic Global Illuminationwith Generative Ad 深度照明:使用生成对抗网络逼近动态全局光照
我们提出了深度照明,一种新颖的机器学习技术,利用条件生成对抗网络(Conditional Generative Adversarial Network)在实时应用中逼近全局光照(GI)。我们的主要关注点是以交互速率生成具有离线渲染质量的间接光照和软阴影。受近期使用深度生成卷积网络解决图像到图像转换问题的进展启发,我们引入了一种该网络的变体,它学习从G缓冲(深度图、法线图、漫反射图)和直接光照到任意
**M. M. 托马斯¹ 和 A. G. 福布斯²**
arXiv:1710.09834v2 [cs.GR] 2018年5月22日
¹ 美国伊利诺伊大学芝加哥分校,电子可视化实验室
² 美国加州大学圣克鲁兹分校,计算媒体系

图1: 深度照明技术通过训练条件生成对抗网络(cGANs)来产生全局光照输出。一旦网络训练完成,输入G缓冲(深度图、法线图、漫反射图)以及直接光照缓冲将实时添加高质量的间接光照,包括对场景中从未见过的新配置,例如光源和相机的新位置与朝向,以及全新的物体。
摘要
我们提出了深度照明,一种新颖的机器学习技术,利用条件生成对抗网络(Conditional Generative Adversarial Network)在实时应用中逼近全局光照(GI)。我们的主要关注点是以交互速率生成具有离线渲染质量的间接光照和软阴影。受近期使用深度生成卷积网络解决图像到图像转换问题的进展启发,我们引入了一种该网络的变体,它学习从G缓冲(深度图、法线图、漫反射图)和直接光照到任意全局光照解决方案的映射。我们的主要贡献在于证明生成模型可以用于学习从屏幕空间缓冲到3D环境高级光照模型的密度估计。一旦训练完成,我们的网络能够在它训练过的环境中,为其从未遇到过的场景配置近似全局光照。我们通过与最先进的实时GI技术(VXGI)和离线渲染GI技术(路径追踪)进行比较来评估深度照明。我们展示了我们的方法能产生有效的GI近似,并且在计算上比现有GI技术更高效。我们的技术有潜力替代现有的预计算和屏幕空间技术,在动态场景中以基于物理的渲染质量产生全局光照效果。
1. 引言
计算全局光照效果以再现真实世界的视觉现象,如间接光照[RGS09,NW10]、软阴影[SSMW09,EASW09,RGW∗06]、反射[WKBK02,Chr06]、体积光[ED10]和焦散[SKP07],对实时应用而言仍然是一个挑战,即使有现代图形硬件的支持。精确的、基于物理的全局光照计算成本高昂,原因在于计算3D空间中任意点之间的可见性以及通过积分来自不同方向的光照信息来计算某点的光照存在困难[RDGK12]。在实时应用中,我们受限于维持交互性的帧率。在实时帧率下实现感知上合理的光照通常依赖于使用近似方法[MMNL16,RGS09,SHR10,AMHH08]。
全局光照近似技术可以分为静态和动态两类。在静态近似中,光照信息被预计算并存储为纹理数据,称为**光照贴图**[Hou06]。使用光照贴图的优点是,它们存储了计算昂贵的GI算法的输出,这些算法用于确定光照信息,这些信息首先离线计算,然后通过快速纹理查找随时可用。缺点在于光照贴图仅对场景中的静态物体有效,因为对这些物体的耗时计算只需进行一次。另一方面,动态近似支持光照变化、软阴影以及一系列其他光照效果。**屏幕空间算法**提供动态近似,它们在图像空间的G缓冲上操作,而不是在模型空间的3D物体上。G缓冲包含关于可见表面的数据,如颜色、法线、深度和位置。这些缓冲在第一遍渲染期间创建,然后实际着色被推迟到仅使用缓冲信息的第二遍渲染[ST90]。屏幕空间算法非常适合GPU,GPU是为快速纹理获取而设计的。尽管此类算法可以提供快速且动态的GI解决方案,但图像质量、细节水平和准确性可能会受到影响。
深度学习和神经网络的最新进展已被用于解决图像到图像转换问题,使用的是名为**生成对抗网络(GANs)**[GPAM∗14]及其条件版本(cGANs)[MO14,DCF∗15]的生成模型。GANs和cGANs都已在隐式密度估计方面展现出潜力。据我们所知,迄今为止,生成模型主要用于图像处理领域,例如,生成图像分辨率的合理提升[LTH∗16],或将黑白图像转换为彩色图像[IZZE16],或自动从图像中去除噪声[YYZ∗17]。它们也被用于将一组图像(“风格”)学习到的特征转移到另一张图像上[ZJL17,GEB16]。以某种类似的方式,通过这项工作,我们引入了使用GANs来解决与图形渲染相关的问题。我们可以将使用图像空间缓冲的有效GI近似视为一个转换问题,其中网络需要生成GI输出,而图像空间缓冲充当输入条件。
在本文中,我们提出了一种名为深度照明的新技术,它使用深度学习方法计算间接光照和软阴影。主要思想是训练一个网络,使用有效的离线技术或在线近似技术来学习高质量的GI。也就是说,类似于静态近似的方法,我们首先预计算光照,使其在实时渲染帧时可供检索。然而,我们将这些信息建模在神经网络中,网络已学会将一种概率分布转换为另一种函数。我们的方法与静态方法(如生成光照贴图)的关键区别在于,我们从一系列不同的可能配置中采样光照信息,这些配置涉及光源方向、相机的位置和朝向,以及我们感兴趣场景中物体的位置。然后,我们提取相同配置的G缓冲和直接光照缓冲,并将其作为深度神经网络的输入,以学习从这些缓冲到计算所得GI的映射。在对足够数量的动态配置进行训练后,我们展示了我们的网络有能力有效地为在训练期间未遇到过的物体-光源-相机配置近似间接光照。也就是说,即使相机、光源和场景中的物体被放置在新的位置和/或具有不同的朝向,它也能产生逼真的GI。它还在动态场景中提供了强的时间连贯性,因此应用的GI不会在帧与帧之间闪烁。它不仅能为训练中使用的、处于任意位置的物体产生有效的GI,而且即使对于训练期间未提供的新物体,也能生成良好的结果。此外,它还学会了软化由直接光照产生的硬阴影。图2展示了深度照明产生有效GI的一系列不同场景。总而言之,本文的贡献如下:
- 我们引入了**深度照明**,一种使用条件生成对抗网络在多种动态情况下近似GI的新技术(第3节);
- 我们在时间和准确性方面,与最先进技术进行了比较,对我们的技术进行了评估(第4节);
- 我们引入了GANs在图形渲染中的应用,并提供了关于我们的方法和对抗网络适用情况的初步指南(第5节)。
本研究中使用的所有代码都是开源的,并通过我们的GitHub代码仓库免费提供,同时包含大量示例和视频文档。
2. 相关工作
实时全局光照是计算机图形学中经久不衰的主题,已有多种方法被引入来模拟真实世界的光照效果。例如,预计算辐射度传输**[SKS02] 利用了预计算的光传输信息,其假设是场景几何是固定的,只有光源和相机会变化。其主要思想是将光照计算存储为球面函数,然后使用球谐函数作为基投影到频域。这种方法的缺点是我们无法改变用于场景几何的物体的位置或形状,除非重新计算球面函数的新系数。此外,球谐函数对低频特征处理良好,但在处理高频特征时往往会产生伪影。

图2: 此图展示了深度照明在众多真实场景中的应用,其中全局光照的细微之处被近乎完美地捕捉。在所有示例中,左侧是深度照明的输出,右侧是真实值(ground truth)。我们展示了特写镜头以突显每个场景中有趣特征的比较。示例(a)使用路径追踪,其余示例使用体素锥追踪。例如,在(b)中,我们看到深度照明可以成功生成彩色灯光在地板上的反射(蓝色方框和绿色方框)。示例(d)显示,我们的系统甚至能为未在训练中出现的新物体生成逼真的全局光照。
图3:此图展示了深度照明产生渲染伪影的示例。与图2相同,(a)和(b)的左侧均为深度照明输出,右侧为真实值(Ground Truth)。在(a)中,我们看到清晰的阴影(右侧蓝色方框标记处)未被准确再现(左侧蓝色方框)。类似地,粒子系统(绿色方框)与真实值相比丢失了细节。在(b)中,我们看到网络在基座底部(蓝色方框)和天使翅膀尖端(绿色方框)添加了逼真但错误的间接光照。请注意,与图2(d)中的示例类似,我们的系统未在此类物体上进行训练。增加训练集规模或使用物理精度更高的真实值技术训练网络可减少此类伪影(详见第4节)。
另一种称为光传播体的技术在大规模动态场景中近似单次反弹间接光照[KD10]。光照信息以球谐函数的形式存储在三维网格中。光从每个网格位置迭代传播到相邻位置,每个网格代表场景中间接光的分布。尽管光传播体技术快速且稳定,但光传播体的低分辨率会导致光线渗漏,并且只允许一次光反弹。使用我们的技术,正如我们在第3.3.3节讨论的那样,可以用来自多次光反弹和高频特征的真实值来训练网络,而不会影响性能或稳定性。
体素锥追踪近似动态场景中的一次光反弹[CNS∗14]。这里,不是利用实际的场景几何,而是为静态几何创建一次体素表示,然后为动态对象每帧再创建一次。首先,将场景几何转换为一张地图,该地图编码空间(在体素上平均后的)的近似不透明度。接着是发射体素化步骤,发射体素存储几何体向所有方向发射的光量。最后,使用锥追踪计算辐照度[CNS∗14]。虽然体素锥追踪能产生良好的全局光照近似,但锥追踪是一个计算昂贵的步骤,会对性能产生不利影响。正如我们在第3.1节描述的,我们使用体素锥追踪作为为我们网络学习生成真实值的技术之一。训练完成后,我们的网络可以比体素锥追踪本身快得多地产生同等质量的输出(见第4.3节)。
2.1. 深度学习渲染技术
尽管据我们所知,深度照明是首个利用生成对抗网络的渲染技术,但近期已开发出多种深度学习方法来解决计算机图形学中的问题。
其中一种方法用于近似环境光遮蔽。NNAO[HSK16]是一种快速、准确的屏幕空间环境光遮蔽技术,它利用神经网络学习产生环境光遮蔽效果所需的最优近似。它使用一个四层神经网络来学习从深度和相机空间法线到环境光遮蔽值的映射。
另一种称为深度着色的技术[NAM∗17]使用卷积神经网络来学习从屏幕空间缓冲到各种屏幕空间效果的映射,例如环境光遮蔽、间接光散射、景深、运动模糊和抗锯齿。我们的技术与深度着色在三个重要方面有所不同。首先,深度着色使用单一的卷积神经网络进行训练,而我们使用了两个卷积神经网络(一个生成器网络和一个判别器网络),其优势在于通过结合对抗性损失函数能产生清晰的图像。其次,深度着色中的间接光照是使用在屏幕空间中计算的真实图像进行训练的;我们展示了我们的技术可以利用任何实时或离线的全局光照解决方案产生的真实图像来产生高质量的输出。第三,深度着色网络是在来自不同场景的各种数据上进行训练的,而我们引入了一个场景一个网络的方法,即我们从单个场景中提取数据。这有助于在近似过程中保持该场景所使用的风格。这种方法的另一个优势是,网络更了解一个场景的信息,这在近似过程中做出合理的假设非常有用,从而产生更接近真实值、物理上合理的输出(关于此方法的讨论见第5节)。
图3: 此图展示了深度照明产生渲染伪影的示例。与图2一样,(a)和(b)的左侧是深度照明输出,右侧是真实值。在(a)中,我们看到清晰的阴影(右侧,蓝色方框)未被正确再现(左侧,蓝色方框)。类似地,粒子系统(绿色方框)与真实值相比丢失了细节。在(b)中,我们看到我们的网络在基座底部(蓝色方框)和天使翅膀尖端(绿色方框)添加了逼真但错误的间接光照。请注意,与图2(d)中的示例一样,我们的系统没有在此物体上进行训练。增加训练集的大小或使用物理上更精确的真实值技术来训练网络可以最小化这些伪影(见第4节)。
3. 技术方法
在本节中,我们首先描述深度照明技术的每个阶段如何工作。然后解释我们如何提取训练数据,并提供在其他数据集上使用我们技术的一般性指南。接着描述深度照明中使用的神经网络架构,最后总结训练阶段,解释用于学习全局光照特征的损失函数。
3.1. 系统概述
我们引入了 一个场景一个网络 的方法来训练网络,使其学习特定3D场景的全局光照特征。这种方法对于动态的、但具有可由神经网络学习的清晰可识别风格特征的场景高度相关。例如,视频游戏通常以独特的艺术风格区分,可以为每个游戏创建不同的深度照明网络。在视频游戏中,如果每个关卡在着色风格和光照设置方面艺术风格不同,可以为每个关卡创建一个深度照明网络。
我们的方法分为两个阶段:1)训练阶段,和 2)运行时阶段。在训练阶段,我们从3D场景中为不同可能的光源-相机-物体配置(位置和方向)提取G缓冲(深度图、法线图和漫反射图)、直接光照缓冲以及来自任何昂贵全局光照技术的输出(我们将其用作“真实值”)。(我们已使用路径追踪[LW93,TO12]和基于体素的全局光照[CNS∗14]的输出进行训练,但我们的技术适用于任何全局光照技术。)然后,以半监督的方式训练GAN网络,其中网络的输入是G缓冲和直接光照缓冲。真实值(即所选全局光照技术的输出)被网络用来在损失函数的帮助下学习分布。一旦训练完成,我们就可以在运行时阶段使用训练好的网络。在运行时阶段,网络可以以交互速率为新场景配置生成间接光照和软阴影,其质量类似于用于训练的真实值全局光照技术,并且仅使用图像空间缓冲信息。
3.2. 数据采集
我们为两种不同场景准备了数据集(即为每个场景创建了不同的GAN)。在第一个场景中,场景有一个固定的相机,由一个康奈尔盒和沿轴旋转的定向光组成。一个3D模型被放置在康奈尔盒中心,该模型沿多个轴旋转。对于训练和验证,我们仅使用了球体、圆柱体、立方体、斯坦福兔子模型和斯坦福龙模型的3D模型。我们从VXGI[CNS∗14]和GPU路径追踪[TO12]中提取了8000对G缓冲(深度、法线和漫反射图)、直接光照缓冲和真实值。数据集中所有图像对的分辨率为256x256像素。对于测试,我们提取了2000对图像,其中包含雕像模型和弥勒佛模型,这两个模型均未在训练中使用。
第二个场景展示了一个自定义的低多边形世界,由一个移动的相机穿越,包含本质上是自发光的移动物体以及粒子效果。场景中的光源模拟太阳,产生昼夜循环。(图2f和图3a展示了此场景的示例。)我们提取了12,000对图像空间缓冲。对于训练、验证和测试,我们使用了相同的物体(与第一个场景不同),但这里的相机沿着训练期间未遇到的不同路径移动。因此,验证集混合了场景的未见配置和来自训练集的中间场景。(此外,此场景的另一部分用于评估目的,如第4节所述)。
3.3. 网络架构
我们使用条件生成对抗网络,它由一个生成器和一个判别器组成。生成器网络以G缓冲和直接光照缓冲作为输入,并尝试将其映射到相应的全局光照输出。判别器网络接收真实值全局光照输出或来自生成器的生成全局光照输出,并将其分类为真实或伪造,其中“真实”意味着输入来自昂贵全局光照技术产生的图像分布。因此,生成器和判别器网络进行最小-最大对抗博弈,生成器尽力欺骗判别器,使其认为生成的输出来自真实分布,而判别器则尝试从真实图像和生成图像中学习以对其进行分类。这个博弈将持续到判别器无法区分真实图像和生成图像为止[GPAM∗14,MO14,Gau14]。
3.3.1. 生成器网络结构
我们的生成器是一个U-Net[RFB15],它是一个由具有跳跃连接的编码器和解码器组成的深度卷积网络。编码器由一个卷积层和一个激活函数组成,将数据压缩成其高级表示。解码器与编码器相反,由一个反卷积层和一个激活函数组成。除网络的第一层和最后一层外,编码器和解码器都经过批量归一化。LeakyReLU[MHN13]被用作编码器部分的激活函数,而ReLU和tanh(仅用于最后一层)被用于解码器。跳跃连接将编码器的输出与对应解码器的输入结合起来。这些跳跃连接有助于恢复在压缩过程中丢失的空间信息[HZRS16]。生成器网络的输入是拼接成12通道图像的G缓冲和直接光照缓冲,输出是一个3通道的RGB图像。我们使用8个编码器和8个解码器,评估时使用不同数量的基础层(K=32,64,128)。图4(顶部)展示了深度照明中使用的生成器网络概览。
3.3.2. 判别器网络结构
我们的判别器是一个PatchGAN,它也由深度卷积层组成,但PatchGAN的优势在于它能给出逐块的真实或伪造概率,然后取平均得到输出[IZZE16]。判别器由5个编码器(没有解码器)组成,激活函数为LeakyReLU和sigmoid(仅用于最后一层)。与生成器网络类似,判别器编码器在整个过程中都经过批量归一化,除了第一层和最后一层。判别器接收两组输入:条件图像空间缓冲与目标图像组合,或者与生成图像组合。然后判别器判断给定集合是否为生成。判别器的输入是图像空间缓冲和一个图像(真实或生成的),使其成为一个15通道的输入,输出是输入真实部分的概率。我们为判别器使用了基础层k=64。图4(底部)展示了深度照明中使用的判别器网络概览。
3.3.3. 损失函数
除了原始的GAN损失函数外,我们还使用**L1损失**,这是对生成输出进行逐像素绝对值计算的损失。与传统的GAN(其目标是产生新颖内容作为输出)不同,我们关心的是从图像缓冲到最终图像的转换,而不是新内容生成。如果我们单独使用GAN损失,最终会得到来自我们寻找的分布但缺乏结构和光照信息准确性的图像[IZZE16]。这是因为判别器仅设计用于检查生成的图像是否来自目标概率分布。如果我们单独使用L1损失(即仅使用生成器),那么网络往往会产生模糊的图像,因为它在低频方面表现良好,但在提供清晰度、边缘和细节所需的高频方面失败。这两种损失函数的组合确保网络将产生来自所需分布的清晰图像,并且与真实值相比是准确的。
3.4. 训练
我们的网络在PyTorch中实现,训练进行50个周期,在Nvidia P5000 GPU上大约需要3小时。从数据集中随机选择帧,以大小为4的小批量进行,并为每个小批量计算成本函数。网络权重使用自适应梯度下降算法进行更新。我们使用0.0002的学习率,为避免过拟合,在生成器中使用0.5的dropout。

图4:此图展示了深度照明中使用的生成器网络(顶部)和判别器网络(底部)示意图,用于学习从图像空间缓冲到目标全局光照解决方案的映射。
4. 评估
为了探索我们方法的能力,我们在各种网络和数据集配置上测试了我们的技术。我们的主要评估设置包括Crytek Sponza场景,其中有一个作为太阳的定向光。一个相机在场景中沿所有可能方向移动,提取屏幕空间缓冲(深度图、法线图、漫反射图和直接光),这些将作为网络的输入,以及由VXGI产生的输出,后者将作为真实值(尽管在第4.4节中我们也描述了VXGI与路径追踪在学习收敛和准确性方面的比较)。训练集和测试集经过精心策划,使得训练集包含场景中点A和点B的帧,而测试集包含从点A到点B的所有中间帧。我们根据这些未见中间帧生成的结果来评估近似效果。基于对相关文献的调查以及我们之前在神经网络和生成模型方面的经验,我们生成了以下假设:
**H1** 训练迭代次数将减少均方误差以及感知误差。
**H2** 如果我们在训练中包含更多数量的光源-物体-相机配置,神经网络将产生更好的近似效果。
**H3** 增加网络层数将导致训练期间收敛更快,但会对执行时间产生负面影响。
**H4** 只要在输入和真实值中都保持了场景结构,使用不同真实值生成神经网络不会对近似效果产生影响。

图5: 此图显示了每个周期后在测试数据集上的均方误差(顶部)及其结构相似性指数(底部)。
4.1. 实验1:训练迭代次数
我们以K=128的基础层训练了网络55个周期,训练集包含3400个图像空间缓冲及其对应的真实值。每个周期后,我们针对网络未知的中间帧测试网络。我们测量了生成图像与真实值之间每像素误差的均方误差(MSE),并将结构相似性指数(SSIM)作为感知指标。如图5(顶部)所示,MSE随着迭代次数的增加而减少,表明网络正在收敛。如图5(底部)所示,每次迭代后SSIM增加,这表明我们的网络产生的输出在感知上更接近真实值。
4.2. 实验2:训练集大小
使用不同大小(1400、2400和3400)的训练集进行了另一个实验。网络使用的超参数为K=128和25个周期。我们发现随着训练集大小的增加,MSE和SSIM都显著改善,并且网络收敛也更快,如图6所示。使用较小的训练集,我们最终会使网络欠拟合,并对未见测试数据给出糟糕的近似。当使用大型训练集时,应注意确保数据中有足够的多样性,以避免网络过拟合。最佳的训练数据集大小取决于场景的大小以及光源-物体-相机变化的数量。

图6: 此图比较了不同数据集大小的训练集。我们展示了所有训练集的均方误差(顶部)和结构相似性指数(底部)。
4.3. 实验3:网络层数
我们发现网络层数在准确性和执行速度方面对近似效果有显著影响。我们在一个包含3400张图像的训练集上使用了3个不同的网络,基础层分别为K=32、64和128,训练50个周期。我们发现层数更多的网络收敛更快,但降低了执行速度(见图7,左侧和中部)。我们基础层K=32的网络比真实值技术快10倍,并产生更接近真实值的图像(在本例中是VXGI)。当我们增加基础层到K=128时,我们看到即使执行时间增加,它仍然比真实值技术快(见图7,右侧)。当我们将我们的网络映射到像路径追踪这样的离线技术时,我们的网络产生相似质量的图像,但速度要快近100倍。图7(顶部)展示了VXGI与具有不同基础层的深度照明的输出示例。请注意,在动态场景中,即使在K=32时,误差也很难被发现,而在K=128时,与VXGI的差异几乎无法察觉,尽管如果你放大图像的特定部分,例如,你可以看到从K=32到K=64时,悬挂在右侧阳台上的横幅质量显著提高。同样,较亮和较暗区域之间的对比度在K=128时比K=64时更好地近似真实值。尽管这个实验非常有希望,但需要进一步探索以找到针对特定场景的最优基础层K。

图7: 此图展示了具有不同基础层数的网络和体素锥追踪(VXGI)的输出(顶部),以及网络在均方误差(左下)、结构相似性指数(中下)和运行时间(右下)方面的比较。
4.4. 实验4:使用不同真实值进行训练
同一场景使用基于GPU的路径追踪和基于体素的全局光照进行渲染;这里我们为训练集提取了400张图像。我们使用基础层K=128并训练了30个周期。结果表明,在路径追踪上训练的网络比在VXGI上训练的网络收敛更快,如图8(顶部)所示的均方误差值所示。比较结构相似性(SSIM),在路径追踪上训练的网络产生的图像与真实值相似,且在显著更少的迭代次数下就达到了很高的准确性,相比于在VXGI上训练的网络。如图8(底部)所示,仅10个周期后,路径追踪的SSIM已接近1,而即使在30个周期后,VXGI仍在持续改善。
5. 结果讨论
总的来说,我们对不同网络和数据集配置的评估表明,当对动态3D环境(如其艺术风格、场景中光源数量、可能的相机位置和朝向等)有一定先验知识时,我们的技术可以用于游戏开发流程中。正如预期,实验1(第4.1节)表明,增加训练迭代次数可以减少均方误差和感知误差,因此H1得到证实。
正如我们在实验2(第4.2节)中看到的,增加训练集大小将改善结果。此外,数据集中更多的多样性有助于防止模式崩溃(这是GAN的一个常见问题,即网络只学习数据分布的一部分)。特定场景所需的最佳周期(或迭代)次数难以预测,但似乎与场景的复杂性和所需迭代次数存在相关性。通过使用验证集,并借助MSE和SSIM指标,我们可以跟踪训练进展,一旦在验证集上不再观察到显著改进,即可停止训练阶段。也就是说,**H2得到证实**。然而,我们的初步探索表明,将训练集大小增加到超过2400时,回报会递减。需要进一步的工作来确定理想层数与场景复杂性之间的关系。
实验3(第4.3节)表明,层数对执行速度有显著影响。然而,尽管基础层K=128的网络比基础层K=64和K=32的网络运行得慢,但与VXGI或路径追踪相比,它仍然显著更快。因此,**H3得到部分证实**,因为确实增加层数会增加生成全局光照的运行时间。然而,收敛速率相当相似,并且运行时间仍然比它所近似的真实值技术快。
实验4(第4.4节)表明,学习更精确的全局光照技术不仅总体上能产生更好的结果,而且能使网络收敛更快。当比较用于训练的真实值时,我们看到网络从路径追踪中学习比从VXGI中学习更快,并且在仅10个周期内就产生了结构相似的输出。因此,**H4未被证实**。这些结果相当出人意料,值得进一步研究。我们推测VXGI中使用的近似方法可能在不同场景配置中强调不同的特征,因此在训练过程中可能引入矛盾,需要更长的训练时间来学习场景的全局光照特征。尽管路径追踪性能更好、收敛更快,但在某些情况下(例如开发过程中),使用VXGI进行训练可能仍然有意义,因为每个真实值示例可以快速生成,并且所产生的全局光照在感知质量上足以满足动态场景(有移动的相机、光源或物体)的需求。
总体而言,这些结果表明,使用GAN在动态场景中生成高质量全局光照具有相当大的潜力,并且在标准桌面环境的消费级GPU上训练GAN来近似全局光照是切实可行的,这使得深度照明能够学习特定于该场景的特征。图2(a)展示了使用路径追踪训练的网络生成的结果,在我们看来,它与真实值难以区分,而图2(b–f)展示了使用VXGI训练的网络生成的一系列高质量结果。尽管在动态场景中很难注意到真实值与我们的近似值之间的差异,但图3展示了深度照明错误地向帧添加全局光照的实例。这些伪影可能在渲染粒子系统时(a)出现,也可能在将新物体引入场景时(b)出现。然而,我们相信,通过进一步训练(包含来自特定场景的更广泛示例)可以减少或消除这些伪影的严重性。此外,使用更精确的全局光照解决方案(如路径追踪)也应该能减少这些伪影。

图8:此图比较了用于训练的两种不同真实值(路径追踪和体素锥追踪(VXGI))在均方误差(顶部)和结构相似性指数(底部)方面的表现。
6. 结论与未来工作
在本文中,我们提出了**深度照明**,这是生成对抗网络在全局光照问题上的首次应用,能从图像空间缓冲中产生时间连贯的间接光照和软阴影。作为这种方法的未来工作,有几个有趣的领域值得探索。例如,我们展示了如何使用生成对抗网络来学习从G缓冲和直接光照缓冲到任何全局光照解决方案的映射(适用于具有漫反射材质的场景)。为了未来的探索,我们希望研究当引入不同材质时网络的行为,并且我们也相信我们的技术将有效地学习其他全局光照效果,如运动模糊、景深和焦散。
虽然我们的实验在将未知物体引入场景时显示出有希望的结果,但研究更复杂的场景(包含更大范围变化的模型、相机和光源,处于不同的位置和朝向)也将很有趣。一个有趣的方向是探索程序生成环境中的全局光照,其中网络在包含环境构建块的随机场景上进行训练。在网络结构方面,我们计划对不同大小和规模的场景,以及不同数量的物体和光源进行更多实验,以找到直接影响运行时的基础层最佳数量。
最后,一个有趣的探索方向是**自动化数据采集过程**用于训练。也就是说,给定一个特定场景,我们应该能够在可能的场景中自动配置相机,以提取包含显著光照-物体变化特征的帧用于训练。未来的工作将研究优化网络训练,以加速训练过程并减少生成全局光照效果时的伪影。
更多推荐


所有评论(0)