使用在潜在变量上调节的几何感知神经网络渲染场景的新图像的制作方法

未命名 10-08 阅读:67 评论:0

使用在潜在变量上调节的几何感知神经网络渲染场景的新图像
1.相关申请的交叉引用
2.本技术要求享有于2021年2月4日提交的美国临时专利申请序列号63/145,782的申请日的权益,并且其全部内容通过引用并入本文。
技术领域
3.本说明书涉及使用机器学习模型来处理数据。


背景技术:

4.机器学习模型接收输入并基于所接收的输入生成输出,例如预测的输出。一些机器学习模型是参数模型,并且基于所接收的输入和模型的参数值来生成输出。
5.一些机器学习模型是深度模型,其采用多层模型来为接收到的输入生成输出。例如,深度神经网络是深度机器学习模型,其包括输出层和一个或多个隐藏层,每个隐藏层将非线性变换应用于接收到的输入以生成输出。


技术实现要素:

6.本说明书描述了一种在一个或多个位置中的一个或多个计算机上实现为计算机程序的图像渲染系统,该图像渲染系统可以渲染新图像,该新图像从新相机位置处的相机的视角描绘场景。
7.在整个说明书中,“场景”可以指例如真实世界环境或模拟环境(例如,真实世界环境的模拟,例如,使得模拟环境是真实世界场景的合成表示)。
8.实体的“嵌入”可以指将实体表示为数值的有序集合,例如数值的向量、矩阵或其他张量。
9.在一个方面,描述了一种用于渲染新图像的系统和方法,该新图像从新相机位置处的相机的视角描绘场景。系统接收表征场景的多个观察,每个观察包括场景的图像,以及识别捕获场景的图像的相机的位置的数据,并且根据观察生成表示场景的潜在变量。
10.系统在表示场景的潜在变量上调节(训练的)场景表示神经网络。场景表示神经网络将场景的模型定义为三维(3d)辐射场。场景表示神经网络被配置为接收场景中的空间位置的表示和观看方向的表示,并且处理场景中的空间位置的表示、观看方向的表示和表示场景的潜在变量,以生成定义在场景中的空间位置处在观看方向上发射的辐射的输出。
11.系统通过将来自场景模型的辐射值作为3d辐射场投影到新相机位置处的相机的图像平面上来渲染从新相机位置处的相机的视角描绘场景的新图像。
12.如稍后所述,3d辐射场指定例如从场景中的每个空间位置发射的定向辐射。因此,3d辐射场可以是向量场,其将场景表示为在场景的3d空间中的3d位置处以及在3d中的方向上的辐射(发射光),例如,表示为依赖于观看方向的发射颜色,并且可选地包括如稍后描述的体积密度。
13.该模型可以被称为几何模型,因为它基于几何表示,即(3d)位置以及如辐射所暗示的方向。在实施方式中,场景表示神经网络不是简单地生成在潜在变量上调节的图像,而是基于(3d)空间位置和方向对场景建模,然后使用这些空间位置和方向来生成定义观看方向上(即,沿着观看方向)的辐射的输出。然后,该模型用于通过将辐射值投影到新相机位置处的相机的图像平面上来渲染新图像,例如,沿着光线累积或积分到相机,例如,到图像平面中的像素。这种形式的表示对场景的3d空间而不是来自任何特定视点的图像进行建模,并且因此可以保证不同视点之间的一致性以及推广到新视点。场景表示神经网络不必具有任何特定的架构;该优点来自所处理的表示的类型和所生成的输出。该方法还可以减少所需的计算和训练量,因为场景表示神经网络也不必学习如何渲染图像。
14.根据第一方面,提供了一种由一个或多个数据处理装置执行的用于渲染从新相机位置处的相机的视角描绘场景的新图像的方法,该方法包括:接收表征场景的多个观察,其中每个观察包括:(i)场景的图像,以及(ii)识别捕获场景的图像的相机的位置的数据;从表征所述场景的所述多个观察生成表示所述场景的潜在变量;在表示场景的潜在变量上调节场景表示神经网络,其中,在表示场景的潜在变量上调节的场景表示神经网络将场景的几何模型定义为三维(3d)辐射场,并且被配置为:接收场景中的空间位置的表示和观看方向的表示;以及处理场景中的空间位置的表示、观看方向的表示和表示场景的潜在变量,以生成定义在场景中的空间位置处在观看方向上发射的辐射的输出;以及通过将来自场景的几何模型的辐射值作为3d辐射场投影到新相机位置处的相机的图像平面上,使用在表示场景的潜在变量上调节的场景表示神经网络来渲染新图像,该新图像描绘来自新相机位置处的相机的视角的场景。
15.在一些实施方式中,从表征场景的多个观察生成表示场景的潜在变量包括:从表征场景的多个观察生成潜在变量空间上的概率分布的参数;以及根据潜在变量空间上的概率分布,从潜在变量空间中采样表示场景的潜在变量。
16.在一些实施方式中,从表征场景的多个观察生成潜在变量空间上的概率分布的参数包括:
17.生成每个观察的相应表示;使用编码神经网络处理每个观察的相应表示,以生成每个观察的对应嵌入;以及从观察的嵌入生成潜在变量的空间上的概率分布的参数。
18.在一些实施方式中,根据观察的嵌入生成在潜在变量的空间上的概率分布的参数包括:对观察的嵌入求平均,其中潜在变量的空间上的概率分布的参数基于观察的嵌入的平均值。
19.在一些实施方式中,从观察的嵌入生成潜在变量的空间上的概率分布的参数包括:初始化潜在变量的空间上的当前概率分布的当前参数;以及对于时间步长序列中的每个时间步长:根据潜在变量空间上的当前概率分布从潜在变量空间中采样当前潜在变量;在所述当前潜在变量上调节所述场景表示神经网络;使用在所述当前潜在变量上调节的所述场景表示神经网络,渲染从目标相机位置处的相机的视角描绘所述场景的图像;相对于潜在变量的空间上的当前概率分布的当前参数确定目标函数的梯度,该目标函数取决于:(i)从目标相机位置处的相机的视角描绘场景的渲染图像,以及(ii)在目标相机位置处从相机捕获的场景的目标图像;以及使用以下项来更新潜在变量的空间上的当前概率分布的当前参数:(i)目标函数的梯度,以及(ii)观察的嵌入。
20.在一些实施方式中,表示场景的潜在变量包括多个潜在子变量。
21.在一些实施方式中,场景表示神经网络包括一个或多个更新块的序列,其中每个更新块被配置为:接收场景中的空间位置和观看方向的当前联合嵌入;使用对所述潜在变量的所述多个潜在子变量中的一个或多个潜在子变量的注意力来更新所述场景中的所述空间位置和所述观看方向的所述当前联合嵌入。
22.在一些实施方式中,注意力是多头查询-键-值(query-key-value)注意力。
23.在一些实施方式中,处理场景中的空间位置的表示、观看方向的表示和表示场景的潜在变量以生成定义在场景中的空间位置处在观看方向上发射的辐射的输出包括:根据场景中的空间位置的表示和观看方向的表示来生成场景中的空间位置和观看方向的联合嵌入;使用所述一个或多个更新块的序列中的每个更新块来更新所述联合嵌入;以及根据由更新块序列中的最终更新块生成的更新后的联合嵌入,生成定义在场景中的空间位置处在观看方向上发射的辐射的输出。
24.在一些实施方式中,每个潜在子变量包括多个信道,其中每个更新块被分配相应的潜在子变量,并且其中对于每个更新块,使用对潜在变量的多个潜在子变量中的一个或多个潜在子变量的注意力来更新当前联合嵌入包括:仅使用对分配给更新块的潜在子变量的注意力来更新当前联合嵌入。
25.在一些实施方式中,渲染新图像包括,对于新图像的每个像素:识别与从新相机位置处的相机的图像平面投射到场景中的像素相对应的光线;对于所述光线上的多个空间位置中的每一个,使用在表示所述场景的所述潜在变量上调节的所述场景表示神经网络,确定在所述光线上的所述空间位置处沿所述光线的方向发射的辐射;基于在所述光线上的所述多个空间位置处在所述光线的所述方向上发射的所述辐射来渲染所述新图像中的所述像素的颜色。
26.在一些实施方式中,该方法还包括:对于光线上的多个空间位置中的每一个,确定场景在空间位置处的体积密度,该体积密度表征光线将在空间位置处终止的可能性;以及基于在光线的方向上发射的辐射和在光线上的多个空间位置处的体积密度两者来渲染新图像中的像素的颜色。
27.在一些实施方式中,对于光线上的多个空间位置中的每一个,确定在空间位置处在光线方向上发射的辐射和在空间位置处的体积密度包括:将光线上的空间位置的表示和光线方向的表示提供给在表示场景的潜在变量上调节的场景表示神经网络,以生成定义在空间位置处在光线方向上发射的辐射和在空间位置处的体积密度的输出。
28.在一些实施方式中,基于在光线的方向上发射的辐射和光线上的多个空间位置处的体积密度两者来渲染新图像中的像素的颜色包括:累积在光线的方向上发射的辐射和光线上的多个空间位置处的体积密度。
29.在一些实施方式中,场景表示神经网络具有多个神经网络参数,其中在被用于渲染场景的新图像之前,场景表示神经网络被训练以根据神经网络参数的初始值确定神经网络参数的训练值,其中对于多个其他场景中的每一个,训练场景表示神经网络包括:在表示另一场景的潜在变量上调节场景表示神经网络;以及使用在表示另一场景的潜在变量上调节的场景表示神经网络来渲染一个或多个图像,每个图像从另一场景中的位置处的相机的视角描绘另一场景;以及使用目标函数的梯度来更新场景表示神经网络的神经网络参数的
当前值,该目标函数取决于使用场景表示神经网络渲染的另一场景的图像,该场景表示神经网络在表示另一场景的潜在变量上调节。
30.根据另一方面,提供了一个或多个存储指令的非暂时性计算机存储介质,所述指令在由一个或多个计算机执行时使所述一个或多个计算机执行本文所述的方法的操作。
31.根据另一方面,提供了一种系统,包括:一个或多个计算机;以及通信地耦合到所述一个或多个计算机的一个或多个存储设备,其中所述一个或多个存储设备存储指令,所述指令在由所述一个或多个计算机执行时使所述一个或多个计算机执行本文描述的方法的操作。
32.本说明书中描述的主题可以在特定实施例中实现,以便实现以下优点中的一个或多个。
33.图像渲染系统使得能够基于场景的一组现有图像和定义捕获每个现有图像的相机的相应位置的数据来渲染场景的新图像,即,从新相机位置处的相机的视角描绘场景。因此,通过使得场景的新图像能够根据需要从一组现有图像合成地渲染,图像渲染系统能够实现资源(例如,存储器资源和相机资源)的更有效的使用。更具体地,在没有图像渲染系统的情况下,生成场景的新图像可能需要使用相机物理地捕获新图像,这需要使用相机资源并且由于实际原因可能是不可行的。此外,根据需要合成地渲染场景的新图像减少了存储器资源的使用,例如,通过在需要新图像之前释放原本存储新图像所需的存储器空间。
34.本说明书中描述的图像渲染系统可以使用场景表示神经网络来渲染场景的新图像,当在表示场景的潜在变量上调节时,该场景表示神经网络定义场景的几何模型。例如,与不并入明确的几何模型的渲染新图像的系统相比,明确地并入几何场景模型使得图像渲染系统能够以更高的几何准确度和真实性来渲染场景的新图像。例如,并入几何场景模型使得图像渲染系统能够更有效地渲染来自与捕获场景的现有图像的相机的位置显著不同的相机位置的新图像。
35.图像渲染系统使用从多个不同场景捕获的图像的集合来训练场景表示神经网络(即,其实现几何场景模型)的参数值。此后,图像渲染系统可以使用场景表示神经网络来渲染新场景的图像,而无需在从新场景捕获的图像上重新训练其参数值。特别地,图像渲染系统不是在从新场景捕获的图像上重新训练场景表示神经网络,而是在表示新场景的潜在变量上调节场景表示神经网络。因此,几何场景模型学习跨场景共享的结构,并且关于特定场景的信息被编码在潜在变量中。在表示新场景的潜在变量上调节场景表示神经网络使得图像渲染系统能够避免针对每个新场景重新训练场景表示神经网络,从而减少计算资源(例如,存储器和计算能力)的消耗。
36.此外,图像渲染系统可以生成潜在变量,该潜在变量有效地表示新场景,并且使得能够使用比重新训练场景表示神经网络所需的新场景的图像少得多的新场景的图像来准确渲染新图像。因此,通过在表示新场景的潜在变量上调节场景表示神经网络(而不是例如针对每个新场景重新训练场景表示神经网络),图像渲染系统使得能够更有效地使用资源。
37.在附图和下面的描述中阐述了本说明书的主题的一个或多个实施例的细节。根据说明书、附图和权利要求,本主题的其他特征、方面和优点将变得显而易见。
附图说明
38.图1是示例图像渲染系统的框图。
39.图2示出了场景的图像的体积渲染的示例。
40.图3是更详细的示例图像渲染系统的框图。
41.图4是包括在图像渲染系统中的示例场景表示神经网络的框图。
42.图5是用于使用图像渲染系统渲染新图像的示例过程的流程图。
43.图6是用于训练包括在图像渲染系统中的编码神经网络和场景表示神经网络的示例过程的流程图。
44.图7和图8示出了使用图像渲染系统实现的实验结果。
45.各个附图中相同的附图标记和名称指示相同的元件。
具体实施方式
46.图1是可以渲染新图像108的示例图像渲染系统100的框图,该新图像108描绘了从新相机位置126d处的相机的视角的场景125。图像渲染系统100是在一个或多个位置中的一个或多个计算机上实现为计算机程序的系统的示例,其中实现了下面描述的系统、组件和技术。
[0047]“图像”通常可以表示为例如“像素”阵列,其中每个像素与图像中的相应空间位置(即,与相机的图像平面中的相应空间位置)相关联,并且对应于表示空间位置处的图像数据的一个或多个数值的相应向量。举例来说,二维(2d)rgb图像可由2d像素阵列表示,其中每一像素与值的相应三维(3d)向量相关联,所述值表示对应于图像中的像素的空间位置处的红色、绿色和蓝色的强度。
[0048]
在整个说明书中,“场景”可以指代例如真实世界环境或模拟环境。例如,如图1所示,场景125可以包括模拟环境中的各种几何对象。相机“位置”可以指例如相机的空间位置和/或定向。相机的空间位置可以表示为例如指示相机的空间位置的三维向量。相机的定向可以表示为例如定义相机定向的方向的三维向量,例如相机的偏航、俯仰和翻滚。
[0049]
图像渲染系统100可以基于表征场景125的观察102来渲染场景125的新图像108。每个观察可以包括:(i)场景125的图像,以及(ii)识别捕获场景125的图像的相机的位置的数据。例如,如图1所示,每个图像从不同的观看视角(例如,从相应相机位置处的相机的视角)描绘场景125。例如,第一图像从位置126a处的相机的视角描绘场景,第二图像从位置126b处的相机的视角描绘场景125,并且第三图像从位置126c处的相机的视角描绘场景125。
[0050]
包括在观察102中的一些或全部图像可以从不同的观看视角描绘场景125。通常,观察102可以包括描绘来自任何数量的不同观看视角(例如,1、5、50、100或1000个不同观看视角)的场景125的图像。
[0051]
图像渲染系统100可以处理观察102和定义新相机位置126d的数据,以渲染新图像108,该新图像108从新相机位置126d处的相机的视角(例如,在场景125中的相机的新定向和/或空间位置处)描绘场景125。在一些实施方式中,相机的新位置126d可以不同于与观察102中包括的图像相关联的任何相机位置126a、126b、126c。换句话说,系统100可以从全新的观看视角渲染描绘场景125的新图像108。
[0052]
图像渲染系统100可以基于表示场景125的潜在变量104来渲染新图像108。“潜在变量”通常可以指潜在空间中的嵌入。通常,潜在变量104可以隐式地表示特定于场景125的特征,例如,场景125中描绘的对象的位置和种类、场景125中的颜色和照明、或者场景125的任何其他适当的特征。在特定示例中,潜在变量可以是例如数值的128维向量。作为另一特定示例,潜在变量可以是例如大小为[hz,wz,dz]的三维阵列。
[0053]
图像渲染系统100可以使用编码神经网络110来生成潜在变量104。例如,编码神经网络110可以被配置为处理观察102,包括描绘来自不同观看视角的场景125的图像和识别相应相机位置126a、126b、126d的数据,以生成潜在变量空间上的概率分布的参数。
[0054]
在使用编码神经网络110来生成概率分布的参数之后,图像渲染系统100可以根据概率分布从潜在变量的空间中采样表示场景125的潜在变量104。然后,系统100可以使用潜在变量104来调节场景表示神经网络120,并且使用场景表示神经网络从新相机位置126d处的相机的视角渲染场景125的新图像108。通常,在表示场景125的潜在变量104上“调节”场景表示神经网络120可以指将潜在变量104作为输入提供给场景表示神经网络120,例如,以与场景表示神经网络的其他输入一起被处理。
[0055]
当在表示场景125的潜在变量104上调节时,场景表示神经网络120可以将场景125的几何模型定义为三维辐射场,该三维辐射场指定例如在场景125中的每个空间位置处发射的定向辐射。更具体地,通过处理场景125中的观看方向107和空间位置106(连同调节潜变量104),场景表示神经网络125可以输出定义在场景125中的该空间位置106处在该观看方向107上发射的对应辐射的值。在场景中的空间位置处的观看方向上发射的辐射可以表征例如在场景125中的该观看方向上穿过该空间位置的光量。换句话说,在在潜在变量104上调节之后,场景表示神经网络120可以在每次用场景125中的特定空间位置106和观看方向107“查询”它时生成对应的发射辐射。
[0056]
此外,新图像108中的每个像素(即,将由新相机位置126d处的相机捕获的像素)可以与从新相机位置126d处的相机的图像平面投射到场景125中的光线相关联。如下面将参考图2更详细地描述的,对于新图像中的每个像素,图像渲染系统100可以使用在潜在变量104上调节的场景表示神经网络120来生成沿着对应于像素的光线的定向发射辐射的多个值。然后,图像渲染系统100可以通过将来自场景的几何模型的辐射值投影到新相机位置126d处的相机的图像平面上(例如,通过使用体积渲染)来例如逐像素地渲染新图像108,这将在下面参考图2更详细地描述。新图像108可以从新相机位置126d处的相机的视角(例如,从全新的观看视角)描绘场景125。
[0057]
作为特定示例,场景125中的空间位置106可以表示为例如空间坐标x的三维向量。场景125中的观看方向107可以表示为例如三维单位向量d。作为另一示例,可以使用球面坐标系中的二维向量(θ,φ)来表示观看方向。在表示场景125的潜在变量z上调节并且具有一组参数θ的场景表示神经网络g可以处理表示(x,d)以生成在场景中的该空间位置处在该观看方向上发射的辐射,例如(r,g,b),其中r是发射的红色,g是发射的绿色,并且b是发射的蓝色,如等式(1)所示。
[0058][0059]
在一些实施方式中,场景表示神经网络120的输出还可以包括场景125在空间位置x处的体积密度σ。通常,场景中的空间位置处的体积密度可以表征该空间位置处的场景125
的任何适当的方面。在一个示例中,场景中的空间位置处的体积密度可以表征行进通过场景的光线将在场景125中的空间位置x处终止的可能性。特别地,场景表示神经网络可以被配置为使得体积密度σ独立于观看方向d而生成,并且因此仅按照场景125中的空间位置的函数而变化。这可以促进跨相同场景125的不同观看视角的体积一致性。
[0060]
在一些情况下,体积密度可以具σ≥0有值,例如,其中零值可以表示例如光线将在特定空间位置处终止的可忽略的可能性,例如,可能指示场景125中在该空间位置处没有对象。另一方面,体积密度的大正值可能指示场景125中在该空间位置处存在对象,并且因此光线将在该位置处终止的可能性很高。
[0061]
如上所述,潜在变量104可以捕获特定于场景125的特征,例如,场景125中描绘的对象的位置和种类、场景125中的颜色和照明、或者场景125的任何其他适当的特征。也就是说,潜在变量104可以被理解为场景的语义表示。
[0062]
可以使用在相应场景中捕获的图像的集合来训练场景表示神经网络120。在训练之后,神经网络120的参数因此可以捕获或存储不同场景之间的共享信息,例如,纹理和形状、公共元素的属性或在不同场景之间共享的任何其他特征。
[0063]
例如,与不合并明确的几何模型的渲染新图像的系统相比,明确地合并场景125的几何模型作为三维辐射场可以允许图像渲染系统100以更高的几何精度和真实感渲染场景125的新图像。例如,结合几何场景模型(即,以由场景表示神经网络表示的辐射场的形式)使得图像渲染系统100能够更有效地渲染来自与捕获观察102中包括的图像的相机的位置显著不同的相机位置的新图像。
[0064]
编码神经网络110和场景表示神经网络120可以各自具有使它们能够执行其所描述的功能的任何适当的神经网络架构。例如,它们可以包括任何适当数量的并且以任何适当配置连接(例如,作为层的线性序列)的任何适当的神经网络层(例如,卷积层、全连接层、递归层、注意力层等)。作为特定示例,编码器神经网络110可以包括一个或多个编码器块和输出块的序列。每个编码器块可以包括例如一个或多个卷积神经网络层、批量归一化神经网络层、以及将编码器块的输入与来自编码器块的输出组合的残差连接。输出块可以包括例如一个或多个批量归一化神经网络层和一个或多个卷积神经网络层。下面将参考图4更详细地描述场景表示神经网络120的示例架构。
[0065]
在一些实施方式中,图像渲染系统100可以包括训练引擎,该训练引擎可以通过多个训练迭代在一组训练数据上联合训练场景表示神经网络120和编码神经网络110。下面参考图6更详细地描述用于训练场景表示神经网络120和编码神经网络的示例过程。
[0066]
在训练之后,场景表示神经网络120可以在表示任何场景的潜在变量上调节。在表示特定场景的潜在变量上调节之后,图像渲染系统100可以使用神经网络120来渲染从不同观看视角描绘该特定场景的一个或多个图像。也就是说,在从场景的观察集合生成表示场景的潜在变量104之后,图像渲染系统100可以使用在潜在变量上调节的场景表示神经网络来生成场景的任何期望数量的新图像,而无需重新生成潜在变量。
[0067]
图像渲染系统100可以用在各种可能的应用中的任何一种中。接下来更详细地描述图像渲染系统100的可能应用的几个示例。
[0068]
在一个示例中,图像渲染系统100可以用作软件应用(例如,为了方便起见,称为“街道视图”应用)的一部分,该软件应用向用户提供对示出物理环境(例如,街道附近的环
境)的交互式全景的访问。响应于从新相机位置处的相机的视角查看物理环境的用户请求,街道视图应用可以向用户提供由图像渲染系统生成的环境的渲染图像。图像渲染系统可以基于环境的现有图像的集合来渲染环境的新图像,例如,先前由安装在穿过环境的车辆上的相机捕获的现有图像。
[0069]
在另一个示例中,图像渲染系统100可用于处理生物分子(例如,蛋白质)的一个或多个图像(例如,x光线图像)的集合,以及定义捕获生物分子图像的成像传感器的位置的数据,以从新视点渲染生物分子的新图像。
[0070]
在另一示例中,图像渲染系统100可以用于渲染虚拟现实环境的图像,例如,在虚拟现实头戴式耳机或头盔中实现。例如,响应于从用户接收到从不同视角观看虚拟现实环境的请求,图像渲染系统可以从期望的视角渲染虚拟现实环境的新图像并将其提供给用户。
[0071]
本文描述的技术可以扩展到图像序列,例如视频。
[0072]
图2示出了使用辐射场对场景250的图像215进行体积渲染的示例。体积渲染可以由图像渲染系统(例如,图1中的系统100)用于渲染从新相机位置216处的相机的视角描绘场景250的图像215。特别地,图像渲染系统可以使用场景表示神经网络240来渲染图像215,场景表示神经网络240将场景的几何模型定义为三维辐射场260。
[0073]
如上面参考图1所述,当在表示场景250的潜在变量(例如,表示图1中的场景125的潜在变量104)上调节时,包括在图像渲染系统中的场景表示神经网络240(例如,图1中的神经网络120)可以将场景250的几何模型定义为三维辐射场260,该三维辐射场260指定例如场景250中的不同空间位置处的定向发射辐射。
[0074]
场景表示神经网络输入可以包括场景250中的空间位置的表示和场景250中的观看方向的表示。如图2所示,观看方向可以是例如具有特定定向并且从新相机位置216处的相机的图像平面投射并通过场景250的光线210的方向。因此,观看方向的表示可以是例如定义光线210的定向的三维单位向量d。场景250中的空间位置230(例如,由光线210上的圆圈示出)可以表示为例如空间坐标的三维向量。通常,由相机在新相机位置216处生成的图像215中的每个像素可以与从相机的图像平面投射到场景250中的光线210以及光线210上的多个空间位置位置230相关联,每个空间位置位置230对应于场景250中的特定空间位置。(对应于新图像中的像素的光线的方向和位置可以被计算为相机的参数的预定义函数,例如,相机的位置和定向、相机的焦距等)。
[0075]
图像渲染系统可以通过场景250中的特定空间位置230和观看方向210查询在表示场景250的潜在变量上调节的场景表示神经网络240。场景表示神经网络240可以生成定义在场景250中的空间位置230处沿该方向210发射的辐射(r,g,b)相应的输出。在一些实施方式中,神经网络240还可以在场景250中的该空间位置230处生成体积密度σ,例如,表征光线210将终止于场景250中的空间位置230的可能性。在通过使用场景表示神经网络240生成辐射度值(r,g,b)之后,图像渲染系统可以通过将这些值投影到新相机位置216处的相机的图像平面上来渲染场景250的新图像215。
[0076]
作为特定示例,对于与新相机位置处的相机相对应的新图像中的每个像素,图像渲染系统可以识别与从相机的图像平面投射到场景250中的像素相对应的对应光线210。图像渲染系统可以使用神经网络240来确定沿着光线210的多个空间位置230(例如,在图2中
表示为圆圈)中的每一个的辐射值(r,g,b)(例如,沿着光线以预定义的间隔)。然后,系统可以基于辐射(r,g,b),例如通过累积针对光线210上的不同空间位置确定的辐射(r,g,b),来渲染新图像中的像素的颜色。图像渲染系统可以针对由新相机位置216处的相机捕获的新图像中的每个像素重复该过程,从而渲染新图像215中的每个像素的颜色。
[0077]
在一些实施方式中,对于光线210上的每个空间位置,图像渲染系统还可以使用神经网络240来确定空间位置处的场景250的体积密度σ。图像渲染系统可以基于以下两者来渲染新图像中的每个像素的颜色:(i)辐射值,以及(ii)在沿着对应于像素的光线的点处的体积密度。图2中包括的曲线图示出了作为场景250中的空间位置230的函数而变化的体积密度σ的示例,每个曲线图特定于特定观看方向(例如,“光线1”或“光线2”)。
[0078]
为了渲染新图像,系统可以通过累积在光线210的方向上发射的辐射和光线210上的多个空间位置230处的体积密度σ来渲染新图像215中的每个像素的颜色。系统可以使用任何适当的累积技术沿着对应于像素的光线累积辐射和体积密度。例如,系统可以通过将沿着光线的每个辐射值按对应的体积密度缩放,然后对缩放的辐射值求和来累积辐射和体积密度。参考mildenhall等人的“nerf:representing scenes as neural radiance fields for view synthesis”arxiv:2003.08934v2(2020)(其还描述了体积密度和alpha值之间的对应关系),描述用于沿着对应于像素的光线累积辐射和体积密度的其他技术。
[0079]
例如,与在不并入明确的几何模型的情况下渲染新图像的系统相比,明确地并入场景250的几何模型260使得图像渲染系统能够以更高的几何准确度和真实感来渲染场景250的新图像。例如,结合几何模型260使得系统能够更有效地渲染来自与捕获场景的现有图像的相机的位置显著不同的相机位置的新图像。作为特定示例,系统可以使用在表示场景250的潜在变量上调节的神经网络240来从完全不同的相机位置225(例如,被示为垂直于相机位置216)处的相机的视角渲染场景250的另一新图像220。
[0080]
接下来将参考图3更详细地描述图像渲染系统。
[0081]
图3是更详细的示例图像渲染系统300(例如,图1中的图像渲染系统100)的框图。图像渲染系统300是在一个或多个位置中的一个或多个计算机上实现为计算机程序的系统的示例,其中实现了下面描述的系统、组件和技术。
[0082]
如上面参考图1所述,图像渲染系统300可以包括编码神经网络310和场景表示神经网络320。系统300可以处理多个观察302,每个观察包括场景的图像和识别捕获场景的图像的相机的位置的数据,以生成表示场景的潜在变量304。系统300可以在潜在变量304上调节场景表示神经网络320,并且使用它来渲染从新相机位置处的相机的视角描绘场景的新图像308。
[0083]
图像渲染系统300可以使用编码神经网络310来处理观察302并生成潜在变量空间上的概率分布的参数。然后,系统300可以根据概率分布从潜在变量的空间中采样表示场景的潜在变量。编码神经网络110可以以任何各种方式生成概率分布的参数。在一个示例中,编码神经网络100可以组合观察102的嵌入,例如,通过使用编码神经网络110处理观察102而生成的嵌入。
[0084]
更具体地,在潜在变量的空间上生成概率分布的参数之前,系统可以处理观察302以生成每个观察302的相应表示。
[0085]
对于描绘场景的图像中的每个像素,系统可以使用捕获图像的相机的相机参数
(例如,视野、焦距、相机空间位置、相机方向等)来确定对应于从相机的图像平面投射到场景中的像素的光线的参数(例如,方向和位置参数)。投射到场景中的每个像素的光线可以具有例如表示为三维单位向量d的方向。该系统可以通过对于包括在观察中的图像中的每个像素,将定义对应光线的定向的数据连接到像素来生成每个观察的表示。换句话说,图像中的每个像素可以具有相关联的五维或六维特征向量(c,d),例如,其中c表示像素的rgb颜色,d表示对应于像素的光线的方向。
[0086]
作为特定示例,对于指定场景的图像ik和捕获场景的图像的对应相机位置ck的观察k,系统可以如下生成观察的对应表示ck:
[0087]ck
=concat(ik,map_to_rays(ck))
ꢀꢀꢀꢀ
(2)
[0088]
其中“concat”是级联运算符,并且“map_to_rays”是确定与图像中的每个像素相对应的相应光线的定向的运算符,如上所述。在根据例如根据等式(2)生成观察302的表示之后,系统可以将每个观察的相应表示作为输入提供给编码神经网络310。编码神经网络310可以被配置为处理观察的表示以生成观察的嵌入。观察的“嵌入”可以指将观察表示为数值的有序集合,例如数值的向量、矩阵或其他张量。
[0089]
系统可以使用观察302的嵌入来生成潜在变量空间上的概率分布的参数。例如,系统可以处理每个观察的相应嵌入以生成组合嵌入,然后使用一个或多个神经网络层处理组合嵌入以生成潜在变量空间上的概率分布的参数。在具有在观察值集合c上调节的参数λ的潜在变量z的空间上的概率分布q可以表示为q
λ
(z|c)。在一个示例中,系统可以通过对观察hk的嵌入求平均来生成组合嵌入h,例如:
[0090][0091]
其n中是观察的总数,hk是观察k的嵌入,并且h是嵌入的平均值。然后,系统100可以如下生成潜在变量空间上的概率分q
λ
(z|c)布的参数λ:
[0092]
λ=mlp(h)
ꢀꢀꢀꢀꢀ
(4)
[0093]
其中“mlp”可以指多层感知器。
[0094]
图像渲染系统300可以根据具有由编码神经网络310确定的参数λ的概率分布q
λ
(z|c)从潜在变量的空间中采样表示场景的潜在变量。在一个示例中,概率分布可以被参数化为例如多维高斯分布,其中每个维度通过相应的平均值和标准偏差参数来参数化。
[0095]
接下来,系统300可以基于潜在变量调节图像渲染神经网络320,并且使用渲染引擎渲染描绘来自新相机位置处的相机的视角的场景的新图像,例如,如上面参考图2所述。
[0096]
接下来将更详细地描述包括在图像渲染系统300中的示例场景表示神经网络320。
[0097]
图4是包括在图像渲染系统中的示例场景表示神经网络400(例如,图1中的场景表示神经网络120)的框图。场景表示神经网络400是在一个或多个位置中的一个或多个计算机上实现为计算机程序的系统的示例,其中实现了下面描述的系统、组件和技术。
[0098]
如上面参考图1和图3所述,包括在图像渲染系统中的编码神经网络可以处理多个观察,每个观察包括场景的图像和识别捕获图像的相机的位置的数据,以生成潜在变量空间上的概率分布的参数。系统可以根据概率分布对表示场景的潜在变量进行采样。然后,系统可以根据潜在变量调节场景表示神经网络400,这使得场景表示神经网络将场景的3d几何模型定义为3d辐射场。更具体地,当在潜在变量上调节时,场景表示神经网络可以处理场
景中的空间位置的表示和观看方向的表示,以生成定义在场景中的空间位置处在观看方向上发射的辐射的数据,以及可选地,定义场景中的空间位置处的体积密度。系统使用由在潜在变量上调节的场景表示神经网络定义的3d辐射场来从新相机位置处的相机的视角渲染场景的新图像,例如,使用体积渲染技术。
[0099]
在一些实施方式中,表示场景的潜在变量可以包括多个(例如,一组)潜在子变量,例如可以组合以形成潜在变量的变量。例如,潜在变量z可以是大小为[h
z x w
z x dz]的阵列。该阵列可以被划分成多个子阵列,并且每个子阵列可以定义潜在变量的相应子变量。作为特定示例,阵列可以沿着潜在变量(例如,dz)的信道维度被划分为子阵列,例如,使得每个子阵列对应于信道维度的相应适当子集(即,小于所有信道维度的子集),并且具有大小[h
z x w
z x d
′z],其中d
′z《dz。每个潜在子变量可以被理解为潜在嵌入的集合{(h,w,:):1≤h≤hz,1≤w≤wz},其中每个潜在嵌入具有维度d
′z。
[0100]
在这种情况下,场景表示神经网络400可以处理场景中的空间位置和观看方向的表示,以使用一个或多个更新块来生成定义在场景中的该空间位置处在观看方向上发射的辐射的输出。具体地,场景表示神经网络400可以包括一个或多个更新块的序列(例如,图4中的“bab”),每个更新块被配置为使用对对应的潜在子变量的注意力来更新输入嵌入,例如,通过将注意力机制应用于对应的潜在子变量以生成用于更新输入嵌入的组合潜在嵌入。可以使用许多不同的注意力机制。注意力机制可以是查询-键-值注意力机制,例如,其中组合潜在嵌入被计算为值的加权和,其中每个值的权重由查询与对应键的兼容性函数(例如,点积或缩放点积)计算,输入嵌入被映射到查询,并且潜在子变量中包括的每个潜在嵌入被映射到键和值。注意力机制可以实现多头注意力,即它可以并行地应用多种不同的注意力机制。
[0101]
例如,为了使用潜在子变量上的注意力来更新输入嵌入,更新块可以为潜在子变量中包括的每个潜在嵌入生成相应的注意力权重,并且基于潜在子变量中包括的潜在嵌入和对应的注意力权重来生成组合的潜在嵌入。作为特定示例,更新块可以生成组合的潜在嵌入作为潜在子变量中的潜在嵌入的加权和,例如,通过将潜在子变量中的每个潜在嵌入乘以对应的权重并对加权的潜在嵌入求和。然后,更新块可以使用组合的潜在嵌入来更新输入嵌入,例如,通过用组合的潜在嵌入替换输入嵌入,通过将组合的潜在嵌入添加到输入嵌入,或以任何其他适当的方式。
[0102]
在一些实施方式中,更新块可以执行查询-键-值(qkv)注意力操作,例如,使用查询(q)、键(k)和值(v)嵌入,使用对潜在子变量中的潜在嵌入的注意力来更新输入嵌入。具体来说,每一更新区块可包含:(i)查询子网络,(ii)键子网络(key sub-network),和(iii)值子网络。对于每个输入嵌入,查询子网可以被配置为处理输入嵌入以生成用于输入嵌入的相应查询嵌入(q)。键子网络可以被配置为处理包含在对应于更新块的潜在子变量中的每个潜在嵌入,以生成相应的键嵌入(key embedding)(k)。类似地,值子网络可以被配置为处理包含在对应于更新块的潜在子变量中的每个潜在嵌入,以生成相应的值嵌入(v)。
[0103]
然后,每个更新块可以使用查询嵌入(q)、键嵌入(k)和值嵌入(v)来更新输入嵌入。具体地,每个更新块可以生成对应潜在子变量中的每个潜在嵌入的注意力权重,例如,作为查询嵌入(q)与每个键嵌入(k)的内积(例如,点积)。基于潜在子变量中的潜在嵌入集合和注意力权重,每个更新块可以生成组合的潜在嵌入,例如,作为由它们各自的注意力权
重加权的值嵌入(v)的线性组合。最后,每个更新块可以使用组合的潜在嵌入来更新输入嵌入。
[0104]
作为特定示例,场景表示神经网络400可以生成场景中的空间位置x=(x1,x2,x3)的表示的嵌入circ(x),例如如下:
[0105][0106][0107]
场景表示神经网络400可以使用一个或多个更新块来使用对潜在子变量的注意力来更新嵌入circ(x),例如,如上所述。然后,神经网络400可以使用多层感知器神经网络层(例如,图4中的“mlp”)来处理更新的嵌入,以生成定义场景中的该空间位置处的体积密度σ的输出。
[0108]
此外,场景表示神经网络400可以例如使用与参照等式(5)描述的过程类似的过程来生成观看方向的表示的嵌入circ(d)。然后,神经网络400可以使用线性神经网络层(例如,图4中的“线性”)来处理嵌入circ(d),并且通过将来自线性层的输出与由更新块生成的circ(x)的更新嵌入相组合(例如,级联)来生成联合嵌入。
[0109]
场景表示神经网络400可以使用更新块序列中的每个更新块来使用对潜在子变量集的注意力来更新联合嵌入,例如如上所述。在联合嵌入已经被更新块序列中的最后一个更新块更新之后,神经网络400可以使用多层感知器神经网络层来处理联合嵌入,以生成定义在场景中的该空间位置(例如,图4中的(r,g,b))处沿观看方向发射的辐射的输出。
[0110]
如上所述,潜在变量可以是阵列,并且阵列可以被划分为多个子阵列,其中每个子阵列可以定义潜在变量的相应子变量。作为特定示例,阵列可以沿着潜在变量(例如,dz)的信道维度被划分为子阵列,例如,使得每个子阵列对应于信道维度的相应适当子集(即,小于所有信道维度的子集)。也就是说,当潜在变量包括阵列时,潜在子变量的信道可以对应于潜在变量的信道。在一些实施方式中,场景表示神经网络400的每个更新块可以被分配相应的潜在子变量(无论每个潜在子变量是否包括多个信道)。在这种情况下,每个更新块可以仅使用对分配给更新块的潜在子变量的潜在嵌入的注意力来更新其输入嵌入。
[0111]
场景表示神经网络400和更新块可以具有使它们能够执行其所描述的功能的任何适当的神经网络架构。例如,除了包括注意力神经网络层之外,更新块还可以包括任何适当数量(例如,2层、5层或10层)并且以任何适当配置连接(例如,作为层的线性序列)的任何其他适当的神经网络层(例如,卷积层、全连接层、递归层、注意力层等)。场景表示神经网络400可以包括任何数量的更新块,以及被配置为执行任何适当操作的任何数量的其他神经网络块。
[0112]
接下来将更详细地描述用于使用图像渲染系统渲染新图像的示例过程。
[0113]
图5是用于使用图像渲染系统渲染新图像的示例过程500的流程图。为了方便起见,过程500将被描述为由位于一个或多个位置的一个或多个计算机的系统执行。例如,根据本说明书适当编程的图像渲染系统(例如,图1中的系统100)可以执行过程500。
[0114]
系统接收表征场景的多个观察(502)。每个观察可以包括:(i)场景的图像,以及(ii)识别捕获场景的图像的相机的位置的数据。
[0115]
系统从表征场景的观察生成表示场景的潜在变量(504)。在一些实施方式中,系统可以使用观察来生成潜在变量空间上的概率分布的参数。例如,系统可以生成每个观察的表示,使用编码神经网络处理每个表示以生成每个观察的对应嵌入,并且从嵌入生成概率分布的参数。
[0116]
作为特定示例,系统可以例如对嵌入求平均,然后通过一个或多个神经网络层处理嵌入的平均,以生成潜在变量空间上的概率分布的参数。例如,系统可以生成如上所述的组合嵌入h,并且使用mlp对其进行处理以生成概率分布的参数。
[0117]
作为另一特定示例,系统可以使用迭代过程生成潜在变量的空间上的概率分布的参数。更具体地,系统可以将概率分布的当前参数初始化为默认(例如,预定义或随机的)值。在初始化当前参数之后,对于时间步长序列中的每个时间步长,系统可以根据例如在表征场景的观察302之一上调节的潜在变量空间上的当前概率分布从潜在变量空间中采样当前潜在变量。当前概率分布可以通过如上所述对其嵌入求平均而在多个(例如,所有)观察上调节。然后,系统可以在当前潜在变量上调节场景表示神经网络,并且使用在当前潜在变量上调节的场景表示神经网络来渲染从目标相机位置处的相机的视角描绘场景的图像。目标相机位置可以是相机在表征场景的观察302之一中的位置。
[0118]
在每个时间步长处,系统可以确定目标函数(例如,参考下面的等式(6)描述的目标函数)相对于潜在变量空间上的概率分布的当前参数的梯度。最后,在每个时间步长处,系统可以使用以下项来更新潜在变量空间上的概率分布的当前参数:(i)目标函数相对于概率分布的当前参数的梯度,以及(ii)训练观察的嵌入,即,使用嵌入神经网络生成的训练观察的嵌入。
[0119]
例如,系统可以使用编码神经网络来处理观察302中的一个,例如与目标相机位置相对应的观察,以生成观察e(c)的嵌入。然后,系统可以将时间步长t+1处的概率分布的当前参数λ
t+1
确定为:
[0120][0121]
其中,λ
t
是时间步长t处的概率分布的参数,表示目标函数l相对于λ
t
的梯度,例如,如下面的等式(6)中所定义的,并且f(
·
)是递归“细化”神经网络,例如lstm(长短期记忆),随后是线性层,以将lstm输出映射到参数λ
t
。因此,细化神经网络可以是处理观察的嵌入和目标函数相对于概率分布的当前参数的梯度以生成对当前参数的更新的神经网络。在一些情况下,可以仅处理观察的图像中的像素的子集以计算l的梯度。
[0122]
在生成潜在变量的空间上的概率分布的参数之后,系统可以根据概率分布从潜在变量的空间中采样表示场景的潜在变量。
[0123]
系统在表示场景的潜在变量上调节场景表示神经网络(506)。场景表示神经网络可以将场景的几何模型定义为三维(3d)辐射场。在一些实施方式中,场景表示神经网络可
504描述了用于使用编码神经网络处理观察以生成表示场景的潜在变量的示例技术。
[0135]
系统在表示场景的潜在变量上调节场景表示神经网络(604)。
[0136]
系统使用以下项来生成与每个目标观察相对应的相应预测图像(606):(i)在潜在变量上调节的场景表示神经网络,以及(ii)由目标观察指定的相机位置。在一些情况下,系统不是为预测图像中的每个像素生成像素值,而是为预测图像中的每个像素生成一组可能像素值上的相应概率分布。上面参考图2描述了用于使用定义环境的3d几何模型的场景表示神经网络来渲染预测图像的示例过程。
[0137]
系统确定目标函数的梯度,该目标函数取决于使用场景表示神经网络(例如,使用反向传播技术)渲染的场景的预测图像(608)。目标函数可以是任何适当的目标函数,例如,变分目标函数(例如,证据下限函数)。例如,针对由目标观察指定的目标图像评估的目标函数l可以由下式给出:
[0138]
l=e
z~q
[logp
θ
(i|z,c)]-kl(q
λ
(z|c)||p(z))
ꢀꢀꢀꢀ
(6)
[0139]
其中,p
θ
(i|z,c)表征预测图像和目标图像之间的误差,q
λ
(z|c)表示潜在变量空间上的概率分布,p(z)表示潜在变量空间上的预定义先验分布,并且kl(q
λ
(z|c)||p(z))表示q
λ
(z|c)和p(z)之间的散度(例如,kullback-leibler散度)。在一些实施方式中,p
θ
(i|z,c)定义目标图像中的每个像素的值在使用场景表示神经网络为该像素生成的概率分布下的似然性的乘积。在其他实施方式中,p
θ
(i|z,c)可以表示预测图像和目标图像之间的误差,例如l2误差。
[0140]
在一些实施方式中,系统可以维护场景表示神经网络320的两个实例,一个基于3d点的粗略集合,另一个基于3d点的更精细集合。这些可以在相同的潜在变量上调节,并且它们的输出被组合以渲染图像。在训练期间,等式(6)然后可以具有附加的似然项logp
θ
(i)。
[0141]
训练引擎可以使用梯度更新场景表示神经网络的参数值和编码神经网络的参数值,例如使用任何适当的梯度下降优化算法,例如adam或rmsprop。
[0142]
在一些情况下,系统可以迭代地优化概率分布的参数。更具体地,系统可以将概率分布的当前参数初始化为默认(例如,预定义或随机的)值。在初始化当前参数之后,对于时间步长序列中的每个时间步长,系统可以根据潜在变量空间上的当前概率分布从潜在变量空间中采样当前潜在变量。然后,系统可以在当前潜在变量上调节场景表示神经网络,并且使用在当前潜在变量上调节的场景表示神经网络来渲染描绘来自目标相机位置(由目标观察指定)处的相机的视角的场景的图像。
[0143]
在每个时间步长处,系统可以确定目标函数(例如,参考等式(6)描述的目标函数)相对于潜在变量空间上的概率分布的当前参数的梯度。最后,在每个时间步长处,系统可以使用以下项来更新潜在变量空间上的概率分布的当前参数:(i)目标函数相对于概率分布的当前参数的梯度,以及(ii)训练观察的嵌入,即,使用嵌入神经网络生成的训练观察的嵌入。例如,系统可以将时间步长t+1处的概率分布的当前参数λ
t+1
确定为:
[0144][0145]
其中λ
t
是时间步长t处的概率分布的参数,e(c)表示训练观察的嵌入的平均值,表示目标函数相对于λ
t
的梯度,并且f(
·
)是“细化”神经网络,例如如前所述。可以与编码神经网络的参数值一起训练细化神经网络的参数。
[0146]
在确定潜在空间上的概率分布的优化参数之后,系统可以根据优化的概率分布对潜在变量进行采样,然后使用从优化的概率分布采样的潜在变量来执行步骤604-610。
[0147]
图7示出了使用本说明书中描述的图像渲染系统获得的实验结果。特别地,曲线图702绘制了由(i)本说明书中描述的图像渲染系统(红线)和(ii)替代图像渲染系统(蓝线)生成的图像的均方误差(mse)。相对于“视图数量”来绘制mse,例如,表示由图像渲染系统使用的观察数量,以生成用于调节场景表示神经网络的潜在变量。曲线图704示出了由本说明书中描述的图像渲染系统生成的图像的mse的直方图,并且曲线图706示出了由替代图像渲染系统生成的图像的mse的直方图。可以理解,本说明书中描述的图像渲染系统显著优于替代图像渲染系统。
[0148]
图8比较了使用(i)本说明书中描述的图像渲染系统(“ii+att”)和(ii)替代图像渲染系统(“c-ar-vae”)生成的图像的预测精度。可以理解,本说明书中描述的图像渲染系统实现了用于从“分布内”视点和“分布外”视点生成图像的较低mse。如果新图像的视点是从与场景的一组现有图像的视点(例如,用于生成用于调节场景表示神经网络的潜在变量)相同的分布中绘制的,则新图像的视点可以被称为在分布内。相反,如果新图像的视点是从与场景的现有图像的集合的视点不同的分布中绘制的,例如,如果视点位于训练数据分布的支持之外,则新图像的视点可以被称为分布外(out-of-distribution)。图804提供了在分布视点内和分布外视点之间形成对比的图示。
[0149]
本说明书结合系统和计算机程序组件使用术语“配置”。对于被配置为执行特定操作或动作的一个或多个计算机的系统,意味着系统已经在其上安装了软件、固件、硬件或它们的组合,这些软件、固件、硬件或它们的组合在操作中使得系统执行操作或动作。对于被配置为执行特定操作或动作的一个或多个计算机程序,意味着一个或多个程序包括当由数据处理装置执行时使装置执行操作或动作的指令。
[0150]
本说明书中描述的主题和功能操作的实施例可以在数字电子电路、有形体现的计算机软件或固件、计算机硬件(包括本说明书中公开的结构及其结构等同物)或它们中的一个或多个的组合中实现。本说明书中描述的主题的实施例可以实现为一个或多个计算机程序,即,在有形非暂时性存储介质上编码的计算机程序指令的一个或多个模块,用于由数据处理装置执行或控制数据处理装置的操作。计算机存储介质可以是机器可读存储设备、机器可读存储基底、随机或串行存取存储器设备、或它们中的一个或多个的组合。可替代地或另外地,程序指令可以被编码在人工生成的传播信号上,例如机器生成的电、光或电磁信号,其被生成以编码信息以传输到合适的接收器装置以供数据处理装置执行。
[0151]
术语“数据处理装置”是指数据处理硬件,并且包括用于处理数据的所有种类的装置、设备和机器,例如包括可编程处理器、计算机或多个处理器或计算机。装置还可以是或进一步包括专用逻辑电路,例如fpga(现场可编程门阵列)或as ic(专用集成电路)。除了硬件之外,装置可以可选地包括为计算机程序创建执行环境的代码,例如,构成处理器固件、协议栈、数据库管理系统、操作系统或它们中的一个或多个的组合的代码。
[0152]
计算机程序(其也可以被称为或描述为程序、软件、软件应用、app、模块、软件模块、脚本或代码)可以以任何形式的编程语言编写,包括编译或解释语言,或者声明或过程语言;并且它可以以任何形式部署,包括作为独立程序或作为模块、组件、子例程或适合在计算环境中使用的其他单元。程序可以但不必对应于文件系统中的文件。程序可以存储在
保存其他程序或数据的文件的一部分中,例如,存储在标记语言文档中的一个或多个脚本,存储在专用于所讨论的程序的单个文件中,或者存储在多个协调文件中,例如,存储一个或多个模块、子程序或代码部分的文件。计算机程序可以被部署为在一个计算机上或在位于一个站点或分布在多个站点上并通过数据通信网络互连的多个计算机上执行。
[0153]
在本说明书中,术语“引擎”广泛地用于指代被编程为执行一个或多个特定功能的基于软件的系统、子系统或过程。通常,引擎将被实现为安装在一个或多个位置中的一个或多个计算机上的一个或多个软件模块或组件。在一些情况下,一个或多个计算机将专用于特定引擎;在其他情况下,可以在同一台或多台计算机上安装和运行多个引擎。
[0154]
本说明书中描述的过程和逻辑流程可以由执行一个或多个计算机程序的一个或多个可编程计算机执行,以通过对输入数据进行操作并生成输出来执行功能。过程和逻辑流程也可以由专用逻辑电路(例如,fpga或asic)执行,或者由专用逻辑电路和一个或多个编程计算机的组合执行。
[0155]
适合于执行计算机程序的计算机可以基于通用或专用微处理器或两者,或任何其他类型的中央处理单元。通常,中央处理单元将从只读存储器或随机存取存储器或两者接收指令和数据。计算机的基本元件是用于执行或运行指令的中央处理单元和用于存储指令和数据的一个或多个存储器设备。中央处理单元和存储器可以由专用逻辑电路补充或并入专用逻辑电路中。通常,计算机还将包括用于或者可操作地耦合到存储数据的一个或多个大容量存储设备(例如磁盘、磁光盘或光盘),以从其接收数据或向其传送数据或两者。然而,计算机不需要具有这样的设备。此外,计算机可以嵌入在另一设备中,例如移动电话、个人数字助理(pda)、移动音频或视频播放器、游戏控制台、全球定位系统(gps)接收器或便携式存储设备,例如通用串行总线(usb)闪存驱动器,仅举几例。
[0156]
适合于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、介质和存储器设备,包括例如半导体存储器设备,例如eprom、eeprom和闪存设备;磁盘,例如内部硬盘或可移动磁盘;磁光盘;以及cdrom和dvd-rom盘。
[0157]
为了提供与用户的交互,本说明书中描述的主题的实施例可以在具有用于向用户显示信息的显示设备(例如,crt(阴极射线管)或lcd(液晶显示器)监视器)以及用户可以通过其向计算机提供输入的键盘和指向设备(例如,鼠标或轨迹球)的计算机上实现。其他种类的设备也可以用于提供与用户的交互;例如,提供给用户的反馈可以是任何形式的感觉反馈,例如视觉反馈、听觉反馈或触觉反馈;并且可以以任何形式接收来自用户的输入,包括声音、语音或触觉输入。另外,计算机可以通过向用户使用的设备发送文档和从用户使用的设备接收文档来与用户交互;例如,通过响应于从网络浏览器接收的请求将网页发送到用户设备上的网络浏览器。此外,计算机可以通过向个人设备(例如,运行消息传送应用的智能电话)发送文本消息或其他形式的消息并且作为回报从用户接收响应消息来与用户交互。
[0158]
用于实现机器学习模型的数据处理装置还可以包括例如专用硬件加速器单元,用于处理机器学习训练或生产的公共和计算密集部分,即推理、工作负载。
[0159]
可以使用机器学习框架(例如,tensorflow框架、microsoft cognitive toolkit框架、apache singa框架或apache mxnet框架)来实现和部署机器学习模型。
[0160]
本说明书中描述的主题的实施例可以在计算系统中实现,该计算系统包括后端组
件(例如,作为数据服务器),或者包括中间件组件(例如,应用服务器),或者包括前端组件(例如,具有用户可以通过其与本说明书中描述的主题的实现交互的图形用户界面、web浏览器或app的客户端计算机),或者一个或多个这样的后端、中间件或前端组件的任何组合。系统的组件可以通过任何形式或介质的数字数据通信(例如,通信网络)互连。通信网络的示例包括局域网(lan)和广域网(wan),例如因特网。
[0161]
计算系统可以包括客户端和服务器。客户端和服务器通常彼此远离,并且通常通过通信网络进行交互。客户端和服务器的关系借助于在相应计算机上运行并且彼此具有客户端-服务器关系的计算机程序而产生。在一些实施例中,服务器将数据(例如,html页面)发送到设备的用户,例如,用于向与充当客户端的设备交互的用户显示数据和从其接收用户输入的目的。可以在服务器处从设备接收在用户设备处生成的数据,例如,用户交互的结果。
[0162]
虽然本说明书包含许多具体实施方式细节,但是这些不应被解释为对任何发明的范围或可能要求保护的范围的限制,而是作为可以特定于特定发明的特定实施例的特征的描述。在本说明书中在单独实施例的上下文中描述的某些特征也可以在单个实施例中组合实现。相反,在单个实施例的上下文中描述的各种特征也可以单独地或以任何合适的子组合在多个实施例中实现。此外,尽管特征可以在上面被描述为以某些组合起作用并且甚至最初如此要求保护,但是来自所要求保护的组合的一个或多个特征在一些情况下可以从组合中删除,并且所要求保护的组合可以针对子组合或子组合的变型。
[0163]
类似地,虽然在附图中描绘了操作并且在权利要求中以特定顺序叙述了操作,但是这不应被理解为要求以所示的特定顺序或按顺序执行这些操作,或者执行所有示出的操作,以实现期望的结果。在某些情况下,多任务和并行处理可能是有利的。此外,上述实施例中的各种系统模块和组件的分离不应被理解为在所有实施例中都需要这种分离,并且应当理解,所描述的程序组件和系统通常可以一起集成在单个软件产品中或封装到多个软件产品中。
[0164]
已经描述了主题的特定实施例。其它实施例在所附权利要求书的范围内。例如,权利要求中记载的动作可以以不同的顺序执行并且仍然实现期望的结果。作为一个示例,附图中描绘的过程不一定需要所示的特定顺序或相继顺序来实现期望的结果。在一些情况下,多任务和并行处理可能是有利的。

技术特征:
1.一种由一个或多个数据处理装置执行的用于渲染新图像的方法,所述新图像从新相机位置处的相机的视角描绘场景,所述方法包括:接收表征场景的多个观察,其中每个观察包括:(i)场景的图像,以及(ii)识别捕获场景的图像的相机的位置的数据;从表征所述场景的所述多个观察生成表示所述场景的潜在变量;在表示所述场景的所述潜在变量上调节场景表示神经网络,其中,在表示所述场景的所述潜在变量上调节的所述场景表示神经网络将所述场景的几何模型定义为三维(3d)辐射场,并且被配置为:接收所述场景中的空间位置的表示和观看方向的表示;以及处理所述场景中的所述空间位置的所述表示、所述观看方向的所述表示和表示所述场景的所述潜在变量,以生成定义在所述场景中的所述空间位置处在所述观看方向上发射的辐射的输出;以及通过将来自所述场景的所述几何模型的辐射值作为3d辐射场投影到所述新相机位置处的所述相机的图像平面上,使用在表示所述场景的所述潜在变量上调节的所述场景表示神经网络来渲染所述新图像,所述新图像从所述新相机位置处的所述相机的所述视角描绘所述场景。2.根据权利要求1所述的方法,其中,从表征所述场景的所述多个观察生成表示所述场景的所述潜在变量包括:从表征场景的多个观察生成潜在变量空间上的概率分布的参数;以及根据所述潜在变量的空间上的所述概率分布,从所述潜在变量的空间中采样表示所述场景的所述潜在变量。3.根据权利要求2所述的方法,其中,从表征所述场景的所述多个观察生成所述潜在变量的空间上的所述概率分布的参数包括:生成每个观察的相应表示;使用编码神经网络处理每个观察的相应表示,以生成每个观察的对应嵌入;以及从所述观察的嵌入生成所述潜在变量的空间上的所述概率分布的参数。4.根据权利要求3所述的方法,其中,从所述观察的嵌入生成所述潜在变量的空间上的所述概率分布的参数包括:对所述观察的所述嵌入求平均,其中所述潜在变量的空间上的所述概率分布的所述参数基于所述观察的所述嵌入的所述平均值。5.根据权利要求3所述的方法,其中,从所述观察的嵌入生成所述潜在变量的空间上的所述概率分布的参数包括:初始化所述潜在变量的空间上的当前概率分布的当前参数;以及对于时间步长序列中的每个时间步长:根据所述潜在变量的空间上的所述当前概率分布从所述潜在变量的空间中采样当前潜在变量;在所述当前潜在变量上调节所述场景表示神经网络;使用在所述当前潜在变量上调节的所述场景表示神经网络,渲染从目标相机位置处的相机的视角描绘所述场景的图像;
相对于潜在变量的空间上的当前概率分布的当前参数确定目标函数的梯度,该目标函数取决于:(i)从目标相机位置处的相机的视角描绘场景的渲染图像,以及(ii)在目标相机位置处从相机捕获的场景的目标图像;以及使用以下项来更新潜在变量的空间上的当前概率分布的当前参数:(i)目标函数的梯度,以及(ii)观察的嵌入。6.根据任一前述权利要求所述的方法,其中,表示所述场景的所述潜在变量包括多个潜在子变量。7.根据权利要求6所述的方法,其中所述场景表示神经网络包括一或多个更新块的序列,其中每一更新块被配置以:接收场景中的空间位置和观看方向的当前联合嵌入;使用对所述潜在变量的所述多个潜在子变量中的一个或多个潜在子变量的注意力来更新所述场景中的所述空间位置和所述观看方向的所述当前联合嵌入。8.根据权利要求7所述的方法,其中,所述注意力是多头查询-键-值(multi-head query-key-value)注意力。9.根据权利要求7-8中任一项所述的方法,其中处理所述场景中的所述空间位置的所述表示、所述观看方向的所述表示和表示所述场景的所述潜在变量以生成定义在所述场景中的所述空间位置处在所述观看方向上发射的辐射的输出包括:根据所述场景中的所述空间位置的所述表示和所述观看方向的所述表示来生成所述场景中的所述空间位置和所述观看方向的联合嵌入;使用所述一个或多个更新块的序列中的每个更新块来更新所述联合嵌入;以及从由所述更新块序列中的最终更新块生成的所述更新后的联合嵌入生成定义在所述场景中的所述空间位置处在所述观看方向上发射的辐射的所述输出。10.根据权利要求7至9中任一项所述的方法,其中每个潜在子变量包括多个信道,其中每个更新块被分配相应的潜在子变量,并且其中对于每个更新块,使用对所述潜在变量的所述多个潜在子变量中的一个或多个潜在子变量的注意力来更新所述当前联合嵌入包括:仅使用对分配给所述更新块的所述潜在子变量的注意力来更新所述当前联合嵌入。11.根据权利要求1至10中任一项所述的方法,其中,对于所述新图像的每个像素,渲染所述新图像包括:识别对应于从所述新相机位置处的所述相机的所述图像平面投射到所述场景中的所述像素的光线;对于所述光线上的多个空间位置中的每一个,使用在表示所述场景的所述潜在变量上调节的所述场景表示神经网络,确定在所述光线上的所述空间位置处沿所述光线的方向发射的辐射;基于在所述光线上的所述多个空间位置处在所述光线的所述方向上发射的所述辐射来渲染所述新图像中的所述像素的颜色。12.根据权利要求11所述的方法,还包括:针对所述光线上的所述多个空间位置中的每一个,确定所述场景在所述空间位置处的体积密度,所述体积密度表征所述光线将在所述空间位置处终止的可能性;以及基于在所述光线的所述方向上发射的所述辐射和在所述光线上的所述多个空间位置
处的所述体积密度两者来渲染所述新图像中的所述像素的所述颜色。13.根据权利要求12所述的方法,其中对于所述光线上的所述多个空间位置中的每一个,确定在所述空间位置处在所述光线的方向上发射的辐射和在所述空间位置处的所述体积密度包括:将光线上的空间位置的表示和光线的方向的表示提供给在表示场景的潜在变量上调节的场景表示神经网络,以生成定义在空间位置处在光线的方向上发射的辐射和空间位置处的体积密度的输出。14.根据权利要求12-13中任一项所述的方法,其中基于在所述光线的方向上发射的辐射和在所述光线上的所述多个空间位置处的体积密度两者来渲染所述新图像中的所述像素的所述颜色包括:累积在所述光线的所述方向上发射的所述辐射和在所述光线上的所述多个空间位置处的所述体积密度。15.根据前述权利要求中任一项所述的方法,其中,所述场景表示神经网络具有多个神经网络参数,其中,在被用于渲染所述场景的所述新图像之前,所述场景表示神经网络被训练以根据所述神经网络参数的初始值确定所述神经网络参数的训练值,其中,对于多个其他场景中的每一个,训练所述场景表示神经网络包括:在表示所述另一场景的潜在变量上调节所述场景表示神经网络;以及使用在表示所述另一场景的所述潜在变量上调节的所述场景表示神经网络,渲染一个或多个图像,每个图像从所述另一场景中的位置处的相机的视角描绘所述另一场景;以及使用目标函数的梯度来更新所述场景表示神经网络的所述神经网络参数的当前值,所述目标函数的梯度取决于使用在表示所述另一场景的所述潜在变量上调节的所述场景表示神经网络渲染的所述另一场景的所述图像。16.一个或多个存储指令的非暂时性计算机存储介质,所述指令在由一个或多个计算机执行时使所述一个或多个计算机执行根据权利要求1-15中任一项所述的相应方法的操作。17.一种系统,包括:一个或多个计算机;以及通信地耦合到所述一个或多个计算机的一个或多个存储设备,其中所述一个或多个存储设备存储指令,所述指令在由所述一个或多个计算机执行时使所述一个或多个计算机执行根据权利要求1-15中任一项所述的相应方法的操作。

技术总结
提供了方法、系统和装置,包括在计算机存储介质上编码的计算机程序,用于渲染从新相机位置处的相机的视角描绘场景的新图像。在一个方面,一种方法包括:接收表征场景的多个观察;从表征所述场景的所述多个观察生成表示所述场景的潜在变量;在表示所述场景的所述潜在变量上调节场景表示神经网络,其中,在表示所述场景的所述潜在变量上调节的所述场景表示神经网络将所述场景的几何模型定义为三维(3D)辐射场;以及使用在表示场景的潜在变量上调节的场景表示神经网络,渲染描绘来自新相机位置处的相机的视角的场景的新图像。处的相机的视角的场景的新图像。处的相机的视角的场景的新图像。


技术研发人员:A
受保护的技术使用者:渊慧科技有限公司
技术研发日:2022.02.04
技术公布日:2023/10/6
版权声明

本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

航空之家 https://www.aerohome.com.cn/

飞机超市 https://mall.aerohome.com.cn/

航空资讯 https://news.aerohome.com.cn/

分享:

扫一扫在手机阅读、分享本文

相关推荐