CN113408694A - 用于生成式神经网络的权重解调 - Google Patents
用于生成式神经网络的权重解调 Download PDFInfo
- Publication number
- CN113408694A CN113408694A CN202110276236.8A CN202110276236A CN113408694A CN 113408694 A CN113408694 A CN 113408694A CN 202110276236 A CN202110276236 A CN 202110276236A CN 113408694 A CN113408694 A CN 113408694A
- Authority
- CN
- China
- Prior art keywords
- neural network
- feature
- pattern
- data
- weights
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 222
- 238000012549 training Methods 0.000 claims abstract description 115
- 238000013507 mapping Methods 0.000 claims abstract description 50
- 230000008859 change Effects 0.000 claims abstract description 20
- 238000012545 processing Methods 0.000 claims description 112
- 238000000034 method Methods 0.000 claims description 110
- PXFBZOLANLWPMH-UHFFFAOYSA-N 16-Epiaffinine Natural products C1C(C2=CC=CC=C2N2)=C2C(=O)CC2C(=CC)CN(C)C1C2CO PXFBZOLANLWPMH-UHFFFAOYSA-N 0.000 claims description 11
- 238000012360 testing method Methods 0.000 claims description 10
- 230000015572 biosynthetic process Effects 0.000 abstract description 11
- 238000003786 synthesis reaction Methods 0.000 abstract description 11
- 210000004209 hair Anatomy 0.000 abstract description 8
- 239000011521 glass Substances 0.000 abstract description 7
- 239000002131 composite material Substances 0.000 abstract description 5
- 238000012986 modification Methods 0.000 description 47
- 230000004048 modification Effects 0.000 description 46
- 238000010586 diagram Methods 0.000 description 34
- 238000010606 normalization Methods 0.000 description 34
- 230000006870 function Effects 0.000 description 33
- 230000008569 process Effects 0.000 description 33
- 238000004891 communication Methods 0.000 description 29
- 238000003860 storage Methods 0.000 description 25
- 238000009826 distribution Methods 0.000 description 23
- 239000011159 matrix material Substances 0.000 description 23
- 238000005192 partition Methods 0.000 description 20
- 230000004913 activation Effects 0.000 description 17
- 238000001994 activation Methods 0.000 description 17
- 230000009466 transformation Effects 0.000 description 15
- 238000006243 chemical reaction Methods 0.000 description 14
- 239000000047 product Substances 0.000 description 14
- 230000000694 effects Effects 0.000 description 13
- 238000010801 machine learning Methods 0.000 description 11
- 239000013598 vector Substances 0.000 description 11
- 239000004065 semiconductor Substances 0.000 description 10
- 238000013135 deep learning Methods 0.000 description 9
- 239000012634 fragment Substances 0.000 description 9
- 239000000203 mixture Substances 0.000 description 8
- 238000003062 neural network model Methods 0.000 description 8
- 238000013519 translation Methods 0.000 description 8
- 230000014616 translation Effects 0.000 description 8
- 239000000872 buffer Substances 0.000 description 7
- 238000004422 calculation algorithm Methods 0.000 description 7
- 230000001976 improved effect Effects 0.000 description 7
- 238000002156 mixing Methods 0.000 description 7
- 230000001815 facial effect Effects 0.000 description 6
- 238000005457 optimization Methods 0.000 description 6
- 230000002093 peripheral effect Effects 0.000 description 6
- 230000004044 response Effects 0.000 description 6
- 238000012546 transfer Methods 0.000 description 6
- 241000282326 Felis catus Species 0.000 description 5
- 238000009825 accumulation Methods 0.000 description 5
- 230000003044 adaptive effect Effects 0.000 description 5
- 238000007667 floating Methods 0.000 description 5
- 230000008901 benefit Effects 0.000 description 4
- 238000007726 management method Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 4
- 230000010076 replication Effects 0.000 description 4
- 230000000717 retained effect Effects 0.000 description 4
- 238000005070 sampling Methods 0.000 description 4
- 230000002194 synthesizing effect Effects 0.000 description 4
- XLYOFNOQVPJJNP-UHFFFAOYSA-N water Substances O XLYOFNOQVPJJNP-UHFFFAOYSA-N 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 3
- 230000006835 compression Effects 0.000 description 3
- 238000007906 compression Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 238000001514 detection method Methods 0.000 description 3
- 238000006073 displacement reaction Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000009499 grossing Methods 0.000 description 3
- 230000004807 localization Effects 0.000 description 3
- 230000033001 locomotion Effects 0.000 description 3
- 210000002569 neuron Anatomy 0.000 description 3
- 238000009877 rendering Methods 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 238000009827 uniform distribution Methods 0.000 description 3
- HPTJABJPZMULFH-UHFFFAOYSA-N 12-[(Cyclohexylcarbamoyl)amino]dodecanoic acid Chemical compound OC(=O)CCCCCCCCCCCNC(=O)NC1CCCCC1 HPTJABJPZMULFH-UHFFFAOYSA-N 0.000 description 2
- 206010014970 Ephelides Diseases 0.000 description 2
- 208000003351 Melanosis Diseases 0.000 description 2
- 241001465754 Metazoa Species 0.000 description 2
- 230000004888 barrier function Effects 0.000 description 2
- 210000004556 brain Anatomy 0.000 description 2
- 239000003086 colorant Substances 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000013527 convolutional neural network Methods 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 230000004069 differentiation Effects 0.000 description 2
- 238000009509 drug development Methods 0.000 description 2
- 230000007613 environmental effect Effects 0.000 description 2
- 238000001914 filtration Methods 0.000 description 2
- 210000003128 head Anatomy 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 238000003780 insertion Methods 0.000 description 2
- 230000037431 insertion Effects 0.000 description 2
- 239000013067 intermediate product Substances 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 230000001537 neural effect Effects 0.000 description 2
- 239000011148 porous material Substances 0.000 description 2
- 239000000758 substrate Substances 0.000 description 2
- 230000008093 supporting effect Effects 0.000 description 2
- 238000000844 transformation Methods 0.000 description 2
- 230000001133 acceleration Effects 0.000 description 1
- 230000002411 adverse Effects 0.000 description 1
- 230000002776 aggregation Effects 0.000 description 1
- 238000004220 aggregation Methods 0.000 description 1
- 230000003190 augmentative effect Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 230000001143 conditioned effect Effects 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 238000007405 data analysis Methods 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 238000003745 diagnosis Methods 0.000 description 1
- 201000010099 disease Diseases 0.000 description 1
- 208000037265 diseases, disorders, signs and symptoms Diseases 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 238000002124 flame ionisation detection Methods 0.000 description 1
- 238000011773 genetically engineered mouse model Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000011068 loading method Methods 0.000 description 1
- 230000007774 longterm Effects 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000006386 memory function Effects 0.000 description 1
- 238000000329 molecular dynamics simulation Methods 0.000 description 1
- 238000012900 molecular simulation Methods 0.000 description 1
- 238000009828 non-uniform distribution Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000010422 painting Methods 0.000 description 1
- 230000008447 perception Effects 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 238000004445 quantitative analysis Methods 0.000 description 1
- 230000000306 recurrent effect Effects 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 230000003252 repetitive effect Effects 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 230000011664 signaling Effects 0.000 description 1
- 238000007619 statistical method Methods 0.000 description 1
- 238000013179 statistical model Methods 0.000 description 1
- 230000000153 supplemental effect Effects 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
- 230000007723 transport mechanism Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
- 238000012800 visualization Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T11/00—2D [Two Dimensional] image generation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/047—Probabilistic or stochastic networks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/084—Backpropagation, e.g. using gradient descent
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/088—Non-supervised learning, e.g. competitive learning
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N7/00—Computing arrangements based on specific mathematical models
- G06N7/01—Probabilistic graphical models, e.g. probabilistic networks
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Artificial Intelligence (AREA)
- Computing Systems (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Life Sciences & Earth Sciences (AREA)
- General Engineering & Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Probability & Statistics with Applications (AREA)
- Image Analysis (AREA)
- Image Processing (AREA)
Abstract
本发明公开了用于生成式神经网络的权重解调。基于样式的生成式网络架构使得能够对合成输出数据(诸如图像)进行特定于比例的控制。在训练期间,基于样式的生成式神经网络(生成器神经网络)包括映射网络和合成网络。在预测期间,映射网络可以被省略、复制或评估若干次。合成网络可用于生成具有多种属性的高度变化的、高质量的输出数据。例如,当用于生成人的面部的图像时,可变化的属性是年龄、种族、相机视点、姿势、面部形状、眼镜、颜色(眼睛、头发等)、发型、照明、背景等。取决于任务,生成的输出数据可以包括图像、音频、视频、三维(3D)对象、文本等。
Description
要求优先权
本申请是2019年5月21日提交的、名称为“基于样式的用于生成式神经网络的架构(A Style-Based Architecture For Generative Neural Networks)”的美国专利申请No.16/418,317的部分延续,该申请要求2018年11月14日提交的、名称为“基于样式的用于生成式神经网络的架构”的美国临时申请No.62/767,417,以及2018年11月15日提交的、名称为“基于样式的用于生成式神经网络的架构”的美国临时申请No.62/767,985的权益,这些申请的全部内容通过引用并入本文。本申请还要求于2020年3月16日提交的、名称为“基于样式的用于生成式神经网络的架构以提高图像质量(AStyle-Based Architecture ForGenerative Neural Network for Improved Image Quality)”的美国临时申请No.62/990,012的权益,其全部内容通过引用并入本文。
技术领域
本发明涉及神经网络,尤其涉及用于使用特定于比例的控制来合成数据的生成器架构。
背景技术
近年来,由生成式对抗网络(GAN)产生的图像的分辨率和质量都有了很大的提高。然而,GAN仍然继续充当黑匣子,并且尽管最近做出了努力,但是仍然缺乏对图像合成过程的各个方面的理解,例如,随机特征的起源。潜在空间的属性也知之甚少,并且通常展示的潜在空间插值法没有提供定量方法来在不同GAN之间进行比较。需要解决这些问题和/或与现有技术相关联的其他问题。
发明内容
基于样式的生成式网络架构使得能够对合成输出数据(例如图像)进行特定于比例的控制。在训练期间,基于样式的生成式神经网络(生成器神经网络)包括映射网络和合成网络。在预测期间,映射网络可以被省略、复制或评估若干次。合成网络可用于生成具有多种属性的高度变化的、高质量的输出数据。例如,当用于生成人的面部的图像时,可以变化的属性是年龄、种族、相机视点、姿势、面部形状、眼镜、颜色(眼睛、头发等)、发型、照明、背景等。取决于任务,生成的输出数据可以包括图像、音频、视频、三维(3D)对象、文本等。
公开了一种用于使用映射神经网络和合成神经网络来合成输出数据的方法、计算机可读介质和系统。由映射神经网络对输入空间中定义的潜码进行处理,以产生在中间潜在空间中定义的中间潜码。中间潜码被转换成第一样式信号。在合成神经网络的第一层处应用第一样式信号,以根据第一样式信号修改第一中间数据,以产生经修改的第一中间数据。在一个实施例中,中间潜码是经由仿射变换被转换为第一样式信号的向量。处理经修改的第一中间数据以产生第二中间数据,并且在合成神经网络的第二层处应用第二样式信号,以根据第二样式信号修改第二中间数据,以产生第二经修改的中间数据。在一个实施例中,中间潜码是第一样式信号和第二样式信号的组合,并且提取中间潜码的部分以产生第一样式信号和/或第二样式信号。在一个实施例中,中间潜码经由仿射变换被转换为第二样式信号。在一个实施例中,在输入空间中定义的第二潜码由映射神经网络处理,以产生在中间潜在空间中定义的第二中间潜码,并且第二中间潜码被转换为第二样式信号。在一个实施例中,经修改的第一中间数据由诸如3×3卷积层之类的后续层处理,以产生第二中间数据。处理第二中间数据,以产生包括与第二中间数据相对应的内容的输出数据。
公开了一种使用合成神经网络来合成输出数据的方法、计算机可读介质和系统。在合成神经网络的第一层处应用第一组空间噪声,以生成经修改的第一中间数据,其包括与基于第一组空间噪声修改的第一中间数据相对应的内容。处理经修改的第一中间数据以产生第二中间数据,并且在合成神经网络的第二层处应用第二组空间噪声,以生成经修改的第二中间数据,其包括与基于第二组空间噪声修改的第二中间数据相对应的内容。处理经修改的第二中间数据以产生输出数据,其包括与第二中间数据相对应的内容。
附图说明
图1A示出了根据一个实施例的基于样式的生成器系统的框图。
图1B示出了根据一个实施例的由基于样式的生成器系统生成的图像。
图1C示出了根据一个实施例的用于基于样式的生成的方法的流程图。
图2A示出了根据一个实施例的图1A所示的映射神经网络的框图。
图2B示出了根据一个实施例的图1A中所示的合成神经网络的框图。
图2C示出了根据一个实施例的用于使用基于样式的生成器系统应用空间噪声的方法的流程图。
图2D示出了根据一个实施例的GAN系统的框图。
图3示出了根据一个实施例的并行处理单元。
图4A示出了根据一个实施例的、图3的并行处理单元内的通用处理集群。
图4B示出了根据一个实施例的、图3的并行处理单元的存储器分区单元。
图5A示出了根据一个实施例的、图4A的流式多处理器。
图5B是根据一个实施例的、使用图3的PPU实现的处理系统的概念图。
图5C示出了可以实现各种先前实施例的各种架构和/或功能的示例性系统。
图5D示出了可用于训练和利用机器学习的示例性系统的组件,以用于实现本公开的一些实施例。
图6A示出了根据一个实施例的由基于样式的生成器系统生成的图像中的伪像。
图6B示出了根据一个实施例的图2B所示的处理块的框图。
图6C示出了用于实现本公开的一些实施例的样式块的框图。
图6D示出了用于实现本公开的一些实施例的另一样式块的框图。
图6E示出了根据一个实施例的用于解调由生成器神经网络应用的权重的方法的流程图。
图6F示出了根据一个实施例的使用经解调的权重生成的图像和特征图。
图7A示出了根据一个实施例的由基于样式的生成器系统生成的具有高感知路径长度(PPL)得分的图像。
图7B示出了根据一个实施例的使用基于样式的生成器系统生成的具有低PPL得分的图像。
图7C示出了根据一个实施例的一组图像的PPL得分的图。
图7D示出了根据一个实施例的当使用平滑正则化时生成的一组图像的PPL得分的图。
图7E示出了根据一个实施例的没有正则化的路径的概念图。
图7F示出了根据一个实施例的具有正则化的路径的概念图。
图8A示出了用于实现本公开的一些实施例的使用图6D的样式块实现的合成神经网络的框图。
图8B示出了根据一个实施例的生成器神经网络训练系统的框图。
图8C示出了根据一个实施例的用于在生成器神经网络中使用的、用于平滑正则化的方法的流程图。
具体实施方式
基于样式的生成式网络架构使得能够对合成输出进行特定于比例的控制。基于样式的生成器系统包括映射网络和合成网络。从概念上讲,在一个实施例中,基于由映射网络提供的样式控制信号修改由合成网络的不同层生成的特征图(包含表示输出数据的内容的空间上变化的信息,其中每个特征图是中间激活的一个通道)。可以从相同或不同的潜码生成用于合成网络的不同层的样式控制信号。潜码可以是从例如高斯分布提取的随机N维向量。合成网络的不同层的样式控制信号可以从相同或不同的映射网络生成。另外,空间噪声可被注入到合成网络的每一层中。
图1A示出了根据一个实施例的基于样式的生成器系统100的框图。基于样式的生成器系统100包括映射神经网络110、样式转换单元115和合成神经网络140。在训练合成神经网络140之后,当预先计算由样式转换单元115产生的中间潜码和/或样式信号时,可以在没有映射神经网络110的情况下部署合成神经网络140。在一个实施例中,可以包括附加的样式转换单元115,以将由映射神经网络110生成的中间潜码转换为第二样式信号,或者将不同的中间潜码转换为第二样式信号。一个或更多个附加映射神经网络110可以被包括在基于样式的生成器系统100中,以从潜码或附加潜码中生成附加中间潜码。
基于样式的生成器系统100可以由程序、定制电路或定制电路和程序的组合来实现。例如,可以使用GPU(图形处理单元)、CPU(中央处理单元)或能够执行本文所述操作的任何处理器来实现基于样式的生成器系统100。此外,本领域普通技术人员将理解,执行基于样式的生成器系统100操作的任何系统都在本发明的实施例的范围和精神内。
传统上,通过输入层(诸如前馈神经网络的第一层)将潜码提供给生成器。相反,在一个实施例中,代替接收潜码,合成神经网络140从学习后的常数开始,并且潜码被输入到映射神经网络110。在一个实施例中,第一中间数据是学习后的常数。给定输入潜在空间中的潜码z,非线性映射网络首先产生中间潜码映射神经网络110可以被配置为实现非线性映射网络。在一个实施例中,输入潜在空间和中间潜在空间中的输入和输出激活的维度相等(例如512)。在一个实施例中,使用8层MLP(多层感知器,即仅由完全连接层组成的神经网络)来实现映射函数f。
虽然传统的生成器仅通过生成器的输入层馈送(feed)潜码,但是映射神经网络110将输入潜码z映射到中间潜在空间W,以产生中间潜码w。样式转换单元115将中间潜码w转换为第一样式信号。一个或更多个中间潜码w被转换成包括第一样式信号和第二样式信号的空间不变样式。与传统的样式传递技术相比,空间不变样式是从向量(即中间潜码w)而不是从示例图像计算得出的。一个或更多个中间潜码w可以由一个或更多个映射神经网络110针对一个或更多个相应潜码z生成。例如,合成神经网络140根据样式信号处理第一中间数据(例如,被编码为特征图的学习常数),将第一中间数据的密度从4x4增加到8x8,并持续,直到达到输出数据密度。
在一个实施例中,样式转换单元115执行仿射变换。样式转换单元115可以被训练为在合成神经网络140的训练期间学习仿射变换。第一样式信号控制在合成神经网络140的第一层120处的操作,以产生经修改的第一中间数据。在一个实施例中,第一样式信号控制合成网络140的第一层120内的自适应实例归一化(AdaIN)操作。在一个实施例中,AdaIN操作接收一组内容特征图和样式信号,并修改内容特征图的一阶统计信息(即“样式”),以匹配由样式信号定义的一阶统计信息。由第一层120输出的经修改的第一中间数据被处理层125处理,以生成第二中间数据。在一个实施例中,处理层125包括3×3卷积层。在一个实施例中,处理层125包括3×3卷积层,其后是AdaIN操作,AdaIN操作接收附加样式信号,附加样式信号在图1A中未明确示出。
第二中间数据被输入到合成神经网络140的第二层130。第二样式信号控制第二层130处的操作,以产生经修改的第二中间数据。在一个实施例中,第一样式信号修改在第一中间数据中编码的第一属性,第二样式信号修改在第一中间数据和第二中间数据中编码的第二属性。例如,与第二中间数据相比,第一中间数据是粗略数据,并且第一样式在第一层120处被传送到粗略特征图,而第二样式在第二层130处被传送到较高密度的特征图。
在一个实施例中,第二层130对第二中间数据进行上采样并且包括3×3卷积层,随后是AdaIN操作。在一个实施例中,第二样式信号控制合成网络140的第二层130内的AdaIN操作。由第二层130输出的经修改的第二中间数据由处理层135处理,以生成输出数据,输出数据包括与第二中间数据对应的内容。在一个实施例中,将经修改的第二中间数据中的特征的多个(例如32、48、64、96等)通道转换成被编码为颜色通道(例如,红色、绿色、蓝色)的输出数据。
在一个实施例中,处理层135包括3×3卷积层。在一个实施例中,输出数据是包括对应于第一比例的第一属性和对应于第二比例的第二属性的图像,其中与第二比例相比,第一比例更粗糙。第一比例可以对应于由第一层120处理的特征图的比例,而第二比例可以对应于由第二层130处理的特征图的比例。因此,第一样式信号修改第一比例的第一属性,第二样式信号修改第二比例的第二属性。
现在将根据用户的期望,阐述关于可以实现前述框架的各种可选架构和特征的更多说明性信息。应该特别注意的是,出于说明性目的阐述了以下信息,并且不应该被解释为以任何方式进行限制。任意以下特征可以任选地并入或不排除所描述的其他特征。
图1B示出了根据一个实施例的由基于样式的生成器系统100生成的图像。图像以10242分辨率生成。在其他实施例中,可以以不同的分辨率生成图像。使用两个不同的潜码来控制图像的样式,图像的样式由基于样式的生成器系统100生成。具体而言,样式的第一部分由映射神经网络110和样式转换单元115从顶行中的“源”潜码产生。样式的第二部分由相同或附加的映射神经网络110和相应的样式转换单元115从最左列中的“目的地”潜码产生。基于样式的生成器系统100从合成神经网络140处的学习后的常数输入开始,并基于潜码调整每个卷积层处图像的“样式”,因此直接控制不同比例的在特征图中编码的图像属性的强度(strength)。换句话说,将来自“源”数据的给定样式集复制到“目的地”数据。因此,复制的样式(粗略、中间或精细)取自“源”数据,而所有其他样式与“目的地”数据中的样式保持相同。
合成神经网络140应用样式的第一部分(目的地)来处理学习后的常数,样式的第一部分的第一子集被替换为样式的第二部分(源)的对应第二子集。在一个实施例中,学习后的常数是4×4×512的常数张量。在图1B中的图像的第二、第三和第四行中,样式的第二部分(源)替换了合成神经网络140的粗略层中的样式的第一部分(目的地)。在一个实施例中,粗略层对应于粗略的空间密度42-82。在一个实施例中,高级属性(诸如姿势、一般发型、面部形状和眼镜)从源复制,而其他属性被保留,其他属性诸如目的地的所有颜色(眼睛、头发、照明)和精细面部特征。
在图1B中的图像的第五行和第六行中,样式的第二部分(源)替换了合成神经网络140的中间层处的样式的第一部分(目的地)。在一个实施例中,中间层对应于162-322的空间密度。较小比例的面部特征、发型、睁眼/闭眼从源继承,而来自目的地的姿势、总体面部形状和眼镜则保留下来。最后,在图1B中的图像的最后一行中,样式的第二部分(源)替换了合成神经网络140的高密度(精细)层处的样式的第一部分(目的地)。在一个实施例中,精细层对应于642-10242的空间密度。对于精细层,使用样式的第二部分(源)中的样式继承了源的配色方案和微观结构,同时保留目的地中的姿势和一般面部形状。
基于样式的生成器系统100的架构使得能够通过对样式的特定于比例的修改来控制图像合成。可以将样式转换单元115执行的映射网络110和仿射变换视为从学习后的分布中为每种样式绘制样本的方式,并且合成网络140提供了基于样式集合生成新图像的机制。每种样式的效果都在合成网络140中被定位,即修改样式的特定子集可以被预期仅影响图像的某些属性。
如图1B所示,使用来自至少两个不同潜码的样式信号被称为样式混合或混合正则化。训练期间的样式混合可对相邻样式进行解相关,并可以对生成的图像进行更细粒度的控制。在一个实施例中,在训练期间,使用两个随机潜码而不是一个来生成给定百分比的图像。当生成这样的图像时,可以在合成神经网络140中选择随机位置(例如,交叉点),在该处处理从使用第一潜码生成的样式信号切换为使用第二潜码生成的样式信号。在一个实施例中,两个潜码z1,z2由映射神经网络110处理,并且相应的中间潜码w1、w2控制样式,使得w1在交叉点之前应用,而w2在交叉点之后应用。混合正则化技术防止合成神经网络140假设相邻样式相关。
表1显示了在训练期间启用混合正则化如何显著改善样式的本地化,这是在测试时混合了多个潜码的情况下,通过改进的(越低越好)Fréchet起始距离(FID)来指示的。图1B所示的图像是通过混合不同比例的两个潜码而合成的图像的示例。样式的每个子集控制图像的有意义的高级属性。
表1不同混合正则化比的FID
混合比指示能够进行混合正则化的训练示例的百分比。在测试期间,最多随机选择四种不同的潜码,并且还随机选择不同潜码之间的交叉点。混合正则化显著提高了对这些不利操作的容忍度。
如由FID所确认的那样,由基于样式的生成器系统100生成的图像的平均质量很高,并且甚至成功地合成了诸如眼镜和帽子之类的配件。对于图1B所示的图像,通过使用可以在而不是中执行的所谓的截断技巧来避免从的极端区域进行采样。请注意,可以实现基于样式的生成器系统100以使得能够只对低分辨率有选择地应用截断,使得高分辨率的细节不会受到影响。
考虑到训练数据的分布,低密度的区域表示不佳,因此对于基于样式的生成器系统100来说可能难以学习。训练数据的非均匀分布在所有生成式建模技术中都提出了重要的开放性问题。然而,众所周知,尽管损失了一些变化量,但是从截断或缩小的采样空间中提取潜在向量有助于提高平均图像质量。在一个实施例中,为了改进对基于样式的生成器系统100的训练,质心被计算为在一个人脸数据集(例如,FFHQ、Flickrfaces HQ)的情况下,点表示一种平均人脸(ψ=0)。给定w的偏差从中心开始按比例缩小,即其中ψ<1。在传统的生成式建模系统中,即使使用正交正则化时,仅神经网络的子集适用于这种截断,即使在不改变损失函数的情况下,空间中的截断似乎也可以可靠地工作。
图1C示出了根据一个实施例的用于基于样式的生成的方法150的流程图。方法150可以由程序、定制电路或定制电路和程序的组合来执行。例如,方法150可以由GPU(图形处理单元)、CPU(中央处理单元)或能够执行基于样式的生成器系统100的操作的任何处理器来执行。此外,本领域的普通技术人员将理解,执行方法150的任何系统都在本发明实施例的范围和精神内。
在步骤155,映射神经网络110处理在输入空间中定义的潜码,以产生在中间潜在空间中定义的中间潜码。在步骤160,由样式转换单元115将中间潜码转换为第一样式信号。在步骤165在合成神经网络140的第一层120处应用第一样式信号,以根据第一样式信号来修改第一中间数据,以产生经修改的第一中间数据。在步骤170,处理层125处理经修改的第一中间数据以产生第二中间数据。在步骤175,在合成神经网络140的第二层130处应用第二样式信号,以根据第二样式信号来修改第二中间数据,以产生经修改的第二中间数据。在步骤180,由处理层135处理经修改的第二中间数据,以产生包括与第二中间数据相对应的内容的输出数据。
基于样式的生成器系统100的主要优点是,中间潜在空间不必支持根据任何固定分布进行采样;通过学习后的逐段(piecewise)连续映射f(z),得出基于样式的生成器系统100的采样密度。可以使映射适于“解卷绕(unwarp)”以使变化因子变得更加线性。基于样式的生成器系统100自然会趋向于解卷绕因为基于解纠缠的表示比基于纠缠的表示更容易生成现实图像。这样,训练可以在无人监督的情况下,即在事先不知道变化因子的情况下产生较小的纠缠的(entangled)
图2A示出了根据一个实施例的图1A所示的映射神经网络110的框图。训练数据的分布可能缺少属性的组合,诸如,戴眼镜的儿童。与潜在空间相比,在中间潜在空间中,变化因子在眼镜和年龄组合中的分布变得更加线性。
在一个实施例中,映射神经网络110包括归一化层205和多个完全连接层210。在一个实施例中,八个完全连接层210顺序地耦合,以产生中间潜码。在训练期间,学习映射神经网络110的参数(例如,权重),并且当部署基于样式的生成器系统100以生成输出数据时,使用参数来处理输入潜码。在一个实施例中,映射神经网络110生成一个或更多个中间潜码,在稍后的时间由合成神经网络140使用中间潜码来生成输出数据。
人像中有许多属性可以被认为是随机的,诸如头发、胡茬、雀斑或皮肤毛孔的确切位置。只要随机化遵循正确的分布,就可以在不影响图像感知的情况下将其中任何一个随机化。生成图像时人为地忽略噪声会导致图像具有无特征的“绘画”外观。特别地,当生成人像时,粗糙的噪声可能会导致头发大规模卷曲并出现较大的背景特征,而细微的噪声可能会产生更细的头发卷曲、更细的背景细节和皮肤毛孔。
常规的生成器可能仅基于通过输入层提供的对神经网络的输入来生成随机变化。在训练期间,每当需要伪随机数时,常规生成器就可能被迫学习从较早的激活中生成空间变化的伪随机数。换言之,伪随机数生成并不有意内置于常规生成器中。相反,伪随机数的生成是在训练期间自行出现的,以使常规生成器满足训练目的地。生成伪随机数会消耗神经网络的容量,并且难以隐藏生成信号的周期性,而且并不总是成功的,正如生成图像中常见的重复模式所证明的那样。相反,基于样式的生成器系统100可以被配置为通过在每次卷积之后添加每像素噪声来避免这些限制。
在一个实施例中,基于样式的生成器系统100配置有直接装置,以通过引入显式噪声输入来生成随机细节。在一个实施例中,噪声输入是由非相关高斯噪声组成的单通道图像,并且专用噪声图像被输入到合成网络140的一层或更多层。可以使用学习后的每特征缩放因子将噪声图像广播到所有特征图,然后将噪声图像添加到相应卷积的输出中。
图2B示出了根据一个实施例的图1A所示的合成神经网络140的框图。合成神经网络140包括第一处理块200和第二处理块230。在一个实施例中,处理块200处理4×4分辨率特征图,并且处理块230处理8×8分辨率特征图。在处理块200和230之后、之前和/或两者之间,可以在合成神经网络140中包括一个或更多个附加处理块。
第一处理块200接收第一中间数据、第一空间噪声和第二空间噪声。在一个实施例中,在与第一中间数据相结合(例如,添加到第一中间数据)之前,通过学习后的每通道缩放因子来缩放第一空间噪声。在一个实施例中,第一空间噪声、第二空间噪声、第三空间噪声和第四空间噪声是独立的每像素高斯噪声。
第一处理块200还接收第一样式信号和第二样式信号。如前所解释的,样式信号可以通过根据学习后的仿射变换处理中间潜码来获得。学习后的仿射变换将w专用于样式y=(ys,yb),以控制由合成神经网络140中模块220实现的自适应实例归一化(AdaIN)操作。与更一般的特征变换相比,由于基于样式的生成器系统100的效率和紧凑的表示,因此AdaIN特别适合于在基于样式的生成器系统100中的实现。
AdaIN运算被定义为:
其中每个特征图xi分别被归一化,然后使用样式y对应的标量分量进行缩放和偏置。因此,与层的输入相比,y的维度是特征图数量的两倍。在一个实施例中,样式信号的维度是在应用样式信号的层中的特征图数目的倍数。与常规样式转换不同,空间不变样式y是从向量w而不是示例图像中计算出来的。
每个样式信号的效果都定位在合成神经网络140中,即,可以期望修改样式信号的特定子集仅影响输出数据表示的图像的某些属性。为了看到定位的原因,考虑模块220实现的AdaIN运算(公式1)如何首先将每个通道归一化为零均值和单位方差,随后才基于样式信号应用比例和偏差。如样式所指示的,新的每通道统计信息会为后续的卷积运算修改特征的相对重要性,但由于归一化,新的每通道统计信息不依赖于原始统计信息。因此,在被下一个AdaIN运算覆写之前,每个样式信号仅控制预定数量的卷积225。在一个实施例中,在每次卷积之后并且在由另一模块220处理之前,将缩放的空间噪声添加到特征。
每个模块220之后可以是卷积层225。在一个实施例中,卷积层225将3×3的卷积内核应用于输入。在处理块200内,由卷积层225输出的第二中间数据与第二空间噪声组合,并输入到第二模块220,第二模块220应用第二样式信号来生成处理块200的输出。在一个实施例中,在与第二中间数据组合(例如,添加到第二中间数据)之前,以学习后的每通道缩放因子来缩放第二空间噪声。
处理块230接收由处理块200输出的特征图,并且特征图由上采样层235进行上采样。在实施例中,4x4特征图由上采样层235进行上采样,以产生8x8特征图。上采样特征图被输入到另一卷积层225,以产生第三中间数据。在处理块230内,第三中间数据与第三空间噪声组合,并输入到第三模块220,第三模块220通过AdaIN运算应用第三样式信号。在一个实施例中,在将第三空间噪声与第三中间数据组合(例如,添加到第三中间数据)之前,以学习后的每通道缩放因子来缩放第三空间噪声。另一卷积层225处理第三模块220的输出,以产生第四中间数据。第四中间数据与第四空间噪声组合,并输入到第四模块220,第四模块220经由AdaIN运算应用第四样式信号。在一个实施例中,在将第四空间噪声与第四中间数据组合(例如,添加到第四中间数据)之前,以学习后的每通道缩放因子来缩放第四空间噪声。
在一个实施例中,输出数据的分辨率为10242,并且合成神经网络140包括18层,每个2的幂次方分辨率为2(42_10242)。可以使用单独的1×1卷积,将合成神经网络140的最后层的输出转换为RGB。在一个实施例中,与具有相同数量的层和特征图的常规生成器中的23.1M相比,合成神经网络140总共具有26.2M可训练参数。
引入空间噪声只会影响输出数据的随机方面,而不会影响整体组成和高级属性(诸如,身份)。合成神经网络140的单独的噪声输入使得能够将随机变化应用于层的不同子集。将空间噪声输入应用到合成神经网络140的特定层,导致比例上的随机变化,比例上的随机变化与特定层的比例匹配。
噪声的影响似乎紧密地位于合成神经网络140中。在合成神经网络140的任何点,都有尽快引入新内容的压力,并且合成神经网络140创建随机变化的最简单方法是依靠空间噪声输入。一组新的空间噪声可用于合成神经网络140中的每一层,因此没有动机从较早激活中产生随机效应,从而导致局部效果。因此,噪声仅影响无关紧要的随机变化(梳理不同的头发、胡须等)。相反,样式信号的变化具有全局效果(改变姿势、身份等)。
在合成神经网络140中,当输出数据是图像时,样式信号影响整个图像,因为完整的特征图被缩放并以相同的值进行偏置。因此,可以同时控制诸如姿势、照明或背景样式之类的全局效果。同时,空间噪声被独立地添加到每个像素,因此非常适合控制随机变化。如果合成神经网络140试图使用噪声控制例如姿势,则这将导致空间不一致的决定,决定将在训练期间受到惩罚。因此,合成神经网络140学习在没有明确指导的情况下适当地使用全局和局部通道。
图2C示出了根据一个实施例的用于使用基于样式的生成器系统100来应用空间噪声的方法250的流程图。方法250可以由程序、定制电路或者由定制电路和程序的组合来执行。例如,方法250可以由GPU(图形处理单元)、CPU(中央处理单元)或能够执行基于样式的生成器系统100操作的任何处理器来执行。此外,本领域的普通技术人员将理解,执行方法250的任何系统都在本发明实施例的范围和精神内。
在步骤255,在合成神经网络140的第一层应用第一组空间噪声,以生成第一中间数据,第一中间数据包括与基于第一组空间噪声修改的源数据相对应的内容。在一个实施例中,源数据是第一中间数据,并且第一层是包括模块220和/或卷积层225的层。在步骤258,由处理层125处理经修改的第一中间数据,以产生第二中间数据。在步骤260,在合成神经网络140的第二层应用第二组空间噪声,以生成第二中间数据,第二中间数据包括与基于第二组空间噪声修改的第一中间数据相对应的内容。在一个实施例中,由至少模块220修改第一中间数据,以产生第二中间数据。在步骤265,处理第二中间数据,以产生输出数据,输出数据包括与第二中间数据相对应的内容。在一个实施例中,第二中间数据由另一模块220和块230处理,以产生输出数据。
可以将噪声注入到合成神经网络140的层中,以引起与层相对应的比例的随机变化的合成。重要的是,应该在训练和生成过程中注入噪声。另外,在生成期间,可以修改噪声的强度以进一步控制输出数据的“外观”。提供样式信号,而不是直接将潜码输入到合成神经网络140中,再加上直接注入到合成神经网络140中的噪声,会导致从生成的图像中的随机变化(例如雀斑,头发)中自动、无监督地分离出高级属性(例如,姿势,身份),并实现直观的特定于比例的混合和插值操作。
特别地,样式信号直接在合成神经网络140中以不同比例来调整图像属性的强度。在生成期间,样式信号可以用于修改选定的图像属性。另外,在训练期间,映射神经网络110可以被配置为执行样式混合正则化,以改善样式的本地化。
映射神经网络110将输入潜码嵌入到中间潜在空间中,这对如何在合成神经网络140中表示变化因子具有深远的影响。输入潜在空间遵循训练数据的概率密度,这可能导致某种程度的不可避免的纠缠。中间潜在空间没有这种限制,因此被允许解纠缠。与传统的生成器架构相比,基于样式的生成器系统100允许对不同的变化因子进行更线性、更少纠缠的表示。在一个实施例中,用基于样式的生成器替换传统的生成器可能不需要修改训练框架的任何其他组件(损失函数、鉴别器、优化方法等)。
基于样式的生成式神经网络100可以例如使用GAN(生成式对抗网络)、VAE(变分自动编码器)框架、基于流的框架等进行训练。图2D示出了根据一个实施例的GAN 270训练框架的框图。GAN 270可以由程序、定制电路或定制电路和程序的组合来实现。例如,可以使用GPU、CPU或能够执行本文描述的操作的任何处理器来实现GAN 270。此外,本领域普通技术人员将理解,执行GAN 270的操作在本发明实施例的范围和精神内。
GAN 270包括生成器,诸如基于样式的生成器系统100、鉴别器(神经网络)275和训练损失单元280。可以在训练期间修改生成器110和鉴别器275两者的拓扑。GAN 270可以在无监督设置或有条件的设置中操作。基于样式的生成器系统100接收输入数据(即,至少一个潜码和/或噪声输入),并产生输出数据。根据任务,输出数据可以是图像、音频、视频或其他类型的数据(配置设置)。鉴别器275是在基于样式的生成器系统100的训练期间使用的自适应损失函数。使用训练数据集同时训练基于样式的生成器系统100和鉴别器275,训练数据集包括示例输出数据,基于样式的生成器系统100产生的输出数据应与该示例输出数据一致。基于样式的生成器系统100响应于输入数据生成输出数据,并且鉴别器275确定输出数据是否看起来类似于训练数据中包括的示例输出数据。基于确定,调整鉴别器275和/或基于样式的生成式神经网络100的参数。
在非监督设置下,鉴别器275输出一连续值,该连续值指示输出数据与示例输出数据的匹配程度。例如,在一个实施例中,在确定输出数据与示例输出数据匹配时,鉴别器275输出第一训练刺激(例如,高值),并且在确定输出数据与示例输出数据不匹配时,鉴别器275输出第二训练刺激(例如,低值)。训练损失单元280基于鉴别器275的输出来调整GAN270的参数(权重)。当针对特定任务训练基于样式的生成器系统100时,诸如生成人脸的图像,当输出数据是人脸图像时,鉴别器输出高值。不要求由基于样式的生成器系统100生成的输出数据与用于鉴别器275的示例输出数据相同,以确定输出数据与示例输出数据匹配。在以下描述的上下文中,当输出数据与任何示例输出数据相似时,鉴别器275确定输出数据与示例输出数据匹配。
在条件设置中,基于样式的生成式神经网络100的输入可以包括其他数据,例如图像、分类标签、分割轮廓和其他(附加)类型的数据(分布、音频等)。除了随机潜码之外,还可以指定附加数据,或者附加数据可以完全代替随机潜码。训练数据集可以包括输入/输出数据对,并且鉴别器275的任务可以用于基于鉴别器275在训练数据中已经看到的示例输入/输出对,确定基于样式的生成式神经网络100的输出是否看起来与输入一致。
并行处理架构
图3示出了根据一个实施例的并行处理单元(PPU)300。PPU 300可用于实现基于样式的生成器系统100。PPU 300可用于实现映射神经网络110、样式转换单元115、合成神经网络140、生成式对抗性网络270、样式块640、样式块645和合成神经网络840中的一个或更多个。在一个实施例中,诸如PPU 300之类的处理器可以被配置为实现神经网络模型。神经网络模型可以被实现为由处理器执行的软件指令,或者在其他实施例中,处理器可以包括硬件元素的矩阵,硬件元素被配置为处理一组输入(即,表示值的电信号)以生成一组输出,可以表示神经网络模型的激活。在其他实施例中,神经网络模型可以被实现为软件指令和由硬件元素矩阵执行的处理的组合。实现神经网络模型可包括通过例如对神经网络模型的有监督或无监督训练确定用于神经网络模型的一组参数,以及或者可替代地,使用该组参数来执行推理以处理新的输入集。
在一个实施例中,PPU 300是在一个或更多个集成电路器件上实现的多线程处理器。PPU 300是设计用于并行处理许多线程的延迟隐藏体系架构。线程(即,执行线程)是被配置为由PPU 300执行的指令集的实例。在一个实施例中,PPU 300是图形处理单元(GPU),其被配置为实现用于处理三维(3D)图形数据的图形渲染管线,以便生成用于在显示装置(诸如液晶显示(LCD)设备)上显示的二维(2D)图像数据。在另一个实施例中,PPU 300被配置为实现神经网络系统100。在其他实施例中,PPU 300可以用于执行通用计算。尽管为了说明的目的本文提供了一个示例性并行处理器,但应特别指出的是,该处理器仅出于说明目的进行阐述,并且可使用任何处理器来补充和/或替代该处理器。
一个或更多个PPU 300可以被配置为加速数千个高性能计算(HPC)、数据中心和机器学习应用。PPU 300可被配置为加速众多深度学习系统和应用,包括自动驾驶汽车平台、深度学习、高精度语音、图像和文本识别系统、智能视频分析、分子模拟、药物研发、疾病诊断、天气预报、大数据分析、天文学、分子动力学模拟、金融建模、机器人技术、工厂自动化、实时语言翻译、在线搜索优化和个性化用户推荐,等等。
如图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)堆叠在每个设备内。
NVLink 310互连使得系统能够扩展并且包括与一个或更多个CPU结合的一个或更多个PPU 300,支持PPU 300和CPU之间的高速缓存一致性,以及CPU主控。数据和/或命令可以由NVLink 310通过集线器330发送到PPU 300的其他单元或从其发送,例如一个或更多个复制引擎、视频编码器、视频解码器、电源管理单元等(未明确示出)。结合图5B更详细地描述NVLink 310。
I/O单元305被配置为通过互连302从主机处理器(未示出)发送和接收通信(例如,命令、数据等)。I/O单元305可以经由互连302直接与主机处理器通信,或通过一个或更多个中间设备(诸如内存桥)与主机处理器通信。在一个实施例中,I/O单元305可以经由互连302与一个或更多个其他处理器(例如,一个或更多个PPU 300)通信。在一个实施例中,I/O单元305实现外围组件互连高速(PCIe)接口,用于通过PCIe总线进行通信,并且互连302是PCIe总线。在替代的实施例中,I/O单元305可以实现其他类型的已知接口,用于与外部设备进行通信。
I/O单元305对经由互连302接收的数据包进行解码。在一个实施例中,数据包表示被配置为使PPU 300执行各种操作的命令。I/O单元305按照命令指定将解码的命令发送到PPU 300的各种其他单元。例如,一些命令可以被发送到前端单元315。其他命令可以被发送到集线器330或PPU 300的其他单元,诸如一个或更多个复制引擎、视频编码器、视频解码器、电源管理单元等(未明确示出)。换句话说,I/O单元305被配置为在PPU 300的各种逻辑单元之间和之中路由通信。
在一个实施例中,由主机处理器执行的程序在缓冲区中对命令流进行编码,该缓冲区向PPU 300提供工作量用于处理。工作量可以包括要由那些指令处理的许多指令和数据。缓冲区是存储器中可由主机处理器和PPU 300两者访问(例如,读/写)的区域。例如,I/O单元305可以被配置为经由通过互连302传输的存储器请求访问连接到互连302的系统存储器中的缓冲区。在一个实施例中,主机处理器将命令流写入缓冲区,然后向PPU 300发送指向命令流开始的指针。前端单元315接收指向一个或更多个命令流的指针。前端单元315管理一个或更多个流,从流读取命令并将命令转发到PPU 300的各个单元。
前端单元315耦合到调度器单元320,其配置各种GPC 350以处理由一个或更多个流定义的任务。调度器单元320被配置为跟踪与由调度器单元320管理的各种任务相关的状态信息。状态可以指示任务被指派给哪个GPC 350,该任务是活动的还是不活动的,与该任务相关联的优先级等等。调度器单元320管理一个或更多个GPC 350上的多个任务的执行。
调度器单元320耦合到工作分配单元325,其被配置为分派任务以在GPC 350上执行。工作分配单元325可以跟踪从调度器单元320接收到的若干调度的任务。在一个实施例中,工作分配单元325为每个GPC 350管理待处理(pending)任务池和活动任务池。待处理任务池可以包括若干时隙(例如,32个时隙),其包含被指派为由特定GPC 350处理的任务。活动任务池可以包括若干时隙(例如,4个时隙),用于正在由GPC 350主动处理的任务。当GPC350完成任务的执行时,该任务从GPC 350的活动任务池中逐出,并且来自待处理任务池的其他任务之一被选择和调度以在GPC 350上执行。如果GPC 350上的活动任务已经空闲,例如在等待数据依赖性被解决时,那么活动任务可以从GPC 350中逐出并返回到待处理任务池,而待处理任务池中的另一个任务被选择并调度以在GPC 350上执行。
工作分配单元325经由XBar(交叉开关)370与一个或更多个GPC 350通信。XBar370是将PPU 300的许多单元耦合到PPU 300的其他单元的互连网络。例如,XBar 370可以被配置为将工作分配单元325耦合到特定的GPC 350。虽然没有明确示出,但PPU 300的一个或更多个其他单元也可以经由集线器330连接到XBar 370。
任务由调度器单元320管理并由工作分配单元325分派给GPC 350。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。
在一个实施例中,主机处理器执行实现应用程序编程接口(API)的驱动程序内核,其使得能够在主机处理器上执行一个或更多个应用程序以调度操作用于在PPU 300上执行。在一个实施例中,多个计算应用由PPU 300同时执行,并且PPU 300为多个计算应用程序提供隔离、服务质量(QoS)和独立地址空间。应用程序可以生成指令(例如,API调用),其使得驱动程序内核生成一个或更多个任务以由PPU 300执行。驱动程序内核将任务输出到正在由PPU 300处理的一个或更多个流。每个任务可以包括一个或更多个相关线程组,本文称为线程束(warp)。在一个实施例中,线程束包括可以并行执行的32个相关线程。协作线程可以指代包括执行任务的指令并且可以通过共享存储器交换数据的多个线程。结合图5A更详细地描述线程和协作线程。
图4A示出了根据一个实施例的图3的PPU 300的GPC 350。如图4A所示,每个GPC350包括用于处理任务的多个硬件单元。在一个实施例中,每个GPC 350包括管线管理器410、预光栅操作单元(PROP)415、光栅引擎425、工作分配交叉开关(WDX)480、存储器管理单元(MMU)490以及一个或更多个数据处理集群(DPC)420。应当理解,图4A的GPC 350可以包括代替图4A中所示单元的其他硬件单元或除图4A中所示单元之外的其他硬件单元。
在一个实施例中,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中的至少一个以实现神经网络模型和/或计算管线。
PROP单元415被配置为将由光栅引擎425和DPC 420生成的数据路由到光栅操作(ROP)单元,结合图4B更详细地描述。PROP单元415还可以被配置为执行颜色混合的优化,组织像素数据,执行地址转换等。
光栅引擎425包括被配置为执行各种光栅操作的若干固定功能硬件单元。在一个实施例中,光栅引擎425包括设置引擎、粗光栅引擎、剔除引擎、裁剪引擎、精细光栅引擎和图块聚合引擎。设置引擎接收变换后的顶点并生成与由顶点定义的几何图元关联的平面方程。平面方程被发送到粗光栅引擎以生成图元的覆盖信息(例如,图块的x、y覆盖掩码)。粗光栅引擎的输出被发送到剔除引擎,其中与未通过z-测试的图元相关联的片段被剔除,并且被发送到裁剪引擎,其中位于视锥体之外的片段被裁剪掉。那些经过裁剪和剔除后留下来的片段可以被传递到精细光栅引擎,以基于由设置引擎生成的平面方程生成像素片段的属性。光栅引擎425的输出包括例如要由在DPC 420内实现的片段着色器处理的片段。
包括在GPC 350中的每个DPC 420包括M管线控制器(MPC)430、图元引擎435和一个或更多个SM 440。MPC 430控制DPC 420的操作,将从管线管理器410接收到的数据包路由到DPC 420中的适当单元。例如,与顶点相关联的数据包可以被路由到图元引擎435,图元引擎435被配置为从存储器304提取与顶点相关联的顶点属性。相反,与着色程序相关联的数据包可以被发送到SM 440。
SM 440包括被配置为处理由多个线程表示的任务的可编程流式处理器。每个SM440是多线程的并且被配置为同时执行来自特定线程组的多个线程(例如,32个线程)。在一个实施例中,SM 440实现SIMD(单指令、多数据)体系架构,其中线程组(例如,warp)中的每个线程被配置为基于相同的指令集来处理不同的数据集。线程组中的所有线程都执行相同的指令。在另一个实施例中,SM 440实现SIMT(单指令、多线程)体系架构,其中线程组中的每个线程被配置为基于相同的指令集处理不同的数据集,但是其中线程组中的各个线程在执行期间被允许发散。在一个实施例中,为每个线程束维护程序计数器、调用栈和执行状态,当线程束内的线程发散时,使线程束和线程束中的串行执行之间的并发成为可能。在另一个实施例中,为每个单独的线程维护程序计数器、调用栈和执行状态,从而在线程束内和线程束之间的所有线程之间实现相等的并发。当为每个单独的线程维护执行状态时,执行相同指令的线程可以被收敛并且并行执行以获得最大效率。下面结合图5A更详细地描述SM440。
MMU 490提供GPC 350和分区单元380之间的接口。MMU 490可以提供虚拟地址到物理地址的转换、存储器保护以及存储器请求的仲裁。在一个实施例中,MMU 490提供用于执行从虚拟地址到存储器304中的物理地址的转换的一个或更多个转换后备缓冲器(TLB)。
图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个存储器设备304,诸如高带宽存储器堆叠或图形双数据速率版本5的同步动态随机存取存储器或其他类型的持久存储器。
在一个实施例中,存储器接口470实现HBM2存储器接口,并且Y等于U的一半。在一个实施例中,HBM2存储器堆叠位于与PPU 300相同的物理封装上,提供与常规GDDR5 SDRAM系统相比显著的功率高和面积节约。在一个实施例中,每个HBM2堆叠包括四个存储器裸晶并且Y等于4,其中HBM2堆叠包括每个管芯两个128位通道,总共8个通道和1024位的数据总线宽度。
在一个实施例中,存储器304支持单错校正双错检测(SECDED)纠错码(ECC)以保护数据。对于对数据损毁敏感的计算应用程序,ECC提供了更高的可靠性。在大型集群计算环境中,PPU 300处理非常大的数据集和/或长时间运行应用程序,可靠性尤其重要。
在一个实施例中,PPU 300实现多级存储器层次。在一个实施例中,存储器分区单元380支持统一存储器以为CPU和PPU 300存储器提供单个统一的虚拟地址空间,使得虚拟存储器系统之间的数据能够共享。在一个实施例中,跟踪PPU 300对位于其他处理器上的存储器的访问频率,以确保存储器页面被移动到更频繁地访问该页面的PPU 300的物理存储器。在一个实施例中,NVLink 310支持地址转换服务,其允许PPU 300直接访问CPU的页表并且提供由PPU 300对CPU存储器的完全访问。
在一个实施例中,复制引擎在多个PPU 300之间或在PPU 300与CPU之间传输数据。复制引擎可以为未映射到页表的地址生成页面错误。然后,存储器分区单元380可以服务页面错误,将地址映射到页表中,之后复制引擎可以执行传输。在常规系统中,针对多个处理器之间的多个复制引擎操作固定存储器(例如,不可分页),其显著减少了可用存储器。由于硬件分页错误,地址可以传递到复制引擎而不用担心存储器页面是否驻留,并且复制过程是否透明。
来自存储器304或其他系统存储器的数据可以由存储器分区单元380取回并存储在L2高速缓存460中,L2高速缓存460位于芯片上并且在各个GPC 350之间共享。如图所示,每个存储器分区单元380包括与对应的存储器设备304相关联的L2高速缓存460的一部分。然后可以在GPC 350内的多个单元中实现较低级高速缓存。例如,每个SM 440可以实现一级(L1)高速缓存。L1高速缓存是专用于特定SM 440的专用存储器。来自L2高速缓存460的数据可以被获取并存储在每个L1高速缓存中,以在SM 440的功能单元中进行处理。L2高速缓存460被耦合到存储器接口470和XBar370。
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或另一个单元中。
图5A示出了根据一个实施例的图4A的流式多处理器440。如图5A所示,SM 440包括指令高速缓存505、一个或更多个调度器单元510、寄存器文件520、一个或更多个处理核心550、一个或更多个特殊功能单元(SFU)552、一个或更多个加载/存储单元(LSU)554、互连网络580、共享存储器/L1高速缓存570。
如上,工作分配单元325调度任务以在PPU 300的GPC 350上执行。任务被分配给GPC 350内的特定DPC 420,并且如果该任务与着色器程序相关联,则该任务可以被分配给SM 440。调度器单元510接收来自工作分配单元325的任务并且管理指派给SM 440的一个或更多个线程块的指令调度。调度器单元510调度线程块以作为并行线程的线程束执行,其中每个线程块被分配至少一个线程束。在一个实施例中,每个线程束执行32个线程。调度器单元510可以管理多个不同的线程块,将线程束分配给不同的线程块,然后在每个时钟周期期间将来自多个不同的协作组的指令分派到各个功能单元(即,核心550、SFU 552和LSU554)。
协作组是用于组织通信线程组的编程模型,其允许开发者表达线程正在进行通信所采用的粒度,使得能够表达更丰富、更高效的并行分解。协作启动API支持线程块之间的同步性,以执行并行算法。常规的编程模型为同步协作线程提供了单一的简单结构:跨线程块的所有线程的栅栏(barrier)(例如,syncthreads()函数)。然而,程序员通常希望以小于线程块粒度的粒度定义线程组,并在所定义的组内同步,以集体的全组功能接口(collective group-wide function interface)的形式使能更高的性能、设计灵活性和软件重用。
协作组使得程序员能够在子块(例如,像单个线程一样小)和多块粒度处明确定义线程组并且执行集体操作,诸如协作组中的线程上的同步性。编程模型支持跨软件边界的干净组合,以便库和效用函数可以在他们本地环境中安全地同步,而无需对收敛进行假设。协作组图元启用合作并行的新模式,包括生产者-消费者并行、机会主义并行以及跨整个线程块网格的全局同步。
分派单元515被配置为向一个或更多个功能单元传送指令。在该实施例中,调度器单元510包括两个分派单元515,其使得能够在每个时钟周期期间调度来自相同线程束的两个不同指令。在替代实施例中,每个调度器单元510可以包括单个分派单元515或附加分派单元515。
每个SM 440包括寄存器文件520,其提供用于SM 440的功能单元的一组寄存器。在一个实施例中,寄存器文件520在每个功能单元之间被划分,使得每个功能单元被分配寄存器文件520的专用部分。在另一个实施例中,寄存器文件520在由SM 440执行的不同线程束之间被划分。寄存器文件520为连接到功能单元的数据路径的操作数提供临时存储器。
每个SM 440包括L个处理核心550。在一个实施例中,SM 440包括大量(例如128个等)不同的处理核心550。每个核心550可以包括完全管线化的、单精度、双精度和/或混合精度处理单元,其包括浮点运算逻辑单元和整数运算逻辑单元。在一个实施例中,浮点运算逻辑单元实现用于浮点运算的IEEE 754-2008标准。在一个实施例中,核心550包括64个单精度(32位)浮点核心、64个整数核心、32个双精度(64位)浮点核心和8个张量核心(tensorcore)。
张量核心被配置为执行矩阵运算,并且在一个实施例中,一个或更多个张量核心被包括在核心550中。具体地,张量核心被配置为执行深度学习矩阵运算,诸如GEMM(矩阵-矩阵乘法),GEMM用于在神经网络训练和推理期间进行卷积运算。在一个实施例中,每个张量核心在4×4矩阵上运算并且执行矩阵乘法和累加运算D=A×B+C,其中A、B、C和D是4×4矩阵。
在一个实施例中,矩阵乘法输入A和B可以是整数、固定点或浮点矩阵,而累加矩阵C和D可以是相等或更高的位宽的整数、固定点或浮点矩阵。在一个实施例中,张量核对具有32位整数累加的1、4或8位整数输入数据进行操作。8位整数矩阵乘法需要1024个运算,并产生全精度乘积,然后使用32位整数加法与其他中间乘积进行累加,以进行8x8x16矩阵乘法。在一个实施例中,张量核心在16位浮点输入数据以及32位浮点累加上运算。16位浮点乘法需要64次运算,产生全精度的积,然后使用32位浮点与4×4×4矩阵乘法的其他中间积相加来累加。在实践中,张量核心用于执行由这些较小的元素建立的更大的二维或更高维的矩阵运算。API(诸如CUDA 9C++API)公开了专门的矩阵加载、矩阵乘法和累加以及矩阵存储运算,以便有效地使用来自CUDA-C++程序的张量核心。在CUDA层面,线程束级接口假定16×16尺寸矩阵跨越线程束的全部32个线程。
每个SM 440还包括执行特殊函数(例如,属性评估、倒数平方根等)的M个SFU 552。在一个实施例中,SFU 552可以包括树遍历单元,其被配置为遍历分层树数据结构。在一个实施例中,SFU 552可以包括被配置为执行纹理图过滤操作的纹理单元。在一个实施例中,纹理单元被配置为从存储器304加载纹理图(例如,纹理像素的2D阵列)并且对纹理图进行采样以产生经采样的纹理值,用于在由SM 440执行的着色器程序中使用。在一个实施例中,纹理图被存储在共享存储器/L1高速缓存470中。纹理单元实现纹理操作,诸如使用mip图(即,不同细节层次的纹理图)的过滤操作。在一个实施例中,每个SM 440包括两个纹理单元。
每个SM 440还包括N个LSU 554,其实现共享存储器/L1高速缓存570和寄存器文件520之间的加载和存储操作。每个SM 440包括将每个功能单元连接到寄存器文件520以及将LSU 554连接到寄存器文件520、共享存储器/L1高速缓存570的互连网络580。在一个实施例中,互连网络580是交叉开关,其可以被配置为将任何功能单元连接到寄存器文件520中的任何寄存器,以及将LSU 554连接到寄存器文件和共享存储器/L1高速缓存570中的存储器位置。
共享存储器/L1高速缓存570是片上存储器阵列,其允许数据存储和SM 440与图元引擎435之间以及SM 440中的线程之间的通信。在一个实施例中,共享存储器/L1高速缓存570包括128KB的存储容量并且在从SM440到分区单元380的路径中。共享存储器/L1高速缓存570可以用于高速缓存读取和写入。共享存储器/L1高速缓存570、L2高速缓存460和存储器304中的一个或更多个是后备存储。
将数据高速缓存和共享存储器功能组合成单个存储器块为两种类型的存储器访问提供最佳的总体性能。该容量可由程序用作不使用共享存储器的高速缓存。例如,如果将共享存储器配置为使用一半容量,则纹理和加载/存储操作可以使用剩余容量。在共享存储器/L1高速缓存570内的集成使共享存储器/L1高速缓存570起到用于流式传输数据的高吞吐量管线的作用,并且同时提供对频繁重用数据的高带宽和低延迟的访问。
当被配置用于通用并行计算时,与图形处理相比,可以使用更简单的配置。具体地,图3所示的固定功能图形处理单元被绕过,创建了更简单的编程模型。在通用并行计算配置中,工作分配单元325将线程块直接指派并分配给DPC 420。块中的线程执行相同的程序,使用计算中的唯一线程ID来确保每个线程生成唯一结果,使用SM 440执行程序并执行计算,使用共享存储器/L1高速缓存570以在线程之间通信,以及使用LSU 554通过共享存储器/L1高速缓存570和存储器分区单元380读取和写入全局存储器。当被配置用于通用并行计算时,SM 440还可以写入调度器单元320可用来在DPC 420上启动新工作的命令。
PPU 300可各自包括和/或被配置为执行一个或更多个处理核心和/或其组件的功能,例如,张量核心(TC)、张量处理单元(TPU),像素可视核心(PVC)、射线追踪(RT)核心、视觉处理单元(VPU)、图形处理集群(GPC)、纹理处理集群(TPC)、流式多处理器(SM)、树遍历单元(TTU)、人工智能加速器(AIAs)、深度学习加速器(DLA)、算术逻辑单元(ALU)、专用集成电路(ASIC)、浮点单元(FPU)、输入/输出(I/O)元素、外围组件互连(PCI)或外围组件互连表示(PCIe)元素等。
PPU 300可以被包括在台式计算机、膝上型计算机、平板电脑、服务器、超级计算机、智能电话(例如,无线、手持设备)、个人数字助理(PDA)、数码相机、运载工具、头戴式显示器、手持式电子设备等中。在一个实施例中,PPU 300包含在单个半导体衬底上。在另一个实施例中,PPU 300与一个或更多个其他器件(诸如附加PPU 300、存储器304、精简指令集计算机(RISC)CPU、存储器管理单元(MMU)、数字-模拟转换器(DAC)等)一起被包括在片上系统(SoC)上。
在一个实施例中,PPU 300可以被包括在图形卡上,图形卡包括一个或更多个存储器设备304。图形卡可以被配置为与台式计算机的主板上的PCIe插槽接口。在又一个实施例中,PPU 300可以是包含在主板的芯片集中的集成图形处理单元(iGPU)或并行处理器。在又一个实施例中,PU 300可以以可重新配置的硬件来实现。在又一个实施例中,PPU 300的部分可以在可重新配置的硬件中实现。
示例性计算系统
具有多个GPU和CPU的系统被用于各种行业,因为开发者在应用(诸如人工智能计算)中暴露和利用更多的并行性。在数据中心、研究机构和超级计算机中部署具有数十至数千个计算节点的高性能GPU加速系统,以解决更大的问题。随着高性能系统内处理设备数量的增加,通信和数据传输机制需要扩展以支持该增加带宽。
图5B是根据一个实施例的使用图3的PPU 300实现的处理系统500的概念图。示例性系统565可以被配置为实现图1C中所示的方法150和/或图2C中所示的方法250。处理系统500包括CPU 530、交换机510和多个PPU 300以及相应的存储器304。NVLink 310提供每个PPU 300之间的高速通信链路。尽管图5B中示出了特定数量的NVLink 310和互连302连接,但是连接到每个PPU 300和CPU 530的连接的数量可以改变。交换机510在互连302和CPU530之间接口。PPU 300、存储器304和NVLink 310可以位于单个半导体平台上以形成并行处理模块525。在一个实施例中,交换机510支持两个或更多个在各种不同连接和/或链路之间接口的协议。
在另一个实施例(未示出)中,NVLink 310在每个PPU 300和CPU 530之间提供一个或更多个高速通信链路,并且交换机510在互连302和每个PPU 300之间进行接口。PPU 300、存储器304和互连302可以位于单个半导体平台上以形成并行处理模块525。在又一个实施例(未示出)中,互连302在每个PPU 300和CPU 530之间提供一个或更多个通信链路,并且交换机510使用NVLink 310在每个PPU 300之间进行接口,以在PPU 300之间提供一个或更多个高速通信链路。在另一个实施例(未示出)中,NVLink 310在PPU 300和CPU 530之间通过交换机510提供一个或更多个高速通信链路。在又一个实施例(未示出)中,互连302在每个PPU 300之间直接地提供一个或更多个通信链路。可以使用与NVLink 310相同的协议将一个或更多个NVLink 310高速通信链路实现为物理NVLink互连或者片上或裸晶上互连。
在本说明书的上下文中,单个半导体平台可以指在管芯或芯片上制造的唯一的单一的基于半导体的集成电路。应该注意的是,术语单个半导体平台也可以指具有增加的连接的多芯片模块,其模拟片上操作并通过利用常规总线实现方式进行实质性改进。当然,根据用户的需要,各种电路或器件还可以分开放置或以半导体平台的各种组合来放置。可选地,并行处理模块525可以被实现为电路板衬底,并且PPU 300和/或存储器304中的每一个可以是封装器件。在一个实施例中,CPU 530、交换机510和并行处理模块525位于单个半导体平台上。
在一个实施例中,每个NVLink 310的信令速率是20到25千兆位/秒,并且每个PPU300包括六个NVLink 310接口(如图5B所示,每个PPU 300包括五个NVLink 310接口)。每个NVLink 310在每个方向上提供25千兆位/秒的数据传输速率,其中六条链路提供300千兆位/秒。当CPU 530还包括一个或更多个NVLink 310接口时,NVLink 310可专门用于如图5B所示的PPU到PPU通信,或者PPU到PPU以及PPU到CPU的某种组合。
在一个实施例中,NVLink 310允许从CPU 530到每个PPU 300的存储器304的直接加载/存储/原子访问。在一个实施例中,NVLink 310支持一致性操作,允许从存储器304读取的数据被存储在CPU 530的高速缓存分层结构中,减少了CPU 530的高速缓存访问延迟。在一个实施例中,NVLink 310包括对地址转换服务(ATS)的支持,允许PPU 300直接访问CPU530内的页表。一个或更多个NVLink 310还可以被配置为以低功率模式操作。
图5C示出了示例性系统565,其中可以实现各种先前实施例的各种体系架构和/或功能。示例性系统565可以被配置为实现图1C中所示的方法150和/或图2C中所示的方法250。
如图所示,提供了一种系统565,系统565包括至少一个中央处理单元530,中央处理单元530连接到通信总线575。通信总线575可以直接或间接耦合一个或更多个以下设备:主存储器540、网络接口535、CPU 530、显示设备545、输入设备560、开关510和并行处理系统525。通信总线575可以使用任何合适的协议来实现,并且可以表示一个或更多个链路或总线,例如地址总线、数据总线、控制总线或其组合。通信总线575可以包括一种或更多种总线或链路类型,例如工业标准架构(ISA)总线、扩展工业标准架构(EISA)总线、视频电子标准协会(VESA)总线、外围组件互连(PCI)总线、外围组件互连快速(PCIe)总线、HyperTransport、和/或其他类型的总线或链路。在一些实施例中,组件之间存在直接连接。作为示例,CPU 530可以直接连接到主存储器540。此外,CPU 530可以直接连接到并行处理系统525。在组件之间存在直接或点对点连接的情况下,通信总线575可以包括PCIe链路以执行连接。在这些示例中,在系统565不需要包括PCI总线。
尽管图5C的各个框被示为经由具有线路的通讯总线575连接,但是这并不意图是限制性的,并且仅仅为了清楚起见。例如,在一些实施例中,诸如(一个或更多个)显示设备545之类的呈现组件可以被认为是I/O组件,诸如输入设备560(例如如果显示器为触摸屏)。作为另一个示例,(一个或更多个)CPU 530和/或并行处理系统525可以包括内存(例如,主内存540可以表示除了并行处理系统525、CPU 530和/或其他组件的内存以外的存储设备)。换言之,图5C的计算设备仅仅是说明性的。在诸如“工作站”、“服务器”、“膝上型电脑”、“台式机”、“平板电脑”、“客户端设备”、“移动设备”、“手持式设备”、“游戏控制台”、“电子控制单元(ECU)”、“虚拟现实系统”和/或其他设备或系统类型之类的类别之间不进行区分,因为所有这些都被考虑在图5C的计算设备的范围内。
系统565还包括主存储器540。在主存储器540中存储控制逻辑(软件)和数据,存储可以采取各种计算机可读介质的形式。计算机可读介质可以是可以由系统565访问的任何可用介质。计算机可读介质可以包括易失性和非易失性介质以及可移除和不可移除介质。举例而言且非限制性地,计算机可读介质可以包括计算机存储介质和通信介质。
计算机存储介质可以包括易失性和非易失性介质和/或可移除和不可移除介质,其以用于存储诸如计算机可读指令、数据结构、程序模块和/或其他数据类型之类的信息的任何方法或技术实现。例如,主存储器540可以存储计算机可读指令(例如其表示程序和/或程序元素,例如操作系统)。计算机存储介质可以包括但不限于RAM、ROM、EEPROM、闪存或者其他存储技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储装置、磁带盒、磁带、磁盘存储装置或其他磁存储设备,或者可以用来存储期望的信息且可以由系统565访问的任何其他介质。当在本文使用时,计算机存储介质并不包括信号本身。
计算机存储介质可以在诸如载波之类的调制数据信号或其他传输机制中包含计算机可读指令、数据结构、程序模块和/或其他数据类型,并且包括任何信息输送介质。术语“调制数据信号”可以指这样的信号,该信号使它的特性中的一个或更多个以这样的将信息编码到该信号中的方式设置或改变。举例而言且非限制性地,计算机存储介质可以包括诸如有线网络或直接有线连接之类的有线介质,以及诸如声音、RF、红外和其他无线介质之类的无线介质。任何以上的组合也应当包含在计算机可读介质的范围内。
计算机程序在被执行时使系统565能够执行各种功能。CPU 530可以被配置为执行至少某些计算机可读指令以便控制系统565的一个或更多个组件执行本文描述的方法和/或过程中的一个或更多个。CPU 530中的每一个可以包括能够同时处理大量软件线程的一个或更多个核(例如一个、两个、四个、八个、二十八个、七十二个等等)。CPU 530可以包括任何类型的处理器,并且可以包括不同类型的处理器,这取决于实现的系统565的类型(例如具有用于移动设备的较少核的处理器以及具有用于服务器的更多核的处理器)。例如,取决于系统565的类型,处理器可以是使用精简指令集计算(RISC)实现的先进的RISC机器(ARM)处理器或者使用复杂指令集计算(CISC)实现的x86处理器。除了一个或更多个微处理器或者诸如数学协处理器之类的补充协处理器之外,系统565还可以包括一个或更多个CPU530。
除了一个或更多个CPU 530外或者替代地,并行处理模块525可以被配置为执行至少一些计算机可读指令,以控制系统565的一个或更多个组件来执行本文的一种或多种方法和/或过程。系统565可以使用并行处理模块525来渲染图形(例如,3D图形)或执行通用计算。例如,并行处理模块525可以用于GPU上的通用计算(GPGPU)。在实施例中,CPU 530和/或并行处理模块525可以离散地或联合地执行方法、过程和/或其部分的任何组合。
系统565还包括输入设备560、并行处理系统525和显示设备545。显示设备545可以包括显示器(例如监视器、触摸屏、电视屏幕、平视显示器(HUD)、其他显示器类型或者其组合)、扬声器和/或其他呈现组件。显示设备545可以接收来自其他组件(例如,并行处理系统525,CPU 530等)的数据,并且输出该数据(例如作为图像、视频、声音等等)。
网络接口535可使得系统565能够逻辑地耦合到包括输入设备560、显示设备545和/或其他组件在内的其他设备,其中一些可以内置到(例如集成到)系统565中。说明性输入设备560包括麦克风、鼠标、键盘、操纵杆、游戏垫、游戏控制器、碟形卫星天线、扫描仪、打印机、无线设备等等。输入设备560可以提供处理用户生成的空中手势、语音或其他生理输入的自然用户接口(NUI)。在一些实例中,输入可以传输至适当的网络元素以便进一步处理。NUI可以实现语音识别、手写笔识别、面部识别、生物特征识别、屏幕上和邻近屏幕的手势识别、空中手势、头部和眼睛跟踪以及与系统565的显示器关联的触摸识别(如下文更详细地描述的)的任意组合。系统565可以包括诸如立体照相机系统之类的深度照相机、红外照相机系统、RGB照相机系统、触摸屏技术以及这些的组合,以用于手势检测和识别。此外,系统565可以包括使能运动检测的加速度计或陀螺仪(例如作为惯性测量单元(IMU)的部分)。在一些示例中,加速度计或陀螺仪的输出可以由系统565用来渲染沉浸式增强现实或者虚拟现实。
此外,系统565可以出于通信目的通过网络接口535耦合到网络(例如,电信网络、局域网(LAN)、无线网络、广域网(WAN)(诸如因特网)、对等网络、电缆网络等)。系统565可以被包括在分布式网络和/或云计算环境内。
通信接口535可以包括一个或更多个接收器、发送器和/或收发器,其使得系统565能够经由电子通信网络与其他计算设备通信,包括有线和/或无线通信。网络接口535可以包括使能通过若干不同网络中的任何网络进行通信的组件和功能,网络例如无线网络(例如Wi-Fi、Z波、蓝牙、蓝牙LE、ZigBee等等)、有线网络(例如通过以太网或无线宽带(InfiniBand)通信)、低功率广域网(例如LoRaWAN、SigFox等等)和/或因特网。
系统565还可以包括辅助存储(未示出)。辅助存储包括例如硬盘驱动器和/或可移除存储驱动器、代表软盘驱动器、磁带驱动器、光盘驱动器、数字多功能盘(DVD)驱动器、记录设备、通用串行总线(USB)闪存。可移除存储驱动器以众所周知的方式从可移除存储单元读取和/或写入可移除存储单元。系统565还可以包括硬线电源,电池电源或其组合(未示出)。电源可以向系统565提供电力以使系统565的组件能够操作。
前述模块和/或设备中的每一个甚至可以位于单个半导体平台上以形成系统565。可替代地,根据用户的需求,各种模块也可以分开放置或以半导体平台的各种组合放置。虽然上面已经描述了各种实施例,但是应该理解,它们仅以示例的方式呈现,而不是限制。因此,优选实施例的宽度和范围不应受任何上述示例性实施例的限制,而应仅根据所附权利要求及其等同物来限定。
网络环境示例
适用于实现本公开的实施例的网络环境可以包括一个或更多个客户端设备、服务器、网络附加存储(NAS),其他后端设备和/或其他设备类型。客户端设备、服务器和/或其他设备类型(例如,每个设备)可以在图5A的处理器系统500和/或图5B的示例性系统565的一个或更多个实例上实现,例如,每个设备可以包括处理系统500和/或示例性系统565的相似组件、特征和/或功能。
网络环境的组件可以经由网络彼此通信,网络可以是有线的、无线的或两者兼有。该网络可以包括多个网络或网络的网络。举例来说,网络可以包括一个或更多个广域网(WAN)、一个或更多个局域网(LAN)、一个或更多个公共网络,例如Internet和/或公共交换电话网络(PSTN),和/或一个或更多个专用网络。在网络包括无线电信网络的情况下,诸如基站、通信塔、甚至接入点(以及其他组件)之类的组件可以提供无线连接。
兼容的网络环境可以包括一个或更多个对等网络环境(在这种情况下服务器可能不包括在网络环境中)和一个或更多个客户端服务器网络环境(在这种情况下一个或更多个服务器)可能包括在网络环境中。在对等网络环境中,本文针对服务器描述的功能可以在任意数量的客户端设备上实现。
在至少一个实施例中,网络环境可以包括一个或更多个基于云的网络环境、分布式计算环境、其组合等。基于云的网络环境可以包括在一个或更多个服务器上实现的框架层、作业调度器、资源管理器和分布式文件系统,服务器可以包括一个或更多个核心网络服务器和/或边缘服务器。框架层可以包括用于支持软件层的软件和/或应用程序层的一个或更多个应用程序的框架。软件或应用程序可分别包括基于web的服务软件或应用程序。在实施例中,一个或更多个客户端设备可以使用基于web的服务软件或应用程序(例如,通过经由一个或更多个应用程序编程接口(API)访问服务软件和/或应用程序)。框架层可以是但不限于一种自由和开源软件Web应用程序框架,例如可以使用分布式文件系统进行大规模数据处理(例如“大数据”)。
基于云的网络环境可提供云计算和/或云存储,云计算和/或云存储执行本文的计算和/或数据存储功能(或其一个或更多个部分)的任何组合。这些不同功能中的任何一个都可以从中央或核心服务器(例如,在一个或更多个数据中心,数据中心可以跨州、地区、国家、全球等分布)。如果到用户(例如,客户端设备)的连接相对靠近一个或更多个边缘服务器,则一个或更多个核心服务器可以向一个或更多个边缘服务器指定至少一部分功能。基于云的网络环境可以是私有的(例如,限于单个组织)、可以是公共的(例如,可用于许多组织),和/或其组合(例如,混合云环境)。
客户端设备可以包括本文描述的图5B的处理系统500和/或图5C的示例性系统565的至少一些组件、特征和功能。作为示例而非限制,客户端设备可以体现为个人计算机(PC)、膝上型计算机、移动设备、智能手机、平板计算机、智能手表、可穿戴计算机、个人数字助理(PDA)、MP3播放器、虚拟现实耳机、全球定位系统(GPS)或设备、视频播放器,摄像机、监控设备或系统、车辆、船只、飞行船舶、虚拟机、无人机、机器人、手持通信设备、医院设备、游戏设备或系统、娱乐系统、车辆计算机系统、嵌入式系统控制器、遥控器、设备、消费类电子设备、工作站、边缘设备,这些描绘的设备的任何组合,或任何其他合适的设备。
机器学习
在处理器(诸如PPU 300)上开发的深度神经网络(DNN)已经用于各种使用情况:从自驾车到更快药物开发,从在线图像数据库中的自动图像字幕到视频聊天应用中的智能实时语言翻译。深度学习是一种技术,它建模人类大脑的神经学习过程,不断学习,不断变得更聪明,并且随着时间的推移更快地传送更准确的结果。一个孩子最初是由成人教导,以正确识别和分类各种形状,最终能够在没有任何辅导的情况下识别形状。同样,深度学习或神经学习系统需要在物体识别和分类方面进行训练,以便在识别基本物体、遮挡物体等同时还有为物体分配情景时变得更加智能和高效。
在最简单的层面上,人类大脑中的神经元查看接收到的各种输入,将重要性水平分配给这些输入中的每一个,并且将输出传递给其他神经元以进行处理。人造神经元或感知器是神经网络的最基本模型。在一个示例中,感知器可以接收一个或更多个输入,其表示感知器正被训练为识别和分类的对象的各种特征,并且在定义对象形状时,这些特征中的每一个基于该特征的重要性赋予一定的权重。
深度神经网络(DNN)模型包括许多连接节点(例如,感知器、玻尔兹曼机器、径向基函数、卷积层等)的多个层,其可以用大量输入数据来训练以快速高精度地解决复杂问题。在一个示例中,DNN模型的第一层将汽车的输入图像分解为各个部分,并查找基本图案(诸如线条和角)。第二层组装线条以寻找更高水平的图案,诸如轮子、挡风玻璃和镜子。下一层识别运载工具类型,最后几层为输入图像生成标签,识别特定汽车品牌的型号。
一旦DNN被训练,DNN就可以被部署并用于在被称为推理(inference)的过程中识别和分类对象或图案。推理的示例(DNN从给定输入中提取有用信息的过程)包括识别沉积在ATM机中的支票存款上的手写数字、识别照片中朋友的图像、向超过五千万用户提供电影推荐、识别和分类不同类型的汽车、行人和无人驾驶汽车中的道路危险、或实时翻译人类言语。
在训练期间,数据在前向传播阶段流过DNN,直到产生预测为止,其指示对应于输入的标签。如果神经网络没有正确标记输入,则分析正确标签和预测标签之间的误差,并且在后向传播阶段期间针对每个特征调整权重,直到DNN正确标记该输入和训练数据集中的其他输入为止。训练复杂的神经网络需要大量的并行计算性能,包括由PPU 300支持的浮点乘法和加法。与训练相比,推理的计算密集程度比训练更低,是一个延迟敏感过程,其中经训练的神经网络应用于它以前没有见过的新的输入,以进行图像分类、翻译语音以及通常推理新的信息。
神经网络严重依赖于矩阵数学运算,并且复杂的多层网络需要大量的浮点性能和带宽来提高效率和速度。采用数千个处理核心,针对矩阵数学运算进行了优化,并传送数十到数百TFLOPS的性能,PPU 300是能够传送基于深度神经网络的人工智能和机器学习应用所需性能的计算平台。
此外,应用本文公开的一种或多种技术生成的图像可用于训练、测试或认证用于识别现实世界中的对象和环境的DNN。这些图像可以包括道路、工厂、建筑物、城市环境、农村环境、人、动物以及任何其他物理对象或真实世界环境的场景。此类图像可用于训练、测试或认证在机器或机器人中使用的DNN,以操纵、处理或修改现实世界中的物理对象。此外,此类图像可用于训练、测试或认证在自动驾驶车辆中使用的DNN,以在真实世界中导航和移动车辆。另外,应用本文公开的一种或更多种技术生成的图像可用于向此类机器、机器人和车辆的用户传送信息。
图5D示出了根据至少一个实施例的可用于训练和利用机器学习的示例系统555的组件。如将要讨论的,可以由可以在单个实体或多个实体的控制下的计算设备和资源或单个计算系统的各种组合来提供各种组件。此外,可以由不同实体触发、发起或请求方面。在至少一个实施例中,可以由与供应商环境506相关联的供应商来指导对神经网络的训练,而在至少一个实施例中,可以由能够通过客户端设备502或其他此类资源访问供应商环境的顾客或其他用户来请求训练神经网络。在至少一个实施例中,训练数据(或要由经训练的神经网络分析的数据)可以由供应商、用户或第三方内容供应商524等提供。在至少一个实施例中,客户端设备502可以是车辆或对象,可以代表用户进行导航,例如,该用户可以提交请求和/或接收有助于设备导航的指令。
在至少一个实施例中,能够通过至少一个网络504提交请求以将其接收至供应商环境506。在至少一个实施例中,客户端设备502可以是使用户能够生成和发送这样的请求的任何适当的电子和/或计算设备,诸如但不限于台式计算机、笔记本计算机、计算机服务器、智能手机、平板电脑、游戏机(便携式或其他方式)、计算机处理器、计算逻辑和机顶盒等。一个或更多个网络504可以包括用于发送请求或其他这样的数据的任何适当的网络,例如可以包括因特网、内联网、蜂窝网络、局域网(LAN)、广域网(WAN)、个人区域网(PAN)、在对等点之间进行直接无线连接的网络等等。
在至少一个实施例中,可以将请求接收至接口层508,在该示例中,该接口层可以将数据转发到训练和推理管理器532。在至少一个实施例中,训练与推理管理器532可以是包括用于管理与数据或内容相一致的服务和请求的硬件和软件的系统或服务,训练与推理管理器532可以接收训练神经网络的请求,并且可以将请求的数据提供给训练模块512。在至少一个实施例中,如果请求未指定,则训练模块512可以选择要使用的适当模型或神经网络,并可以使用相关的训练数据来训练模型。在至少一个实施例中,训练数据可以是从客户端设备502接收的或从第三方供应商524获得的等存储到训练数据存储库514的一批数据。在至少一个实施例中,训练模块512可以负责训练数据。神经网络可以是任何适当的网络,例如递归神经网络(RNN)或卷积神经网络(CNN)等。一旦训练了神经网络并成功评估了网络,就可以将经训练的神经网络存储到模型存储库516,例如,其可以存储用于用户、应用程序或服务等的不同模型或网络。在至少一个实施例中,针对单个应用程序或实体可能存在多个模型,如可以基于多个不同因素来利用多个模型。
在至少一个实施例中,在随后的时间点,可以从客户端设备502(或另一个这样的设备)接收对至少部分地受经训练的神经网络确定或影响的内容(例如,路径确定)或数据的请求。该请求可以包括例如要使用神经网络处理的输入数据,以获得一个或更多个推理或其他输出值、分类或预测,或在至少一个实施例中,尽管在各个实施例中也可以使用不同的系统或服务,但是输入数据可以被接口层508接收,并且被引导到推理模块518。如果尚未本地存储到推理模块518,则推理模块518可以从模型存储库516中获得适当的训练网络,例如本文的训练深度神经网络(DNN)。在至少一个实施例中,推理模块518可以将数据作为输入提供给训练网络,然后可以生成一个或更多个推理作为输出。例如,这可以包括输入数据实例的分类。在至少一个实施例中,然后可以将推理发送到客户端设备502以向用户显示或与用户进行其他通信。在至少一个实施例中,用户的环境数据也可以存储到用户环境数据存储库522,该数据库可以包括关于用户的数据,该数据可以用作生成推理或确定获得实例后返回给用户的数据的网络输入等。在至少一个实施例中,包括输入或推理数据中的至少一部分的相关数据也可以被存储到本地数据库534以用于处理将来的请求。在至少一个实施例中,用户可以使用帐户或其他信息来访问供应商环境的资源或功能。在至少一个实施例中,如果允许和可用,还可以收集用户数据并将其用于进一步训练模型,以便为将来的请求提供更准确的推理。在至少一个实施例中,可以通过用户界面接收对在客户端设备502上执行的机器学习应用526的请求,并通过相同的界面显示结果。客户端设备可以包括资源,诸如用于生成请求和处理结果或响应的处理器528和内存562,以及用于存储用于机器学习应用526的数据的至少一个数据存储元素552。
在至少一个实施例中,处理器528(或训练模块512或推理模块518的处理器)将是中央处理单元(CPU)。但是,如上,此类环境中的资源可以利用GPU来处理用于至少某些类型的请求的数据。GPU(诸如PPU300)具有数千个核心,旨在处理大量的并行工作负载,因此在用于训练神经网络和生成预测的深度学习中变得很流行。虽然使用GPU进行离线构建可以更快地训练更大、更复杂的模型,但离线生成预测意味着无法使用请求-时间输入特征,或者必须针对所有特征排列生成预测并将其存储在查找表中以进行服务实时请求。如果深度学习框架支持CPU模式,并且模型足够小且简单以至可以合理的延迟在CPU上执行前馈,则CPU实例上的服务可以托管模型。在这种情况下,可以在GPU上离线进行训练,并在CPU上实时进行推理。如果CPU方法不是可行的选项,则服务可以在GPU实例上运行。但是,由于GPU具有与CPU不同的性能和成本特征,因此运行将运行时算法卸载到GPU的服务可能要求将其设计成与基于CPU的服务不同。
在至少一个实施例中,可以从客户端设备502来提供视频数据,以在提供者环境506中进行增强。在至少一个实施例中,可以对视频数据进行处理,以在客户端设备502上进行增强。在至少一个实施例中,视频数据可以从第三方内容提供者524流传输,并由第三方内容提供者524、提供者环境506或客户端设备502进行增强。在至少一个实施例中,可以从客户端设备502提供视频数据,以用作提供商环境506中的训练数据。
在至少一个实施例中,可以由客户端设备502和/或提供者环境506来执行监督和/或非监督训练。在至少一个实施例中,提供一组训练数据514(例如,分类或标记的数据)作为输入,以用作训练数据。在一个实施例中,可以在生成式对抗训练配置中使用该组训练数据来训练生成器神经网络。
在至少一个实施例中,训练数据可以包括要对其训练神经网络的至少一个人类受试者、化身、角色、动物、物体等的图像。在至少一个实施例中,训练数据可以包括针对其要训练神经网络的至少一种类型的对象的实例,以及识别该类型的对象的信息。在至少一个实施例中,训练数据可能包括一组图像,每个图像都包含对象类型的表示,其中每个图像还包含标签、元数据、分类或其他识别在各自的图像中表示的对象类型的信息或与之相关联。各种其他类型的数据也可以用作训练数据,并且可以包括文本数据、音频数据、视频数据等。在至少一个实施例中,训练数据514作为训练输入提供给训练模型512。在至少一个实施例中,训练模型512可以是包括硬件和软件的系统或服务,例如执行训练应用程序的一个或更多个计算设备,用于训练神经网络(或其他模型或算法等)。在至少一个实施例中,训练模型512接收指示要用于训练的模型的类型的指令或请求。模型可以是可用于此类目的的任何适当的统计模型、网络或算法,例如可以包括人工神经网络、深度学习算法、学习分类器、贝叶斯网络等。在至少一个实施例中,训练模型512可以从适当的存储库516中选择初始模型或其他未经训练的模型,并利用训练数据514来训练模型生成可以用于对相似类型的数据进行分类的经训练的模型(例如,经训练的深度神经网络),或生成其他此类推理。在不使用训练数据的至少一个实施例中,仍然可以根据训练模型512选择适当的初始模型来对输入数据进行训练。
在至少一个实施例中,可以以多种不同方式训练模型,这可能部分取决于所选模型的类型。在一个实施例中,可以向机器学习算法提供一组训练数据,其中模型是通过训练过程创建的模型伪像。在至少一个实施例中,训练数据的每个实例包含正确答案(例如,分类),其可以被称为目的地或目的地属性。在至少一个实施例中,学习算法在训练数据中找到将输入数据属性映射到目的地的模式,要预测的答案,并输出捕获这些模式的机器学习模型。在至少一个实施例中,然后可以使用机器学习模型来获得对未指定目的地的新数据的预测。
在至少一个实施例中,训练与推理管理器532可以从一组机器学习模型中进行选择,机器学习模型包括二进制分类、多分类、生成和回归模型。在至少一个实施例中,要使用的模型的类型可以至少部分取决于要预测的目的地的类型。
应用本文公开的一种或更多种技术生成的图像可以显示在监视器或其他显示设备上。在一些实施例中,显示设备可以直接耦合到生成或渲染图像的系统或处理器。在其他实施例中,显示设备可以间接地耦合系统或处理器,诸如经由网络。此类网络的示例包括因特网、移动电信网络、WIFI网络以及任何其他有线和/或无线网络系统。当显示设备间接耦合时,由系统或处理器生成的图像可以通过网络流传输到显示设备。这种流传输(例如渲染图像的视频游戏或其他应用程序)允许在服务器、数据中心上或在基于云的计算环境中执行,并且所渲染的图像将在与服务器或数据中心物理上分离的一个或更多个用户设备上(诸如计算机,视频游戏机,智能手机,其他移动设备等)传输和显示。因此,本文公开的技术可以应用于增强流传输的图像并增强流传输图像的服务,例如NVIDIA GeForce Now(GFN)、Google Stadia等。
生成器神经网络的权重解调
在基于样式的生成器系统100中实现的基于样式的GAN架构(StyleGAN)在数据驱动的无条件生成式图像建模中产生令人印象深刻的结果。然而,基于样式的GAN架构可以合成包含不期望伪像的图像。如本文进一步描述的,可以通过改变合成神经网络结构和/或训练方法来避免或减少若干特征伪像。在一个实施例中,归一化操作被重构,并且基于样式的生成器系统可以被正则化,以在从潜在向量到输出数据(例如图像)的映射中鼓励良好的调节。改进基于样式的GAN架构以避免和/或减少伪像,无论是在现有分布质量指标还是感知到的输出数据质量方面,都可以显著改善无条件图像建模的结果。
现在将根据用户的期望,阐述关于可以实现前述框架的各种可选架构和特征的更多说明性信息。应该特别注意的是,出于说明性目的阐述了以下信息,并且不应该被解释为以任何方式进行限制。任选的以下特征可以任选地并入或不排除所描述的其他特征。
图6A示出了根据一个实施例的可由基于样式的生成器系统100生成的图像和特征图中的伪像。伪像601表现为类似于水滴的斑点状异常。即使当伪像601在最终图像中可能不明显时,伪像602也存在于由合成神经网络产生的中间特征图中。在一个实施例中,异常开始出现在64x 64分辨率附近,并出现在所有后续特征图中,并在更高的分辨率下逐渐增强。在另一个示例中,在车辆的最终图像中可见伪像603,并且在合成车辆的最终输出图像期间生成的特征图中存在对应的伪像604。在另一个示例中,伪像605在马的最终输出图像中可见,并且对应的伪像606存在于特征图中,特征图在合成马的最终输出图像期间生成。这种一致性伪像的存在令人费解,因为鉴别器应该能够在训练期间检测到它。
似乎会引起由合成神经网络140生成的图像中的“斑点”或“水滴”伪像,因为在合成神经网络140的处理层中执行的归一化操作破坏性太大,完全消除了每个特征图的中间激活的均值和比例。实际上,基于样式的GAN可能会创建伪像,以规避其架构中的设计缺陷。
综上,基于样式的生成器系统100的区别特征是生成器的非传统架构。映射神经网络110首先将输入潜码转换为中间潜码w∈W,而不是将潜码z∈Z直接作为输入馈送到合成神经网络140。然后,由样式转换单元115执行的仿射变换产生经由自适应实例归一化(AdaIN)控制合成神经网络140的层的样式信号。在以下描述的上下文中,实例归一化是指针对每个实例或样本(图像)单独或独立地执行归一化,而无需样本之间的交互。相反,当使用批归一化时,小批(minibatch)中的所有样本都将一起归一化。另外,在一个实施例中,通过向合成神经网络140提供附加随机噪声图来促进随机变化。可以将噪声图插入到由合成神经网络140的每个卷积层输出的中间数据中。已经证明,非常规设计允许中间潜在空间的纠缠比输入潜在空间Z的纠缠小得多。在以下描述中,分析仅集中在上,因为从合成神经网络140的角度来看,它是相关的潜在空间。
伪像是通过AdaIN操作引入的,AdaIN操作分别对每个特征图的均值和方差进行归一化,从而可能破坏在特征量级中相对于彼此发现的任何信息。水滴伪像可以是基于样式的生成器系统100故意将信号强度信息隐藏到实例归一化的结果。更具体地说,通过创建支配统计信息的强的、局部的尖峰,基于样式的生成器系统100可以有效地缩放信号,就像在其他地方一样。通过以下发现支持该假设:在一个实施例中,当从合成神经网络140移除归一化步骤时,如下,水滴伪像完全消失。
图6B示出了根据一个实施例的图2B所示的处理块200的框图。在图1A和图2B所示的合成神经网络140中,样式信号对于每个处理阶段可以是活动的,以应用特定于处理阶段的属性。在一个实施例中,样式转换单元115将学习到的仿射变换应用于以产生每个样式信号。从概念上讲,基于映射神经网络110提供的样式信号,修改了由合成神经网络140的不同处理层125、135和/或220生成的特征图(表示图像的内容)。换句话说,对于每个阶段,一阶统计信息被替换为特定于样式的属性。与图1A和图2B相比,层120和130以及模块220内的自适应实例归一化(AdaIN)操作被分解成它的两个组成部分:归一化620,随后是调制625,两个均对每个特征图的均值和标准偏差进行操作。对每个样式应用程序执行归一化620,以避免在随后的阶段中特定样式的累积,在后续阶段中可以以不同的比例来应用不同的样式。
在归一化620之前,元素610可以将空间噪声插入到第一中间数据中。在一个实施例中,第一中间数据是学习后的常数或输入样本。在一个实施例(未示出)中,也可以将每个比例的偏差与空间噪声一起应用。学习后的参数(权重)由每个卷积层225应用。通过解调权重(而不是归一化激活),至少可以包括卷积层225、归一化620、由元素610插入的空间噪声和解调625的样式块600可以被重组以消除伪像。有趣的是,合成神经网络140在处理块200内应用空间噪声,使得空间噪声的相对影响与在处理块200处应用的样式信号的幅度成反比。通过将插入操作移至处理框200的外部,可以获得更可预测的结果,因此,插入将对归一化数据进行操作。
图6C示出了用于实现本公开的一些实施例的样式块640的框图。与图6B所示的处理块200相比,元素610对空间噪声(和偏置)的插入被移到样式块640的外部。换句话说,空间噪声和偏置的应用与样式信号中编码的每个样式无关。在一个实施例中,在将插入操作移动到样式块600之外以产生样式块640之后,仅对标准偏差进行归一化和调制就足够了(即,不需要均值)。在一个实施例中,也可以安全地去除对输入样本(例如,第一中间数据)的偏置、空间噪声和归一化的应用,而没有明显的缺点。
与样式块600中的归一化620和调制625相比,均值的调制被去除,并且调制单元630和归一化单元635仅对标准偏差进行操作。调制单元630基于样式信号来调制第一中间数据,以产生经调制的特征。在一个实施例中,除了调制单元630、卷积层225和归一化单元635之外,样式块640还可以包括上采样器632,上采样器632执行类似于图2B的上采样器235的操作。经调制的特征被上采样(或不上采样),并且作为输入激活被输入到卷积层225。通过卷积层225将参数应用于输入激活以产生输出激活。
样式块640可以被重组以放松或减小归一化操作的强度,同时保留样式的特定于比例的效果。只删除实例归一化操作提高了图像质量(例如,删除斑点伪像)。但是,删除实例归一化也会导致样式的效果是累积的,而不是特定于每个比例。因此,由特定于比例的样式提供的用于合成的可控制性大大降低。在保持可控制性的同时去除伪像的替代方案是,将归一化基于传入的特征图的预期统计,但是没有显式强制。
回想一下,图6C中的样式块640至少包括调制单元630、卷积层225和归一化单元635。调制后进行卷积的效果是,调制根据传入的样式缩放卷积的每个输入特征图,其也可以通过缩放卷积权重来实现:
w′ijk=si·wijk, 公式(2)
其中w和w'分别是原始权重和经调制的权重,si是与第i个输入特征图相对应的比例因子,j和k分别枚举输出特征图和卷积的空间足迹。
现在,实例归一化的目的是从每个卷积产生的输出特征图统计信息中本质上消除s的影响。可以更直接地实现从输出特征图中消除s的影响的目标。假设输入到样式块640的中间数据是独立的,并且是具有单位标准偏差的均匀分布(即,i.d.)的随机变量,则在调制和卷积之后,由卷积层225产生的输出激活的标准偏差为
即,通过相应权重的L2范数来缩放每个输出特征图。随后的归一化旨在将输出激活恢复到单位标准偏差。基于公式(3),如果将每个输出特征图j以1/σj缩放(“解调”),则实现恢复输出。或者,可以将解调组合为卷积权重:
其中∈是一个小常数,以避免数值问题。
考虑到公式(2)和(4)的实际实现,需要注意的是,对于小批中的每个样本,所得的权重集将有所不同,这可能会排除使用标准卷积原语的直接实现。在一个实施例中,可以使用分组卷积来临时重塑权重和激活,使得每个卷积看到一个具有N组的样本–而不是具有一组的N个样本。分组卷积是有效的,因为重塑操作实际上并未修改权重和激活张量的内容。在另一个实施例中,可以在卷积前后采用显式缩放操作。
图6D示出了用于实现本公开的一些实施例的样式块645的框图。样式块640中的归一化单元635被替换为“解调”操作,“解调”操作被应用于与样式块645中的每个卷积层225关联的权重。应该理解,本文描述的这种布置和其他布置仅作为示例来阐述。可使用其他布置和元素(例如,机器、接口、功能、命令、功能分组等)来补充或代替所示的布置和元素,并且可以完全省略某些元素。此外,本文所描述的许多元素是功能实体,功能实体可以实现为离散或分布式组件,或与其他组件结合,并且以任何合适的组合和位置实现。本文描述为由实体执行的各种功能可以由硬件、固件和/或软件来执行。例如,各种功能可以由处理器执行存储在存储器中的指令来执行。此外,本领域普通技术人员将理解,执行样式块640或645的操作的任何系统都在本公开的实施例的范围和精神内。
如图6D所示,不是对特征(例如,中间数据)进行归一化,而是基于中间数据的“期望统计”对权重进行归一化。由于卷积是线性算子,因此缩放权重相当于缩放特征。因此,与样式块640相比,从特征处理中移除调制单元630和归一化单元635,并且在权重的处理路径中插入调制单元650和解调单元655。
权重首先由调制单元650通过样式信号来进行调制,以产生调制后的权重。调制权重相当于调制单元630对第一中间数据进行缩放以在样式块640中产生调制后的特征。在样式块645中,可选地由上采样器632对输入特征进行上采样,并输入至卷积层225,以产生输出特征。假设输入特征呈正态分布,则计算输出特征的期望标准偏差。最后,由解调单元655基于期望标准偏差,对调制后的权重进行解调,以产生经归一化的权重。解调经修改的权重相当于缩放由卷积层225生成的输出特征。空间噪声可选择性地插入到输出特征中以产生经修改的特征。然后,包括至少一个样式块645的合成神经网络可以根据样式生成输出数据(例如,图像),但是没有“斑点”伪像或伪像显著减少。
使用公式(2)和(4)基于s在样式块645内调整每个卷积层225的权重。为了避免在公式(4)中考虑激活函数,可以对激活函数进行缩放,以使激活函数保留期望信号变化。与实例归一化相比,解调技术较弱,因为它基于关于信号的统计假设,而不是基于特征图的实际内容。总之,由样式块645实现统计分析,以替代依赖于数据的归一化。
图6E示出了根据一个实施例的用于解调由生成器神经网络应用的权重的方法660的流程图。本文的方法660的每个框包括可以使用硬件、固件和/或软件的任何组合来执行的计算过程。例如,各种功能可以由处理器执行存储在存储器中的指令来执行。方法还可以体现为存储在计算机存储介质上的计算机可用指令。方法可以由独立应用程序、服务或托管服务(独立或与另一托管服务组合)或另一产品的插件(仅举几例)提供。另外,作为示例,相对于图6D的样式块645描述了方法660。然而,该方法可以附加地或替代地由任何一个系统或系统的任何组合来执行,包括但不限于本文的系统。此外,本领域普通技术人员将理解,执行方法660的任何系统都在本公开的实施例的范围和精神内。
在步骤665,样式块645接收第一权重,第一权重用于修改在生成器神经网络的第一阶段中的第一特征,生成器神经网络包括多个阶段,其中生成器神经网络的最后阶段产生输出数据。在一个实施例中,将基于样式的生成器系统100的合成神经网络140重组,来实现样式块645,以产生输出数据。在一个实施例中,在训练期间调整输入到合成神经网络140的第一中间数据的组件,并且使用N(0,1)来初始化。在另一个实施例中,第一中间数据对应于(或从其导出)附加输入数据,诸如参考图像。
在步骤670,调制单元650用第一样式控制信号调制第一权重,以产生第一调制后的权重。在步骤675,解调单元655解调第一经调制的权重,以产生第一经归一化的权重。在一个实施例中,调制单元650和解调单元655执行解调,以基于每个样本改变权重(而不是激活)。换句话说,可以针对输入到合成神经网络140的每个第一中间数据来调制权重。在步骤680,由第一阶段应用第一经归一化的权重,以产生经修改的第一特征。在一个实施例中,经修改的第一特征是由样式块645生成的输出特征。在一个实施例中,经修改的第一特征是将空间噪声插入输出特征中而产生的经修改的特征。在步骤685,经修改的第一特征由生成器神经网络的至少一个附加阶段来处理,以产生输出数据,输出数据包括与第一特征相对应的内容。
在一个实施例中,至少一个附加阶段包括另一样式块645。在一个实施例中,插入空间噪声和/或偏差,以对经修改的特征进行进一步修改,从而生成经修改的中间数据,经修改的中间数据由生成器神经网络的至少一个附加阶段来处理。在一个实施例中,权重调制和解调操作被包括在合成神经网络中,合成神经网络包括一个或更多个阶段,每个阶段包括样式块645,并且从输出样式块645中省略解调操作。
图6F示出了根据一个实施例的使用权重解调生成的输出图像662以及经修改的特征图664和668。与图6A中的输出图像相比,在输出图像662中缺少可见伪像或将其大大减少。类似地,由不同比例的样式块645产生的经修改的特征图664和668中,缺少或大大减少了可见伪像。在实现了减少和/或消除伪像的同时,还可以保留不同比例下样式的完全可控制性。此外,作为用于调制和解调权重而不是特征图的简化数据流的结果,可以减少训练时间。
生成器神经网络的平滑正则化
可以结合或独立于权重解调,来使用平滑度正则化技术,以改进由生成器神经网络产生的输出数据的质量。平滑度正则化致力于确保到神经网络的输入的细微变化导致输出中的细微变化,变化的幅度在可能的输入空间内保持一致,以及更改输入的可能方向。换句话说,潜在空间(或依次改变样式信号的中间潜在空间)中的微小变化应导致输出空间的微小变化(例如,图像)。目标是实现输入空间中变化的均匀分布和输出空间中相应变化的均匀分布。平滑度正则化技术可用于鼓励在潜在空间到输出数据之间、在第一中间数据与其他中间数据或输出之间、在任何两个中间数据之间,或者在任何中间数据与输出之间的平滑变换。
可以用来测量平滑度的度量还可以指示输出数据中质量的提高。在训练期间,度量可用于调整基于样式的生成器系统100的学习后的参数。具体地,可以通过平滑度正则化来调整用于合成神经网络140的权重,以改善度量以及输出数据的质量。
若干度量可用于定量分析使用生成式方法产生的图像的质量。弗雷谢特起始距离(FID)测量Inception(起始)V3分类器的高维特征空间中两个分布的密度的差异。精确度和召回率(P&R)通过显式量化生成的图像的百分比,来提供额外的可见性,生成的图像的百分比与训练数据和可以生成的训练数据的百分比类似。尽管FID和P&R成功地捕获了生成器的许多方面,但是这两个度量在图像质量方面都有些盲点。FID和P&R基于分类器网络,近来已显示分类器网络专注于纹理而不是形状,因此,这些度量无法准确地捕获图像质量的所有方面。然而,感知路径长度(PPL)度量最初是作为估计潜在空间插值的质量的方法引入的,感知路径长度度量与形状的一致性和稳定性相关。PPL通过估计中间潜在空间中随机插值路径的预期路径长度来量化转换的平滑度,期望路径长度是根据插值过程中图像的感知变化来测量的。通过考虑给定图像的紧邻区域内的无限短的插值路径,可以为各个图像(每个图像PPL)计算PPL度量。在一个实施例中,可以基于PPL度量来训练合成神经网络140,以利于平滑变换并实现所生成的输出数据的质量的改善。
图7A示出了根据一个实施例的由基于样式的生成器系统100生成的具有高PPL得分(长插值路径)的图像。六幅图像分别包括一只猫,但是在每幅图像中,猫的形状都是扭曲和/或不连续的,有时会与其他场景元素混杂在一起。换句话说,图7A中的六个图像缺乏语义一致性。为图7A中的每个图像计算的PPL得分位于一组随机示例图像的前90%,随机示例图像由基于样式的生成器系统100生成。
图7B示出了根据一个实施例的使用基于样式的生成器系统100生成的具有低PPL得分(短内插路径)的图像。图7B中的六幅图像也都分别包括一只猫,并且每只猫看起来都与预期的相符。没有猫出现与场景中其他元素不连续或混乱的情况。换句话说,图7B中的六幅图像通常在语义上是一致的。为图7B中每个图像计算的PPL得分在由基于样式的生成器系统100生成的一组随机示例图像的底部第10个百分点中。
如通过比较图7A和图7B中图像的质量可以观察到的,在感知的图像质量和所计算的PPL度量之间存在相关性。PPL度量是通过在潜在空间中的小扰动下测量生成的图像之间的平均学习感知图像补丁相似度(LPIPS)距离来计算的。较低的PPL(更平滑的生成器映射)似乎与较高的总体图像质量相关,而其他度量则缺乏与图像质量的相关性。
在实践中,考虑到生成图像的质量,在中间潜码和输出图像之间应用平滑正则化是非常有益的。可以通过比较针对使用和不使用平滑正规化训练的基于样式的生成器系统100的每图像PPL得分的分布,来理解平滑正规化的好处。
图7C示出了根据一个实施例的用于一组图像的PPL得分700的图。通过少量改变输入潜码或中间潜码来生成图像,以产生每个新图像。换句话说,在中间潜在空间中的微小移动应该对应于输出数据中的微小变化。图像集可以包括图7A和图7B所示的图像。分布的区域705中PPL得分是低PPL得分,低PPL得分与高质量图像相对应,高质量图像包括图7B所示的图像。分布的区域710中的PPL得分是高PPL得分,高PPL得分与低质量图像相对应,包括图7A所示的图像。相对于产生该图像的输入潜码的变化,区域710中的图像表现出大的和/或不连续的变化。换句话说,响应于潜码的小变化,与先前图像相比,该图像突然改变而不是平滑改变。图像由基于样式的生成器系统100使用不同的随机种子值作为输入来生成,并且基于中的路径端点来计算路径长度。
图7D示出了根据一个实施例的在使用平滑正则化时生成的一组图像的PPL得分720的分布。在一个实施例中,在训练期间将平滑正则化技术应用于基于样式的生成器系统100。映射神经网络110接收输入潜码,并产生中间潜码。合成神经网络140依次接收中间潜码并产生输出图像。具体地,在中间潜码和输出图像之间应用平滑正则化,以确保中间潜码和输出图像之间的变换是平滑的。在一个实施例中,在一个样式信号和输出数据之间应用平滑正则化。为与PPL得分700和720的分布相关联的图像计算的平均FID相等。然而,平均PPL得分是完全不同的,并且在PPL得分720的分布中缺少PPL得分700分布的区域710内分布的尾部。
低PPL与图像质量之间的关系目前尚不明显。也许在训练期间,随着鉴别器275惩罚损坏的图像,改进基于样式的生成器系统100的最直接方法是有效地拉伸产生良好图像的潜在空间的区域。结果,低质量图像可能被压缩到快速变化的小的潜在空间区域中。虽然不同的潜在空间区域的拉伸和压缩可在短期内提高平均输出质量,但是累积的失真会影响训练的动态性,从而影响最终的图像质量。较低PPL和提高的输出质量之间的经验相关性表明,通过在训练过程中鼓励低PPL而支持平滑的生成器映射可以改善图像质量。
基于样式的生成器系统100中过多的路径扭曲明显表现为不良的局部条件:随着对基于样式的生成器系统100的训练,中间潜在空间W中的任何小区域都会被任意压缩和拉伸。如果在潜在空间中的每个点处,小的位移都在图像空间中产生相同幅度的变化,而与让扰动方向无关,则认为从潜在空间映射到图像空间的生成器条件良好。可以在潜在空间中应用小位移,以在图像空间中产生等幅度的相应变化,或者可以在图像空间中应用小位移,以在潜在空间中产生等幅度的相应变化。
图2B所示的合成神经网络140包括一系列处理块200和230,每个处理块生成中间数据(激活)。可以将正则化应用于合成神经网络140,以确保中间潜码和输出图像之间的变换是平滑的。可替代地,可以在合成神经网络140中的任意两个对应点之间应用正则化。例如,可以对来自任何一对样式块645的输出(例如,输出特征或经修改的特征)之间的关系进行正则化。最终样式块645生成输出图像。或者,可以将正则化应用于其他生成器神经网络架构。在一个实施例中,为了平衡正则化的计算支出,可以不太频繁地执行正则化,而不必损害效率。
图7E示出了根据一个实施例的没有正则化的路径的概念图。通过重复改变样式信号相同的幅度来产生样式信号的线性轨迹725。作为响应,合成神经网络140产生输出数据的曲线轨迹730。曲线轨迹是由输出数据的变化导致的,与样式信号中相同幅度的变化相比,输出数据具有变化的幅度。
图7F示出了根据一个实施例的具有正则化的路径的概念图。训练映射网络110,以将潜码映射到中间潜在空间中并生成样式信号。与图7E所示的映射相比,图7F所示的映射更加统一。通过将样式信号重复改变相同幅度来产生样式信号的线性轨迹735。作为响应,合成神经网络140产生输出数据的近似线性轨迹740,输出数据的近似线性轨迹740具有相同幅度的变化。第一幅度的样式信号的变化在相似幅度的输出数据中产生相应的变化。
图8A示出了使用图6D的样式块645实现的合成神经网络840的框图,合成神经网络840用于实现本公开的一些实施例。合成神经网络840包括一系列样式块645和样式块646。与样式块645相比,从样式块646中省略了解调单元640,因为它是合成神经网络840中的最后一个样式块。第一样式块645接收第一中间数据、第一样式信号,以及权重集中的至少一部分权重。根据第一样式信号来处理权重,并将权重应用于第一中间数据以产生第二中间数据。第二中间数据包括在第一中间数据中编码的内容,该内容基于第一样式信号进行修改。可以将空间噪声和/或偏差(未示出)插入第二中间数据中。
第二样式块645接收第二中间数据、第二样式信号以及权重集中至少另一部分权重。根据第二样式信号来处理权重,并将其应用于第二中间数据,以产生第三中间数据。第三中间数据包括在第一中间数据中编码的内容,基于第一样式信号和第二样式信号来修改内容。在一个实施例中,第一样式信号和第二样式信号以不同的比例操作。因此,由第一样式信号产生的样式修改被保留在第三中间数据中。在其他实施例中,可以在第二样式块645和样式块646之间包括一个或更多个附加样式块645。在另一实施例中,省略第二样式块645,并且样式块646接收第二中间数据。空间噪声和/或偏差(未示出)可以被插入到第三中间数据中。
样式块646接收第三中间数据、第三样式信号以及权重集中至少另一部分权重。根据第三样式信号来处理权重,并将其应用于第三中间数据,以产生第四中间数据。第四中间数据包括在第一中间数据中编码的内容,基于第一样式信号、第二样式信号和第三样式信号来修改该内容。在一个实施例中,第一、第二和第三样式信号以不同的比例操作。因此,由第一和第二样式信号产生的样式修改被保留在第四中间数据中。可以将空间噪声和/或偏置(未示出)插入到第四中间数据中以产生输出数据。
图8B示出了根据实施例的生成器训练系统800的框图。生成器训练系统800可以由程序、定制电路或定制电路与程序的组合来实现。例如,生成器训练系统800可以使用GPU、CPU或能够执行本文描述的操作的任何处理器来实现。此外,本领域普通技术人员将理解,执行生成器训练系统800的操作的任何系统都在本发明的实施例的范围和精神内。
生成器训练系统800包括生成器神经网络820和训练损失单元810,生成器神经网络820诸如包括合成神经网络140或840的基于样式的生成器系统100。生成器神经网络820接收输入数据(例如,至少一个潜码和/或噪声输入),并产生输出数据。根据任务,输出数据可以是图像、音频、视频或其他类型的数据(配置设置)。生成器神经网络820可以使用训练数据集,训练数据集包括示例输出数据,生成器神经网络820产生的输出数据应该与该示例输出数据一致。生成器神经网络820响应于输入数据来生成输出数据,并且训练损失单元810确定输出数据是否与示例输出数据看起来类似,示例输出数据被包括在训练数据中。基于该确定,调节生成器神经网络820的一组参数。
当执行正则化时,训练损失单元810被配置为识别生成器神经网络820内的两个点,并且将第一修改应用于第一点,并且计算用于第二点的第二修改。第二修改与第一修改一致,并且基于第二修改计算正则化损失。然后更新生成器神经网络使用的参数集,以减少正则化损失。在一个实施例中,两个点可以包括中间数据和输出数据。在一个实施例中,两个点可以包括样式信号以及中间数据或输出数据。
在一个实施例中,通过将第一修改应用于第一点处的样式信号或中间数据,并由生成器神经网络820的后续层处理经修改的第一样式信号或中间数据以在中间数据中产生第二修改,或在第二点处输出数据,从而使用有限差分技术来计算第二修改。在一个实施例中,第一修改是小的随机量。
在一个实施例中,相对于第一点处的样式信号或中间数据的线性轨迹,通过区分第二点处的中间数据或输出数据,使用前向差分技术来计算第二修改,其中由第一修改定义线性变换。在一个实施例中,线性轨迹是随机选择的。
另一种平滑正则化技术改变了输出数据而不是修改中间数据或样式信号并通过生成器神经网络820向前传播修改。在一个实施例中,通过反转第一点和第二点,以使第一点相对于第二点在下游(就生成器神经网络820的处理而言),从而使用向后差分技术来计算第二修改。为了向后差分,在第一点处的中间数据或输出数据与第一修改之间计算内积(例如,点积),并且根据第二点处的样式信号或中间数据对内积进行微分,以计算第二修改。例如,在一个实施例中,可以将梯度向量计算为输出数据和随机向量之间的点积,梯度向量相对于中间数据或样式信号进行微分。
在训练合成神经网络840时,通过重复计算第二修改来执行正则化,然后与参考值相比,惩罚第二修改的幅度的偏差。基于该偏差来调整参数集(例如权重),以增加幅度的均匀性。第一点可对应于第一样式信号、第二样式信号、第三样式信号、第一中间数据、第二中间数据或第三中间数据。第二点可对应于第二中间数据、第三中间数据、第四中间数据或输出数据。当使用向后差分时,第一点和第二点的对应关系逆转。
图8C示出了根据一个实施例的用于平滑正则化以供在生成器神经网络中使用的方法825的流程图。本文描述的方法825的每个框包括计算过程,计算过程可以使用硬件、固件和/或软件的任何组合来执行。例如,各种功能可以由处理器执行存储在存储器中的指令来执行。方法还可以体现为存储在计算机存储介质上的计算机可用指令。方法可以由独立应用程序、服务或托管服务(独立或与其他托管服务组合)或另一种产品的插件等提供。另外,通过示例的方式,关于图8B的生成器神经网络820描述了方法825。但是,方法可以附加地或替代地由任何一个系统或系统的任何组合来执行,包括但不限于本文的系统。此外,本领域普通技术人员将理解,执行方法825的任何系统都在本公开的实施例的范围和精神内。
在步骤830,由生成器神经网络基于一组参数生成输出数据,其中生成器神经网络包括一个或更多个层,每个层输出特征到一个或更多个层中的后续层。在一个实施例中,生成器神经网络包括一个或更多个层,每个层包括第一层120、第二层130、处理块200或230和/或样式块600、640、645或646。在一个实施例中,生成器神经网络包括合成神经网络140或840。在一个实施例中,生成输出数据包括:在计算第一特征之前计算第二特征。在一个实施例中,第一特征是输出数据,第二特征是样式信号或中间数据,从而使用向后微分执行正则化。
在步骤835,识别第一特征和第二特征,第一特征与一个或更多个层中的第一层相关联,第二特征与一个或更多个层中的第二层相关联。在一个实施例中,第一特征是样式信号、中间数据和输出数据中的一个。在一个实施例中,第二特征是样式信号、中间数据和输出数据中的一个。
在步骤845,选择对第一特征的第一修改。在一个实施例中,第一修改导致第一特征的改变。在一个实施例中,选择第一修改包括随机地选择第一修改的每个组分,以产生第一修改的高斯分布。
在步骤850,计算对第二特征的第二修改,其中第二修改与第一修改一致。在一个实施例中,计算第二修改包括:根据第一修改来修改第一特征(例如,样式信号或中间数据)以产生经修改的第一特征,基于经修改的第一特征来重新计算第二特征以产生经修改的第二特征(例如下游中间数据或输出数据),以及将第二修改计算为第二特征和经修改的第二特征之间的差。在一个实施例中,重新计算第二特征包括:由生成器神经网络的一个或更多个层来处理经修改的第一特征,以产生经修改的第二特征。
当使用向后差分执行正则化时,可以通过计算第一特征(例如,下游中间数据或输出数据)和第一修改之间的内积,随后计算该内积相对于第二修改的微分,来计算第二修改。
在步骤855,基于第二修改来计算正则化损失。在一个实施例中,由训练损失单元810计算正则化损失。在一个实施例中,正则化损失包括第二修改的幅度。在一个实施例中,正则化损失包括L2范数函数。在一个实施例中,通过将第二修改的幅度与参考值进行比较来计算正则化损失。在一个实施例中,参考值是常数。在另一个实施例中,参考值被计算为多次执行生成器神经网络的幅度平均值。
在步骤860,更新参数集来减少正则化损失。在一个实施例中,参数集是权重,其中权重的不同部分由生成器神经网络中不同层应用于激活。在一个实施例中,更新参数集使幅度更接近参考值。
在中间潜在空间的单个点处,生成器映射的局部度量比例属性由雅可比矩阵(Jacobian matrix)捕获。中间潜在空间中的点可以是在步骤840处识别的第一特征,并且可以包括与生成器的层相关联的样式信号或中间数据。出于对保持向量预期长度(无论方向如何)的期望,可以将用于执行向后差分的正则化器函数公式化为
其中a是参考值,y是修改,诸如具有正态分布的像素强度的随机图像,且w~f(z),其中潜在空间z中的潜向量是正态分布的。可以由基于样式的生成器系统100使用随机潜码来生成随机图像,以生成初始图像。一组随机的每像素高斯噪声图像可用于定义对初始图像的一组修改。噪声图像不需要用于实际修改初始图像。
为了避免对雅可比矩阵的显式计算,可以使用标准反向传播有效地计算身份:由于向初始图像g(w)添加了随机噪声y,包括第二修改,第二修改与样式信号或中间数据的修改相对应。在一个实施例中,a是一个在优化期间动态设置的常数,常数作为第二修改的幅度的长度的长期指数移动平均值允许优化本身找到合适的全局比例。在一个实施例中,第二修改对乘积进行分析计算。当Jw在任意w处正交(达到全局比例)时,公式(5)被最小化。正交矩阵会保留长度,并且不会沿任何维度引入压缩。因此,正交矩阵与均匀空间相关联。
由修改产生的初始图像g(w).的变化(例如,噪声图像)被计算为图像与噪声图像集合g(w)·y中的每个噪声图像y之间的点积。假设基于每个噪声图像修改了初始图像,则点积表示初始图像在噪声图像方向上移动的速度。噪声图像定义了图像空间的变化。可以通过计算点积相对于中间潜码w的差梯度来确定每个改变的方向,中间潜码w用于生成样式信号。方向指示了在中间潜在空间中应该发生移动以最大化修改后图像的改变的方向。差梯度的长度(幅度)指示了图像中的变化相对于潜在空间中的相应变化(例如,第二修改)的噪声图像的速度,潜在空间中的相应变化在差梯度的方向上。
如公式(5)所示,将第二修改的幅度(差梯度长度)与参考长度(a)进行比较,并且差的平方是在训练过程中计算的对w和y的特定选择的正则化惩罚。差梯度应向长度相等的方向收敛,从而指示空间之间的变换更加均匀。在训练期间,可以通过损失函数来惩罚差梯度长度中的变化以执行平滑正则化。在基于样式的生成器系统100或生成器神经网络820的训练期间,在针对w和y的多个选择重复进行正则化过程时,公式(5)计算对最小化的多个选择的正则化惩罚的平均值。
由于差梯度的计算有些昂贵,因此可以使用适用于所有正则化技术的一般优化方法。通常,主损失函数(例如,逻辑损失)和正则化项(例如,R1)被写为单个表达式,并且因此被同时优化。然而,正则化项的计算频率比主损失函数要低得多,从而大大降低了它们的计算成本和总体内存使用。例如,R1正则化可以每16个小批只执行一次,而没有任何缺点。此外,由于正则化项的计算频率较低,训练性能也可以提高。在一个实施例中,以61个图像/秒的速度执行实现权重解调的生成器神经网络的计算频率降低的训练与没有权重解调和正则化而实现的37个图像/秒相比快40%。
已经识别出图像质量问题,诸如图6A中所示的伪像601、603和605,并且重组合成神经网络以实现权重解调,可以提高质量。权重解调方法还可以应用于其他生成器神经网络。另外,正则化由两个不同层(或阶段)输出的中间数据之间的平滑度,或者正则化中间数据与输出图像之间的平滑度,减少了图像伪像,诸如图像7A中所示的伪像。正则化技术可以与权重解调结合使用,也可以单独使用,以提高生成器神经网络的性能。
注意,本文所描述的技术可以体现在存储在计算机可读介质中的可执行指令中,以供基于处理器的指令执行机器、系统、装置或设备使用或与其结合使用。本领域技术人员将理解,对于一些实施例,可以包括各种类型的计算机可读介质,用来存储数据。如本文所使用的,“计算机可读介质”包括用于存储计算机程序的可执行指令的任何合适介质中的一个或更多个,使得指令执行机器、系统、装置或设备可以从计算机可读介质中读取(或获取)指令,并执行用于执行所描述的实施例的指令。合适的存储格式包括电子、磁、光和电磁格式中的一种或更多种。常规示例性计算机可读介质的非详尽列表包括:便携式计算机软盘;随机存取存储器(RAM);只读存储器(ROM);可擦除可编程只读存储器(EPROM);闪存设备;以及光学存储设备,包括便携式光盘(CD)、便携式数字视频光盘(DVD),诸如此类。
应该理解,附图中所示组件的布置是出于说明的目的,并且其他布置也是可能的。例如,本文描述的一个或更多个元素可以全部或部分地实现为电子硬件组件。可以以软件、硬件或软件和硬件的组合来实现其他元素。此外,可以组合这些其他元素中的一些或全部,可以完全省略一些其他元素,并且可以添加附加组件,同时仍实现本文的功能。因此,本文所描述的主题可以体现为许多不同的变化,并且所有这些变化都被认为在本权利要求的范围内。
为了便于对本文描述的主题的理解,根据动作序列描述了许多方面。本领域技术人员将认识到,各种动作可以由专用电路或电路、由一个或更多个处理器执行的程序指令,或由两者的组合来执行。本文对任何动作序列的描述并不旨在暗示必须遵循为执行该序列而描述的特定顺序。除非本文另外指出或与上下文明显矛盾,否则本文描述的所有方法可以以任何合适的顺序执行。
在描述主题的上下文中(特别是在所附权利要求的上下文中)术语“一”、“一个”和“该”以及类似的引用的使用应解释为涵盖单数形式和单数形式。除非本文另有说明或与上下文明显矛盾,否则为复数形式。术语“至少一个”后面是一个或更多个项目的列表(例如,“A和B中的至少一个”)应理解为是指从所列项目(A或B)中选择的一个项目)或两个或更多个所列项目(A和B)的任意组合,除非本文另有说明或与上下文明显矛盾。此外,上述描述仅出于说明的目的,而非出于限制的目的,因为所寻求的保护范围由下文的权利要求及其等同形式限定。除非另外要求,否则本文提供的任何和所有示例或示例性语言(例如“诸如”)的使用仅旨在更好地说明主题,并且不对主题的范围构成限制。在权利要求书和书面说明书中,术语“基于”和其他类似的短语表示产生结果的条件的使用,并不旨在排除产生该结果的任何其他条件。说明书中的任何语言都不应解释为指示任何未要求保护的要素对于实施所要求保护的发明是必不可少的。
Claims (20)
1.一种计算机实现的方法,包括:
在生成器神经网络的第一阶段接收用于修改第一特征的第一权重,所述生成器神经网络包括多个阶段,其中所述生成器神经网络的最后阶段产生输出数据;
用第一样式控制信号调制所述第一权重,以产生第一经调制的权重;
解调所述第一经调制的权重,以产生第一经归一化的权重;
由所述第一阶段应用所述第一经归一化的权重,以产生经修改的第一特征;以及
由所述生成器神经网络的至少一个附加阶段处理所述经修改的第一特征,以产生所述输出数据,所述输出数据包括与所述第一特征相对应的内容。
2.根据权利要求1所述的计算机实现的方法,其中所述第一权重包括第一值和第二值,所述第一值与用于处理第一输入样本的所述生成器神经网络的第一执行相关联,所述第二值与用于处理第二输入样本的所述生成器神经网络的第二执行相关联。
3.根据权利要求1所述的计算机实现的方法,其中所述解调包括:计算所述经修改的第一特征的预期标准偏差,所述经修改的第一特征用于解调所述第一组权重。
4.根据权利要求1所述的计算机实现的方法,其中所述应用包括:将所述第一经归一化的权重与所述第一特征进行卷积,以产生所述经修改的第一特征。
5.根据权利要求1所述的计算机实现的方法,还包括:
将输入空间中的潜码映射到中间空间以产生中间潜码,所述中间空间包括线性子空间,其中每个所述线性子空间与所述内容的不同属性相对应;以及
将仿射变换应用于所述中间潜码以产生所述第一样式信号。
6.根据权利要求1所述的计算机实现的方法,其中所述第一样式控制信号至少控制所述内容的第一属性。
7.根据权利要求1所述的计算机实现的方法,还包括:
在所述生成器神经网络的所述附加阶段接收用于修改第二特征的第二权重;
用第二样式控制信号调制所述第二权重,以产生第二经调制的权重;
解调所述第二经调制的权重,以产生第二经归一化的权重;以及
由所述附加阶段将所述第二经归一化的权重应用于所述经修改的第一特征,以产生经修改的第二特征。
8.根据权利要求7所述的计算机实现的方法,其中所述第一样式控制信号修改所述第一特征以改变在第一比例的所述内容,并且所述第二样式控制信号修改所述经修改的第一特征以改变在第二比例的所述内容。
9.根据权利要求7所述的计算机实现的方法,还包括:在由所述附加阶段应用所述第二经归一化的权重之前,在所述经修改的第一特征中插入噪声。
10.根据权利要求1所述的计算机实现的方法,还包括:
在所述生成器神经网络的所述最后阶段接收用于修改第二特征的第二权重;
用第二样式控制信号调制所述第二权重,以产生第二经调制的权重;
由所述最后阶段将所述第二经调制的权重应用于所述经修改的第一特征,以产生所述输出数据。
11.根据权利要求1所述的计算机实现的方法,其中所述接收、调制、解调、应用和处理的步骤在云计算环境中执行。
12.根据权利要求1所述的计算机实现的方法,其中所述接收、调制、解调、应用和处理的步骤在服务器上或数据中心中执行以生成图像,并且所述图像被流传输到用户设备。
13.根据权利要求1所述的计算机实现的方法,其中执行所述接收、调制、解调、应用和处理的步骤,以生成用于训练、测试或认证神经网络的图像,所述神经网络在机器、机器人或自主车辆中采用。
14.一种系统,包括:
处理器,其被配置为实现包括多个阶段的生成器神经网络,其中所述生成器神经网络的最后阶段产生输出数据,并且所述生成器神经网络被配置成:
在所述生成器神经网络的第一阶段接收用于修改第一特征的第一权重;
用第一样式控制信号调制所述第一权重,以产生第一经调制的权重;
解调所述第一经调制的权重,以产生第一经归一化的权重;
由所述第一阶段应用所述第一经归一化的权重以产生经修改的第一特征;以及
由所述生成器神经网络的至少一个附加阶段处理所述经修改的第一特征,以产生所述输出数据,所述输出数据包括与所述第一特征相对应的内容。
15.根据权利要求14所述的系统,其中所述第一权重包括第一值和第二值,所述第一值与用于处理第一输入样本的所述生成器神经网络的第一执行相关联,所述第二值与用于处理第二输入样本的所述生成器神经网络的第二执行相关联。
16.根据权利要求14所述的系统,其中所述解调包括:计算所述经修改的第一特征的预期标准偏差,所述经修改的第一特征用于解调所述第一组权重。
17.根据权利要求14所述的系统,其中所述应用包括:将所述第一经归一化的权重与所述第一特征进行卷积,以产生所述经修改的第一特征。
18.根据权利要求14所述的系统,其中所述生成器神经网络进一步被配置为:
将输入空间中的潜码映射到中间空间以产生中间潜码,所述中间空间包括线性子空间,其中每个所述线性子空间与所述内容的不同属性相对应;以及
将仿射变换应用于所述中间潜码以产生所述第一样式信号。
19.根据权利要求14所述的系统,其中所述第一样式控制信号至少控制所述内容的第一属性。
20.一种非暂时性计算机可读介质,其存储计算机指令,所述计算机指令在由一个或更多个处理器执行时,使所述一个或更多个处理器执行以下步骤:
在生成器神经网络的第一阶段接收用于修改第一特征的第一权重,所述生成器神经网络包括多个阶段,其中所述生成器神经网络的最后阶段产生输出数据;
用第一样式控制信号调制所述第一权重,以产生第一经调制的权重;
解调所述第一经调制的权重,以产生第一经归一化的权重;
由所述第一阶段应用所述第一经归一化的权重,以产生经修改的第一特征;以及
由所述生成器神经网络的至少一个附加阶段处理所述经修改的第一特征,以产生所述输出数据,所述输出数据包括与所述第一特征相对应的内容。
Applications Claiming Priority (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202062990012P | 2020-03-16 | 2020-03-16 | |
US62/990,012 | 2020-03-16 | ||
US17/160,585 | 2021-01-28 | ||
US17/160,585 US11605001B2 (en) | 2018-11-14 | 2021-01-28 | Weight demodulation for a generative neural network |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113408694A true CN113408694A (zh) | 2021-09-17 |
Family
ID=77457480
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110276236.8A Pending CN113408694A (zh) | 2020-03-16 | 2021-03-15 | 用于生成式神经网络的权重解调 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN113408694A (zh) |
DE (1) | DE102021105291A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115439720A (zh) * | 2022-11-08 | 2022-12-06 | 成都数联云算科技有限公司 | Cam图像的重构方法、训练方法、装置、设备及介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100303162A1 (en) * | 2007-09-27 | 2010-12-02 | Datang Mobile Communications Equipment Co., Ltd. | Multi-users detecting method and device of ofdm transmission signal |
US20180012359A1 (en) * | 2016-07-06 | 2018-01-11 | Marinko Venci Sarunic | Systems and Methods for Automated Image Classification and Segmentation |
CN110059793A (zh) * | 2017-10-26 | 2019-07-26 | 辉达公司 | 生成式对抗神经网络的逐步修改 |
CN110073371A (zh) * | 2017-05-05 | 2019-07-30 | 辉达公司 | 用于以降低精度进行深度神经网络训练的损失缩放 |
US20190244106A1 (en) * | 2018-02-08 | 2019-08-08 | Western Digitial Technologies, Inc. | Convolution engines for systolic neural network processor |
CN110335584A (zh) * | 2018-03-29 | 2019-10-15 | 福特全球技术公司 | 神经网络生成建模以变换语音发音和增强训练数据 |
CN110837523A (zh) * | 2019-10-29 | 2020-02-25 | 山东大学 | 一种基于级联神经网络的高置信改造质量和减假暂量化评估方法 |
-
2021
- 2021-03-04 DE DE102021105291.2A patent/DE102021105291A1/de active Pending
- 2021-03-15 CN CN202110276236.8A patent/CN113408694A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100303162A1 (en) * | 2007-09-27 | 2010-12-02 | Datang Mobile Communications Equipment Co., Ltd. | Multi-users detecting method and device of ofdm transmission signal |
US20180012359A1 (en) * | 2016-07-06 | 2018-01-11 | Marinko Venci Sarunic | Systems and Methods for Automated Image Classification and Segmentation |
CN110073371A (zh) * | 2017-05-05 | 2019-07-30 | 辉达公司 | 用于以降低精度进行深度神经网络训练的损失缩放 |
CN110059793A (zh) * | 2017-10-26 | 2019-07-26 | 辉达公司 | 生成式对抗神经网络的逐步修改 |
US20190244106A1 (en) * | 2018-02-08 | 2019-08-08 | Western Digitial Technologies, Inc. | Convolution engines for systolic neural network processor |
CN110335584A (zh) * | 2018-03-29 | 2019-10-15 | 福特全球技术公司 | 神经网络生成建模以变换语音发音和增强训练数据 |
CN110837523A (zh) * | 2019-10-29 | 2020-02-25 | 山东大学 | 一种基于级联神经网络的高置信改造质量和减假暂量化评估方法 |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115439720A (zh) * | 2022-11-08 | 2022-12-06 | 成都数联云算科技有限公司 | Cam图像的重构方法、训练方法、装置、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
DE102021105291A1 (de) | 2021-09-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11775829B2 (en) | Generative adversarial neural network assisted video reconstruction | |
US11610435B2 (en) | Generative adversarial neural network assisted video compression and broadcast | |
US11605217B2 (en) | Style-based architecture for generative neural networks | |
US11620521B2 (en) | Smoothing regularization for a generative neural network | |
US11880927B2 (en) | Three-dimensional object reconstruction from a video | |
US11450077B2 (en) | Appearance-driven automatic three-dimensional modeling | |
US20220222832A1 (en) | Machine learning framework applied in a semi-supervised setting to perform instance tracking in a sequence of image frames | |
US11954862B2 (en) | Joint estimation of heart rate and respiratory rate using neural networks | |
CN113496271A (zh) | 神经网络控制变量 | |
US20210383241A1 (en) | Training neural networks with limited data using invertible augmentation operators | |
CN113762461A (zh) | 使用可逆增强算子采用有限数据训练神经网络 | |
US11282258B1 (en) | Adaptive sampling at a target sampling rate | |
CN113542758A (zh) | 生成对抗神经网络辅助的视频压缩和广播 | |
US20230298243A1 (en) | 3d digital avatar generation from a single or few portrait images | |
US11605001B2 (en) | Weight demodulation for a generative neural network | |
US20230252692A1 (en) | Learning dense correspondences for images | |
CN113408694A (zh) | 用于生成式神经网络的权重解调 | |
US20220398283A1 (en) | Method for fast and better tree search for reinforcement learning | |
US11922558B2 (en) | Hybrid differentiable rendering for light transport simulation systems and applications | |
CN113542759B (zh) | 生成对抗神经网络辅助的视频重建 | |
US20240112308A1 (en) | Joint neural denoising of surfaces and volumes | |
US20240169636A1 (en) | Physics-guided motion diffusion model |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |