用于使用预测深反射场重新照明图像的方法、系统以及介质

文档序号:1850876 发布日期:2021-11-16 浏览:1次 >En<

阅读说明:本技术 用于使用预测深反射场重新照明图像的方法、系统以及介质 (Method, system, and medium for re-illuminating an image using a predicted deep reflection field ) 是由 克里斯多佛·雷曼 阿比米特拉·梅卡 罗希特·库马尔·潘迪 肖恩·瑞安·弗朗切斯科·法内洛 马 于 2019-10-16 设计创作,主要内容包括:提供了用于使用预测深反射场重新照明图像的方法、系统以及介质。在一些实施例中,所述方法包括:识别训练样本组,其中,每个训练样本包括(i)一次一灯(OLAT)图像组,所述一次一灯图像组在已经激活了布置在照明结构上的多盏灯中的一盏灯时已经分别被捕获;(ii)球形颜色梯度图像组,所述球形颜色梯度图像组在已经激活了布置在所述照明结构上的所述多盏灯以分别发出特定颜色时已经分别被捕获;以及(iii)照明方向,其中,所述OLAT图像组中的每个图像和每个所述球形颜色梯度图像是对象的图像,并且其中,所述照明方向指示灯相对于所述对象的相对定向;使用所述训练样本组来训练卷积神经网络,其中,训练所述卷积神经网络包括:针对一系列训练迭代中的每个训练迭代并且针对所述训练样本组中的每个训练样本:生成输出预测图像,其中,所述输出预测图像是具有来自与所述训练样本相关联的所述照明方向的照明的与所述训练样本相关联的所述对象的表示;识别所述训练样本的所述OLAT图像组中所包括的与所述训练样本的所述照明方向相对应的基准真相OLAT图像;计算指示所述输出预测图像与识别到的基准真相OLAT图像之间的感知差异的损失;以及基于计算出的损失来更新所述卷积神经网络的参数;识别包括第二球形颜色梯度图像组和第二照明方向的测试样本;以及使用经过训练的卷积神经网络,用来自所述第二照明方向的照明来生成每个所述第二球形颜色梯度图像组中所包括的所述对象的重新点亮图像。(Methods, systems, and media for re-illuminating an image using a predicted deep reflection field are provided. In some embodiments, the method comprises: identifying a set of training samples, wherein each training sample comprises (i) a one-light-at-a-time (OLAT) image set that has been respectively captured when one of a plurality of lights arranged on a lighting structure has been activated; (ii) a set of spherical color gradient images that have been respectively captured when the plurality of lamps arranged on the lighting structure have been activated to respectively emit a specific color; and (iii) a lighting direction, wherein each image in the set of OLAT images and each of the spherical color gradient images is an image of an object, and wherein the lighting direction indicates a relative orientation of the light with respect to the object; training a convolutional neural network using the training sample set, wherein training the convolutional neural network comprises: for each training iteration in a series of training iterations and for each training sample in the set of training samples: generating an output predictive image, wherein the output predictive image is a representation of the object associated with the training sample with illumination from the illumination direction associated with the training sample; identifying a reference true-phase OLAT image included in the OLAT image group of the training sample corresponding to the illumination direction of the training sample; calculating a loss indicative of a perceptual difference between the output predicted image and the identified reference true OLAT image; and updating parameters of the convolutional neural network based on the calculated loss; identifying a test sample comprising a second set of spherical color gradient images and a second illumination direction; and generating a relight image of the object included in each of the second set of spherical color gradient images with illumination from the second illumination direction using a trained convolutional neural network.)

用于使用预测深反射场重新照明图像的方法、系统以及介质

相关专利申请的交叉引用

本申请要求于2019年5月23日提交的美国临时专利申请No.62/852,274的权益,该申请以引用方式全部并入本文。

技术领域

所公开的主题涉及用于使用预测深反射场重新照明图像的方法、系统以及介质。

背景技术

人脸的照片般逼真的重新照明是一项备受追捧的功能,其应用范围从视觉效果到真正沉浸式的虚拟体验。也就是说,人类用户通常能够将真实面部与合成渲染区分开。因此,照片般逼真的重新照明的任何人脸确实是具有许多困难的挑战,这些困难包括对次表面散射和血液流动进行建模以估计灯与单股头发之间的相互作用,因此是费力且计算密集型的。另外,许多当前方法需要大输入图像集合,因此不适合于与移动或动态对象一起使用。

因此,需要提供用于使用预测深反射场重新照明图像的新方法、系统以及介质。

发明内容

提供了用于使用预测深反射场重新照明图像的方法、系统以及介质。

根据所公开的主题的第一方面,提供了一种用于使用深反射场重新照明图像的方法,该方法包括:识别训练样本组,其中,每个训练样本包括(i)一次一灯(OLAT)图像组,该一次一灯图像组在已经激活了布置在照明结构上的多盏灯中的一盏灯时已经分别被捕获;(ii)球形颜色梯度图像组,该球形颜色梯度图像组在已经激活了布置在照明结构上的多盏灯以分别发出特定颜色时已经分别被捕获;以及(iii)照明方向,其中,OLAT图像组中的每个图像和每个球形颜色梯度图像是对象的图像,并且其中,照明方向指示灯相对于对象的相对定向;使用训练样本组来训练卷积神经网络;识别包括第二球形颜色梯度图像组和第二照明方向的测试样本;以及使用经过训练的卷积神经网络,用来自第二照明方向的照明来生成每个第二球形颜色梯度图像组中所包括的对象的重新点亮图像。在一些实施例中,训练卷积神经网络包括针对一系列训练迭代中的每个训练迭代并且针对训练样本组中的每个训练样本:生成输出预测图像,其中,输出预测图像是具有来自与训练样本相关联的照明方向的照明的与训练样本相关联的对象的表示;识别训练样本的OLAT图像组中所包括的与训练样本的照明方向相对应的基准真相OLAT图像;计算指示输出预测图像与识别到的基准真相OLAT图像之间的感知差异的损失;以及基于计算出的损失来更新卷积神经网络的参数。

根据所公开的主题的第二方面,提供了一种用于训练卷积神经网络以使用深反射场重新照明图像的方法,该方法包括:识别训练样本组,其中,每个训练样本包括(i)一次一灯(OLAT)图像组,该一次一灯图像组在已经激活了布置在照明结构上的多盏灯中的一盏灯时已经分别被捕获;(ii)球形颜色梯度图像组,该球形颜色梯度图像组在已经激活了布置在照明结构上的多盏灯以分别发出特定颜色时已经分别被捕获;以及(iii)照明方向,其中,OLAT图像组中的每个图像和每个球形颜色梯度图像是对象的图像,并且其中,照明方向指示灯相对于对象的相对定向;以及使用训练样本组来训练卷积神经网络。训练卷积神经网络包括针对一系列训练迭代中的每个训练迭代并且针对训练样本组中的每个训练样本:生成输出预测图像,其中,输出预测图像是具有来自与训练样本相关联的照明方向的照明的与训练样本相关联的对象的表示;识别训练样本的OLAT图像组中所包括的与训练样本的照明方向对应的基准真相OLAT图像;计算指示输出预测图像与识别到的基准真相OLAT图像之间的感知差异的损失;以及基于计算出的损失来更新卷积神经网络的参数。

根据所公开的主题的第三方面,提供了一种用于使用深反射场重新照明图像的方法,该方法包括:识别至少包括对象的第一球形颜色梯度图像和第二球形颜色梯度图像以及第一照明方向的测试样本;以及通过使用经过训练的卷积神经网络,用来自第一照明方向的照明来生成每个球形颜色梯度图像中所包括的对象的重新点亮图像。在一些实施例中,通过以下操作来训练卷积神经网络:识别训练样本组,其中,每个训练样本包括(i)一次一灯(OLAT)图像组,该一次一灯图像组在已经激活了布置在照明结构上的多盏灯中的一盏灯时已经分别被捕获;(ii)球形颜色梯度图像组,该球形颜色梯度图像组在已经激活了布置在照明结构上的多盏灯以分别发出特定颜色时已经分别被捕获;以及(iii)照明方向,其中,OLAT图像组中的每个图像和每个球形颜色梯度图像是对象的图像,并且其中,照明方向指示灯相对于对象的相对定向;以及使用训练样本组来训练卷积神经网络,其中,训练卷积神经网络包括:针对一系列训练迭代中的每个训练迭代并且针对训练样本组中的每个训练样本:生成输出预测图像,其中,输出预测图像是具有来自与训练样本相关联的照明方向的照明的与训练样本相关联的对象的表示;识别训练样本的OLAT图像组中所包括的与训练样本的照明方向对应的基准真相OLAT图像;计算指示输出预测图像与识别到的基准真相OLAT图像之间的感知差异的损失;以及基于计算出的损失来更新卷积神经网络的参数。

在第一方面、第二方面或第三方面中,在一些实施例中,照明结构是球形穹顶,并且多盏灯布置在球形穹顶的表面上。

在第一方面、第二方面或第三方面中,在一些实施例中,使用预先训练的神经网络来计算损失。

在第一方面、第二方面或第三方面中,在一些实施例中,损失包括第一损失分量,该第一损失分量基于每个图像中的低频信息来指示输出图像与识别到的OLAT图像之间的感知差异,并且损失包括第二损失分量,该第二损失分量基于每个图像中的高频信息来指示输出图像与识别到的OLAT图像之间的感知差异。在一些实施例中,使用经过训练的神经网络来计算第二损失分量,该经过训练的神经网络已经被训练为拍摄OLAT图像作为输入,并且生成用于生成OLAT图像的灯的灯方向作为输出。

在第一方面、第二方面或第三方面中,在一些实施例中,用于每个训练样本的OLAT图像组和球形颜色梯度图像组是从第一多个相机捕获的,该第一多个相机分别具有来自第一多个视点的视点,并且与测试样本相对应的第二球形颜色梯度图像组是从具有不包括在第一多个视点中的视点的相机捕获的。

在第一方面、第二方面或第三方面中,在一些实施例中,该方法进一步包括在计算损失之前生成对准基准真相OLAT图像,其中,使用对准基准真相图像来计算损失。

在第一方面、第二方面或第三方面中,在一些实施例中,对象的第一球形颜色梯度图像具有RGB值为((1+θx)/2,(1+θy)/2,(1+θz)/2)的灯颜色,并且第二球形颜色梯度图像具有RGB值为((1-θx)/2,(1-θy)/2,(1-θz)/2)的灯颜色,并且其中,θ是灯的方向向量。

根据所公开的主题的一些实施例,提供了一种用于使用深反射场重新照明图像的系统,该系统包括:存储器;以及硬件处理器,该硬件处理器在执行存储在存储器中的计算机可执行指令时被配置为:识别训练样本组,其中,每个训练样本包括(i)一次一灯(OLAT)图像组,该一次一灯图像组在已经激活了布置在照明结构上的多盏灯中的一盏灯时已经分别被捕获;(ii)球形颜色梯度图像组,该球形颜色梯度图像组在已经激活了布置在照明结构上的多盏灯以分别发出特定颜色时已经分别被捕获;以及(iii)照明方向,其中,OLAT图像组中的每个图像和每个球形颜色梯度图像是对象的图像,并且其中,照明方向指示灯相对于对象的相对定向;使用训练样本组来训练卷积神经网络;识别包括第二球形颜色梯度图像组和第二照明方向的测试样本;以及使用经过训练的卷积神经网络,用来自第二照明方向的照明来生成每个第二球形颜色梯度图像组中所包括的对象的重新点亮图像。在一些实施例中,训练卷积神经网络包括针对一系列训练迭代中的每个训练迭代并且针对训练样本组中的每个训练样本:生成输出预测图像,其中,输出预测图像是具有来自与训练样本相关联的照明方向的照明的与训练样本相关联的对象的表示;识别训练样本的OLAT图像组中所包括的与训练样本的照明方向相对应的基准真相OLAT图像;计算指示输出预测图像与识别到的基准真相OLAT图像之间的感知差异的损失;以及基于计算出的损失来更新卷积神经网络的参数。

根据所公开的主题的一些实施例,提供了一种系统,该系统包括存储器;以及硬件处理器,该硬件处理器在执行存储在存储器中的计算机可执行指令时被配置为进行根据本文中所描述的任何方面或实施例的方法。

根据所公开的主题的一些实施例,提供了一种包含计算机可执行指令的非暂时性计算机可读介质,该计算机可执行指令在被处理器执行时使处理器进行用于使用深反射场重新照明图像的方法,该方法包括:识别训练样本组,其中,每个训练样本包括(i)一次一灯(OLAT)图像组,该一次一灯图像组在已经激活了布置在照明结构上的多盏灯中的一盏灯时已经分别被捕获;(ii)球形颜色梯度图像组,该球形颜色梯度图像组在已经激活了布置在照明结构上的多盏灯以分别发出特定颜色时已经分别被捕获;以及(iii)照明方向,其中,OLAT图像组中的每个图像和每个球形颜色梯度图像是对象的图像,并且其中,照明方向指示灯相对于对象的相对定向;使用训练样本组来训练卷积神经网络;识别包括第二球形颜色梯度图像组和第二照明方向的测试样本;以及使用经过训练的卷积神经网络,用来自第二照明方向的照明来生成每个第二球形颜色梯度图像组中所包括的对象的重新点亮图像。在一些实施例中,训练卷积神经网络包括针对一系列训练迭代中的每个训练迭代并且针对训练样本组中的每个训练样本:生成输出预测图像,其中,输出预测图像是具有来自与训练样本相关联的照明方向的照明的与训练样本相关联的对象的表示;识别训练样本的OLAT图像组中所包括的与训练样本的照明方向对应的基准真相OLAT图像;计算指示输出预测图像与识别到的基准真相OLAT图像之间的感知差异的损失;以及基于计算出的损失来更新卷积神经网络的参数。

根据所公开的主题的一些实施例,提供了一种包含计算机可执行指令的计算机可读介质,该计算机可执行指令在被处理器执行时使处理器进行根据本文中所描述的任何方面或实施例的方法。在一些实施例中,计算机可读介质可以是非暂时性计算机可读介质。

根据所公开的主题的一些实施例,提供了一种用于使用深反射场重新照明图像的系统,该系统包括:用于识别训练样本组的装置,其中,每个训练样本包括(i)一次一灯(OLAT)图像组,该一次一灯图像组在已经激活了布置在照明结构上的多盏灯中的一盏灯时已经分别被捕获;(ii)球形颜色梯度图像组,该球形颜色梯度图像组在已经激活了布置在照明结构上的多盏灯以分别发出特定颜色时已经分别被捕获;以及(iii)照明方向,其中,OLAT图像组中的每个图像和每个球形颜色梯度图像是对象的图像,并且其中,照明方向指示灯相对于对象的相对定向;用于使用训练样本组来训练卷积神经网络的装置;用于识别包括第二球形颜色梯度图像组和第二照明方向的测试样本的装置;以及用于使用经过训练的卷积神经网络,用来自第二照明方向的照明来生成每个第二球形颜色梯度图像组中所包括的对象的重新点亮图像的装置。在一些实施例中,用于训练卷积神经网络的装置包括:针对一系列训练迭代中的每个训练迭代并且针对训练样本组中的每个训练样本:用于生成输出预测图像的装置,其中,输出预测图像是具有来自与训练样本相关联的照明方向的照明的与训练样本相关联的对象的表示;用于识别训练样本的OLAT图像组中所包括的与训练样本的照明方向相对应的基准真相OLAT图像的装置;用于计算指示输出预测图像与识别到的基准真相OLAT图像之间的感知差异的损失的装置;以及用于基于计算出的损失来更新卷积神经网络的参数的装置。

附图说明

当结合以下附图考虑时,参考对所公开的主题的以下详细描述,可以更充分地了解所公开的主题的各种目的、特征以及优点,其中,类似的附图标记表示类似的元件。

图1示出了根据所公开的主题的一些实施例的用于使用预测深反射场重新照明图像的过程的说明性示例。

图2示出了根据所公开的主题的一些实施例的用于生成用于训练网络以重新照明图像的训练样本的过程的说明性示例。

图3示出了根据所公开的主题的一些实施例的用于训练神经网络以使用预测深反射场重新照明图像的过程的说明性示例。

图4示出了根据所公开的主题的一些实施例的适合于实施本文中所描述的机制以使用预测深反射场重新照明图像的说明性系统的示意图。

图5示出了根据所公开的主题的一些实施例的可以在图4的服务器和/或用户设备中使用的硬件的详细示例。

图6示出了根据所公开的主题的一些实施例的可以训练为使用预测深反射场重新照明图像的神经网络的说明性架构的示意图。

具体实施方式

根据各种实施例,提供了用于使用预测深反射场重新照明图像的机制(其可以包括方法、系统以及介质)。

在一些实施例中,本文中所描述的机制可以使用对象的球形颜色梯度图像来生成对象的重新点亮图像。例如,可以在G.Fyffe等人于SIGGRAPH'09发表的“来自梯度光照照片的基于余弦波瓣的重新照明(Cosine Lobe Based Relighting from GradientIllumination Photographs)”中找到球形颜色梯度图像的其它细节。在一些实施例中,可以使用布置在照明结构(诸如球形穹顶)上的灯组(例如两百盏灯、三百盏灯等)来捕获球形颜色梯度图像,并且该灯组分别被编程为发出特定颜色和密度的光。在一些实施例中,本文中所描述的机制可以使用对象的相对较少数量(例如两个和/或任何其它合适的数量)的球形颜色梯度图像,在具有来自相对于对象的指定照明方向的照明的照明环境中生成对象的图像,因此与当前方法相比在计算上不太密集。应注意,在一些实施例中,对象可以是任何合适的对象,诸如人的一部分(例如脸部和/或任何其它合适的部分)、动物、植物和/或任何其它合适的对象。另外,应注意,由于在短时间内可以捕获对象的少量球形颜色梯度图像,因此通过将对象的相对较少数量的球形颜色梯度图像用作输入,本文中所描述的机制可以在不需要对象长时间坐着或保持静止的情况下生成对象的重新点亮图像。因此,本文中所描述的机制可以与移动或动态对象以及静止对象一起使用。

本文中所描述的机制可以使用经过训练的神经网络,使用对象的球形颜色梯度图像来生成对象的重新点亮图像,该经过训练的神经网络已经被训练为使用球形颜色梯度图像来学习完整的4D反射场。特别地,可以使用已经被全部激活的照明结构的灯组捕获的球形颜色梯度图像和使用已经被单独激活的照明结构的每盏灯捕获的一次一灯(OLAT)图像组两者来训练神经网络。然后,可以训练神经网络以使用球形颜色梯度图像用从特定照明方向发出的光来重建特定OLAT图像。例如,在一些实施例中,可以训练神经网络重建与相对于对象位于特定定向处的特定灯对应的OLAT图像,该特定定向与特定照明方向(例如从位于特定球形坐标处和/或任何其它合适的位置处的光源发出的照明)对应。应注意,在训练之后,神经网络可以用于仅使用球形颜色梯度图像来生成对象的重新点亮图像。也就是说,通过在训练期间使用球形颜色梯度图像和OLAT图像来学习OLAT图像到特定照明方向的映射,神经网络可以仅使用球形颜色梯度图像来生成重新点亮图像。应注意,下文在图3和图6中示出并且结合图3和图6描述了用于训练神经网络的更详细的技术。

在一些实施例中,可以以任何合适的方式捕获球形颜色梯度图像和OLAT图像。例如,在一些实施例中,可以使用由布置在照明结构(例如球形穹顶、照明臂和/或任何其它合适类型的照明结构)上的灯组中的任何一个生成的照明环境来捕获球形颜色梯度图像和OLAT图像。作为更具体的示例,如下文结合图2所描述,球形颜色梯度图像可以分别具有通过以特定强度和颜色激活照明结构的每盏灯而生成的照明环境。作为另一更具体的示例,如下文结合图2所描述,OLAT图像可以分别具有通过激活照明结构的单盏灯而生成的照明环境。应注意,在一些实施例中,每个图像可以由具有对象的任何合适的视点的任何合适的相机捕获。

应注意,在一些实施例中,每个OLAT图像可以与照明结构的特定灯相对应,该特定灯与所激活的特定照明方向相对应。在一些实施例中,重新点亮图像可以是具有照明环境的图像,该照明环境与具有同OLAT图像中的一个相匹配的照明方向的灯相对应。例如,在特定OLAT图像与具有特定球形坐标(例如(r,30°,60°)和/或任何其它合适的球形坐标)的光源对应的情况下,重新点亮图像可以是在相同的球形坐标下用光源点亮的对象的图像。另外或可替代地,在一些实施例中,重新点亮图像可以是具有照明环境的图像,该照明环境与具有不包括在训练神经网络期间使用的OLAT图像中的任何一个中的照明方向的灯对应。也就是说,在一些实施例中,可以将神经网络训练成使得神经网络可以在训练期间使用的OLAT图像中所包括的照明方向之间进行内插。另外,应注意,在一些实施例中,在训练神经网络期间使用的图像(例如OLAT图像和/或球形颜色梯度图像)可以从分别具有对象的特定视点的相机组中的相机捕获。例如,在一些实施例中,在训练期间使用的图像可以从分别相对于对象具有不同定向的五个相机中的一个捕获。在一些实施例中,可以使用从不用于捕获训练图像的相机捕获到的对象的球形颜色梯度图像来生成由经过训练的神经网络生成的重新点亮图像。也就是说,在一些实施例中,神经网络可以在训练期间学习概括视点。

转向图1,根据所公开的主题的一些实施例示出了用于使用预测深反射场重新照明图像的过程的说明性示例100。在一些实施例中,过程100的框可以在任何合适的设备(诸如服务器、桌上型计算机、膝上型计算机和/或任何其它合适的设备)上进行。在一些实施例中,可以使用多个设备来进行过程100的框。

过程100可以通过识别训练样本组而从102处开始。在一些实施例中,每个训练样本可以包括在不同照明条件下对象的图像组。例如,在一些实施例中,图像组可以包括使用照明结构的灯组(例如布置在球形穹顶上的灯、布置在照明臂上的灯和/或任何其它合适的类型的照明结构)捕获的对象的图像。作为更具体的示例,在一些实施例中,图像组可以包括OLAT图像组,其中,每个OLAT图像是在激活了照明结构的灯组中的一盏灯的情况下捕获到的。在一些这种实施例中,OLAT图像组可以包括任何合适的数量的OLAT图像(例如一百个、两百个、三百个、四百个和/或任何其它合适的数量)。应注意,在一些实施例中,OLAT图像组中的OLAT图像的数量可以与照明结构上的灯的数量对应。例如,在照明结构上存在三百盏灯的情况下,在OLAT图像组中可以存在三百个OLAT图像。作为另一更具体的示例,在一些实施例中,图像组可以包括球形颜色梯度图像组。在一些实施例中,球形颜色梯度图像组可以包括任何合适的数量的球形颜色梯度图像(例如两个、三个、四个和/或任何其它合适的数量)。在一些实施例中,球形颜色梯度图像可以是使用照明结构的灯中的任何一个捕获的对象的图像,这些灯可以分别被编程为具有任何合适的颜色(例如任何合适的RGB颜色值和/或任何其它合适的颜色)和/或强度。

应注意,在一些实施例中,与特定训练样本相关联的图像组可以从具有对象的相同视点的相机捕获。例如,在一些实施例中,可以使用相对于对象具有相同定向的相机来分别捕获OLAT图像组和球形颜色梯度图像组。另外,应注意,在一些实施例中,与不同训练样本对应的图像组可以由具有对象的不同视点的不同相机捕获。例如,在一些实施例中,可以使用相对于对象位于特定位置处的第一相机来捕获与第一训练样本对应的第一图像组,并且可以使用相对于对象位于不同位置处的第二相机来捕获与第二训练样本对应的第二图像组。作为更具体的示例,在照明结构为球形穹顶的情况下,第一相机可以直接位于对象的前方,而第二相机可以位于对象的侧面。应注意,在一些实施例中,分别位于任何合适的位置处的任何合适的数量的相机可以用于捕获与训练样本相关联的图像。另外,应注意,训练样本组可以包括任何合适的数量的对象(例如五个、十个、二十个和/或任何其它合适的数量)的图像。在一些实施例中,对象可以与任何合适的实体(诸如人类、人脸、动物、物体(例如植物、家具等)和/或图像的任何其它合适的对象)对应。

应注意,下文结合图2更详细地描述了用于捕获与每个训练样本相关联的图像的技术。

在一些实施例中,过程100可以以任何合适的方式识别训练样本组。例如,在一些实施例中,过程100可以访问图像数据库并且可以基于检索到的图像来构建训练样本组。应注意,在一些实施例中,过程100可以使用检索到的图像来构建训练样本组和验证样本组。在一些这种实施例中,验证样本组可以与训练样本组相似,但是可以在训练神经网络期间被忽视,如下文结合框104所描述。另外,应注意,在一些实施例中,训练样本组可以包括全部使用相同相机组捕获的图像。在一些这种实施例中,可以将验证样本组构建为包括用不包括在样本组中的相机捕获的图像,这些相机用于捕获训练样本组中所包括的图像。

在104处,过程100可以训练神经网络以使用训练样本来生成用来自所指示的照明环境的照明重新点亮的对象的图像。在一些实施例中,可以训练神经网络以拍摄对象的任何合适的图像作为输入,并且生成使用所指示的照明环境重新点亮的对象的图像作为输出。例如,在一些实施例中,可以训练过程100以拍摄对象和所指示的照明环境(例如来自特定方向的特定颜色的照明,和/或任何其它合适的照明环境)的球形颜色梯度图像作为输入,并且产生使用所指示的照明环境重新点亮的对象的图像作为输出。

在一些实施例中,神经网络可以具有任何合适的类型的架构。例如,在一些实施例中,神经网络可以是编码器-解码器网络。作为更具体的示例,在一些实施例中,神经网络可以是U-Net卷积神经网络,该卷积神经网络使用编码器路径(其包括任何合适的数量的编码器层)来迭代地生成与同每个训练样本对应的图像相关联的特征图并且使用对应的解码器路径(具有与编码层数对应的解码层数),该解码器路径使用由编码器层生成的特征图来生成输出图像。应注意,下文在图6中示出并且结合图6描述了诸如U-Net架构的示例。另外,应注意,下文在图3中示出并且结合图3描述了用于训练神经网络的详细技术。

在106处,过程100可以使用经过训练的神经网络,将使用球形梯度照明和所指示的照明环境拍摄的对象的图像用作输入来生成对象的重新点亮图像。在一些实施例中,所指示的照明环境可以与任何合适的照明环境对应。例如,在一些实施例中,所指示的照明环境可以包括来自相对于对象的特定方向的一盏或多盏灯。应注意,在一些实施例中,可以以任何合适的方式指示灯的位置,例如使用相对于球形照明穹顶的中心的球形坐标、使用相对于对象的位置的球形坐标和/或以任何其它合适的方式。应注意,在一些实施例中,一盏或多盏灯的每个照明方向可以与同训练样本中所包括的OLAT图像相关联的灯的特定灯位置对应。可替代地,在一些实施例中,照明方向可以是不包括在OLAT图像中的方向。例如,在训练样本中所包括的OLAT图像组包括具有球形坐标(5、30°、65°)处的灯的第一OLAT图像和具有球形坐标(5,35°,65°)处的灯的第二OLAT图像的情况下,神经网络可以生成输出图像,该输出图像具有内插于两个OLAT图像(例如具有球形坐标(5,32°,65°),和/或任何其它合适的内插坐标)之间的照明方向。另外,应注意,在一些实施例中,所指示的照明环境可以包括多盏灯的叠加,该多盏灯分别具有所指示的照明方向(这些灯中的每一盏灯可以与训练样本中的OLAT图像对应或可以是内插于训练样本中的OLAT图像之间的方向)。在一些实施例中,照明环境还可以例如使用RGB值和/或以任何其它合适的方式指示一盏或多盏灯中的每盏灯的颜色。

应注意,在一些实施例中,可以以任何合适的方式存储所生成的图像。例如,在一些实施例中,可以将所生成的图像与关联于所生成的图像的信息(诸如指示重新点亮对象以生成所生成的图像的照明环境的信息)相关联地存储为新图像。另外或可替代地,在一些实施例中,可以以任何合适的方式呈现所生成的图像。例如,在一些实施例中,可以在用户界面(诸如呈现于用户设备上的用户界面,在框106处,从该用户设备发起使用经过训练的神经网络来生成重新点亮图像)中呈现所生成的图像。

转向图2,根据所公开的主题的一些实施例示出了用于生成用于训练神经网络以生成重新点亮图像的训练样本的过程的说明性示例200。在一些实施例中,过程200的框可以由任何合适的设备进行。例如,在一些实施例中,过程200的框可以由设备(诸如控制照明结构的灯的桌上型计算机或膝上型计算机和/或适合于从任何合适的视点捕获图像的一个或多个相机)处理。在一些实施例中,可以将在执行过程200的框期间捕获的图像存储在执行过程200的设备上。另外或可替代地,在一些实施例中,可以将在执行过程200的框期间捕获的图像传输到不同设备(例如存储图像数据库的服务器和/或任何其它合适的服务器)以进行存储。

过程200可以通过捕获特定图像对象的一系列OLAT图像而从202开始。在一些实施例中,可以使用布置在任何合适的照明结构上的灯来捕获OLAT图像。例如,在一些实施例中,照明结构可以是球形穹顶,在球形穹顶上的任何合适的位置处布置有任何合适的数量(例如一百盏、两百盏、三百盏、四百盏等)的灯。在一些这种实施例中,球形穹顶可以具有任何合适的直径(例如3.5米、4米和/或任何其它合适的直径)。作为另一示例,在一些实施例中,照明结构可以是可以移动到不同位置的照明臂。应注意,在一些实施例中,灯可以是任何合适的类型的灯。例如,在一些实施例中,灯可以是分别被编程为具有任何合适的RGB值的LED灯。作为另一示例,在一些实施例中,灯可以是钨丝灯。应注意,在一些实施例中,每盏灯可以由驱动器控制,这可以使灯发出具有所指示的强度和/或颜色的光。

在一些实施例中,当激活照明结构的一盏灯但未激活照明结构的其它灯时,可以捕获该系列OLAT图像中的每个OLAT图像。在一些实施例中,所激活的灯可以被编程为具有任何合适的颜色。例如,在一些实施例中,所激活的灯可以具有白色。作为更具体的示例,在一些实施例中,所激活的灯可以被编程为具有(255,255,255)的RGB值。在一些实施例中,可以用在照明结构上激活的不同灯来捕获该系列OLAT图像中的每个OLAT图像。例如,在一些实施例中,可以通过一次一个地迭代照明结构的灯来捕获该系列OLAT图像,其中,该系列OLAT图像中的每个图像与照明结构的不同灯的激活相对应。

在一些实施例中,每个OLAT图像可以由任何合适的相机捕获。

在一些实施例中,相机可以具有对象的任何合适的视点。也就是说,在一些实施例中,相机可以相对于对象位于任何合适的定向处。在一些实施例中,过程200可以具有访问任何合适的数量的相机(例如一个、两个、五个、十个和/或任何其它合适的数量)的权限,这些相机分别以相对于对象的不同定向定位,从而从不同视点捕获对象的图像。在一些实施例中,相机或相机组中的每个相机可以是任何合适的型号(例如索尼IMX253相机和/或任何其它合适的型号)中的任何一个。

在一些实施例中,每个相机都可能能够以任何合适的分辨率(例如10MP、12MP、15MP和/或任何其它合适的分辨率)和以任何合适的速率(例如60Hz和/或任何其它合适的速率)捕获图像。应注意,在一些实施例中,(多个)相机和照明结构的灯可以经由任何合适类型的硬件触发器同步。

在204处,过程200可以捕获在激活了照明结构的所有灯的情况下拍摄的追踪帧图像。在一些实施例中,通过激活照明结构的所有灯,可以用均匀光照捕获对象的图像。

在一些实施例中,可以以任何合适的方式使用追踪帧图像来补偿对象在连续OLAT图像之间的移动,如上文结合框202所描述。例如,在一些实施例中,可以在已经捕获到OLAT图像的子集之后捕获追踪帧图像。然后,过程200可以循环回到框202以捕获OLAT图像的第二子集并且可以继续迭代经过框202和204,直到已经捕获所有OLAT图像为止。作为更具体的示例,在照明结构上存在331盏灯,因此将要捕获331个OLAT图像的情况下,过程200可以在捕获11个OLAT图像之后捕获追踪帧图像,并且可以在每隔11个OLAT图像之后循环通过框202和204。

在一些实施例中,可以以任何合适的方式使用追踪帧来计算对象在跨所有OLAT图像中的对应性。例如,在一些实施例中,在捕获到所有OLAT图像之后,过程200可以指定最终追踪帧(也就是说,最新捕获到的追踪帧图像)作为参考,然后可以使用任何合适的方法或(多个)技术来计算跨追踪帧的密集光流场。在一些实施例中,然后,过程200可以通过时间线性地内插光流场以提供跨OLAT图像的对应性。应注意,在一些实施例中,可以在任何合适的时间点提供跨OLAT图像中的对应性,诸如在已经捕获所有OLAT图像之后的时间点、在开始训练神经网络之前(如下文结合图3所描述)和/或在任何其它合适的时间点。

在206处,过程200可以使用照明结构的灯来捕获球形颜色梯度图像。在一些实施例中,过程200可以捕获任何合适的数量的球形颜色梯度图像(例如一个、两个、五个和/或任何其它合适的数量)。在一些实施例中,过程200可以相对于对象以任何合适的定向使用相机来捕获球形颜色梯度图像。例如,在一些实施例中,可以使用与用于在框202处捕获OLAT图像和/或在框204处捕获追踪帧图像的相机相同的相机(并且因此具有对象的相同视点)来捕获球形颜色梯度图像。

在一些实施例中,可以用被编程为具有任何合适的(多种)颜色的照明结构的灯捕获球形颜色梯度图像。例如,在一些实施例中,照明结构的每盏灯可以被编程为基于灯在照明结构上的相对位置来发出颜色。作为更具体的示例,在捕获两个球形颜色梯度图像的情况下,针对方向向量为θ的灯(其中,θx是方向向量θ的x分量,其中,θy是方向向量θ的y分量,并且其中,θz是方向向量θ的z分量),灯可以被编程为针对两个球形颜色梯度图像中的第一个发出具有以下RGB值的灯颜色:

((1+θx)/2,(1+θy)/2,(1+θz)/2),

并且针对两个球形颜色梯度图像中的第二个发出具有以下RGB值的灯颜色:

((1-θx)/2,(1-θy)/2,(1-θz)/2)。

应注意,在一些实施例中,可以选择用于捕获球形颜色梯度图像的灯的灯模式以满足任何合适的准则。例如,在一些实施例中,灯可以被编程为针对每个球形颜色梯度图像发出颜色,使得当合计时,灯模式产生显示对象的总反射(也就是说,漫反射加上镜面反射)的全开白光条件,并且使得球形颜色梯度图像的差异将平均反射率方向编码为RGB颜色通道(其可以是针对表面法线的强烈提示)。另外,在一些实施例中,差图像相对于和图像的大小不仅可以是双向反射分布函数(BRDF)的函数,而且还可以是局部自遮蔽,其可以向遮蔽估计提供提示。在一些实施例中,在捕获球形颜色梯度图像期间使用的灯模式可以向神经网络提供几何和反照率信息两者。

转向图3,根据所公开的主题的一些实施例示出了用于训练神经网络以使用深反射场生成对象的重新点亮图像的过程的说明性示例300。在一些实施例中,过程300的框可以在任何合适的设备上或设备的任何合适的组合上执行。例如,在一些实施例中,过程300的框可以在任何合适的数量(例如一个、五个、十个、十二个和/或任何其它合适的数量)的图形处理单元(GPU)上执行。

过程300可以通过识别训练样本组开始,其中,每个训练样本包括对象的图像组。如上文结合图1和图2所描述,与一个训练样本对应的对象的图像组可以包括任何合适的图像,诸如用如上文结合框202所描述的用激活的照明结构的不同灯捕获的一系列OLAT图像、如上文结合框206所描述的一系列球形颜色梯度图像和/或任何其它合适的图像。在一些实施例中,与一个训练样本对应的图像组中的每个图像可以从相同相机捕获并且因此可以具有与对象相同的定向。应注意,在一些实施例中,不同训练样本可以与不同对象对应并且可以与相对于对象从不同定向捕获的图像相关联。在一些实施例中,过程300可以以任何合适的方式识别训练样本组。例如,在一些实施例中,过程300可以从图像数据库中检索与每个训练样本对应的图像组。应注意,在一些实施例中,与训练样本组相关联的每个图像可以具有任何合适的大小(例如2560个像素×3072个像素,和/或任何其它合适的大小)。

在302处,过程300可以针对与训练样本相关联的每个图像生成剪裁图像。在一些实施例中,每个剪裁图像可以具有任何合适的大小(例如512个像素×512个像素,和/或任何其它合适的大小)。在一些实施例中,过程300可以以任何合适的方式生成与训练样本相关联的每个图像对应的剪裁图像。例如,在一些实施例中,过程300可以识别与训练样本相关联的图像内的随机像素位置,并且可以将与训练样本相关联的图像中的每一个剪裁为以所识别的随机像素位置为中心的剪裁图像大小。

应注意,在一些实施例中,过程300可以识别与训练样本相关联的图像组的任何合适的子集,并且过程300可以剪裁图像组的所识别的子集中的图像。例如,在一些实施例中,过程300可以剪裁球形颜色梯度图像中的任何一个(例如,所有球形颜色梯度图像和/或球形颜色梯度图像的任何合适的子集)。作为另一示例,在一些实施例中,过程300可以识别OLAT图像的任何合适的子集,并且过程300可以剪裁OLAT图像的所识别的合适子集中的OLAT图像。在一些这种实施例中,可以以任何合适的方式识别OLAT图像的子集。例如,在一些实施例中,可以随机选择OLAT图像的子集。在一些实施例中,OLAT图像的子集可以包括任何合适数量的OLAT图像(例如五个、十个、二十个和/或任何其它合适的数量)。在一些实施例中,OLAT图像的子集中的OLAT图像的数量可以基于执行过程300的GPU的数量。例如,在使用12个GPU来执行过程300的情况下,过程300可以从OLAT图像组中选择12个OLAT图像。

在306处,过程300可以识别照明方向。在一些实施例中,可以以任何合适的方式识别照明方向。例如,在一些实施例中,过程300可以识别随机照明方向。作为更具体的示例,在一些实施例中,过程300可以识别与同任何合适的球形坐标相关联的球体上的位置对应的随机照明方向。应注意,在一些实施例中,照明方向可以另外地指示光源与对象的距离。也就是说,在一些实施例中,照明方向可以用球形坐标指示为其中r指示灯与对象的距离,并且θ和用角坐标指示灯与对象的相对定向。另外地,应注意,在一些实施例中,照明方向可以是与同OLAT图像中的一个相关联的光源对应的方向和/或距离。此外,在304处识别OLAT图像的子集的情况下,照明方向可以与同OLAT图像的子集中的OLAT图像相关联的光源的方向和/或距离对应。

在308处,过程300可以将在框304处生成的剪裁图像和在框306处识别到的照明方向用作对神经网络的输入。

应注意,在一些实施例中,神经网络可以具有任何合适的架构。例如,在一些实施例中,神经网络可以是卷积神经网络(CNN)。作为更具体的示例,在一些实施例中,神经网络可以是U-Net卷积神经网络。在一些实施例中,U-Net架构可以具有包括一系列编码器层的编码器路径以及具有连接至编码器路径的一系列解码器层的解码器路径。在一些这种实施例中,U-Net架构可以使用编码器路径来迭代地生成与输入图像对应的一系列特征图。然后,U-Net架构可以使用解码器路径来使用该系列解码器层重建具有不同照明方向(例如在框306处识别到的照明方向)的输入图像。应注意,下文结合图6示出和描述了用于使用U-Net架构的更详细的技术。

在310处,过程300可以用来自所指示的照明方向的照明生成与剪裁图像中所包括的图像的区域对应的输出图像。例如,在每个剪裁图像示出了对象的脸部的特定部分(例如对象的嘴部、对象的鼻子、对象的肩部等)的情况下,输出图像可以与对象的脸部的相同部分对应,并且可以用与输入中所指示的照明方向对应的照明来点亮,如上文结合框308所描述。

在一些实施例中,过程300可以以任何合适的方式并且使用任何合适的(多个)技术来生成输出图像。例如,在神经网络是U-Net卷积神经网络的情况下,过程300可以使用U-Net卷积神经网络的编码器层来迭代地生成与输入图像对应的连续特征图。在一些实施例中,在迭代通过U-Net卷积神经网络的所有编码器层之后,过程300可以使用由U-Net卷积神经网络的编码器生成的特征图来遍历U-Net卷积神经网络的一系列解码器层。在一些实施例中,U-Net卷积神经网络的最终解码器可以生成输出图像,该输出图像是从所指示的照明方向点亮的输入图像的再现。

转向图6,根据所公开的主题的一些实施例示出了可以用于使用深反射场生成重新点亮图像的U-Net架构的说明性示例600。应注意,架构600示出了可以在推断时间处使用的架构的说明性示例,也就是说,在架构600中所示出的神经网络已经被训练为生成用于输入测试图像的输出图像之后。然而,如下文所描述,相同架构可以用于训练神经网络。应注意,图6中所示出的图像大小可以与在推断时间期间(例如在已经训练了网络之后)使用的图像(也就是说,未经剪裁的图像)的大小相对应。尽管可以在训练神经网络期间使用架构600,但在一些实施例中,训练图像可以具有较小尺寸(也就是说,剪裁大小,如上文结合图3的框304所描述)。

架构600可以接收一系列图像和照明方向作为输入,如图6所示。例如,输入可以包括球形颜色梯度图像组和OLAT图像组,如上文结合图3的框302和304所述。应注意,在一些实施例中,每个图像可以是任何合适的大小W×H。另外地,应注意,在一些实施例中,照明方向可以作为RGB值附加到球形颜色梯度图像的每个像素。因此,在使用两个球形颜色梯度图像的情况下(如上文结合图2的框206所描述),两个球形颜色梯度图像可以与照明方向组合以生成为大小为W×H×9的张量。也就是说,每个球形颜色梯度的每个像素都可以与该像素的RGB值相关联,使得两个球形颜色梯度图像中的每个分别具有W×H×3的大小,并且照明方向可以附加到球形颜色梯度图像的每个像素,其中照明方向本身被指定为每个像素的RGB通道值。应注意,针对在推断时间处使用经过训练的神经网络时的测试图像,图像可以分别具有第一宽度和高度(例如2560个像素×3072个像素,如图6所示)。然而,在训练神经网络期间,每个图像可以是不同的较小大小(例如512个像素×512个像素,和/或任何其它合适的剪裁大小)的剪裁图像。另外,应注意,如图6中所示的输入仅示出照明方向和球形颜色梯度图像,这是由于这些是由经过训练的神经网络在推断时间处使用的输入。在训练神经网络期间,网络可以另外采用OLAT图像或OLAT图像的所识别的子集作为输入,如上文结合图2的框202和图3的框302和304所述。

如图6所示,架构600可以具有编码器路径602。在一些实施例中,编码器路径602可以包括一系列编码器层。例如,架构600示出了编码器路径602中的八个编码器层。在一些实施例中,每个编码器层可以采用图像作为输入并且可以生成图像的特征图。在一些实施例中,所生成的特征图然后可以变成馈送到下一个编码器层的输入图像。在一些实施例中,输入图像的每个所生成的特征图可以相对于到编码器层的输入具有更小的宽度和高度,但相对于到编码器层的输入具有更多数量的通道(例如更大的深度)。例如,如图6所示,第一编码器层可以采用大小为2560×3072的输入图像并且可以生成大小为1280×1536的特征图。

如图6所示,架构600可以具有解码器路径612。在一些实施例中,解码器路径612可以包括一系列解码器层。在一些实施例中,解码器路径612中所包括的解码器层的数量可以与编码器路径602中所包括的编码器层的数量相同。例如,如图6所示,存在解码器路径612中所包括的八个解码器层。在一些实施例中,每个解码器层可以接收特征图作为输入,并且生成在大小上大于输入特征图的大小的输出图像。例如,如图6所示,编码器层可以接收大小为1280×1536的特征图作为输入,并且可以生成大小为2560×3072的图像作为输出。

应注意,在一些实施例中,通过使输入图像组通过该系列编码器层,神经网络可以学习在图像中表示的特征,并且通过使特征图通过该系列解码器层,神经网络可以学习使用特征图来重建图像,但具有在输入中所指示的照明方向。

在一些实施例中,编码器路径602中的每个编码器层可以具有卷积块604、整流器块606、归一化块608以及最大池化块610。

在一些实施例中,卷积块604可以包括将任何合适的大小(例如3×3,和/或任何其它合适的大小)的任何合适的卷积核应用于编码器层的输入处的图像。应注意,在一些实施例中,在训练神经网络期间随着损失函数的优化,可以改变在每个卷积块处应用的卷积核,如下文结合框312所述。

在一些实施例中,整流器块606可以包括将任何合适的整流器函数或激活函数应用于卷积块604的输出。在一些实施例中,可以使用任何合适类型的整流器或激活函数,诸如softplus整流器、半波整流器、逻辑整流器、双曲正切激活函数、整流线性单元(ReLU)激活函数、泄漏ReLU激活函数和/或任何其它合适类型的整流器或激活函数。

在一些实施例中,归一化块608可以对整流器块606的输出进行任何合适的归一化。例如,在一些实施例中,归一化块608可以将像素值归一化到任何合适的范围内。在一些实施例中,归一化可以是跨与训练样本相关联的所有图像的批量归一化。

在一些实施例中,最大池化块610可以在归一化块608的输出处池化图像内的值以对图像进行下采样。在一些实施例中,可以以任何合适的方式并使用任何合适大小的块来进行最大池化。例如,在一些实施例中,可以将2×2核应用于图像块,其中,选择每个2×2块中的最大值作为输出值,从而对图像进行下采样并且相对地选择要保留在输出特征图中的重要特征。

在一些实施例中,解码器路径612的解码器层可以包括卷积块614、整流器块616、归一化块618以及上采样块620。在一些实施例中,卷积块614、整流器块616以及归一化块618可以分别与卷积块604、整流器块606以及归一化块610相似。

在一些实施例中,上采样块620可以采用特征图作为输入并且可以生成相对于输入特征图的大小的更大大小的图像。例如,如图6所示,上采样块620可以采用大小为160×192的特征图作为输入,并且可以生成大小为320×384的图像作为输出。在一些实施例中,上采样块620可以以任何合适的方式并且使用任何合适的上采样技术来进行上采样。例如,在一些实施例中,上采样块620可以使用双线性上采样。在一些实施例中,可以使用任何其它合适的上采样技术,诸如转置卷积(例如使用2×2卷积核,和/或任何其它合适的卷积核)、解池化、内插(例如双线性内插、三次内插、最近邻内插和/或任何其它合适的内插),和/或任何其它合适的上采样技术。

应注意,如图6所示,上采样块620的输出可以使用跳接622与来自相同深度的编码器层的特征图级接。在一些实施例中,通过将特征图从编码器层传播到对应深度的解码器层,解码器层能够使用由编码器层在对应深度处生成的特征图。

再次参照图3,在312处,过程300可以基于在框310处生成的输出图像(在本文中被称为Ipred)和基准真相OLAT图像来计算损失。在一些实施例中,过程300可以通过识别与训练样本对应的图像组中所包括的OLAT图像来识别基准真相OLAT图像(在下文中被称为IGT),与训练样本对应的图像组是由用来自与在框306处识别的照明方向对应的方向的灯拍摄的。例如,如果神经网络的当前运行具有在与球形坐标(3.5,30°,60°)相关联的灯的框306处识别的照明方向,那么过程300可以识别具有相同照明方向的OLAT图像。

在一些实施例中,过程300可以计算指示特征空间中Ipred与IGT之间的差异的损失(也就是说,并非计算逐像素差异)。例如,可以将损失定义为:

其中,Perc()指示感知特征空间。

在一些实施例中,损失函数L可以进一步分成两个损失分量Lpre-trained和Lspecific。在一些实施例中,两个损失分离可以被组合为:

L=Lpre-trained+λLspecific

其中,λ可以是任何合适的值(例如0.5,和/或任何其它合适的值)的权重。在一些实施例中,Lpre-trained和Lspecific可以基于不同的图像细节来指示损失,或Ipred与IGT之间的差异。例如,在一些实施例中,Lpre-trained可以基于与图像相关联的第一类型的特性或信息(诸如纹理信息),和/或任何其它合适类型的图像特性或信息来指示损失。作为另一示例,在一些实施例中,Lspecific可以基于与图像相关联的第二类型的特性或信息(诸如,镜面反射(specularity)),和/或任何其它合适类型的图像特性或信息来指示损失。注意,在一些实施例中,Lpre-trained可以基于相对于由Lspecific表示的损失的相对较低的频率细节来指示损失。

在一些实施例中,可以使用在本文中被称为损失网络的经过训练的卷积神经网络(例如,VGG网络和/或任何其它合适的网络)来确定Lpre-trained和Lspecific中的每一个。在一些实施例中,可以使用经过训练的损失网络的激活层来计算损失(例如Lpre-trained或Lspecific)。例如,在一些实施例中,可以使用任何合适的训练图像来训练损失网络。在训练损失网络之后,可以通过在每个经过训练的损失网络的不同激活层处计算Ipred与IGT之间的特征空间差异的L2范数来计算特定Ipred的损失。应注意,在一些实施例中,如上文所描述,Ipred和IGT中的每一个可以是OLAT图像。在一些实施例中,可以针对每个经过训练的损失网络使用任何合适的数量的激活层(例如五个和/或任何其它合适的数量),并且这些激活层可以以任何合适的方式(例如加权和,和/或以任何其它合适的方式)组合。另外,应注意,在一些实施例中,可以以任何合适的方式(例如通过特征长度,和/或以任何其它合适的方式)重新按比例缩放激活以确保每个激活层以相同方式对最终损失做出贡献。

在一些实施例中,可以使用任何合适的图像数据库(例如ImageNet,和/或任何其它合适的图像数据库)来预先训练用于计算Lpre-trained的损失网络以计算Ipred与IGT之间的感知损失。在一些实施例中,用于计算Lpre-trained的损失网络可以使用VGG架构和/或具有任何合适数量的卷积层的任何其它合适的卷积神经网络架构。

在一些实施例中,用于计算Lspecific的损失网络可以具有任何合适的架构,诸如VGG架构和/或具有任何合适数量的卷积层的任何其它合适的卷积神经网络架构。在一些实施例中,可以使用可用于使高频细节(诸如镜面反射)回归的任务来训练用于计算Lspecific的损失网络。例如,在一些实施例中,可以通过将来自基准真相OLAT图像IGT的随机选择的补丁用作输入来训练用于计算Lspecific的损失网络,其中,训练模型以确定哪个光方向生成了输入补丁。在一些实施例中,可以训练损失网络以使L2损失或L1损失最小化。应注意,在一些实施例中,使L1损失最小化可以为图像到图像转换任务产生更锐利的结果。

应注意,在一些实施例中,可以以任何合适的方式将IGT和Ipred对准以防止两个图像之间的轻微像素未对准导致损失计算复杂化。在一些实施例中,任何合适的对准技术可以用于将IGT和Ipred对准。例如,在一些实施例中,可以将在x和y方向上的偏移(在本文中被称为x′和y′)计算为:

x′,y′=argmin x,y∑uv||Igt(u-x,v-y)-Ipred(u,v)||1

在一些实施例中,I(u,v)可以指示针对某个像素位置(u,v)的强度值。在一些实施例中,可以在任何合适的窗口(例如,[-20,20]×[-20,20]窗口,和/或任何其它合适的窗口)中对偏移x和y进行采样。在一些实施例中,偏移x'和y'可以用于生成对准的基准真相图像,在一些实施例中,如上文所描述,然后可以使用对准的基准真相图像来计算损失(例如Lspecific和/或Lpretrained)。

再次参照图3,过程300可以基于计算出的损失来更新任何合适的权重或参数以使损失函数最小化,并且可以循环回到框304并且可以为新训练样本生成剪裁图像。

应注意,过程300可以使用任何合适的技术或技术的组合来优化损失函数。例如,在一些实施例中,过程300可以使用任何合适的优化器(例如ADAM,和/或任何其它合适的优化器)。作为另一示例,在一些实施例中,过程300可以使用任何合适的学习速率(例如1e-4,和/或任何其它合适的学习速率)。在一些实施例中,过程300可以通过任何合适数量的迭代(例如1e6次迭代,和/或任何其它合适的数量)以任何合适的衰减(例如0.1,和/或任何其它合适的衰减)使用学习速率的指数衰减。在一些实施例中,可以优化神经网络以在训练收敛之前执行任何合适数量的迭代。

转向图4,示出了可以根据所公开的主题的一些实施例使用的用于使用预测深反射场重新照明图像的硬件的说明性示例400。如所图示的,硬件400可以包括服务器402、通信网络404和/或一个或多个用户设备406,诸如用户设备408和410。

服务器402可以是用于存储信息、数据、程序和/或任何其它合适类型的内容的任何合适的(多个)服务器。在一些实施例中,服务器402可以进行任何合适的功能。例如,在一些实施例中,服务器402可以用于训练神经网络以使用预测深反射场重新照明图像,如上文结合图1和图3所描述。作为另一示例,在一些实施例中,服务器402可以用于生成任何合适的训练样本以供神经网络使用,如上文结合图2所描述。应注意,在一些实施例中,服务器402可以存储被用于在不同设备上训练神经网络的图像。在一些这种实施例中,服务器402可以以任何合适的方式将用于训练神经网络的图像传输到设备。

在一些实施例中,通信网络404可以是一个或多个有线和/或无线网络的任何合适的组合。例如,通信网络404可以包括互联网、内联网、广域网(WAN)、局域网(LAN)、无线网络、数字用户线(DSL)网络、帧中继网络、异步传输模式(ATM)网络、虚拟专用网络(VPN)和/或任何其它合适的通信网络中的任何一个或多个。用户设备406可以通过一个或多个通信链路(例如通信链路412)连接到通信网络404,该通信网络404可以经由一个或多个通信链路(例如通信链路414)链接到服务器402。通信链路可以是适合于在用户设备406和服务器402之间传送数据的任何通信链路,诸如网络链路、拨号链路、无线链路、硬连线链路、任何其它合适的通信链路或这种链路的任何合适的组合。

用户设备406可以包括适合于训练神经网络以重新点亮图像、适合于使用经过训练的神经网络来生成重新点亮图像、将指令传输到服务器(例如上文所描述的服务器402)以使用服务器训练神经网络,和/或将指令传输到服务器以使用经过训练的神经网络来生成重新点亮图像的任何一个或多个用户设备。例如,在一些实施例中,用户设备406可以执行如上文在图1至图3中所示并且结合图1至图3所描述的过程100、200以及300的框中的任何一个。作为另一示例,在一些实施例中,用户设备406可以将指令传输到服务器402以进行上文结合图1和图3所述功能中的任何一种。在一些实施例中,用户设备406可以包括任何合适类型的设备。例如,在一些实施例中,用户设备406可以包括桌上型计算机、膝上型计算机、移动电话、平板计算机和/或任何其它合适类型的用户设备。

尽管将服务器402图示为一个设备,但在一些实施例中,可以使用任何合适数量的设备来进行由服务器402进行的功能。例如,在一些实施例中,多个设备可以被用于实施由服务器402进行的功能。

尽管在图4中示出了两个用户设备408和410以避免使图复杂化,但在一些实施例中,可以使用任何合适数量的用户设备和/或任何合适类型的用户设备。

在一些实施例中,可以使用任何合适的硬件来实施服务器402和用户设备406。例如,在一些实施例中,可以使用任何合适的通用计算机或专用计算机来实施设备402和406。例如,可以使用专用计算机来实施移动电话。任何这种通用计算机或专用计算机可以包括任何合适的硬件。例如,如图5的示例硬件500中所图示,这种硬件可以包括硬件处理器502、存储器和/或存储504、输入设备控制器506、输入设备508、显示器/音频驱动器510、显示器和音频输出电路系统512、(多个)通信接口514、天线516以及总线518。

在一些实施例中,硬件处理器502可以包括任何合适的硬件处理器,诸如微处理器、微控制器、(多个)数字信号处理器、专用逻辑和/或用于控制通用计算机或专用计算机的功能的任何其它合适的电路系统。在一些实施例中,硬件处理器502可以由存储在存储器和/或服务器(诸如服务器402)的存储中的服务器程序来控制。在一些实施例中,硬件处理器502可以由存储在用户设备406的存储器和/或存储504中的计算机程序控制。

在一些实施例中,存储器和/或存储504可以是用于存储程序、数据和/或任何其它合适的信息的任何合适的存储器和/或存储。例如,存储器和/或存储504可以包括随机存取存储器、只读存储器、闪存存储器、硬盘存储器、光学介质和/或任何其它合适的存储器。

在一些实施例中,输入设备控制器506可以是用于控制和接收来自一个或多个输入设备508的输入的任何合适的电路系统。例如,输入设备控制器506可以是用于接收来自触摸屏、来自键盘、来自一个或多个按钮、来自语音识别电路、来自麦克风、来自相机、来自光学传感器、来自加速度计、来自温度传感器、来自近场传感器、来自压力传感器、来自编码器和/或任何其它类型的输入设备的输入的电路系统。

在一些实施例中,显示器/音频驱动器510可以是用于控制和驱动一个或多个显示器/音频输出设备512的输出端的任何合适的电路系统。例如,显示器/音频驱动器510可以是用于驱动触摸屏、平板显示器、阴极射线管显示器、投影仪、一个或多个扬声器和/或任何其它合适的显示器和/或呈现设备的电路系统。

(多个)通信接口514可以是用于与一个或多个通信网络(例如计算机网络404)接口连接的任何合适的电路系统。例如,(多个)接口514可以包括网络接口卡电路系统、无线通信电路系统和/或任何其它合适类型的通信网络电路系统。

在一些实施例中,天线516可以是用于与通信网络(例如通信网络404)无线通信的任何合适的一个或多个天线。在一些实施例中,可以省略天线516。

在一些实施例中,总线518可以是用于在两个或更多个组件502、504、506、510以及514之间通信的任何合适的机制。

根据一些实施例,可以将任何其它合适的组件包括在硬件500中。

在一些实施例中,图1至图3的过程的上文所描述的框中的至少一些可以以任何顺序或序列执行或进行,这些顺序或序列不限于在图中示出并且结合图描述的顺序和序列。此外,可以在适当情况下基本上同时或并行地执行或进行图1至图3的上述框中的一些以减少延迟和处理时间。另外或可替代地,可以省略图1至图3的过程的一些上文所描述的框。

在一些实施例中,任何合适的计算机可读介质可以用于存储用于进行本文中的功能和/或过程的指令。例如,在一些实施例中,计算机可读介质可以是暂时性或非暂时性的。例如,非暂时性计算机可读介质可以包括诸如非暂时性形式的磁性介质(诸如硬盘、软盘和/或任何其它合适的磁性介质)、非暂时性形式的光学介质(诸如压缩盘、数字视频盘,蓝光光盘和/或任何其它合适的光学介质)、非暂时性形式的半导体介质(诸如闪存存储器、电可编程只读存储器(EPROM)、电可擦除可编程只读存储器(EEPROM)和/或任何其它合适的半导体介质)的介质、在传输期间不短暂或不具有永久性的任何合适的介质,和/或任何合适的有形介质。作为另一示例,暂时性计算机可读介质可以包括在网络上的、在导线、导体、光纤、电路、在传输期间是短暂的并且不具有永久性的任何合适的介质,和/或任何合适的无形介质中的信号。

因此,提供了用于使用预测深反射场重新照明图像的方法、系统以及介质。

尽管已经在前述说明性实施例中对本发明进行了描述和说明,但应理解,仅通过示例的方式制作了本公开,并且可以在不脱离仅由随后的权利要求书限制的本发明的精神和范围的情况下对本发明的实施方式的细节作出许多变化。可以按照各种方式来组合和重新布置所公开的实施例的特征。

28页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种匹配方法、装置、电子设备及计算机可读存储介质

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!