一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

生成对抗神经网络辅助的视频重建的制作方法

2021-10-23 00:20:00 来源:中国专利 TAG:神经网络 案卷 美国 生成 申请

生成对抗神经网络辅助的视频重建
1.要求优先权
2.本技术是2019年5月21日提交的标题为“用于生成神经网络的基于样式的体系架构(a style

based architecture for generative neural networks)”的美国专利申请no.16/418,317(案卷号741868/18

he

0369

us03)的部分继续申请,其要求2018年11月14日提交的标题为“用于生成神经网络的基于样式的体系架构(a style

based architecture for generative neural networks)”美国临时申请no.62/767,417(案卷号510998/17

he

0369

us01)和2018年11月15日提交的标题为“用于生成神经网络的基于样式的体系架构(a style

based architecture for generative neural networks)”美国临时申请no.62/767,985(案卷号510893/17

he

0369

us02)的权益,这些申请的全部内容通过引用并入本文。本技术还要求2020年4月15日提交的标题为“生成神经网络辅助的视频压缩和解压缩(generative neural network assisted video compression and decompression)”的美国临时申请no.63/010,511(案卷号513138/20

he

0162

us01)的利益,其全部内容通过引用并入本文。
技术领域
3.本发明涉及神经网络,并且具体地,涉及一种用于使用特定缩放控制来合成数据的生成器架构。


背景技术:

4.生成对抗网络(gan)产生的图像的分辨率和质量最近得到了提高。然而,gan仍然继续充当黑匣子,并且尽管最近做出了努力,但是仍然缺乏对图像合成过程的各个方面的理解,例如,随机特征的起源。潜在空间的性质也知之甚少,并且通常展示的潜在空间内插法没有提供定量的方法来相互比较不同的gan。需要解决这些问题和/或与现有技术相关的其他问题。


技术实现要素:

5.基于样式的生成网络架构能够对合成的输出数据(例如图像)进行特定缩放控制。在训练期间,基于样式的生成神经网络(生成器神经网络)包括映射网络和合成网络。在预测期间,可以多次省略、复制或评估映射网络。合成网络可用于生成具有多种属性的高度变化的、高质量的输出数据。例如,当用于生成人类的面部图像时,可能变化的属性是年龄、种族、相机视点、姿势、面部形状、眼镜、颜色(眼睛,头发等)、发型、灯光、背景等。根据任务,生成的输出数据可以包括图像、音频、视频、三维(3d)对象、文本等。
6.由映射神经网络处理在输入空间中定义的潜码,以产生在中间潜在空间中定义的中间潜码。中间潜码可以用作由合成神经网络处理以生成图像的外观矢量。外观矢量是数据的压缩编码,例如包括人脸、音频和其他数据的视频帧。捕获图像可以在本地设备上转换为外观矢量,并使用与传输捕获图像相比少得多的带宽传输到远程设备。在远程设备处的
合成神经网络重构图像用于显示。
7.公开了一种用于生成对抗神经网络辅助的视频重构的方法,计算机可读介质和系统。获取用于配置合成神经网络的特定于真实或合成对象的复制数据。接收对在视频帧中捕获的人脸的属性进行编码的外观矢量。合成神经网络处理外观矢量,以重构包括由复制数据定义的特征的人脸的图像。
附图说明
8.图1a示出了根据一个实施例的基于样式的生成器系统的框图。
9.图1b示出了根据一个实施例的由基于样式的生成器系统生成的图像。
10.图1c示出了根据一个实施例的用于基于样式的生成的方法的流程图。
11.图2a示出了根据一个实施例的图1a所示的映射神经网络的框图。
12.图2b示出了根据一个实施例的图1a中所示的合成神经网络的框图。
13.图2c示出了根据一个实施例的,用于使用基于样式的生成器系统来施加空间噪声的方法的流程图。
14.图2d示出了根据一个实施例的gan系统的框图。
15.图3示出了根据一个实施例的并行处理单元。
16.图4a示出了根据一个实施例的图3的并行处理单元内的通用处理集群。
17.图4b示出了根据一个实施例的图3的并行处理单元的存储器分区单元。
18.图5a示出了根据一个实施例的图4a的流式多处理器。
19.图5b是根据一个实施例的使用图3的ppu实现的处理系统的概念图。
20.图5c示出了其中可以实现各种先前实施例的各种架构和/或功能的示例性系统。
21.图5d示出了可用于训练和利用机器学习的示例性系统的组件,以用于实现本公开的一些实施例。
22.图6a示出了适用于实现本公开的一些实施例的示例性视频流系统。
23.图6b示出了适用于实现本公开的一些实施例的各种外观矢量。
24.图6c示出了根据一个实施例的用于gan辅助的视频压缩的方法的流程图。
25.图6d示出了根据一个实施例的用于gan辅助的视频重建的方法的流程图。
26.图7a是用于实现本公开的一些实施例的合成神经网络训练配置的概念图。
27.图7b是用于实现本公开的一些实施例的包括图7a的投影仪的端到端系统的概念图。
28.图7c是用于实现本公开的一些实施例的用于生成训练数据的配置的概念图。
29.图7d是用于实现本公开的一些实施例的使用界标来预测外观矢量的训练配置的概念图。
30.图7e是用于实现本公开的一些实施例的包括合成神经网络的另一端到端系统的概念图。
31.图8a是用于实现本公开的一些实施例的另一合成神经网络训练配置的概念图。
32.图8b是用于实现本公开的一些实施例的又一个合成神经网络训练配置的概念图。
具体实施方式
33.基于样式的生成网络架构可实现对合成输出的特定缩放控制。基于样式的生成器系统包括映射网络和合成网络。从概念上讲,在一个实施例中,由合成网络的不同层生成的特征图(包含表示输出数据的内容的空间变化信息,其中每个特征图是中间激活的一个通道)基于由映射网络提供的样式控制信号来修改。可以从相同或不同的潜码(latent codes)生成用于合成网络的不同层的样式控制信号。如本文所用,术语“样式控制信号”控制对象的合成图像的属性,例如姿势,一般的发型,面部形状,眼镜,颜色(眼睛,头发,灯光)和微结构。潜码可以是从例如高斯分布得出的随机的n维矢量。可以从相同或不同的映射网络生成用于合成网络的不同层的样式控制信号。另外,可以将空间噪声注入到合成网络的每一层中。
34.图1a示出了根据一个实施例的基于样式的生成器系统100的框图。基于样式的生成器系统100包括映射神经网络110,样式转换单元115和合成神经网络140。在训练合成神经网络140后,当预先计算由样式转换单元115产生的一个或更多个中间潜码和/或样式信号时,可以在没有映射神经网络110的情况下部署合成神经网络140。在一个实施例中,可以包括附加的样式转换单元115,以将由映射神经网络110生成的中间潜码转换为第二样式信号,或者将不同的中间潜码转换为第二样式信号。一个或更多个附加的映射神经网络110可以被包括在基于样式的生成器系统100中,以从潜码或附加的潜码中产生附加的中间潜码。
35.基于样式的生成器系统100可以由程序,定制电路或定制电路和程序的组合来实现。例如,可以使用gpu(图形处理单元),cpu(中央处理单元)或能够执行本文所述操作的任何处理器来实现基于样式的生成器系统100。此外,本领域普通技术人员将理解,执行基于样式的生成器系统100的操作的任何系统都在本发明的实施例的范围和精神内。
36.常规地,通过输入层(诸如前馈神经网络的第一层)将潜码提供给生成器。相反,在一个实施例中,代替接收潜码,合成神经网络140从学习的常数开始,并且潜码被输入到映射神经网络110。在一个实施例中,第一中间数据是学习的常数。给定输入潜在空间中的潜码z,则非线性映射网络首先会产生中间潜码映射神经网络110可以被配置为实现非线性映射网络。在一个实施例中,输入潜在空间和中间潜在空间中的输入和输出激活的尺寸相等(例如512)。在一个实施例中,使用8层mlp(多层感知器,即仅由全连接层组成的神经网络)来实现映射函数f。
37.尽管常规的生成器仅通过生成器的输入层馈送潜码,但是映射神经网络110是将输入潜码z映射到中间潜在空间以产生中间潜码w。样式转换单元115将中间潜码w转换为第一样式信号。一个或更多个中间潜码w被转换成包括第一样式信号和第二样式信号的空间不变样式。与传统的样式传递技术相比,空间不变样式是根据矢量(即中间潜码w)而不是从示例图像计算得出的。一个或更多个中间潜码w可以由一个或更多个映射神经网络110针对一个或更多个相应潜码z生成。合成神经网络140根据样式信号处理第一中间数据(例如,被编码为特征图的学习常数),例如,将第一中间数据的密度从4
×
4增加到8
×
8,并持续直到达到输出数据密度为止。
38.在一个实施例中,样式转换单元115执行仿射变换。样式转换单元115可以被训练为在合成神经网络140的训练期间学习仿射变换。第一样式信号控制在合成神经网络140的
第一层120处的操作以产生修改的第一中间数据。在一个实施例中,第一样式信号控制合成网络140的第一层120内的自适应实例规一化(adain)操作。在一个实施例中,adain操作接收一组内容特征图和样式信号并修改内容特征图的一阶统计(即“样式”),以匹配样式信号定义的一阶统计。由第一层120输出的修改的第一中间数据被一个或更多个处理层125处理以生成第二中间数据。在一个实施例中,一个或更多个处理层125包括3
×
3卷积层。在一个实施例中,一个或更多个处理层125包括3
×
3卷积层,其后是adain操作,该adain操作接收图1a中未明确示出的附加样式信号。
39.第二中间数据被输入到合成神经网络140的第二层130。第二样式信号控制第二层130的操作以产生修改的第二中间数据。在一个实施例中,第一样式信号修改在第一中间数据中编码的第一属性,第二样式信号修改在第一中间数据和第二中间数据中编码的第二属性。例如,与第二中间数据相比,第一中间数据是粗略数据,并且第一样式在第一层120处被传送到粗略特征图,而第二样式在第二层130处被传送到较高密度的特征图。
40.在一个实施例中,第二层130对第二中间数据进行上采样并且包括3
×
3卷积层,随后是adain操作。在一个实施例中,第二样式信号控制合成网络140的第二层130内的adain操作。由第二层130输出的修改后的第二中间数据由一个或更多个处理层135进行处理以生成包括与第二中间数据相对应的内容的输出数据。在一个实施例中,将修改的第二中间数据中的特征的多个(例如32、48、64、96等)通道转换成被编码为颜色通道(例如红色,绿色,蓝色)的输出数据。
41.在一个实施例中,一个或更多个处理层135包括3
×
3卷积层。在一个实施例中,输出数据是包括对应于第一缩放的第一属性和对应于第二缩放的第二属性的图像,其中与第二缩放相比,第一缩放更粗糙。第一缩放可以对应于由第一层120处理的特征图的缩放,而第二缩放可以对应于由第二层130处理的特征图的缩放。因此,第一样式信号以第一缩放修改第一属性,并且第二样式信号以第二缩放修改第二属性。
42.现在将根据用户的需求,给出关于可用于实现前述框架的各种可选架构和特征的更多说明性信息。应该特别注意的是,以下信息是出于说明目的而提出的,不应以任何方式解释为限制。下列任何特征都可以有选择地并入或不排除所描述的其他特征。
43.图1b示出了根据一个实施例的由基于样式的生成器系统100生成的图像。图像以10242分辨率生成。在其他实施例中,可以以不同的分辨率生成图像。两个不同的潜码用于控制由基于样式的生成器系统100生成的图像的样式。具体而言,样式的第一部分由映射神经网络110和样式转换单元115从顶行中的“源”潜码生成。样式的第二部分由相同或附加的映射神经网络110和相应的样式转换单元115从最左列中的“目标”潜码生成。基于样式的生成器系统100开始于合成神经网络140处的学习的常数输入,并基于潜码调整每个卷积层上图像的“样式”,从而直接控制以不同缩放在特征图中编码的图像属性的强度。换句话说,将来自“源”数据的给定样式集复制到“目标”数据。因此,复制的样式(粗略,中间或精细)是从“源”数据中获取的,而所有其他样式都与“目标”数据中的相同。
44.样式的第一部分(目标)由合成神经网络140应用,以用样式的第一部分的第一子集替换为样式的第二部分(源)的相应的第二子集来处理学习的常数。在一个实施例中,学习的常数是4
×4×
512的常数张量。在图1b中的图像的第二,第三和第四行中,样式的第二部分(源)在合成神经网络140的粗略层处替换样式的第一部分(目标)。在一个实施例中,该
粗略层对应于粗略的空间密度42‑
82。在一个实施例中,高级属性(例如姿势,一般发型,面部形状和眼镜)从源中复制,而保持其他属性,例如所有颜色(眼睛,头发,照明)和目标的精细面部特征。
45.在图1b中的图像的第五和第六行中,样式的第二部分(源)替换了合成神经网络140的中间层处的样式的第一部分(目标)。在一个实施例中,中间层对应空间密度162‑
322。较小尺度的面部特征,发型,睁开/闭合的眼睛是从源继承的,而来自目标的姿势、一般面部形状和眼镜被保留。最后,在图1b中的图像的最后一行中,样式的第二部分(源)在合成神经网络140的高密度(精细)层处替换样式的第一部分(目标)。在一个实施例中,精细层对应空间密度642‑
10242。将来自样式的第二部分(源)中的样式用于精细层,继承了来自源中的配色方案和微结构,同时保留了来自目标的姿势和一般面部形状。
46.基于样式的生成器系统100的体系架构能够通过对样式的特定缩放的修改来控制图像合成。可以将由样式转换单元115执行的映射网络110和仿射变换视为从学习的分布中为每种样式绘制样本的方式,并且合成网络140提供了一种基于样式集合生成新颖图像的机制。每种样式的效果都定位在合成网络140中,即,修改样式的特定子集可以预期仅影响图像的某些属性。
47.如图1b所示,使用来自至少两个不同潜码的样式信号被称为样式混合或混合正则化。训练期间的样式混合对相邻样式进行去相关,并实现对生成的图像的更细粒度的控制。在一个实施例中,在训练期间,使用两个随机潜码而不是一个来生成给定百分比的图像。当生成这样的图像时,可以选择合成神经网络140中的随机位置(例如,交叉点),其中处理从使用第一潜码生成的样式信号切换到使用第二潜码生成的信号样式。在一个实施例中,两个潜码z1,z2由映射神经网络110处理,并且相应的中间潜码w1,w2控制样式,使得w1适用于交叉点之前,而w2适用于交叉点之后。混合正则化技术防止合成神经网络140假设相邻样式相关。
48.表1示出了在训练期间启用混合正则化如何显著改善样式的本地化(localization),以在测试时混合了多个潜码的场景中改善的(越低越好)弗雷谢特起始距离(fid)为表示。图1b所示的图像是通过以不同缩放混合两个潜码合成的图像示例。样式的每个子集控制图像的有意义的高级属性。
[0049][0050]
表1:不同混合正则化比率的fid
[0051]
混合比率表示启用了混合正则化的训练示例的百分比。在测试期间最多随机选择四个不同的潜码,并且还随机选择不同的潜码之间的交叉点。混合正则化显著提高了对这些不利操作的容忍度。
[0052]
如通过fid所确认的,由基于样式的生成器系统100生成的图像的平均质量高,并
且甚至成功地合成了诸如眼镜和帽子之类的附件。对于图1b中所示的图像,通过使用可以在w而不是z中执行的所谓的截断技巧来避免从w的极端区域进行采样。请注意,基于样式的生成器系统100可以实现以启用仅选择性地针对低分辨率应用截断,因此高分辨率细节不会受到影响。
[0053]
考虑到训练数据的分布,低密度的区域表示不佳,因此对于基于样式的生成器系统100来说可能很难学习。训练数据的不均匀分布在所有生成建模技术中都提出了重要的开放问题。然而,已知的是,尽管损失了一些量的变化,但从截断的或缩小的采样空间中绘制潜在矢量趋于可以改善平均图像质量。在一个实施例中,为了改善对基于样式的生成器系统100的训练,将w的质心计算为在一个人脸数据集(例如ffhq,flickr

faces

hq)的情况下,该点表示一种平均人脸(ψ=0)。给定w的偏差从中心开始按比例缩小为其中ψ<1。在传统的生成建模系统中,即使使用正交正则化,仅神经网络的一个子集适用于这种截断,即使在不改变损失函数的情况下,w空间中的截断也似乎可以可靠地工作。
[0054]
图1c示出了根据一个实施例的用于基于样式的生成的方法150的流程图。方法150可以由程序,定制电路或定制电路和程序的组合来执行。例如,方法150可以由gpu(图形处理单元),cpu(中央处理单元)或能够执行基于样式的生成器系统100的操作的任何处理器来执行。本领域技术人员将理解,执行方法150的任何系统都在本发明实施例的范围和精神内。
[0055]
在步骤155,映射神经网络110处理在输入空间中定义的潜码,以产生在中间潜在空间中定义的中间潜码。在步骤160,通过样式转换单元115将中间潜码转换为第一样式信号。在步骤165,将第一样式信号施加在合成神经网络140的第一层120上,以根据第一样式信号修改第一中间数据,以产生修改的第一中间数据。在步骤170,修改的第一中间数据被一个或更多个处理层125处理以产生第二中间数据。在步骤175,将第二样式信号施加在合成神经网络140的第二层130上,以根据第二样式信号修改第二中间数据,以产生修改的第二中间数据。在步骤180,由一个或更多个处理层135处理修改的第二中间数据,以产生包括与第二中间数据相对应的内容的输出数据。
[0056]
解纠缠存在多种定义,但一个共同的目标是由线性子空间组成的潜在空间,每个子空间控制一个变化因子。然而,潜在空间z中的因子的每个组合的采样概率需要与训练数据中的对应密度匹配。
[0057]
基于样式的生成器系统100的主要好处是,中间潜在空间w不必根据任何固定分布来支持采样;通过学习的分段连续映射f(z),得出基于样式的生成器系统100的采样密度。可以将映射调整为“不扭曲(unwarp)”w,以使变化因子变得更加线性。基于样式的生成器系统100自然会趋向于不扭曲w,因为基于解纠缠的表示比基于纠缠的表示生成现实图像应该更容易。这样,训练可以在无监督的情况下,即在事先不知道变化因子的情况下产生较小纠缠的w。
[0058]
图2a示出了根据一个实施例的图1a所示的映射神经网络110的框图。训练数据的分布可能缺少属性的组合,例如戴着眼镜的孩子。与潜在空间z相比,在中间潜在空间w中,眼镜和年龄的组合的变化因素的分布变得更加线性。
[0059]
在一个实施例中,映射神经网络110包括归一化层205和多个全连接层210。在一个实施例中,八个全连接层210顺序地耦合以产生中间潜码。在训练期间学习映射神经网络110的参数(例如权重),并且当部署基于样式的生成器系统100以生成输出数据时,使用该参数来处理输入的潜码。在一个实施例中,映射神经网络110生成一个或更多个中间潜码,其在稍后的时间由合成神经网络140使用以生成输出数据。
[0060]
人像中有许多可以被认为是随机的属性,例如头发,发茬,雀斑或皮肤毛孔的确切位置。只要随机化遵循正确的分布,就可以在不影响图像感知的情况下将这些方法中的任何一个随机化。生成图像时人为地忽略噪声会导致图像具有无特征的“绘画”外观。特别地,当产生人像时,粗糙的噪声可能导致头发的大规模卷发和较大背景特征的出现,而细微的噪声可能会使头发的卷发更细,背景细节和皮肤毛孔更细。
[0061]
常规的生成器可能仅基于通过输入层提供的对神经网络的输入来生成随机变化。在训练期间,每当需要伪随机数时,常规生成器就可能被迫学习从较早的激活中生成空间变化的伪随机数。换句话说,伪随机数生成不是故意内置在常规生成器中的。取而代之的是,伪随机数的生成是在训练期间自行出现的,以使常规生成器满足训练目标。生成伪随机数会消耗神经网络的容量,并且难以隐藏生成的信号的周期性,而且并不总是成功的,正如生成的图像中常见的重复模式所证明的那样。相反,基于样式的生成器系统100可以被配置为通过在每次卷积之后添加每像素噪声来避免这些限制。
[0062]
在一个实施例中,基于样式的生成器系统100配置有直接装置,以通过引入显式噪声输入来生成随机细节。在一个实施例中,噪声输入是由不相关的高斯噪声组成的单通道图像,并且专用噪声图像被输入到合成网络140的一层或更多层。可以使用学习的每特征缩放因子将噪声图像广播到所有特征图,然后将其添加到相应卷积的输出中。
[0063]
图2b示出了根据一个实施例的图1a所示的合成神经网络140的框图。合成神经网络140包括第一处理块200和第二处理块230。在一个实施例中,处理块200处理4
×
4分辨率特征图,并且处理块230处理8
×
8分辨率特征图。在处理块200和230之后,之前和/或它们之间,可以在合成神经网络140中包括一个或更多个附加处理块。
[0064]
第一处理块200接收第一中间数据,第一空间噪声和第二空间噪声。在一个实施例中,在与(例如,添加到)第一中间数据相结合之前,通过学习的每通道缩放因子来缩放第一空间噪声。在一个实施例中,第一空间噪声,第二空间噪声,第三空间噪声和第四空间噪声是独立的每像素高斯噪声。
[0065]
第一处理块200还接收第一样式信号和第二样式信号。如先前所解释,可通过根据学习的仿射变换通过处理中间潜码来获得样式信号。学习的仿射变换将w专门化为样式y=(ys,yb),其控制由模块220在合成神经网络140实现的自适应实例归一化(adain)操作。由于其效率和紧凑的表示,adain特别适合在基于样式的生成器系统100中实现。
[0066]
adain操作已定义
[0067][0068]
其中每个特征图xi分别进行归一化,然后使用样式y中对应的标量分量进行缩放和偏置。因此,y的维数是特征图的数量的两倍于该层的输入。在一个实施例中,样式信号的维数是施加了样式信号的层中的多个特征图的倍数。与常规样式转移相反,空间不变样式y
是从矢量w而不是示例图像中计算出来的。
[0069]
每个样式信号的影响都定位于合成神经网络140中,即,修改样式信号的特定子集可以预期仅影响输出数据表示的图像的某些属性。了解本地化的原因,考虑由模块220实现的adain运算(等式1)如何首先将每个信道归一化为零均值和单位方差,然后才基于样式信号应用缩放和偏差。如样式所指示,新的每通道统计信息会为后续的卷积操作修改特征的相对重要性,但由于归一化,新的每通道统计信息不依赖于原始统计信息。因此,每个样式信号在被下一个adain操作覆盖之前仅控制预定数量的卷积225。在一个实施例中,在每个卷积之后并且在由另一个模块225处理之前,将缩放的空间噪声添加到特征。
[0070]
每个模块220之后可以是卷积层225。在一个实施例中,卷积层225将3
×
3卷积内核应用于输入。在处理块200内,由卷积层225输出的第二中间数据与第二空间噪声组合,并输入到第二模块220,第二模块220应用第二样式信号以生成处理块200的输出。在一个实施例中,在与第二中间数据组合(例如,添加到)之前,通过学习的每通道缩放因子对空间噪声进行缩放。
[0071]
处理块230接收由处理块200输出的特征图,并且由上采样器235对特征图进行上采样。在实施例中,通过上采样器235对4
×
4特征图进行上采样以至生成8
×
8特征图。上采样的特征图被输入到另一个卷积层225以产生第三中间数据。在处理块230内,第三中间数据与第三空间噪声组合,并输入到第三模块220,该第三模块220通过adain操作施加第三样式信号。在一个实施例中,在将第三空间噪声与第三中间数据组合(例如,添加到)之前,通过学习的每通道缩放因子来缩放第三空间噪声。第三模块220的输出由另一个卷积层225处理以产生第四中间数据。第四中间数据与第四空间噪声组合并输入到第四模块220,该第四模块经由adain操作施加第四样式信号。在一个实施例中,在将第四空间噪声与第四中间数据组合(例如,添加到)之前,通过学习的每通道缩放因子来缩放第四空间噪声。
[0072]
在一个实施例中,输出数据的分辨率为10242,并且合成神经网络140包括18层,每个分辨率为2的幂(42‑
10242)。可以使用单独的1
×
1卷积将合成神经网络140的最后一层的输出转换为rgb。在一个实施例中,与具有相同数量的层和特征图的常规生成器中的23.1m相比,合成神经网络140总共具有26.2m可训练参数。
[0073]
引入空间噪声仅影响输出数据的随机方面,而使整体组成和高级属性(如身份)保持不变。单独的噪声输入到合成神经网络140使得能够将随机变化应用到层的不同子集。将空间噪声输入施加到合成神经网络140的特定层导致与该特定层的尺度匹配的尺度的随机变化。
[0074]
噪声的影响似乎紧密地定位在合成神经网络140中。在合成神经网络140中的任何点处,都存在着尽快引入新内容的压力,合成神经网络140创建随机变化最简单的方法是依赖于空间噪声输入。一组新的空间噪声可用于合成神经网络140中的每一层,因此没有动机从较早的激活中产生随机效应,从而导致局部效应。因此,噪声仅影响无关紧要的随机变化(与头发,胡须等的梳理不同)。相反,样式信号的更改具有全局效果(更改姿势,身份等)。
[0075]
在合成神经网络140中,当输出数据是图像时,样式信号会影响整个图像,因为对完整的特征图进行缩放并使用相同的值进行了偏置。因此,可以连贯地控制诸如姿势,照明或背景样式的整体效果。同时,空间噪声被独立地添加到每个像素,因此理想地适合于控制随机变化。如果合成神经网络140试图使用噪声来控制例如姿势,那将导致空间不一致的决
定,这将在训练期间受到惩罚。因此,合成神经网络140学习在没有明确指导的情况下适当地使用全局和局部信道。
[0076]
图2c示出了根据一个实施例的用于使用基于样式的生成器系统100来施加空间噪声的方法250的流程图。方法250可以由程序,定制电路或定制电路和程序的组合来执行。例如,方法250可以由gpu(图形处理单元),cpu(中央处理单元)或能够执行基于样式的生成器系统100的操作的任何处理器来执行。另外,本领域技术人员将理解,执行方法250的任何系统都在本发明实施例的范围和精神内。
[0077]
在步骤255处,在合成神经网络140的第一层应用第一组空间噪声,以生成第一中间数据,该第一中间数据包括与基于第一组空间噪声修改的源数据相对应的内容。在一个实施例中,源数据是第一中间数据,并且第一层是包括模块220和/或卷积层225的层。在步骤258,修改的第一中间数据被一个或更多个处理层225处理以产生第二中间数据。在步骤260,在合成神经网络140的第二层上施加第二组空间噪声,以生成第二中间数据,该第二中间数据包括与基于第二组空间噪声修改的第一中间数据相对应的内容。在一个实施例中,至少由模块220修改第一中间数据以产生第二中间数据。在步骤265,第二中间数据被处理以产生包括与第二中间数据相对应的内容的输出数据。在一个实施例中,第二中间数据由另一个模块220和块230处理以产生输出数据。
[0078]
可以将噪声注入到合成神经网络140的各层中,以引起与该层相对应的缩放的随机变化的合成。重要的是,应该在训练和生成过程二者中注入噪声。另外,在生成期间,可以修改噪声的强度以进一步控制输出数据的“外观”。提供样式信号,而不是直接将潜码输入到合成神经网络140中,再结合直接注入到合成神经网络140中的噪声,导致在生成的图像中自动,无监督地从随机变化(例如雀斑,头发)中分离出高级属性(例如姿势,身份),并实现直觉式的缩放特定混合和插值操作。
[0079]
特别地,样式信号在合成神经网络140中以不同的缩放直接调整图像属性的强度。在生成期间,样式信号可用于修改所选的图像属性。另外,在训练期间,映射神经网络110可以被配置为执行样式混合正则化以改善样式的本地化。
[0080]
映射神经网络110将输入的潜码嵌入到中间的潜在空间中,这对如何在合成神经网络140中表示的变化因子具有深远的影响。输入的潜在空间遵循训练数据的概率密度,这可能导致一定程度的不可避免的纠缠。中间潜在空间不受该限制,因此被允许解缠结。与常规的生成器体系架构相比,基于样式的生成器系统100允许对变化的不同因素进行更线性、更少纠缠的表示。在一个实施例中,用基于样式的生成器替换常规生成器可能不需要修改训练框架的任何其他组件(损失函数,鉴别器,优化方法等)。
[0081]
基于样式的生成神经网络100可以使用例如gan(生成对抗网络),vae(可变自动编码器)框架,基于流的框架等进行训练。图2d示出了根据一个实施例的gan 270训练框架的框图。gan 270可以由程序、定制电路或定制电路和程序的组合来实现。例如,可以使用gpu、cpu或能够执行本文描述的操作的任何处理器来实现gan 270。此外,本领域普通技术人员将理解,执行gan 270的操作的任何系统都在本发明的实施例的范围和精神内。
[0082]
gan 270包括生成器,例如基于样式的生成器系统100,鉴别器(神经网络)275和训练损失单元280。生成器110和鉴别器275二者的拓扑可以在训练期间进行修改。gan 270可以在无监督的设置或有条件的设置下运行。基于样式的生成器系统100接收输入数据(例
如,至少一个潜码和/或噪声输入)并产生输出数据。根据任务,输出数据可以是图像,音频,视频或其他类型的数据(例如,配置设置)。鉴别器275是自适应损失函数,其在基于样式的生成器系统100的训练期间使用。基于样式的生成器系统100和鉴别器275使用训练数据集同时训练,该训练数据集包括示例输出数据,由基于样式的生成器系统100生成的输出数据应与示例输出数据一致。基于样式的生成器系统100响应于输入数据生成输出数据,并且鉴别器275确定输出数据是否看起来类似于训练数据中包括的示例输出数据。基于该确定,调整鉴别器275和/或基于样式的生成神经网络100的参数。
[0083]
在无监督设置中,鉴别器275输出一个连续值,该连续值指示输出数据与示例输出数据的匹配程度。例如,在一个实施例中,鉴别器275在确定输出数据匹配示例输出数据时输出第一训练刺激(例如,高值),并且在确定输出数据与示例输出数据不匹配时输出第二训练刺激(例如,低值)。训练损失单元280基于鉴别器275的输出来调整gan 270的参数(权重)。当针对特定任务训练基于样式的生成器系统100(例如生成人脸的图像)时,当输出数据是人面部图像时,鉴别器输出高值。由基于样式的生成器系统100生成的输出数据不需要与示例输出数据相同,以用于鉴别器275确定输出数据与示例输出数据匹配。在以下描述的上下文中,当输出数据在感觉上类似于任何示例输出数据时,鉴别器275确定输出数据与示例输出数据匹配。
[0084]
在条件设置中,基于样式的生成神经网络100的输入可以包括其他数据,例如图像,分类标签,分割轮廓和其他(附加)类型的数据(分布,音频等)。除了随机潜码之外,还可以指定附加数据,或者附加数据可以完全代替随机潜码。训练数据集可以包括输入/输出数据对,并且鉴别器275的任务可以是基于鉴别器275在训练数据中看到的示例输入/输出对确定基于样式的生成神经网络100的输出是否与输入一致。
[0085]
在一个实施例中,可以使用渐进式增长技术来训练基于样式的生成神经网络100。在一个实施例中,映射神经网络110和/或合成神经网络140最初被实现为gan的生成神经网络部分,并使用渐进式增长技术进行训练,如karras等人所著,“gan的渐进式增长以提高质量,稳定性和变异性(progressive growing of gans for improved quality,stability,and variation)”,第六届国际学习表示会议(iclr),(2018年4月30日),通过引用整体并入本文。
[0086]
并行处理架构
[0087]
图3示出了根据一个实施例的并行处理单元(ppu)300。在一个实施例中,ppu 300是在一个或更多个集成电路器件上实现的多线程处理器。ppu 300是设计用于并行处理许多线程的延迟隐藏体系架构。线程(即,执行线程)是被配置为由ppu 300执行的指令集的实例。在一个实施例中,ppu 300是图形处理单元(gpu),其被配置为实现用于处理三维(3d)图形数据的图形渲染管线,以便生成用于在显示装置(诸如液晶显示(lcd)设备)上显示的二维(2d)图像数据。在另一个实施例中,ppu 300被配置为实现神经网络系统100。在其他实施例中,ppu 300可以用于执行通用计算。尽管为了说明的目的本文提供了一个示例性并行处理器,但应特别指出的是,该处理器仅出于说明目的进行阐述,并且可使用任何处理器来补充和/或替代该处理器。
[0088]
一个或更多个ppu 300可以被配置为加速数千个高性能计算(hpc)、数据中心,云计算和机器学习应用。ppu 300可被配置为加速众多深度学习系统和应用,用于自动驾驶汽
车、模拟、射线或路径追踪等计算图形、深度学习、高精度语音、图像和文本识别系统、智能视频分析、分子模拟、药物研发、疾病诊断、天气预报、大数据分析、天文学、分子动力学模拟、金融建模、机器人技术、工厂自动化、实时语言翻译、在线搜索优化和个性化用户推荐,等等。
[0089]
如图3所示,ppu 300包括输入/输出(i/o)单元305、前端单元315、调度器单元320、工作分配单元325、集线器330、交叉开关(xbar)370、一个或更多个通用处理集群(gpc)350以及一个或更多个存储器分区单元380。ppu 300可以经由一个或更多个高速nvlink 310互连连接到主机处理器或其他ppu 300。ppu 300可以经由互连302连接到主机处理器或其他外围设备。ppu 300还可以连接到包括多个存储器设备的本地存储器304。在一个实施例中,本地存储器可以包括多个动态随机存取存储器(dram)设备。dram设备可以被配置为高带宽存储器(hbm)子系统,其中多个dram裸晶(die)堆叠在每个设备内。
[0090]
nvlink 310互连使得系统能够扩展并且包括与一个或更多个cpu结合的一个或更多个ppu 300,支持ppu 300和cpu之间的高速缓存一致性,以及cpu主控。数据和/或命令可以由nvlink 310通过集线器330发送到ppu 300的其他单元或从其发送,例如一个或更多个复制引擎、视频编码器、视频解码器、电源管理单元等(未明确示出)。结合图5b更详细地描述nvlink 310。
[0091]
i/o单元305被配置为通过互连302从主机处理器(未示出)发送和接收通信(例如,命令、数据等)。i/o单元305可以经由互连302直接与主机处理器通信,或通过一个或更多个中间设备(诸如内存桥)与主机处理器通信。在一个实施例中,i/o单元305可以经由互连302与一个或更多个其他处理器(例如,一个或更多个ppu 300)通信。在一个实施例中,i/o单元305实现外围组件互连高速(pcie)接口,用于通过pcie总线进行通信,并且互连302是pcie总线。在替代的实施例中,i/o单元305可以实现其他类型的已知接口,用于与外部设备进行通信。
[0092]
i/o单元305对经由互连302接收的数据包进行解码。在一个实施例中,数据包表示被配置为使ppu 300执行各种操作的命令。i/o单元305按照命令指定将解码的命令发送到ppu 300的各种其他单元。例如,一些命令可以被发送到前端单元315。其他命令可以被发送到集线器330或ppu 300的其他单元,诸如一个或更多个复制引擎、视频编码器、视频解码器、电源管理单元等(未明确示出)。换句话说,i/o单元305被配置为在ppu 300的各种逻辑单元之间和之中路由通信。
[0093]
在一个实施例中,由主机处理器执行的程序在缓冲区中对命令流进行编码,该缓冲区向ppu 300提供工作量用于处理。工作量可以包括要由那些指令处理的许多指令和数据。缓冲区是存储器中可由主机处理器和ppu 300两者访问(例如,读/写)的区域。例如,i/o单元305可以被配置为经由通过互连302传输的存储器请求访问连接到互连302的系统存储器中的缓冲区。在一个实施例中,主机处理器将命令流写入缓冲区,然后向ppu 300发送指向命令流开始的指针。前端单元315接收指向一个或更多个命令流的指针。前端单元315管理一个或更多个流,从流读取命令并将命令转发到ppu 300的各个单元。
[0094]
前端单元315耦合到调度器单元320,其配置各种gpc 350以处理由一个或更多个流定义的任务。调度器单元320被配置为跟踪与由调度器单元320管理的各种任务相关的状态信息。状态可以指示任务被指派给哪个gpc 350,该任务是活动的还是不活动的,与该任
务相关联的优先级等等。调度器单元320管理一个或更多个gpc 350上的多个任务的执行。
[0095]
调度器单元320耦合到工作分配单元325,其被配置为分派任务以在gpc 350上执行。工作分配单元325可以跟踪从调度器单元320接收到的若干调度的任务。在一个实施例中,工作分配单元325为每个gpc 350管理待处理(pending)任务池和活动任务池。待处理任务池可以包括若干时隙(例如,32个时隙),其包含被指派为由特定gpc 350处理的任务。活动任务池可以包括若干时隙(例如,4个时隙),用于正在由gpc350主动处理的任务。当gpc 350完成任务的执行时,该任务从gpc 350的活动任务池中逐出,并且来自待处理任务池的其他任务之一被选择和调度以在gpc 350上执行。如果gpc 350上的活动任务已经空闲,例如在等待数据依赖性被解决时,那么活动任务可以从gpc 350中逐出并返回到待处理任务池,而待处理任务池中的另一个任务被选择并调度以在gpc 350上执行。
[0096]
工作分配单元325经由xbar(交叉开关)370与一个或更多个gpc 350通信。xbar370是将ppu 300的许多单元耦合到ppu 300的其他单元的互连网络。例如,xbar 370可以被配置为将工作分配单元325耦合到特定的gpc 350。虽然没有明确示出,但ppu 300的一个或更多个其他单元也可以经由集线器330连接到xbar 370。
[0097]
任务由调度器单元320管理并由工作分配单元325分派给gpc350。gpc 350被配置为处理任务并生成结果。结果可以由gpc 350内的其他任务消耗,经由xbar 370路由到不同的gpc 350,或者存储在存储器304中。结果可以经由存储器分区单元380写入存储器304,存储器分区单元380实现用于从存储器304读取数据和向存储器304写入数据的存储器接口。结果可以通过nvlink310发送到另一个ppu 304或cpu。在一个实施例中,ppu 300包括数目为u的存储器分区单元380,其等于耦合到ppu 300的独立且不同的存储器设备304的数目。下面将结合图4b更详细地描述存储器分区单元380。
[0098]
在一个实施例中,主机处理器执行实现应用程序编程接口(api)的驱动程序内核,其使得能够在主机处理器上执行一个或更多个应用程序以调度操作用于在ppu 300上执行。在一个实施例中,多个计算应用由ppu 300同时执行,并且ppu 300为多个计算应用程序提供隔离、服务质量(qos)和独立地址空间。应用程序可以生成指令(例如,api调用),其使得驱动程序内核生成一个或更多个任务以由ppu 300执行。驱动程序内核将任务输出到正在由ppu 300处理的一个或更多个流。每个任务可以包括一个或更多个相关线程组,本文称为线程束(warp)。在一个实施例中,线程束包括可以并行执行的32个相关线程。协作线程可以指代包括执行任务的指令并且可以通过共享存储器交换数据的多个线程。结合图5a更详细地描述线程和协作线程。
[0099]
图4a示出了根据一个实施例的图3的ppu 300的gpc 350。如图4a所示,每个gpc 350包括用于处理任务的多个硬件单元。在一个实施例中,每个gpc 350包括管线管理器410、预光栅操作单元(prop)
[0100]
415、光栅引擎425、工作分配交叉开关(wdx)480、存储器管理单元(mmu)490以及一个或更多个数据处理集群(dpc)420。应当理解,图4a的gpc 350可以包括代替图4a中所示单元的其他硬件单元或除图4a中所示单元之外的其他硬件单元。
[0101]
在一个实施例中,gpc 350的操作由管线管理器410控制。管线管理器410管理用于处理分配给gpc 350的任务的一个或更多个dpc 420的配置。在一个实施例中,管线管理器410可以配置一个或更多个dpc 420中的至少一个来实现图形渲染管线的至少一部分。例
如,dpc 420可以被配置为在可编程流式多处理器(sm)440上执行顶点着色程序。管线管理器410还可以被配置为将从工作分配单元325接收的数据包路由到gpc 350中适当的逻辑单元。例如,一些数据包可以被路由到prop 415和/或光栅引擎425中的固定功能硬件单元,而其他数据包可以被路由到dpc 420以供图元引擎435或sm 440处理。在一个实施例中,管线管理器410可以配置一个或更多个dpc 420中的至少一个以实现神经网络模型和/或计算管线。
[0102]
prop单元415被配置为将由光栅引擎425和dpc 420生成的数据路由到光栅操作(rop)单元,结合图4b更详细地描述。prop单元415还可以被配置为执行颜色混合的优化,组织像素数据,执行地址转换等。
[0103]
光栅引擎425包括被配置为执行各种光栅操作的若干固定功能硬件单元。在一个实施例中,光栅引擎425包括设置引擎、粗光栅引擎、剔除引擎、裁剪引擎、精细光栅引擎和图块聚合引擎。设置引擎接收变换后的顶点并生成与由顶点定义的几何图元关联的平面方程。平面方程被发送到粗光栅引擎以生成图元的覆盖信息(例如,图块的x、y覆盖掩码)。粗光栅引擎的输出被发送到剔除引擎,其中与未通过z

测试的图元相关联的片段被剔除,发送到裁剪引擎,其中位于视锥体之外的片段被裁剪掉。那些经过裁剪和剔除后留下来的片段可以被传递到精细光栅引擎,以基于由设置引擎生成的平面方程生成像素片段的属性。光栅引擎425的输出包括例如要由在dpc 420内实现的片段着色器处理的片段。
[0104]
包括在gpc 350中的每个dpc 420包括m管线控制器(mpc)430、图元引擎435和一个或更多个sm 440。mpc 430控制dpc 420的操作,将从管线管理器410接收到的数据包路由到dpc 420中的适当单元。例如,与顶点相关联的数据包可以被路由到图元引擎435,图元引擎435被配置为从存储器304提取与顶点相关联的顶点属性。相反,与着色程序相关联的数据包可以被发送到sm 440。
[0105]
sm 440包括被配置为处理由多个线程表示的任务的可编程流式处理器。每个sm 440是多线程的并且被配置为同时执行来自特定线程组的多个线程(例如,32个线程)。在一个实施例中,sm 440实现simd(单指令、多数据)体系架构,其中线程组(例如,warp)中的每个线程被配置为基于相同的指令集来处理不同的数据集。线程组中的所有线程都执行相同的指令。在另一个实施例中,sm 440实现simt(单指令、多线程)体系架构,其中线程组中的每个线程被配置为基于相同的指令集处理不同的数据集,但是其中线程组中的各个线程在执行期间被允许发散。在一个实施例中,为每个线程束维护程序计数器、调用栈和执行状态,当线程束内的线程发散时,使线程束和线程束中的串行执行之间的并发成为可能。在另一个实施例中,为每个单独的线程维护程序计数器、调用栈和执行状态,从而在线程束内和线程束之间的所有线程之间实现相等的并发。当为每个单独的线程维护执行状态时,执行相同指令的线程可以被收敛并且并行执行以获得最大效率。下面结合图5a更详细地描述sm 440。
[0106]
mmu 490提供gpc 350和存储器分区单元380之间的接口。mmu 490可以提供虚拟地址到物理地址的转换、存储器保护以及存储器请求的仲裁。在一个实施例中,mmu 490提供用于执行从虚拟地址到存储器304中的物理地址的转换的一个或更多个转换后备缓冲器(tlb)。
[0107]
图4b示出了根据一个实施例的图3的ppu 300的存储器分区单元380。如图4b所示,
存储器分区单元380包括光栅操作(rop)单元450、二级(l2)高速缓存460和存储器接口470。存储器接口470耦合到存储器304。存储器接口470可以实现用于高速数据传输的32、64、128、1024位数据总线等。在一个实施例中,ppu 300合并了u个存储器接口470,每对存储器分区单元380有一个存储器接口470,其中每对存储器分区单元380连接到对应的存储器设备304。例如,ppu 300可以连接到多达y个存储器设备,诸如高带宽存储器堆叠或图形双数据速率版本5的同步动态随机存取存储器或其他类型的持久存储器。
[0108]
在一个实施例中,存储器接口470实现hbm2存储器接口,并且y等于u的一半。在一个实施例中,hbm2存储器堆叠位于与ppu 300相同的物理封装上,提供与常规gddr5 sdram系统相比显著的功率高和面积节约。在一个实施例中,每个hbm2堆叠包括四个存储器裸晶并且y等于4,其中hbm2堆叠包括每个裸晶两个128位通道,总共8个通道和1024位的数据总线宽度。
[0109]
在一个实施例中,存储器304支持单错校正双错检测(secded)纠错码(ecc)以保护数据。对于对数据损毁敏感的计算应用程序,ecc提供了更高的可靠性。在大型集群计算环境中,ppu 300处理非常大的数据集和/或长时间运行应用程序,可靠性尤其重要。
[0110]
在一个实施例中,ppu 300实现多级存储器层次。在一个实施例中,存储器分区单元380支持统一存储器以为cpu和ppu 300存储器提供单个统一的虚拟地址空间,使得虚拟存储器系统之间的数据能够共享。在一个实施例中,跟踪ppu 300对位于其他处理器上的存储器的访问频率,以确保存储器页面被移动到更频繁地访问该页面的ppu 300的物理存储器。在一个实施例中,nvlink 310支持地址转换服务,其允许ppu 300直接访问cpu的页表并且提供由ppu 300对cpu存储器的完全访问。
[0111]
在一个实施例中,复制引擎在多个ppu 300之间或在ppu 300与cpu之间传输数据。复制引擎可以为未映射到页表的地址生成页面错误。然后,存储器分区单元380可以服务页面错误,将地址映射到页表中,之后复制引擎可以执行传输。在常规系统中,针对多个处理器之间的多个复制引擎操作固定存储器(例如,不可分页),其显著减少了可用存储器。由于硬件分页错误,地址可以传递到复制引擎而不用担心存储器页面是否驻留,并且复制过程是否透明。
[0112]
来自存储器304或其他系统存储器的数据可以由存储器分区单元380取回并存储在l2高速缓存460中,l2高速缓存460位于芯片上并且在各个gpc 350之间共享。如图所示,每个存储器分区单元380包括与对应的存储器304相关联的l2高速缓存460的一部分。然后可以在gpc350内的多个单元中实现较低级高速缓存。例如,每个sm 440可以实现一级(l1)高速缓存。l1高速缓存是专用于特定sm 440的专用存储器。来自l2高速缓存460的数据可以被获取并存储在每个l1高速缓存中,以在sm 440的功能单元中进行处理。l2高速缓存460被耦合到存储器接口470和xbar 370。
[0113]
rop单元450执行与诸如颜色压缩、像素混合等像素颜色相关的图形光栅操作。rop单元450还与光栅引擎425一起实现深度测试,从光栅引擎425的剔除引擎接收与像素片段相关联的样本位置的深度。测试与片段关联的样本位置相对于深度缓冲区中的对应深度的深度。如果片段通过样本位置的深度测试,则rop单元450更新深度缓冲区并将深度测试的结果发送给光栅引擎425。将理解的是,存储器分区单元380的数量可以不同于gpc 350的数量,并且因此每个rop单元450可以耦合到每个gpc 350。rop单元450跟踪从不同gpc 350接
收到的数据包并且确定由rop单元450生成的结果通过xbar 370被路由到哪个gpc 350。尽管在图4b中rop单元450被包括在存储器分区单元380内,但是在其他实施例中,rop单元450可以在存储器分区单元380之外。例如,rop单元450可以驻留在gpc 350或另一个单元中。
[0114]
图5a示出了根据一个实施例的图4a的流式多处理器440。如图5a所示,sm 440包括指令高速缓存505、一个或更多个调度器单元510、寄存器文件520、一个或更多个处理核心550、一个或更多个特殊功能单元(sfu)552、一个或更多个加载/存储单元(lsu)554、互连网络580、共享存储器/l1高速缓存570。
[0115]
如上所述,工作分配单元325调度任务以在ppu 300的gpc 350上执行。任务被分配给gpc 350内的特定dpc 420,并且如果该任务与着色器程序相关联,则该任务可以被分配给sm 440。调度器单元510接收来自工作分配单元325的任务并且管理指派给sm 440的一个或更多个线程块的指令调度。调度器单元510调度线程块以作为并行线程的线程束执行,其中每个线程块被分配至少一个线程束。在一个实施例中,每个线程束执行32个线程。调度器单元510可以管理多个不同的线程块,将线程束分配给不同的线程块,然后在每个时钟周期期间将来自多个不同的协作组的指令分派到各个功能单元(即,核心550、sfu 552和lsu 554)。
[0116]
协作组是用于组织通信线程组的编程模型,其允许开发者表达线程正在进行通信所采用的粒度,使得能够表达更丰富、更高效的并行分解。协作启动api支持线程块之间的同步性,以执行并行算法。常规的编程模型为同步协作线程提供了单一的简单结构:跨线程块的所有线程的栅栏(barrier)(例如,syncthreads()函数)。然而,程序员通常希望以小于线程块粒度的粒度定义线程组,并在所定义的组内同步,以集体的全组功能接口(collective group

wide function interface)的形式使能更高的性能、设计灵活性和软件重用。
[0117]
协作组使得程序员能够在子块(例如,像单个线程一样小)和多块粒度处明确定义线程组并且执行集体操作,诸如协作组中的线程上的同步性。编程模型支持跨软件边界的干净组合,以便库和效用函数可以在他们本地环境中安全地同步,而无需对收敛进行假设。协作组图元启用合作并行的新模式,包括生产者

消费者并行、机会主义并行以及跨整个线程块网格的全局同步。
[0118]
分派单元515被配置为向一个或更多个功能单元传送指令。在该实施例中,调度器单元510包括两个分派单元515,其使得能够在每个时钟周期期间调度来自相同线程束的两个不同指令。在替代实施例中,每个调度器单元510可以包括单个分派单元515或附加分派单元515。
[0119]
每个sm 440包括寄存器文件520,其提供用于sm 440的功能单元的一组寄存器。在一个实施例中,寄存器文件520在每个功能单元之间被划分,使得每个功能单元被分配寄存器文件520的专用部分。在另一个实施例中,寄存器文件520在由sm 440执行的不同线程束之间被划分。寄存器文件520为连接到功能单元的数据路径的操作数提供临时存储器。
[0120]
每个sm 440包括l个处理核心550。在一个实施例中,sm 440包括大量(例如128个等)不同的处理核心550。每个核心550可以包括完全管线化的、单精度、双精度和/或混合精度处理单元,其包括浮点运算逻辑单元和整数运算逻辑单元。在一个实施例中,浮点运算逻辑单元实现用于浮点运算的ieee 754

2008标准。在一个实施例中,核心550包括64个单精
度(32位)浮点核心、64个整数核心、32个双精度(64位)浮点核心和8个张量核心(tensor core)。
[0121]
张量核心被配置为执行矩阵运算,并且在一个实施例中,一个或更多个张量核心被包括在核心550中。具体地,张量核心被配置为执行深度学习矩阵运算,诸如用于神经网络训练和推理的卷积运算。在一个实施例中,每个张量核心在4
×
4矩阵上运算并且执行矩阵乘法和累加运算d=a
×
b c,其中a、b、c和d是4
×
4矩阵。
[0122]
在一个实施例中,矩阵乘法输入a和b是16位浮点矩阵,而累加矩阵c和d可以是16位浮点或32位浮点矩阵。张量核心在16位浮点输入数据以及32位浮点累加上运算。16位浮点乘法需要64次运算,产生全精度的积,然后使用32位浮点与4
×4×
4矩阵乘法的其他中间积相加来累加。在实践中,张量核心用于执行由这些较小的元素建立的更大的二维或更高维的矩阵运算。api(诸如cuda 9c api)公开了专门的矩阵加载、矩阵乘法和累加以及矩阵存储运算,以便有效地使用来自cuda

c 程序的张量核心。在cuda层面,线程束级接口假定16
×
16尺寸矩阵跨越线程束的全部32个线程。
[0123]
每个sm 440还包括执行特殊函数(例如,属性评估、倒数平方根等)的m个sfu 552。在一个实施例中,sfu 552可以包括树遍历单元,其被配置为遍历分层树数据结构。在一个实施例中,sfu 552可以包括被配置为执行纹理图过滤操作的纹理单元。在一个实施例中,纹理单元被配置为从存储器304加载纹理图(例如,纹理像素的2d阵列)并且对纹理图进行采样以产生经采样的纹理值,用于在由sm 440执行的着色器程序中使用。在一个实施例中,纹理图被存储在共享存储器/l1高速缓存470中。纹理单元实现纹理操作,诸如使用mip图(即,不同细节层次的纹理图)的过滤操作。在一个实施例中,每个sm 440包括两个纹理单元。
[0124]
每个sm 440还包括n个lsu 554,其实现共享存储器/l1高速缓存570和寄存器文件520之间的加载和存储操作。每个sm 440包括将每个功能单元连接到寄存器文件520以及将lsu 554连接到寄存器文件520、共享存储器/l1高速缓存570的互连网络580。在一个实施例中,互连网络580是交叉开关,其可以被配置为将任何功能单元连接到寄存器文件520中的任何寄存器,以及将lsu 554连接到寄存器文件和共享存储器/l1高速缓存570中的存储器位置。
[0125]
共享存储器/l1高速缓存570是片上存储器阵列,其允许数据存储和sm 440与图元引擎435之间以及sm 440中的线程之间的通信。在一个实施例中,共享存储器/l1高速缓存570包括128kb的存储容量并且在从sm 440到存储器分区单元380的路径中。共享存储器/l1高速缓存570可以用于高速缓存读取和写入。共享存储器/l1高速缓存570、l2高速缓存460和存储器304中的一个或更多个是后备存储。
[0126]
将数据高速缓存和共享存储器功能组合成单个存储器块为两种类型的存储器访问提供最佳的总体性能。该容量可由程序用作不使用共享存储器的高速缓存。例如,如果将共享存储器配置为使用一半容量,则纹理和加载/存储操作可以使用剩余容量。在共享存储器/l1高速缓存570内的集成使共享存储器/l1高速缓存570起到用于流式传输数据的高吞吐量管线的作用,并且同时提供对频繁重用数据的高带宽和低延迟的访问。
[0127]
当被配置用于通用并行计算时,与图形处理相比,可以使用更简单的配置。具体地,图3所示的固定功能图形处理单元被绕过,创建了更简单的编程模型。在通用并行计算
300之间直接地提供一个或更多个通信链路。可以使用与nvlink 310相同的协议将一个或更多个nvlink 310高速通信链路实现为物理nvlink互连或者片上或裸晶上互连。
[0135]
在本说明书的上下文中,单个半导体平台可以指在裸晶或芯片上制造的唯一的单一的基于半导体的集成电路。应该注意的是,术语单个半导体平台也可以指具有增加的连接的多芯片模块,其模拟片上操作并通过利用常规总线实现方式进行实质性改进。当然,根据用户的需要,各种电路或器件还可以分开放置或以半导体平台的各种组合来放置。可选地,并行处理模块525可以被实现为电路板衬底,并且ppu 300和/或存储器304中的每一个可以是封装器件。在一个实施例中,cpu 530、交换机510和并行处理模块525位于单个半导体平台上。
[0136]
在一个实施例中,每个nvlink 310的信令速率是20到25千兆位/秒,并且每个ppu 300包括六个nvlink 310接口(如图5b所示,每个ppu 300包括五个nvlink 310接口)。每个nvlink 310在每个方向上提供25千兆位/秒的数据传输速率,其中六条链路提供300千兆位/秒。当cpu 530还包括一个或更多个nvlink 310接口时,nvlink 310可专门用于如图5b所示的ppu到ppu通信,或者ppu到ppu以及ppu到cpu的某种组合。
[0137]
在一个实施例中,nvlink 310允许从cpu 530到每个ppu 300的存储器304的直接加载/存储/原子访问。在一个实施例中,nvlink 310支持一致性操作,允许从存储器304读取的数据被存储在cpu 530的高速缓存分层结构中,减少了cpu 530的高速缓存访问延迟。在一个实施例中,nvlink 310包括对地址转换服务(ats)的支持,允许ppu 300直接访问cpu 530内的页表。一个或更多个nvlink 310还可以被配置为以低功率模式操作。
[0138]
图5c示出了示例性系统565,在其中可以实现各种先前实施例的各种体系结构和/或功能。示例性系统565可以被配置为分别实现图1c,2c,6c和6d中所示的方法150、250、650和675中的一个或更多个。
[0139]
如图所示,提供了一种系统565,该系统565包括至少一个连接到通信总线575的中央处理单元530。通信总线575可以直接或间接耦合以下设备中的一个或更多个:主存储器540,网络接口535,一个或更多个cpu 530,一个或更多个显示设备545,一个或更多个输入设备560,交换机510和并行处理系统525。通信总线575可以使用任何合适的协议来实现,并且可以表示一个或更多个链接或总线,例如地址总线,数据总线,控制总线或其组合。通信总线575可以包括一种或更多种总线或链路类型,诸如工业标准架构(isa)总线,扩展工业标准架构(eisa)总线,视频电子标准协会(vesa)总线,外围组件互连(pci)总线,外围组件互连快速(pcie)总线,超传输和/或另一种类型的总线或链路。在一些实施例中,组件之间存在直接连接。作为示例,一个或更多个cpu 530可以直接连接到主存储器540。此外,一个或更多个cpu 530可以直接连接到并行处理系统525。在直接或点对点的情况下在组件之间的连接中,通信总线575可以包括pcie链接以执行连接。在这些示例中,pci总线不需要被包括在系统565中。
[0140]
尽管图5c的各个框被示为经由通信总线575用线连接,但这并不旨在进行限制并且仅是为了清楚。例如,在一些实施例中,呈现组件,例如一个或更多个显示设备545,可以被认为是i/o组件,例如一个或更多个输入设备560(例如,如果显示器是触摸屏)。作为另一个示例,一个或更多个cpu 530和/或并行处理系统525可以包括存储器(例如,除了并行处理系统525,cpu 530和/或其他组件之外,主存储器540可以表示存储设备)。换句话说,图5c
的计算设备仅是说明性的。在“工作站”,“服务器”,“笔记本电脑”,“台式机”,“平板电脑”,“客户端设备”,“移动设备”,“手持设备”,“游戏机”,“电子控制单元(ecu)”,“虚拟现实系统”和/或其他设备或系统类型等类别之间未进行区分,均在图5c的计算设备的范围内。
[0141]
系统565还包括主存储器540。控制逻辑(软件)和数据被存储在主存储器540中,其可以采取各种计算机可读介质的形式。计算机可读介质可以是系统565可以访问的任何可用介质。计算机可读介质可以包括易失性和非易失性介质以及可移除和不可移除介质。作为示例而非限制,计算机可读介质可以包括计算机存储介质和通信介质。
[0142]
计算机存储介质可以包括以用于存储信息(诸如计算机可读指令,数据结构,程序模块和/或其他数据类型)的任何方法或技术实现的易失性和非易失性介质和/或可移除和不可移除介质两者。例如,主存储器540可以存储计算机可读指令(例如,表示诸如操作系统的程序和/或程序元素),计算机存储介质可以包括但不限于到ram,rom,eeprom,闪存或其他存储技术,cd

rom,数字多功能磁盘(dvd)或其他光盘存储设备,磁带盒,磁带,磁盘存储设备或其他磁性存储设备或可以用于存储期望信息并且可以由系统565访问的任何其他介质。如本文所使用的,计算机存储介质本身不包括信号。
[0143]
计算机存储介质可以在诸如载波或其他传输机制的已调制数据信号中体现计算机可读指令,数据结构,程序模块和/或其他数据类型,并且包括任何信息传递介质。术语“调制数据信号”可以指的是具有以其将信息编码的方式设置或改变其一个或更多个特征的信号。作为示例而非限制,计算机存储介质可以包括有线介质(诸如有线网络或直接有线连接),以及无线介质(诸如声学,rf,红外和其他无线介质)。以上任何内容的组合也应包括在计算机可读介质的范围内。
[0144]
计算机程序在被执行时使系统565能够执行各种功能。一个或更多个cpu 530可以被配置为执行计算机可读指令中的至少一些,以控制系统565的一个或更多个组件以执行本文描述的方法和/或过程中的一个或更多个。一个或更多个cpu 530的每个可以包括一个或更多个能够同时处理多个软件线程的核心(例如,一个,两个,四个,八个,二十八个,七十二个等等)。一个或更多个cpu 530可以包括任何类型的处理器,并且可以取决于所实现的系统565的类型而包括不同类型的处理器(例如,具有较少核心的用于移动设备的处理器和具有较多核心的用于服务器的处理器)。例如,取决于系统565的类型,处理器可以是使用精简指令集计算(risc)实现的高级risc机器(arm)处理器或使用复杂指令集计算(cisc)实现的x86处理器。除了一个或更多个微处理器或辅助协处理器,例如数学协处理器,系统565还可包括一个或更多个cpu530。
[0145]
作为一个或更多个cpu 530的补充或替代,并行处理模块525可配置为执行至少一些计算机可读指令,以控制系统565的一个或更多个组件执行本文描述的一个或更多个方法和/或过程。系统565可以使用并行处理模块525来渲染图形(例如3d图形)或执行通用计算。例如,并行处理模块525可以用于gpu上的通用计算(gpgpu)。在实施例中,一个或更多个cpu 530和/或并行处理模块525可以离散地或联合地执行方法,过程和/或其部分的任何组合。
[0146]
系统565还包括一个或更多个输入设备560,并行处理系统525和一个或更多个显示设备545。一个或更多个显示设备545可包括显示器(例如,监视器,触摸屏,电视屏幕,平视显示器(hud),其他显示类型或其组合),扬声器和/或其他演示组件。一个或更多个显示
设备545可以从其他组件(例如,并行处理系统525,cpu 530等)接收数据,并且输出数据(例如,作为图像,视频,声音等)。
[0147]
网络接口535可以使系统565逻辑耦合到其他设备,包括输入设备560,一个或更多个显示设备545和/或其他组件,其中一些可以内置于(例如,集成到)系统565。说明性输入设备560包括麦克风,鼠标,键盘,操纵杆,游戏手柄,游戏控制器,碟形卫星天线,扫描仪,打印机,无线设备等。输入设备560可提供自然的用户界面(nui)处理手势,语音或用户生成的其他生理输入。在某些情况下,可以将输入传输到适当的网络元素以进行进一步处理。nui可以实现语音识别,手写笔识别,面部识别,生物特征识别,屏幕上以及与屏幕相邻的手势识别,空中手势,头部和眼睛跟踪以及与系统565的显示器相关的触摸识别(如下更详细描述)的任意组合。系统565可以包括用于姿势检测和识别的深度相机,例如立体相机系统,红外相机系统,rgb相机系统,触摸屏技术及其组合。另外,系统565可包括使得能够检测运动的输入设备560,诸如加速度计或陀螺仪(例如,作为惯性测量单元(imu)的一部分)。在一些示例中,系统565可以使用加速度计或陀螺仪的输出来渲染身临其境的增强现实或虚拟现实。
[0148]
此外,系统565可以通过网络接口535耦合到网络(例如,电信网络,局域网(lan),无线网络,诸如互联网的广域网(wan),对等网络,电缆通过网络接口535)进行通信。系统565可以被包括在分布式网络和/或云计算环境内。
[0149]
网络接口535可以包括一个或更多个接收机,发射机和/或收发机,其使系统565能够经由包括有线和/或无线通信的电子通信网络与其他计算设备进行通信。网络接口535可以包括组件和功能,以使得能够在许多不同网络中的任何一个上进行通信,例如无线网络(例如,wi

fi,z

wave,蓝牙,蓝牙le,zigbee等),有线网络(例如,通过以太网或infiniband进行通信),低功耗广域网(例如lorawan,sigfox等)和/或因特网。
[0150]
系统565还可包括辅助存储器(未示出)。辅助存储设备610包括,例如,硬盘驱动器和/或可移除存储驱动器,表示软盘驱动器,磁带驱动器,光盘驱动器,数字多功能磁盘(dvd)驱动器,记录设备,通用串行总线(usb)闪存。可移除存储驱动器以众所周知的方式从可移除存储单元读取和/或写入可移除存储单元。系统565还可包括硬线电源,电池电源或其组合(未示出)。电源可以向系统565提供电力以使系统565的组件能够操作。
[0151]
前述模块和/或设备中的每一个甚至可以被放置在单个半导体平台上以形成系统565。或者,根据用户的需求,各种模块也可以被独立地放置或以半导体平台的各种组合放置。尽管上面已经描述了各种实施例,但是应该理解,它们仅是示例性的,而非限制性的。因此,优选实施例的广度和范围不应由任何上述示例性实施例限制,而应仅根据所附权利要求及其等同物来限定。
[0152]
示例网络环境
[0153]
适用于实现本公开的实施例的网络环境可以包括一个或更多个客户端设备,服务器,网络附加存储(nas),其他后端设备和/或其他设备类型。客户端设备,服务器和/或其他设备类型(例如,每个设备)可以在图5b的处理系统500和/或图5c的示例性系统565的一个或更多个实例上实现,例如,每个设备可以包括类似的组件,处理系统500和/或示例性系统565的特征和/或功能。
[0154]
网络环境的组件可以经由可以是有线,无线或两者的一个或更多个网络相互通
信。该网络可以包括多个网络或网络的网络。举例来说,网络可以包括一个或更多个wan,一个或更多个lan,一个或更多个公共网络,例如互联网和/或公共交换电话网络(pstn),和/或一个或更多个专用网络。在网络包括无线电信网络的情况下,诸如基站,通信塔,甚至接入点之类的组件(以及其他组件)可以提供无线连接。
[0155]
兼容的网络环境可以包括一个或更多个对等网络环境

在这种情况下,服务器可能不包含在网络环境中

以及一个或更多个客户端

服务器网络环境

在这种情况下,一个或更多个服务器可能包含在网络环境中。在对等网络环境中,本文针对一个或更多个服务器描述的功能可以在任意数量的客户端设备上实现。
[0156]
在至少一个实施例中,网络环境可以包括一个或更多个基于云的网络环境,分布式计算环境,其组合等。基于云的网络环境可以包括框架层,作业调度器,资源管理器以及在一个或更多个服务器上实现的分布式文件系统,该服务器可以包括一个或更多个核心网络服务器和/或边缘服务器。框架层可以包括用于支持软件层的软件和/或应用程序层的一个或更多个应用程序的框架。该软件或一个或更多个应用程序可以分别包括基于网络的服务软件或应用程序。在实施例中,一个或更多个客户端设备可以使用基于网络的服务软件或应用程序(例如,通过经由一个或更多个应用程序编程接口(api)访问服务软件和/或应用程序)。框架层可以是但不限于一种自由和开源软件网页应用程序框架,例如可以使用分布式文件系统进行大规模数据处理(例如“大数据”)。
[0157]
基于云的网络环境可以提供执行本文所述的计算和/或数据存储功能的任何组合(或其一个或更多个部分)的云计算和/或云存储。这些各种功能中的任何一个都可以从中央或核心服务器(例如,可以跨州,地区,国家,全球等分布的一个或更多个数据中心的)分布在多个位置。如果到用户(例如,客户端设备)的连接相对靠近一个或更多个边缘服务器,则一个或更多个核心服务器可以向一个或更多个边缘服务器指定功能的至少一部分。基于云的网络环境可以是私有的(例如,限于单个组织),可以是公共的(例如,可供许多组织使用)和/或其组合(例如,混合云环境)。
[0158]
一个或更多个客户端设备可以包括图5b的示例处理系统500和/或图5c的示例性系统565的至少一些组件,特征和功能。作为示例而非限制,客户端设备可以体现为个人计算机(pc),膝上型计算机,移动设备,智能手机,平板计算机,智能手表,可穿戴计算机,个人数字助理(pda),mp3播放器,虚拟现实耳机,全球定位系统(gps)或设备,视频播放器,摄像机,监视设备或系统,车辆,船只,飞船,虚拟机,无人机,机器人,手持通信设备,医院设备,游戏设备或系统,娱乐系统,车辆计算机系统,嵌入式系统控制器,遥控器,设备,消费电子设备,工作站,边缘设备,这些描绘的设备的任何组合或任何其他合适的设备。
[0159]
机器学习
[0160]
在处理器(诸如ppu 300)上开发的深度神经网络(dnn)已经用于各种使用情况:从自驾车到更快药物开发,从在线图像数据库中的自动图像字幕到视频聊天应用中的智能实时语言翻译。深度学习是一种技术,它建模人类大脑的神经学习过程,不断学习,不断变得更聪明,并且随着时间的推移更快地传送更准确的结果。一个孩子最初是由成人教导,以正确识别和分类各种形状,最终能够在没有任何辅导的情况下识别形状。同样,深度学习或神经学习系统需要在对象识别和分类方面进行训练,以便在识别基本对象、遮挡对象等同时还有为对象分配情景时变得更加智能和高效。
[0161]
在最简单的层面上,人类大脑中的神经元查看接收到的各种输入,将重要性水平分配给这些输入中的每一个,并且将输出传递给其他神经元以进行处理。人造神经元或感知器是神经网络的最基本模型。在一个示例中,感知器可以接收一个或更多个输入,其表示感知器正被训练为识别和分类的对象的各种特征,并且在定义对象形状时,这些特征中的每一个基于该特征的重要性指派一定的权重。
[0162]
深度神经网络(dnn)模型包括许多连接节点(例如,感知器、玻尔兹曼机器、径向基函数、卷积层等)的多个层,其可以用大量输入数据来训练以快速高精度地解决复杂问题。在一个示例中,dnn模型的第一层将汽车的输入图像分解为各个部分,并查找基本图案(诸如线条和角)。第二层组装线条以寻找更高水平的图案,诸如轮子、挡风玻璃和镜子。下一层识别运载工具类型,最后几层为输入图像生成标签,识别特定汽车品牌的型号。
[0163]
一旦dnn被训练,dnn就可以被部署并用于在被称为推理(inference)的过程中识别和分类对象或图案。推理的示例(dnn从给定输入中提取有用信息的过程)包括识别储蓄在atm机中的支票存款上的手写数字、识别照片中朋友的图像、向超过五千万用户提供电影推荐、识别和分类不同类型的汽车、行人和无人驾驶汽车中的道路危险、或实时翻译人类言语。
[0164]
在训练期间,数据在前向传播阶段流过dnn,直到产生预测为止,其指示对应于输入的标签。如果神经网络没有正确标记输入,则分析正确标签和预测标签之间的误差,并且在后向传播阶段期间针对每个特征调整权重,直到dnn正确标记该输入和训练数据集中的其他输入为止。训练复杂的神经网络需要大量的并行计算性能,包括由ppu 300支持的浮点乘法和加法。与训练相比,推理的计算密集程度比训练更低,是一个延迟敏感过程,其中经训练的神经网络应用于它以前没有见过的新的输入,以进行图像分类、翻译语音以及通常推理新的信息。
[0165]
神经网络严重依赖于矩阵数学运算,并且复杂的多层网络需要大量的浮点性能和带宽来提高效率和速度。采用数千个处理核心,针对矩阵数学运算进行了优化,并传送数十到数百tflops的性能,ppu 300是能够传送基于深度神经网络的人工智能和机器学习应用所需性能的计算平台。
[0166]
此外,应用本文公开的一种或更多种技术产生的图像可以用于训练,测试或证明用于识别现实世界中的对象和环境的dnn。这样的图像可以包括道路,工厂,建筑物,城市环境,农村环境,人类,动物以及任何其他物理对象或真实环境的场景。此类图像可用于训练,测试或认证在机器或机器人中使用的dnn,以操纵,处理或修改现实世界中的物理对象。此外,此类图像可用于训练,测试或认证在自动驾驶车辆中使用的dnn,以在现实世界中导航和移动车辆。另外,应用本文公开的一种或更多种技术产生的图像可以用于向这些机器,机器人和车辆的用户传达信息。
[0167]
图5d示出了根据至少一个实施例的可用于训练和利用机器学习的示例性系统555的组件。如将要讨论的,可以由计算设备和资源或单个计算系统的各种组合来提供各种组件,其可以在单个实体或多个实体的控制下。此外,方面可以由不同实体触发,发起或请求。在至少一个实施例中,可以由与提供商环境506相关联的提供商来指导神经网络的训练,而在至少一个实施例中,可以通过能够通过客户端设备502或其他此类资源访问提供商环境的顾客或其他用户来请求训练神经网络。在至少一个实施例中,可以由提供者,用户或第三
方内容提供者524提供训练数据(或要由训练的神经网络分析的数据)。在至少一个实施例中,客户端设备502可以是表示用户要导航的车辆或对象,例如,其可以提交请求和/或接收有助于设备导航的指令。
[0168]
在至少一个实施例中,请求能够在至少一个网络504上被提交,以被提供商环境506接收。在至少一个实施例中,客户端设备502可以是使用户能够生成并发送此类请求的任何适当的电子和/或计算设备,例如但不限于台式计算机,笔记本计算机,计算机服务器,智能电话,平板计算机,游戏机(便携式或其他),计算机处理器,计算逻辑和机顶盒。一个或更多个网络504可以包括用于传输请求或其他此类数据的任何适当的网络,例如可以包括互联网,内联网,蜂窝网络,局域网(lan),广域网(wan),个人区域网络(pan),对等方之间直接无线连接的ad hoc网络等。
[0169]
在至少一个实施例中,在该示例中,可以在接口层508接收请求,该接口层可以将数据转发到训练和推理管理器532。训练和推理管理器532可以是包括用于管理请求和服务对应数据或内容的硬件和软件的系统或服务,在至少一个实施例中,训练和推理管理器532可以接收训练神经网络的请求,并且可以为请求训练模块512提供数据。在至少一个实施例中,训练模块512可以选择合适的模型或神经网络来使用,如果没有被请求指定,并且可以使用相关的训练数据来训练模型。在至少一个实施例中,训练数据可以是存储在训练数据存储库514中,从客户端设备502接收或从第三方提供商524获得的一批数据。在至少一个实施例中,训练模块512可以负责训练数据。神经网络可以是任何适当的网络,例如递归神经网络(rnn)或卷积神经网络(cnn)。一旦训练了神经网络并成功地对其进行了评估,就可以将经训练的神经网络存储在例如模型存储库516中,该模型存储库可以存储用于用户,应用程序或服务等的不同模型或网络。在至少一个实施例中,具有可以基于多个不同因素使用单个应用程序或实体的多个模型。
[0170]
在至少一个实施例中,在随后的时间点,可以从客户端设备502(或另一种这样的设备)接收至少部分地受经训练的神经网络确定或影响的内容(例如,路径确定)或数据的请求。该请求可以包括例如要使用神经网络处理以获得一个或更多个推论或其他输出值,分类或预测的输入数据,或者对于至少一个实施例,可以由接口层508接收输入数据,并且虽然也可以使用不同的系统或服务,但它还是指向推理模块518的。在至少一个实施例中,如果还没有本地存储在推理模块518中,则推理模块518可以从模型存储库516获得适当的训练网络,例如本文所讨论的经训练的深度神经网络(dnn)。推理模块518可以提供数据作为训练网络的输入,然后可以生成一个或更多个推理作为输出。例如,这可以包括输入数据实例的分类。在至少一个实施例中,然后可以将推理发送到客户端设备502,以向用户显示或进行其他通信。在至少一个实施例中,还可以将用于用户的上下文数据存储到用户上下文数据存储库522中,该用户上下文数据存储库522可以包括关于用户的数据,该数据可以用作生成推理或获取实例后确定返回到用户的数据时对网络的输入。在至少一个实施例中,也可以将可能包括输入或推理数据中的至少一些的相关数据存储到本地数据库534中,以处理将来的请求。在至少一个实施例中,用户可以使用账户信息或其他信息来访问提供商环境的资源或功能。在至少一个实施例中,如果允许和可用,则还可以收集用户数据并将其用于进一步的训练模型,以便为将来的请求提供更准确的推理。在至少一个实施例中,可以通过用户界面接收对在客户端设备502上执行的机器学习应用程序526的请求,并通过相
同的界面显示结果。客户端设备可以包括诸如用于生成请求和处理结果或响应的处理器528和存储器562之类的资源,以及至少一个用于存储用于机器学习应用程序526的数据的数据存储元件552。
[0171]
在至少一个实施例中,处理器528(或训练模块512或推理模块518的处理器)将是中央处理单元(cpu)。但是,如上所述,这种环境中的资源可以利用gpu来处理至少某些类型的请求的数据。具有数千个内核的gpu(例如ppu 300)被设计为处理大量的并行工作负载,因此,在用于训练神经网络和生成预测的深度学习中变得很流行。尽管使用gpu进行离线构建可以更快地训练更大,更复杂的模型,但离线生成预测意味着无法使用请求时间输入特征,或者必须针对所有特征排列生成预测并将其存储在查找表中才能使用实时请求。如果深度学习框架支持cpu模式,并且模型又小又简单,足以以合理的延迟在cpu上执行前馈,则cpu实例上的服务可以托管模型。在这种情况下,可以在gpu上离线进行训练,而在cpu上实时进行推理。如果cpu方法不可行,则服务可以在gpu实例上运行。但是,由于gpu具有与cpu不同的性能和成本特征,因此运行将运行时算法卸载到gpu的服务可能要求其设计与基于cpu的服务不同。
[0172]
在至少一个实施例中,可以从客户端设备502提供视频数据以在提供商环境506中进行增强。在至少一个实施例中,可以对视频数据进行处理以在客户端设备502上进行增强。在至少一个实施例中,视频数据可以从第三方内容提供者524进行流传输,并由第三方内容提供者524,提供者环境506或客户端设备502增强。在至少一个实施例中,可以从客户端设备502提供视频数据以用作在提供者环境506中训练数据。
[0173]
在至少一个实施例中,可以由客户端设备502和/或提供商环境506来执行有监督和/或无监督训练。在至少一个实施例中,一组训练数据514(例如,分类或标记的数据)作为输入提供,以用作训练数据。在一个实施例中,该组训练数据可以在生成对抗训练配置中使用以训练生成器神经网络。
[0174]
在至少一个实施例中,训练数据可以包括要对其训练神经网络的至少一个人类对象,化身或角色的图像。在至少一个实施例中,训练数据可以包括至少一个要为其训练神经网络的对象类型,以及标识该对象类型的信息的实例。在至少一个实施例中,训练数据可以包括一组图像,每个图像包括一种对象类型的表示,其中,每个图像还包括标签,元数据,分类或标识相应图像中表示的对象类型的其他信息或与之相关联。各种其他类型的数据也可以用作训练数据,可以包括文本数据,音频数据,视频数据等等。在至少一个实施例中,训练数据514被提供作为训练输入到训练模块512。在至少一个实施例中,训练模块512可以是包括硬件和软件的系统或服务,例如执行训练应用的一个或更多个计算设备,用于训练神经网络(或其他模型或算法等)。在至少一个实施例中,训练模块512接收指示要用于训练的模型的类型的指令或请求。在至少一个实施例中,模型可以是对于这种目的有用的任何适当的统计模型,网络或算法,可以包括人工神经网络,深度学习算法,学习分类器,贝叶斯网络等。在至少一个实施例中,训练模块512可以从适当的存储库516中选择初始模型或其他未经训练的模型,并利用训练数据514来训练模型,从而生成可以经训练的模型(例如,经训练的深度神经网络),其可用于对相似类型的数据进行分类或生成其他此类推论。在不使用训练数据的至少一个实施例中,每个训练模块512仍然可以选择适当的初始模型以对输入数据进行训练。
[0175]
在至少一个实施例中,可以以多种不同的方式来训练模型,这可以部分地取决于所选择的模型的类型。在至少一个实施例中,可以向机器学习算法提供一组训练数据,其中模型是通过训练过程创建的模型伪像。在至少一个实施例中,训练数据的每个实例包含正确答案(例如,分类),其可以被称为目标或目标属性。在至少一个实施例中,学习算法在训练数据中找到将输入数据属性映射到目标的模式,要预测的答案,并且输出捕获这些模式的机器学习模型。在至少一个实施例中,然后可以使用机器学习模型来获得针对未指定目标的新数据的预测。
[0176]
在至少一个实施例中,训练和推理管理器532可以从包括二进制分类,多分类,生成和回归模型的一组机器学习模型中进行选择。在至少一个实施例中,要使用的模型的类型可以至少部分取决于要预测的目标的类型。
[0177]
gan辅助的视频编码和重建
[0178]
视频会议和类似的应用程序需要大量带宽才能通过网络将图像传输到边缘设备。如果没有足够的带宽,则图像和/或音频质量会受到影响。可以采用常规的图像压缩技术来在传输之前压缩图像并解压缩图像以在接收设备处显示。但是,当带宽极度受限或连接不可靠时,常规技术可能不够鲁棒。
[0179]
在诸如视频会议(vc)之类的应用程序中,其中在相对一致的情况下传输单个对象的大量的连续镜头,可以使用生成器神经网络(诸如基于样式的生成器系统100)对视频进行编码以作为中间潜码或外观矢量。合成神经网络(诸如合成神经网络140)然后可以从外观矢量重建图像。
[0180]
在一个实施例中,外观矢量包括抽象潜码(例如,中间潜码),一组(面部)界标点,一组与众所周知的面部动作编码系统(facs)有关的系数,或表示学习的特征嵌入空间中面部外观的矢量中的至少一个。
[0181]
可以捕获和处理对象的图像,以将每个视频帧投影或映射到合成神经网络的潜在空间中,以产生被发送到接收设备的外观矢量。外观矢量编码对象的属性,并且是图像的压缩表示。在潜在空间中运行的合成神经网络可以配置为渲染外观矢量,以在接收器处重建图像,从而有效地对外观矢量进行解压缩。例如,在视频会议期间,在照相机,姿势和照明相当稳定的条件下,对象通常是一个人。这样的人讲话和收听的视频流在很大程度上是多余的,因为视频帧仅包含同一人的微小变化。
[0182]
此外,标准视频广播通常在诸如对象的外观之类的方面几乎不提供高级控制。相反,合成神经网络能够增强控制能力,特别是能够使特定对象的特征与在视频帧中捕获图像的人的运动解耦合的能力。因此,如本文进一步所述,使用合成神经网络来重建压缩视频使得能够在重建期间进行控制修改。
[0183]
外观矢量为重建的视频帧提供姿势,表情等的实时信息,并且复制数据有助于捕获和广播相似性的人的基本特征。复制数据(例如,受过训练的神经网络的权重)可以在训练期间确定并发送到接收器。
[0184]
在合成神经网络的训练期间使用的人类对象的特征可以应用于重建的视频帧

即使当不同的人类对象出现在从中生成外观矢量的捕获图像中。换句话说,复制数据通过合成神经网络传输到重建的视频帧。复制数据可以使用被捕获和广播其相似性的同一个人来生成,但是具有不同的属性,例如不同的发型,衣服和/或场景照明。例如,当该人具有她喜
欢的发型,在她穿着制服时以及在演播室照明条件下时,可以生成该人的复制数据。相反,可以在同一个人的头发样式不同,戴着帽子或眼镜且光线不足的情况下生成外观矢量。复制数据将被传输到重建图像上,因此她似乎拥有自己喜欢的发型,穿着制服,并且在演播室照明条件下捕获了她的图像。在另一个示例中,可以为另一个人生成复制数据,并且将该另一个人的属性转移到重建图像。因此,复制数据可用于修改重建图像的一个或更多个方面。在另一个实施例中,由外观神经提供由合成神经网络用于重建的各个属性。例如,其图像被捕获的人可以选择广播给接收机的不同属性(例如,戴眼镜,眼睛的颜色等)。在另一示例中,接收机可以选择一个或更多个不同的属性以用于重建。
[0185]
现在将根据用户的需求,给出关于可用于实现前述框架的各种可选架构和特征的更多说明性信息。应该特别注意的是,以下信息是出于说明目的而提出的,不应以任何方式解释为限制。下列任何特征都可以视需要并入或不排除所描述的其他特征。
[0186]
图6a示出了适用于实现本公开的一些实施例的示例性视频流传输系统600。应该理解,本文描述的这种和其他布置仅作为示例阐述。除了或代替所示的那些,可以使用其他布置和元件(例如,机器,界面,功能,命令,功能的分组等),并且可以完全省略一些元件。此外,本文描述的许多元件是功能实体,其可以被实现为离散或分布式组件或与其他组件结合并且以任何合适的组合和位置来实现。本文描述为由实体执行的各种功能可以由硬件,固件和/或软件来执行。例如,各种功能可以由执行存储在存储器中的指令的处理器来执行。此外,本领域普通技术人员将理解,执行示例性视频流系统600的操作的任何系统都在本公开的实施例的范围和精神内。
[0187]
图6a包括客户端设备603和604(其可以包括与图5b的示例处理系统500,图5c的示例系统565和/或图5d的示例系统555相似的组件,特征和/或功能)以及一个或更多个网络504(可能与本文描述的一个或更多个网络类似)。在本公开的一些实施例中,系统600可以包括提供商环境506,并且客户端设备603和/或604可以分别是客户端设备502。尽管发送客户端设备603被描述为源或发送者,但是发送客户端设备603可以被配置为同时执行目的地或接收客户端设备604的操作。类似地,尽管将一个或更多个接收客户端设备604描述为目标或接收者,但是一个或更多个接收客户端设备604可以是配置为同时执行源或发送客户端设备603的操作。
[0188]
在系统600中,对于视频会议会话,一个或更多个接收客户端设备604可以使用数据捕获组件614来捕获输入数据。输入数据可以是图像,音频,注视方向,注视位置和由输入设备560捕获的其他类型的数据。数据捕获组件614提供捕获的数据,用于训练编码器616将输入潜在空间(例如潜在空间z)中的输入投影到与合成神经网络(例如中间潜空间w)关联的潜在空间中。当数据是人605(例如与发送客户端设备603交互或正在观看发送客户端设备603的人)捕获的视频帧时,编码器616被训练为每个帧产生外观矢量。一旦训练了编码器616以将输入潜在空间中的输入投影到潜在空间w中的外观矢量,则编码器将人605的捕获帧转换为外观矢量。
[0189]
在训练期间学习编码器616的参数(例如权重),并且当部署编码器616以生成外观矢量时,使用该参数来处理输入的潜码。在一个实施例中,编码器616包括映射神经网络110,并且接收一个或更多个客户端设备604内的解码器622包括合成神经网络140和样式转换单元115。
[0190]
在一实施例中,编码器616可产生一帧的外观矢量,然后产生外观矢量调整一个或更多个后续帧。在一个实施例中,编码器616可以被配置为基于度量或以预定间隔生成外观矢量,以替代或补充一个或更多个帧的外观矢量调整。
[0191]
在另一个实施例中,一个或更多个接收客户端设备604可以在两个外观矢量之间进行内插以生成附加的外观矢量和附加的重建帧。附加的重建帧可以重建比捕获的帧更多的帧。外观矢量可以使解码器622重建不同的图像,可以将其视为高维空间中的矢量,并且可以对这些“关键”外观矢量进行插值,以产生与对应于“关键”外观矢量的重建帧“之间”的图像对应的外观矢量。成功训练的解码器622往往具有“更平滑”的潜在空间,其中内插的外观矢量忠实地捕获了捕获图像之间的平滑自然的视觉过渡。
[0192]
当发送客户端设备603没有为每个捕获图像生成外观矢量时,附加的重建帧可以为没有生成外观矢量的帧重建帧。可以通过重建附加帧来获得慢动作效果。当一个或更多个外观矢量被破坏或丢弃(由于网络拥塞等)并且未被接收客户端设备604接收到时,附加的重建帧可以为丢失的外观矢量重建帧。此外,可以由发送客户端设备603压缩外观矢量和外观矢量调整中的一个或更多个,并由一个或更多个接收客户端设备604使用常规技术解压缩。
[0193]
外观矢量(或外观矢量调整)由发送客户端设备603经由一个或更多个网络504发送到一个或更多个接收客户端设备604。发送客户端设备603还可以将复制数据615经由一个或更多个网络504发送到一个或更多个接收客户端设备604。在一个实施例中,复制数据615以安全的方式被存储在耦合到提供商环境506(如图6a所示)的存储器中和/或在发送客户端设备603中。在一个实施例中,人605可以选择一个或更多个单独的用户属性612,其被发送到通过一个或更多个接收客户端设备604以进行重建。
[0194]
在一个实施例中,通过训练合成神经网络来生成用于特定对象(诸如人605)的复制数据615。特定对象可以是真实的或合成的角色,包括人类和/或计算机生成的化身,例如人,动物,生物等。训练数据可以包括包含该对象的渲染的或捕获的视频的帧。可以使用特定对象面部的视频帧而不是使用许多不同人的面部图像来训练合成神经网络。在一个实施例中,训练可以从已经在许多不同的人的面部上进行训练的预先训练的合成神经网络开始,然后对特定对象的面部的视频帧进行微调。
[0195]
当执行附加训练时,可以预先生成复制数据615,或者可以连续地生成和/或更新复制数据615,或者可以周期性地更新复制数据615。在一个实施例中,发送客户端设备603可以使用图2d所示的生成对抗网络270配置来连续训练合成神经网络,以细化与人605相关联的复制数据615。在一个实施例中,除了编码器616之外,发送客户端设备603还包括解码器622;可以将人605的捕获图像与发送客户端设备603内的解码器622从外观矢量生成的重建图像进行比较。然后更改复制数据615,以减少在发送客户端设备内生成的重建图像与捕获的图像之间的差异。在另一个实施例中,当捕获图像也可用时,提供商环境506改变复制数据615,并且提供商环境506实现图2d中所示的gan 270训练框架以执行连续或周期性训练。
[0196]
接收客户端设备604可以经由通信接口621接收外观矢量和复制数据615,并且解码器622可以根据复制数据615来重建由外观矢量编码的图像。接收客户端设备604然后可以经由显示器624显示重建图像。在一个实施例中,一个或更多个接收客户端设备604还接
收一个或更多个用户属性612,该用户属性612也影响重建图像。解码器622可至少包括合成神经网络140,训练合成神经网络的实例以产生复制数据615,或者另一合成神经网络。
[0197]
在一个实施例中,合成神经网络140从512个16位浮点数的潜码重建高度逼真的1024
×
1024像素图像。在另一个实施例中,潜码包括少于512个浮点或整数格式。潜码由发送客户端设备603发送到接收客户端设备604,并用于合成人605的视频流。以30或60fps发送每个生成帧包含8kb的潜码表示240或480kbps

百万像素视频流通常所需带宽的一小部分。
[0198]
图6b示出了用于实现本公开的一些实施例的各种外观矢量。输入数据可以是图像606,音频607,注视方向,注视位置以及由输入设备560捕获的其他类型的数据。编码器616处理输入数据以生成外观矢量。外观矢量对输入数据的属性进行编码,并且是输入数据的压缩表示。在一个实施例中,外观矢量包括抽象潜码610(例如,中间潜码),一组(面部)界标点611,一组facs系数613或表示学习特征嵌入空间中的面部外观的矢量中的至少一个。
[0199]
图6c示出了根据一个实施例的用于gan辅助视频压缩的方法650的流程图。本文所述的方法650的每个方框包括可以使用硬件,固件,和/或软件的任意组合执行的计算过程。例如,各种功能可以由执行存储在存储器中的指令的处理器来执行。方法650也可以体现为存储在计算机存储介质上的计算机可用指令。该方法可以由独立应用程序,服务或托管服务(独立或与另一托管服务组合)或另一产品的插件(仅举几例)提供。另外,通过示例的方式,参照图6a的系统描述了方法650。但是,该方法可以附加地或替代地由任何一个系统或系统的任何组合来执行,包括但不限于本文所述的那些。此外,本领域普通技术人员将理解,执行方法650的任何系统在本公开的实施例的范围和精神内。
[0200]
在步骤655处,传输特定于第一对象的复制数据615,用于配置远程合成神经网络以基于复制数据615重建包括特征在内的面部图像。在一个实施例中,远程合成神经网络在客户端设备(诸如一个或更多个接收客户端设备604)内。在一个实施例中,远程合成神经网络包括解码器622。
[0201]
在步骤660,生成器神经网络处理第一对象或第二对象的捕获图像,以生成编码第一对象或第二对象的面部的外观矢量。第一和第二对象可以分别是真实的或合成的角色,包括人类和/或计算机生成的化身,例如人,动物,生物等。在一个实施例中,生成器神经网络包括映射神经网络,例如映射神经网络110。在一个实施例中,生成器神经网络包括映射神经网络和合成神经网络。在一个实施例中,抽象潜码由合成神经网络处理以产生第一对象的面部的预测图像。在一个实施例中,训练生成器神经网络以产生第一对象的预测图像,其与第一对象的捕获图像进行比较以学习复制数据615。在一个实施例中,将预测图像与捕获图像进行比较,并且生成器神经网络的参数会更新,以减少预测图像和捕获图像之间的差异。在一个实施例中,抽象潜码基于差异而被增量地更新,并且由合成神经网络进行处理以预测面部的后续图像。
[0202]
在一个实施例中,属性包括头部姿势和面部表情。在一个实施例中,外观矢量是面部的压缩编码。在一个实施例中,外观矢量包括抽象潜码,例如中间潜码和/或一个或更多个样式信号。在一个实施例中,外观矢量编码与衣服,发型或灯光相关的至少一个附加属性。至少一个附加属性可以从捕获图像或传感器中导出。在一个实施例中,外观矢量包括512个16位浮点数的潜码。
[0203]
在一个实施例中,外观矢量还包括第一对象或第二对象的附加部分的属性,并且远程合成神经网络还被配置为重建图像以包括附加部分。附加部分可以包括肩膀,脖子,手臂或手中的至少一个。
[0204]
在一个实施例中,在捕获图像中检测面部界标点并将其用于生成外观矢量。在一个实施例中,通过根据学习或优化的矩阵变换面部界标点来计算抽象潜码。在一个实施例中,通过学习优化矩阵的神经网络来实现优化矩阵。在一个实施例中,将抽象潜码与通过根据学习或优化的矩阵变换面部界标点而计算出的预测抽象潜码进行比较。更新矩阵以减少抽象潜码与预测的抽象潜码之间的差异。在一个实施例中,抽象潜码由合成神经网络处理以产生第一对象的面部的预测图像,将预测图像与捕获图像进行比较,并且更新矩阵以减小预测图像和捕获图像之间的差异。在一个实施例中,生成器神经网络包括映射神经网络,并且将在捕获图像中检测到的面部界标点输入到映射神经网络以计算抽象潜码。在一个实施例中,将与面部界标点配对的预测图像与与面部界标点配对的捕获图像进行比较以产生差异,并更新生成器神经网络的参数以减小差异。
[0205]
在步骤670,将外观矢量发送到远程合成神经网络。在一个实施例中,在视频会议会话期间将外观矢量发送到远程合成神经网络。在一个实施例中,捕获图像是视频的帧,并且生成器神经网络被配置为针对与附加的捕获图像相对应的视频的每个附加的帧生成外观矢量调整值。
[0206]
图6d示出了根据一个实施例的用于gan辅助的视频重建的方法675的流程图。在步骤680,获得特定于对象的复制数据615以配置合成神经网络。在一个实施例中,解码器622包括合成神经网络。对象可以是真实的或合成的。在一个实施例中,复制数据615包括在合成神经网络的训练期间学习的权重。
[0207]
在步骤685,接收外观矢量,该外观矢量对在视频帧中捕获的人脸的属性进行编码。在一个实施例中,人脸是人605的脸。在另一个实施例中,人脸不是人605的脸。例如,复制数据615可以表示对象的特征,例如精灵化身。在视频会议会话期间,由解码器622处理外观矢量,以重建人605的面部图像,该图像包括由复制数据615定义的特征。换句话说,在显示器624重建图像的观看者看到一个精灵化身,其表情和姿势与人605相匹配。
[0208]
在一个实施例中,外观矢量是人605的人脸的压缩编码。在一个实施例中,针对视频的每个附加帧接收外观矢量调整值。在一个实施例中,每个外观矢量调整被连续地应用于外观矢量,以针对包括特性的视频的每个附加帧重建人脸的附加图像。
[0209]
步骤690,合成神经网络处理外观矢量以重建人脸的图像,该图像包括由复制数据定义的特征。在一个实施例中,在观看环境中显示人脸的重建图像,其中合成神经网络根据观看环境中的照明来重建图像。例如,代替使用在外观矢量和/或复制数据615中编码的照明属性,合成神经网络基于显示重建图像的环境中的照明来重建图像。在一个实施例中,照明或其他信息可以由传感器提供。
[0210]
图7a是用于实施本公开的一些实施例的包括投影仪700的合成神经网络训练配置的概念图。在一个实施例中,使用图2d所示的生成对抗网络270配置,根据gan目标训练编码器710和合成神经网络715,以分别生成图像的外观矢量和重建图像。然后,可以使用图7a中所示的配置来共同训练合成神经网络715和编码器710。经训练的编码器710和合成神经网络715可以分别被部署为编码器616和解码器622,以在实时视频会议期间使用。
[0211]
在一个实施例中,投影仪700被实现在发送客户端设备603内,并且被用于改善由发送客户端设备603生成的外观矢量的质量。投影仪700通过包括合成神经网络715模仿一个或更多个接收客户端设备604的操作。解码器622可以是合成神经网络715的一个实例。如前所述,编码器616可以执行投影以映射人605的每个捕获图像以产生外观矢量。合成神经网络715从外观矢量重建预测图像720。
[0212]
训练损失单元725将预测图像720与对应的捕获图像705进行比较,以识别预测图像720和捕获图像705之间的差异。在一个实施例中,训练损失单元725可以使用学习到的感知图像块相似度(lpips)技术来识别相应图像块之间的像素值差异。训练损失单元725更新编码器710的参数(例如权重)以减小预测图像720和捕获图像705之间的差异。在一个实施例中,训练损失单元720被配置为更新合成神经网络715使用的参数,从而更新捕获图像中对象的复制数据615。
[0213]
在推理期间,当一个或更多个接收客户端设备604中的解码器622基于从发送客户端设备603接收到的外观矢量来重建图像时,发送客户端设备603可以继续操作投影仪700以持续改善编码器710和/或合成神经网络715的性能。以这种方式,编码器710和/或合成神经网络715可以在推理期间使用具有更多种不同属性的更多捕获图像来“训练”。继续仅更新编码器710内的合成神经网络715的参数不会影响外观矢量的质量。发送客户端设备603可以被配置为随着合成神经网络715的性能改善而更新复制数据615和/或解码器622的参数,使得解码器622的性能也可以改善。
[0214]
编码器710不是执行投影以映射每个捕获图像705以产生外观矢量,而是最初执行投影以产生用于第一捕获图像的第一外观矢量。在第一捕获图像之后,编码器710可以将第一外观矢量用作输入,从该输入产生第二外观矢量。当投影操作的计算量很大时,从先前的外观矢量预测外观矢量可能在计算上很有效,从而实现了实时性能。由于相邻的视频帧通常很相似,因此使用先前的外观矢量执行增量投影可以提高计算速度和图像质量的性能。投影操作不是从潜在空间中的任意点开始,而是从投影算法为前一帧生成的潜在矢量开始。编码器710有效地执行局部搜索而不是全局搜索以产生后续的外观矢量。增量投影还可以产生时间上更连贯的结果视频,从而减少由全局搜索中的不同选择引起的闪烁或帧间失真,从而避免每帧在潜在空间中产生不同的,几乎相等的点。
[0215]
在一个实施例中,投影仪700为每个外观矢量生成校正数据,其中基于预测图像720和捕获图像705之间的比较来计算校正数据。预测图像720可以用作可用于传统编码器(诸如h.265高效视频编码(hevc)格式编码器)的附加宏块预测方案。在一个实施例中,当接收客户端设备604仅支持常规视频编码数据时,发送客户端设备603可以生成可以由接收客户端设备604解码的常规编码视频数据。
[0216]
在一个实施例中,当与先前捕获图像相比在捕获图像中发生显著变化时,可以执行投影操作以映射捕获图像的另一外观矢量,然后恢复增量投影。可以计算置信度度量以确定何时发生显著变化。例如,置信度度量可以指示与先前捕获图像相比在捕获图像中改变的像素的数量。当置信度度量大于阈值时,可以启动投影操作。在另一个实施例中,可以针对预测图像或者比较对应的预测图像和捕获图像来评估置信度度量。在一个实施例中,接收客户端设备604(例如,远程合成神经网络)可以请求经由投影操作生成的外观矢量。客户端设备604可以基于对针对重建图像计算的置信度度量的评估来发起请求。
[0217]
图7b是用于实现本公开的一些实施例的包括图7a的投影仪700的端对端系统730的概念图。系统730至少包括发送客户端设备603和接收客户端设备604。编码器710在发送客户端设备603内,并生成通过一个或更多个网络504传输到接收客户端设备604内的解码器722的外观矢量。解码器722可以是合成神经网络715的实例。解码器722根据复制数据处理外观矢量以产生重建图像712。重建图像712然后可以在显示器624处显示给观看者。复制数据可以由捕获图像705中的人或观看者来选择。
[0218]
图7c是用于实现本公开的一些实施例的,用于生成训练数据的配置的概念图。使用投影来生成潜码的替代方法是使用矩阵或神经网络将面部界标点转换成潜码。当使用面部界标点时,使用界标训练数据学习矩阵的参数或神经网络的权重。面部界标点可以由界标检测器735从捕获图像中提取以产生界标训练数据。界标检测器735可以使用常规计算机视觉技术或神经分析技术来实现。面部标志性点描述了面部关键点的位置(眼睑和嘴唇的边缘,瞳孔中心,鼻梁等),并捕获了面部的重要运动和变形。界标检测器735可用于检测其他类型的界标,包括不限于图像空间的面部界标。例如,界标可以是与面部动作编码系统(facs)有关的一组系数,面部外观的其他属性,或表示学习的特征嵌入空间中的面部外观的矢量。facs定义了一组与所显示的情绪相对应的面部肌肉运动。
[0219]
所提取的面部界标点可以用作外观矢量,用于生成外观矢量或与外观矢量分开提供。通常,不同的训练数据集可以用于生成针对不同对象的复制数据(真实和合成的)。此外,不同的训练数据集可用于为同一主题生成不同的复制数据,其中每天或每个会话的属性都不同,例如人的衣服,发型以及由于化妆,照明等特定于每个复制数据的变化。
[0220]
图7d是用于实现本公开的一些实施例的,用于使用面部界标点来预测外观矢量的训练配置的概念图。在一个实施例中,线性回归用于学习或优化将面部界标点的矢量转换为外观矢量(例如,潜码矢量)的矩阵。与投影捕获图像以产生外观矢量相比,使用面部界标来产生外观矢量可能对训练图像和实时捕获图像之间的变化(不同的发型,不同的服装等)更具弹性。
[0221]
界标训练数据由回归矩阵740转换为与接收客户端设备604内的合成神经网络或解码器722相关联的潜在空间。具体而言,根据回归矩阵转换每个训练图像的面部界标点或神经网络以产生预测的外观矢量。训练损失单元745将由训练的编码器710生成的投影外观矢量与预测外观矢量进行比较,并更新回归矩阵的参数以减小投影外观矢量与预测外观矢量之间的差异。
[0222]
图7e是用于实现本公开的一些实施例的端到端系统750的概念图。系统750至少包括发送客户端设备603和接收客户端设备604。界标检测器735在发送客户端设备603内,并且生成通过一个或更多个网络504传输到接收客户端设备604内的解码器722的外观矢量。解码器722可以是合成神经网络715的实例。解码器722根据复制数据处理外观矢量来产生重建图像712。然后,重建图像712可以在显示器624处显示给观看者。复制数据可以由捕获图像705中的人或观看者来选择。
[0223]
在一个实施例中,代替将外观矢量发送给解码器722,发送客户端设备603可以替代地针对每个捕获图像发送检测到的界标。在这样的实施例中,回归矩阵740包括在接收客户端设备604内,并且处理检测到的界标以在接收客户端设备604内产生外观矢量。可以将在训练期间学习的回归矩阵740所使用的参数以及复制数据提供给接收方客户端设备604。
[0224]
常规的压缩技术可以应用于外观矢量,例如通过对面部界标的坐标进行量化和增量编码。在一个实施例中,当使用检测到的界标来生成外观矢量时,复制数据也可以用于控制重建图像的特征,其相较于捕获图像中人物的特征。重建的人类对象的属性,例如发型,衣服和/或照明,可以与外观矢量或复制数据(例如,过滤器)一起提供。
[0225]
因为一组界标训练数据可以同样好地投影或变换为许多不同的预测外观矢量,所以在训练期间由回归矩阵740学习的回归矩阵在代数方面可以具有较大的“零空间”。换句话说,可能存在高维潜在空间的许多区域,从这些区域可以生成很好地映射到界标训练数据的重建图像。但是,重建图像有时可能无法与捕获图像匹配,从而导致时间伪像。例如,在接收者观看的动画中,时间伪像可能表现为细微但明显的闪烁或奇特的抖动失真。可以通过学习回归矩阵直接改善面部界标到潜在空间的映射来改善重建图像的质量。
[0226]
图8a是用于实现本公开的一些实施例的端到端系统训练配置800的概念图。可以首先使用图2d中所示的生成对抗网络270配置以gan目标训练合成神经网络715,以分别生成图像的外观矢量和重建图像。然后在配置800中,与合成神经网络715一起训练回归矩阵740,以分别预测图像的外观矢量并重建图像。配置800可以用于执行端到端回归,以将面部界标转换为外观矢量。经训练的回归矩阵740和合成神经网络715可以分别被部署为编码器710和解码器722,以在实时视频会议期间使用。
[0227]
训练损失单元825将重建图像与图像训练数据进行比较以识别重建图像与图像训练数据之间的差异。在一个实施例中,训练损失单元825可以使用lpips技术来识别差异。训练损失单元825更新回归矩阵740的参数以减小重建图像与图像训练数据之间的差异。在一个实施例中,训练损失单元825被配置为更新合成神经网络715所使用的参数,从而更新所捕获图像中对象的复制数据。
[0228]
图8b是用于实现本公开的一些实施例的端到端系统训练配置850的概念图。配置850可以用于联合训练编码器716,以使用条件gan目标将面部界标转换为外观矢量和合成神经网络715。图2d中所示的生成对抗网络270配置可以与编码器716和合成神经网络715一起使用,以分别预测图像的外观矢量和重建图像。鉴别器神经网络875确定与也输入到编码器的地标训练数据配对的重建图像是否看起来类似于与正确界标配对的图像训练数据。基于该确定,训练损失单元835调整鉴别器875,合成神经网络715和/或编码器716的参数。一旦利用条件gan目标训练了合成神经网络715,则编码器716和/或合成神经网络715可以在实时视频会议期间使用。经训练的编码器716和合成神经网络715可以分别部署为编码器616和解码器622。
[0229]
在一个实施例中,合成神经网络715被配置为产生与背景部分分离的每个重建图像的前景部分。前景部分至少包括重建图像的面部部分,还可以包括出现在捕获图像中的人的肩膀和其他部位。合成神经网络715还可以被配置为生成指示单独的前景和背景部分的α蒙版(通道)或遮罩。在一个实施例中,一个或更多个接收客户端设备604可以将头部和面部重建图像的前景部分合成到任意背景上,或者完全修改或删除背景部分
[0230]
在训练期间,在将每个重建图像的前景部分和α蒙版进行合成以生成鉴别器神经网络875接收并对其进行逼真度评估的重建图像之前,它们可以相对于背景部分随机移动。效果是训练合成神经网络715以生成高质量的α蒙版。相对位移(通过移动)是一种简单而鲁棒的技术,其使得在随机位移的部分被合成之后,鉴别器神经网络875分配高的真实感分
数。相对位移还可以增强编码器716和/或合成神经网络715(例如,生成器神经网络)解开重建图像的背景,姿势和纹理属性的能力,并提高生成器神经网络的有效性。可以使用类似的技术来鼓励合成神经网络715分割并合成图像中捕获的人605的其他方面,例如在手势中使用的衣服或手和手臂。
[0231]
在一个实施例中,编码器616、710或716被配置成将捕获图像中的至少面部与背景图像数据(例如,背景部分)分离,对背景图像数据进行编码,并且将编码后的背景图像数据从发送客户端设备603发送,以被一个或更多个接收客户端设备604与人脸的重建图像组合。在一个实施例中,背景图像数据由发送客户端设备603使用常规技术压缩,以传输到一个或更多个接收客户端设备604。在一个实施例中,通过操作发送客户端设备603中的合成神经网络715减少了传输背景图像数据所需的带宽,并根据用于重建图像的α蒙版,去除被重建图像的前景部分覆盖的背景图像数据的区域。当存在高可信度,即与先前重建图像相比背景部分被改变时,背景部分的部分覆盖区域可以被发送到一个或更多个接收客户端设备604。
[0232]
在一个实施例中,鉴别神经网络875的注意力可以集中在面部的语义关键区域上,例如眼睛,嘴和眉毛。在一个实施例中,例如使用人工编码的试探法或在人类注视跟踪数据上训练的图像显著性网络来预测每个训练图像的语义上最重要的区域。在输入到鉴别器神经网络875的一些图像中的语义重要区域之外,图像分辨率可以被人为地降低,或者图像可能以其他方式被干扰。在语义重要区域之外的区域的修改可以导致合成神经网络715将附加的容量分配给重建图像的区域,这对于人类观看者将是最重要的。
[0233]
在一个实施例中,将音频数据直接作为波形,频谱图或音频的类似低级表示,或者编码为诸如音素的高级表示,并入到生成器神经网络训练配置800或850中。当音频数据是音素时,可以以类似于面部界标的方式来检测音素。在一个实施例中,鉴别器神经网络875学习在面部应该被制造出来的声音,音素或话语的上下文中判断面部图像的真实性。然后,合成神经网络715学习产生与输入音频数据很好对应的面部。换句话说,一个或更多个接收客户端设备接收可由解码器622用来重建面部图像的音频数据。
[0234]
在一个实施例中,合成神经网络715增加了存储器以处理音频数据。例如,可以使用递归神经网络(rnn),长期短期记忆(lstm)和“变压器”关注网络来实现合成神经网络715。合并音频处理能力可用于改善重建图像,包括分组损失或网络服务质量降低视频流但保留音频数据的情况。
[0235]
在一个实施例中,重建图像被用于改善重建的音频数据的质量。带宽效率极高的外观矢量流可编码有用的“唇读”式信息(例如,嘴巴,舌头,脸颊的形状,嘴唇合拢和张开的确切瞬间等),以改善不良的音频流。可以训练生成器神经网络以在一个或更多个接收客户端设备604上生成改进的,降噪的,源分离的或空间化的音频流。
[0236]
控制面部外观各方面的能力提供了机会来控制重建的属性,例如基于观察者的注视来控制重建的面部的注视方向。从观看者的角度来看,视频会议的一个常见问题是缺乏明显的眼神交流。由于摄像机很少放置在捕获视频图像的人的眼睛附近,因此视频会议中的谈话者很少感觉到好像在进行眼神交流。眼神交流是社交活动的重要提示,人们认为眼神交流的缺乏是人们更喜欢面对面会议而不是视频会议的原因。同样,在多人视频会议中,人们无法分辨谁在看谁,尤其是由于每个参与者屏幕上的视频窗口布局可能不同。先前的
工作已经探索了重新渲染眼睛以创建眼神接触的感觉,但是可以使用潜码,面部界标或其他定义注视位置和/或方向的外观矢量的操纵来增加感知的眼神接触。
[0237]
例如,合成神经网络715可以稍微改变重建图像中对象的眉头甚至头部方向,以说明不同的注视点或位置。所述修改可以与训练协议耦合,所述训练协议被设计为鼓励合成神经网络715将注视方向与其他方面(诸如面部身份)解耦。因为视频会议系统中的重建发生在一个或更多个接收客户端设备604上,所以视频会议系统可以利用关于参与者视频的布局的本地知识,并且一个或更多个接收客户端设备604的摄像机或传感器可以提供观看者的注视位置。注视位置是显示器上与观看者注视方向相交的位置。可以通过解码器来修改显示给观看者的重建图像中的对象的视线,使得该对象看起来是在看显示另一重建图像的位置或观看者的视线位置。注视位置可以位于正在讲话的对象的重建图像处。操纵视线和注意力的概念已广泛应用于视频会议以外的领域,例如远程呈现化身,其空间关系对于远程呈现系统中的不同参与者而言可能看起来有所不同。
[0238]
在一个实施例中,在观看环境中显示人脸的重建图像,其中合成神经网络715根据在观看环境中捕获的观看者的注视位置来重建图像。在一个实施例中,图像中人脸的注视方向是朝向注视位置。在一个实施例中,外观矢量包括与人脸所观看的第二图像相对应的注视位置,并且人脸的重建图像在观看环境中的注视方向朝向也重建并显示在观看环境中的第二图像。
[0239]
在图像重建期间修改面部外观的能力使得能够改变照明。可以基于来自观看环境中的传感器的复制数据或环境数据来改变照明。在观看环境中匹配照明可能会使广播对象的存在更具幻觉。当观看者的眼睛跟踪数据可用时,解码器622或722也可以应用运动视差。通常,与实际大小一样的3d内容尊重观看者的运动视差,并且模仿环境的照明本质上比没有这些功能的图像更具吸引力。
[0240]
在更高的水平上,可以通过引入异步中断来提高社交效率和通过视频会议进行的对话的流程。如今的视频会议缺少打断,因为当一个人想要打断时,很难引起演讲者的关注或注意。同样,由于开始说话与对方听到打断之间的不自然滞后,每次打断都对谈话流程造成更大的干扰。该问题的可能解决方案是当第一个人开始说话时对显示给第一个人的重建图像中的打断的影响进行建模,以预期在远程客户端设备上查看第一个人重建图像的第二个人的反应。关键观察结果是,当第二个人在视频会议会话期间尝试打断第一个人时,就会发生社交交易。但是,要成功,两个人的互动不必相同。
[0241]
在一个实施例中,可以由合成神经网络715或解码器622或722使用从两个不同的捕获图像生成的外观矢量来执行样式混合,以生成重建图像。如先前结合图1a,1b和2b所描述的,外观矢量可以被变换为一组统计参数,称为样式,其在金字塔层次的不同级别上影响合成神经网络715。例如,在训练了合成神经网络715以生成面部图像之后,影响合成网络4
×
4和8
×
8分辨率的“粗略样式”往往会控制所生成面部图像的高级方面,例如姿势,性别,头发的长度,而影响16
×
16和32
×
32的“中等样式”则控制着面部特征

是什么使给定的人看起来与众不同,与父母相似,等等。
[0242]
在一个实施例中,样式混合用于以微妙的方式改变重建图像的外观。例如,将使用运动模糊来捕获人605快速移动的帧,并且从所得外观矢量重建的图像将忠实地重新创建运动模糊。但是,通过将每个帧的相应外观矢量的粗略样式与选定的不包含运动模糊的帧
的精细样式进行混合,重建图像可以正确捕获人脸的运动和变形,同时还保留了精细的细节,显得清晰且没有运动模糊。类似的样式混合可用于制作视频,使对象看起来更加清醒或警觉,或者化了妆,穿着某些衣服或特定表情。
[0243]
在一个实施例中,可以由合成神经网络715执行样式混合,以通过将用于静止图像的精细样式控制与用于模糊图像的粗略样式控制相结合来锐化图像的运动模糊部分。例如,外观矢量包括与视频中人脸模糊的第一帧相对应的第一部分和与视频中人脸被清晰定义的第二帧相对应的第二部分。合成神经网络715进行的处理结合第一部分和第二部分,使用第一部分“控制粗略样式”和第二部分“控制精细样式”重建人脸被清晰定义的图像。在另一示例中,当在帧中捕获的人脸模糊时,合成神经网络715通过使用外观矢量来控制粗略样式并使用复制数据来控制精细样式来重建人脸被清晰定义的图像。
[0244]
训练和部署生成神经网络组件以使用外观矢量,重建数据和特定属性数据对图像进行编码和重建可以提供更吸引人的视频会议体验。外观矢量为重建的视频帧提供姿势,表情等的实时信息,复制数据为正在广播其相似度的人的基本特征做出了贡献。复制数据(例如经训练的合成神经网络的权重)在训练过程中确定并传输到接收器。用于训练的图像中人类对象的特征可能会应用于重建的视频帧,即使在用于生成外观矢量的捕获图像中出现了不同的人类对象。重建的人类对象的属性(例如发型,衣服和/或照明)可以提供外观矢量或复制数据。例如,可以基于观看者的视线方向或在视频会议期间显示的参与者的图像的相对位置,来控制一个或更多个重建的人类对象的视线。
[0245]
传输低带宽外观矢量以在远程客户端设备处重建图像减少了提供交互式视频会议体验所需的性能所需的带宽。时间上采样可以用于通过在不同的外观矢量之间进行插值来生成附加帧。可以将常规压缩技术应用于外观矢量和/或背景图像。音频数据可以被发送并用于辅助视频帧的重建。
[0246]
注意,本文描述的技术可以体现在存储在计算机可读介质中的可执行指令中,以供基于处理器的指令执行机器,系统,装置或设备使用或与其结合使用。本领域技术人员将理解,对于一些实施例,可以包括各种类型的计算机可读介质来存储数据。如本文所使用的,“计算机可读介质”包括用于存储计算机程序的可执行指令的任何合适的介质中的一个或更多个,使得指令执行机器,系统,装置或设备可以从计算机可读介质读取(或获取)指令,并执行用于执行所描述的实施例的指令。合适的存储格式包括电子,磁性,光学和电磁格式中的一种或更多种。常规示例性计算机可读介质的非详尽列表包括:便携式计算机软盘;随机存取存储器(ram);只读存储器(rom);可擦可编程只读存储器(eprom);闪存设备;光学存储设备,包括便携式光盘(cd),便携式数字视频光盘(dvd)等。
[0247]
应该理解,附图中示出的组件的布置是出于说明的目的,并且其他布置也是可能的。例如,本文描述的一个或更多个元件可以全部或部分地实现为电子硬件组件。可以以软件,硬件或软件和硬件的组合来实现其他元件。此外,可以组合这些其他元件中的一些或全部,可以完全省略一些其他元件,并且可以添加附加组件,同时仍实现本文所述的功能。因此,本文描述的主题可以体现为许多不同的变型,并且所有这些变型都被认为在权利要求的范围内。
[0248]
为了辅助对本文所述主题的理解,根据动作序列描述了许多方面。本领域技术人员将认识到,各种动作可以由专用电路或电路,由一个或更多个处理器执行的程序指令,或
由两者的组合来执行。本文对任何动作序列的描述并不旨在暗示必须遵循为执行该序列而描述的特定顺序。除非本文另外指出或与上下文明显矛盾,否则本文描述的所有方法可以以任何合适的顺序执行。
[0249]
在描述主题的上下文中(特别是在所附权利要求的上下文中)术语“一”,“一个”和“该”以及类似的引用的使用应解释为涵盖单数形式和复数形式。除非本文另有说明或与上下文明显矛盾,否则为复数形式。术语“至少一个”后面是一个或更多个项目的列表(例如,“a和b中的至少一个”)应理解为是指从所列项目(a或b)中选择的一个项目或所列项目(a和b)中两个或更多个的任意组合,除非本文另有说明或与上下文明显矛盾。此外,前述描述仅出于说明的目的,而非出于限制的目的,因为所寻求的保护范围由下文所述的权利要求及其等同形式限定。除非另外要求,否则本文提供的任何和所有示例或示例性语言(例如“诸如”)的使用仅旨在更好地说明主题,并且不对主题的范围构成限制。在权利要求书和书面说明书中,术语“基于”和其他类似的短语表示产生结果的条件的使用,并不旨在排除产生该结果的任何其他条件。说明书中的任何语言都不应被解释为指示任何未要求保护的要素对于实施所要求保护的发明是必不可少的。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献

  • 日榜
  • 周榜
  • 月榜