从最佳稀疏样本进行基于图像的深度重光照网络
我们提出了一种基于图像的重光照方法,该方法可以仅从预定义的定向光下捕获的五幅图像中,从可见半球的新的,远距离照明下合成场景的外观。我们的方法使用深度卷积神经网络从这五张图像中回归出新图像。此照明网络是在一个大型合成数据集上训练的,该数据集由程序生成具有真实反射率的形状组成。我们表明,通过将自定义设计的采样网络与重光照网络相结合,我们可以共同学习最佳的输入光方向和重光照功能。我们对网络进行了广泛的评估,包括对重建质量的经验分析,针对不同场景的最佳照明配置,以及可替代的网络体系结构。我们在合成和真实场景上都证明了我们的方法能够再现复杂的高频照明效果(例如镜面反射和投射阴影),并且胜过其他基于图像的且需要更多数量级的图像的重光照方法。
1.介绍
在新的灯光下渲染场景是一个经过长期研究的视觉和图形问题,其在视觉效果,虚拟和增强现实以及电子商务的产品可视化中都有应用。一种重光照的方法是重建场景的几何形状和材质属性,并在新的照明下渲染此重建。但是,重建是一个极具挑战性的问题,尤其是对于具有复杂几何形状和反射率的场景。
基于图像的重光照方法通过直接建模场景的光传播函数来绕过重建。假设是远处的照明,光传播函数
将方向ω上的入射照明映射到像素x(朝向摄像机)处的反射辐射率,并允许场景在新的远处照明下呈现为:
其中L(ω)是来自方向ω的入射光辐射率。可以通过在不同照明条件下捕获图像来采样光传播函数。例如,在来自方向ωj的单个定向光下的场景图像产生了样本:
。基于图像的重光照方法使用一组此类样本,
,以在新的光ωn下再现场景外观
。由于光传播函数已经将入射照明与场景几何形状和材质的所有相互作用结合在一起,因此这些方法可以重现难以重构和渲染的逼真的照明效果。
基于图像的暴力重光照方法[Debevec等。[2000年]通过捕获场景的数百至数千个图像来密集采样光传播函数;然后他们可以通过插值这些密集的样本来重新照亮场景。然而,已知光传播函数是高度相干的[Mahajan等人2007;纳亚雷特(Nayaret )2004; Sloan等。[2003年],并已用于从较少数量的图像中重建它[Reddy等2012; Wang et al.2009]和使用低维函数重新照明图像[Malzbender et al.2009。2001年任等人。2015]。但是,这些方法仍然需要数十到数百张图像。这反过来需要大量的采集时间,并且通常需要专用的硬件。
在这项工作中,我们提出了一种仅用五幅图像在新的照明方向下渲染场景外观的技术。以前的基于图像的重光照方法已经在单个光传播函数中利用了相干性。取而代之的是,我们利用不同光传播函数之间的共性,并估计一个非线性的高维函数,该函数将任何场景下的稀疏的一组预定义定向光下的外观,映射到了任何一个给定方向光照下的该场景外观(在上半球)。受到深度学习成功完成具有挑战性的外观分析任务的启发[Gardner等2017; Kalantari等2016; Rematas等2016],我们使用深度卷积神经网络(第3.1节)来表示此功能。我们使用一个大型的,合成渲染的数据集来训练该网络(我们称为Relight Net),该数据集由程序生成的形状的场景和真实的BRDFs组成(第3.3节)。
给定五个在定向光下的场景图像,Relight-Net可以在可见半球中的任何定向光下重现场景外观。
Relight-Net输出的视觉质量取决于所使用的输入方向。因此,我们设计了Sample-Net,这是一个自定义层,它选择密集图像集的稀疏子集。我们前置Sample-Net,后置Relight-Net,以构建一个端到端网络,我们对其进行训练以共同学习最佳的输入照明方向和重光照函数(第3.2节)。我们对我们的方法进行了广泛的评估,包括对重建质量的经验分析,针对不同入射照明范围的最佳照明配置以及替代性网络体系结构(第4.1节)。我们还提出了一种改进方法,该方法可使Relight-Net对与最佳输入光方向的微小偏差具有鲁棒性,而这些最佳偏差可能发生在实际捕获场景中(第4.2节)。
如图所示。分别在图1、12和17中,我们的方法为具有复杂的高频效果(如阴影和锐利的镜面反射)的真实场景生成了逼真的结果。我们的结果的视觉质量(仅由五幅图像生成)要优于以前的基于图像的重光照方法的视觉质量,后者需要更多数量级的图像(请参见图12和13)。因此,对于需要更多图像数量级的基于图像的重光照方法,我们的方法显着减少了获取时间和复杂性(请参见图12和13)。因此,我们的方法大大减少了基于图像的重新照明方法的获取时间和复杂性,并使它们朝着更加实用的方向迈出了一步。
图1.我们提出了一种基于学习的方法,该方法在定向光下仅仅拍摄场景的五幅图像(a,圆圈上用红色标记的光方向)并在来自上半球的新的定向光下重建场景的外观(c)(以橙色标记)。
我们的方法训练一个全卷积神经网络,联合学习任何场景的最佳输入光方向和重光照函数。该网络甚至可以重建高频的样式,例如镜面反射阴影和投射阴影(c中的小图),并产生与真实情况(b)紧密匹配的真实感照明效果。此外,通过为上半球的每个方向生成图像,我们的方法可以生成在环境光效果下的重光照场景(d)。
2.相关工作
**光线传播的维度。**尽管照明的变化会导致场景图像的急剧变化,但先前的工作表明,这些图像通常位于低维子空间中。例如,已知朗伯表面的图像位于低维流形上[Basri和Jacobs 2003;Belhumeur和Kriegman 1998;Ramamoorthi and Hanrahan 2001;Shashua 1997;Sunkavalli等2010]。甚至具有复杂几何形状和反射率的场景也被证明在局部区域具有低维的光传播[Mahajan等人2007],这一事实已被利用来进行快速渲染[Ng等2003; Sloan等2003]和重光照[Nayar等2004]。这些技术使用线性分析(全局或局部区域)来显示单个场景的光传播维数较低。通过使用基于CNN的非线性表示形式来利用跨场景的光传播的相干性,我们的工作大大减少了场景重光照所需的图像数量。
**稀疏样本的重光照。**虽然基于图像的暴力重光照方法对光传播函数进行了密集采样[Debevec等。[2000],最近的方法已经利用光传播函数的相干性来使用更少的样本来重建它。一种这样的方法是在捕获过程中使用专门设计的照明模式[Matusik等2004; Peers andDutré2005,Peers等2009;雷迪等2012]。其他方法是从行或列的采样子集中重建光传播矩阵[Fuchs等2007; Wang等2009]。但是,这些方法仍然需要数百张图像,并且需要特殊的采集系统来创建所需的照明。相比之下,我们的方法能从五个图像的中,在定向照明下重新照明场景。
多项式纹理图(PTM)[Malzbender等[2001]将每个像素的辐射值建模为照明方向的多项式函数。这些函数适合(大约50个)捕获的图像,并用于在新的灯光下渲染场景。任等人。 [2015]使用类似的方案,不同之处在于他们使用浅层神经网络而不是多项式。对于具有复杂光传播的场景,它们显示出令人印象深刻的结果,但需要数百张图像才能实现。相比之下,我们在跨场景的光传播中利用空间和角度相干性,并学习更复杂的非线性重光照函数,仅用五个样本即可实现图像重新照明。图12显示,与在60张图像上运行的PTM相比,我们的结果具有更好的视觉质量。
BRDF估计技术可根据在不同照明条件下捕获的图像重建BRDFs。 Nielsen等[2015]和Xu等[2016]使用线性数据驱动的BRDF模型从稀疏样本中得出用于BRDF估计的最佳光方向。我们提出了一种基于非线性CNN的重建方法来学习用于高质量场景重新照明的最佳照明方向的技术。
**基于光度立体的场景重建。我们的采集设置类似于光度学立体方法,该方法从场景图像在变化的光照下重建表面几何形状(和反射率)[Woodham 1980]。**尽管最近的技术可以处理非朗伯式BRDF [Chandraker 2016;高盛等2010; Hui和Sankaranarayanan 2017;[Oxholm和Nishino,2016年],他们要么假设表面具有相同的BRDF,要么需要数百张图像来重建形状和空间变化的BRDF。此外,光度立体方法通常不考虑投射阴影,全局照明和其他光传播效果。相比之下,我们的方法能够从更少的样本中再现这些效果,并且性能优于基于光度立体的方法(见图12)。
**用于外观分析和合成的深度学习。**最近,基于深度学习的方法已成功应用于逆向渲染和场景重建问题,例如反射率图和照明估计[Gardner等2017; Georgoulis等2017; Hold-Geoffroy等2017; Rematas等2016],反射率捕获[Li等。 2017;刘等2017],以及深度和法向估计[Bansal等2016; Eigen and Fergus 2015]。这些方法简化了有关场景的假设(例如,仅考虑单个对象),以使重建变得容易处理。我们绕过重建,直接为复杂场景生成重光照图像。深度网络也已用于相对非结构化相机的视图插值[Flynn等2016]和光场相机[Kalantari等2016]。我们的工作假设一个固定的视点,并尝试对灯光进行内插/外推。
3.基于图像的重光照
给定一小组在单个光源下的场景图像,我们想在新的照明下渲染场景。我们假设场景是从固定视点拍摄的,并且照明距离较远。我们还假设来自场景后方的照明对外观的贡献最小,可以忽略不计。
在这些假设下,光传播矩阵T(xi,ωj)表示从方向ωj(从上半球L采样)到达像素xi的入射光的比例。在单向光下的场景亮度矩阵表示光传播矩阵的逐列采样,即 。
给定一组k个这样的样本-分别在预定义的定向光ω1,ω2,…,ωk下捕获的场景图像I1,I2,… Ik,我们的工作目标是重建图像In,其中,这将由新的定向光ωn通过重光照函数Φ(·):
产生。
我们假设Φ(·)与场景无关,并且可以将任何场景的稀疏输入样本 转换为该场景在新的照明方向中的渲染图像。我们相信这是可能的,因为光传播是高度相干的。我们的公式通过,让所有稀疏光方向下一个像素的辐射(亮度)可能是整个场景的函数,来实现这一点。感觉是对每个光照情况下都有一个光照函数,然后结合多个光照传播函数求得新光照情况下的反射的值
我们将重光照函数Φ(·)建模为我们称为Relight-Net的深度卷积神经网络(CNN)。我们使用庞大的合成数据集训练Relight-Net,该合成数据集由以复杂的空间变化BRDF渲染的程序生成的形状组成,并证明它可以重建高频光传播效果,例如镜面反射和投射阴影。 RelightNet在图2的右半部分进行了说明,并在3.1节中进行了描述。
Relight-Net的重建质量取决于我们用作输入样本的预定义照明方向。凭直觉,如果所有输入方向都非常靠近,则推广到新照明的能力将受到限制,并且当它们跨越整个入射半球时,也就是比较分散的时候,这个问题将得到改善。
因此,我们还提出了一种方案,以学习最佳输入采样方向来获得最佳照明效果。具体来说,我们对输入光方向的空间进行密集采样(就是让半球上的每个小格代表一个光方向),并设计一个层来选择这些方向的稀疏集合。我们将此层称为Sample-Net,并在3.2节中对其进行描述。(另请参见图2的左半部分)。我们将Sample-Net前置在Relight-Net之前,以构建一个端到端网络,该网络经过联合训练以估计最佳的光照方向和相应的重光照函数。
3.1学习重光照:Relight-Net
我们方法的核心是Relight-Net,这是一个估算等式2
的深层全卷积神经网络。我们探索了Relight-Net的两种架构-第一种是常规的编码器(下采样)解码器(上采样)架构,而第二种则分开了场景的直接照明和全局照明为两个部分。
Relight-NetA。我们的第一个网络体系结构Relight-Net A旨在直接从稀疏输入样本 生成重光照图像。为了将输入光方向ωj=(sj,tj)(投影到z = 0锅盖的方向向量的2D坐标)传递到网络,我们构造了2通道恒定图像,其分辨率与输入图像一致,并且s和t分别在每个通道中。将其与输入RGB图像连接起来,每个样本将产生5通道的输入。那么k个样本将导致5k个通道输入到Relight-NetA中。
图2.我们网络的概述。我们将一组密集的m个输入图像和光方向(a)堆叠到一个5m通道的输入中,该输入将传递到Sample-Net(b,第3.2节)。 Sample-Net由可训练的权重矩阵W组成,该矩阵乘以温度参数αp并通过softmax层。这将构造一个稀疏采样矩阵Ws,该矩阵乘以密集输入以生成稀疏5k个通道的样本集(c),这个样本集就是Relight-Net A的输入(e,第3.1节)。
Relight Net A是一种全卷积编码器/解码器;编码器将输入采样降采样为中间表示。我们将输出光的方向ωn(d)穿过全连接层,并将其复制并连接到中间表示。解码器对此进行上采样以恢复输出的重光照图像(f)。我们使用跳过链接将高频特征放到输出中。我们联合训练Sample-Net和Relight-Net来学习最佳样本集和重光照任何场景的重光照函数(第3.4节)。在测试时,我们仅使用Relight-Net在输入新的照明方向(d)下重新照明输入的稀疏样本(c)。
如图2所示,Relight-Net A使用U-net样式的编码器-解码器体系结构[Ronneberger等。 2015];编码器采用5k通道输入,通过一系列卷积层(步长为2进行下采样),然后依次进行批归一化(BN)和ReLU层。目标照明方向ωn穿过全连接层(每次线性操作后都有tanh激活层),以将2维矢量ω=(s,t)扩展为128维特征矢量(因为输入网络的是投影到二维坐标系的二维坐标,所以这里说是二维矢量)。我们在空间上复制此特征向量,以构建与编码器输出串联的128通道特征图。解码器对级联的编码器输出进行卷积,并使用反卷积(转置卷积)层对特征进行上采样,其中卷积和反卷积之后是BN和ReLU层。我们使用从编码器到解码器的skip connection来改善输出中每个像素的细节。解码器以2个卷积层结束,然后进行Sigmoid激活(多标签分类,我理解的比如一个图像有R,G,B三个标签,然后通过Sigmoid定义一个阈值,大于这个阈值的就表示有这个标签,并且权重是多少),以产生重光照图像。我们在输出图像上使用L2损失来训练网络, 其中
是用定向光源ωn渲染的GroundTruth图像。
Relight-Net A的结构使它可以利用光传播矩阵中的两种形式的相干性:卷积层通过在网络的感受野上聚集来利用空间相干性,并结合跨通道的特征图来利用照明方向上的相关性。这使其可以处理漫反射和镜面反射,阴影和其他全局照明效果。
Relight-NetB。Relight-Net A旨在直接从输入样本中还原重光照的图像,并且没有任何特定于渲染的约束。我们设计了另一种架构-Relight-Net B-评估明确包含渲染先验是否可以改善重新照明效果。具体来说,我们知道在单向光ωn下的场景外观可以表示为直接照明和全局照明分量的总和 ,其中 分别是直接分量,每个像素相对于ωn的visibility map(我理解是:可以被看见的部分,也就是不是黑的部分,也就是一个mask。。),以及全局照明分量。我们训练Relight-Net B来显式解码每个组件。
图3. Relight-NetB。类似于Relight-Net A,我们使用编码器解码器体系结构。 但是,Relight-Net B有一个编码器和三个单独的解码器来分别重建直接照明,可见度图和间接照明图像,然后将它们组合起来以重建照明输出。我们使用从编码器到所有解码器的skip connection,恢复高频细节。
如图3所示,Relight-Net B由单个编码器组成,并与三个独立的解码器连接。这三个解码器生成 ,然后将它们组合以重建In。编码器和解码器与Relight-Net A中使用的编码器和解码器相同。
由于我们使用合成渲染数据来训练网络,因此我们可以为直接照明图像,可见性图和最终照明图像生成GT数据,并将其用作监督图像。我们通过计算局部每像素的阴影而不考虑可见性来渲染直接分量 我们使用阴影射线投射构造可见性贴图 。 Relight-Net B的最终损失是三个受监管的参数的三个L2损失之和:
3.2学习最佳光样本:Sample-Net
Relight-Net从在固定的预定义方向上捕获的一组稀疏输入样本生成重光照图像,这种结构化输入的形式有助于提高结果的质量。但是,使用方向的特定选择可能会对重新照明的质量产生重大影响,并且尚不清楚最佳照明配置是什么。学习最佳照明方向的一种选择是使用网络回归这些参数。但是,光线方向的变化会导致复杂的场景外观变化,这对于建模来说是具有挑战性的,并且与照明没有区别(例如,阴影变化)。取而代之的是,我们对入射照明的区域(即上半球L)进行密集采样,在这些光线下预先渲染训练场景的图像,并提出了估计最佳样本的问题,这是选择这些密集样本的稀疏子集的问题。
令输入样本的密集集合由 。通过向量化每个(Ij,ωj)对并stack这些样本,我们可以构建5p×m的密集样本矩阵D,其中p是输入图像中的像素数。从这些样本中选择一个子集可以按照以下步骤进行:
其中Ws是m×k的二进制矩阵(k << m),其中每列都有一个1项(对应于“选择”的D中的样本)。就是Ws表示一个权重矩阵,里面只有少数几个1,这几个1就会把D中表示k个比较重要的光照筛选出来,其他权重是0的就把不重要的光照给过滤了
Sample-Net是一个可训练的m×k 的W矩阵,该矩阵将密集的输入样本相乘以创建稀疏样本集。但是,我们需要强制此矩阵为二进制,并且每列的1只能是一个。受Chakrabarti等人的启发[2016],我们通过在W:
的每一列上应用softmax层来做到这一点,其中αp是一个标量参数,它在训练过程的每个时期p从1逐渐增加到∞。由于softmax层的形式, ,使用较大的αp会使WS的每一列变得稀疏。我们用全1初始化W。结果,在训练的早期阶段,S中的样本是D中样本的线性组合,但是当αp达到无穷大时,WS的每一列逐渐收敛到与所选最优样本相对应的单个非零元素(请参阅第4.1节中的图6)。我们使用二次模型
,其中β是可调的超参数。
而当式3将每个输入样本矢量化为5p×1向量,实际上,我们将它们表示为5通道输入,并将相同的Ws值应用于样本的每个通道。图2说明了我们如何结合Sample-Net和Relight-Net。在3.4节我们描述了我们如何共同训练他们。
3.3生成训练数据
我们使用合成的渲染数据集训练网络;这不仅使我们能够控制训练场景的各个方面,还使我们能够为重光照图像和中间结果(如Relight-Net B所需的那些)创建GT数据。
我们使用随机参数生成原始形状(立方体,椭圆体和圆柱体),并应用具有变化频率的高度场。这给了我们很多随机形状。在应用随机平移和旋转后,我们通过组合多个(1至9)形状来构建场景几何。我们使用这种方法创建600个场景,其中500个用于训练,另外100个用于测试。
我们使用来自Adobe Stock 3D材质数据集的材质定义-这个数据集是一个拥有694个现实空间变化的BRDFs(SVBRDF)的数据集。该数据集使用基于物理的微面BRDF模型[Burley 2012](使用GGX分布[Walter 等2007]),每种材料均由高分辨率(4096×4096)diffuse map,rough map和normal map表示。我们使用来自这些SVBRDF的随机裁剪对形状进行纹理处理(参见图4)。我们将SVBRDF分为训练集(594个材料)和测试集(100个材料);因此,在训练期间不会看到合成的测试场景中使用的材料。
我们使用双向路径追踪[Lafortune and Willems 1993]196个样本,使用Mitsuba [Jakob 2010]渲染512×512分辨率的训练和测试图像。为了使我们的方法适用于传统相机拍摄的低动态范围图像,我们将伽玛值设置为2.2并将图像裁剪为1。我们结合使用了Mitsuba的mixbsdf,roughconductor,diffuse和normalmap插件来渲染材质。
图4展示了我们一些渲染的场景。尽管这些场景的构成可能并不现实,但请注意,它们局部展现了现实世界中存在的各种复杂的光传播,包括复杂的表面反射,投射阴影和相互反射。如图所示。参照图1、12和17,这使我们能够学习重新泛化到真实场景的重光照函数
图4。训练数据。我们的场景由多个(1-9)随机原始形状组成,这些形状由不同级别的高度场(左上角)增强。我们使用Adobe Stock 3D材质数据集(右上角)中的SVBRDF对这些形状进行纹理处理,并使用Mitsuba(下角)进行渲染。
3.4训练Relight-Net和Sample-Net
如3.2节所述(如图2所示),Sample-Net设计为与Relight-Net联合训练;给定密集的场景样本集,Sample-Net选择一个稀疏子集,该子集可以输入到Relight-Net以产生重光照效果。为了共同训练它们,我们从入射照明域Lθ-a(朝向视点的θ度锥)密集采样开始,如图5所示。这为我们提供了大量的离散光 。我们渲染每一个训练场景i,在该集合中的每个灯光下创建密集的输入样本
。我们以端到端的方式训练组合的Sample-Relight-Net,以最小化所有场景和所有输出光方向上的Relight-Net损失函数:
其中 由 3.2节中的
组成。该损失函数从仅来自
的k个光下的图像中,评估了
中的每个光下重建图像的误差。
我们从每个渲染图像 中裁剪10个 128×128补丁,为我们的训练提供了5000个场景patchs。每个训练场景patch都有一个对应的
。由于训练Sample-Net需要完全加载
,因此我们只能以小批量进行训练。这又意味着重复交换
,可能导致大量的I / O开销。取而代之,我们组织训练如下:在每批中,我们为4个随机场景加载
,并从每个
中随机选取18张图像
作为Relight-Net重建的目标。这构成了用于Sample-Net训练的4个场景patch和用于Relight-Net训练的72个图像patch。我们将ADAM0.0001用作联合训练的学习率。从5到8的β通常效果很好,我们使用β=6。我们发现我们的网络通常在16个epochs之后收敛。我们最终学习的模型,场景,渲染图像以及生成它们的代码已在项目网站上发布。
http://viscomp.ucsd.edu/projects/SIG18Relighting
由于Relight-Net是完全卷积的,因此在测试时我们可以将其应用于任意分辨率的图像,尽管它仅考虑128×128窗口大小内的外观。此外,虽然仅使用 中的离散光训练了Relight-Net,但我们证明了它可以用于在连续域Lθ上使用任何定向光进行重新照明。
4.合成数据分析
4.1 Relight-Net和Sample-Net的分析
在本节中,我们将对网络的不同组成部分进行分析和经验评估。除非另有说明,否则我们将使用Relight-Net A进行测试。在本节的后面,我们将比较Relight-Net A和Relight-NetB。
光域与稀疏样本数的关系。Light domain vs. number of sparse samples
通过训练Sample-Net和Relight-Net以最小化式5,我们可以学习从Lθ的任何光线方向为场景重新照明。为了研究此域的大小(以锥角θ表示)对网络性能的影响,我们在四个光域上训练网络:θ= {30,45,60,90}。我们通过对域(-0.952,0.952)中光方向的(s,t)坐标进行均匀采样得到38个值,并拒绝单位圆盘外部的样本来创建 。这导致 中的m90 = 1052个不同的光方向。 Ω30,Ω45和Ω60是Ω90的子集,m30 = 256,m45 = 540和m60 = 804个方向。关于Lθ和Ωθ的详细信息如图5所示。
图5。入射光照域和样本。如右图所示,我们在位于Lθ(半球上指向观察方向的θ度圆锥体)上的平行光下模拟场景外观。在左图中,我们在二维平面上演示半球和不同的光域L30、L45、L60、L90。我们还显示了从L90到1052个离散方向的密集采样。其他Ωθ由Ω90构成,即Ω30=Ω90∩L30,Ω45=Ω90∩L45,Ω60=Ω90∩L60。
除了照明域的大小之外,我们重建的质量还取决于输入到Relight-Net的稀疏样本的数量。特别是,随着照明域的大小增加,我们希望我们需要更多的样本来保持重建质量。因此,我们针对12种不同的光域大小/样本配置分析了完整的Sample-Net-Relight-Net体系结构的性能:θ= 30,k = {2,3,4}; θ= 45,k = {4,5}; θ= 60,k = {5,6,7};并且θ= 90,k = {5、6、7、8}。
学习最佳样本。
在我们的联合培训过程中,Sample-Net逐渐收敛到k个最佳样本。在图6中,我们说明了θ= 90和k = 5个样本时的情况。 Ws始时会混合许多样本,然后逐渐收敛到5个最佳样本。正如我们直观地期望的那样,这些样本分布在L90上。
图6.(θ= 90,k = 5)的联合训练期间最佳稀疏样本的演变; 每一列代表Ws一列的值。从平坦分布开始,WS的每一列逐渐变得峰值,直到在第15个时期收敛到单个样本为止。
图7指示了4个学习最佳方向的代表性网络,每个光角度设置一个对应网络。我们可以看到,当k = 3、4时,最佳方向围绕圆锥体的中心呈圆形分布;设置k = 5将在圆锥体中心附近添加一个方向,即几乎与视点并置。还要注意,并非所有最佳方向都放置在照明域的边缘,这表示Sample-Net选择的方向允许Relight-Net插值和推断输入样本以产生照明效果。请注意,Sample-Net可能已经收敛到局部最小值,这在深度网络中通常是这样。但是,在实践中,我们将发现,这些方向比任意选择的方向和其他基于启发式的采样策略能带来更好的重构,这将在后面讨论。其余8(θ,k)配置的最佳方向在补充文件中显示。
图7.学习几种照明配置的最佳方向。 我们使用标准(θ,ϕ)球形参数化表示方向。
重建质量。
我们使用训练过的网络在训练后的光域中的所有照明方向下对100场景测试集进行重新照明,并汇总误差。我们对(θ,k)的不同选择执行此分析,并在图8中说明结果。根据这些误差分布,我们可以对Relight-Net进行以下观察:1)对于接近输入样本的光,它产生的重建误差非常低; 2)对于插值的光样本,即在输入光方向的凸包内的输出光方向(convex hull of the input light directions),它会产生高质量的结果; 3)虽然可以进行推断以在稀疏输入样本的凸包之外的灯光下重新照明场景,但误差比插值的误差大。尽管每个场景都可能基于其几何形状和反射率属性具有自己的最佳采样方向,但图7中的方向对于所有场景都是最佳的。此外,选择最佳方向可以让内插和外推场景中的Relight-Net权衡误差。
图8.不同照明配置的重建误差。 左侧,我们可视化了在我们所有测试场景中汇总的每个测试光方向的重建质量(以PSNR为单位)。 靠近输入样本的方向的误差最低,即使在远离输入样本的方向上,在输入样本的凸包中误差也很小。 每个图下方列出了所有光方向上的平均PSNR。 在右侧,我们显示了用不同的灯光设置捕获的4个真实场景(a,b,c,d)的重新照明结果,并将它们与GT进行了比较。 相应的输出方向标记在左侧,我们的重建对于(θ= 30,k = 3),(θ= 45,k = 4)以及在(θ= 90,k = 5)中的大多数光方向非常准确 。 注意,(θ= 90,k = 5)设置可能会在极端掠射角extreme grazing angles(d)处对单向失效,但是如图1和17所示,当集成到环境图上时,其产生影响最小。
不出所料,较小的光域重建误差较小;例如,针对(θ= 45,k = 5)训练的网络的PSNR为26.01,而对于(θ= 90,k = 5)则为23.12。我们的(θ= 45,k = 4)的网络对于 中的大多数方向都产生接近真实感的结果。对于θ= 90(即整个上半球),我们在本文中展示的照明设置(θ= 90,k = 5)在大部分光域中都能产生准确的结果。该网络可能会模糊一些高频效果,例如尖锐的阴影和小的镜面反射。但是,当我们在高频定向光下渲染场景时,这些问题最为明显。在环境地图光照下渲染场景会导致与GT图像在视觉上无法区分的结果(见图15)。而且,使用附加的样本,例如k = 8,也提高了性能。这些实验表明,我们可以使用Sample Net来针对特定场景或捕获场景进一步优化样本配置。
与替代抽样策略的比较。
为了评估学习的样本的质量,我们将它们与产生分布均匀的样本的基于启发式的策略进行比较。我们选择两种方法-随机飞镖投掷和k均值聚类,并根据(θ= 90,k = 5 )配置。
为了确保随机飞镖投掷导致分布均匀的样本,我们为两个样本之间的距离指定了最小阈值。我们还对距光域边界的距离(即掠射角)应用相同的最小阈值。如果没有这种条件,我们发现样本趋于收敛到域的边界(具有更多样本),这导致较差的重光照性能。由于我们不知道阈值距离的先验性,因此我们生成了阈值逐渐增大的样本集,并选择了40º的值,该值仅允许五个样本。我们的其他baseline使用k均值聚类将 中的1052个样本分组为5个聚类。我们发现k均值聚类通常,它会收敛为两种类型的分布:一个中心方向,四个方向围绕它分布,或者五个方向围绕光域的中心分布(见图9(c,d))。我们从两个代表性分布中随机选择两个随机飞镖投掷结果和两个k均值聚类结果。我们通过使用这些样本作为输入并使用相同的5000个场景patch
作为训练数据来训练Relight-Net。
图9.与两个随机投掷飞镖的样本集(a,b),两个代表性的k均值聚类样本(c,d)和我们的样本(e)进行比较。 我们的样本产生更高的平均PSNR。
我们在100场景测试中测试这些训练好的网络,并比较重建误差。如图9所示,我们的Sample-Net样本明显优于随机投掷飞镖的样本(图9(a,b))。k均值聚类也不可靠;虽然第一种分布(图9(c))接近我们的性能,但第二种分布却差很多(图9(d))。此外,如果不对每种采样策略都进行Relight-Net训练,就很难预测这些采样策略的重新照明性能。相比之下,结合使用Sample-Net和Relight-Net,使我们可以在一次训练中共同学习最佳样本和最大化重光照性能的重光照函数。
Relight-Net A与Relight-NetB。
通过比较相同条件下的Relight-Net A和Relight-Net B的性能(θ= 90,k = 5),我们评估了在重光照函数中引入渲染约束的效果。对于此实验,我们首先训练了Sample Net + Relight-Net A以学习最佳输入方向,然后训练了具有相同方向的Relight-NetB。图10显示了这两个网络的重光照误差的比较。尽管Relight-Net B的平均性能略有改善(PSNR为23.20,而Relight-Net A为23.12),但在视觉质量方面并不能始终超过Relight-NetA。这可能归因于学习高频可见性函数的困难(PSNR为12.41)。相反,直接照明分量的重建是相当准确的(PSNR为23.04)。
图10。Relight Net A与Relight Net B。我们使用相同的最佳光方向(左上角)比较两种Relight Net架构的(θ=90,k=5)照明配置在所有光方向上的重光照误差。还列出了每个重新照明网络B组件的PSNR和总体PSNR。重新照明网络B的性能稍好一些,但对一个场景和灯光方向(由左侧箭头标记)从视觉上来看(右上角)显示,它生成的阴影有时更好(绿色方框)而在其他时间不准确(蓝色方框)。我们还展示了来自Relight Net B(底部)的visibility map和direct component
我们在本文的所有实验中都选择了Relight-Net A,因为它与Relight-Net B的重光照性能相当,并且评估速度更快。但是,Relight-Net B的场景分解结果表明,使用这种技术进行场景重建可能是未来工作的有趣方向。
4.2精化Relight-Net
经过联合训练,Relight-Net可以从的k个稀疏样本中学习的最佳方向为场景重新照明。但是,这将需要一个采集系统来精确地重新创建这些最佳光的方向,这在实践中可能是一个挑战。为了减少此需求,我们通过训练Relight-Net使其在最佳方向的局部附近处理输入光的方向来完善它。请注意,我们能够执行此操作,因为输入光的方向是Relight-Net的输入之一。
为了完善Relight-Net,我们生成了一个新的训练数据集,该数据集由原始的500个训练场景以及一组新的5000个场景组成(总共5500个场景)。对于每个场景,我们渲染一组新的k个随机输入样本(在学习到的最佳光方向周围的10º圆锥内采样),并在整个Lθ圆锥上的随机光方向下渲染另外50个输出图像。这些图像的生成如3.3节所述。与以前一样,我们使用来自每个图像的10个随机128×128切块来完善Relight-Net。
图11比较了在同一测试数据集上进行优化前后的Relight-Net误差分布。我们可以看到,即使我们使用联合优化选择的最佳输入方向,精化也可以提高重建质量(细化前为23.12,细化后为24.15)。这是在较大的(5500 vs 500)场景数据集上优化RelightNet的结果;虽然我们可以在此数据集上训练我们的Sample-Net + Relight-Net组合,但是训练Sample-Net的大量计算需求使这一点变得很棘手。更重要的是,refined网络能够处理偏离最佳方向的输入。为了评估这一点,我们随机选择了两组距离最佳方向1–5°和5–10°的10个输入方向,并在整个测试数据集中测试这些方向的重新照明性能。这两个设置的平均PSNRs如图11右侧所示。我们可以看到,即使输入从最佳方向变化了5–10◦,经过精炼的网络也达到了23.59的平均PSNR,实际上,在最佳输入样本的情况下,精练网络的性能优于未精炼网络的结果。如我们在真实数据上的实验所示,对输入方向的这种鲁棒性使我们的方法即使对于不完全符合我们要求的采集设置所捕获的数据集,也可以产生高质量的结果。
图11.网络优化的评估。 在左侧,我们比较了优化前后Relight-Net最佳输入的重建误差(θ= 90,k = 5)。 细化改进了结果,因为它已经在更大的数据集上进行了训练。 此外,经过改进的网络在非最佳输入方向的两种情况下也表现良好,它们分别偏离最佳情况1–5°和5–10°。 正如这些方案的平均PSNR(在我们整个测试集中计算得出的)所示,经过优化的网络对这些偏离非常鲁棒,实际上在最佳输入方面的性能优于未经精炼的网络。
5结果与评估
现在,我们对合成数据和真实数据进行评估和比较。除非另有说明,否则本节中的结果均使用针对(θ= 90,k = 5)训练的refined的Relight-Net A模型生成。我们还将在随附的补充视频中提供其他示例和结果(包括移动灯光下的视频)。我们鼓励读者放大论文中的图像以查看图像细节。
数据集。
我们根据100个场景的测试数据以及三个不同的真实数据集对我们的方法进行评估,其中一个是使用基于龙门的采集系统捕获的(图8和17),另外一个是使用Einarsson等人的灯光舞台设置[2006](图12和图17)和Schwartz等[2011](补充视频和图14)。虽然我们可以控制龙门在我们学习的最佳方向上捕获图像,但后两个数据集没有这些方向,并且最接近的方向平均偏离4°。我们针对这些场景的结果依赖于refined网络的鲁棒性来输入光的方向。
Timing时间。
我们可以使用网络模型中的前向传播在平行光下重新照亮场景;对于分辨率为512x512的图像,这在NVIDIA Geforce 1080Ti上需要0.03秒。
与基于光度立体重建的比较。
如第二节所述。如图1所示,图像重新照明的一种方法是重建场景并在新的照明下重新渲染它。为了与这种方法进行比较,我们使用了最先进的光度立体方法,该方法可以处理空间变化的BRDF [Hui and Sankaranarayanan 2017]。图12显示了在5张和15张图像上运行时使用此方法的比较。当从少量图像重建场景时,即使是最先进的光度学立体方法也具有很大的误差,从而在照明结果中导致明显的伪影。此外,此方法不能处理非局部效果,例如投射阴影和相互反射。相比之下,就PSNR和视觉质量而言,我们的结果要好得多。
图12.在合成测试场景(顶部)和[Einarsson等人捕获的真实场景 [2006年] (底部,此处的输入光方向偏离我们的最佳方向3-7°)中与光度立体[Hui和Sankaranarayanan 2017](具有5和15个样本)和多项式纹理贴图[Malzbender等人2001](具有6、15和60个样本)的比较)。输入图像和相应的灯显示在左侧,结果的PSNR列在图像下方。 即使与输入更多图像的方法相比,我们的结果也具有一些最高的PSNR分数。 此外,我们的结果具有更好的视觉质量,并可以更好地重现cast shadows and specularities better(插入)。
与基于图像的重光照方法比较。
大多数基于图像的重新照明方法被设计用来使用专用硬件捕获密集输入样本。因此,我们选择两种代表性的方法-多项式纹理映射(PTM)[Malzbender等[2001]和重心插值-并将它们在不同样本集上的性能与我们的结果进行比较(图12和图13)。对于PTM,我们将2阶多项式拟合为6、15和60个输入图像,将5阶多项式拟合为60个输入图像。在合成和真实数据的大多数设置中,我们的网络都优于PTM。使用5阶多项式和60个样本(是我们使用的12倍)可以使PTM在真实场景中胜过PSNR,但是与我们的网络不同,它无法重构镜面反射和完全阴影。此外,当我们添加更多样本或使用高阶多项式时,PTM的性能不会持续提高。这可能是因为多项式不是很好的光传播近似值,尤其是在存在阴影的情况下,使用L2误差拟合它们会导致不稳定的结果。通常,PTM设计用于具有最小投射阴影的大部分平面场景。相比之下,我们的方法仅用少量样本即可处理更复杂的场景。
在图13中,我们分析了重心插值需要多少个样本才能达到我们的结果质量。我们以64、197和345个方向对上半球进行均匀采样。我们在这些方向上渲染合成场景,并使用这些图像对半球进行重心插值。如图13所示,即使对于输入样本凸包之外的新的重新照明方向,我们的模型也会产生合理的结果,并带有合理的(尽管有些锯齿)阴影。我们的方法有5个样本,具有64个图像的重心插值的PSNR为23.90,而PSNR为23.15。随着采样分辨率的提高,重心插值开始在数量上胜过我们的结果(对于197和345图像,PSNR为26.95和27.47)。但是,我们的结果的视觉质量仍然很高。重心插值结果即使在345个输入图像上也具有明显的重影伪影。这些问题在移动灯光的动画中更为严重(请参阅补充视频);我们重建的阴影和镜面反射平滑且直观地移动,而重心插值结果显示出明显的空间重影和时间混叠。
图13.重心插值与增加的采样分辨率的比较(第一行,样品显示为灰色点,重新照明方向显示为黄色)。 我们的方法具有比重心插值(64个样本)更好的PSNR。 在较高的分辨率下,重心插值可产生更好的PSNR,但主观视觉质量较差。 例如,在阴影边界(插图,底行)处存在明显的重影伪影。
方向图和环境图重新照明。Directional and environment map relighting.
使用训练过的网络去处理 中的定向光,可以通过在环境地图environment map的每个方向下渲染图像并使用基于环境地图辐射值的权重对其进行求和,从而在环境照明(上半球)下对场景进行重新照明。我们使用64×64的半球形环境图(3000个输出方向)。请注意,我们的网络设计允许我们为输入图像预先计算一次编码器特征,并且仅针对不同的光方向处理解码器。
图15显示了我们针对四个合成测试场景的定向和environment map照明与GT的结果的比较。请注意,我们在定向照明下的结果与GT图像非常匹配,并且沿着尖锐阴影边界有一些小瑕疵。此外,我们在全频环境照明下的结果(仅由5个稀疏样本生成)在视觉上无法和GT结果相区分。这表明,在环境光照下进行渲染时,我们的方法在 中对大多数方向进行重新照明时的精度足以补偿在掠射角时发生的误差(如图8所示)。
图15:来自五个合成数据样本的重新照明结果(第一列,输入/输出光的方向在灰色/黄色的黑色圆圈上标记)。 我们的结果非常真实地匹配了GT图像(第二列的左与右),在hard阴影边界附近存在一些误差。 此外,在全频半球环境图照明下(第三和第四列,插图中的环境图),这些错误在视觉上是无法察觉的。
如图17所示,我们在真实场景中观察到了相似的行为,这些场景表现出各种材料(漫反射到高镜面反射),各种几何形状(以复杂方式排列的任意形状)以及各种场景比例和布局(从小到中到大物体)。我们的网络真实地再现了新的定向光下的外观,并在environment map照明下创建了逼真的结果。该图中最下面的两个结果来自[Einarsson等[2006年],其光样本偏离我们的确切最佳光方向3º至7º。但是,我们获得了高质量的结果,说明了我们的网络使用并非完全最佳的光向进行重新照明的能力。
图17.用environment map照明渲染的真实场景(前三个场景是我们捕获的,[Einarsson 等2006]捕获后两个场景) 这些场景包含反射率复杂,几何形状复杂的对象,并且跨越了各种场景大小和布局。 但是,我们的方法对于单向光(第二列和第三列;输出方向标记为黄色)和环境光照(第四至第六列)都能产生准确的重光照结果。
局限性。
尽管我们的方法可以产生高质量的结果,但仍然存在一些伪像artifacts。当我们捕获投射阴影的一般形状时,边缘可能会出现伪影(图13)。我们在128×128图像块上训练网络;这决定了我们可以分析场景外观的特征的感受野和空间尺度。因此,我们的方法无法处理较大范围内发生的非局部外观变化,例如,由掠角照明(图8)或高度非凸形几何体(图14)引起的阴影。我们的方法可能会模糊非常尖锐的镜面反射(图17)。如图14和16所示,可以使用更多样本或在环境光照下渲染时改善这些问题。
图14.局限性。 我们的方法无法恢复由高度非凸几何形状引起的投射阴影。 但是,如最右列所示,在环境地图照明下的渲染仍然是合理的。
图16.在θ= 90的情况下,k = 5与k = 8的比较。在这种情况下,入射光会产生非常显着的投射阴影,从而导致k =5时结果带有尖角(由白色箭头指示)的阴影伪影。 当我们使用k = 8个样本时,伪像消失了。 在环境光照下(底部),该伪影也得到缓解。
我们的结果也受我们的训练数据和生成它的假设的限制。例如,我们假设场景中的对象是不透明的,并且不会对诸如闪光之类的复杂效果建模。增加场景的形状,材质和组成的多样性可以帮助减轻这种情况。
6.结论与未来工作
我们提出了一种新颖的方法来从稀疏的输入图像集中为场景重新照明。我们可以通过训练CNN在单向光下拍摄场景的5张图像并在新的定向光下(在上半球中)渲染场景来实现此目的。此外,我们提出了一种方案,通过联合训练组合的采样-重光照网络,结合重光照函数来学习这些稀疏样本的最佳方向。与以前的基于图像的最新照明方法进行的广泛评估和比较表明,除了输入样本数量减少了一个数量级之外,我们能够实现与它们相同(甚至更好)的性能。
本文为将来的工作提出了许多有趣的方向。在较高级别上,大多数以前的场景外观分析都依赖于简单的线性分析工具。另一方面,深度网络在学习图像的良好表示方面已经非常成功。我们可以类似地使用它们来学习场景外观的表示吗?我们如何使用这些表示来减少重新照明(或渲染)场景的内存和时间?在这项工作中,我们学习了最佳的定向光集合。如果我们还允许非定向的常规照明,这将如何改变?尽管我们在这项工作中避免了显式的场景重建,但是训练Relight-Net B(图10)的结果表明,网络可以学习从输入样本中分解场景因素。将其与学习提供最佳重建的照明相结合可能是另一个有趣的扩展。