DE102021105291A1 - WEIGHT DEMODULATION FOR A GENERATING NEURAL NETWORK - Google Patents

WEIGHT DEMODULATION FOR A GENERATING NEURAL NETWORK Download PDF

Info

Publication number
DE102021105291A1
DE102021105291A1 DE102021105291.2A DE102021105291A DE102021105291A1 DE 102021105291 A1 DE102021105291 A1 DE 102021105291A1 DE 102021105291 A DE102021105291 A DE 102021105291A DE 102021105291 A1 DE102021105291 A1 DE 102021105291A1
Authority
DE
Germany
Prior art keywords
style
network
weights
neural
features
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
Application number
DE102021105291.2A
Other languages
German (de)
Inventor
Tero Tapani KARRAS
Samuli Matias Laine
Jaakko T. Lehtinen
Miika Samuli Aittala
Janne Johannes Hellsten
Timo Oskari Aila
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nvidia Corp
Original Assignee
Nvidia Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Priority claimed from US17/160,585 external-priority patent/US11605001B2/en
Application filed by Nvidia Corp filed Critical Nvidia Corp
Publication of DE102021105291A1 publication Critical patent/DE102021105291A1/en
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/047Probabilistic or stochastic networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/088Non-supervised learning, e.g. competitive learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N7/00Computing arrangements based on specific mathematical models
    • G06N7/01Probabilistic 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

Eine stilbasierte erzeugende Netzwerkarchitektur ermöglicht eine skalenspezifische Steuerung von synthetisierten Ausgabedaten, wie z. B. Bildern. Während des Trainings weist das stilbasierte erzeugende neuronale Netz (neuronales Generatornetzwerk) ein Abbildungsnetzwerk und ein Synthesenetzwerk auf. Während einer Vorhersage kann das Abbildungsnetzwerk weggelassen, repliziert oder mehrmals ausgewertet werden. Das Synthesenetzwerk kann verwendet werden, um sehr unterschiedliche, qualitativ hochwertige Ausgabedaten mit einer Vielzahl von Attributen zu erzeugen. Bei der Erzeugung von Bildern von Gesichtern von Personen können beispielsweise folgende Attribute variieren: Alter, ethnische Zugehörigkeit, Kamerastandpunkt, Pose, Gesichtsform, Brille, Farben (Augen, Haare usw.), Frisur, Beleuchtung, Hintergrund usw. Je nach Aufgabenstellung können die generierten Ausgabedaten Bilder, Audio, Video, dreidimensionale (3D) Objekte, Text usw. aufweisen.A style-based generating network architecture enables scale-specific control of synthesized output data, such as B. Pictures. During the training, the style-based generating neural network (neural generator network) has a mapping network and a synthesis network. During a prediction, the mapping network can be omitted, replicated or evaluated several times. The synthesis network can be used to generate very different, high-quality output data with a large number of attributes. When generating images of people's faces, the following attributes can vary, for example: age, ethnicity, camera position, pose, face shape, glasses, colors (eyes, hair, etc.), hairstyle, lighting, background, etc. Depending on the task, the Output data includes images, audio, video, three-dimensional (3D) objects, text, and so on.

Description

TECHNISCHES GEBIETTECHNICAL AREA

Die vorliegende Erfindung bezieht sich auf neuronale Netze und insbesondere auf eine Generatorarchitektur zur Synthese von Daten mit skalenspezifischen Steuerungen.The present invention relates to neural networks and, more particularly, to a generator architecture for synthesizing data with scale specific controls.

HINTERGRUNDBACKGROUND

Die Auflösung und Qualität von Bildern, die durch erzeugende gegnerische Netzwerke („Generative Adversarial Network“ (GAN)) erzeugt werden, hat sich in letzter Zeit verbessert. Dennoch arbeiten GANs nach wie vor als Blackboxen, und trotz jüngster Bemühungen fehlt es immer noch am Verständnis verschiedener Aspekte des Bildsyntheseprozesses, z. B. der Herkunft von stochastischen Merkmalen. Die Eigenschaften des latenten Raums („latent space“) werden ebenfalls nur unzureichend verstanden, und die allgemein demonstrierten Interpolationen des latenten Raums bieten keine quantitative Möglichkeit, verschiedene GANs miteinander zu vergleichen. Es besteht die Notwendigkeit, diese Probleme und/oder andere mit dem Stand der Technik verbundene Probleme zu lösen.The resolution and quality of images generated by Generative Adversarial Network (GAN) has improved recently. However, GANs still operate as black boxes and despite recent efforts, there is still a lack of understanding of various aspects of the image synthesis process, e.g. B. the origin of stochastic features. The properties of latent space are also poorly understood, and the generally demonstrated interpolations of latent space do not provide a quantitative way of comparing different GANs. There is a need to solve these problems and / or other problems associated with the prior art.

ZUSAMMENFASSUNGSUMMARY

Eine stilbasierte generative Netzwerkarchitektur ermöglicht eine skalenspezifische bzw. maßstabsspezifische Steuerung der synthetisierten Ausgabedaten, wie z. B. Bilder. Während des Trainings weist das stilbasierte generative bzw. erzeugende neuronale Netz (neuronales Generatornetz) ein Abbildungsnetzwerk (mapping network) und ein Synthesenetzwerk auf. Während der Vorhersage kann das Abbildungsnetzwerk weggelassen, repliziert oder mehrmals ausgewertet werden. Das Synthesenetzwerk kann verwendet werden, um sehr unterschiedliche, qualitativ hochwertige Ausgabedaten mit einer Vielzahl von Attributen zu erzeugen. Bei der Erzeugung von Bildern von Gesichtern von Personen können beispielsweise folgende Attribute variieren: Alter, ethnische Zugehörigkeit, Kamerastandpunkt, Pose, Gesichtsform, Brille, Farben (Augen, Haare usw.), Frisur, Beleuchtung, Hintergrund usw. Abhängig von der Aufgabe können die generierten Ausgabedaten Bilder, Audio, Video, dreidimensionale (3D) Objekte, Text usw. einschließen.A style-based generative network architecture enables a scale-specific or scale-specific control of the synthesized output data, such as B. Pictures. During the training, the style-based generative or generating neural network (neural generator network) has a mapping network and a synthesis network. During the prediction, the mapping network can be omitted, replicated or evaluated several times. The synthesis network can be used to generate very different, high-quality output data with a large number of attributes. When creating images of people's faces, the following attributes can vary, for example: age, ethnicity, camera position, pose, face shape, glasses, colors (eyes, hair, etc.), hairstyle, lighting, background, etc. Depending on the task, the The generated output data include images, audio, video, three-dimensional (3D) objects, text, and so on.

Es werden ein Verfahren, ein computerlesbares Medium und ein System zum Synthetisieren von Ausgabedaten unter Verwendung eines neuronalen Abbildungsnetzwerks und eines neuronalen Synthesenetzwerks offenbart. Ein latenter Code, der in einem Eingaberaum definiert ist, wird durch das neuronale Abbildungsnetzwerk verarbeitet, um einen latenten Zwischencode zu erzeugen, der in einem latenten Zwischenraum definiert ist. Der latente Zwischencode wird in ein erstes Stilsignal umgewandelt. Das erste Stilsignal wird in einer ersten Schicht des neuronalen Synthesenetzwerks angewendet, um erste Zwischendaten entsprechend dem ersten Stilsignal zu modifizieren und modifizierte erste Zwischendaten zu erzeugen. In einer Ausführungsform ist der latente Zwischencode ein Vektor, der über eine affine Transformation in das erste Stilsignal umgewandelt wird. Die modifizierten ersten Zwischendaten werden verarbeitet, um zweite Zwischendaten zu erzeugen, und ein zweites Stilsignal wird in einer zweiten Schicht des neuronalen Synthesenetzwerks angewendet, um die zweiten Zwischendaten entsprechend dem zweiten Stilsignal zu modifizieren, um zweite modifizierte Zwischendaten zu erzeugen. In einer Ausführungsform ist der latente Zwischencode eine Kombination aus dem ersten und dem zweiten Stilsignal und ein Abschnitt des latenten Zwischencodes wird extrahiert, um das erste und/oder das zweite Stilsignal zu erzeugen. In einer Ausführungsform wird der latente Zwischencode über eine affine Transformation in das zweite Stilsignal umgewandelt. In einer Ausführungsform wird ein zweiter latenter Code, der in dem Eingaberaum definiert ist, von dem neuronalen Abbildungsnetzwerk verarbeitet, um einen zweiten latenten Zwischencode zu erzeugen, der in dem latenten Zwischenraum definiert ist, und der zweite latente Zwischencode wird in das zweite Stilsignal umgewandelt. In einer Ausführungsform werden die modifizierten ersten Zwischendaten durch nachfolgende Schichten, wie z. B. eine 3x3-Faltungsschicht, verarbeitet, um die zweiten Zwischendaten zu erzeugen. Die zweiten Zwischendaten werden verarbeitet, um Ausgabedaten zu erzeugen, die einen Inhalt umfassen, der den zweiten Zwischendaten entspricht.A method, computer readable medium and system for synthesizing output data using a neural mapping network and a neural synthesis network are disclosed. A latent code defined in an input space is processed by the neural mapping network to produce an intermediate latent code defined in a latent space. The intermediate latent code is converted into a first style signal. The first style signal is used in a first layer of the neural synthesis network in order to modify first intermediate data in accordance with the first style signal and to generate modified first intermediate data. In one embodiment, the latent intermediate code is a vector which is converted into the first style signal via an affine transformation. The modified first intermediate data is processed to generate second intermediate data, and a second style signal is applied in a second layer of the neural synthesis network to modify the second intermediate data in accordance with the second style signal to generate second modified intermediate data. In one embodiment, the intermediate latent code is a combination of the first and second style signals and a portion of the intermediate latent code is extracted to generate the first and / or second style signals. In one embodiment, the latent intermediate code is converted into the second style signal via an affine transformation. In one embodiment, a second latent code defined in the input space is processed by the neural mapping network to generate a second intermediate latent code defined in the latent space and the second intermediate latent code is converted to the second style signal. In one embodiment, the modified first intermediate data is passed through subsequent layers, such as e.g. A 3x3 convolutional layer, is processed to generate the second intermediate data. The second intermediate data is processed to Generate output data comprising content corresponding to the second intermediate data.

Ein Verfahren, ein computerlesbares Medium und ein System werden zum Synthetisieren von Ausgabedaten unter Verwendung eines neuronalen Synthesenetzwerks offenbart. Ein erster Satz räumlichen Rauschens wird in einer ersten Schicht des neuronalen Synthesenetzwerks angewendet, um modifizierte erste Zwischendaten zu erzeugen, die einen Inhalt umfassen, der den ersten Zwischendaten entspricht, die abhängig von dem ersten Satz räumlichen Rauschens modifiziert werden. Die modifizierten ersten Zwischendaten werden verarbeitet, um zweite Zwischendaten zu erzeugen, und ein zweiter Satz räumlichen Rauschens wird in einer zweiten Schicht des neuronalen Synthesenetzwerks angewendet, um modifizierte zweite Zwischendaten zu erzeugen, die einen Inhalt umfassen, der den zweiten Zwischendaten entspricht, die abhängig von dem zweiten Satz räumlichen Rauschens modifiziert werden. Die modifizierten zweiten Zwischendaten werden verarbeitet, um Ausgabedaten zu erzeugen, die einen Inhalt umfassen, der den zweiten Zwischendaten entspricht.A method, computer readable medium and system are disclosed for synthesizing output data using a neural synthesis network. A first set of spatial noise is applied in a first layer of the neural synthesis network to generate modified first intermediate data that includes content that corresponds to the first intermediate data that is modified depending on the first set of spatial noise. The modified first intermediate data is processed to generate second intermediate data, and a second set of spatial noise is applied in a second layer of the neural synthesis network to generate modified second intermediate data comprising content corresponding to the second intermediate data dependent on the second set of spatial noise. The modified second intermediate data is processed to generate output data comprising content corresponding to the second intermediate data.

FigurenlisteFigure list

  • 1A stellt ein Blockdiagramm eines stilbasierten Generatorsystems gemäß einer Ausführungsform dar. 1A FIG. 10 illustrates a block diagram of a style-based generator system in accordance with an embodiment.
  • 1B zeigt Bilder, die von dem stilbasierten Generatorsystem gemäß einer Ausführungsform erzeugt werden. 1B Figure 12 shows images generated by the style-based generator system according to an embodiment.
  • 1C stellt ein Flussdiagramm eines Verfahrens zur stilbasierten Generierung gemäß einer Ausführungsform dar. 1C shows a flowchart of a method for style-based generation according to an embodiment.
  • 2A stellt ein Blockdiagramm des in 1A gezeigten neuronalen Abbildungsnetzwerks gemäß einer Ausführungsform dar. 2A represents a block diagram of the in 1A illustrated neural mapping network according to an embodiment.
  • 2B stellt ein Blockdiagramm des in 1A gezeigten neuronalen Synthesenetzwerks gemäß einer Ausführungsform dar. 2 B represents a block diagram of the in 1A shown neural synthesis network according to an embodiment.
  • 2C stellt ein Flussdiagramm eines Verfahrens zur Anwendung von räumlichem Rauschen unter Verwendung des stilbasierten Generatorsystems gemäß einer Ausführungsform dar. 2C FIG. 10 illustrates a flow diagram of a method for applying spatial noise using the style-based generator system, according to an embodiment.
  • 2D stellt ein Blockdiagramm eines GAN-Systems gemäß einer Ausführungsform dar. 2D FIG. 10 illustrates a block diagram of a GAN system according to an embodiment.
  • 3 stellt eine Parallelverarbeitungseinheit gemäß einer Ausführungsform dar. 3 illustrates a parallel processing unit according to an embodiment.
  • 4A stellt einen allgemeinen Verarbeitungscluster innerhalb der Parallelverarbeitungseinheit von 3 gemäß einer Ausführungsform dar. 4A represents a general processing cluster within the parallel processing unit of 3 according to one embodiment.
  • 4B zeigt eine Speicherpartitionseinheit der Parallelverarbeitungseinheit von 3 gemäß einer Ausführungsform. 4B FIG. 13 shows a memory partition unit of the parallel processing unit of FIG 3 according to one embodiment.
  • 5A stellt den Streaming-Multiprozessor aus 4A gemäß einer Ausführungsform dar. 5A turns off the streaming multiprocessor 4A according to one embodiment.
  • 5B ist ein konzeptionelles Diagramm eines Verarbeitungssystems, das unter Verwendung der PPU von 3 gemäß einer Ausführungsform implementiert ist. 5B FIG. 13 is a conceptual diagram of a processing system implemented using the PPU of FIG 3 is implemented according to one embodiment.
  • 5C stellt ein beispielhaftes System dar, in dem die verschiedenen Architekturen und/oder Funktionen der verschiedenen vorherigen Ausführungsformen implementiert werden können. 5C FIG. 10 depicts an exemplary system in which the various architectures and / or functions of the various previous embodiments may be implemented.
  • 5D stellt Komponenten eines beispielhaften Systems dar, das zum Trainieren und Verwenden von maschinellem Lernen zur Verwendung bei der Implementierung einiger Ausführungsformen der vorliegenden Offenbarung verwendet werden kann. 5D FIG. 10 illustrates components of an exemplary system that may be used to train and use machine learning for use in implementing some embodiments of the present disclosure.
  • 6A stellt Artefakte in Bildern dar, die von dem stilbasierten Generatorsystem gemäß einer Ausführungsform erzeugt werden. 6A illustrates artifacts in images generated by the style-based generator system according to one embodiment.
  • 6B stellt ein Blockdiagramm des in 2B gezeigten Verarbeitungsblocks gemäß einer Ausführungsform dar. 6B represents a block diagram of the in 2 B processing blocks shown according to an embodiment.
  • 6C stellt ein Blockdiagramm eines Stilblocks zur Verwendung bei der Implementierung einiger Ausführungsformen der vorliegenden Offenbarung dar. 6C FIG. 10 illustrates a block diagram of a style block for use in implementing some embodiments of the present disclosure.
  • 6D zeigt ein Blockdiagramm eines anderen Stilblocks zur Verwendung bei der Implementierung einiger Ausführungsformen der vorliegenden Offenbarung. 6D Figure 12 shows a block diagram of another style block for use in implementing some embodiments of the present disclosure.
  • 6E zeigt ein Flussdiagramm eines Verfahrens zur Demodulation von Gewichten, die von einem neuronalen Generatornetzwerk angewendet werden, gemäß einer Ausführungsform. 6E FIG. 3 shows a flow diagram of a method for demodulating weights applied by a neural generator network, according to an embodiment.
  • 6F zeigt Bilder und Merkmalskarten, die unter Verwendung demodulierter Gewichte erzeugt wurden, gemäß einer Ausführungsform. 6F Figure 12 shows images and feature maps generated using demodulated weights according to one embodiment.
  • 7A zeigt Bilder, die von dem stilbasierten Generatorsystem erzeugt wurden und hohe Werte für die Wahrnehmungspfadlänge (PPL) aufweisen, gemäß einer Ausführungsform. 7A Figure 12 shows images generated by the style-based generator system having high perceptual path length (PPL) values, according to one embodiment.
  • 7B stellt Bilder dar, die mit dem stilbasierten Generatorsystem erzeugt wurden, das niedrige PPL-Werte aufweist, gemäß einer Ausführungsform. 7B illustrates images generated with the style-based generator system having low PPL values, according to one embodiment.
  • 7C zeigt einen Graph der PPL-Werte für einen Satz von Bildern gemäß einer Ausführungsform. 7C Figure 12 shows a graph of PPL values for a set of images according to one embodiment.
  • 7D zeigt einen Graph der PPL-Werte für einen Satz von Bildern, die bei Verwendung einer glättenden Regularisierung erzeugt wurden, gemäß einer Ausführungsform. 7D Figure 12 shows a graph of PPL values for a set of images generated using smoothing regularization, according to one embodiment.
  • 7E zeigt ein konzeptionelles Diagramm von Pfaden ohne Regularisierung, gemäß einer Ausführungsform. 7E Figure 12 shows a conceptual diagram of paths without regularization, according to an embodiment.
  • 7F zeigt ein konzeptionelles Diagramm von Pfaden mit Regularisierung, gemäß einer Ausführungsform. 7F FIG. 13 shows a conceptual diagram of paths with regularization, according to an embodiment.
  • 8A zeigt ein Blockdiagramm eines neuronalen Synthesenetzwerks, das unter Verwendung des Stilblocks aus 6D implementiert wurde, zur Verwendung bei der Implementierung einiger Ausführungsformen der vorliegenden Offenbarung. 8A FIG. 13 shows a block diagram of a neural synthesis network that is generated using the style block from 6D for use in implementing some embodiments of the present disclosure.
  • 8B zeigt ein Blockdiagramm eines Trainingssystems eines neuronalen Generatornetzwerks gemäß einer Ausführungsform. 8B FIG. 10 shows a block diagram of a training system of a neural generator network according to an embodiment.
  • 8C stellt ein Flussdiagramm eines Verfahrens zur glättenden Regularisierung zur Verwendung in einem neuronalen Generatornetzwerk gemäß einer Ausführungsform dar. 8C illustrates a flow diagram of a method for smoothing regularization for use in a neural generator network according to an embodiment.

DETAILLIERTE BESCHREIBUNGDETAILED DESCRIPTION

Eine stilbasierte erzeugende Netzwerkarchitektur ermöglicht eine skalenspezifische Steuerung der synthetisierten Ausgabe. Ein stilbasiertes Generatorsystem weist ein Abbildungsnetzwerk und ein Synthesenetzwerk auf. In einer Ausführungsform werden Merkmalskarten (die räumlich variierende Informationen enthalten, die den Inhalt der Ausgabedaten repräsentieren, wobei jede Merkmalskarte ein Kanal von Zwischenaktivierungen ist), die von verschiedenen Schichten des Synthesenetzwerks erzeugt werden, abhängig von Stil-Steuersignalen modifiziert, die von dem Abbildungsnetzwerk bereitgestellt werden. Die Stil-Steuersignale für verschiedene Schichten des Synthesenetzwerks können von demselben oder von verschiedenen latenten Codes erzeugt werden. Ein latenter Code kann ein zufälliger N-dimensionaler Vektor sein, der z. B. aus einer Gauß-Verteilung gezogen wird. Die Stil-Steuersignale für verschiedene Schichten des Synthesenetzwerks können aus demselben oder aus verschiedenen Abbildungsnetzwerken erzeugt werden. Darüber hinaus kann räumliches Rauschen in jede Schicht des Synthesenetzwerks eingespeist werden.A style-based generating network architecture enables scale-specific control of the synthesized output. A style-based generator system has a mapping network and a synthesis network. In one embodiment, feature maps (containing spatially varying information representing the content of the output data, each feature map being a channel of intermediate activations) generated by different layers of the synthesis network are modified depending on style control signals provided by the mapping network will. The style control signals for different layers of the synthesis network can be generated by the same or different latent codes. A latent code can be a random N-dimensional vector, e.g. B. is drawn from a Gaussian distribution. The style control signals for different layers of the synthesis network can be generated from the same or from different mapping networks. In addition, spatial noise can be injected into any layer of the synthesis network.

1A zeigt ein Blockdiagramm eines stilbasierten Generatorsystems 100 gemäß einer Ausführungsform. Das stilbasierte Generatorsystem 100 weist ein neuronales Abbildungsnetzwerk 110, eine Stilkonvertierungseinheit 115 und ein neuronales Synthesenetzwerk 140 auf. Nachdem das neuronale Synthesenetzwerk 140 trainiert wurde, kann das neuronale Synthesenetzwerk 140 ohne das neuronale Abbildungsnetzwerk 110 eingesetzt werden, wenn der/die latente(n) Zwischencode(s) und/oder die von der Stilkonvertierungseinheit 115 erzeugten Stilsignale vorberechnet sind. In einer Ausführungsform können zusätzliche Stilkonvertierungseinheiten 115 vorhanden sein, um den von dem neuronalen Abbildungsnetzwerk 110 erzeugten latenten Zwischencode in ein zweites Stilsignal umzuwandeln oder um einen anderen latenten Zwischencode in das zweite Stilsignal umzuwandeln. Ein oder mehrere zusätzliche neuronale Abbildungsnetzwerke 110 können in dem stilbasierten Generatorsystem 100 vorhanden sein, um zusätzliche latente Zwischencodes von dem latenten Code oder zusätzlichen latenten Codes zu erzeugen. 1A Figure 3 shows a block diagram of a style-based generator system 100 according to one embodiment. The style-based generator system 100 exhibits a neural mapping network 110 , a style conversion unit 115 and a neural synthesis network 140 on. After the neural synthesis network 140 trained, the neural synthesis network 140 without the neural mapping network 110 be used if the latent intermediate code (s) and / or that of the style conversion unit 115 generated style signals are precalculated. In one embodiment, additional style conversion units 115 be present to that of the neural mapping network 110 to convert generated intermediate latent code into a second style signal or to convert another intermediate latent code into the second style signal. One or more additional neural mapping networks 110 can in the style-based generator system 100 be present to generate additional intermediate latent codes from the latent code or additional latent codes.

Das stilbasierte Generatorsystem 100 kann durch ein Programm, eine benutzerdefinierte Schaltung oder durch eine Kombination aus benutzerdefinierter Schaltung und einem Programm implementiert werden. Beispielsweise kann das stilbasierte Generatorsystem 100 unter Verwendung einer GPU (Grafikverarbeitungseinheit), CPU (Zentraleinheit) oder eines beliebigen Prozessors implementiert werden, die in der Lage sind, die hier beschriebenen Operationen auszuführen. Darüber hinaus versteht der Fachmann, dass jedes System, das die Operationen des stilbasierten Generatorsystems 100 durchführt, innerhalb des Umfangs und des Geistes der Ausführungsformen der vorliegenden Erfindung liegt.The style-based generator system 100 can be implemented by a program, a custom circuit, or a combination of a custom circuit and a program. For example, the style-based generator system 100 may be implemented using a GPU (graphics processing unit), CPU (central processing unit), or any processor capable of performing the operations described herein. In addition, those skilled in the art will understand that any system that can perform the operations of the style-based generator system 100 is within the scope and spirit of embodiments of the present invention.

Herkömmlicherweise wird ein latenter Code durch eine Eingangsschicht, wie z. B. die erste Schicht eines neuronalen Vorwärtskopplungs-Netzwerks, an einem Generator bereitgestellt. Im Gegensatz dazu geht bei einer Ausführungsform anstelle des Empfangs des latenten Codes das neuronale Synthesenetzwerk 140 von einer gelernten Konstante aus, und der latente Code wird in das neuronale Abbildungsnetzwerk 110 eingegeben. Bei einer Ausführungsform sind die ersten Zwischendaten die gelernte Konstante. Mit einem latenten Code z in dem latenten Eingaberaum Z erzeugt ein nichtlineares Abbildungsnetzwerk f: Z → W zunächst einen latenten Zwischencode w ∈ W. Das neuronale Abbildungsnetzwerk 110 kann ausgestaltet sein, um das nichtlineare Abbildungsnetzwerk zu implementieren. Bei einer Ausführungsform sind die Dimensionen der Eingabe- und Ausgabeaktivierungen in dem latenten Eingangsraum Z und dem latenten Zwischenraum W gleich (z. B. 512). Bei einer Ausführungsform wird die Abbildungsfunktion f mit einem 8-schichtigen MLP (Multilayer Perceptron, d. h. einem neuronalen Netz, das nur aus vollverknüpften Schichten besteht) implementiert.Conventionally, a latent code is provided by an input layer, such as e.g. B. the first layer of a neural feedforward network, provided on a generator. In contrast, in one embodiment, instead of receiving the latent code, the neural synthesis network goes 140 from a learned constant, and the latent code is entered into the neural mapping network 110 entered. In one embodiment, the first intermediate data is the learned constant. With a latent code z in the latent input space Z, a non-linear mapping network f: Z → W first generates a latent intermediate code w ∈ W. The neural mapping network 110 can be configured to implement the nonlinear mapping network. In one embodiment, the dimensions of the input and output activations in the latent input space Z and the latent space W are the same (e.g. 512 ). In one embodiment, the mapping function f is implemented with an 8-layer MLP (multilayer perceptron, ie a neural network that only consists of fully linked layers).

Während der herkömmliche Generator den latenten Code nur durch die Eingangsschicht des Generators führt, bildet das neuronale Abbildungsnetzwerk 110 den latenten Eingabecode z auf den latenten Zwischenraum W ab, um den latenten Zwischencode w zu erzeugen. Die Stilkonvertierungseinheit 115 konvertiert den latenten Zwischencode w in ein erstes Stilsignal. Ein oder mehrere latente Zwischencodes w werden in räumlich unveränderliche Stile umgewandelt, die das erste Stilsignal und ein zweites Stilsignal einschließen. Im Gegensatz zu herkömmlichen Stilübertragungsverfahren werden die räumlich unveränderlichen Stile aus einem Vektor, nämlich dem latenten Zwischencode w, und nicht aus einem Beispielbild berechnet. Der eine oder die mehreren latenten Zwischencodes w können von einem oder mehreren neuronalen Abbildungsnetzwerken 110 für einen oder mehrere entsprechende latente Codes z erzeugt werden. Das neuronale Synthesenetzwerk 140 verarbeitet die ersten Zwischendaten (z. B. eine gelernte Konstante, die als Merkmalskarte kodiert ist) entsprechend den Stilsignalen, wobei z. B. die Dichte der ersten Zwischendaten von 4x4 auf 8x8 erhöht und fortgefahren wird, bis die Dichte der Ausgabedaten erreicht ist.While the conventional generator only guides the latent code through the input layer of the generator, the neural mapping network forms 110 the input latent code z onto the latent space W to generate the intermediate latent code w. The style conversion unit 115 converts the intermediate latent code w into a first style signal. One or more intermediate latent codes w are converted into spatially immutable styles including the first style signal and a second style signal. In contrast to conventional style transfer methods, the spatially invariable styles are calculated from a vector, namely the latent intermediate code w, and not from an example image. The one or more intermediate latent codes w may be from one or more neural mapping networks 110 for one or more corresponding latent codes z are generated. The neural synthesis network 140 processes the first intermediate data (e.g. a learned constant which is coded as a feature map) in accordance with the style signals, with e.g. B. increases the density of the first intermediate data from 4x4 to 8x8 and continues until the density of the output data is reached.

Bei einer Ausführungsform führt die Stilkonvertierungseinheit 115 eine affine Transformation durch. Die Stilkonvertierungseinheit 115 kann so trainiert werden, dass sie eine affine Transformation während eines Trainings des neuronalen Synthesenetzwerks 140 lernt. Das erste Stilsignal steuert Operationen in einer ersten Schicht 120 des neuronalen Synthesenetzwerks 140, um modifizierte erste Zwischendaten zu erzeugen. In einer Ausführungsform steuert das erste Stilsignal eine adaptive Instanz-Normalisierungs- (AdalN-) Operation in der ersten Schicht 120 des Synthesenetzwerks 140. In einer Ausführungsform empfängt die AdaIN-Operation einen Satz von Inhaltsmerkmalskarten und ein Stilsignal und modifiziert die Statistiken erster Ordnung (d. h. den „Stil“) der Inhaltsmerkmalskarten, um mit den durch das Stilsignal definierten Statistiken erster Ordnung übereinzustimmen. Die modifizierten ersten Zwischendaten, die von der ersten Schicht 120 ausgegeben werden, werden von der/den Verarbeitungsschicht(en) 125 verarbeitet, um zweite Zwischendaten zu erzeugen. In einer Ausführungsform weist/en die Verarbeitungsschicht(en) 125 eine 3x3-Faltungsschicht auf. In einer Ausführungsform weisen die Verarbeitungsschicht(en) 125 eine 3x3-Faltungsschicht auf, gefolgt von einer AdaIN-Operation, die ein zusätzliches Stilsignal empfängt, das in 1A nicht explizit dargestellt ist.In one embodiment, the style conversion unit performs 115 perform an affine transformation. The style conversion unit 115 can be trained to perform an affine transformation during training of the neural synthesis network 140 learns. The first style signal controls operations in a first layer 120 of the neural synthesis network 140 to generate modified first intermediate data. In one embodiment, the first style signal controls an adaptive instance normalization (AdalN) operation in the first layer 120 of the synthesis network 140 . In one embodiment, the AdaIN operation receives a set of content feature maps and a style signal and modifies the first order statistics (ie, "style") of the content feature maps to match the first order statistics defined by the style signal. The modified first intermediate data obtained from the first layer 120 are issued by the processing layer (s) 125 processed to produce second intermediate data. In one embodiment, the processing layer (s) 125 a 3x3 convolutional layer. In one embodiment, the processing layer (s) 125 has a 3x3 convolutional layer followed by an AdaIN operation that receives an additional style signal that is in 1A is not explicitly shown.

Die zweiten Zwischendaten werden in eine zweite Schicht 130 des neuronalen Synthesennetzwerks 140 eingegeben. Das zweite Stilsignal steuert Operationen in der zweiten Schicht 130, um modifizierte zweite Zwischendaten zu erzeugen. In einer Ausführungsform modifiziert das erste Stilsignal ein erstes Attribut, das in den ersten Zwischendaten codiert ist, und das zweite Stilsignal modifiziert ein zweites Attribut, das in den ersten Zwischendaten und den zweiten Zwischendaten codiert ist. Beispielsweise handelt es sich bei den ersten Zwischendaten um grobe Daten im Vergleich zu den zweiten Zwischendaten, und der erste Stil wird zu groben Merkmalskarten in der ersten Schicht 120 übertragen, während der zweite Stil zu Merkmalskarten mit höherer Dichte in der zweiten Schicht 130 übertragen wird.The second intermediate data is in a second layer 130 of the neural synthesis network 140 entered. The second style signal controls operations in the second layer 130 to generate modified second intermediate data. In one embodiment, the first style signal modifies a first attribute encoded in the first intermediate data and the second style signal modifies a second attribute encoded in the first intermediate data and the second intermediate data. For example, the first intermediate data are rough data compared to the second intermediate data, and the first style becomes rough feature maps in the first layer 120 transferred while the second style to feature maps with higher density in the second layer 130 is transmitted.

In einer Ausführungsform nimmt die zweite Schicht 130 ein Upsampling der zweiten Zwischendaten vor und weist eine 3x3-Faltungsschicht gefolgt von einer AdalN-Operation auf. In einer Ausführungsform steuert das zweite Stilsignal eine AdaIN-Operation innerhalb der zweiten Schicht 130 des Synthesenetzwerks 140. Die von der zweiten Schicht 130 ausgegebenen modifizierten zweiten Zwischendaten werden von der/den Verarbeitungsschicht(en) 135 verarbeitet, um Ausgabedaten zu erzeugen, die einen den zweiten Zwischendaten entsprechenden Inhalt aufweisen. In einer Ausführungsform werden mehrere (z. B. 32, 48, 64, 96 usw.) Kanäle von Merkmalen in den modifizierten zweiten Zwischendaten in die Ausgabedaten umgewandelt, die als Farbkanäle (z. B. rot, grün, blau) kodiert sind.In one embodiment, the second layer takes 130 an upsampling of the second intermediate data and has a 3x3 convolutional layer followed by an AdalN operation. In one embodiment, the second style signal controls an AdaIN operation within the second layer 130 of the synthesis network 140 . The one from the second shift 130 The modified second intermediate data output is processed by the processing layer (s) 135 processed to generate output data having a content corresponding to the second intermediate data. In one embodiment, multiple (e.g., 32, 48, 64, 96, etc.) channels of features in the modified second intermediate data are converted to the output data encoded as color channels (e.g., red, green, blue).

In einer Ausführungsform weist/en die Verarbeitungsschicht(en) 135 eine 3x3-Faltungsschicht auf. In einer Ausführungsform sind die Ausgabedaten ein Bild, das erste Attribute entsprechend einer ersten Skala bzw. einem ersten Maßstab und zweite Attribute entsprechend einer zweiten Skala bzw. einem zweiten Maßstab aufweist, wobei die erste Skala im Vergleich zur zweiten Skala gröber ist. Die erste Skala kann einer Skala der Merkmalskarten entsprechen, die von der ersten Schicht 120 verarbeitet werden, und die zweite Skala kann einer Skala der Merkmalskarten entsprechen, die von der zweiten Schicht 130 verarbeitet werden. Entsprechend modifiziert das erste Stilsignal die ersten Attribute gemäß der ersten Skala und das zweite Stilsignal die zweiten Attribute gemäß der zweiten Skala.In one embodiment, the processing layer (s) 135 a 3x3 convolutional layer. In one embodiment, the output data is an image that has first attributes corresponding to a first scale or a first scale and second attributes corresponding to a second scale or a second scale, the first scale being coarser compared to the second scale. The first scale can correspond to a scale of the feature maps used by the first layer 120 can be processed, and the second scale can correspond to a scale of the feature maps used by the second layer 130 are processed. Correspondingly, the first style signal modifies the first attributes according to the first scale and the second style signal modifies the second attributes according to the second scale.

Weitere illustrative Informationen werden nun in Bezug auf verschiedene optionale Architekturen und Funktionen dargelegt, mit denen der oben beschriebene Rahmen nach den Wünschen des Benutzers implementiert werden kann. Es sei ausdrücklich darauf hingewiesen werden, dass die folgenden Informationen nur zur Veranschaulichung dienen und in keiner Weise als einschränkend zu verstehen sind. Jedes der folgenden Merkmale kann optional mit oder ohne Ausschluss der anderen beschriebenen Merkmale vorhanden sein.Further illustrative information is now set forth in relation to various optional architectures and functions that can be used to implement the framework described above as desired by the user. It should be noted that the following information is only It is intended to be illustrative and in no way limiting. Each of the following features may optionally be present with or without excluding the other features described.

1B zeigt Bilder, die von dem stilbasierten Generatorsystem 100 gemäß einer Ausführungsform erzeugt werden. Die Bilder werden in einer Auflösung von 10242 erzeugt. Bei anderen Ausführungen können die Bilder mit einer anderen Auflösung erzeugt werden. Zwei verschiedene latente Codes werden verwendet, um die Stile der von dem stilbasierten Generatorsystem 100 erzeugten Bilder zu steuern. Insbesondere wird ein erster Teil der Stile durch das neuronale Abbildungsnetzwerk 110 und eine Stilkonvertierungseinheit 115 aus den latenten „Quell“-Codes in der oberen Reihe erzeugt. Ein zweiter Teil der Stile wird durch das gleiche oder ein zusätzliches neuronales Abbildungsnetzwerk 110 und eine entsprechende Stilkonvertierungseinheit 115 aus den latenten „Ziel“-Codes in der Spalte ganz links erzeugt. Das stilbasierte Generatorsystem 100 geht von einer gelernten konstanten Eingabe an dem neuronalen Synthesenetzwerk 140 aus und passt den „Stil“ des Bildes bei jeder Faltungsschicht abhängig von dem latenten Code an, wodurch die Stärke von Bildattributen, die in Merkmalskarten kodiert sind, in verschiedenen Skalen direkt gesteuert wird. Mit anderen Worten: Ein vorgegebener Satz von Stilen aus den „Quell“-Daten wird in die „Ziel“-Daten kopiert. So werden die kopierten Stile (grob, mittel oder fein) aus den „Quell“-Daten übernommen, während alle anderen Stile genau so wie in den „Ziel“-Daten beibehalten werden. 1B shows pictures taken by the style-based generator system 100 can be generated according to one embodiment. The images are generated in a resolution of 1024 2. In other designs, the images can be generated with a different resolution. Two different latent codes are used to denote the styles of the style-based generator system 100 to control generated images. In particular, a first part of the styles is created by the neural mapping network 110 and a style conversion unit 115 generated from the latent "source" codes in the top row. A second part of the styles is created by the same or an additional neural mapping network 110 and a corresponding style conversion unit 115 generated from the latent "target" codes in the leftmost column. The style-based generator system 100 assumes a learned constant input to the neural synthesis network 140 and adapts the “style” of the image for each convolution layer depending on the latent code, whereby the strength of image attributes, which are coded in feature maps, is directly controlled in different scales. In other words, a given set of styles from the “source” data is copied to the “destination” data. The copied styles (coarse, medium or fine) are taken from the “source” data, while all other styles are retained exactly as in the “target” data.

Der erste Teil der Stile (Ziel) wird von dem neuronalen Synthesenetzwerk 140 zur Verarbeitung der gelernten Konstante verwendet, wobei eine erste Teilmenge des ersten Teils der Stile durch eine entsprechende zweite Teilmenge des zweiten Teils der Stile (Quelle) ersetzt wird. In einer Ausführungsform ist die gelernte Konstante ein konstanter 4x4x512- Tensor. In der zweiten, dritten und vierten Bildreihe in 1B ersetzt der zweite Teil der Stile (Quelle) den ersten Teil der Stile (Ziel) in den groben Schichten des neuronalen Synthesenetzwerks 140. In einer Ausführungsform entsprechen die groben Schichten den groben räumlichen Dichten 42 - 82. Bei einer Ausführungsform werden High-Level-Attribute wie Pose, allgemeine Frisur, Gesichtsform und Brille von der Quelle kopiert, während andere Attribute wie alle Farben (Augen, Haare, Beleuchtung) und feinere Gesichtsmerkmale des Ziels beibehalten werden.The first part of the styles (target) is from the neural synthesis network 140 used to process the learned constant, a first subset of the first part of the styles being replaced by a corresponding second subset of the second part of the styles (source). In one embodiment, the learned constant is a 4x4x512 constant tensor. In the second, third and fourth row of pictures in 1B the second part of the styles (source) replaces the first part of the styles (target) in the coarse layers of the neural synthesis network 140 . In one embodiment, the coarse layers correspond to the coarse spatial densities 4 2 - 8 2 . In one embodiment, high level attributes such as pose, general hairstyle, face shape and glasses are copied from the source while other attributes such as all colors (eyes, hair, lighting) and finer facial features of the target are retained.

In der fünften und sechsten Bildreihe in 1B ersetzt der zweite Teil der Stile (Quelle) den ersten Teil der Stile (Ziel) in den mittleren Schichten des neuronalen Synthesenetzwerks 140. In einer Ausführungsform korrespondieren die mittleren Schichten mit den räumlichen Dichten von 162 - 322. Kleinere Gesichtsmerkmale, Frisur, offene/geschlossene Augen werden von der Quelle übernommen, während die Pose, die allgemeine Gesichtsform und die Brille von dem Ziel erhalten bleiben. In der letzten Bildreihe in 1B schließlich ersetzt der zweite Teil der Stile (Quelle) den ersten Teil der Stile (Ziel) in den hochdichten (feinen) Schichten des neuronalen Synthesenetzwerks 140. In einer Ausführungsform korrespondieren die feinen Schichten mit den räumlichen Dichten von 642 - 10242. Die Verwendung der Stile aus dem zweiten Teil der Stile (Quelle) für die feinen Schichten erbt das Farbschema und die Mikrostruktur von der Quelle, während die Pose und die allgemeine Gesichtsform von dem Ziel erhalten bleiben.In the fifth and sixth row of pictures in 1B the second part of the styles (source) replaces the first part of the styles (target) in the middle layers of the neural synthesis network 140 . In one embodiment, the middle layers correspond to the spatial densities of 16 2 - 32 2 . Minor facial features, hairstyle, open / closed eyes are taken from the source while the pose, general face shape and glasses are retained from the target. In the last row of pictures in 1B finally, the second part of the styles (source) replaces the first part of the styles (target) in the high-density (fine) layers of the neural synthesis network 140 . In one embodiment, the fine layers correspond to the spatial densities of 64 2 - 1024 2 . Using the styles from the second part of the styles (source) for the fine layers inherits the color scheme and microstructure from the source while maintaining the pose and general face shape from the target.

Die Architektur des stilbasierten Generatorsystems 100 ermöglicht die Steuerung der Bildsynthese über skalenspezifische Modifikationen der Stile. Das Abbildungsnetzwerk 110 und die affinen Transformationen, die von der Stilkonvertierungseinheit 115 durchgeführt werden, können als eine Möglichkeit angesehen werden, Muster für jeden Stil aus einer gelernten Verteilung zu ziehen, und das Synthesenetzwerk 140 bietet einen Mechanismus, um ein neuartiges Bild basierend auf einer Sammlung von Stilen zu erzeugen. Die Auswirkungen jedes Stils sind in dem Synthesenetzwerk 140 lokalisiert, d. h., es ist zu erwarten, dass die Modifikation einer bestimmten Teilmenge der Stile nur bestimmte Attribute des Bildes beeinflusst.The architecture of the style-based generator system 100 enables the control of the image synthesis via scale-specific modifications of the styles. The mapping network 110 and the affine transformations performed by the style conversion unit 115 can be viewed as a way of extracting patterns for each style from a learned distribution, and the synthesis network 140 provides a mechanism to create a novel image based on a collection of styles. The effects of each style are in the synthesis network 140 localized, that is, the modification of a certain subset of the styles is expected to affect only certain attributes of the image.

Die Verwendung von Stilsignalen aus mindestens zwei verschiedenen latenten Codes, wie in 1B gezeigt, wird als Stilmischung oder Mischungs-Regularisierung bezeichnet. Ein Mischen von Stilen während des Trainings dekorreliert benachbarte Stile und ermöglicht eine feinkörnigere Steuerung über die erzeugten Bilder. In einer Ausführungsform wird während des Trainings ein bestimmter Prozentsatz der Bilder mit zwei zufälligen latenten Codes anstelle von einem erzeugt. Bei der Erzeugung eines solchen Bildes kann eine zufällige Stelle (z. B. ein Überkreuzungspunkt) in dem neuronalen Synthesenetzwerk 140 ausgewählt werden, an der die Verarbeitung von der Verwendung von Stilsignalen, die mit einem ersten latenten Code erzeugt wurden, auf Stilsignale umschaltet, die mit einem zweiten latenten Code erzeugt wurden. In einer Ausführungsform werden zwei latente Codes z1, z2 durch das neuronale Abbildungsnetzwerk 110 verarbeitet, und die entsprechenden latenten Zwischencodes w1, w2 steuern die Stile so, dass w1 vor dem Überkreuzungspunkt und w2 nach dem Überkreuzungspunkt angewendet wird. Das Verfahren der Mischungs-Regularisierung verhindert, dass das neuronale Synthesenetzwerk 140 annimmt, dass benachbarte Stile korreliert sind.The use of style signals from at least two different latent codes, as in 1B shown is called style blending or blend regularization. Mixing styles during training decorrelates neighboring styles and allows for finer-grain control over the images generated. In one embodiment, a percentage of the images are generated with two random latent codes instead of one during training. When such an image is generated, a random location (e.g. a crossover point) in the neural synthesis network 140 at which the processing switches from the use of style signals generated with a first latent code to style signals generated with a second latent code. In one embodiment, two latent codes z 1 , z 2 are generated by the neural mapping network 110 processed, and the respective intermediate latent codes w 1 , w 2 control the styles so that w 1 is applied before the crossover point and w 2 after the crossover point. The method of mixture regularization prevents the neural synthesis network 140 assumes that neighboring styles are correlated.

TABELLE 1 zeigt, wie die Aktivierung der Mischungs-Regularisierung während des Trainings die Lokalisierung der Stile erheblich verbessern kann, was durch verbesserte (niedriger ist besser) Frechet-Inception-Distanzen (FIDs) in Szenarien angezeigt wird, in denen mehrere latente Codes zur Testzeit gemischt werden. Die in 1B gezeigten Bilder sind Beispiele für Bilder, die durch das Mischen zweier latenter Codes bei verschiedenen Skalen synthetisiert wurden. Jede Untergruppe von Stilen steuert sinnvolle High-Level-Attribute des Bildes. Tabelle 1 FIDs für verschiedene Mischungs-Regularisierungs-Verhältnisse Mischungsverhältnis (Trainingszeit) Anzahl der latenten Codes (Testzeit) 1 2 3 4 0% 4.42 8.22 12.88 17.41 50% 4.41 6.10 8.71 11.61 90% 4.40 5.11 6.88 9.03 100% 4.83 5.17 6.63 8.40 TABLE 1 shows how enabling mix regularization during training can greatly improve style localization, as indicated by improved (lower is better) Frechet Inception Distances (FIDs) in scenarios where multiple latent codes are at test time be mixed. In the 1B The images shown are examples of images synthesized by mixing two latent codes at different scales. Each subset of styles controls meaningful high-level attributes of the image. Table 1 FIDs for various mix regularization ratios Mixing ratio (training time) Number of latent codes (test time) 1 2 3 4th 0% 4.42 8.22 12.88 17.41 50% 4.41 6.10 8.71 11.61 90% 4.40 5.11 6.88 9.03 100% 4.83 5.17 6.63 8.40

Das Mischungsverhältnis gibt den Prozentsatz von Trainingsbeispielen an, für die die Mischungs-Regularisierung aktiviert ist. Während der Testzeit wurden maximal vier verschiedene latente Codes zufällig ausgewählt und die Überkreuzungspunkte zwischen den verschiedenen latenten Codes wurden ebenfalls zufällig ausgewählt. Die Mischungs-Regularisierung verbessert die Toleranz gegenüber diesen entgegengesetzten Operationen deutlich.The mix ratio indicates the percentage of training samples for which mix regularization is enabled. During the test period, a maximum of four different latent codes were selected at random and the crossover points between the different latent codes were also selected at random. The mixture regularization significantly improves the tolerance towards these opposing operations.

Wie die FIDs bestätigen, ist die durchschnittliche Qualität der von dem stilbasierten Generatorsystem 100 erzeugten Bilder hoch, und sogar Accessoires wie Brillen und Hüte werden erfolgreich synthetisiert. Für die in 1B gezeigten Bilder wird das Sampling bzw. Abtasten aus den extremen Bereichen von W durch den sogenannten Abschneidungstrick vermieden, der in W anstelle von Z durchgeführt werden kann. Es sei angemerkt, dass das stilbasierte Generatorsystem 100 so implementiert werden kann, dass das Abschneiden selektiv nur bei niedrigen Auflösungen angewendet werden kann, so dass hochauflösende Details nicht betroffen sind.As the FIDs confirm, the average quality is that of the style-based generator system 100 generated images, and even accessories such as glasses and hats are successfully synthesized. For the in 1B Sampling from the extreme areas of W is avoided by the so-called cut-off trick, which can be performed in W instead of Z. It should be noted that the style-based generator system 100 can be implemented so that clipping can only be selectively applied at low resolutions so that high resolution details are not affected.

Betrachtet man die Verteilung der Trainingsdaten, so sind Bereiche mit geringer Dichte schlecht repräsentiert und daher für das stilbasierte Generatorsystem 100 wahrscheinlich schwer zu erlernen. Ungleichmäßige Verteilungen von Trainingsdaten stellen bei allen erzeugenden Modellierungstechniken ein bedeutendes offenes Problem dar. Es ist jedoch bekannt, dass das Ziehen latenter Vektoren aus einem abgeschnittenen oder anderweitig verkleinerten Abtastraum die durchschnittliche Bildqualität tendenziell verbessert, obwohl ein gewisses Maß an Variation verloren geht. In einer Ausführungsform wird zur Verbesserung des Trainings des stilbasierten Generatorsystems 100 ein Massenschwerpunkt von W berechnet als w ¯ = E z ~ P ( z ) [ f ( z ) ] .

Figure DE102021105291A1_0001
Im Fall eines Datensatzes menschlicher Gesichter (z. B. FFHQ, Flickr-Faces-HQ) repräsentiert der Punkt eine Art Durchschnittsgesicht (ψ=0). Die Abweichung eines gegebenen w wird vom Zentrum her als w' = w̅ + ψ(w - w̅) skaliert, wobei ψ <1 ist. In konventionellen erzeugenden Modellierungssystemen ist nur eine Teilmenge der neuronalen Netze für eine solche Abschneidung zugänglich, selbst wenn eine orthogonale Regularisierung verwendet wird, scheint die Abschneidung im W-Raum auch ohne Änderungen an der Verlustfunktion zuverlässig zu funktionieren.If one looks at the distribution of the training data, areas with a low density are poorly represented and therefore for the style-based generator system 100 probably difficult to learn. Uneven distributions of training data are a significant open problem in all generating modeling techniques. However, it is known that pulling latent vectors from a truncated or otherwise reduced scan space tends to improve average image quality, although some amount of variation is lost. In one embodiment, to improve the training of the style-based generator system 100 a center of mass of W calculated as w ¯ = E. z ~ P. ( z ) [ f ( z ) ] .
Figure DE102021105291A1_0001
In the case of a data set of human faces (e.g. FFHQ, Flickr-Faces-HQ), the point represents a kind of average face (ψ = 0). The deviation of a given w is scaled from the center as w '= w̅ + ψ (w - w̅), where ψ <1. In conventional generating modeling systems, only a subset of the neural networks is accessible for such a clipping, even if an orthogonal regularization is used, the clipping in W-space seems to work reliably even without changes to the loss function.

1C zeigt ein Flussdiagramm eines Verfahrens 150 zur stilbasierten Erzeugung, gemäß einer Ausführungsform. Das Verfahren 150 kann durch ein Programm, eine benutzerdefinierte Schaltung oder durch eine Kombination aus benutzerdefinierter Schaltung und einem Programm ausgeführt werden. Beispielsweise kann das Verfahren 150 von einer GPU (Grafikverarbeitungseinheit), CPU (Zentraleinheit) oder einem beliebigen Prozessor ausgeführt werden, die in der Lage sind, die Operationen des stilbasierten Generatorsystems 100 auszuführen. Darüber hinaus versteht der Fachmann, dass jedes System, das das Verfahren 150 ausführt, innerhalb des Umfangs und des Geistes der Ausführungsformen der vorliegenden Erfindung liegt. 1C shows a flow diagram of a method 150 for style-based generation, according to one embodiment. The procedure 150 can be executed by a program, a custom circuit, or a combination of a custom circuit and a program. For example, the method 150 executed by a GPU (graphics processing unit), CPU (central processing unit), or any processor capable of performing the operations of the style-based generator system 100 to execute. In addition, those skilled in the art understand that any system that incorporates the method 150 is within the scope and spirit of embodiments of the present invention.

In Schritt 155 verarbeitet das neuronale Abbildungsnetzwerk 110 einen latenten Code, der in einem Eingaberaum definiert ist, um einen latenten Zwischencode zu erzeugen, der in einem latenten Zwischenraum definiert ist. In Schritt 160 wird der latente Zwischencode durch die Stilkonvertierungseinheit 115 in ein erstes Stilsignal umgewandelt. In Schritt 165 wird das erste Stilsignal auf eine erste Schicht 120 des neuronalen Synthesenetzwerks 140 angewendet, um die ersten Zwischendaten entsprechend dem ersten Stilsignal zu modifizieren, um modifizierte erste Zwischendaten zu erzeugen. Im Schritt 170 werden die modifizierten ersten Zwischendaten durch die Verarbeitungsschicht(en) 125 verarbeitet, um die zweiten Zwischendaten zu erzeugen. In Schritt 175 wird ein zweites Stilsignal auf die zweite Schicht 130 des neuronalen Synthesenetzwerks 140 aufgebracht, um die zweiten Zwischendaten gemäß dem zweiten Stilsignal zu modifizieren, um modifizierte zweite Zwischendaten zu erzeugen. In Schritt 180 werden die modifizierten zweiten Zwischendaten durch die Verarbeitungsschicht(en) 135 verarbeitet, um Ausgabedaten zu erzeugen, die einen den zweiten Zwischendaten entsprechenden Inhalt aufweisen.In step 155 processes the neural mapping network 110 a latent code defined in an input space to generate an intermediate latent code defined in a latent space. In step 160 becomes the intermediate latent code by the style conversion unit 115 converted into a first style signal. In step 165 becomes the first style signal on a first layer 120 of the neural synthesis network 140 applied to the first intermediate data corresponding to the first style signal modify to produce modified first intermediate data. In step 170 the modified first intermediate data are processed by the processing layer (s) 125 processed to generate the second intermediate data. In step 175 will add a second style signal to the second layer 130 of the neural synthesis network 140 applied to modify the second intermediate data in accordance with the second style signal to generate modified second intermediate data. In step 180 the modified second intermediate data are processed by the processing layer (s) 135 processed to generate output data having a content corresponding to the second intermediate data.

Es gibt verschiedene Definitionen für eine Entflechtung, aber ein gemeinsames Ziel ist ein latenter Raum, der aus linearen Unterräumen besteht, von denen jeder einen Faktor einer Variation steuert. Allerdings muss die Abtastwahrscheinlichkeit jeder Kombination von Faktoren in dem latenten Raum Z mit der entsprechenden Dichte in den Trainingsdaten übereinstimmen.There are different definitions of unbundling, but one common goal is a latent space made up of linear subspaces, each of which controls a factor of variation. However, the sampling probability of each combination of factors in the latent space Z must match the corresponding density in the training data.

Ein großer Vorteil des stilbasierten Generatorsystems 100 ist, dass der latente Zwischenraum W keine Abtastung gemäß einer festen Verteilung unterstützen muss; die Abtastdichte für das stilbasierte Generatorsystem 100 wird durch die gelernte stückweise kontinuierliche Abbildung f(z) verursacht. Die Abbildung kann angepasst werden, um W zu „entzerren“, so dass die Faktoren der Variation linearer werden. Das stilbasierte Generatorsystem 100 kann natürlich dazu neigen, W zu entzerren, da es einfacher sein sollte, realistische Bilder abhängig von einer entflochtenen Darstellung zu erzeugen als auf der Grundlage einer verflochtenen Darstellung. Als solches kann das Training ein weniger verflochtenes W in einer unüberwachten Umgebung ergeben, d. h., wenn die Faktoren der Variation nicht im Voraus bekannt sind.A big advantage of the style-based generator system 100 is that the latent space W need not support a fixed distribution scan; the sampling density for the style-based generator system 100 is caused by the learned piece-wise continuous mapping f (z). The mapping can be adjusted to "equalize" W so that the factors of variation become more linear. The style-based generator system 100 can of course tend to equalize W, since it should be easier to generate realistic images based on an unwoven representation than on the basis of an interwoven representation. As such, training can give a less intertwined W in an unsupervised environment, that is, when the factors of variation are not known in advance.

2A zeigt ein Blockdiagramm des in 1A gezeigten neuronalen Abbildungsnetzwerks 110 gemäß einer Ausführungsform. In einer Verteilung der Trainingsdaten kann eine Kombination von Attributen fehlen, z. B. Kinder, die eine Brille tragen. Eine Verteilung der Variationsfaktoren bei der Kombination von Brille und Alter wird in dem latenten Zwischenraum W im Vergleich zu dem latenten Raum Z linearer. 2A shows a block diagram of the in 1A shown neural mapping network 110 according to one embodiment. A combination of attributes may be missing in a distribution of the training data, e.g. B. Children wearing glasses. A distribution of the variation factors in the combination of glasses and age becomes more linear in the latent space W compared to the latent space Z.

In einer Ausführungsform weist das neuronale Abbildungsnetzwerk 110 eine Normalisierungsschicht 205 und mehrere vollverbundene bzw. fully-connected Schichten 210 auf. In einer Ausführungsform sind acht fully-connected Schichten 210 hintereinander geschaltet, um den latenten Zwischencode zu erzeugen. Die Parameter (z. B. Gewichte) des neuronalen Abbildungsnetzwerks 110 werden während des Trainings erlernt und die Parameter werden verwendet, um die latenten Eingabecodes zu verarbeiten, wenn das stilbasierte Generatorsystem 100 eingesetzt wird, um die Ausgabedaten zu erzeugen. In einer Ausführungsform erzeugt das neuronale Abbildungsnetzwerk 110 einen oder mehrere latente Zwischencodes, die von dem neuronalen Synthesenetzwerk 140 zu einem späteren Zeitpunkt zur Erzeugung der Ausgabedaten verwendet werden.In one embodiment, the neural mapping network 110 a normalization layer 205 and several fully connected or fully connected layers 210 on. In one embodiment, there are eight fully-connected layers 210 connected in series to generate the latent intermediate code. The parameters (e.g. weights) of the neural mapping network 110 are learned during training and the parameters are used to process the latent input codes when the style-based generator system 100 is used to generate the output data. In one embodiment, the neural mapping network generates 110 one or more intermediate latent codes generated by the neural synthesis network 140 can be used at a later point in time to generate the output data.

Es gibt viele Attribute in menschlichen Porträts, die als stochastisch angesehen werden können, z. B. die genaue Platzierung von Haaren, Stoppeln, Sommersprossen oder Hautporen. Jedes dieser Merkmale kann zufällig angeordnet werden, ohne die Wahrnehmung des Bildes zu beeinflussen, solange das zufällige Anordnen der richtigen Verteilung folgt. Das künstliche Weglassen von Rauschen bei der Bilderzeugung führt zu Bildern mit einem eigenschaftslosen „malerischen“ Aussehen. Insbesondere bei der Erzeugung von menschlichen Porträts kann grobes Rauschen dazu führen, dass sich die Haare großflächig kräuseln und die Hintergrundmerkmale größer erscheinen, während das feine Rauschen die feineren Locken der Haare, feinere Hintergrunddetails und Hautporen hervorhebt.There are many attributes in human portraits that can be considered stochastic, such as: B. the exact placement of hair, stubble, freckles or skin pores. Any of these features can be randomized without affecting the perception of the image, as long as the randomization follows the correct distribution. The artificial omission of noise in the image generation leads to images with a characteristic "painterly" appearance. Particularly when creating human portraits, coarse noise can cause the hair to curl over a large area and the background features appear larger, while the fine noise emphasizes the finer curls of the hair, finer background details and skin pores.

Ein herkömmlicher Generator kann nur eine stochastische Variation erzeugen, die auf der Eingabe für das neuronale Netz basiert, wie sie durch die Eingabeschicht bereitgestellt wird. Während des Trainings kann der konventionelle Generator gezwungen sein, zu lernen, räumlich variierende Pseudozufallszahlen aus früheren Aktivierungen zu erzeugen, wann immer die Pseudozufallszahlen benötigt werden. Mit anderen Worten ist die Erzeugung von Pseudozufallszahlen nicht absichtlich in den konventionellen Generator eingebaut worden. Stattdessen ergibt sich die Erzeugung von Pseudozufallszahlen während des Trainings von selbst, damit der konventionelle Generator das Trainingsziel erfüllen kann. Die Erzeugung der Pseudozufallszahlen verbraucht die Kapazität des neuronalen Netzes und das Verbergen der Periodizität des erzeugten Signals ist schwierig - und nicht immer erfolgreich, wie die häufig zu sehenden sich wiederholenden Muster in den erzeugten Bildern zeigen. Im Gegensatz dazu kann das stilbasierte Generatorsystem 100 so ausgestaltet werden, dass diese Einschränkungen vermieden werden, indem nach jeder Faltung ein Rauschen pro Pixel hinzugefügt wird.A conventional generator can only produce a stochastic variation based on the input to the neural network as provided by the input layer. During training, the conventional generator may be forced to learn to generate spatially varying pseudorandom numbers from previous activations whenever the pseudorandom numbers are needed. In other words, the generation of pseudorandom numbers has not been intentionally built into the conventional generator. Instead, the generation of pseudo-random numbers occurs automatically during training so that the conventional generator can achieve the training goal. The generation of the pseudo-random numbers consumes the capacity of the neural network and the hiding of the periodicity of the generated signal is difficult - and not always successful, as the frequently seen repeating patterns in the generated images show. In contrast, the style-based generator system 100 designed to avoid these limitations by adding noise per pixel after each convolution.

In einer Ausführungsform ist das stilbasierte Generatorsystem 100 mit einem direkten Mittel zur Erzeugung stochastischer Details durch Einführung expliziter Rauscheingaben ausgestaltet. In einer Ausführungsform sind die Rauscheingaben einkanalige Bilder, die aus unkorreliertem Gaußschen Rauschen bestehen, und ein dediziertes Rauschbild wird in eine oder mehrere Schichten des Synthesenetzwerks 140 eingegeben. Das Rauschbild kann mit Hilfe von gelernten Skalierungsfaktoren pro Merkmal auf alle Merkmalskarten übertragen werden und dann zu der Ausgabe der entsprechenden Faltung hinzugefügt werden.In one embodiment, the style-based generator system is 100 designed with a direct means of generating stochastic details by introducing explicit noise inputs. In one embodiment, the noise inputs are single-channel images made up of uncorrelated Gaussian noise, and a dedicated noise image is placed in one or more layers of the synthesis network 140 entered. With the aid of learned scaling factors per feature, the noise image can be transferred to all feature maps and then added to the output of the corresponding convolution.

2B zeigt ein Blockdiagramm des in 1A gezeigten neuronalen Synthesenetzwerks 140 gemäß einer Ausführungsform. Das neuronale Synthesenetzwerk 140 weist einen ersten Verarbeitungsblock 200 und einen zweiten Verarbeitungsblock 230 auf. In einer Ausführungsform verarbeitet der Verarbeitungsblock 200 Merkmalskarten mit einer Auflösung von 4x4 und der Verarbeitungsblock 230 Merkmalskarten mit einer Auflösung von 8x8. Ein oder mehrere zusätzliche Verarbeitungsblöcke können nach den Verarbeitungsblöcken 200 und 230, vor ihnen und/oder zwischen ihnen in dem neuronalen Synthesenetzwerk 140 vorhanden sein. 2 B shows a block diagram of the in 1A shown neural synthesis network 140 according to one embodiment. The neural synthesis network 140 has a first processing block 200 and a second processing block 230 on. In one embodiment, the processing block processes 200 Feature maps with a resolution of 4x4 and the processing block 230 Feature maps with a resolution of 8x8. One or more additional processing blocks can follow the processing blocks 200 and 230 , in front of them and / or between them in the neural synthesis network 140 to be available.

Der erste Verarbeitungsblock 200 empfängt die ersten Zwischendaten, das erste räumliche Rauschen und das zweite räumliche Rauschen. In einer Ausführungsform wird das erste räumliche Rauschen mit einem gelernten Skalierungsfaktor pro Kanal skaliert, bevor es mit den ersten Zwischendaten kombiniert (z. B. zu diesen hinzugefügt) wird. In einer Ausführungsform ist das erste räumliche Rauschen, das zweite räumliche Rauschen, das dritte räumliche Rauschen und das vierte räumliche Rauschen ein unabhängiges Gaußsches Rauschen pro Pixel.The first processing block 200 receives the first intermediate data, the first spatial noise, and the second spatial noise. In one embodiment, the first spatial noise is scaled with a learned scaling factor per channel before it is combined with (e.g. added to) the first intermediate data. In one embodiment, the first spatial noise, the second spatial noise, the third spatial noise, and the fourth spatial noise is independent Gaussian noise per pixel.

Der erste Verarbeitungsblock 200 empfängt auch das erste Stilsignal und das zweite Stilsignal. Wie bereits erläutert, können die Stilsignale durch Verarbeitung des latenten Zwischencodes gemäß einer gelernten affinen Transformation erhalten werden. Gelernte affine Transformationen spezialisieren w auf Stile y = (ys, yb), die die Operationen der adaptiven Instanznormalisierung (AdaIN) steuern, die von den Modulen 220 in dem neuronalen Synthesenetzwerk 140 implementiert werden. Im Vergleich zu allgemeineren Merkmalstransformationen ist AdalN aufgrund seiner Effizienz und kompakten Darstellung besonders gut für die Implementierung in dem stilbasierten Generatorsystem 100 geeignet.The first processing block 200 also receives the first style signal and the second style signal. As already explained, the style signals can be obtained by processing the intermediate latent code in accordance with a learned affine transformation. Learned affine transformations specialize w in styles y = (y s , y b ) that control the adaptive instance normalization (AdaIN) operations performed by the modules 220 in the neural synthesis network 140 implemented. Compared to more general feature transformations, AdalN is particularly good for implementation in the style-based generator system due to its efficiency and compact representation 100 suitable.

Die AdaIN-Operation ist definiert als AdaIN ( x i , y ) = y s , i x i μ ( x i ) σ ( x i ) + y b , i

Figure DE102021105291A1_0002
wobei jede Merkmalskarte xi separat normalisiert und dann mit den entsprechenden Skalarkomponenten aus dem Stil y skaliert und verzerrt wird. Somit ist die Dimensionalität von y doppelt so groß wie die Anzahl der Merkmalskarten im Vergleich zu der Eingabe der Schicht. In einer Ausführungsform ist die Dimension des Stilsignals ein Vielfaches einer Anzahl der Merkmalskarten in der Schicht, an der das Stilsignal anliegt. Im Gegensatz zur konventionellen Stilübertragung wird der räumlich invariante Stil y aus dem Vektor w und nicht aus einem Beispielbild berechnet.The AdaIN operation is defined as AdaIN ( x i , y ) = y s , i x i - μ ( x i ) σ ( x i ) + y b , i
Figure DE102021105291A1_0002
where each feature map x i is normalized separately and then scaled and distorted with the corresponding scalar components from style y. Thus, the dimensionality of y is twice as large as the number of feature maps compared to the input of the layer. In one embodiment, the dimension of the style signal is a multiple of a number of the feature maps in the layer to which the style signal is applied. In contrast to the conventional style transfer, the spatially invariant style y is calculated from the vector w and not from an example image.

Die Auswirkungen von jedem Stilsignal sind in dem neuronalen Synthesenetzwerk 140 lokalisiert, d. h. es ist zu erwarten, dass eine Modifikation einer bestimmten Teilmenge der Stilsignale nur bestimmte Attribute eines durch die Ausgabedaten repräsentierten Bildes beeinflusst. Der Grund für die Lokalisierung ist, dass die AdalN-Operation (Gl. 1), die durch das Modul 220 implementiert wird, zuerst jeden Kanal auf einen Mittelwert von Null und eine Einheitsvarianz normalisiert und erst dann Skalen und Verzerrungen abhängig von dem Stilsignal anwendet. Die neuen Statistiken pro Kanal, die durch den Stil vorgegeben sind, ändern die relative Wichtigkeit von Merkmalen für die nachfolgende Faltungsoperation, aber die neuen Statistiken pro Kanal hängen aufgrund der Normalisierung nicht von den ursprünglichen Statistiken ab. Somit steuert jedes Stilsignal nur eine vordefinierte Anzahl von Faltungen 225, bevor eine Überschreibung durch die nächste AdalN-Operation stattfindet. In einer Ausführungsform wird nach jeder Faltung und vor einer Verarbeitung durch ein weiteres Modul 220 ein skaliertes räumliches Rauschen zu den Merkmalen hinzugefügt.The effects of each style signal are in the neural synthesis network 140 localized, ie it is to be expected that a modification of a certain subset of the style signals affects only certain attributes of an image represented by the output data. The reason for the localization is that the AdalN operation (Eq. 1) carried out by the module 220 is implemented, first normalizes each channel to a mean value of zero and a unit variance and only then applies scales and distortions depending on the style signal. The new per-channel statistics given by the style change the relative importance of features for the subsequent convolution operation, but the new per-channel statistics do not depend on the original statistics due to normalization. Thus, each style signal controls only a predefined number of folds 225 before it is overwritten by the next AdalN operation. In one embodiment, after each convolution and before processing by a further module 220 a scaled spatial noise added to the features.

Auf jedes Modul 220 kann eine Faltungsschicht 225 folgen. In einer Ausführungsform wendet die Faltungsschicht 225 einen 3 x 3-Faltungskern auf die Eingabe an. Innerhalb des Verarbeitungsblocks 200 werden die zweiten Zwischendaten, die von der Faltungsschicht 225 ausgegeben werden, mit dem zweiten räumlichen Rauschen kombiniert und in ein zweites Modul 220 eingegeben, das das zweite Stilsignal anwendet, um eine Ausgabe des Verarbeitungsblocks 200 zu erzeugen. In einer Ausführungsform wird das zweite räumliche Rauschen mit einem gelernten Skalierungsfaktor pro Kanal skaliert, bevor es mit den zweiten Zwischendaten kombiniert (z. B. zu diesen hinzugefügt) wird.On every module 220 can be a convolutional layer 225 follow. In one embodiment, the convolutional layer applies 225 apply a 3 x 3 convolution kernel to the input. Within the processing block 200 will be the second intermediate data received from the convolutional layer 225 are output, combined with the second spatial noise and placed in a second module 220 which applies the second style signal to an output of the processing block 200 to create. In one embodiment, the second spatial noise is scaled with a learned scaling factor per channel before it is combined with (e.g., added to) the second intermediate data.

Der Verarbeitungsblock 230 empfängt Merkmalskarten, die von dem Verarbeitungsblock 200 ausgegeben werden, und die Merkmalskarten werden durch eine Upsampling-Schicht 235 bezüglich ihrer Abtastrate erhöht bzw. einem Upsampling unterzogen. In einer Ausführungsform werden 4x4-Merkmalskarten durch die Upsampling-Schicht 235 bezüglich ihrer Abtastrate erhöht, um 8x8-Merkmalskarten zu erzeugen. Die bezüglich ihrer Abtastrate erhöhten Merkmalskarten werden in eine weitere Faltungsschicht 225 eingegeben, um dritte Zwischendaten zu erzeugen. Innerhalb des Verarbeitungsblocks 230 werden die dritten Zwischendaten mit dem dritten räumlichen Rauschen kombiniert und in ein drittes Modul 220 eingegeben, das das dritte Stilsignal über eine AdaIN-Operation anwendet. In einer Ausführungsform wird das dritte räumliche Rauschen mit einem gelernten Skalierungsfaktor pro Kanal skaliert, bevor es mit den dritten Zwischendaten kombiniert (z. B. zu diesen hinzugefügt) wird. Die Ausgabe des dritten Moduls 220 wird von einer weiteren Faltungsschicht 225 verarbeitet, um vierte Zwischendaten zu erzeugen. Die vierten Zwischendaten werden mit dem vierten räumlichen Rauschen kombiniert und in ein viertes Modul 220 eingegeben, das das vierte Stilsignal über eine AdaIN-Operation anwendet. In einer Ausführungsform wird das vierte räumliche Rauschen mit einem gelernten Skalierungsfaktor pro Kanal skaliert, bevor es mit den vierten Zwischendaten kombiniert (z. B. zu diesen hinzugefügt) wird.The processing block 230 receives feature maps from the processing block 200 are output, and the feature maps are passed through an upsampling layer 235 increased with respect to their sampling rate or subjected to an upsampling. In one embodiment, 4x4 feature maps are upsampled by the layer 235 increased in sampling rate to generate 8x8 feature maps. The feature maps, which have been increased in terms of their sampling rate, are placed in a further convolution layer 225 is input to generate third intermediate data. Within the processing block 230 the third intermediate data is combined with the third spatial noise and converted into a third module 220 which applies the third style signal via an AdaIN operation. In one embodiment, the third spatial noise is scaled with a learned scaling factor per channel before it is combined with (e.g., added to) the third intermediate data. The output of the third module 220 is made up of another folding layer 225 processed to produce fourth intermediate data. The fourth intermediate data is combined with the fourth spatial noise and into a fourth module 220 which applies the fourth style signal via an AdaIN operation. In one embodiment, the fourth spatial noise is scaled with a learned scaling factor per channel before it is combined with (e.g., added to) the fourth intermediate data.

In einer Ausführungsform beträgt die Auflösung der Ausgabedaten 10242 und das neuronale Synthesenetzwerk 140 weist 18 Schichten auf - zwei für jede Zweierpotenz der Auflösung (42 - 10242). Die Ausgabe der letzten Schicht des neuronalen Synthesenetzwerks 140 kann mit einer separaten I x I-Faltung in RGB konvertiert werden. In einer Ausführungsform hat das neuronale Synthesenetzwerk 140 insgesamt 26,2 M trainierbare Parameter, verglichen mit 23,1 M bei einem konventionellen Generator mit der gleichen Anzahl von Schichten und Merkmalskarten.In one embodiment, the resolution of the output data is 1024 2 and the neural synthesis network 140 has 18 layers - two for each power of two of the resolution (4 2 - 1024 2 ). The output of the last layer of the neural synthesis network 140 can be converted to RGB with a separate I x I convolution. In one embodiment, the neural synthesis network 140 a total of 26.2 M trainable parameters, compared to 23.1 M for a conventional generator with the same number of layers and feature maps.

Die Einführung von räumlichem Rauschen beeinflusst nur die stochastischen Aspekte der Ausgabedaten, so dass die Gesamtzusammensetzung und High-Level-Attribute wie die Identität intakt bleiben. Getrennte Rauscheingaben für das neuronale Synthesenetzwerk 140 ermöglichen die Anwendung einer stochastischen Variation auf verschiedene Untergruppen von Schichten. Die Anwendung eines räumlichen Rauschens, das einer bestimmten Schicht des neuronalen Synthesenetzwerks 140 eingegeben wird, führt zu einer stochastischen Variation auf einer Skala, die der Skala der jeweiligen Schicht entspricht.The introduction of spatial noise only affects the stochastic aspects of the output data, so the overall composition and high-level attributes such as identity remain intact. Separate noise inputs for the neural synthesis network 140 allow a stochastic variation to be applied to different subsets of layers. The application of spatial noise generated by a specific layer of the neural synthesis network 140 is entered leads to a stochastic variation on a scale that corresponds to the scale of the respective layer.

Die Auswirkung des Rauschens erscheint im neuronalen Synthesenetzwerk 140 eng lokalisiert. An jedem Punkt in dem neuronalen Synthesewerk 140 besteht der Zwang, so schnell wie möglich neue Inhalte einzuführen, und der einfachste Weg für das neuronale Synthesenetzwerk 140, eine stochastische Variation zu erzeugen, ist, sich auf die räumlichen Rauscheingaben zu verlassen. Für jede Schicht in dem neuronalen Synthesenetzwerk 140 steht ein frischer Satz von räumlichem Rauschen zur Verfügung, so dass es keinen Anreiz gibt, die stochastischen Effekte aus früheren Aktivierungen zu erzeugen, was zu einem lokalisierten Effekt führt. Daher wirkt sich das Rauschen nur auf unbedeutende stochastische Variationen aus (unterschiedlich gekämmte Haare, Bart, etc.). Im Gegensatz dazu haben Änderungen an den Stilsignalen globale Auswirkungen (Änderung der Pose, Identität usw.).The effect of the noise appears in the neural synthesis network 140 closely localized. At any point in the neural synthesis 140 there is a need to introduce new content as quickly as possible and the easiest way for the neural synthesis network 140 To create a stochastic variation is to rely on the spatial noise inputs. For each layer in the neural synthesis network 140 a fresh set of spatial noise is available so there is no incentive to create the stochastic effects from previous activations, resulting in a localized effect. Therefore, the noise only affects insignificant stochastic variations (differently combed hair, beard, etc.). In contrast, changes to the style signals have global effects (change in pose, identity, etc.).

Wenn es sich bei den Ausgabedaten bei dem neuronalen Synthesenetzwerk 140 um ein Bild handelt, wirken sich die Stilsignale auf das gesamte Bild aus, da komplette Merkmalskarten mit denselben Werten skaliert und verzerrt werden. Daher können globale Effekte wie Pose, Beleuchtung oder Hintergrundstil kohärent gesteuert werden. Indes wird das räumliche Rauschen jedem Pixel unabhängig hinzugefügt und eignet sich daher ideal für eine Steuerung einer stochastischen Variation. Würde das neuronale Synthesenetzwerk 140 versuchen, z. B. die Pose mit Hilfe des Rauschens zu steuern, würde dies zu räumlich inkonsistenten Entscheidungen führen, die beim Training bestraft würden. Daher lernt das neuronale Synthesenetzwerk 140, die globalen und lokalen Kanäle angemessen zu verwenden, ohne explizite Anleitung.If the output data is the neural synthesis network 140 If it is an image, the style signals affect the entire image, since complete feature maps are scaled and distorted with the same values. Therefore, global effects such as pose, lighting or background style can be controlled coherently. Meanwhile, the spatial noise is added to each pixel independently and is therefore ideal for controlling a stochastic variation. Would the neural synthesis network 140 try z. B. to control the pose with the help of the noise, this would lead to spatially inconsistent decisions that would be punished during training. Therefore, the neural synthesis network learns 140 to use the global and local channels appropriately without explicit guidance.

2C zeigt ein Flussdiagramm eines Verfahrens 250 zur Anwendung von räumlichem Rauschen unter Verwendung des stilbasierten Generatorsystems 100 gemäß einer Ausführungsform. Das Verfahren 250 kann durch ein Programm, eine benutzerdefinierte Schaltung oder durch eine Kombination aus benutzerdefinierter Schaltung und einem Programm ausgeführt werden. Beispielsweise kann das Verfahren 250 von einer GPU (Grafikverarbeitungseinheit), CPU (Zentraleinheit) oder einem beliebigen Prozessor ausgeführt werden, die in der Lage sind, die Operationen des stilbasierten Generatorsystems 100 auszuführen. Darüber hinaus versteht der Fachmann, dass jedes System, das das Verfahren 250 ausführt, innerhalb des Umfangs und des Geistes der Ausführungsformen der vorliegenden Erfindung liegt. 2C shows a flow diagram of a method 250 on the application of spatial noise using the style-based generator system 100 according to one embodiment. The procedure 250 can be executed by a program, a custom circuit, or a combination of a custom circuit and a program. For example, the method 250 executed by a GPU (graphics processing unit), CPU (central processing unit), or any processor capable of performing the operations of the style-based generator system 100 to execute. In addition, those skilled in the art understand that any system that incorporates the method 250 is within the scope and spirit of embodiments of the present invention.

In Schritt 255 wird ein erster Satz von räumlichem Rauschen auf eine erste Schicht des neuronalen Synthesenetzwerks 140 aufgebracht, um die ersten Zwischendaten zu erzeugen, die einen Inhalt umfassen, der den Ursprungsdaten entspricht, die auf der Grundlage des ersten Satzes von räumlichem Rauschen modifiziert werden. In einer Ausführungsform sind die Ursprungsdaten die ersten Zwischendaten und die erste Schicht ist eine Schicht, die das Modul 220 und/oder die Faltungsschicht 225 einschließt. In Schritt 258 werden die modifizierten ersten Zwischendaten durch die Verarbeitungsschicht(en) 125 verarbeitet, um die zweiten Zwischendaten zu erzeugen. In Schritt 260 wird ein zweiter Satz räumlichen Rauschens auf eine zweite Schicht des neuronalen Synthesenetzwerks 140 aufgebracht, um zweite Zwischendaten zu erzeugen, die Inhalte umfassen, die den ersten Zwischendaten entsprechen, die auf der Grundlage des zweiten Satzes räumlichen Rauschens modifiziert werden. In einer Ausführungsform werden die ersten Zwischendaten zumindest durch das Modul 220 modifiziert, um die zweiten Zwischendaten zu erzeugen. In Schritt 265 werden die zweiten Zwischendaten verarbeitet, um Ausgabedaten zu erzeugen, die Inhalte aufweisen, die den zweiten Zwischendaten entsprechen. In einer Ausführungsform werden die zweiten Zwischendaten von einem anderen Modul 220 und dem Block 230 verarbeitet, um die Ausgabedaten zu erzeugen.In step 255 becomes a first set of spatial noise on a first layer of the neural synthesis network 140 applied to generate the first intermediate data comprising content which corresponds to the original data modified based on the first set of spatial noise. In one embodiment, the original data is the first intermediate data and the first layer is a layer that comprises the module 220 and / or the folding layer 225 includes. In step 258 the modified first intermediate data are processed by the processing layer (s) 125 processed to generate the second intermediate data. In step 260 becomes a second set of spatial noise on a second layer of the neural synthesis network 140 is applied to generate second intermediate data including content corresponding to the first intermediate data modified based on the second set of spatial noise. In one embodiment, the first intermediate data are at least provided by the module 220 modified to generate the second intermediate data. In step 265 the second intermediate data is processed to generate output data having contents corresponding to the second intermediate data. In one embodiment, the second intermediate data is from another module 220 and the block 230 processed to produce the output data.

Rauschen kann in die Schichten des neuronalen Synthesenetzwerks 140 eingespeist werden, um eine Synthese von stochastischen Variationen auf einer der Schicht entsprechenden Skala zu bewirken. Wichtig ist, dass das Rauschen sowohl beim Training als auch bei der Generierung bzw. Erzeugung eingespeist wird. Zusätzlich kann während der Erzeugung die Stärke des Rauschens verändert werden, um das „Aussehen“ der Ausgabedaten weiter zu steuern. Eine Bereitstellung von Stilsignalen anstelle einer direkten Eingabe des latenten Codes in das neuronale Synthesenetzwerk 140 in Kombination mit direkt in das neuronale Synthesenetzwerk 140 eingespeistem Rauschen führt zu einer automatischen, unüberwachten Trennung von High-Level-Attributen (z. B. Pose, Identität) von einer stochastischen Variation (z. B. Sommersprossen, Haare) in den erzeugten Bildern und ermöglicht intuitive skalenspezifische Misch- und Interpolationsoperationen.Noise can enter the layers of the neural synthesis network 140 be fed in to bring about a synthesis of stochastic variations on a scale corresponding to the layer. It is important that the noise is fed in both during training and during generation or generation. In addition, the strength of the noise can be changed during generation in order to further control the "appearance" of the output data. Providing style signals instead of entering the latent code directly into the neural synthesis network 140 in combination with directly in the neural synthesis network 140 Noise fed in leads to an automatic, unsupervised separation of high-level attributes (e.g. pose, identity) from a stochastic variation (e.g. freckles, hair) in the generated images and enables intuitive, scale-specific mixing and interpolation operations.

Insbesondere passen die Stilsignale direkt die Stärke der Bildattribute bei verschiedenen Skalen in dem neuronalen Synthesenetzwerk 140 an. Während der Erzeugung können die Stilsignale verwendet werden, um ausgewählte Bildattribute zu modifizieren. Zusätzlich kann das neuronale Abbildungsnetzwerk 110 während des Trainings so ausgestaltet sein, dass es eine Stilmischungs-Regularisierung durchführt, um eine Lokalisierung der Stile zu verbessern.In particular, the style signals directly match the strength of the image attributes at different scales in the neural synthesis network 140 at. During generation, the style signals can be used to modify selected image attributes. In addition, the neural mapping network 110 be designed during training in such a way that it carries out a mix of styles regularization in order to improve a localization of the styles.

Das neuronale Abbildungsnetzwerk 110 bettet den eingegebenen latenten Code in den latenten Zwischenraum ein, was einen großen Einfluss darauf hat, wie die Faktoren der Variation in dem neuronalen Synthesenetzwerk 140 dargestellt werden. Der eingegebene latente Raum folgt der Wahrscheinlichkeitsdichte der Trainingsdaten, und dies führt wahrscheinlich zu einem gewissen Grad an unvermeidlicher Verflochtenheit. Der latente Zwischenraum ist von dieser Einschränkung befreit und kann daher entflochten werden. Im Vergleich zu einer konventionellen Generatorarchitektur erlaubt das stilbasierte Generatorsystem 100 eine linearere, weniger verflochtene Darstellung von verschiedenen Faktoren einer Variation. In einer Ausführungsform erfordert ein Ersatz eines konventionellen Generators durch den stilbasierten Generator möglicherweise keine Änderung einer anderen Komponente des Trainingsrahmens (Verlustfunktion, Diskriminator, Optimierungsverfahren o. ä.).The neural mapping network 110 embeds the entered latent code in the latent space, which has a great influence on how the factors of variation in the neural synthesis network 140 being represented. The latent space entered follows the probability density of the training data, and this is likely to result in some degree of inevitable entanglement. The latent space is exempt from this restriction and can therefore be disentangled. Compared to a conventional generator architecture, the style-based generator system allows 100 a more linear, less intertwined representation of several factors of variation. In one embodiment, replacing a conventional generator with the style-based generator may not require any other component of the training framework to be changed (loss function, discriminator, optimization method, or the like).

Das stilbasierte erzeugende neuronale Netz 100 kann z. B. mit dem GAN (generative adversarial networks), VAE (variational autoencoder) -Framework, flow-based Framework oder ähnlichem trainiert werden. 2D zeigt ein Blockdiagramm des Trainings-Frameworks GAN 270 gemäß einer Ausführungsform. Die GAN 270 können durch ein Programm, eine benutzerdefinierte Schaltung oder durch eine Kombination aus benutzerdefinierter Schaltung und einem Programm implementiert werden. Beispielsweise können die GAN 270 mit einer GPU, einer CPU oder einem beliebigen Prozessor implementiert werden, die in der Lage sind, die hier beschriebenen Operationen auszuführen. Darüber hinaus versteht der Fachmann, dass jedes System, das die Operationen der GAN 270 durchführt, in den Anwendungsbereich und den Geist der Ausführungsformen der vorliegenden Erfindung fällt.The style-based generating neural network 100 can e.g. B. can be trained with the GAN (generative adversarial networks), VAE (variational autoencoder) framework, flow-based framework or similar. 2D shows a block diagram of the training framework GAN 270 according to one embodiment. The GAN 270 can be implemented by a program, a custom circuit, or a combination of a custom circuit and a program. For example, the GAN 270 be implemented with a GPU, CPU, or any processor capable of performing the operations described herein. In addition, it will be understood by those skilled in the art that any system capable of performing the operations of the GAN 270 performs falls within the scope and spirit of the embodiments of the present invention.

Die GAN 270 weisen einen Generator, wie das stilbasierte Generatorsystem 100, einen Diskriminator (neuronales Netz) 275 und eine Trainingsverlusteinheit 280 auf. Die Topologien sowohl des Generators 110 als auch des Diskriminators 275 können während des Trainings modifiziert werden. Die GAN 270 können in einer unüberwachten Einstellung oder in einer abhängigen Einstellung arbeiten. Das stilbasierte Generatorsystem 100 empfängt Eingabedaten (z. B. mindestens einen latenten Code und/oder Rauscheingaben) und erzeugt Ausgabedaten. Je nach Aufgabe können die Ausgabedaten ein Bild, Audio, Video oder andere Arten von Daten sein (Konfigurationseinstellung). Der Diskriminator 275 ist eine adaptive Verlustfunktion, die beim Training des stilbasierten Generatorsystems 100 verwendet wird. Das stilbasierte Generatorsystem 100 und der Diskriminator 275 werden gleichzeitig mit einem Trainingsdatensatz trainiert, der Beispiel-Ausgabedaten aufweist, mit denen die vom stilbasierten Generatorsystem 100 erzeugten Ausgabedaten übereinstimmen sollen. Das stilbasierte Generatorsystem 100 erzeugt Ausgabedaten abhängig von den Eingabedaten, und der Diskriminator 275 bestimmt, ob die Ausgabedaten den in den Trainingsdaten enthaltenen Beispiel-Ausgabedaten ähnlich sind. Basierend auf der Bestimmung werden die Parameter des Diskriminators 275 und/oder des stilbasierten erzeugenden neuronalen Netzes 100 angepasst.The GAN 270 assign a generator, like the style-based generator system 100 , a discriminator (neural network) 275 and a loss of training session 280 on. The topologies of both the generator 110 as well as the discriminator 275 can be modified during training. The GAN 270 can work in an unsupervised setting or in a dependent setting. The style-based generator system 100 receives input data (e.g. at least one latent code and / or noise inputs) and generates output data. Depending on the task, the output data can be an image, audio, video or other types of data (configuration setting). The discriminator 275 is an adaptive loss function used when training the style-based generator system 100 is used. The style-based generator system 100 and the discriminator 275 are trained simultaneously with a training data set that has sample output data that is used by the style-based generator system 100 generated output data match should. The style-based generator system 100 generates output data depending on the input data, and the discriminator 275 determines whether the output data is similar to the sample output data included in the training data. Based on the determination, the parameters of the discriminator 275 and / or the style-based generating neural network 100 customized.

In der nicht überwachten Einstellung gibt der Diskriminator 275 einen kontinuierlichen Wert aus, der angibt, wie sehr die Ausgabedaten mit den Beispiel-Ausgabedaten übereinstimmen. In einer Ausführungsform gibt der Diskriminator 275 beispielsweise einen ersten Trainingsreiz (z. B. einen hohen Wert) aus, wenn festgestellt wird, dass die Ausgabedaten mit den Beispiel-Ausgabedaten übereinstimmen, und einen zweiten Trainingsreiz (z. B. einen niedrigen Wert) aus, wenn festgestellt wird, dass die Ausgabedaten nicht mit den Beispiel-Ausgabedaten übereinstimmen. Die Trainingsverlusteinheit 280 passt die Parameter (Gewichte) der GAN 270 basierend auf der Ausgabe des Diskriminators 275 an. Wenn das stilbasierte Generatorsystem 100 für eine bestimmte Aufgabe trainiert wird, z. B. die Erzeugung von Bildern menschlicher Gesichter, gibt der Diskriminator einen hohen Wert aus, wenn die Ausgabedaten ein Bild eines menschlichen Gesichts sind. Die von dem stilbasierten Generatorsystem 100 erzeugten Ausgabedaten müssen nicht mit den Beispiel-Ausgabedaten identisch sein, damit der Diskriminator 275 die Übereinstimmung der Ausgabedaten mit den Beispiel-Ausgabedaten feststellt. Im Kontext der folgenden Beschreibung bestimmt der Diskriminator 275, dass die Ausgabedaten mit den Beispiel-Ausgabedaten übereinstimmen, wenn die Ausgabedaten mit irgendwelchen der Beispiel-Ausgabedaten ähnlich sind.In the unsupervised setting, the discriminator gives 275 outputs a continuous value that indicates how closely the output data matches the sample output data. In one embodiment the discriminator gives 275 For example, a first training stimulus (e.g. a high value) if it is determined that the output data matches the sample output data, and a second training stimulus (e.g. a low value) if it is determined that the Output data does not match the sample output data. The training loss session 280 fits the parameters (weights) of the GAN 270 based on the output of the discriminator 275 at. If the style-based generator system 100 is trained for a specific task, e.g. B. the generation of images of human faces, the discriminator outputs a high value if the output data is an image of a human face. The ones from the style-based generator system 100 generated output data do not have to be identical to the sample output data so that the discriminator 275 determines the consistency of the output data with the sample output data. In the context of the following description, the discriminator determines 275 indicates that the output data will match the example output data if the output data is similar to any of the example output data.

In der abhängigen Einstellung kann die Eingabe des stilbasierten erzeugenden neuronalen Netzes 100 andere Daten aufweisen, wie z. B. ein Bild, ein Klassifizierungskennzeichen, Segmentierungskonturen und andere (zusätzliche) Typen von Daten (Verteilung, Audio, usw.). Die zusätzlichen Daten können zusätzlich zu dem zufälligen latenten Code angegeben werden, oder die zusätzlichen Daten können den zufälligen latenten Code vollständig ersetzen. Der Trainingsdatensatz kann Eingabe-/Ausgabedatenpaare aufweisen, und die Aufgabe des Diskriminators 275 kann darin bestehen, anhand der beispielhaften Eingabe-/Ausgabe-Paare, die der Diskriminator 275 in den Trainingsdaten gesehen hat, zu bestimmen, ob die Ausgabe des stilbasierten erzeugenden neuronalen Netzes 100 mit der Eingabe konsistent erscheint.In the dependent setting, the input of the style-based generating neural network 100 have other data, such as B. an image, a classification label, segmentation contours and other (additional) types of data (distribution, audio, etc.). The additional data can be provided in addition to the random latent code, or the additional data can replace the random latent code entirely. The training data set can have input / output data pairs and the task of the discriminator 275 can be based on the exemplary input / output pairs that the discriminator 275 saw in the training data to determine if the output of the style-based generating neural network 100 appears consistent with the entry.

ParallelverarbeitungsarchitekturParallel processing architecture

3 veranschaulicht eine Parallelverarbeitungseinheit (PPU) 300 gemäß einer Ausführungsform. Die PPU 400 kann verwendet werden, um das stilbasierte Generatorsystem 100 zu implementieren. Die PPU 400 kann verwendet werden, um eines oder mehrere der folgenden Elemente zu implementieren: das neuronale Abbildungsnetzwerk 110, die Stilkonvertierungseinheit 115, das neuronale Synthesenetzwerk 140, die erzeugenden gegnerischen Netzwerke 270, den Stilblock 640, den Stilblock 645 und das neuronale Synthesenetzwerk 840. In einer Ausführungsform kann ein Prozessor wie die PPU 400 so ausgestaltet sein, dass er ein Modell eines neuronalen Netzes implementiert. Das Modell eines neuronalen Netzes kann als Softwareanweisungen implementiert werden, die vom Prozessor ausgeführt werden, oder bei anderen Ausführungen kann der Prozessor eine Matrix von Hardwareelementen aufweisen, die so ausgestaltet sind, dass sie einen Satz von Eingaben (z. B. elektrische Signale, die Werte darstellen) verarbeiten, um einen Satz von Ausgaben zu erzeugen, die Aktivierungen des Modells des neuronalen Netzes darstellen können. Bei anderen Ausführungsformen kann das Modell eines neuronalen Netzes als Kombination aus Softwareanweisungen und der Verarbeitung durch eine Matrix von Hardwareelementen implementiert werden. Die Implementierung des neuronalen Netzmodells kann die Bestimmung eines Satzes von Parametern für das Modell des neuronalen Netzes aufweisen, z. B. durch überwachtes oder nicht überwachtes Training des Modells des neuronalen Netzes sowie, oder alternativ, die Durchführung von Inferenz unter Verwendung des Satzes von Parametern, um neue Sätze von Eingaben zu verarbeiten. 3 illustrates a parallel processing unit (PPU) 300 according to one embodiment. The PPU 400 can be used to build the style based generator system 100 to implement. The PPU 400 can be used to implement one or more of the following: the neural mapping network 110 , the style conversion unit 115 , the neural synthesis network 140 , the generating opposing networks 270 , the style block 640 , the style block 645 and the neural synthesis network 840 . In one embodiment, a processor such as the PPU 400 be designed so that it implements a model of a neural network. The neural network model can be implemented as software instructions that are executed by the processor, or in other implementations, the processor can include an array of hardware elements configured to receive a set of inputs (e.g., electrical signals that Represent values) to produce a set of outputs that can represent activations of the neural network model. In other embodiments, the neural network model may be implemented as a combination of software instructions and processing by an array of hardware elements. The implementation of the neural network model may include determining a set of parameters for the neural network model, e.g. By supervised or unsupervised training of the neural network model and, or alternatively, performing inference using the set of parameters to process new sets of inputs.

In einer Ausführungsform ist die PPU 300 ein Multi-Thread-Prozessor, der auf einer oder mehreren integrierten Schaltungseinrichtungen implementiert ist. Die PPU 300 ist eine Latenz versteckende Architektur, die dafür ausgelegt ist, viele Threads parallel zu verarbeiten. Ein Thread (d. h. ein Ausführungsstrang) ist eine Instanziierung eines Satzes von Anweisungen, die zur Ausführung durch die PPU 300 ausgestaltet sind. In einer Ausführungsform ist die PPU 300 eine Grafikverarbeitungseinheit (GPU), die so ausgestaltet ist, dass sie eine Grafik-Rendering-Pipeline zur Verarbeitung von dreidimensionalen (3D) Grafikdaten implementiert, um zweidimensionale (2D) Bilddaten zur Anzeige auf einer Anzeigeeinrichtung, wie z. B. einer Flüssigkristallanzeige (LCD), zu erzeugen. In einer anderen Ausführungsform ist die PPU 300 ausgestaltet, um das neuronale Netzwerksystem 100 zu implementieren. Bei anderen Ausführungen kann die PPU 300 für die Durchführung von Allzweckberechnungen verwendet werden. Während ein beispielhafter Parallelprozessor hier zu Veranschaulichungszwecken bereitgestellt wird, sei ausdrücklich darauf hingewiesen, dass ein solcher Prozessor nur zu Veranschaulichungszwecken dargelegt wird und dass jeder beliebige Prozessor zur Ergänzung und/oder zum Ersatz desselben verwendet werden kann.In one embodiment, the PPU is 300 a multi-thread processor implemented on one or more integrated circuit devices. The PPU 300 is a latency-hiding architecture designed to process many threads in parallel. A thread (ie a thread of execution) is an instantiation of a set of instructions that are to be executed by the PPU 300 are designed. In one embodiment, the PPU is 300 a graphics processing unit (GPU) configured to implement a graphics rendering pipeline for processing three-dimensional (3D) graphics data to produce two-dimensional (2D) image data for display on a display device, such as B. a liquid crystal display (LCD) to generate. In another embodiment, the PPU is 300 designed to the neural network system 100 to implement. For other versions, the PPU 300 used for performing general purpose calculations. While an exemplary parallel processor is provided herein for purposes of illustration, it is expressly understood that such a processor is set forth for illustrative purposes only and that any processor may be used to supplement and / or replace it.

Eine oder mehrere PPUs 300 können so ausgestaltet sein, dass sie Tausende von High Performance Computing (HPC)-, Rechenzentrums- und Machine Learning-Anwendungen beschleunigen. Die PPU 300 kann so ausgestaltet sein, dass sie zahlreiche Deep-Learning-Systeme und -Anwendungen beschleunigt, darunter autonome Fahrzeugplattformen, Deep Learning, hochpräzise Sprach-, Bild- und Texterkennungssysteme, intelligente Videoanalyse, molekulare Simulationen, Arzneimittelentdeckung, Krankheitsdiagnose, Wettervorhersage, Big-Data-Analytik, Astronomie, Molekulardynamiksimulation, Finanzmodellierung, Robotik, Fabrikautomation, Echtzeit-Sprachübersetzung, Online-Suchoptimierung und personalisierte Benutzerempfehlungen und dergleichen.One or more PPUs 300 can be designed to accelerate thousands of high performance computing (HPC), data center, and machine learning applications. The PPU 300 can be designed to accelerate numerous deep learning systems and applications, including autonomous vehicle platforms, deep learning, high-precision voice, image and text recognition systems, intelligent video analysis, molecular simulations, drug discovery, disease diagnosis, weather forecasting, big data Analytics, astronomy, molecular dynamics simulation, financial modeling, robotics, factory automation, real-time voice translation, online search optimization and personalized user recommendations and the like.

Wie in 3 dargestellt, weist die PPU 300 eine Eingabe/Ausgabe (E/A)-Einheit 305, eine Front-End-Einheit 315, eine Ablaufsteuerungseinheit bzw. Scheduler-Einheit 320, eine Arbeitsverteilungseinheit 325, einen Netzwerkknoten 330, ein Koppelfeld (Xbar) 370, einen oder mehrere allgemeine Verarbeitungscluster bzw. General Processing Cluster (GPCs) 350 und eine oder mehrere Partitionseinheiten 380 auf. Die PPU 300 kann mit einem Host-Prozessor oder anderen PPUs 300 über eine oder mehrere Hochgeschwindigkeits-NVLink 310-Verbindungen verbunden sein. Die PPU 300 kann mit einem Host-Prozessor oder anderen peripheren Einrichtungen über einen Interconnect 302 verbunden sein. Die PPU 300 kann auch mit einem lokalen Speicher 304 verbunden sein, der eine Reihe von Speichereinrichtungen umfasst. In einer Ausführungsform kann der lokale Speicher eine Anzahl von DRAM-Einrichtungen (Dynamic Random Access Memory) umfassen. Die DRAM-Einrichtungen können als HBM-Subsystem (High-Bandwidth Memory) ausgestaltet sein, wobei mehrere DRAM-Dies in jeder Einrichtung gestapelt sind.As in 3 shown, the PPU 300 an input / output (I / O) unit 305 , a front-end unit 315 , a sequence control unit or scheduler unit 320 , a work distribution unit 325 , a network node 330 , a switching matrix (Xbar) 370 , one or more general processing clusters or general processing clusters (GPCs) 350 and one or more partition units 380 on. The PPU 300 can be with a host processor or other PPUs 300 connected via one or more high-speed NVLink 310 connections. The PPU 300 can interconnect with a host processor or other peripheral equipment 302 be connected. The PPU 300 can also use a local store 304 be connected, which comprises a number of storage devices. In one embodiment, the local memory may comprise a number of DRAM (Dynamic Random Access Memory) devices. The DRAM devices can be designed as an HBM (high-bandwidth memory) subsystem, with several DRAM dies being stacked in each device.

Die NVLink 310-Verbindung ermöglicht die Skalierung von Systemen und weist eine oder mehrere PPUs 300 in Kombination mit einer oder mehreren CPUs auf, unterstützt die Cache-Kohärenz zwischen den PPUs 300 und den CPUs sowie das CPU-Mastering. Daten und/oder Befehle können über den NVLink 310 durch den Netzwerknoten 330 zu/von anderen Einheiten der PPU 300 übertragen werden, wie z. B. einer oder mehreren Kopier-Engines, einem Video-Encoder, einem Video-Decoder, einer Power-Management-Einheit usw. (nicht explizit dargestellt). Der NVLink 310 wird in Verbindung mit 5B ausführlicher beschrieben.The NVLink 310 connection enables systems to scale and assigns one or more PPUs 300 in combination with one or more CPUs, supports cache coherence between the PPUs 300 and the CPUs as well as the CPU mastering. Data and / or commands can be sent via the NVLink 310 through the network node 330 to / from other units of the PPU 300 transmitted, such as B. one or more copy engines, a video encoder, a video decoder, a power management unit, etc. (not explicitly shown). The NVLink 310 will be used in conjunction with 5B described in more detail.

Die E/A-Einheit 305 ist so ausgestaltet, dass sie Kommunikationen (d. h. Befehle, Daten usw.) von einem Host-Prozessor (nicht dargestellt) über die Verbindung 302 sendet und empfängt. Die E/A-Einheit 305 kann mit dem Host-Prozessor direkt über die Verbindung 302 oder über eine oder mehrere zwischengeschaltete Einrichtungen wie z. B. eine Speicherbrücke kommunizieren. Bei einer Ausführungsform kann die E/A-Einheit 305 mit einem oder mehreren anderen Prozessoren, wie z. B. einer oder mehreren PPUs 300, über die Zwischenverbindung 302 kommunizieren. In einer Ausführungsform implementiert die E/A-Einheit 305 eine Peripheral Component Interconnect Express (PCIe)-Schnittstelle für die Kommunikation über einen PCIe-Bus, und der Interconnect 302 ist ein PCIe-Bus. Bei anderen Ausführungen kann die E/A-Einheit 305 andere Arten von bekannten Schnittstellen für die Kommunikation mit externen Einrichtungen implementieren.The I / O base 305 is designed to receive communications (ie commands, data, etc.) from a host processor (not shown) over the link 302 sends and receives. The I / O base 305 can connect to the host processor directly 302 or via one or more intermediary devices such as B. communicate a memory bridge. In one embodiment, the I / O device 305 with one or more other processors, such as B. one or more PPUs 300 , through the interconnection 302 communicate. In one embodiment, implements the I / O device 305 a Peripheral Component Interconnect Express (PCIe) interface for communication over a PCIe bus, and the interconnect 302 is a PCIe bus. In other versions, the I / O base can 305 implement other types of known interfaces for communication with external devices.

Die E/A-Einheit 305 dekodiert Pakete, die über die Verbindung 302 empfangen werden. In einer Ausführungsform stellen die Pakete Befehle dar, die so ausgestaltet sind, dass sie die PPU 300 veranlassen, verschiedene Operationen durchzuführen. Die E/A-Einheit 305 überträgt die dekodierten Befehle an verschiedene andere Einheiten der PPU 300, so wie es die Befehle vorgeben können. Zum Beispiel können einige Befehle an die Front-End-Einheit 315 übertragen werden. Andere Befehle können an den Netzwerkknoten 330 oder andere Einheiten der PPU 300 übertragen werden, wie z. B. eine oder mehrere Kopier-Engines, einen Video-Encoder, einen Video-Decoder, eine Power-Management-Einheit usw. (nicht explizit dargestellt). Mit anderen Worten, die E/A-Einheit 305 ist so ausgestaltet, dass sie die Kommunikation zwischen und unter den verschiedenen logischen Einheiten der PPU 300 routet.The I / O base 305 decodes packets passing through the connection 302 be received. In one embodiment, the packets represent commands that are designed to be used by the PPU 300 cause various operations to be performed. The I / O base 305 transmits the decoded commands to various other units of the PPU 300 as the commands can dictate. For example, some commands can be sent to the front-end unit 315 be transmitted. Other commands can be sent to the network node 330 or other units of the PPU 300 transmitted, such as B. one or more copy engines, a video encoder, a video decoder, a power management unit, etc. (not explicitly shown). In other words, the I / O base 305 is designed in such a way that it enables communication between and among the various logical units of the PPU 300 routes.

In einer Ausführungsform kodiert ein von dem Host-Prozessor ausgeführtes Programm einen Befehlsstrom in einem Puffer, der der PPU 300 Arbeitslasten zur Verarbeitung bereitstellt. Eine Arbeitslast kann mehrere Anweisungen und Daten umfassen, die von diesen Anweisungen verarbeitet werden sollen. Der Puffer ist ein Bereich in einem Speicher, auf den sowohl der Host-Prozessor als auch die PPU 300 zugreifen (d. h. lesen und schreiben) können. Beispielsweise kann die E/A-Einheit 305 so ausgestaltet sein, dass sie auf den Puffer in einem Systemspeicher zugreift, der mit der Verbindung 302 verbunden ist, und zwar über Speicheranforderungen, die über die Verbindung 302 übertragen werden. In einer Ausführungsform schreibt der Host-Prozessor den Befehlsstrom in den Puffer und überträgt dann einen Zeiger auf den Anfang des Befehlsstroms an die PPU 300. Die Frontend-Einheit 315 empfängt Zeiger auf einen oder mehrere Befehlsströme. Die Frontend-Einheit 315 verwaltet den einen oder die mehreren Ströme, liest Befehle aus den Strömen und leitet Befehle an die verschiedenen Einheiten der PPU 300 weiter.In one embodiment, a program executed by the host processor encodes an instruction stream in a buffer called the PPU 300 Provision workloads for processing. A workload can contain multiple statements and data to be processed by those statements. The buffer is an area in memory shared by both the host processor and the PPU 300 be able to access (ie read and write). For example, the I / O base can 305 be configured to access the buffer in a system memory associated with the connection 302 is connected through storage requests made through the connection 302 be transmitted. In one embodiment, the host processor writes the instruction stream to the buffer and then transfers a pointer to the beginning of the instruction stream to the PPU 300 . The front-end unit 315 receives pointers to one or more instruction streams. The front end unit 315 manages the one or more streams, reads commands from the streams and forwards commands to the various units of the PPU 300 Further.

Die Frontend-Einheit 315 ist mit einer Scheduler-Einheit 320 gekoppelt, die die verschiedenen GPCs 350 so ausgestaltet, dass sie die durch den einen oder die mehreren Streams definierten Aufgaben verarbeiten. Die Scheduler-Einheit 320 ist so ausgestaltet, dass sie Zustandsinformationen in Bezug auf die verschiedenen, von der Scheduler-Einheit 320 verwalteten Aufgaben verfolgt. Der Zustand kann anzeigen, welchem GPC 350 eine Aufgabe zugewiesen ist, ob die Aufgabe aktiv oder inaktiv ist, eine Prioritätsstufe, die mit der Aufgabe verbunden ist, und so weiter. Die Scheduler-Einheit 320 verwaltet die Ausführung einer Vielzahl von Aufgaben auf dem einen oder mehreren GPCs 350.The front-end unit 315 is with a scheduler unit 320 coupled that the various GPCs 350 designed to process the tasks defined by the one or more streams. The scheduler unit 320 is designed to provide status information related to the various, from the scheduler unit 320 managed tasks tracked. The state can indicate which GPC 350 a task is assigned, whether the task is active or inactive, a priority level associated with the task, and so on. The scheduler unit 320 manages the execution of a large number of tasks on the one or more GPCs 350 .

Die Scheduler-Einheit 320 ist mit einer Arbeitsverteilungseinheit 325 gekoppelt, die so ausgestaltet ist, dass sie Aufgaben zur Ausführung auf den GPCs 350 verteilt. Die Arbeitsverteilungseinheit 325 kann eine Anzahl von geplanten Aufgaben verfolgen, die von der Scheduler-Einheit 320 empfangen wurden. In einer Ausführungsform verwaltet die Arbeitsverteilungseinheit 325 einen Pool ausstehender Aufgaben und einen Pool aktiver Aufgaben für jeden der GPCs 350. Der Pool ausstehender Aufgaben kann eine Anzahl von Slots (z. B. 32 Slots) umfassen, die Aufgaben enthalten, die zur Bearbeitung durch einen bestimmten GPC 350 zugewiesen sind. Der Pool aktiver Aufgaben kann eine Anzahl von Slots (z. B. 4 Slots) für Aufgaben umfassen, die aktiv von den GPCs 350 bearbeitet werden. Wenn ein GPC 350 die Ausführung einer Aufgabe beendet, wird diese Aufgabe aus dem Pool aktiver Aufgaben für den GPC 350 entfernt und eine der anderen Aufgaben aus dem Pool anstehender Aufgaben wird ausgewählt und für die Ausführung auf dem GPC 350 eingeplant. Wenn eine aktive Aufgabe auf dem GPC 350 im Leerlauf ist, z. B. während des Wartens auf die Auflösung einer Datenabhängigkeit, dann kann die aktive Aufgabe aus dem GPC 350 entfernt und in den Pool anstehender Aufgaben zurückgeführt werden, während eine andere Aufgabe im Pool anstehender Aufgaben ausgewählt und zur Ausführung auf dem GPC 350 eingeplant wird.The scheduler unit 320 is with a labor distribution unit 325 coupled, which is designed so that it can execute tasks on the GPCs 350 distributed. The work distribution unit 325 can keep track of a number of scheduled tasks performed by the scheduler unit 320 were received. In one embodiment, the work distribution unit manages 325 a pool of outstanding tasks and a pool of active tasks for each of the GPCs 350 . The pending task pool may include a number of slots (e.g. 32 slots) that contain tasks that are to be processed by a particular GPC 350 are assigned. The pool of active tasks may include a number of slots (e.g. 4 slots) for tasks that are active by the GPCs 350 to be edited. When a GPC 350 When a task finishes, that task is removed from the pool of active tasks for the GPC 350 removed and one of the other tasks from the pool of pending tasks is selected and scheduled to run on the GPC 350 planned. If there is an active task on the GPC 350 is idle, e.g. B. while waiting for the resolution of a data dependency, then the active task can be taken from the GPC 350 removed and returned to the pending task pool, while another task in the pending task pool is selected and executed on the GPC 350 is scheduled.

Die Arbeitsverteilungseinheit 325 kommuniziert mit dem einen oder mehreren GPCs 350 über das Koppelfeld 370. Das Koppelfeld 370 ist ein Verbindungsnetzwerk, das viele der Einheiten der PPU 300 mit anderen Einheiten der PPU 300 koppelt. Beispielsweise kann das Koppelfeld 370 so ausgestaltet sein, dass es die Arbeitsverteilungseinheit 325 mit einem bestimmten GPC 350 koppelt. Obwohl es nicht explizit dargestellt ist, können auch eine oder mehrere andere Einheiten der PPU 300 über den Netzwerkknoten 330 mit dem Koppelfeld 370 verbunden sein.The work distribution unit 325 communicates with the one or more GPCs 350 via the switching matrix 370 . The coupling matrix 370 is an interconnection network that connects many of the units of the PPU 300 with other units of the PPU 300 couples. For example, the switching matrix 370 be designed so that it is the work distribution unit 325 with a specific GPC 350 couples. Although not explicitly shown, one or more other units of the PPU 300 via the network node 330 with the switching matrix 370 be connected.

Die Aufgaben werden von der Scheduler-Einheit 320 verwaltet und von der Arbeitsverteilungseinheit 325 an einen GPC 350 weitergeleitet. Der GPC 350 ist so ausgestaltet, dass er die Aufgabe abarbeitet und Ergebnisse erzeugt. Die Ergebnisse können von anderen Aufgaben innerhalb des GPC 350 aufgenommen, über das Koppelfeld 370 an einen anderen GPC 350 weitergeleitet oder im Speicher 304 abgelegt werden. Die Ergebnisse können über die Partitionseinheiten 380 in den Speicher 304 geschrieben werden, die eine Speicherschnittstelle zum Lesen und Schreiben von Daten in/aus dem Speicher 304 implementieren. Die Ergebnisse können über den NVLink 310 an eine andere PPU 300 oder CPU übertragen werden. In einer Ausführungsform weist die PPU 300 eine Anzahl U von Partitionseinheiten 380 auf, die der Anzahl von separaten und unterschiedlichen Speichereinrichtungen des mit der PPU 300 gekoppelten Speichers 304 entspricht. Eine Partitionseinheit 380 wird weiter unten in Verbindung mit 4B näher beschrieben.The tasks are carried out by the scheduler unit 320 managed and by the labor distribution unit 325 to a GPC 350 forwarded. The GPC 350 is designed in such a way that it processes the task and generates results. The results can be obtained from other tasks within the GPC 350 recorded, via the switching matrix 370 to another GPC 350 forwarded or in memory 304 be filed. The results can be obtained through the partition units 380 into memory 304 which is a memory interface for reading and writing data to / from memory 304 to implement. The results can be viewed via the NVLink 310 to another PPU 300 or CPU. In one embodiment, the PPU 300 a number U of partition units 380 based on the number of separate and distinct storage devices used by the PPU 300 coupled storage 304 is equivalent to. A partition unit 380 will be discussed below in conjunction with 4B described in more detail.

In einer Ausführungsform führt ein Host-Prozessor einen Treiberkern aus, der eine Anwendungsprogrammierschnittstelle (API) implementiert, die es einer oder mehreren auf dem Host-Prozessor ausgeführten Anwendungen ermöglicht, Operationen zur Ausführung auf der PPU 300 zu planen. In einer Ausführungsform werden mehrere Rechenanwendungen gleichzeitig von der PPU 300 ausgeführt und die PPU 300 bietet Isolierung, Dienstgüte (QoS) und unabhängige Adressräume für die mehreren Rechenanwendungen. Eine Anwendung kann Anweisungen (d. h. API-Aufrufe) generieren, die den Treiberkern veranlassen, eine oder mehrere Aufgaben zur Ausführung durch die PPU 300 zu generieren. Der Treiber-Kernel gibt Aufgaben an einen oder mehrere Streams aus, die von der PPU 300 verarbeitet werden. Jede Aufgabe kann eine oder mehrere Gruppen von zusammenhängenden Threads umfassen, die hier als Warp bezeichnet werden. In einer Ausführungsform umfasst ein Warp 32 zusammengehörige Threads, die parallel ausgeführt werden können. Kooperierende Threads können sich auf eine Vielzahl von Threads beziehen, die Anweisungen zur Ausführung der Aufgabe aufweisen und Daten über einen gemeinsamen Speicher austauschen können. Threads und kooperierende Threads werden in Verbindung mit 5A ausführlicher beschrieben.In one embodiment, a host processor executes a driver core that implements an application programming interface (API) that allows one or more applications running on the host processor to operate on the PPU 300 to plan. In one embodiment, multiple computing applications are run concurrently by the PPU 300 executed and the PPU 300 provides isolation, quality of service (QoS), and independent address spaces for the multiple computing applications. An application can generate instructions (ie, API calls) that cause the driver core to perform one or more tasks for the PPU to perform 300 to generate. The driver kernel issues tasks to one or more streams that the PPU 300 are processed. Each task can include one or more groups of contiguous threads, referred to herein as a warp. In one embodiment, a warp includes 32 related threads that can be executed in parallel. Cooperating threads can refer to a variety of threads that have instructions for performing the task and can exchange data over a shared memory. Threads and cooperating threads are associated with 5A described in more detail.

4A zeigt einen GPC 350 der PPU 300 aus 3 gemäß einer Ausführungsform. Wie in 4A dargestellt ist, weist jeder GPC 350 eine Anzahl von Hardwareeinheiten zur Verarbeitung von Aufgaben auf. In einer Ausführungsform weist jeder GPC 350 einen Pipeline-Manager 410, eine Pre-Raster Operations Unit (PROP) 415, eine Raster-Engine 425, eine Work Distribution Crossbar (WDX) 480, eine Speicherverwaltungseinheit bzw. Memory Management Unit (MMU) 490 und einen oder mehrere Datenverarbeitungscluster bzw. Data Processing Cluster (DPCs) 420 auf. Es ist klar, dass der GPC 350 aus 4A anstelle der in 4A gezeigten Einheiten oder zusätzlich zu diesen andere Hardwareeinheiten aufweisen kann. 4A shows a GPC 350 the PPU 300 the end 3 according to one embodiment. As in 4A each has GPC 350 a number of hardware units for processing tasks. In one embodiment, each has GPC 350 a pipeline manager 410 , a Pre-Raster Operations Unit (PROP) 415 , a raster engine 425 , a work distribution crossbar (WDX) 480 , a memory management unit (MMU) 490 and one or more data processing clusters or data processing clusters (DPCs) 420 on. It is clear that the GPC 350 the end 4A instead of the in 4A units shown or in addition to these may have other hardware units.

In einer Ausführungsform wird der Betrieb des GPC 350 durch den Pipeline-Manager 410 gesteuert. Der Pipeline-Manager 410 verwaltet die Konfiguration der einen oder mehreren DPCs 420 für die Verarbeitung von Aufgaben, die dem GPC 350 zugewiesen sind. Bei einer Ausführungsform kann der Pipeline-Manager 410 mindestens einen der einen oder mehreren DPCs 420 so konfigurieren, dass er mindestens einen Abschnitt einer Grafik-Rendering-Pipeline implementiert. Zum Beispiel kann ein DPC 420 so ausgestaltet sein, dass er ein Vertex-Shader-Programm auf dem programmierbaren Streaming-Multiprozessor (SM) 440 ausführt. Der Pipeline-Manager 410 kann auch so ausgestaltet sein, dass er von der Arbeitsverteilungseinheit 325 empfangene Pakete an die entsprechenden logischen Einheiten innerhalb des GPC 350 weiterleitet. Beispielsweise können einige Pakete an Hardwareeinheiten mit fester Funktion im PROP 415 und/oder in der Raster-Engine 425 weitergeleitet werden, während andere Pakete an die DPCs 420 zur Verarbeitung durch die Primitive-Engine 435 oder den SM 440 weitergeleitet werden können. Bei einer Ausführungsform kann der Pipeline-Manager 410 mindestens einen der einen oder mehreren DPCs 420 so konfigurieren, dass er ein Modell eines neuronalen Netzes und/oder eine Rechenpipeline implementiert.In one embodiment, the operation of the GPC 350 through the pipeline manager 410 controlled. The pipeline manager 410 manages the configuration of one or more DPCs 420 for processing tasks assigned to the GPC 350 are assigned. In one embodiment, the pipeline manager 410 at least one of the one or more DPCs 420 configure to implement at least a portion of a graphics rendering pipeline. For example, a DPC 420 be designed so that it can run a vertex shader program on the programmable streaming multiprocessor (SM) 440 executes. The pipeline manager 410 can also be designed so that it is from the work distribution unit 325 received packets to the appropriate logical units within the GPC 350 forwards. For example, some packages of hardware units with a fixed function in the PROP 415 and / or in the raster engine 425 while other packets are forwarded to the DPCs 420 for processing by the primitive engine 435 or the SM 440 can be forwarded. In one embodiment, the pipeline manager 410 may include at least one of the one or more DPCs 420 configure it to implement a neural network model and / or a computational pipeline.

Die PROP-Einheit 415 ist so ausgestaltet, dass sie die von der Raster-Engine 425 und den DPCs 420 erzeugten Daten an eine Raster Operations (ROP)-Einheit weiterleitet, die in Verbindung mit 4B näher beschrieben wird. Die PROP-Einheit 415 kann auch so ausgestaltet sein, dass sie Optimierungen für die Farbmischung durchführt, Pixeldaten organisiert, Adressübersetzungen vornimmt und Ähnliches.The PROP unit 415 is designed to be used by the raster engine 425 and the DPCs 420 forwards generated data to a Raster Operations (ROP) unit, which in conjunction with 4B is described in more detail. The PROP unit 415 can also be designed in such a way that it carries out optimizations for the color mixing, organizes pixel data, carries out address translations and the like.

Die Raster-Engine 425 weist eine Reihe von Hardware-Einheiten mit fester Funktion auf, die so ausgestaltet sind, dass sie verschiedene Rasteroperationen durchführen. In einer Ausführungsform weist die Raster-Engine 425 eine Setup-Engine, eine Grobraster-Engine, eine Culling-Engine, eine Clipping-Engine, eine Feinraster-Engine und eine Tile Coalescing-Engine auf. Die Setup-Engine empfängt transformierte Vertices und erzeugt Ebenengleichungen, die mit dem durch die Vertices definierten geometrischen Primitiv verbunden sind. Die Ebenengleichungen werden an die Grobraster-Engine übertragen, um Abdeckungsinformationen (z. B. eine x,y-Abdeckungsmaske für eine Kachel) für das Primitiv zu erzeugen. Die Ausgabe der Grobraster-Engine wird an die Culling-Engine weitergeleitet, wo Fragmente, die mit dem Primitiv verbunden sind und einen z-Test nicht bestehen, aussortiert werden, und an eine Clipping-Engine weitergeleitet, wo Fragmente, die außerhalb eines Sichtkegels liegen, abgeschnitten werden. Die Fragmente, die das Beschneiden und Aussortieren überstehen, können an die Feinraster-Engine weitergeleitet werden, um Attribute für die Pixelfragmente auf der Grundlage der von der Setup-Engine erzeugten Ebenengleichungen zu generieren. Die Ausgabe der Raster-Engine 425 umfasst Fragmente, die z. B. von einem in einer DPC 420 implementierten Fragment-Shader verarbeitet werden.The raster engine 425 comprises a number of fixed function hardware units designed to perform various raster operations. In one embodiment, the raster engine 425 a setup engine, a coarse grid engine, a culling engine, a clipping engine, a fine grid engine and a tile coalescing engine. The setup engine receives transformed vertices and generates plane equations associated with the geometric primitive defined by the vertices. The plane equations are passed to the coarse raster engine to generate coverage information (e.g., an x, y coverage mask for a tile) for the primitive. The output of the coarse-raster engine is forwarded to the culling engine, where fragments connected to the primitive that fail a z-test are sorted out, and passed to a clipping engine, where fragments that are outside a cone of view to be cut off. The fragments that survive the clipping and sorting can be passed to the fine grid engine to generate attributes for the pixel fragments based on the plane equations generated by the setup engine. The output of the raster engine 425 includes fragments z. B. from one in a DPC 420 implemented fragment shaders are processed.

Jeder in dem GPC 350 enthaltene DPC 420 weist eine M-Pipe-Steuerung (MPC) 430, eine Primitiv-Engine 435 und einen oder mehrere SMs 440 auf. Der MPC 430 steuert den Betrieb des DPC 420 und leitet die vom Pipeline-Manager 410 empfangenen Pakete an die entsprechenden Einheiten im DPC 420 weiter. Beispielsweise können Pakete, die einem Vertex zugeordnet sind, an die Primitiv-Engine 435 weitergeleitet werden, die so ausgestaltet ist, dass sie Vertexattribute, die dem Vertex zugeordnet sind, aus dem Speicher 304 abruft. Im Gegensatz dazu können Pakete, die mit einem Shader-Programm verbunden sind, an den SM 440 übertragen werden.Everyone in the GPC 350 included DPC 420 assigns an M-Pipe control (MPC) 430 , a primitive engine 435 and one or more SMs 440 on. The MPC 430 controls the operation of the DPC 420 and directs those from the pipeline manager 410 received packets to the corresponding units in the DPC 420 Further. For example, packets that are assigned to a vertex can be sent to the primitive engine 435 are forwarded, which is designed so that they vertex attributes, which are assigned to the vertex, from the memory 304 retrieves. In contrast, packets that are connected to a shader program can be sent to the SM 440 be transmitted.

Der SM 440 umfasst einen programmierbaren Streaming-Prozessor, der so ausgestaltet ist, dass er Aufgaben abarbeitet, die durch eine Anzahl von Threads repräsentiert werden. Jeder SM 440 ist Multi-Thread-fähig und so ausgestaltet, dass er eine Vielzahl von Threads (z. B. 32 Threads) aus einer bestimmten Gruppe von Threads gleichzeitig ausführen kann. In einer Ausführungsform implementiert der SM 440 eine SIMD-Architektur (Single-Instruction, Multiple-Data), bei der jeder Thread in einer Gruppe von Threads (d. h. ein Warp) so ausgestaltet ist, dass er einen anderen Satz von Daten auf der Grundlage desselben Satzes von Anweisungen verarbeitet. Alle Threads in der Gruppe von Threads führen die gleichen Anweisungen aus. In einer anderen Ausführungsform implementiert der SM 440 eine SIMT-Architektur (Single-Instruction, Multiple Thread), bei der jeder Thread in einer Gruppe von Threads so ausgestaltet ist, dass er einen anderen Datensatz auf der Grundlage desselben Befehlssatzes verarbeitet, wobei jedoch einzelne Threads in der Gruppe von Threads während der Ausführung divergieren dürfen. In einer Ausführungsform werden ein Programmzähler, ein Aufrufstack und ein Ausführungsstatus für jeden Warp geführt, was eine Gleichzeitigkeit zwischen Warps und eine serielle Ausführung innerhalb von Warps ermöglicht, wenn Threads innerhalb des Warps divergieren. In einer anderen Ausführungsform werden ein Programmzähler, ein Aufrufstack und ein Ausführungsstatus für jeden einzelnen Thread geführt, was eine gleiche Gleichzeitigkeit zwischen allen Threads innerhalb und zwischen Warps ermöglicht. Wenn der Ausführungsstatus für jeden einzelnen Thread geführt wird, können Threads, die dieselben Anweisungen ausführen, zusammengeführt und parallel ausgeführt werden, um eine maximale Effizienz zu erzielen. Der SM 440 wird weiter unten in Verbindung mit 5A ausführlicher beschrieben.The SM 440 comprises a programmable streaming processor which is designed to process tasks represented by a number of threads. Every SM 440 is multi-thread capable and designed in such a way that it can execute a large number of threads (e.g. 32 threads) from a specific group of threads at the same time. In one embodiment, the SM 440 a single-instruction, multiple-data (SIMD) architecture in which each thread in a group of threads (ie, a warp) is designed to process a different set of data based on the same set of instructions. All threads in the group of threads execute the same instructions. In another embodiment, the SM 440 a SIMT (single instruction, multiple thread) architecture in which each thread in a group of threads is designed to process a different data set based on the same instruction set, but with individual threads in the group of threads during execution may diverge. In one embodiment, a program counter, a call stack, and an execution status are maintained for each warp, indicating simultaneity between warps and a Enables serial execution within warps when threads diverge within the warp. In another embodiment, a program counter, a call stack and an execution status are kept for each individual thread, which enables equal simultaneity between all threads within and between warps. By keeping the execution status for each individual thread, threads executing the same instructions can be merged and run in parallel for maximum efficiency. The SM 440 will be discussed below in conjunction with 5A described in more detail.

Die MMU 490 bildet eine Schnittstelle zwischen dem GPC 350 und der Partitionseinheit 380. Die MMU 490 kann die Übersetzung virtueller Adressen in physikalische Adressen, den Speicherschutz und die Konkurrenzbereinigung von Speicheranforderungen übernehmen. In einer Ausführungsform stellt die MMU 490 einen oder mehrere Übersetzungs-Lookaside-Puffer (TLBs) bereit, um die Übersetzung von virtuellen Adressen in physikalische Adressen im Speicher 304 durchzuführen.The MMU 490 forms an interface between the GPC 350 and the partition unit 380 . The MMU 490 can handle the translation of virtual addresses into physical addresses, memory protection and the cleanup of memory requests. In one embodiment, the MMU 490 one or more translation lookaside buffers (TLBs) ready to handle the translation of virtual addresses into physical addresses in memory 304 perform.

4B stellt eine Speicherpartitionseinheit 380 der PPU 300 aus 3 gemäß einer Ausführungsform dar. Wie in 4B dargestellt ist, weist die Speicherpartitionseinheit 380 eine Rasteroperationseinheit (ROP) 450, einen Level-2-Cache (L2) 460 und eine Speicherschnittstelle 470 auf. Die Speicherschnittstelle 470 ist mit dem Speicher 304 gekoppelt. Die Speicherschnittstelle 470 kann 32-, 64-, 128-, 1024-Bit-Datenbusse oder Ähnliches für die Hochgeschwindigkeitsdatenübertragung implementieren. In einer Ausführungsform verfügt die PPU 300 über U Speicherschnittstellen 470, eine Speicherschnittstelle 470 pro Paar von Partitionseinheiten 380, wobei jedes Paar von Partitionseinheiten 380 mit einer entsprechenden Einrichtung des Speichers 304 verbunden ist. Beispielsweise kann die PPU 300 mit bis zu Y Speichereinrichtungen 304 verbunden sein, wie z. B. Speicherstacks mit hoher Bandbreite oder Grafikspeicher mit doppelter Datenrate, Version 5, synchronem dynamischem Direktzugriffsspeicher oder anderen Arten von persistenten Speichern. 4B represents a storage partition unit 380 the PPU 300 the end 3 according to one embodiment. As in 4B is shown, has the memory partition unit 380 a raster operation unit (ROP) 450 , a level 2 cache (L2) 460 and a memory interface 470 on. The storage interface 470 is with the memory 304 coupled. The storage interface 470 can implement 32-, 64-, 128-, 1024-bit data buses or the like for high-speed data transfer. In one embodiment, the PPU has 300 via U memory interfaces 470 , a memory interface 470 per pair of partition units 380 , where each pair of partition units 380 with a corresponding setup of the memory 304 connected is. For example, the PPU 300 with up to Y storage devices 304 be connected, such as B. Memory stacks with high bandwidth or graphics memory with double data rate, version 5 , synchronous dynamic random access storage, or other types of persistent storage.

In einer Ausführungsform implementiert die Speicherschnittstelle 470 eine HBM2-Speicherschnittstelle und Y entspricht der Hälfte von U. In einer Ausführungsform befindet sich der HBM2-Speicherstack in demselben physischen Gehäuse oder Baugruppe wie die PPU 300, was im Vergleich zu herkömmlichen GDDR5-SDRAM-Systemen erhebliche Energie- und Flächeneinsparungen ermöglicht. In einer Ausführungsform weist jeder HBM2-Stack vier Speicherchips auf und Y ist gleich 4, wobei der HBM2-Stack zwei 128-Bit-Kanäle pro Chip für insgesamt 8 Kanäle und eine Datenbusbreite von 1024 Bit aufweist.In one embodiment, implements the memory interface 470 an HBM2 memory interface and Y is half of U. In one embodiment, the HBM2 memory stack is in the same physical chassis or assembly as the PPU 300 which enables considerable energy and space savings compared to conventional GDDR5 SDRAM systems. In one embodiment, each HBM2 stack has four memory chips and Y is equal to 4, the HBM2 stack having two 128-bit channels per chip for a total of 8 channels and a data bus width of 1024 bits.

In einer Ausführungsform unterstützt der Speicher 304 den Single-Error Correcting Double-Error Detecting (SECDED) Error Correction Code (ECC) zum Schutz der Daten. ECC bietet eine höhere Zuverlässigkeit für Datenverarbeitungsanwendungen, die empfindlich auf Datenverfälschungen reagieren. Zuverlässigkeit ist besonders wichtig in großen Cluster-Rechen-Umgebungen, in denen die PPUs 300 sehr große Datensätze verarbeiten und/oder Anwendungen über längere Zeiträume laufen lassen.In one embodiment, the memory supports 304 the Single-Error Correcting Double-Error Detecting (SECDED) Error Correction Code (ECC) to protect the data. ECC provides higher reliability for data processing applications that are sensitive to data corruption. Reliability is especially important in large cluster computing environments where the PPUs 300 process very large data sets and / or run applications for long periods of time.

In einer Ausführungsform implementiert die PPU 300 eine mehrstufige Speicherhierarchie. In einer Ausführungsform unterstützt die Speicherpartitionierungseinheit 380 einen einheitlichen Speicher, um einen einzigen einheitlichen virtuellen Adressraum für den CPU- und PPU 300-Speicher bereitzustellen, was die gemeinsame Nutzung von Daten zwischen virtuellen Speichersystemen ermöglicht. In einer Ausführungsform wird die Häufigkeit von Zugriffen einer PPU 300 auf Speicher, der sich auf anderen Prozessoren befindet, verfolgt, um sicherzustellen, dass Speicherseiten in den physischen Speicher der PPU 300 verschoben werden, die häufiger auf die Seiten zugreift. In einer Ausführungsform unterstützt der NVLink 310 Adressübersetzungsdienste, die es der PPU 300 ermöglichen, direkt auf die Seitentabellen einer CPU zuzugreifen, und der PPU 300 vollen Zugriff auf den CPU-Speicher zu ermöglichen.In one embodiment, the PPU implements 300 a tiered storage hierarchy. In one embodiment, the memory partitioning unit supports 380 a unified memory to provide a single unified virtual address space for the CPU and PPU 300 memory, which enables the sharing of data between virtual memory systems. In one embodiment, the frequency of accesses by a PPU 300 on memory that is on other processors is tracked to ensure that pages are in the physical memory of the PPU 300 that accesses the pages more often. In one embodiment, the NVLink supports 310 Address translation services that make it the PPU 300 allow direct access to the side tables of a CPU and the PPU 300 allow full access to the CPU memory.

In einer Ausführungsform übertragen Kopier-Engines Daten zwischen mehreren PPUs 300 oder zwischen PPUs 300 und CPUs. Die Kopier-Engines können Seitenfehler für Adressen erzeugen, die nicht in den Seitentabellen abgebildet sind. Die Speicherpartitionierungseinheit 380 kann dann die Seitenfehler bearbeiten und die Adressen in der Seitentabelle abbilden, woraufhin die Kopier-Engine die Übertragung durchführen kann. In einem herkömmlichen System wird der Speicher für mehrere Kopiervorgänge zwischen mehreren Prozessoren gepinnt (d. h. er ist nicht auslagerbar), wodurch der verfügbare Speicher erheblich reduziert wird. Mit Hardware-Seitenfehlern (page faulting) können Adressen an die Kopier-Engines übergeben werden, ohne sich Gedanken darüber zu machen, ob die Speicherseiten resident sind, und der Kopiervorgang ist transparent.In one embodiment, copy engines transfer data between multiple PPUs 300 or between PPUs 300 and CPUs. The copy engines can generate page faults for addresses that are not mapped in the page tables. The storage partitioning unit 380 can then process the page faults and map the addresses in the page table, whereupon the copy engine can perform the transfer. In a conventional system, for multiple copy operations, memory is pinned between multiple processors (that is, it cannot be paged out), which significantly reduces available memory. Hardware page faulting allows addresses to be passed to the copy engines without worrying about whether the memory pages are resident, and the copying process is transparent.

Daten aus dem Speicher 304 oder einem anderen Systemspeicher können von der Speicherpartitionseinheit 380 abgerufen und im L2-Cache 460 gespeichert werden, der sich auf dem Chip befindet und von den verschiedenen GPCs 350 gemeinsam genutzt wird. Wie dargestellt ist, weist jede Speicherpartitionseinheit 380 einen Abschnitt des L2-Caches 460 auf, der einem entsprechenden Speicher 304 zugeordnet ist. Caches der unteren Ebene können dann in verschiedenen Einheiten innerhalb der GPCs 350 implementiert sein. Zum Beispiel kann jeder der SMs 440 einen Cache der Ebene Eins (L1) implementieren. Der L1-Cache ist ein privater Speicher, der für einen bestimmten SM 440 bestimmt ist. Daten aus dem L2-Cache 460 können abgerufen und in jedem der L1-Caches zur Verarbeitung in den Funktionseinheiten der SMs 440 gespeichert werden. Der L2-Cache 460 ist mit der Speicherschnittstelle 470 und dem Koppelfeld 370 gekoppelt.Data from memory 304 or other system memory can be used by the memory partition unit 380 retrieved and in L2 cache 460 stored on the chip and by the various GPCs 350 is shared. As shown, each memory partition unit has 380 a portion of the L2 cache 460 on that of a corresponding memory 304 assigned. Caches the lower level can then be in different units within the GPCs 350 be implemented. For example, each of the SMs 440 implement a level one (L1) cache. The L1 cache is private storage that is used for a specific SM 440 is determined. Data from the L2 cache 460 can be retrieved and stored in each of the L1 caches for processing in the functional units of the SMs 440 get saved. The L2 cache 460 is with the memory interface 470 and the switching matrix 370 coupled.

Die ROP-Einheit 450 führt Grafikrasteroperationen durch, die sich auf die Pixelfarbe beziehen, wie z. B. Farbkomprimierung, Pixel-Blending und Ähnliches. Die ROP-Einheit 450 implementiert auch eine Tiefenprüfung in Verbindung mit der Raster-Engine 425, indem sie eine Tiefe für eine Abtaststelle, die mit einem Pixelfragment verbunden ist, von der Culling-Engine der Raster-Engine 425 empfängt. Die Tiefe wird gegen eine entsprechende Tiefe in einem Tiefenpuffer für eine dem Fragment zugeordnete Abtastposition getestet. Wenn das Fragment den Tiefentest für die Abtastposition besteht, aktualisiert die ROP-Einheit 450 den Tiefenpuffer und überträgt ein Ergebnis des Tiefentests an die Raster-Engine 425. Es wird deutlich, dass die Anzahl der Partitionseinheiten 380 von der Anzahl der GPCs 350 abweichen kann und daher jede ROP-Einheit 450 mit jedem der GPCs 350 gekoppelt sein kann. Die ROP-Einheit 450 verfolgt die von den verschiedenen GPCs 350 empfangenen Pakete und bestimmt, an welchen GPC 350 ein von der ROP-Einheit 450 erzeugtes Ergebnis über das Koppelfeld 370 weitergeleitet wird. Obwohl die ROP-Einheit 450 in 4B innerhalb der Speicherpartitionseinheit 380 ausgewiesen ist, kann sie bei anderen Ausführungen auch außerhalb der Speicherpartitionseinheit 380 liegen. Zum Beispiel kann sich die ROP-Einheit 450 in dem GPC 350 oder einer anderen Einheit befinden.The ROP unit 450 performs graphics raster operations related to pixel color, such as B. color compression, pixel blending and the like. The ROP unit 450 also implements an in-depth check in conjunction with the raster engine 425 by getting a depth for a sample location associated with a pixel fragment from the raster engine's culling engine 425 receives. The depth is tested against a corresponding depth in a depth buffer for a sample position associated with the fragment. If the fragment passes the scan position depth test, the ROP unit updates 450 the depth buffer and transmits a result of the depth test to the raster engine 425 . It becomes clear that the number of partition units 380 on the number of GPCs 350 may differ and therefore every ROP unit 450 with each of the GPCs 350 can be coupled. The ROP unit 450 tracked by the various GPCs 350 received packets and determines which GPC 350 one from the ROP unit 450 generated result via the switching matrix 370 is forwarded. Although the ROP unit 450 in 4B within the storage partition unit 380 is shown, it can also be outside of the memory partition unit in other versions 380 lie. For example, the ROP unit can be 450 in the GPC 350 or another unit.

5A veranschaulicht den Streaming-Multiprozessor 440 aus 4A gemäß einer Ausführungsform. Wie in 5A dargestellt ist, weist der SM 440 einen Befehls-Cache 505, eine oder mehrere Scheduler-Einheiten 510, eine Registerdatei 520, einen oder mehrere Verarbeitungskerne 550, eine oder mehrere Spezialfunktionseinheiten (SFUs) 552, eine oder mehrere Lade-/Speichereinheiten (LSUs) 554, ein Verbindungsnetzwerk 580 und einen gemeinsamen Speicher/L1-Cache 570 auf. 5A illustrates the streaming multiprocessor 440 the end 4A according to one embodiment. As in 5A is shown, the SM 440 an instruction cache 505 , one or more scheduler units 510 , a register file 520 , one or more processing cores 550 , one or more special functional units (SFUs) 552 , one or more load / storage units (LSUs) 554 , an interconnection network 580 and a shared memory / L1 cache 570 on.

Wie vorab beschrieben ist, verteilt die Arbeitsverteilungseinheit 325 Aufgaben zur Ausführung auf den GPCs 350 der PPU 300. Die Aufgaben werden einem bestimmten DPC 420 innerhalb eines GPC 350 zugewiesen und, wenn die Aufgabe mit einem Shader-Programm verbunden ist, kann die Aufgabe einem SM 440 zugewiesen werden. Die Scheduler-Einheit 510 empfängt die Aufgaben von der Arbeitsverteilungseinheit 325 und verwaltet die Befehlsplanung für einen oder mehrere Thread-Blöcke, die dem SM 440 zugewiesen sind. Die Scheduler-Einheit 510 plant Thread-Blöcke für die Ausführung als Warps von parallelen Threads, wobei jedem Thread-Block mindestens ein Warp zugewiesen ist. In einer Ausführungsform führt jeder Warp 32 Threads aus. Die Scheduler-Einheit 510 kann eine Vielzahl verschiedener Thread-Blöcke verwalten, indem sie die Warps den verschiedenen Thread-Blöcken zuweist und dann während jedes Taktzyklus Anweisungen aus der Vielzahl verschiedener kooperativer Gruppen an die verschiedenen Funktionseinheiten (d. h. Kerne 550, SFUs 552 und LSUs 554) verteilt.As described above, the work distribution unit distributes 325 Tasks to be executed on the GPCs 350 the PPU 300 . The tasks are assigned to a specific DPC 420 within a GPC 350 and, if the task is linked to a shader program, the task can be assigned to an SM 440 be assigned to. The scheduler unit 510 receives the tasks from the work distribution unit 325 and manages command scheduling for one or more thread blocks assigned to the SM 440 are assigned. The scheduler unit 510 plans thread blocks for execution as warps of parallel threads, with at least one warp assigned to each thread block. In one embodiment, each warp executes 32 threads. The scheduler unit 510 can manage a multitude of different thread blocks by assigning the warps to the different thread blocks and then during each clock cycle instructions from the multitude of different cooperative groups to the different functional units (i.e. cores 550 , SFUs 552 and LSUs 554 ) distributed.

Kooperative Gruppen ist ein Programmiermodell zum Organisieren von Gruppen kommunizierender Threads, das es Entwicklern ermöglicht, die Granularität auszudrücken, mit der Threads kommunizieren, und so reichhaltigere, effizientere parallele Dekompositionen zu ermöglichen. Die APIs für den kooperativen Start unterstützen die Synchronisierung zwischen Thread-Blöcken für die Ausführung paralleler Algorithmen. Konventionelle Programmiermodelle bieten ein einziges, einfaches Konstrukt für die Synchronisierung kooperierender Threads: eine Sperre über alle Threads eines Thread-Blocks (d. h. die Funktion syncthreads( )). Programmierer möchten jedoch oft Gruppen von Threads mit einer kleineren Granularität als Thread-Blöcke definieren und innerhalb der definierten Gruppen synchronisieren, um eine höhere Leistung, Designflexibilität und Software-Wiederverwendung in Form von kollektiven gruppenweiten Funktionsschnittstellen zu ermöglichen.Cooperative Groups is a programming model for organizing groups of communicating threads that allows developers to express the granularity with which threads communicate, enabling richer, more efficient parallel decompositions. The Cooperative Start APIs support synchronization between thread blocks for running parallel algorithms. Conventional programming models offer a single, simple construct for synchronizing cooperating threads: a lock over all threads of a thread block (i.e. the syncthreads () function). However, programmers often want to define groups of threads with a smaller granularity than thread blocks and synchronize them within the defined groups in order to enable higher performance, design flexibility and software reuse in the form of collective group-wide functional interfaces.

Kooperative Gruppen ermöglicht es Programmierern, Gruppen von Threads explizit auf Sub-Block- (d. h. so klein wie ein einzelner Thread) und Multi-Block-Granularität zu definieren und kollektive Operationen wie eine Synchronisation auf den Threads in einer kooperativen Gruppe durchzuführen. Das Programmiermodell unterstützt eine saubere Komposition über Software-Grenzen hinweg, so dass Bibliotheken und Utility-Funktionen innerhalb ihres lokalen Kontexts sicher synchronisieren können, ohne Annahmen über eine Konvergenz treffen zu müssen. Die Primitive für kooperative Gruppen ermöglichen neue Muster der kooperativen Parallelität, einschließlich Producer-Consumer-Parallelität, opportunistischer Parallelität und globaler Synchronisierung über ein ganzes Netz von Thread-Blöcken.Cooperative groups allow programmers to explicitly define groups of threads on sub-block (i.e., as small as a single thread) and multi-block granularity, and to perform collective operations such as synchronization on the threads in a cooperative group. The programming model supports a clean composition across software boundaries so that libraries and utility functions can safely synchronize within their local context without having to make assumptions about convergence. The cooperative group primitives enable new patterns of cooperative parallelism, including producer-consumer parallelism, opportunistic parallelism, and global synchronization across a network of thread blocks.

Eine Dispatch-Einheit 515 ist ausgestaltet, um Anweisungen an eine oder mehrere der Funktionseinheiten zu übertragen. In der Ausführungsform weist die Scheduler-Einheit 510 zwei Dispatch-Einheiten 515 auf, die es ermöglichen, dass in jedem Taktzyklus zwei verschiedene Anweisungen aus demselben Warp abgewickelt werden können. In alternativen Ausführungsformen kann jede Scheduler-Einheit 510 eine einzelne Dispatch-Einheit 515 oder zusätzliche Dispatch-Einheiten 515 aufweisen.A dispatch unit 515 is designed to transmit instructions to one or more of the functional units. In the embodiment, the scheduler unit 510 two dispatch units 515 that allow two different instructions from the same warp to be processed in each clock cycle. In alternative embodiments, each scheduler unit 510 a single dispatch unit 515 or additional dispatch units 515 exhibit.

Jeder SM 440 weist eine Registerdatei 520 auf, die einen Satz von Registern für die Funktionseinheiten des SM 440 bereitstellt. In einer Ausführungsform ist die Registerdatei 520 zwischen den einzelnen Funktionseinheiten aufgeteilt, so dass jeder Funktionseinheit ein eigener Abschnitt der Registerdatei 520 zugewiesen ist. In einer anderen Ausführungsform wird die Registerdatei 520 zwischen den verschiedenen Warps aufgeteilt, die von dem SM 440 ausgeführt werden. Die Registerdatei 520 dient als Zwischenspeicher für Operanden, die mit den Datenpfaden der Funktionseinheiten verbunden sind.Every SM 440 assigns a register file 520 containing a set of registers for the functional units of the SM 440 provides. In one embodiment, the register file is 520 split between the individual functional units so that each functional unit has its own section of the register file 520 assigned. In another embodiment, the register file 520 split between the various warps used by the SM 440 are executed. The register file 520 serves as a buffer for operands that are connected to the data paths of the functional units.

Jeder SM 440 umfasst L Verarbeitungskerne 550. In einer Ausführungsform weist der SM 440 eine große Anzahl (z. B. 128 usw.) verschiedener Verarbeitungskerne 550 auf. Jeder Kern 550 kann eine Verarbeitungseinheit, die vollständig hintereinander ausführt, mit einfacher Präzision, doppelter Präzision und/oder gemischter Präzision aufweisen, die eine arithmetische Gleitkomma-Logikeinheit und eine arithmetische Ganzzahl-Logikeinheit umfasst. In einer Ausführungsform implementieren die arithmetischen Fließkomma-Logikeinheiten den Standard IEEE 754-2008 für Fließkomma-Arithmetik. In einer Ausführungsform weisen die Kerne 550 64 Gleitkomma-Kerne mit einfacher Genauigkeit (32 Bit), 64 Ganzzahl-Kerne, 32 Gleitkomma-Kerne mit doppelter Genauigkeit (64 Bit) und 8 Tensor-Kerne auf.Every SM 440 includes L processing cores 550 . In one embodiment, the SM 440 a large number (e.g. 128 etc.) of various processing cores 550 on. Every core 550 may include a single precision, double precision, and / or mixed precision processing unit that is fully sequential and includes a floating point arithmetic logic unit and an integer arithmetic logic unit. In one embodiment, the floating point arithmetic logic units implement the IEEE 754-2008 standard for floating point arithmetic. In one embodiment, the cores have 550 64 single-precision (32-bit) floating-point cores, 64 integer cores, 32 double-precision (64-bit) floating-point cores, and 8 tensor cores.

Tensor-Kerne sind für die Durchführung von Matrixoperationen ausgestaltet, und in einer Ausführungsform sind ein oder mehrere Tensor-Kerne in den Kernen 550 enthalten. Insbesondere sind die Tensor-Kerne so ausgestaltet, dass sie eine Deep-Learning-Matrix-Arithmetik durchführen, wie z. B. GEMM (Matrix-Matrix-Multiplikation) für Faltungsoperationen während des Trainings und der Inferenz von neuronalen Netzen. In einer Ausführungsform arbeitet jeder Tensorkern mit einer 4x4-Matrix und führt eine Matrix-Multiplikations- und Akkumulationsoperation D=AB+C durch, wobei A, B, C und D 4x4-Matrizen sind.Tensor kernels are designed to perform matrix operations, and in one embodiment one or more tensor kernels are in the kernels 550 contain. In particular, the tensor cores are designed so that they perform deep learning matrix arithmetic, such as B. GEMM (Matrix-Matrix-Multiplication) for convolution operations during training and inference of neural networks. In one embodiment, each tensor kernel operates on a 4x4 matrix and performs a matrix multiply and accumulate operation D = AB + C, where A, B, C and D are 4x4 matrices.

In einer Ausführungsform können die Matrixmultiplikationseingaben A und B Ganzzahl-, Festkomma- oder Fließkommamatrizen sein, während die Akkumulationsmatrizen C und D Ganzzahl-, Festkomma- oder Fließkommamatrizen mit gleicher oder höherer Bitbreite sein können. In einer Ausführungsform arbeiten Tensorkerne mit ein-, vier- oder acht-Bit-Ganzzahl-Eingangsdaten mit 32-Bit-Ganzzahl-Akkumulation. Die 8-Bit-Ganzzahl-Matrix-Multiplikation erfordert 1024 Operationen und ergibt ein Produkt mit voller Genauigkeit, das dann mit 32-Bit-Ganzzahl-Addition mit den anderen Zwischenprodukten für eine 8x8x16-Matrix-Multiplikation akkumuliert wird. In einer Ausführungsform arbeiten die Tensorkerne mit 16-Bit-Gleitkomma-Eingabedaten mit 32-Bit-Gleitkomma-Akkumulation. Die 16-Bit-Gleitkomma-Multiplikation erfordert 64 Operationen und ergibt ein Produkt mit voller Genauigkeit, das dann mittels 32-Bit-Gleitkomma-Addition mit den anderen Zwischenprodukten für eine 4x4x4-Matrixmultiplikation akkumuliert wird. In der Praxis werden Tensorkerne verwendet, um viel größere zweidimensionale oder höherdimensionale Matrixoperationen durchzuführen, die aus diesen kleineren Elementen aufgebaut sind. Eine API, wie z. B. die CUDA 9 C++ API, stellt spezialisierte Matrix-Lade-, Matrix-Multiplikations- und Akkumulations- und Matrix-Speicher-Operationen zur Verfügung, um Tensorkerne effizient von einem CUDA-C++ Programm aus zu nutzen. Auf CUDA-Ebene geht die Schnittstelle auf Warp-Ebene von Matrizen der Größe 16x16 aus, die sich über alle 32 Threads des Warps erstrecken.In one embodiment, the matrix multiplication inputs A and B can be integer, fixed point, or floating point matrices, while the accumulation matrices C and D can be integer, fixed point, or floating point matrices of equal or greater bit width. In one embodiment, tensor cores operate on one-, four-, or eight-bit integer input data with 32-bit integer accumulation. The 8-bit integer matrix multiplication requires 1024 operations and gives a full precision product which is then accumulated with 32-bit integer addition with the other intermediate products for an 8x8x16 matrix multiplication. In one embodiment, the tensor cores operate on 16-bit floating point input data with 32-bit floating point accumulation. The 16-bit floating point multiplication requires 64 operations and gives a product with full precision, which is then accumulated using 32-bit floating point addition with the other intermediate products for a 4x4x4 matrix multiplication. In practice, tensor kernels are used to perform much larger two-dimensional or higher-dimensional matrix operations built from these smaller elements. An API such as B. the CUDA 9 C ++ API, provides specialized matrix load, matrix multiplication and accumulation and matrix memory operations to use tensor cores efficiently from a CUDA-C ++ program. At the CUDA level, the interface at the warp level assumes 16x16 matrices that span all 32 threads of the warp.

Jeder SM 440 umfasst auch M SFUs 552, die spezielle Funktionen ausführen (z. B. Attributauswertung, reziproke Quadratwurzel und dergleichen). In einer Ausführungsform können die SFUs 552 eine Baumtraversierungseinheit aufweisen, die so ausgestaltet ist, dass sie eine hierarchische Baumdatenstruktur durchläuft. In einer Ausführungsform können die SFUs 552 eine Textureinheit aufweisen, die so ausgestaltet ist, dass sie Filteroperationen für die Texturabbildung durchführt. In einer Ausführungsform sind die Textureinheiten so ausgestaltet, dass sie Texturkarten (z. B. ein 2D-Array von Texeln) aus dem Speicher 304 laden und die Texturkarten abtasten, um abgetastete Texturwerte zur Verwendung in von der SM 440 ausgeführten Shader-Programmen zu erzeugen. In einer Ausführungsform werden die Texturkarten im gemeinsamen Speicher/L1-Cache 470 gespeichert. Die Textureinheiten implementieren Texturoperationen, wie z. B. Filteroperationen unter Verwendung von Mip-Maps (d. h. Texturkarten mit unterschiedlichen Detailstufen). In einer Ausführungsform weist jeder SM 340 zwei Textureinheiten auf.Every SM 440 also includes M SFUs 552 that perform special functions (e.g. attribute evaluation, reciprocal square root, and the like). In one embodiment, the SFUs 552 comprise a tree traversing unit which is configured to traverse a hierarchical tree data structure. In one embodiment, the SFUs 552 have a texture unit which is configured to perform filter operations for the texture mapping. In one embodiment, the texture units are designed such that they can get texture maps (e.g. a 2D array of texels) from the memory 304 load and scan the texture maps to retrieve scanned texture values for use in by the SM 440 to generate executed shader programs. In one embodiment, the texture maps are stored in shared memory / L1 cache 470. The texture units implement texture operations such as B. Filter operations using mip maps (ie texture maps with different levels of detail). In one embodiment, each SM 340 two texture units.

Jeder SM 440 umfasst auch N LSUs 554, die Lade- und Speicheroperationen zwischen dem gemeinsamen Speicher/L1-Cache 570 und der Registerdatei 520 durchführen. Jeder SM 440 weist ein Verbindungsnetzwerk 580 auf, das jede der Funktionseinheiten mit der Registerdatei 520 und die LSU 554 mit der Registerdatei 520 und dem gemeinsam genutzten Speicher/L1-Cache 570 verbindet. In einer Ausführungsform ist das Verbindungsnetzwerk 580 ein Koppelfeld, das so ausgestaltet werden kann, dass es jede der Funktionseinheiten mit jedem der Register in der Registerdatei 520 verbindet und die LSUs 554 mit der Registerdatei und Speicherplätzen im gemeinsam genutzten Speicher/L1-Cache 570 verbindet.Every SM 440 also includes N LSUs 554 , the load and store operations between the shared memory / L1 cache 570 and the register file 520 carry out. Every SM 440 assigns an interconnection network 580 that each of the functional units with the register file 520 and the LSU 554 with the register file 520 and the shared memory / L1 cache 570 connects. In one embodiment, the interconnection network is 580 a switching matrix that can be configured to accommodate any of the Functional units with each of the registers in the register file 520 connects and the LSUs 554 with the register file and locations in the shared memory / L1 cache 570 connects.

Der gemeinsam genutzte Speicher/L1-Cache 570 ist ein Array von On-Chip-Speicher, der die Datenspeicherung und Kommunikation zwischen dem SM 440 und der Primitiv-Engine 435 sowie zwischen Threads in dem SM 440 ermöglicht. In einer Ausführungsform umfasst der gemeinsame Speicher/L1-Cache 570 128 KB Speicherkapazität und befindet sich im Pfad von dem SM 440 zu der Partitionseinheit 380. Der gemeinsame Speicher/L1-Cache 570 kann zum Zwischenspeichern von Lese- und Schreibvorgängen verwendet werden. Einer oder mehrere des gemeinsamen Speichers/L1-Cache 570, des L2-Cache 460 und des Speichers 304 sind Sicherungsspeicher.The shared memory / L1 cache 570 is an array of on-chip memory that provides data storage and communication between the SM 440 and the primitive engine 435 as well as between threads in the SM 440 enables. In one embodiment, the shared memory includes / L1 cache 570 128 KB of storage space and is located in the path of the SM 440 to the partition unit 380 . The shared memory / L1 cache 570 can be used for caching reads and writes. One or more of the shared memory / L1 cache 570 , the L2 cache 460 and memory 304 are backup storage.

Die Kombination von Daten-Cache und Funktionalität eines gemeinsamen Speichers in einem einzigen Speicherblock bietet die beste Gesamtleistung für beide Arten von Speicherzugriffen. Die Kapazität ist als Cache für Programme nutzbar, die keinen gemeinsamen Speicher verwenden. Wenn z. B. der gemeinsame Speicher so ausgestaltet ist, dass die Hälfte der Kapazität genutzt wird, können Textur- und Lade-/Speicheroperationen die verbleibende Kapazität nutzen. Durch die Integration in den gemeinsam genutzten Speicher/L1-Cache 570 kann der gemeinsam genutzte Speicher/L1-Cache 570 als durchsatzstarke Leitung für Streaming-Daten fungieren und gleichzeitig einen Zugriff mit hoher Bandbreite und geringer Latenz auf häufig wiederverwendete Daten ermöglichen.The combination of data cache and shared memory functionality in a single memory block provides the best overall performance for both types of memory access. The capacity can be used as a cache for programs that do not use shared memory. If z. For example, if the shared memory is designed so that half of the capacity is used, texture and load / store operations can use the remaining capacity. By integrating with the shared memory / L1 cache 570 can use shared memory / L1 cache 570 Act as a high-throughput line for streaming data while providing high-bandwidth, low-latency access to frequently reused data.

Wenn er für allgemeine parallele Berechnungen ausgestaltet ist, kann eine einfachere Konfiguration im Vergleich zur Grafikverarbeitung verwendet werden. Insbesondere werden die in 3 gezeigten Grafikverarbeitungseinheiten mit festen Funktionen umgangen, wodurch ein viel einfacheres Programmiermodell entsteht. In der Konfiguration für allgemeine parallele Berechnungen weist die Arbeitsverteilungseinheit 325 Blöcke von Threads zu und verteilt sie direkt an die DPCs 420. Die Threads in einem Block führen dasselbe Programm aus, wobei eine eindeutige Thread-ID in der Berechnung verwendet wird, um sicherzustellen, dass jeder Thread eindeutige Ergebnisse erzeugt, wobei der SM 440 zur Ausführung des Programms und zur Durchführung von Berechnungen, der gemeinsame Speicher/L1-Cache 570 zur Kommunikation zwischen den Threads und die LSU 554 zum Lesen und Schreiben des globalen Speichers über den gemeinsamen Speicher/L1-Cache 570 und die Speicherpartitionseinheit 380 verwendet werden. Wenn er für allgemeine parallele Berechnungen ausgestaltet ist, kann der SM 440 auch Befehle schreiben, die die Scheduler-Einheit 320 verwenden kann, um neue Arbeit auf den DPCs 420 zu starten.If it is designed for general parallel computation, a simpler configuration can be used compared to graphics processing. In particular, the in 3 The graphic processing units shown with fixed functions are bypassed, resulting in a much simpler programming model. In the configuration for general parallel calculations, the work distribution unit 325 Blocks of threads and distributes them directly to the DPCs 420 . The threads in a block run the same program, using a unique thread ID in the calculation to ensure that each thread produces unique results, with the SM 440 for executing the program and performing calculations, the shared memory / L1 cache 570 for communication between the threads and the LSU 554 for reading and writing the global memory via the shared memory / L1 cache 570 and the storage partition unit 380 be used. When designed for general parallel computations, the SM 440 also write commands that the scheduler unit 320 can use to do new work on the DPCs 420 to start.

Die PPUs 300 können jeweils einen oder mehrere Verarbeitungskerne und/oder Komponenten davon aufweisen und/oder so ausgestaltet sein, dass sie die Funktionen eines oder mehrerer Verarbeitungskerne und/oder Komponenten davon ausführen, wie z. B. Tensorkerne bzw. Tensor Cores (TCs), Tensor Processing Units (TPUs), Pixel Visual Cores (PVCs), Ray Tracing (RT) Cores, Vision Processing Units (VPUs), Graphics Processing Clusters (GPCs), Texture Processing Clusters (TPCs), Streaming Multiprocessors (SMs), Tree Traversal Units (TTUs), Artificial Intelligence Accelerators (AlAs), Deep Learning Accelerators (DLAs), Arithmetik-Logik-Einheiten (ALUs), anwendungsspezifische integrierte Schaltungen (ASICs), Fließkomma-Einheiten (FPUs), Ein-/Ausgabe-Elemente (I/Os), Peripheral Component Interconnect (PCI)- oder Peripheral Component Interconnect Express (PCIe)-Elemente und/oder dergleichen.The PPUs 300 can each have one or more processing cores and / or components thereof and / or be designed so that they perform the functions of one or more processing cores and / or components thereof, such as. B. Tensor Cores (TCs), Tensor Processing Units (TPUs), Pixel Visual Cores (PVCs), Ray Tracing (RT) Cores, Vision Processing Units (VPUs), Graphics Processing Clusters (GPCs), Texture Processing Clusters ( TPCs), Streaming Multiprocessors (SMs), Tree Traversal Units (TTUs), Artificial Intelligence Accelerators (AlAs), Deep Learning Accelerators (DLAs), Arithmetic Logic Units (ALUs), Application Specific Integrated Circuits (ASICs), Floating Point Units ( FPUs), input / output elements (I / Os), Peripheral Component Interconnect (PCI) or Peripheral Component Interconnect Express (PCIe) elements and / or the like.

Die PPU 300 kann in einem Desktop-Computer, einem Laptop-Computer, einem Tablet-Computer, Servern, Supercomputern, einem Smartphone (z. B. einer drahtlosen, in der Hand gehaltenen Einrichtung), einem persönlichen digitalen Assistenten (PDA), einer Digitalkamera, einem Fahrzeug, einer am Kopf angebrachten Anzeige bzw. einem Head mounted Display, einer in der Hand gehaltenen elektronischen Einrichtung und Ähnlichem vorhanden sein. In einer Ausführungsform ist die PPU 300 auf einem einzigen Halbleitersubstrat ausgeführt. Bei einer anderen Ausführungsform ist die PPU 300 in einem System-on-a-Chip (SoC) zusammen mit einer oder mehreren anderen Einrichtungen, wie z. B. zusätzlichen PPUs 300, dem Speicher 304, einer RISC-CPU (Reduced Instruction Set Computer), einer MMU (Memory Management Unit), einem DAC (Digital-Analog-Wandler) und dergleichen, vorhanden.The PPU 300 may be in a desktop computer, a laptop computer, a tablet computer, servers, supercomputers, a smartphone (e.g. a wireless, hand-held device), a personal digital assistant (PDA), a digital camera, a Vehicle, a head-mounted display or a head-mounted display, a hand-held electronic device and the like may be present. In one embodiment, the PPU is 300 executed on a single semiconductor substrate. In another embodiment, the PPU is 300 in a system-on-a-chip (SoC) together with one or more other devices, such as B. Additional PPUs 300 , the memory 304 , a RISC-CPU (Reduced Instruction Set Computer), an MMU (Memory Management Unit), a DAC (Digital-to-Analog Converter) and the like.

In einer Ausführungsform kann die PPU 300 auf einer Grafikkarte, die eine oder mehrere Speichereinrichtungen aufweist, vorhanden sein. Die Grafikkarte kann so ausgestaltet sein, dass sie mit einem PCIe-Steckplatz auf einem Motherboard eines Desktop-Computers verbunden werden kann. In einer weiteren Ausführungsform kann die PPU 300 eine integrierte Grafikverarbeitungseinheit (iGPU) oder ein Parallelprozessor sein, der im Chipsatz der Hauptplatine vorhanden ist. In einer weiteren Ausführungsform kann die PPU 300 in rekonfigurierbarer Hardware realisiert sein. In einer weiteren Ausführungsform können Teile der PPU 300 in rekonfigurierbarer Hardware realisiert sein.In one embodiment, the PPU 300 on a graphics card that has one or more storage devices. The graphics card can be designed so that it can be connected to a PCIe slot on a motherboard of a desktop computer. In another embodiment, the PPU 300 an integrated graphics processing unit (iGPU) or a parallel processor residing in the chipset on the motherboard. In another embodiment, the PPU 300 be implemented in reconfigurable hardware. In a further embodiment, parts of the PPU 300 be implemented in reconfigurable hardware.

Beispielhaftes RechensystemExemplary computing system

Systeme mit mehreren GPUs und CPUs werden in einer Vielzahl von Branchen eingesetzt, da Entwickler mehr Parallelität in Anwendungen wie z. B. künstlicher Intelligenz aufdecken und ausnutzen. Leistungsstarke, GPU-beschleunigte Systeme mit zehn bis vielen tausend Rechenknoten werden in Rechenzentren, Forschungseinrichtungen und Supercomputern eingesetzt, um immer größere Probleme zu lösen. Da die Anzahl der verarbeitenden Einrichtungen innerhalb der Hochleistungssysteme ansteigt, müssen die Kommunikations- und Datenübertragungsmechanismen skaliert werden, um die erhöhte Bandbreite zu unterstützen.Systems with multiple GPUs and CPUs are used in a wide variety of industries as developers have more parallelism in applications such as B. Uncover and exploit artificial intelligence. Powerful, GPU-accelerated systems with tens to many thousands of computing nodes are used in data centers, research facilities and supercomputers to solve ever greater problems. As the number of processing devices within the high performance systems increases, the communication and data transfer mechanisms must be scaled to support the increased bandwidth.

5B ist eine konzeptionelles Darstellung eines Verarbeitungssystems 500, das unter Verwendung der PPU 300 aus 3 gemäß einer Ausführungsform implementiert wurde. Das beispielhafte System 565 kann ausgestaltet sein, um das in 1C gezeigte Verfahren 150 und/oder das in 2C gezeigte Verfahren 250 zu implementieren. Das Verarbeitungssystem 500 weist eine CPU 530, einen Switch 510 und mehrere PPUs 300 sowie entsprechende Speicher 304 auf. Der NVLink 310 stellt Hochgeschwindigkeits-Kommunikationsverbindungen zwischen jeder der PPUs 300 bereit. Obwohl in 5B eine bestimmte Anzahl von NVLink 310 - und Interconnect 302 -Verbindungen dargestellt ist, kann die Anzahl der Verbindungen zu jeder PPU 300 und der CPU 530 variieren. Der Switch 510 bildet die Schnittstelle zwischen der Verbindung 302 und der CPU 530. Die PPUs 300, die Speicher 304 und die NVLinks 310 können auf einer einzigen Halbleiterplattform angeordnet sein, um ein Parallelverarbeitungsmodul 525 zu bilden. In einer Ausführungsform unterstützt der Switch 510 zwei oder mehr Protokolle, um zwischen verschiedenen Verbindungen und/oder Links zu vermitteln. 5B is a conceptual illustration of a processing system 500 that is done using the PPU 300 the end 3 was implemented according to one embodiment. The exemplary system 565 can be designed to accommodate the in 1C shown procedures 150 and / or the in 2C shown procedures 250 to implement. The processing system 500 assigns a CPU 530 , a switch 510 and multiple PPUs 300 as well as corresponding memory 304 on. The NVLink 310 provides high speed communications links between each of the PPUs 300 ready. Although in 5B a certain number of NVLink 310 - and interconnect 302 Connections is shown, the number of connections to each PPU 300 and the CPU 530 vary. The switch 510 forms the interface between the connection 302 and the CPU 530 . The PPUs 300 who have favourited Memory 304 and the NVLinks 310 can be arranged on a single semiconductor platform to accommodate a parallel processing module 525 to build. In one embodiment, the switch supports 510 two or more protocols to mediate between different connections and / or links.

In einer anderen Ausführungsform (nicht dargestellt) stellt der NVLink 310 eine oder mehrere Hochgeschwindigkeits-Kommunikationsverbindungen zwischen jeder der PPUs 300 und der CPU 530 bereit, und der Switch 510 bildet eine Schnittstelle zwischen der Verbindung 302 und jeder der PPUs 300. Die PPUs 300, die Speicher 304 und die Verbindung 302 können auf einer einzigen Halbleiterplattform angeordnet sein, um ein Parallelverarbeitungsmodul 525 zu bilden. In einer weiteren Ausführungsform (nicht dargestellt) stellt die Verbindung 302 eine oder mehrere Kommunikationsverbindungen zwischen jeder der PPUs 300 und der CPU 530 bereit, und der Switch 510 bildet eine Schnittstelle zwischen jeder der PPUs 300 unter Verwendung des NVLink 310, um eine oder mehrere Hochgeschwindigkeits-Kommunikationsverbindungen zwischen den PPUs 300 bereitzustellen. In einer anderen Ausführungsform (nicht dargestellt) stellt der NVLink 310 eine oder mehrere Hochgeschwindigkeits-Kommunikationsverbindungen zwischen den PPUs 300 und der CPU 530 über den Switch 510 bereit. In einer weiteren Ausführungsform (nicht dargestellt) stellt die Verbindung 302 eine oder mehrere Kommunikationsverbindungen direkt zwischen den einzelnen PPUs 300 bereit. Eine oder mehrere der NVLink 310 -Hochgeschwindigkeits-Kommunikationsverbindungen können als physische NVLink-Verbindung oder entweder als On-Chip- oder On-Die-Verbindung implementiert werden, die das gleiche Protokoll wie der NVLink 310 verwendet.In another embodiment (not shown) the NVLink 310 one or more high speed communications links between each of the PPUs 300 and the CPU 530 ready, and the switch 510 forms an interface between the connection 302 and each of the PPUs 300 . The PPUs 300 who have favourited Memory 304 and the connection 302 can be arranged on a single semiconductor platform to accommodate a parallel processing module 525 to build. In a further embodiment (not shown) the connection 302 one or more communication links between each of the PPUs 300 and the CPU 530 ready, and the switch 510 forms an interface between each of the PPUs 300 using the NVLink 310 to establish one or more high speed communications links between the PPUs 300 provide. In another embodiment (not shown) the NVLink 310 one or more high-speed communication links between the PPUs 300 and the CPU 530 over the switch 510 ready. In a further embodiment (not shown) the connection 302 one or more communication links directly between the individual PPUs 300 ready. One or more of the NVLink 310 -High speed communications links can be implemented as a physical NVLink link or either an on-chip or on-die link using the same protocol as the NVLink 310 used.

Im Zusammenhang mit der vorliegenden Beschreibung kann sich eine einzelne Halbleiterplattform auf eine einzige einheitliche halbleiterbasierte integrierte Schaltung beziehen, die auf einem Die oder Chip hergestellt ist. Es sei darauf hingewiesen, dass sich der Begriff Einzel-Halbleiterplattform auch auf Multi-Chip-Module mit erhöhter Konnektivität beziehen kann, die den On-Chip-Betrieb simulieren und wesentliche Verbesserungen gegenüber der Verwendung einer herkömmlichen Bus-Implementierung bereitstellen. Natürlich können die verschiedenen Schaltungen oder Einrichtungen auch separat oder in verschiedenen Kombinationen von Halbleiterplattformen nach den Wünschen des Anwenders angeordnet sein. Alternativ kann das Parallelverarbeitungsmodul 525 als Leiterplattensubstrat implementiert werden und jede der PPUs 300 und/oder Speicher 304 können Einrichtungen mit Gehäuse sein. In einer Ausführungsform befinden sich die CPU 530, der Switch 510 und das Parallelverarbeitungsmodul 525 auf einer einzigen Halbleiterplattform.In the context of the present description, a single semiconductor platform can refer to a single unitary semiconductor-based integrated circuit fabricated on a die or chip. It should be noted that the term single semiconductor platform can also refer to multi-chip modules with increased connectivity that simulate on-chip operation and provide significant improvements over the use of a conventional bus implementation. Of course, the various circuits or devices can also be arranged separately or in various combinations of semiconductor platforms according to the wishes of the user. Alternatively, the parallel processing module 525 be implemented as a printed circuit board substrate and each of the PPUs 300 and / or memory 304 can be devices with housing. In one embodiment, the CPU is located 530 , the switch 510 and the parallel processing module 525 on a single semiconductor platform.

In einer Ausführungsform beträgt die Signalisierungsrate jedes NVLink 310 20 bis 25 Gigabit/Sekunde und jede PPU 300 weist sechs NVLink 310 -Schnittstellen auf (wie in 5B gezeigt, sind fünf NVLink 310 -Schnittstellen für jede PPU 300 vorhanden). Jeder NVLink 310 bietet eine Datenübertragungsrate von 25 Gigabyte/Sekunde in jeder Richtung, wobei sechs Links 300 Gigabyte/Sekunde bereitstellen. Die NVLinks 310 können ausschließlich für die PPU-zu-PPU-Kommunikation verwendet werden, wie es in 5B dargestellt ist, oder für eine Kombination aus PPU-zu-PPU und PPU-zu-CPU, wenn die CPU 530 ebenfalls eine oder mehrere NVLink 310-Schnittstellen aufweist.In one embodiment, the signaling rate is each NVLink 310 20 to 25 gigabits / second and any PPU 300 has six NVLink 310 Interfaces (as in 5B shown are five NVLink 310 -Interfaces for each PPU 300 available). Any NVLink 310 provides a data transfer rate of 25 gigabytes / second in each direction, with six links 300 Provide gigabytes / second. The NVLinks 310 can only be used for PPU-to-PPU communication, as described in 5B or for a combination of PPU-to-PPU and PPU-to-CPU if the CPU 530 also has one or more NVLink 310 interfaces.

In einer Ausführungsform ermöglicht der NVLink 310 einen direkten Lade-/Speicher-/ atomaren Zugriff von der CPU 530 auf den Speicher 304 jeder PPU 300. In einer Ausführungsform unterstützt der NVLink 310 Kohärenzoperationen, so dass aus den Speichern 304 gelesene Daten in der Cache-Hierarchie der CPU 530 gespeichert werden können, was die Cache-Zugriffslatenz für die CPU 530 reduziert. In einer Ausführungsform weist der NVLink 310 eine Unterstützung für Adressübersetzungsdienste (ATS) auf, wodurch die PPU 300 direkt auf Seitentabellen innerhalb der CPU 530 zugreifen kann. Einer oder mehrere der NVLinks 310 können auch so ausgestaltet sein, dass sie in einem stromsparenden Modus arbeiten.In one embodiment, the NVLink enables 310 direct load / store / atomic access from the CPU 530 on the memory 304 every PPU 300 . In one embodiment, the NVLink supports 310 Coherence operations so that from the memories 304 read data in the cache hierarchy of the CPU 530 can be saved what the cache access latency for the CPU 530 reduced. In one embodiment instructs the NVLink 310 support for address translation services (ATS), which makes the PPU 300 directly on page tables within the CPU 530 can access. One or more of the NVLinks 310 can also be designed to operate in a power-saving mode.

5C zeigt ein beispielhaftes System 565, in dem die verschiedenen Architekturen und/oder Funktionen der verschiedenen vorherigen Ausführungsformen implementiert sein können. Das beispielhafte System 565 kann ausgestaltet sein, um das in 1C gezeigte Verfahren 150 und/oder das in 2C gezeigte Verfahren 250 zu implementieren. 5C shows an exemplary system 565 in which the various architectures and / or functions of the various previous embodiments may be implemented. The exemplary system 565 can be designed to accommodate the in 1C shown procedures 150 and / or the in 2C shown procedures 250 to implement.

Wie es dargestellt ist, ist ein System 565 vorgesehen, das mindestens eine zentrale Verarbeitungseinheit 530 aufweist, die mit einem Kommunikationsbus 575 verbunden ist. Der Kommunikationsbus 575 kann direkt oder indirekt eine oder mehrere der folgenden Einrichtungen koppeln: einen Hauptspeicher 540, eine Netzwerkschnittstelle 535, (eine) CPU(s) 530, (eine) Anzeigeeinrichtung(en) 545, (eine) Eingabeeinrichtung(en) 560, einen Switch 510 und ein Parallelverarbeitungssystem 525. Der Kommunikationsbus 575 kann unter Verwendung eines beliebigen geeigneten Protokolls implementiert werden und kann eine oder mehrere Verbindungen oder Busse darstellen, wie z. B. einen Adressbus, einen Datenbus, einen Steuerbus oder eine Kombination davon. Der Kommunikationsbus 575 kann einen oder mehrere Bus- oder Verbindungstypen aufweisen, wie z. B. einen ISA-Bus (Industry Standard Architecture), einen EISA-Bus (Extended Industry Standard Architecture), einen VESA-Bus (Video Electronics Standards Association), einen PCI-Bus (Peripheral Component Interconnect), einen PCIe-Bus (Peripheral Component Interconnect Express), HyperTransport und/oder eine andere Art von Bus oder Verbindung. Bei einigen Ausführungsformen gibt es direkte Verbindungen zwischen den Komponenten. Zum Beispiel kann/können die CPU(s) 530 direkt mit dem Hauptspeicher 540 verbunden sein. Darüber hinaus kann (können) die CPU(s) 530 direkt mit dem Parallelverarbeitungssystem 525 verbunden sein. Bei einer direkten oder Punkt-zu-Punkt-Verbindung zwischen Komponenten kann der Kommunikationsbus 575 eine PCIe-Verbindung aufweisen, um die Verbindung herzustellen. In diesen Beispielen muss kein PCI-Bus im System 565 vorhanden sein.As it is shown is a system 565 provided that at least one central processing unit 530 having that with a communication bus 575 connected is. The communication bus 575 can directly or indirectly couple one or more of the following devices: a main memory 540 , a network interface 535 , (a) CPU (s) 530 , (a) display device (s) 545 , (an) input device (s) 560 , a switch 510 and a parallel processing system 525 . The communication bus 575 can be implemented using any suitable protocol and can represent one or more links or buses, such as B. an address bus, a data bus, a control bus or a combination thereof. The communication bus 575 may have one or more bus or connection types, such as B. an ISA bus (Industry Standard Architecture), an EISA bus (Extended Industry Standard Architecture), a VESA bus (Video Electronics Standards Association), a PCI bus (Peripheral Component Interconnect), a PCIe bus (Peripheral Component Interconnect Express), HyperTransport, and / or some other type of bus or connection. In some embodiments, there are direct connections between the components. For example, the CPU (s) can 530 directly to the main memory 540 be connected. In addition, the CPU (s) can 530 directly with the parallel processing system 525 be connected. In the case of a direct or point-to-point connection between components, the communication bus 575 have a PCIe connection to establish the connection. In these examples there is no need for a PCI bus in the system 565 to be available.

Obwohl die verschiedenen Blöcke in 5C als über den Kommunikationsbus 575 mit Leitungen verbunden dargestellt sind, ist dies nicht als Einschränkung gedacht und dient nur der Übersichtlichkeit. Bei einigen Ausführungsformen kann beispielsweise eine Präsentationskomponente, wie die Anzeigeeinrichtung(en) 545, als E/A-Komponente betrachtet werden, wie die Eingabeeinrichtung(en) 560 (z. B. wenn die Anzeige ein Touchscreen ist). Als weiteres Beispiel kann/können die CPU(s) 530 und/oder das Parallelverarbeitungssystem 525 einen Speicher aufweisen (z. B. kann der Hauptspeicher 540 zusätzlich zu dem Parallelverarbeitungssystem 525, den CPUs 530 und/oder anderen Komponenten eine Speichereinrichtung darstellen). Mit anderen Worten, die Recheneinrichtung der 5C ist lediglich illustrativ. Es wird nicht zwischen Kategorien wie „Workstation“, „Server“, „Laptop“, „Desktop“, „Tablet“, „Client-Gerät“, „mobiles Gerät“, „Handheld-Gerät“, „Spielkonsole“, „elektronische Steuereinheit (ECU)“, „Virtual-Reality-System“ und/oder anderen Einrichtungs- oder Systemtypen unterschieden, da alle im Rahmen der Recheneinrichtung der 5C in Betracht gezogen werden.Although the various blocks in 5C than via the communication bus 575 are shown connected with lines, this is not intended as a restriction and is only for the sake of clarity. In some embodiments, for example, a presentation component, such as the display device (s) 545 , be viewed as an I / O component, like the input device (s) 560 (e.g. if the display is a touchscreen). As a further example, the CPU (s) can 530 and / or the parallel processing system 525 have a memory (e.g. the main memory 540 in addition to the parallel processing system 525 , the CPUs 530 and / or other components represent a storage device). In other words, the computing device of the 5C is only illustrative. No distinction is made between categories such as “workstation”, “server”, “laptop”, “desktop”, “tablet”, “client device”, “mobile device”, “handheld device”, “game console”, “electronic control unit” (ECU) ”,“ Virtual Reality System ”and / or other types of equipment or systems, since all of them are part of the computing equipment of the 5C be considered.

Das System 565 weist auch einen Hauptspeicher 540 auf. Eine Steuerlogik (Software) und Daten sind in dem Hauptspeicher 540 gespeichert, der die Form einer Vielzahl von computerlesbaren Medien annehmen kann. Bei den computerlesbaren Medien kann es sich um alle verfügbaren Medien handeln, auf die das System 565 zugreifen kann. Die computerlesbaren Medien können sowohl flüchtige als auch nicht-flüchtige Medien sowie entfernbare und nicht-entfernbare Medien aufweisen. Beispielhaft und ohne Einschränkung können die computerlesbaren Medien Computerspeichermedien und Kommunikationsmedien umfassen.The system 565 also has a main memory 540 on. Control logic (software) and data are in the main memory 540 that may take the form of a variety of computer readable media. The computer readable media can be any available media that the system 565 can access. The computer readable media can include both volatile and non-volatile media, as well as removable and non-removable media. By way of example and without limitation, the computer readable media can include computer storage media and communication media.

Die Computerspeichermedien können sowohl flüchtige als auch nichtflüchtige Medien und/oder entfernbare und nicht entfernbare Medien aufweisen, die in einem beliebigen Verfahren oder einer beliebigen Technologie zur Speicherung von Informationen, wie z. B. computerlesbare Anweisungen, Datenstrukturen, Programmmodule und/oder andere Datentypen, implementiert sind. Beispielsweise kann der Hauptspeicher 540 computerlesbare Anweisungen speichern (z. B., die ein oder mehrere Programme und/oder ein oder mehrere Programmelemente darstellen, wie z. B. ein Betriebssystem). Computerspeichermedien können ein RAM, ein ROM, ein EEPROM, einen Flash-Speicher oder andere Speichertechnologien, eine CD-ROM, eine Digital Versatile Disk (DVD) oder andere optische Plattenspeicher, Magnetkassetten, Magnetbänder, Magnetplattenspeicher oder andere magnetische Speichervorrichtungen oder jedes andere Medium aufweisen, das zum Speichern der gewünschten Informationen verwendet werden kann und auf das das System 565 zugreifen kann, sind aber nicht darauf beschränkt. Wie es hier verwendet wird, umfasst der Begriff Computerspeichermedium nicht per se Signale.The computer storage media can include both volatile and non-volatile media and / or removable and non-removable media that can be used in any method or technology for storing information, such as, e.g. B. computer-readable instructions, data structures, program modules and / or other data types are implemented. For example, the main memory 540 store computer readable instructions (e.g., representing one or more programs and / or one or more program elements, such as an operating system). Computer storage media can include RAM, ROM, EEPROM, flash memory, or other storage technology, CD-ROM, Digital Versatile Disk (DVD), or other optical disk storage, magnetic cassette, magnetic tape, magnetic disk storage, or other magnetic storage device, or any other medium that can be used to store the information you want and on which the system 565 can access, but are not limited to. As used herein, the term computer storage medium does not include signals per se.

Die Computerspeichermedien können computerlesbare Anweisungen, Datenstrukturen, Programmmodule und/oder andere Datentypen in einem modulierten Datensignal, wie z. B. einer Trägerwelle oder einem anderen Transportmechanismus, verkörpern und weisen beliebige Informationsübertragungsmedien auf. Der Begriff „moduliertes Datensignal“ kann sich auf ein Signal beziehen, bei dem eine oder mehrere seiner Eigenschaften so eingestellt oder verändert sind, dass Informationen in dem Signal kodiert sind. Beispielhaft und ohne Einschränkung können die Computerspeichermedien verdrahtete Medien, wie z. B. ein verdrahtetes Netzwerk oder eine direkt verdrahtete Verbindung, und drahtlose Medien, wie z. B. akustische, HF-, Infrarot- und andere drahtlose Medien, aufweisen. Kombinationen der oben genannten Medien sollten ebenfalls in den Bereich der computerlesbaren Medien eingeschlossen werden.The computer storage media can contain computer readable instructions, data structures, program modules and / or other types of data in a modulated data signal, such as e.g. B. a carrier wave or other transport mechanism embody and have any information transmission media. The term “modulated data signal” can refer to a signal in which one or more of its properties are adjusted or changed in such a way that information is encoded in the signal. By way of example and without limitation, the computer storage media may include wired media such as A wired network or a direct wired connection, and wireless media such as B. acoustic, RF, infrared and other wireless media. Combinations of the above media should also be included in the scope of computer readable media.

Computerprogramme, wenn sie ausgeführt werden, ermöglichen dem System 565, verschiedene Funktionen auszuführen. Die CPU(s) 530 kann/können so ausgestaltet sein, dass sie zumindest einige der computerlesbaren Anweisungen ausführt/ausführen, um eine oder mehrere Komponenten des Systems 565 zu steuern, um eine oder mehrere der hier beschriebenen Verfahren und/oder Prozesse durchzuführen. Die CPU(s) 530 kann/können jeweils einen oder mehrere Kerne aufweisen (z. B. einen, zwei, vier, acht, achtundzwanzig, zweiundsiebzig usw.), die in der Lage sind, eine Vielzahl von Software-Threads gleichzeitig zu verarbeiten. Die CPU(s) 530 kann/können jeden Prozessortyp aufweisen und je nach Art des implementierten Systems 565 unterschiedliche Prozessortypen aufweisen (z. B. Prozessoren mit weniger Kernen für mobile Einrichtungen und Prozessoren mit mehr Kernen für Server). Je nach Art des Systems 565 kann der Prozessor beispielsweise ein Advanced RISC Machines (ARM)-Prozessor sein, der mit Reduced Instruction Set Computing (RISC) implementiert ist, oder ein x86-Prozessor, der mit Complex Instruction Set Computing (CISC) implementiert ist. Das System 565 kann eine oder mehrere CPUs 530 aufweisen, zusätzlich zu einem oder mehreren Mikroprozessoren oder zusätzlichen Co-Prozessoren, wie z. B. mathematischen Co-Prozessoren.Computer programs, when executed, enable the system 565 to perform various functions. The CPU (s) 530 may be configured to execute at least some of the computer readable instructions to one or more components of the system 565 to control in order to carry out one or more of the methods and / or processes described here. The CPU (s) 530 each may have one or more cores (e.g., one, two, four, eight, twenty-eight, seventy-two, etc.) capable of processing a plurality of software threads simultaneously. The CPU (s) 530 can have any type of processor and depending on the type of system implemented 565 have different processor types (e.g., processors with fewer cores for mobile devices and processors with more cores for servers). Depending on the type of system 565 For example, the processor can be an Advanced RISC Machines (ARM) processor implemented with Reduced Instruction Set Computing (RISC) or an x86 processor implemented with Complex Instruction Set Computing (CISC). The system 565 can be one or more CPUs 530 have, in addition to one or more microprocessors or additional co-processors, such as. B. mathematical co-processors.

Zusätzlich zu oder alternativ zu der/den CPU(s) 530 kann das Parallelverarbeitungsmodul 525 so ausgestaltet sein, dass es zumindest einige der computerlesbaren Anweisungen ausführt, um eine oder mehrere Komponenten des Systems 565 zu steuern, um eines oder mehrere der hier beschriebenen Verfahren und/oder Prozesse durchzuführen. Das Parallelverarbeitungsmodul 525 kann vom System 565 zum Rendern von Grafiken (z. B. 3D-Grafiken) oder zur Durchführung von Allzweckberechnungen verwendet werden. Zum Beispiel kann das Parallelverarbeitungsmodul 525 für General-Purpose-Computing auf GPUs (GPGPU) verwendet werden. In Ausführungsformen kann/können die CPU(s) 530 und/oder das Parallelverarbeitungsmodul 525 diskret oder gemeinsam eine beliebige Kombination der Verfahren, Prozesse und/oder Abschnitte davon ausführen.In addition to or as an alternative to the CPU (s) 530 can the parallel processing module 525 be configured to execute at least some of the computer readable instructions to one or more components of the system 565 to control in order to carry out one or more of the methods and / or processes described here. The parallel processing module 525 can from the system 565 be used to render graphics (such as 3D graphics) or perform general-purpose calculations. For example, the parallel processing module 525 be used for general purpose computing on GPUs (GPGPU). In embodiments, the CPU (s) can 530 and / or the parallel processing module 525 discreetly or collectively execute any combination of the methods, processes and / or portions thereof.

Das System 565 weist auch die Eingabeeinrichtung(en) 560, das Parallelverarbeitungssystem 525 und die Anzeigeeinrichtung(en) 545 auf. Die Anzeigeeinrichtung(en) 545 kann (können) eine Anzeige (z. B. einen Monitor, einen Touchscreen, einen Fernsehbildschirm, ein Heads-up-Display (HUD), andere Anzeigetypen oder eine Kombination davon), Lautsprecher und/oder andere Präsentationskomponenten aufweisen. Die Anzeigeeinrichtung(en) 545 kann/können Daten von anderen Komponenten (z. B. dem Parallelverarbeitungssystem 525, der/den CPU(s) 530 usw.) empfangen und die Daten ausgeben (z. B. als Bild, Video, Ton usw.).The system 565 also shows the input device (s) 560 , the parallel processing system 525 and the display device (s) 545 on. The display device (s) 545 may include a display (e.g., monitor, touchscreen, television screen, heads-up display (HUD), other types of displays, or a combination thereof), speakers, and / or other presentation components. The display device (s) 545 can / can data from other components (e.g. the parallel processing system 525 , the CPU (s) 530 etc.) and output the data (e.g. as an image, video, sound, etc.).

Die Netzwerkschnittstelle 535 kann es dem System 565 ermöglichen, logisch mit anderen Einrichtungen gekoppelt zu sein, einschließlich der Eingabeeinrichtungen 560, der Anzeigeeinrichtung(en) 545 und/oder anderen Komponenten, von denen einige in das System 565 eingebaut (z. B. integriert) sein können. Dargestellte Eingabegeräte 560 weisen ein Mikrofon, eine Maus, eine Tastatur, einen Joystick, ein Gamepad, eine Spielsteuerung, eine Satellitenschüssel, einen Scanner, einen Drucker, eine drahtlose Einrichtung usw. auf. Die Eingabeeinrichtungen 560 können eine natürliche Benutzerschnittstelle (NUI) bereitstellen, die Luftgesten, Sprache oder andere physiologische Eingaben verarbeitet, die von einem Benutzer erzeugt werden. In einigen Fällen können die Eingaben an ein entsprechendes Netzwerkelement zur weiteren Verarbeitung übertragen werden. Eine NUI kann eine beliebige Kombination aus Spracherkennung, Stifterkennung, Gesichtserkennung, biometrischer Erkennung, Gestenerkennung sowohl auf dem Bildschirm als auch neben dem Bildschirm, Luftgesten, Kopf- und Augenverfolgung und Berührungserkennung (wie unten ausführlicher beschrieben) in Verbindung mit einer Anzeige des Systems 565 implementieren. Das System 565 kann Tiefenkameras, wie z. B. stereoskopische Kamerasysteme, Infrarotkamerasysteme, RGB-Kamerasysteme, eine Touchscreen-Technologie und Kombinationen davon, zur Gestenerkennung und -erfassung aufweisen. Zusätzlich kann das System 565 Beschleunigungsmesser oder Gyroskope aufweisen (z. B. als Teil einer Trägheitsmesseinheit (IMU)), die eine Bewegungserkennung ermöglichen. Bei einigen Beispielen kann die Ausgabe der Beschleunigungsmesser oder Gyroskope von dem System 565 verwendet werden, um immersive Augmented Reality oder Virtual Reality darzustellen.The network interface 535 can it to the system 565 allow to be logically coupled to other devices, including the input devices 560 , the display device (s) 545 and / or other components, some of which are in the system 565 can be built-in (e.g. integrated). Input devices shown 560 include a microphone, mouse, keyboard, joystick, game pad, game controller, satellite dish, scanner, printer, wireless device, and so on. The input devices 560 may provide a natural user interface (NUI) that processes aerial gestures, speech, or other physiological input generated by a user. In some cases, the inputs can be transmitted to an appropriate network element for further processing. A NUI can be any combination of speech recognition, pen recognition, face recognition, biometric recognition, both on and off screen gesture recognition, aerial gestures, head and eye tracking, and touch recognition (as described in more detail below) in conjunction with a display of the system 565 to implement. The system 565 can depth cameras such as B. stereoscopic camera systems, infrared camera systems, RGB camera systems, a touchscreen technology and combinations thereof, for gesture recognition and capture. In addition, the system can 565 Have accelerometers or gyroscopes (e.g. as part of an Inertial Measurement Unit (IMU)) that allow motion detection. In some examples, the output from the accelerometers or gyroscopes may be from the system 565 can be used to represent immersive augmented reality or virtual reality.

Darüber hinaus kann das System 565 über eine Netzwerkschnittstelle 535 zu Kommunikationszwecken mit einem Netzwerk (z. B. einem Telekommunikationsnetzwerk, einem lokalen Netzwerk (LAN), einem drahtlosen Netzwerk, einem Weitverkehrsnetzwerk (WAN) wie dem Internet, einem Peer-to-Peer-Netzwerk, einem Kabelnetzwerk oder Ähnlichem) verbunden sein. Das System 565 kann ein verteiltes Netzwerk und/oder eine Cloud-Computing-Umgebung aufweisen.In addition, the system can 565 via a network interface 535 be connected to a network (e.g. a telecommunications network, a local area network (LAN), a wireless network, a wide area network (WAN) such as the Internet, a peer-to-peer network, a cable network or the like) for communication purposes. The system 565 may have a distributed network and / or a cloud computing environment.

Die Netzwerkschnittstelle 535 kann einen oder mehrere Empfänger, Sender und/oder Transceiver aufweisen, die es dem System 565 ermöglichen, mit anderen Recheneinrichtungen über ein elektronisches Kommunikationsnetzwerk zu kommunizieren, einschließlich einer drahtgebundenen und/oder drahtlosen Kommunikation. Die Netzwerkschnittstelle 535 kann Komponenten und Funktionen aufweisen, um die Kommunikation über eine beliebige Anzahl verschiedener Netzwerke zu ermöglichen, wie z. B. drahtlose Netzwerke (z. B. Wi-Fi, Z-Wave, Bluetooth, Bluetooth LE, ZigBee usw.), verdrahtete Netzwerke (z. B. Kommunikation über Ethernet oder InfiniBand), Weitverkehrsnetzwerke mit geringer Leistung (z. B. LoRaWAN, SigFox usw.) und/oder das Internet.The network interface 535 may have one or more receivers, transmitters, and / or transceivers that allow the system 565 enable communication with other computing devices over an electronic communication network, including wired and / or wireless communication. The network interface 535 may have components and functions to enable communication over any number of different networks, such as E.g. wireless networks (e.g. Wi-Fi, Z-Wave, Bluetooth, Bluetooth LE, ZigBee etc.), wired networks (e.g. communication via Ethernet or InfiniBand), wide area networks with low power (e.g. LoRaWAN, SigFox etc.) and / or the Internet.

Das System 565 kann auch einen Sekundärspeicher aufweisen (nicht dargestellt). Der Sekundärspeicher weist beispielsweise ein Festplattenlaufwerk und/oder ein Wechselspeicherlaufwerk auf, das ein Diskettenlaufwerk, ein Magnetbandlaufwerk, ein Compact-Disk-Laufwerk, ein DVD-Laufwerk (Digital Versatile Disk), eine Aufnahmeeinrichtung oder einen USB-Flash-Speicher darstellt. Das Wechselspeicherlaufwerk liest in bekannter Weise von und/oder schreibt auf einen Wechselspeicher. Das System 565 kann auch eine festverdrahtete Stromversorgung, eine Batteriestromversorgung oder eine Kombination davon aufweisen (nicht dargestellt). Die Stromversorgung kann das System 565 mit Strom versorgen, um den Betrieb der Komponenten des Systems 565 zu ermöglichen.The system 565 can also have a secondary memory (not shown). The secondary storage has, for example, a hard disk drive and / or a removable storage drive, which is a floppy disk drive, a magnetic tape drive, a compact disk drive, a DVD drive (digital versatile disk), a recording device or a USB flash memory. The removable storage drive reads from and / or writes to removable storage in a known manner. The system 565 may also include a hardwired power supply, battery power supply, or a combination thereof (not shown). The power supply can be provided by the system 565 provide power to the operation of the components of the system 565 to enable.

Jedes der vorgenannten Module und/oder Einrichtungen kann sogar auf einer einzigen Halbleiterplattform angeordnet sein, um das System 565 auszubilden. Alternativ können die verschiedenen Module auch separat oder in verschiedenen Kombinationen von Halbleiterplattformen nach den Wünschen des Anwenders angeordnet sein. Während verschiedene Ausführungsformen oben beschrieben wurden, sollte klar sein, dass sie nur als Beispiel und nicht als Einschränkung dargestellt wurden. Daher sollte die Breite und der Umfang einer bevorzugten Ausführungsform nicht durch eine der oben beschriebenen beispielhaften Ausführungsformen begrenzt sein, sondern nur in Übereinstimmung mit den folgenden Ansprüchen und deren Äquivalenten definiert sein.Each of the aforementioned modules and / or devices can even be arranged on a single semiconductor platform around the system 565 to train. Alternatively, the different modules can also be arranged separately or in different combinations of semiconductor platforms according to the wishes of the user. While various embodiments have been described above, it should be understood that they are presented as an example and not as a limitation. Therefore, the breadth and scope of a preferred embodiment should not be limited by any of the exemplary embodiments described above, but should only be defined in accordance with the following claims and their equivalents.

Beispielhafte NetzwerkumgebungenExemplary network environments

Netzwerkumgebungen, die zur Verwendung bei der Implementierung von Ausführungsformen der Offenbarung geeignet sind, können eine oder mehrere Client-Einrichtungen, Server, Network Attached Storage (NAS), andere Backend-Einrichtungen und/oder andere Einrichtungstypen aufweisen. Die Client-Geräte, Server und/oder anderen Einrichtungstypen (z. B. jede Einrichtung) können auf einer oder mehreren Instanzen des Verarbeitungssystems 500 der 5A und/oder des Beispielsystems 565 der 5B implementiert sein - z. B. kann jede Einrichtung ähnliche Komponenten, Merkmale und/oder Funktionalität des Verarbeitungssystems 500 und/oder des Beispielsystems 565 aufweisen.Network environments suitable for use in implementing embodiments of the disclosure may include one or more client devices, servers, network attached storage (NAS), other backend devices, and / or other types of devices. The client devices, servers, and / or other types of devices (e.g., any device) may be on one or more instances of the processing system 500 the 5A and / or the example system 565 the 5B be implemented - e.g. E.g., each device may have similar components, features, and / or functionality of the processing system 500 and / or the example system 565 exhibit.

Komponenten einer Netzwerkumgebung können über ein oder mehrere Netzwerke miteinander kommunizieren, die drahtgebunden, drahtlos oder beides sein können. Das Netzwerk kann mehrere Netzwerke oder ein Netzwerk von Netzwerken aufweisen. Beispielsweise kann das Netzwerk ein oder mehrere Wide Area Networks (WANs), ein oder mehrere Local Area Networks (LANs), ein oder mehrere öffentliche Netzwerke wie das Internet und/oder ein öffentliches Telefonnetz (PSTN) und/oder ein oder mehrere private Netzwerke aufweisen. Wenn das Netzwerk ein drahtloses Telekommunikationsnetzwerk aufweist, können Komponenten wie eine Basisstation, ein Kommunikationsturm oder sogar Zugangspunkte (sowie andere Komponenten) eine drahtlose Verbindung bereitstellen.Components of a network environment can communicate with one another via one or more networks, which can be wired, wireless, or both. The network can comprise multiple networks or a network of networks. For example, the network can have one or more wide area networks (WANs), one or more local area networks (LANs), one or more public networks such as the Internet and / or a public switched telephone network (PSTN) and / or one or more private networks . If the network comprises a wireless telecommunications network, components such as a base station, communication tower, or even access points (as well as other components) can provide a wireless connection.

Kompatible Netzwerkumgebungen können eine oder mehrere Peer-to-Peer-Netzwerkumgebungen - in diesem Fall kann ein Server nicht in einer Netzwerkumgebung enthalten sein - und eine oder mehrere Client-Server-Netzwerkumgebungen - in diesem Fall können ein oder mehrere Server in einer Netzwerkumgebung enthalten sein- aufweisen. In Peer-to-Peer-Netzwerkumgebungen kann die hier beschriebene Funktionalität in Bezug auf einen oder mehrere Server auf einer beliebigen Anzahl von Client-Einrichtungen implementiert sein.Compatible network environments can be one or more peer-to-peer network environments - in which case a server cannot be included in a network environment - and one or more client-server network environments - in which case one or more servers can be included in a network environment - exhibit. In peer-to-peer network environments, the functionality described here can be implemented in relation to one or more servers on any number of client devices.

Bei mindestens einer Ausführungsform kann eine Netzwerkumgebung eine oder mehrere Cloud-basierte Netzwerkumgebungen, eine verteilte Datenverarbeitungsumgebung, eine Kombination davon usw. aufweisen. Eine Cloud-basierte Netzwerkumgebung kann eine Framework-Schicht, einen Job-Scheduler, einen Ressourcenmanager und ein verteiltes Dateisystem aufweisen, die auf einem oder mehreren Servern implementiert sind, die einen oder mehrere Kernnetzwerkserver und/oder Edge-Server aufweisen können. Eine Framework-Schicht kann ein Framework zur Unterstützung von Software einer Software-Schicht und/oder einer oder mehrerer Anwendung(en) einer Anwendungsschicht aufweisen. Die Software oder Anwendung(en) kann/können jeweils webbasierte Dienstsoftware oder Anwendungen aufweisen. In Ausführungsformen können eine oder mehrere der Client-Einrichtungen die webbasierte Dienstsoftware oder Anwendungen nutzen (z. B. durch Zugriff auf die Dienstsoftware und/oder Anwendungen über eine oder mehrere Anwendungsprogrammierschnittstellen (APIs)). Die Framework-Schicht kann eine Art von freiem und quelloffenem Software-Webanwendungs-Framework sein, das z. B. ein verteiltes Dateisystem für die Verarbeitung großer Datenmengen (z. B. „Big Data“) verwendet, ist aber nicht darauf beschränkt.In at least one embodiment, a network environment can include one or more cloud-based network environments, a distributed computing environment, a combination thereof, and so on. exhibit. A cloud-based network environment can have a framework layer, a job scheduler, a resource manager, and a distributed file system implemented on one or more servers, which can include one or more core network servers and / or edge servers. A framework layer can have a framework for supporting software of a software layer and / or one or more application (s) of an application layer. The software or application (s) may each include web-based service software or applications. In embodiments, one or more of the client devices may utilize the web-based service software or applications (e.g., by accessing the service software and / or applications via one or more application programming interfaces (APIs)). The framework layer can be some type of free and open source software web application framework, e.g. For example, a distributed file system is used for processing large amounts of data (e.g. "big data"), but is not limited to this.

Eine Cloud-basierte Netzwerkumgebung kann Cloud-Computing und/oder Cloud-Speicher bereitstellen, die/der eine beliebige Kombination der hier beschriebenen Rechen- und/oder Datenspeicherfunktionen (oder einen oder mehrere Abschnitte davon) ausführt/en. Jede dieser verschiedenen Funktionen kann über mehrere Standorte von zentralen oder Kernservern (z. B. von einem oder mehreren Rechenzentren, die über einen Staat, eine Region, ein Land, den Globus usw. verteilt sein können) verteilt sein. Wenn eine Verbindung zu einem Benutzer (z. B. einer Client-Einrichtung) relativ nahe an einem oder mehreren Edge-Servern liegt, können ein oder mehrere Core-Server zumindest einen Teil der Funktionalität dem oder den Edge-Servern zuweisen. Eine Cloud-basierte Netzwerkumgebung kann privat (z. B. auf eine einzelne Organisation beschränkt), öffentlich (z. B. für viele Organisationen verfügbar) und/oder eine Kombination davon (z. B. eine hybride Cloud-Umgebung) sein.A cloud-based network environment can provide cloud computing and / or cloud storage that performs any combination of the computing and / or data storage functions described herein (or one or more portions thereof). Each of these various functions may be distributed across multiple locations of central or core servers (e.g., one or more data centers, which may be distributed across a state, region, country, globe, etc.). When a connection to a user (e.g., a client device) is relatively close to one or more edge servers, one or more core servers can assign at least some of the functionality to the edge server (s). A cloud-based network environment can be private (e.g. limited to a single organization), public (e.g. available to many organizations) and / or a combination thereof (e.g. a hybrid cloud environment).

Die Client-Einrichtung(en) kann (können) zumindest einige der Komponenten, Merkmale und Funktionen des beispielhaften Verarbeitungssystems 500 der 5B und/oder des beispielhaften Systems 565 der 5C aufweisen. Als Ausführungsform und ohne Einschränkung kann eine Client-Einrichtung ausgestaltet sein als ein Personal Computer (PC), ein Laptop, ein mobiles Gerät, ein Smartphone, ein Tablet-Computer, eine Smartwatch, ein tragbarer Computer, ein Personal Digital Assistant (PDA), ein MP3-Player, ein Virtual-Reality-Headset, ein Global Positioning System (GPS) oder eine Einrichtung, ein Video-Player, eine Videokamera, eine Überwachungseinrichtung oder ein Überwachungssystem, ein Fahrzeug, ein Boot, ein Luftschiff, eine virtuelle Maschine, eine Drohne, ein Roboter, ein Handheld-Kommunikationsgerät, ein Krankenhausgerät, ein Spielgerät oder -system, ein Unterhaltungssystem, ein Fahrzeug-Computersystem, eine eingebettete Systemsteuerung, eine Fernbedienung, ein Gerät, eine Unterhaltungselektronikeinrichtung, eine Workstation, eine Edge-Einrichtung, eine beliebige Kombination dieser beschriebenen Einrichtungen oder eine andere geeignete Einrichtung.The client device (s) may at least some of the components, features, and functions of the exemplary processing system 500 the 5B and / or the exemplary system 565 the 5C exhibit. As an embodiment and without restriction, a client device can be configured as a personal computer (PC), a laptop, a mobile device, a smartphone, a tablet computer, a smart watch, a portable computer, a personal digital assistant (PDA), an MP3 player, a virtual reality headset, a global positioning system (GPS) or a device, a video player, a video camera, a surveillance device or a surveillance system, a vehicle, a boat, an airship, a virtual machine, a drone, a robot, a handheld communication device, a hospital device, a gaming device or system, an entertainment system, a vehicle computer system, an embedded system controller, a remote control, a device, a consumer electronics device, a workstation, an edge device, a any combination of these described devices or any other suitable device.

Maschinelles LernenMachine learning

Tiefe neuronale Netze (DNNs), die auf Prozessoren wie der PPU 300 entwickelt wurden, werden für verschiedene Anwendungsfälle eingesetzt, von selbstfahrenden Autos bis zur schnelleren Medikamentenentwicklung, von der automatischen Bildunterschrift in Online-Bilddatenbanken bis zur intelligenten Echtzeit-Sprachübersetzung in Video-Chat-Anwendungen. Deep Learning ist eine Technik, die den neuronalen Lernprozess des menschlichen Gehirns modelliert und dabei kontinuierlich lernt, immer intelligenter wird und mit der Zeit immer genauere Ergebnisse liefert. Ein Kind lernt anfangs von einem Erwachsenen, verschiedene Formen richtig zu identifizieren und zu klassifizieren, und ist schließlich in der Lage, Formen ohne Nachhilfe zu erkennen. In ähnlicher Weise muss ein Deep Learning- oder neuronales Lern-System in der Objekterkennung und -klassifizierung trainiert werden, damit es intelligenter und effizienter bei der Identifizierung von Basisobjekten, verdeckten Objekten usw. wird und gleichzeitig den Objekten einen Kontext zuordnen kann.Deep Neural Networks (DNNs) that run on processors like the PPU 300 are used for a variety of applications, from self-driving cars to faster drug development, from automatic captioning in online image databases to intelligent real-time voice translation in video chat applications. Deep learning is a technology that models the neural learning process of the human brain and thereby continuously learns, becomes more and more intelligent and, over time, delivers increasingly more accurate results. A child initially learns from an adult to correctly identify and classify various shapes and eventually is able to recognize shapes without tutoring. Similarly, a deep learning or neural learning system needs to be trained in object recognition and classification so that it becomes more intelligent and efficient in identifying basic objects, hidden objects, etc., and at the same time assigning a context to the objects.

Auf der einfachsten Ebene betrachten Neuronen im menschlichen Gehirn verschiedene Eingaben, die empfangen werden, wobei jedem dieser Eingaben Wichtigkeitsstufen zugewiesen werden, und die Ausgabe an andere Neuronen weitergeleitet wird, um darauf zu reagieren. Ein künstliches Neuron oder Perzeptron ist das einfachste Modell eines neuronalen Netzes. In einem Beispiel kann ein Perzeptron eine oder mehrere Eingaben empfangen, die verschiedene Merkmale eines Objekts darstellen, für dessen Erkennung und Klassifizierung das Perzeptron trainiert wird, und jedem dieser Merkmale wird eine bestimmte Gewichtung zugewiesen, die auf der Wichtigkeit dieses Merkmals bei der Definition der Form eines Objekts basiert.At the simplest level, neurons in the human brain look at various inputs that are being received, each of those inputs being assigned levels of importance, and the output passed on to other neurons to respond to. An artificial neuron or perceptron is the simplest model of a neural network. In one example, a perceptron may receive one or more inputs representing various features of an object that the perceptron is trained to recognize and classify, and each of these features is assigned a weight based on the importance of that feature in defining the shape of an object.

Ein Modell eines tiefen neuronalen Netzes (DNN) weist mehrere Schichten mit vielen verbundenen Knoten auf (z. B. Perceptrons, Boltzmann-Maschinen, Radialbasisfunktionen, Faltungsschichten usw.), die mit enormen Mengen von Eingabedaten trainiert werden können, um komplexe Probleme schnell und mit hoher Genauigkeit zu lösen. In einem Beispiel zerlegt eine erste Schicht des DNN-Modells ein Eingabebild eines Autos in verschiedene Abschnitte und sucht nach grundlegenden Mustern wie Linien und Winkeln. Die zweite Schicht setzt die Linien zusammen, um nach Mustern auf höherer Ebene wie Rädern, Windschutzscheiben und Spiegeln zu suchen. Die nächste Schicht identifiziert den Fahrzeugtyp, und die letzten paar Schichten erzeugen ein Kennzeichen für das eingegebene Bild, das das Modell einer bestimmten Automarke identifiziert.A deep neural network (DNN) model has multiple layers with many connected nodes (e.g., perceptrons, Boltzmann machines, radial basis functions, convolution layers, etc.) that can be trained with enormous amounts of input data to solve complex problems quickly and with high Solving accuracy. In one example, a first layer of the DNN model breaks down an input image of a car into different sections and looks for basic patterns such as lines and angles. The second layer puts the lines together to look for higher-level patterns like wheels, windshields, and mirrors. The next layer identifies the type of vehicle, and the last few layers create a label on the input image that identifies the model of a particular make of car.

Sobald das DNN trainiert ist, kann es eingesetzt und zur Identifizierung und Klassifizierung von Objekten oder Mustern in einem als Inferenz bezeichneten Prozess verwendet werden. Beispiele für Inferenz (der Prozess, durch den ein DNN nützliche Informationen aus einer gegebenen Eingabe extrahiert) schließen handgeschriebene Nummern auf Schecks ein, die in Geldautomaten eingezahlt wurden, identifizieren Bilder von Freunden auf Fotos, liefern Filmempfehlungen an über fünfzig Millionen Benutzer, identifizieren und klassifizieren verschiedene Arten von Autos, Fußgängern und Straßengefahren in fahrerlosen Autos oder übersetzen menschliche Sprache in Echtzeit.Once the DNN is trained, it can be deployed and used to identify and classify objects or patterns in a process called inference. Examples of inference (the process by which a DNN extracts useful information from a given input) include handwritten numbers on checks deposited in ATMs, identifying pictures of friends in photos, providing movie recommendations to over fifty million users, identifying and classifying them different types of cars, pedestrians and road hazards in driverless cars or translate human speech in real time.

Während des Trainings fließen die Daten in einer Vorwärtspropagationsphase durch das DNN, bis eine Vorhersage erzeugt wird, die ein Kennzeichen angibt, das der Eingabe entspricht. Wenn das neuronale Netz die Eingabe nicht korrekt kennzeichnet, werden die Fehler zwischen dem korrekten Kennzeichen und dem vorhergesagten Kennzeichen analysiert und die Gewichte für jedes Merkmal in einer Rückwärtspropagierungsphase angepasst, bis das DNN die Eingabe und andere Eingaben in einem Trainingsdatensatz korrekt kennzeichnet. Das Training komplexer neuronaler Netze erfordert enorme Mengen an paralleler Rechenleistung, die Fließkommamultiplikationen und -additionen aufweisen, die von der PPU 300 unterstützt werden. Das Inferencing ist weniger rechenintensiv als das Training, da es sich um einen latenzabhängigen Prozess handelt, bei dem ein trainiertes neuronales Netz auf neue Eingaben angewendet wird, die es zuvor nicht gesehen hat, um Bilder zu klassifizieren, Sprache zu übersetzen und allgemein neue Informationen abzuleiten.During training, the data flows through the DNN in a forward propagation phase until a prediction is generated indicating a label that corresponds to the input. If the neural network does not correctly label the input, the errors between the correct label and the predicted label are analyzed and the weights for each feature are adjusted in a backward propagation phase until the DNN correctly labels the input and other inputs in a training dataset. Training complex neural networks requires enormous amounts of parallel computing power, which have floating point multiplications and additions provided by the PPU 300 get supported. Inferencing is less computationally intensive than training because it is a latency-dependent process in which a trained neural network is applied to new input that it has not seen before to classify images, translate speech, and generally derive new information .

Neuronale Netze sind stark auf mathematische Matrixoperationen angewiesen, und komplexe mehrschichtige Netze erfordern enorme Mengen an Fließkomma-Leistung und Bandbreite, um sowohl effizient als auch schnell zu sein. Mit Tausenden von Rechenkernen, die für Matrix-Mathematik-Operationen optimiert sind und eine Leistung von mehreren Dutzend bis Hunderten von TFLOPS liefern, ist die PPU 300 eine Rechenplattform, die die für Anwendungen der künstlichen Intelligenz und des maschinellen Lernens, die auf tiefen neuronalen Netzwerken basieren, erforderliche Leistung erbringen kann.Neural networks rely heavily on mathematical matrix operations, and complex multilayer networks require enormous amounts of floating point performance and bandwidth to be both efficient and fast. With thousands of cores optimized for matrix math operations and delivering tens to hundreds of TFLOPS performance, the PPU 300 a computing platform capable of delivering the performance required for artificial intelligence and machine learning applications based on deep neural networks.

Darüber hinaus können Bilder, die unter Anwendung einer oder mehrerer der hier offenbarten Techniken erzeugt wurden, zum Trainieren, Testen oder Zertifizieren von DNNs verwendet werden, die zur Erkennung von Objekten und Umgebungen in der realen Welt eingesetzt werden. Solche Bilder können Szenen von Straßen, Fabriken, Gebäuden, städtischen Umgebungen, ländlichen Umgebungen, Menschen, Tieren und anderen physischen Objekten oder Umgebungen der realen Welt aufweisen. Solche Bilder können verwendet werden, um DNNs zu trainieren, zu testen oder zu zertifizieren, die in Maschinen oder Robotern eingesetzt werden, um physische Objekte in der realen Welt zu manipulieren, zu handhaben oder zu verändern. Außerdem können solche Bilder verwendet werden, um DNNs zu trainieren, zu testen oder zu zertifizieren, die in autonomen Fahrzeugen eingesetzt werden, um die Fahrzeuge durch die reale Welt zu navigieren und zu bewegen. Darüber hinaus können Bilder, die unter Anwendung einer oder mehrerer der hier offengelegten Techniken erzeugt wurden, verwendet werden, um den Benutzern solcher Maschinen, Roboter und Fahrzeuge Informationen zu vermitteln.In addition, images generated using one or more of the techniques disclosed herein can be used to train, test, or certify DNNs that are used to recognize objects and environments in the real world. Such images can include scenes of streets, factories, buildings, urban settings, rural settings, people, animals, and other physical objects or real world environments. Such images can be used to train, test or certify DNNs that are used in machines or robots to manipulate, handle or change physical objects in the real world. In addition, such images can be used to train, test or certify DNNs that are used in autonomous vehicles to navigate and move the vehicles through the real world. In addition, images generated using one or more of the techniques disclosed herein can be used to convey information to users of such machines, robots, and vehicles.

5D zeigt Komponenten eines beispielhaften Systems 555, das gemäß mindestens einer Ausführungsform zum Trainieren und Anwenden von maschinellem Lernen verwendet werden kann. Wie noch zu erörtern sein wird, können verschiedene Komponenten durch verschiedene Kombinationen von Recheneinrichtungen und Ressourcen oder durch ein einziges Rechensystem bereitgestellt werden, das unter der Kontrolle einer einzelnen Einrichtung oder mehrerer Einrichtungen stehen kann. Darüber hinaus können die Aspekte von verschiedenen Einheiten ausgelöst, initiiert oder angefordert werden. Bei mindestens einer Ausführungsform kann das Training eines neuronalen Netzes von einem Anbieter angewiesen werden, der mit einer Anbieterumgebung 506 verbunden ist, während bei mindestens einer Ausführungsform das Training von einem Kunden oder einem anderen Benutzer angefordert werden kann, der über eine Client-Einrichtung 502 oder eine andere derartige Ressource Zugriff auf eine Anbieterumgebung hat. Bei mindestens einer Ausführungsform können die Trainingsdaten (oder Daten, die von einem trainierten neuronalen Netzwerk analysiert werden sollen) von einem Anbieter, einem Benutzer oder einem Inhaltanbieter 524 einer dritten Partei bereitgestellt werden. Bei mindestens einer Ausführungsform kann die Client-Einrichtung 502 z. B. ein Fahrzeug oder ein Objekt sein, das im Auftrag eines Benutzers navigiert werden soll und das Anfragen stellen und/oder Anweisungen empfangen kann, die bei der Navigation einer Einrichtung helfen. 5D shows components of an exemplary system 555 which, according to at least one embodiment, can be used to train and apply machine learning. As will be discussed, various components may be provided by various combinations of computing devices and resources, or by a single computing system that may be under the control of a single device or multiple devices. In addition, the aspects can be triggered, initiated or requested by different units. In at least one embodiment, the training of a neural network can be instructed by a provider who is familiar with a provider environment 506 while, in at least one embodiment, the training may be requested from a customer or other user via a client device 502 or some other such resource has access to a provider environment. In at least one embodiment, the training data (or data to be analyzed by a trained neural network) can be from a provider, a user, or a content provider 524 provided to a third party. In at least one embodiment, the client device 502 z. B. be a vehicle or an object that is to be navigated on behalf of a user and that can make inquiries and / or receive instructions that help navigate a facility.

Bei mindestens einer Ausführungsform können Anfragen über mindestens ein Netzwerk 504 übermittelt werden, um von einer Anbieterumgebung 506 empfangen zu werden. In mindestens einer Ausführungsform kann eine Client-Einrichtung 502 jede geeignete elektronische Einrichtung und/oder Recheneinrichtung sein, die es einem Benutzer ermöglicht, solche Anfragen zu erzeugen und zu senden, wie z. B., aber nicht beschränkt auf, einen Desktop-Computer, einen Notebook-Computer, einen Computer-Server, Smartphones, einen Tablet-Computer, Spielkonsolen (tragbar oder nicht), Computer-Prozessoren, eine Rechenlogik und Set-Top-Boxen. Das/die Netzwerk(e) 504 kann/können jedes geeignete Netzwerk für die Übertragung einer Anfrage oder anderer solcher Daten aufweisen, wie z. B. das Internet, ein Intranet, ein zellulares Netzwerk, ein lokales Netzwerk (LAN), ein Weitverkehrsnetzwerk (WAN), ein persönliches Netzwerk (PAN), ein Ad-hoc-Netzwerk direkter drahtloser Verbindungen zwischen Peers und so weiter.In at least one embodiment, requests can be made over at least one network 504 Submitted to by a provider environment 506 to be received. In at least one embodiment, a client device 502 any suitable electronic device and / or computing device that enables a user to generate and send such requests, e.g. B., but not limited to, a desktop computer, a notebook computer, a computer server, smartphones, a tablet computer, game consoles (portable or not), computer processors, computational logic and set-top boxes. The network (s) 504 may have any suitable network for the transmission of a request or other such data, e.g. Such as the Internet, an intranet, a cellular network, a local area network (LAN), a wide area network (WAN), a personal network (PAN), an ad hoc network of direct wireless connections between peers, and so on.

Bei mindestens einer Ausführungsform können die Anfragen an einer Schnittstellenschicht 508 empfangen werden, die in diesem Beispiel Daten an einen Trainings- und Inferenzmanager 532 weiterleiten kann. Bei mindestens einer Ausführungsform kann der Trainings- und Inferenzmanager 532 eine Anforderung zum Trainieren eines neuronalen Netzes empfangen und Daten für eine Anforderung an ein Trainingsmodul 512 bereitstellen, wobei der Trainings- und Inferenzmanager 532 ein System oder einen Dienst aufweisen kann, der Hardware und Software zum Verwalten von Anforderungen und zum Bereitstellen entsprechender Daten oder Inhalte aufweist. Bei mindestens einer Ausführungsform kann das Trainingsmodul 512 ein geeignetes Modell oder neuronales Netz auswählen, das verwendet werden soll, wenn es nicht durch die Anforderung spezifiziert ist, und kann ein Modell unter Verwendung relevanter Trainingsdaten trainieren. Bei mindestens einer Ausführungsform können die Trainingsdaten ein Satz von Daten sein, der in einem Trainingsdatenspeicher 514 gespeichert ist, von der Client-Einrichtung 502 empfangen oder von einem Anbieter 524 einer dritten Partei bezogen wird. Bei mindestens einer Ausführungsform kann das Trainingsmodul 512 für die Trainingsdaten verantwortlich sein. Ein neuronales Netz kann ein beliebiges geeignetes Netzwerk sein, wie z. B. ein rückgekoppeltes neuronales Netz (RNN) oder ein faltendes neuronales Netz (CNN). Sobald ein neuronales Netz trainiert und erfolgreich ausgewertet wurde, kann ein trainiertes neuronales Netz beispielsweise in einem Modellspeicher 516 gespeichert werden, der verschiedene Modelle oder Netze für Benutzer, Anwendungen oder Dienste usw. speichern kann. Bei mindestens einer Ausführungsform kann es mehrere Modelle für eine einzelne Anwendung oder Entität geben, die basierend auf einer Reihe verschiedener Faktoren verwendet werden können.In at least one embodiment, the requests may be made at an interface layer 508 are received, which in this example data to a training and inference manager 532 can forward. In at least one embodiment, the training and inference manager 532 receive a request to train a neural network and data for a request to a training module 512 provide, being the training and inference manager 532 may have a system or a service that has hardware and software for managing requirements and for providing corresponding data or content. In at least one embodiment, the training module 512 select an appropriate model or neural network to be used if not specified by the requirement, and train a model using relevant training data. In at least one embodiment, the training data can be a set of data stored in a training data store 514 is stored by the client device 502 received or from a provider 524 a third party. In at least one embodiment, the training module 512 be responsible for the training data. A neural network can be any suitable network, such as e.g. B. a feedback neural network (RNN) or a folding neural network (CNN). As soon as a neural network has been trained and successfully evaluated, a trained neural network can, for example, be stored in a model memory 516 which can store various models or networks for users, applications or services, etc. In at least one embodiment, there may be multiple models for a single application or entity that can be used based on a number of different factors.

Bei mindestens einer Ausführungsform kann zu einem späteren Zeitpunkt eine Anforderung von der Client-Einrichtung 502 (oder einer anderen derartigen Einrichtung) für Inhalte (z. B. Pfadbestimmungen) oder Daten empfangen werden, die zumindest teilweise von einem trainierten neuronalen Netzwerk bestimmt oder beeinflusst werden. Diese Anforderung kann beispielsweise Eingabedaten aufweisen, die mit einem neuronalen Netz verarbeitet werden sollen, um eine oder mehrere Schlussfolgerungen oder andere Ausgabewerte, Klassifizierungen oder Vorhersagen zu erhalten. Bei mindestens einer Ausführungsform können die Eingabedaten von der Schnittstellenschicht 508 empfangen und an das Inferenzmodul 518 weitergeleitet werden, obwohl auch ein anderes System oder ein anderer Dienst verwendet werden kann. Bei mindestens einer Ausführungsform kann das Inferenzmodul 518 ein geeignetes trainiertes Netzwerk, wie z. B. ein trainiertes tiefes neuronales Netz (DNN), wie es hier beschrieben ist, aus dem Modellspeicher 516 beziehen, wenn es nicht bereits lokal im Inferenzmodul 518 gespeichert ist. Das Inferenzmodul 518 kann Daten als Eingabe für ein trainiertes Netzwerk bereitstellen, das dann eine oder mehrere Schlussfolgerungen als Ausgabe erzeugen kann. Dies kann z. B. eine Klassifizierung einer Instanz von Eingabedaten einschließen. Bei mindestens einer Ausführungsform können die Schlussfolgerungen dann an die Client-Einrichtung 502 zur Anzeige oder anderen Kommunikation mit einem Benutzer übertragen werden. Bei mindestens einer Ausführungsform können Kontextdaten für einen Benutzer auch in einem Benutzerkontextdatenspeicher 522 gespeichert werden, der Daten über einen Benutzer aufweisen kann, die als Eingabe für ein Netzwerk beim Erzeugen von Schlussfolgerungen oder beim Bestimmen von Daten nützlich sein können, die nach dem Erhalten von Instanzen an einen Benutzer zurückgegeben werden. In mindestens einer Ausführungsform können relevante Daten, die mindestens einige der Eingabe- oder Schlussfolgerungsdaten aufweisen, auch in einer lokalen Datenbank 534 für die Verarbeitung zukünftiger Anfragen gespeichert werden. Bei mindestens einer Ausführungsform kann ein Benutzer Kontoinformationen oder andere Informationen verwenden, um auf Ressourcen oder Funktionen einer Anbieterumgebung zuzugreifen. Bei mindestens einer Ausführungsform können, sofern zulässig und verfügbar, auch Benutzerdaten gesammelt und zum weiteren Trainieren von Modellen verwendet werden, um genauere Rückschlüsse für zukünftige Anfragen zu ermöglichen. Bei mindestens einer Ausführungsform können Anfragen über eine Benutzerschnittstelle an eine Anwendung für maschinelles Lernen 526, die auf der Client-Einrichtung 502 ausgeführt wird, empfangen werden, und die Ergebnisse werden über dieselbe Schnittstelle angezeigt. Eine Client-Einrichtung kann Ressourcen wie einen Prozessor 528 und einen Speicher 562 zum Erzeugen einer Anfrage und zum Verarbeiten von Ergebnissen oder einer Antwort, sowie mindestens ein Datenspeicherelement 552 zum Speichern von Daten für die maschinelle Lernanwendung 526 aufweisen.In at least one embodiment, a request from the client device can be made at a later date 502 (or another such device) for content (e.g. path determinations) or data that are at least partially determined or influenced by a trained neural network. This request can, for example, have input data that are to be processed with a neural network in order to obtain one or more conclusions or other output values, classifications or predictions. In at least one embodiment, the input data can be from the interface layer 508 received and to the inference module 518 forwarded, although another system or service may be used. In at least one embodiment, the inference module 518 a suitable trained network, such as B. a trained deep neural network (DNN), as described here, from the model memory 516 refer if it is not already locally in the inference module 518 is stored. The inference module 518 can provide data as input to a trained network, which can then produce one or more conclusions as output. This can e.g. B. Include a classification of an instance of input data. In at least one embodiment, the conclusions can then be passed to the client device 502 for display or other communication with a user. In at least one embodiment, context data for a user can also be stored in a user context data store 522 which may include data about a user that may be useful as input to a network in drawing conclusions or determining data that will be returned to a user after instances have been obtained. In at least one embodiment, relevant data including at least some of the input or inference data can also be in a local database 534 stored for the processing of future inquiries. In at least one embodiment, a user can use account information or other information to access resources or features of a provider environment. In at least one embodiment, if permissible and available, user data can also be collected and used for further training of models in order to enable more precise conclusions for future inquiries. In at least one embodiment, requests can be made through a user interface to a machine learning application 526 that is set up on the client 502 will be received and the results will be displayed through the same interface. A client device can have resources such as a processor 528 and a memory 562 for generating a request and for processing results or a response, as well as at least one data storage element 552 to store data for machine learning application 526 exhibit.

Bei mindestens einer Ausführungsform ist der Prozessor 528 (oder ein Prozessor des Trainingsmoduls 512 oder des Inferenzmoduls 518) eine zentrale Recheneinheit (CPU). Wie bereits erwähnt, können jedoch Ressourcen in solchen Umgebungen GPUs verwenden, um Daten für zumindest bestimmte Arten von Anfragen zu verarbeiten. Mit Tausenden von Kernen sind GPUs, wie z. B. die PPU 300, dafür ausgelegt, erhebliche parallele Arbeitslasten zu bewältigen, und sind daher beim Deep Learning für das Training neuronaler Netze und die Erstellung von Vorhersagen sehr beliebt geworden. Während die Verwendung von GPUs für Offline-Builds ein schnelleres Training größerer und komplexerer Modelle ermöglicht hat, impliziert die Offline-Erstellung von Vorhersagen, dass entweder Eingabe-Merkmale zur Anfragezeit nicht verwendet werden können oder Vorhersagen für alle Permutationen von Merkmalen generiert und in einer Nachschlagetabelle gespeichert werden müssen, um Echtzeit-Anfragen zu bedienen. Wenn ein Deep Learning-Framework einen CPU-Modus unterstützt und ein Modell klein und einfach genug ist, um ein Feed-Forward auf einer CPU mit einer angemessenen Latenz durchzuführen, dann könnte ein Dienst auf einer CPU-Instanz ein Modell hosten. In diesem Fall kann das Training offline auf einer GPU und die Inferenz in Echtzeit auf einer CPU durchgeführt werden. Wenn ein CPU-Ansatz nicht praktikabel ist, dann kann ein Dienst auf einer GPU-Instanz laufen. Da GPUs jedoch andere Leistungs- und Kosteneigenschaften als CPUs haben, kann es für die Ausführung eines Dienstes, der einen Laufzeitalgorithmus auf eine GPU auslagert, erforderlich sein, diesen anders zu gestalten als einen CPU-basierten Dienst.In at least one embodiment, the processor is 528 (or a processor of the training module 512 or the inference module 518 ) a central processing unit (CPU). However, as mentioned earlier, resources in such environments can use GPUs to process data for at least certain types of requests. With thousands of cores, GPUs such as B. the PPU 300 , designed to handle significant parallel workloads, and has become very popular in deep learning for training neural networks and making predictions. While the use of GPUs for offline builds has enabled faster training of larger and more complex models, making predictions offline implies that either input features cannot be used at request time or predictions for all permutations of features are generated and in a look-up table must be saved in order to serve real-time inquiries. If a deep learning framework supports a CPU mode and a model is small and simple enough to feed forward on a CPU with reasonable latency, then a service could host a model on one CPU instance. In this case, the training can be carried out offline on a GPU and the inference in real time on a CPU. If a CPU approach is impractical, then a service can run on a GPU instance. However, since GPUs have different performance and cost properties than CPUs, it may be necessary to design a service that outsources a runtime algorithm to a GPU differently from a CPU-based service.

Bei mindestens einer Ausführungsform können Videodaten von der Client-Einrichtung 502 zur Anreicherung in der Anbieterumgebung 506 bereitgestellt werden. Bei mindestens einer Ausführungsform können die Videodaten zur Verbesserung auf der Client-Einrichtung 502 verarbeitet werden. Bei mindestens einer Ausführungsform können Videodaten von einem Inhaltanbieter 524 einer dritten Partei gestreamt und von dem Inhaltanbieter 524 einer dritten Partei, der Anbieterumgebung 506 oder der Client-Einrichtung 502 verbessert werden. Bei mindestens einer Ausführungsform können Videodaten von der Client-Einrichtung 502 zur Verwendung als Trainingsdaten in der Anbieterumgebung 506 bereitgestellt werden.In at least one embodiment, video data from the client device 502 for enrichment in the provider environment 506 to be provided. In at least one embodiment, the video data can be enhanced on the client device 502 are processed. In at least one embodiment, video data may be from a content provider 524 streamed to a third party and from the content provider 524 a third party, the provider environment 506 or the client device 502 be improved. In at least one embodiment, video data from the client device 502 for use as training data in the provider environment 506 to be provided.

Bei mindestens einer Ausführungsform kann überwachtes und/oder nicht überwachtes Training von der Client-Einrichtung 502 und/oder der Anbieterumgebung 506 durchgeführt werden. Bei mindestens einer Ausführungsform wird ein Satz von Trainingsdaten 514 (z. B. klassifizierte oder beschriftete Daten) als Eingabe bereitgestellt, um als Trainingsdaten zu fungieren. In einer Ausführungsform kann der Satz von Trainingsdaten in einer erzeugenden gegnerischen Trainingskonfiguration verwendet werden, um ein erzeugendes neuronales Netz zu trainieren.In at least one embodiment, monitored and / or unsupervised training can be provided by the client device 502 and / or the provider environment 506 be performed. In at least one embodiment, a set of training data 514 (e.g. classified or labeled data) is provided as input to act as training data. In one embodiment, the set of training data can be used in a generating adversarial training configuration to train a generating neural network.

Bei mindestens einer Ausführungsform können die Trainingsdaten Bilder von mindestens einem menschlichen Objekt, einem Avatar, einem Charakter, einem Tier, einem Objekt oder ähnlichem aufweisen, für das ein neuronales Netz trainiert werden soll. Bei mindestens einer Ausführungsform können die Trainingsdaten Instanzen von mindestens einem Objekttyp aufweisen, für den ein neuronales Netz trainiert werden soll, sowie Informationen, die diesen Objekttyp identifizieren. Bei mindestens einer Ausführungsform können die Trainingsdaten einen Satz von Bildern aufweisen, die jeweils eine Darstellung eines Objekttyps enthalten, wobei jedes Bild auch ein Kennzeichen, Metadaten, eine Klassifizierung oder andere Informationen zur Identifizierung eines Objekttyps aufweist, der in einem entsprechenden Bild dargestellt ist, oder damit verbunden ist. Verschiedene andere Datentypen können ebenfalls als Trainingsdaten verwendet werden, wie z. B. Textdaten, Audiodaten, Videodaten usw.. Bei mindestens einer Ausführungsform werden die Trainingsdaten 514 als Trainingseingabe für ein Trainingsmodul 512 bereitgestellt. Bei mindestens einer Ausführungsform kann das Trainingsmodul 512 ein System oder ein Dienst sein, der Hardware und Software aufweist, z. B. eine oder mehrere Recheneinrichtungen, die eine Trainingsanwendung ausführen, um ein neuronales Netz (oder ein anderes Modell oder einen Algorithmus usw.) zu trainieren. Bei mindestens einer Ausführungsform kann ein Modell ein beliebiges geeignetes statistisches Modell, Netzwerk oder Algorithmus sein, das für solche Zwecke nützlich ist, wie z. B. ein künstliches neuronales Netz, ein Deep-Learning-Algorithmus, ein lernfähiger Klassifikator, ein Bayes'sches Netzwerk und so weiter. Bei mindestens einer Ausführungsform kann das Trainingsmodul 512 ein initiales Modell oder ein anderes untrainiertes Modell aus einem geeigneten Repository 516 auswählen und Trainingsdaten 514 verwenden, um ein Modell zu trainieren, wodurch ein trainiertes Modell (z. B. ein trainiertes tiefes neuronales Netz) erzeugt wird, das verwendet werden kann, um ähnliche Datentypen zu klassifizieren oder andere derartige Schlussfolgerungen zu erzeugen. Bei mindestens einer Ausführungsform, bei der keine Trainingsdaten verwendet werden, kann dennoch ein geeignetes initiales Modell für das Training auf Eingabedaten per Trainingsmodul 512 ausgewählt werden.In at least one embodiment, the training data can include images of at least one human object, an avatar, a character, an animal, an object or the like for which a neural network is to be trained. In at least one embodiment, the training data can have instances of at least one object type for which a neural network is to be trained, as well as information that identifies this object type. In at least one embodiment, the training data can have a set of images that each contain a representation of an object type, each image also having an identifier, metadata, a classification or other information for identifying an object type that is represented in a corresponding image, or associated with it. Various other types of data can also be used as training data, such as B. text data, audio data, video data, etc. In at least one embodiment, the training data 514 as training input for a training module 512 provided. In at least one embodiment, the training module 512 be a system or service comprising hardware and software, e.g. B. one or more computing devices running a training application to train a neural network (or other model or algorithm, etc.). In at least one embodiment, a model can be any suitable statistical model, network, or algorithm useful for such purposes as e.g. B. an artificial neural network, a deep learning algorithm, a learning classifier, a Bayesian network and so on. In at least one embodiment, the training module 512 an initial model or another untrained model from a suitable repository 516 select and training data 514 to train a model, thereby generating a trained model (e.g., trained deep neural network) that can be used to classify similar types of data or generate other such inferences. In at least one embodiment in which no training data is used, a suitable initial model can nevertheless be used for training on input data via a training module 512 to be selected.

Bei mindestens einer Ausführungsform kann ein Modell auf verschiedene Weise trainiert werden, was zum Teil von der Art des gewählten Modells abhängt. Bei mindestens einer Ausführungsform kann ein maschineller Lernalgorithmus mit einem Satz von Trainingsdaten versehen werden, wobei ein Modell ein Modellartefakt ist, das durch einen Trainingsprozess erstellt wird. Bei mindestens einer Ausführungsform enthält jede Instanz von Trainingsdaten eine korrekte Antwort (z. B. eine Klassifizierung), die als Ziel oder Zielattribut bezeichnet werden kann. Bei mindestens einer Ausführungsform findet ein Lernalgorithmus Muster in den Trainingsdaten, die die Attribute der Eingabedaten auf ein Ziel, eine vorherzusagende Antwort, abbilden, und es wird ein maschinelles Lernmodell ausgegeben, das diese Muster erfasst. Bei mindestens einer Ausführungsform kann ein maschinelles Lernmodell dann verwendet werden, um Vorhersagen für neue Daten zu erhalten, für die ein Ziel nicht spezifiziert ist.In at least one embodiment, a model can be trained in a number of ways, depending in part on the type of model chosen. In at least one embodiment, a machine learning algorithm can be provided with a set of training data, wherein a model is a model artifact that is created by a training process. In at least one embodiment, each instance of training data contains a correct answer (e.g., a classification) that can be referred to as a goal or a goal attribute. In at least one embodiment, a learning algorithm finds patterns in the training data that map the attributes of the input data to a goal, an answer to be predicted, and a machine learning model is output that captures these patterns. In at least one embodiment, a machine learning model can then be used to obtain predictions for new data for which a goal is not specified.

Bei mindestens einer Ausführungsform kann der Trainings- und Inferenzmanager 532 aus einem Satz von maschinellen Lernmodellen auswählen, der eine binäre Klassifikation, eine Multiklassenklassifikation, erzeugende Modelle und Regressionsmodelle aufweist. Bei mindestens einer Ausführungsform kann der Typ des zu verwendenden Modells zumindest teilweise von der Art des vorherzusagenden Ziels abhängen.In at least one embodiment, the training and inference manager 532 choose from a set of machine learning models that includes binary classification, multi-class classification, generating models, and regression models. In at least one embodiment, the type of model to be used may depend, at least in part, on the type of target to be predicted.

Bilder, die unter Anwendung einer oder mehrerer der hier offengelegten Techniken erzeugt wurden, können auf einem Monitor oder einer anderen Einrichtung angezeigt werden. Bei einigen Ausführungsformen kann die Anzeigeeinrichtung direkt mit dem System oder Prozessor gekoppelt sein, der die Bilder erzeugt oder wiedergibt. Bei anderen Ausführungsformen kann die Anzeigeeinrichtung indirekt mit dem System oder Prozessor gekoppelt sein, z. B. über ein Netzwerk. Beispiele für solche Netzwerke schließen das Internet, mobile Telekommunikationsnetzwerke, ein WIFI-Netzwerk sowie jedes andere drahtgebundene und/oder drahtlose Netzwerksystem ein. Wenn die Anzeigeeinrichtung indirekt gekoppelt ist, können die vom System oder Prozessor erzeugten Bilder über das Netzwerk an die Anzeigeeinrichtung gestreamt werden. Ein solches Streaming ermöglicht es beispielsweise, dass Videospiele oder andere Anwendungen Bilder rendern, die auf einem Server, einem Datenzentrum oder in einer Cloud-basierten Rechenumgebung ausgeführt werden, und die gerenderten Bilder auf eine oder mehrere Benutzereinrichtungen (wie z. B. einen Computer, eine Videospielkonsole, ein Smartphone, ein anderes mobiles Gerät usw.) übertragen, und wobei diese dort angezeigt werden, die physisch von dem Server oder Datenzentrum getrennt sind. Daher können die hier offengelegten Techniken angewendet werden, um die gestreamten Bilder zu verbessern und um Dienste zu verbessern, die Bilder streamen, wie NVIDIA GeForce Now (GFN), Google Stadia und dergleichen.Images generated using one or more of the techniques disclosed herein can be displayed on a monitor or other device. In some embodiments, the display device can be coupled directly to the system or processor that generates or displays the images. In other embodiments, the display device may be indirectly coupled to the system or processor, e.g. B. over a network. Examples of such networks include the Internet, mobile telecommunications networks, a WIFI network, and any other wired and / or wireless network system. When the display device is indirectly coupled, the images generated by the system or processor can be streamed over the network to the display device. Such streaming enables, for example, video games or other applications to render images running on a server, data center, or cloud-based computing environment, and the rendered images to one or more user devices (such as a computer, video game console, smartphone, other mobile device, etc.), and displaying them there, which are physically separate from the server or data center. Therefore, the techniques disclosed herein can be used to enhance the streamed images and to improve services that stream images such as NVIDIA GeForce Now (GFN), Google Stadia, and the like.

Gewichtsdemodulation für ein neuronales GeneratornetzwerkWeight demodulation for a neural generator network

Die stilbasierte GAN-Architektur (StyleGAN), die im stilbasierten Generatorsystem 100 implementiert ist, liefert beeindruckende Ergebnisse bei der datengesteuerten unabhängigen erzeugenden Bildmodellierung. Allerdings kann die stilbasierte GAN-Architektur Bilder synthetisieren, die unerwünschte Artefakte aufweisen. Wie es hier darüber hinaus beschrieben ist, können mehrere der charakteristischen Artefakte vermieden oder reduziert werden, indem die Struktur des neuronalen Synthesenetzwerks und/oder die Trainingsverfahren geändert werden. In einer Ausführungsform wird die Normalisierungsoperation umstrukturiert, und das stilbasierte Generatorsystem kann reguliert werden, um eine gute Konditionierung bei der Abbildung von latenten Vektoren auf Ausgabedaten, wie z. B. Bilder, zu fördern. Die Verbesserung der stilbasierten GAN-Architektur zur Vermeidung und/oder Reduzierung von Artefakten verbessert die Ergebnisse bei der unkonditionierten bzw. unabhängigen Bildmodellierung erheblich, sowohl in Bezug auf die vorhandenen Verteilungsqualitätsmetriken als auch auf die wahrgenommene Qualität der Ausgabedaten.The style-based GAN architecture (StyleGAN), which is in the style-based generator system 100 is implemented, delivers impressive results in data-driven independent generating image modeling. However, the style-based GAN architecture can synthesize images that have undesirable artifacts. As is also described here, several of the characteristic artifacts can be avoided or reduced by changing the structure of the neural synthesis network and / or the training methods. In one embodiment, the normalization operation is restructured and the style-based generator system can be adjusted to provide good conditioning in mapping latent vectors to output data such as B. Images, to promote. The improvement of the style-based GAN architecture to avoid and / or reduce artifacts significantly improves the results in the unconditioned or independent image modeling, both with regard to the existing distribution quality metrics and the perceived quality of the output data.

Im Folgenden werden verschiedene optionale Architekturen und Funktionen vorgestellt, mit denen der obige Rahmen nach den Wünschen des Anwenders implementiert werden kann. Es wird ausdrücklich darauf hingewiesen, dass die folgenden Informationen nur der Veranschaulichung dienen und in keiner Weise als einschränkend angesehen werden sollen. Jedes der folgenden Merkmale kann optional mit oder ohne Ausschluss anderer beschriebener Merkmale verwendet werden.In the following, various optional architectures and functions are presented with which the above framework can be implemented according to the wishes of the user. It is expressly pointed out that the following information is for illustrative purposes only and should in no way be regarded as restrictive. Each of the following features can optionally be used with or without excluding other features described.

6A zeigt Artefakte in Bildern und Merkmalskarten, die von dem stilbasierten Generatorsystem 100 gemäß einer Ausführungsform erzeugt werden können. Ein Artefakt 601 erscheint als eine klecksförmige Anomalie, die einem Wassertropfen ähnelt. Selbst wenn das Artefakt 601 in dem endgültigen Bild nicht offensichtlich ist, ist das Artefakt 602 in den Zwischen-Merkmalskarten vorhanden, die von dem neuronalen Synthesenetzwerk erzeugt werden. In einer Ausführungsform beginnt die Anomalie bei einer Auflösung von 64 x 64 zu erscheinen, ist in allen nachfolgenden Merkmalskarten vorhanden und wird bei höheren Auflösungen immer stärker. In einem anderen Beispiel ist ein Artefakt 603 in einem endgültigen Bild eines Fahrzeugs sichtbar und ein entsprechendes Artefakt 604 ist in einer Merkmalskarte vorhanden, die während der Synthese des endgültigen Ausgabebildes des Fahrzeugs erzeugt wird. In einem anderen Beispiel ist ein Artefakt 605 in einem endgültigen Ausgabebild eines Pferdes sichtbar und ein entsprechendes Artefakt 606 ist in einer Merkmalskarte vorhanden, die während der Synthese des endgültigen Ausgabebildes des Pferdes erzeugt wird. Das Vorhandensein eines solchen konsistenten Artefakts ist rätselhaft, da ein Diskriminator in der Lage sein sollte, es während des Trainings zu erkennen. 6A shows artifacts in images and feature maps generated by the style-based generator system 100 can be generated according to one embodiment. An artifact 601 appears as a blob-shaped anomaly that resembles a drop of water. Even if the artifact 601 not evident in the final picture is the artifact 602 present in the intermediate feature maps generated by the neural synthesis network. In one embodiment, the anomaly begins to appear at a resolution of 64 x 64, is present in all subsequent feature maps, and grows stronger at higher resolutions. Another example is an artifact 603 visible in a final image of a vehicle and a corresponding artifact 604 is present in a feature map that is used during the synthesis of the final output image of the vehicle is generated. Another example is an artifact 605 visible in a final output image of a horse and a corresponding artifact 606 is present in a feature map that is generated during the synthesis of the final output image of the horse. The presence of such a consistent artifact is puzzling as a discriminator should be able to detect it during training.

Die „Blob“- bzw. „Klecks“- oder „Wassertropfen“-Artefakte in Bildern, die vom neuronalen Synthesenetzwerk 140 erzeugt werden, scheinen dadurch verursacht zu werden, dass die Normalisierungsoperation, die in den Verarbeitungsschichten des neuronalen Synthesenetzwerks 140 durchgeführt wird, zu destruktiv ist und den Mittelwert und die Skala der Zwischenaktivierungen für jede Merkmalskarte vollständig entfernt. In der Tat erzeugt das stilbasierte GAN wahrscheinlich die Artefakte, um einen Konstruktionsfehler in seiner Architektur zu umgehen.The “blob” or “blob” or “water drop” artifacts in images generated by the neural synthesis network 140 appear to be caused by the normalization operation taking place in the processing layers of the neural synthesis network 140 is too destructive and completely removes the mean and scale of intermediate activations for each feature map. Indeed, the style-based GAN is likely to generate the artifacts to circumvent a design flaw in its architecture.

Ein besonderes Merkmal des stilbasierten Generatorsystems 100 ist die unkonventionelle Architektur des Generators. Anstatt den latenten Code z Z

Figure DE102021105291A1_0003
direkt als Eingabe in das neuronale Synthesenetzwerk 140 einzuspeisen, transformiert das neuronale Abbildungsnetzwerk 110 zunächst den eingegebenen latenten Code in einen latenten Zwischencode w W .
Figure DE102021105291A1_0004
Die von der Stilkonvertierungseinheit 115 durchgeführten affinen Transformationen erzeugen dann die Stilsignale, die über die adaptive Instanznormalisierung (AdaIN) die Schichten des neuronalen Synthesenetzwerks 140 steuern. Im Kontext der folgenden Beschreibung bezieht sich die Instanznormalisierung auf die Durchführung der Normalisierung separat oder unabhängig für jede Instanz oder jedes Muster (Bild), ohne Interaktion zwischen den Mustern. Im Gegensatz dazu werden bei der Batch-Normalisierung alle Muster in einem Minibatch gemeinsam normalisiert. Zusätzlich wird in einer Ausführungsform die stochastische Variation dadurch erleichtert, dass dem neuronalen Synthesenetzwerk 140 zusätzliche zufällige Rauschkarten zugeführt werden. Die Rauschkarten können in Zwischendaten eingefügt werden, die von jeder Faltungsschicht des neuronalen Synthesenetzwerks 140 ausgegeben werden. Es wurde gezeigt, dass der latente Zwischenraum W aufgrund des unkonventionellen Designs viel weniger verflochten ist als der latente Eingangsraum Z. Im Rahmen der folgenden Beschreibung konzentriert sich die Analyse ausschließlich auf W, da dies der relevante latente Raum aus der Sicht des neuronalen Synthesenetzwerks 140 ist.A special feature of the style-based generator system 100 is the unconventional architecture of the generator. Instead of the latent code z Z
Figure DE102021105291A1_0003
directly as input into the neural synthesis network 140 feed transforms the neural mapping network 110 first converts the entered latent code into an intermediate latent code w W. .
Figure DE102021105291A1_0004
The one from the style conversion unit 115 The affine transformations carried out then generate the style signals that the layers of the neural synthesis network via the adaptive instance normalization (AdaIN) 140 steer. In the context of the following description, instance normalization refers to performing normalization separately or independently for each instance or pattern (image), with no interaction between the patterns. In contrast, with batch normalization, all patterns in a minibatch are normalized together. In addition, in one embodiment, the stochastic variation is facilitated by the fact that the neural synthesis network 140 additional random noise maps can be supplied. The noise maps can be inserted into intermediate data obtained from each convolutional layer of the neural synthesis network 140 are issued. It was shown that the latent space W is much less intertwined than the latent entrance space Z due to the unconventional design. In the context of the following description, the analysis focuses exclusively on W, as this is the relevant latent space from the point of view of the neural synthesis network 140 is.

Die Artefakte werden durch die AdalN-Operation eingeführt, die den Mittelwert und die Varianz jeder Merkmalskarte separat normalisiert, wodurch potenziell alle Informationen zerstört werden, die in den Größen der Merkmale im Verhältnis zueinander gefunden werden. Das Tröpfchen-Artefakt kann ein Ergebnis des stilbasierten Generatorsystems 100 sein, das absichtlich Signalstärkeinformationen an der Instanznormalisierung vorbeischmuggelt. Genauer gesagt, durch das Erzeugen eines starken, lokalisierten Spitzenwerts, der die Statistik dominiert, kann das stilbasierte Generatorsystem 100 das Signal an anderer Stelle effektiv nach Belieben skalieren. Diese Hypothese wird durch die Feststellung gestützt, dass in einer Ausführungsform die Tröpfchen-Artefakte vollständig verschwinden, wenn der Normalisierungsschritt aus dem neuronalen Synthesenetzwerk 140 entfernt wird, wie es unten beschrieben ist.The artifacts are introduced by the AdalN operation which normalizes the mean and variance of each feature map separately, potentially destroying any information found in the sizes of the features in relation to one another. The droplet artifact can be a result of the style-based generator system 100 intentionally smuggling signal strength information past instance normalization. More specifically, by generating a strong, localized peak that dominates the statistics, the style-based generator system 100 effectively scale the signal elsewhere at will. This hypothesis is supported by the finding that, in one embodiment, the droplet artifacts completely disappear when the normalization step is removed from the neural synthesis network 140 removed as described below.

6B zeigt ein Blockdiagramm des in 2B gezeigten Verarbeitungsblocks 200 gemäß einer Ausführungsform. In dem in den 1A und 2B gezeigten neuronalen Synthesenetzwerk 140 können Stilsignale für jede Verarbeitungsstufe aktiv sein, um Attribute aufzubringen, die für die Verarbeitungsstufe spezifisch sind. In einer Ausführungsform wendet die Stilkonvertierungseinheit 115 eine gelernte affine Transformation auf W an, um jedes Stilsignal zu erzeugen. Konzeptionell werden Merkmalskarten (die den Inhalt eines Bildes repräsentieren), die von verschiedenen Verarbeitungsschichten 125, 135 und/oder 220 des neuronalen Synthesenetzwerks 140 erzeugt werden, abhängig von Stilsignalen modifiziert, die vom neuronalen Abbildungsnetzwerk 110 bereitgestellt werden. Mit anderen Worten, die Statistiken erster Ordnung werden durch stilspezifische Attribute für jede Stufe ersetzt. Im Vergleich zu den 1A und 2B wird die Operation der adaptiven Instanznormalisierung (AdaIN) innerhalb der Schichten 120 und 130 und der Module 220 in seine zwei Bestandteile zerlegt: einer Normalisierung 620, gefolgt von einer Modulation 625, die beide auf den Mittelwert und die Standardabweichung pro Merkmalskarte einwirken. Die Normalisierung 620 wird für jede Stilanwendung durchgeführt, um eine Akkumulation des jeweiligen Stils in den nachfolgenden Stufen zu vermeiden, in denen verschiedene Stile mit verschiedenen Skalen angewendet werden können. 6B shows a block diagram of the in 2 B processing blocks shown 200 according to one embodiment. In the in the 1A and 2 B shown neural synthesis network 140 Style signals may be active for each processing stage to apply attributes specific to that processing stage. In one embodiment, the style conversion unit applies 115 applies a learned affine transform on W to generate each style signal. Conceptually, feature maps (which represent the content of an image) are generated by different processing layers 125 , 135 and or 220 of the neural synthesis network 140 are generated depending on style signals modified by the neural mapping network 110 to be provided. In other words, the first order statistics are replaced by style-specific attributes for each level. Compared to the 1A and 2 B becomes the operation of adaptive instance normalization (AdaIN) within the layers 120 and 130 and the modules 220 broken down into its two components: a normalization 620 followed by a modulation 625 , both of which act on the mean and the standard deviation per feature map. The normalization 620 is performed for each style application in order to avoid the accumulation of the respective style in the subsequent stages in which different styles with different scales can be applied.

Vor der Normalisierung 620 kann durch ein Element 610 räumliches Rauschen in die ersten Zwischendaten eingefügt werden. In einer Ausführungsform sind die ersten Zwischendaten die gelernte Konstante oder das Eingabemuster. In einer Ausführungsform (nicht dargestellt) kann zusammen mit dem räumlichen Rauschen auch ein Bias für jede Skala angewendet werden. Gelernte Parameter (Gewichte) werden von jeder Faltungsschicht 225 angewendet. Ein Stilblock 600, der mindestens die Faltungsschicht 225, die Normalisierung 620, das Einfügen des räumlichen Rauschens durch das Element 610 und eine Demodulation 625 aufweist, kann umstrukturiert werden, um Artefakte durch Demodulation der Gewichte zu entfernen (anstelle einer Normalisierung der Aktivierungen). Interessanterweise wendet das neuronale Synthesenetzwerk 140 das räumliche Rauschen innerhalb des Verarbeitungsblocks 200 an, was dazu führt, dass eine relative Auswirkung des räumlichen Rauschens umgekehrt proportional zu einer Größe des Stilsignals ist, das an dem Verarbeitungsblock 200 aufgebracht wird. Besser vorhersehbare Ergebnisse können erzielt werden, wenn die Einfügeoperation außerhalb des Verarbeitungsblocks 200 stattfindet, so dass die Einfügung stattdessen auf normierten Daten arbeitet.Before normalization 620 can through an element 610 spatial noise can be inserted into the first intermediate data. In one embodiment, the first intermediate data is the learned constant or the input pattern. In one embodiment (not shown), a bias for each scale can also be applied along with the spatial noise. Learned parameters (weights) are used by each convolutional layer 225 applied. A style block 600 , of at least the folding layer 225 who have favourited normalization 620 , the introduction of spatial noise by the element 610 and demodulation 625 having, can be restructured to remove artifacts by demodulating the weights (instead of normalizing the activations). Interestingly, the neural synthesis network is turning 140 the spatial noise within the processing block 200 which results in a relative impact of the spatial noise being inversely proportional to a size of the style signal delivered to the processing block 200 is applied. More predictable results can be obtained if the insert operation is outside the processing block 200 takes place so that the insertion works on normalized data instead.

6C stellt ein Blockdiagramm eines Stilblocks 640 dar, der bei der Implementierung einiger Ausführungsformen der vorliegenden Offenbarung verwendet werden kann. Im Vergleich zu dem in 6B dargestellten Verarbeitungsblock 200 ist die Einfügung des räumlichen Rauschens (und des Bias) durch das Element 610 außerhalb des Stilblocks 640 angeordnet. Mit anderen Worten, das räumliche Rauschen und der Bias werden unabhängig von jedem Stil, der in einem Stilsignal kodiert ist, angewendet. In einer Ausführungsform ist es nach dem Verschieben der Einfügeoperation außerhalb des Stilblocks 600 zur Erzeugung des Stilblocks 640 ausreichend, dass die Normalisierung und Modulation nur auf der Standardabweichung beruhen (d. h. der Mittelwert wird nicht benötigt). In einer Ausführungsform kann auch die Anwendung des Bias, des räumlichem Rauschens und der Normalisierung auf das Eingabemuster (z. B. erste Zwischendaten) sicher und ohne nennenswerte Nachteile entfernt werden. 6C Figure 3 illustrates a block diagram of a style block 640 that can be used in implementing some embodiments of the present disclosure. Compared to the in 6B processing block shown 200 is the element's introduction of spatial noise (and bias) 610 outside of the style block 640 arranged. In other words, the spatial noise and the bias are applied regardless of any style encoded in a style signal. In one embodiment, after moving the insert operation, it is outside of the style block 600 to create the style block 640 sufficient that the normalization and modulation are based on the standard deviation only (ie the mean is not needed). In one embodiment, the application of the bias, the spatial noise and the normalization to the input pattern (e.g. first intermediate data) can also be removed safely and without significant disadvantages.

Im Vergleich zu der Normalisierung 620 und Modulation 625 in dem Stilblock 600 wird die Modulation des Mittelwerts entfernt und die Modulationseinheit 630 und die Normalisierungseinheit 635 arbeiten nur mit der Standardabweichung. Die Modulationseinheit 630 moduliert die ersten Zwischendaten basierend auf dem Stilsignal, um modulierte Merkmale zu erzeugen. In einer Ausführungsform kann der Stilblock 640 zusätzlich zu der Modulationseinheit 630, der Faltungsschicht 225 und der Normalisierungseinheit 635 auch einen Upsampler 632 aufweisen, der ähnliche Operationen wie der Upsampler 235 in 2B durchführt. Die modulierten Merkmale werden einem Upsampling unterzogen (oder nicht) und in die Faltungsschicht 225 als Eingabeaktivierungen eingegeben. Die Parameter werden von der Faltungsschicht 225 auf die Eingabeaktivierungen angewendet, um Ausgabeaktivierungen zu erzeugen.Compared to normalization 620 and modulation 625 in the style block 600 the modulation of the mean value is removed and the modulation unit 630 and the normalization unit 635 only work with the standard deviation. The modulation unit 630 modulates the first intermediate data based on the style signal to produce modulated features. In one embodiment, the style block 640 in addition to the modulation unit 630 , the folding layer 225 and the normalization unit 635 also an upsampler 632 have similar operations as the upsampler 235 in 2 B performs. The modulated features are upsampled (or not) and put into the convolutional layer 225 entered as input activations. The parameters are from the convolutional layer 225 applied to the input activations to produce output activations.

Der Stilblock 640 kann umstrukturiert werden, um die Stärke der Normalisierungsoperation zu verringern oder zu reduzieren, während die skalenspezifischen Effekte der Stile beibehalten werden. Das einfache Entfernen der Instanznormalisierungsoperation verbessert die Bildqualität (z. B. werden die Klecks-Artefakte entfernt). Das Entfernen der Instanznormalisierung führt jedoch auch dazu, dass die Effekte der Stile kumulativ und nicht spezifisch für jede Skala sind. Daher ist die Steuerbarkeit, die skalenspezifische Stile für die Synthese bieten, stark eingeschränkt. Eine Alternative, die die Artefakte beseitigt und gleichzeitig die Steuerbarkeit beibehält, ist die Normalisierung auf Basis der erwarteten Statistiken der eingehenden Merkmalskarten, jedoch ohne explizite Erzwingung.The style block 640 can be restructured to decrease or decrease the strength of the normalize operation while maintaining the scale-specific effects of the styles. Simply removing the instance normalization operation improves image quality (e.g., it removes the blob artifacts). However, removing instance normalization also causes the styles' effects to be cumulative and not specific to each scale. Therefore, the controllability that scale-specific styles provide for synthesis is severely limited. An alternative that eliminates the artifacts while maintaining controllability is normalization based on the expected statistics of the incoming feature maps, but without explicit enforcement.

Der Stilblock 640 in 6C weist zumindest die Modulationseinheit 630, die Faltungsschicht 225 und die Normalisierungseinheit 635 auf. Der Effekt einer Modulation, gefolgt von einer Faltung, ist, dass die Modulation jede eingegebene Merkmalskarte der Faltung basierend auf dem eingehenden Stil skaliert, was alternativ durch eine Skalierung der Faltungsgewichte implementiert werden kann: w i j k ' = s i w i j k ,

Figure DE102021105291A1_0005
wobei w und w' die ursprünglichen bzw. modulierten Gewichte sind, si der Skalierungsfaktor ist, der der i-ten eingegebenen Merkmalskarte entspricht, und j und k die Ausgabe-Merkmalskarten bzw. einen räumlichen Footprint bzw. Fußabdruck der Faltung spezifizieren.The style block 640 in 6C has at least the modulation unit 630 , the folding layer 225 and the normalization unit 635 on. The effect of a modulation followed by a convolution is that the modulation scales each input feature map of the convolution based on the incoming style, which can alternatively be implemented by scaling the convolution weights: w i j k ' = s i w i j k ,
Figure DE102021105291A1_0005
where w and w 'are the original and modulated weights, respectively, s i is the scaling factor corresponding to the i-th input feature map, and j and k specify the output feature maps and a spatial footprint of the convolution, respectively.

Der Zweck der Instanznormalisierung besteht nun darin, den Effekt von s aus der Statistik der von jeder Faltung erzeugten Ausgabe-Merkmalskarten zu entfernen. Das Ziel, den Effekt von s aus den Ausgabe-Merkmalskarten zu entfernen, kann direkter erreicht werden. Unter der Annahme, dass die Zwischendaten, die in den Stilblock 640 eingegeben werden, unabhängige und identisch verteilte (independent and identically distributed (i.i.d.)) Zufallsvariablen mit Einheitsstandardabweichung sind, haben dann die von der Faltungsschicht 225 erzeugten Ausgabeaktivierungen nach der Modulation und Faltung eine Standardabweichung von σ j = i , k w i j k ' 2 ,

Figure DE102021105291A1_0006
d. h., jede Ausgabe-Merkmalskarte wird mit der L2-Norm der entsprechenden Gewichte skaliert. Die anschließende Normalisierung zielt darauf ab, die Ausgabeaktivierungen wieder auf eine Einheitsstandardabweichung zurückzubringen. Basierend auf der Gleichung (3) wird die Wiederherstellung der Ausgaben erreicht, wenn jede Ausgabe-Merkmalskarte j mit 1/σj skaliert („demoduliert“) wird. Alternativ kann die Demodulation auch in die Faltungsgewichte integriert werden: w i j k ' ' = w i j k ' i , k w i j k ' 2 + ε ,
Figure DE102021105291A1_0007
wobei ∈ eine kleine Konstante ist, um numerische Probleme zu vermeiden.The purpose of instance normalization is now to remove the effect of s from the statistics of the output feature maps generated by each convolution. The goal of removing the effect of s from the output feature maps can be achieved more directly. Assuming the intermediate data going into the style block 640 are entered, independent and identically distributed (iid) random variables with unit standard deviation, then have those from the convolutional layer 225 generated output activations after modulation and convolution a standard deviation of σ j = i , k w i j k ' 2 ,
Figure DE102021105291A1_0006
that is, each output feature map is scaled with the L 2 norm of the corresponding weights. The subsequent normalization aims to bring the output activations back to a unit standard deviation. Based on equation (3), the restoration of the outputs is achieved when each output feature map j is scaled (“demodulated”) with 1 / σj. Alternatively, the demodulation can also be integrated into the convolution weights: w i j k ' ' = w i j k ' i , k w i j k ' 2 + ε ,
Figure DE102021105291A1_0007
where ∈ is a small constant to avoid numerical problems.

Im Hinblick auf die praktische Umsetzung der Gleichungen (2) und (4) ist es wichtig zu beachten, dass der resultierende Satz von Gewichten für jedes Muster in einem Minibatch unterschiedlich sein wird, was eine direkte Umsetzung mit Standard-Faltungsprimitiven ausschließen kann. In einer Ausführungsform können gruppierte Faltungen verwendet werden, um die Gewichte und Aktivierungen vorübergehend umzuformen, so dass jede Faltung ein Muster mit N Gruppen sieht - anstelle von N Mustern mit einer Gruppe. Die gruppierten Faltungen sind effizient, weil die Umformungsoperationen den Inhalt der Gewichts- und Aktivierungstensoren nicht tatsächlich verändern. In einer anderen Ausführungsform können explizite Skalierungsoperationen vor und nach der Faltung verwendet werden.In view of the practical implementation of equations (2) and (4), it is important to note that the resulting set of weights will be different for each pattern in a minibatch, which can preclude direct implementation with standard convolution primitives. In one embodiment, grouped folds can be used to temporarily reshape the weights and activations so that each fold sees a pattern with N groups instead of N patterns with one group. The grouped convolutions are efficient because the transformation operations do not actually change the content of the weight and activation tensors. In another embodiment, explicit scaling operations before and after the convolution can be used.

6D stellt ein Blockdiagramm eines Stilblocks 645 dar, der bei der Implementierung einiger Ausführungsformen der vorliegenden Offenbarung verwendet werden kann. Die Normalisierungseinheit 635 in dem Stilblock 640 wird durch eine „Demodulations“-Operation ersetzt, die auf die mit jeder Faltungsschicht 225 verbundenen Gewichte in dem Stilblock 645 angewendet wird. Es sollte verstanden werden, dass diese und andere Anordnungen, wie es hier beschrieben ist, nur als Beispiele dargestellt werden. Andere Anordnungen und Elemente (z. B. Maschinen, Schnittstellen, Funktionen, Anordnungen, Gruppierungen von Funktionen usw.) können zusätzlich zu oder anstelle der gezeigten verwendet werden, und einige Elemente können ganz weggelassen werden. Darüber hinaus sind viele der hier beschriebenen Elemente funktionale Einheiten, die als einzelne oder verteilte Komponenten oder in Verbindung mit anderen Komponenten und in jeder geeigneten Kombination und an jedem geeigneten Ort implementiert werden können. Verschiedene Funktionen, wie es hier beschrieben ist, können durch Hardware, Firmware und/oder Software ausgeführt werden. Beispielsweise können verschiedene Funktionen von einem Prozessor ausgeführt werden, der im Speicher gespeicherte Anweisungen ausführt. Darüber hinaus versteht der Fachmann, dass jedes System, das die Operationen des Stilblocks 640 oder 645 ausführt, innerhalb des Umfangs und des Geistes der Ausführungsformen der vorliegenden Offenbarung liegt. 6D Figure 3 illustrates a block diagram of a style block 645 that can be used in implementing some embodiments of the present disclosure. The normalization unit 635 in the style block 640 is replaced by a "demodulation" operation that is applied to the with each convolutional layer 225 associated weights in the style block 645 is applied. It should be understood that these and other arrangements as described herein are presented as examples only. Other arrangements and elements (e.g., machines, interfaces, functions, arrangements, groupings of functions, etc.) may be used in addition to or in place of those shown, and some elements may be omitted entirely. In addition, many of the elements described herein are functional units that can be implemented as individual or distributed components, or in conjunction with other components, and in any suitable combination and location. Various functions as described here can be performed by hardware, firmware and / or software. For example, various functions can be performed by a processor executing instructions stored in memory. In addition, those skilled in the art understand that any system that performs the operations of the style block 640 or 645 is within the scope and spirit of the embodiments of the present disclosure.

Wie in 6D dargestellt ist, werden anstelle der Normalisierung der Merkmale (z. B. der Zwischendaten) die Gewichte basierend auf der „erwarteten Statistik“ der Zwischendaten normalisiert. Da eine Faltung ein linearer Operator ist, ist die Skalierung der Gewichte äquivalent zu der Skalierung der Merkmale. Daher werden im Vergleich zu dem Stilblock 640 die Modulationseinheit 630 und die Normalisierungseinheit 635 aus der Verarbeitung der Merkmale entfernt und eine Modulationseinheit 650 und eine Demodulationseinheit 655 in den Verarbeitungspfad für die Gewichte eingefügt.As in 6D is shown, instead of normalizing the features (e.g. the intermediate data), the weights are normalized based on the “expected statistics” of the intermediate data. Since convolution is a linear operator, the scaling of the weights is equivalent to the scaling of the features. Therefore, compared to the style block 640 the modulation unit 630 and the normalization unit 635 removed from the processing of the features and a modulation unit 650 and a demodulation unit 655 inserted into the processing path for the weights.

Die Gewichte werden zuerst von der Modulationseinheit 650 mit dem Stilsignal moduliert, um modulierte Gewichte zu erzeugen. Die Modulation der Gewichte ist äquivalent zu einer Skalierung der ersten Zwischendaten durch die Modulationseinheit 630, um die modulierten Merkmale in dem Stilblock 640 zu erzeugen. In dem Stilblock 645 werden die eingegebenen Merkmale optional durch den Upsampler 632 einem Upsampling unterzogen und der Faltungsschicht 225 eingegeben, um Ausgabemerkmale zu erzeugen. Es wird eine erwartete Standardabweichung der Ausgabemerkmale berechnet, wobei angenommen wird, dass die Eingabemerkmale normalverteilt sind. Schließlich werden die modulierten Gewichte von der Demodulationseinheit 655 demoduliert, basierend auf der erwarteten Standardabweichung, um normalisierte Gewichte zu erzeugen. Die Demodulation der modifizierten Gewichte ist äquivalent zu einer Skalierung der von der Faltungsschicht 225 erzeugten Ausgabemerkmale. Räumliches Rauschen wird optional in die Ausgabemerkmale eingefügt, um modifizierte Merkmale zu erzeugen. Ein neuronales Synthesenetzwerk, das mindestens einen Stilblock 645 aufweist, kann dann Ausgabedaten (z. B. Bilder) entsprechend den Stilen erzeugen, jedoch ohne die „Klecks“-Artefakte oder mit deutlich reduzierten Artefakten.The weights are first provided by the modulation unit 650 modulated with the style signal to produce modulated weights. The modulation of the weights is equivalent to a scaling of the first intermediate data by the modulation unit 630 to find the modulated features in the style block 640 to create. In the style block 645 the entered characteristics are optionally carried out by the upsampler 632 upsampled and the convolutional layer 225 input to generate output features. An expected standard deviation of the output characteristics is calculated, assuming that the input characteristics are normally distributed. Finally, the modulated weights are used by the demodulation unit 655 demodulates based on the expected standard deviation to produce normalized weights. The demodulation of the modified weights is equivalent to scaling that of the convolutional layer 225 generated output characteristics. Spatial noise is optionally inserted into the output features to create modified features. A neural synthesis network that contains at least one style block 645 can then generate output data (e.g. images) according to the styles, but without the “blob” artifacts or with significantly reduced artifacts.

Die Gewichte für jede Faltungsschicht 225 werden innerhalb des Stilblocks 645 basierend auf s unter Verwendung der Gleichungen (2) und (4) angepasst. Um zu vermeiden, dass die Aktivierungsfunktion in Gleichung (4) berücksichtigt werden muss, können die Aktivierungsfunktionen so skaliert werden, dass sie die erwartete Signalvarianz beibehalten. Im Vergleich zur Instanznormalisierung ist das Demodulationsverfahren schwächer, da es auf statistischen Annahmen über das Signal basiert, anstatt auf tatsächlichen Inhalten der Merkmalskarten. Insgesamt wird die statistische Analyse durch den Stilblock 645 als Ersatz für die datenabhängige Normierung implementiert.The weights for each folding layer 225 are within the style block 645 adjusted based on s using equations (2) and (4). To avoid the activation function in Equation (4) has to be taken into account, the activation functions can be scaled so that they maintain the expected signal variance. Compared to instance normalization, the demodulation method is weaker because it is based on statistical assumptions about the signal, rather than on the actual contents of the feature maps. Overall, the statistical analysis is carried out by the style block 645 implemented as a replacement for the data-dependent normalization.

6E stellt ein Flussdiagramm eines Verfahrens 660 zur Demodulation von Gewichten, die von einem erzeugenden neuronalen Netz angewendet werden, gemäß einer Ausführungsform dar. Jeder Block des Verfahrens 660, wie es hier beschrieben ist, umfasst einen Rechenprozess, der mit einer beliebigen Kombination aus Hardware, Firmware und/oder Software durchgeführt werden kann. Beispielsweise können verschiedene Funktionen von einem Prozessor ausgeführt werden, der im Speicher gespeicherte Anweisungen ausführt. Das Verfahren kann auch als computerverwendbare Anweisungen, die auf Computerspeichermedien gespeichert sind, ausgeführt werden. Das Verfahren kann durch eine eigenständige Anwendung, einen Dienst oder einen gehosteten Dienst (eigenständig oder in Kombination mit einem anderen gehosteten Dienst) oder ein Plug-in für ein anderes Produkt bereitgestellt werden, um nur einige Beispiele zu nennen. Darüber hinaus wird das Verfahren 660 beispielhaft in Bezug auf den Stilblock 645 der 6D beschrieben. Dieses Verfahren kann jedoch zusätzlich oder alternativ von einem beliebigen System oder einer beliebigen Kombination von Systemen ausgeführt werden, einschließlich, aber nicht beschränkt auf die hier beschriebenen Systeme. Darüber hinaus versteht der Fachmann, dass jedes System, das das Verfahren 660 durchführt, in den Anwendungsbereich und den Geist der Ausführungsformen der vorliegenden Offenbarung fällt. 6E provides a flow diagram of a method 660 for demodulating weights applied by a generating neural network, according to an embodiment. Each block of the method 660 as described herein includes a computing process that can be performed with any combination of hardware, firmware, and / or software. For example, various functions can be performed by a processor executing instructions stored in memory. The method can also be carried out as computer-usable instructions stored on computer storage media. The method can be provided by a stand-alone application, service or hosted service (stand-alone or in combination with another hosted service) or a plug-in for another product, to name just a few examples. In addition, the procedure 660 exemplary in relation to the style block 645 the 6D described. However, this method can additionally or alternatively be performed by any system or combination of systems including, but not limited to, the systems described herein. In addition, those skilled in the art understand that any system that incorporates the method 660 performs falls within the scope and spirit of the embodiments of the present disclosure.

In Schritt 665 empfängt der Stilblock 645 erste Gewichte zum Modifizieren erster Merkmale in einer ersten Stufe eines neuronalen Generatornetzwerks, das mehrere Stufen aufweist, wobei eine letzte Stufe des neuronalen Generatornetzwerks Ausgabedaten erzeugt. In einer Ausführungsform wird das neuronale Synthesenetzwerk 140 des stilbasierten Generatorsystems 100 umstrukturiert, um den Stilblock 645 zu implementieren, um die Ausgabedaten zu erzeugen. In einer Ausführungsform werden die Komponenten der ersten Zwischendaten, die in das neuronale Synthesenetzwerk 140 eingegeben werden, während des Trainings angepasst und mit N(0,1) initialisiert. In einer anderen Ausführungsform entsprechen die ersten Zwischendaten zusätzlichen Eingabedaten, wie z. B. einem Referenzbild (oder werden daraus abgeleitet).In step 665 receives the style block 645 first weights for modifying first features in a first stage of a neural generator network having a plurality of stages, a last stage of the neural generator network generating output data. In one embodiment, the neural synthesis network 140 of the style-based generator system 100 restructured to the style block 645 to be implemented to generate the output data. In one embodiment, the components of the first intermediate data that are in the neural synthesis network 140 can be entered, adjusted during training and initialized with N (0.1). In another embodiment, the first intermediate data correspond to additional input data, such as e.g. B. a reference image (or are derived from it).

In Schritt 670 moduliert die Modulationseinheit 650 die ersten Gewichte mit einem ersten Stil-Steuersignal, um erste modulierte Gewichte zu erzeugen. In Schritt 675 demoduliert die Demodulationseinheit 655 die ersten modulierten Gewichte, um erste normalisierte Gewichte zu erzeugen. In einer Ausführungsform führen die Modulationseinheit 650 und die Demodulationseinheit 655 eine Demodulation durch, um die Gewichte (anstelle von Aktivierungen) auf einer Pro-Muster-Basis zu ändern. Mit anderen Worten, die Gewichte können für jede ersten Zwischendaten moduliert werden, die in das neuronale Synthesenetzwerk 140 eingegeben wird. In Schritt 680 werden die ersten normalisierten Gewichte von der ersten Stufe angewendet, um modifizierte erste Merkmale zu erzeugen. In einer Ausführungsform sind die modifizierten ersten Merkmale die von dem Stilblock 645 erzeugten Ausgabemerkmale. In einer Ausführungsform sind die modifizierten ersten Merkmale modifizierte Merkmale, die aus dem Einfügen von räumlichem Rauschen in die Ausgabemerkmale resultieren. In Schritt 685 werden die modifizierten ersten Merkmale durch mindestens eine zusätzliche Stufe des neuronalen Generatornetzwerks verarbeitet, um die Ausgabedaten zu erzeugen, die einen den ersten Merkmalen entsprechenden Inhalt aufweisen.In step 670 modulates the modulation unit 650 the first weights with a first style control signal to generate first modulated weights. In step 675 demodulates the demodulation unit 655 the first modulated weights to produce first normalized weights. In one embodiment, the modulation unit perform 650 and the demodulation unit 655 demodulates to change the weights (instead of activations) on a per-pattern basis. In other words, the weights can be modulated for each first intermediate data entering the neural synthesis network 140 is entered. In step 680 the first normalized weights from the first stage are applied to generate modified first features. In one embodiment, the modified first features are those of the style block 645 generated output characteristics. In one embodiment, the modified first features are modified features resulting from the introduction of spatial noise into the output features. In step 685 the modified first features are processed by at least one additional stage of the neural generator network in order to generate the output data which have a content corresponding to the first features.

In einer Ausführungsform umfasst die mindestens eine zusätzliche Stufe einen anderen Stilblock 645. In einer Ausführungsform wird räumliches Rauschen und/oder ein Bias eingefügt, um die modifizierten Merkmale weiter zu modifizieren, wodurch modifizierte Zwischendaten erzeugt werden, die von der mindestens einen zusätzlichen Stufe des neuronalen Generatornetzwerks verarbeitet werden. In einer Ausführungsform sind die Gewichtungsmodulations- und Demodulationsoperationen in einem neuronalen Synthesenetzwerk enthalten, das eine oder mehrere Stufen umfasst, die jeweils einen Stilblock 645 aufweisen, und die Demodulationsoperation wird in dem Ausgabestilblock 645 weggelassen.In one embodiment, the at least one additional level comprises a different style block 645 . In one embodiment, spatial noise and / or a bias is introduced in order to further modify the modified features, as a result of which modified intermediate data are generated which are processed by the at least one additional stage of the neural generator network. In one embodiment, the weight modulation and demodulation operations are contained in a neural synthesis network that includes one or more stages, each of which is a style block 645 and the demodulation operation is performed in the output style block 645 omitted.

6F stellt gemäß einer Ausführungsform Ausgabebilder 662 und modifizierte Merkmalskarten 664 und 668 dar, die durch eine Gewichtsdemodulation erzeugt werden. Im Vergleich zu den Ausgabebildern in 6A fehlen in den Ausgabebildern 662 die sichtbaren Artefakte oder sind stark reduziert. In ähnlicher Weise fehlen sichtbare Artefakte in den modifizierten Merkmalskarten 664 und 668, die von Stilblöcken 645 für verschiedene Skalen erzeugt werden, oder sind stark reduziert. Die Reduzierung und/oder Entfernung von Artefakten wird erreicht, während die volle Steuerbarkeit der Stile bei verschiedenen Skalen erhalten bleibt. Außerdem kann die Trainingszeit durch einen vereinfachten Datenfluss für eine Modulation und Demodulation der Gewichte anstelle der Merkmalskarten reduziert werden. 6F provides output images according to one embodiment 662 and modified feature maps 664 and 668 generated by weight demodulation. Compared to the output images in 6A are missing in the output images 662 the visible artifacts or are greatly reduced. Similarly, there are no visible artifacts in the modified feature maps 664 and 668 made by style blocks 645 can be generated for different scales, or are greatly reduced. Reduction and / or removal of artifacts is achieved while maintaining full controllability of styles at different scales. In addition, the training time can be reduced by a simplified data flow for modulation and demodulation of the weights instead of the feature maps.

Glättungsregularisierung für ein neuronales GeneratornetzwerkSmoothing regularization for a neural generator network

Ein Glättungsregularisierungs-Verfahren kann auch in Kombination mit oder unabhängig von der Gewichtsdemodulation verwendet werden, um die Qualität der von einem neuronalen Generatornetzwerk erzeugten Ausgabedaten zu verbessern. Die glättende Regularisierung bzw. Glättungsregularisierung versucht sicherzustellen, dass kleine Änderungen in der Eingabe in ein neuronales Netz kleine Änderungen in der Ausgabe verursachen, und zwar so, dass die Größe der Änderung über den Raum der möglichen Eingaben sowie der möglichen Richtungen der Änderung der Eingaben gleichmäßig bleibt. Mit anderen Worten, kleine Änderungen in dem latenten Raum (oder dem latenten Zwischenraum, der wiederum die Stilsignale ändert) sollten zu kleinen Änderungen in dem Ausgaberaum (z. B. Bilder) führen. Ziel ist es, eine Gleichverteilung der Änderungen in dem Eingaberaum und eine Gleichverteilung der entsprechenden Änderungen in dem Ausgaberaum zu erreichen. Das Glättungsregularisierungs-Verfahren kann verwendet werden, um eine glatte Transformation zwischen einem latenten Raum und den Ausgabedaten, zwischen den ersten Zwischendaten und entweder anderen Zwischendaten oder der Ausgabe, zwischen zwei beliebigen Zwischendaten oder zwischen beliebigen Zwischendaten und der Ausgabe zu fördern.A smoothing regularization method can also be used in combination with or independently of the weight demodulation in order to improve the quality of the output data generated by a neural generator network. Smoothing regularization tries to ensure that small changes in the input to a neural network cause small changes in the output, in such a way that the size of the change is uniform over the space of the possible inputs as well as the possible directions of the change of the inputs remain. In other words, small changes in latent space (or the latent space which in turn changes the style signals) should result in small changes in output space (e.g., images). The aim is to achieve an equal distribution of the changes in the input space and an equal distribution of the corresponding changes in the output space. The smoothing regularization method can be used to promote a smooth transformation between a latent space and the output data, between the first intermediate data and either other intermediate data or the output, between any two intermediate data, or between any intermediate data and the output.

Eine Metrik, die zur Messung der Glattheit verwendet werden kann, kann auch eine verbesserte Qualität in den Ausgabedaten anzeigen. Während des Trainings kann die Metrik verwendet werden, um die gelernten Parameter des stilbasierten Generatorsystems 100 anzupassen. Insbesondere können die Gewichte für das neuronale Synthesenetzwerk 140 durch Glättungsregularisierung angepasst werden, um sowohl die Metrik als auch die Qualität der Ausgabedaten zu verbessern.A metric that can be used to measure smoothness can also indicate improved quality in the output data. During training, the metric can be used to calculate the learned parameters of the style-based generator system 100 adapt. In particular, the weights for the neural synthesis network 140 adjusted by smoothing regularization to improve both the metric and the quality of the output data.

Für die quantitative Analyse der Qualität von Bildern, die mit erzeugenden Verfahren erzeugt wurden, stehen mehrere Metriken zur Verfügung. Die Frechet-Inception-Distanz (FID) misst Unterschiede in der Dichte von zwei Verteilungen in dem hochdimensionalen Merkmalsraum eines InceptionV3-Klassifikators. Precision und Recall (P&R) stellen eine zusätzliche Sichtbarkeit bereit, indem sie explizit den Prozentsatz der erzeugten Bilder, die den Trainingsdaten ähnlich sind, bzw. den Prozentsatz der Trainingsdaten, die erzeugt werden können, quantifizieren. Während FID und P&R erfolgreich viele Aspekte eines Generators erfassen, haben beide Metriken eine Art blinden Fleck für die Bildqualität. FID und P&R basieren auf Klassifizierungsnetzwerken, von denen kürzlich gezeigt wurde, dass sie sich eher auf Texturen als auf Formen konzentrieren, und folglich erfassen diese Metriken nicht alle Aspekte der Bildqualität genau. Eine Metrik der perzeptuellen Pfadlänge (perceptual path length, PPL), die ursprünglich als Verfahren zur Schätzung der Qualität von Interpolationen eines latenten Raums eingeführt wurde, korreliert mit der Konsistenz und Stabilität von Formen. PPL quantifiziert die Glattheit einer Transformation, indem sie die erwartete Pfadlänge eines zufälligen Interpolationspfades in dem latenten Zwischenraum schätzt, gemessen in Form von wahrnehmbaren Veränderungen des Bildes im Verlauf der Interpolation. Die PPL-Metrik kann für einzelne Bilder berechnet werden (pro Bild PPL), indem infinitesimal kurze Interpolationspfade in der unmittelbaren Umgebung eines bestimmten Bildes berücksichtigt werden. In einer Ausführungsform kann das neuronale Synthesenetzwerk 140 auf der Grundlage der PPL-Metrik trainiert werden, um glatte Transformationen zu begünstigen und eine Verbesserung der Qualität der erzeugten Ausgabedaten zu erreichen.Several metrics are available for the quantitative analysis of the quality of images that have been generated using generating processes. The Frechet-Inception-Distance (FID) measures differences in the density of two distributions in the high-dimensional feature space of an InceptionV3 classifier. Precision and Recall (P&R) provide additional visibility by explicitly quantifying the percentage of generated images that are similar to training data and the percentage of training data that can be generated, respectively. While FID and P&R successfully capture many aspects of a generator, both metrics have a kind of blind spot for image quality. FID and P&R are based on classification networks that have recently been shown to focus on textures rather than shapes, and consequently these metrics do not accurately capture all aspects of image quality. A perceptual path length (PPL) metric, originally introduced as a method of estimating the quality of interpolations of latent space, correlates with the consistency and stability of shapes. PPL quantifies the smoothness of a transformation by estimating the expected path length of a random interpolation path in the latent space, measured in terms of perceptible changes in the image as the interpolation progresses. The PPL metric can be calculated for individual images (PPL per image) by taking infinitesimally short interpolation paths in the immediate vicinity of a specific image into account. In one embodiment, the neural synthesis network 140 can be trained on the basis of the PPL metric in order to favor smooth transformations and to achieve an improvement in the quality of the output data generated.

7A stellt gemäß einer Ausführungsform Bilder dar, die von dem stilbasierten Generatorsystem 100 erzeugt wurden und hohe PPL-Werte (lange Interpolationspfade) aufweisen. Die sechs Bilder weisen jeweils eine Katze auf, aber in jedem Bild ist die Form der Katze verzerrt und/oder diskontinuierlich, manchmal mit anderen Szenenelementen vermengt. Mit anderen Worten, den sechs Bildern in 7A fehlt es an semantischer Konsistenz. Der für jedes der Bilder in 7A berechnete PPL-Wert liegt in den oberen 90-ten Perzentilen eines Satzes zufälliger Beispielbilder, die vom stilbasierten Generatorsystem 100 erzeugt wurden. 7A represents images generated by the style-based generator system, according to one embodiment 100 and have high PPL values (long interpolation paths). The six images each feature a cat, but in each image the shape of the cat is distorted and / or discontinuous, sometimes blended with other elements of the scene. In other words, the six images in 7A there is a lack of semantic consistency. The one for each of the images in 7A The calculated PPL is in the top 90th percentile of a set of random sample images generated by the style-based generator system 100 were generated.

7B zeigt gemäß einer Ausführungsform Bilder, die mit dem stilbasierten Generatorsystem 100 erzeugt wurden und niedrige PPL-Werte (kurze Interpolationspfade) aufweisen. Die sechs Bilder in 7B weisen ebenfalls jeweils eine Katze auf und jede Katze erscheint größtenteils wie erwartet. Keine der Katzen erscheint diskontinuierlich oder mit anderen Elementen der Szene vermengt. Mit anderen Worten, die sechs Bilder in 7B sind im Allgemeinen semantisch konsistent. Der für jedes der Bilder in 7B berechnete PPL-Wert liegt in den unteren 10 Perzentilen eines Satzes von zufälligen Beispielbildern, die vom stilbasierten Generatorsystem 100 erzeugt wurden. 7B FIG. 12 shows images created with the style-based generator system, according to one embodiment 100 and have low PPL (short interpolation paths) values. The six pictures in 7B also each have a cat, and each cat appears mostly as expected. None of the cats appear discontinuous or blended with other elements of the scene. In other words, the six images in 7B are generally semantically consistent. The one for each of the images in 7B The calculated PPL is in the lower 10 percentiles of a set of random sample images generated by the style-based generator system 100 were generated.

Wie aus dem Vergleich der Qualität der Bilder in den 7A und 7B ersichtlich ist, besteht eine Korrelation zwischen der wahrgenommenen Bildqualität und der berechneten PPL-Metrik. Die PPL-Metrik wird durch Messung der durchschnittlichen gelernten Wahrnehmungs-Bildpatch-Ähnlichkeits- ((Learned Perceptual Image Patch Similarity) LPIPS-) Abstände zwischen erzeugten Bildern unter kleinen Störungen in dem latenten Raum berechnet. Ein niedriger PPL-Wert (glattere Generatorabbildung) scheint mit einer höheren Gesamtbildqualität zu korrelieren, während andere Metriken keine Korrelation mit der Bildqualität aufweisen.As from comparing the quality of the pictures in the 7A and 7B As can be seen, there is a correlation between the perceived image quality and the calculated PPL metric. The PPL metric is calculated by measuring the average learned perceptual image patch similarity (LPIPS) distances between generated images under small perturbations in the calculated latent space. A lower PPL (smoother generator mapping) value appears to correlate with higher overall image quality, while other metrics have no correlation with image quality.

In der Praxis ist die Anwendung einer Glättungsregularisierung zwischen einem latenten Zwischencode und dem Ausgabebild sehr vorteilhaft für die Qualität der generierten Bilder. Der Vorteil der Glättungsregularisierung kann durch einen Vergleich der Verteilung der PPL-Werte pro Bild für das stilbasierte Generatorsystem 100, das mit und ohne Glättungsregularisierung trainiert wurde, nachvollzogen werden.In practice, the application of a smoothing regularization between an intermediate latent code and the output image is very advantageous for the quality of the images generated. The advantage of smoothing regularization can be achieved by comparing the distribution of the PPL values per image for the style-based generator system 100 that was trained with and without smoothing regularization.

7C zeigt einen Graph der PPL-Werte 700 für einen Satz von Bildern gemäß einer Ausführungsform. Die Bilder werden erzeugt, indem der eingegebene latente Code oder der latente Zwischencode in einem kleinen Umfang verändert wird, um jedes neue Bild zu erzeugen. Mit anderen Worten, eine kleine Bewegung in dem latenten Zwischenraum sollte einer kleinen Änderung in den Ausgabedaten entsprechen. Der Satz von Bildern kann die in den 7A und 7B dargestellten Bilder aufweisen. PPL-Werte in einem Bereich 705 der Verteilung sind niedrige PPL-Werte, die qualitativ hochwertigen Bildern entsprechen, welche die in 7B dargestellten Bilder einschließen. PPL-Werte in einem Bereich 710 der Verteilung sind hohe PPL-Werte, die Bilder mit niedriger Qualität entsprechen, welche die in 7A dargestellten Bilder einschließen. Ein Bild in dem Bereich 710 weist eine große und/oder diskontinuierliche Änderung relativ zu der Änderung in dem eingegebenen latenten Codes auf, der das Bild erzeugt hat. Mit anderen Worten: Als Reaktion auf eine kleine Änderung des latenten Codes ändert sich das Bild im Vergleich zum vorherigen Bild eher abrupt als gleichmäßig. Die Bilder werden von dem stilbasierten Generatorsystem 100 unter Verwendung verschiedener zufälliger Startwerte als Eingabe generiert und die Pfadlängen werden basierend auf den Pfadendpunkten in W berechnet. 7C shows a graph of the PPL values 700 for a set of images according to one embodiment. The images are created by changing the entered latent code or intermediate latent code by a small amount to create each new image. In other words, a small movement in the latent space should correspond to a small change in the output data. The set of images can be those in the 7A and 7B have shown images. PPL values in one range 705 of the distribution are low PPL values that correspond to high quality images that match the in 7B Include images shown. PPL values in one range 710 of the distribution are high PPL values that correspond to low quality images that match the in 7A Include images shown. A picture in the field 710 has a large and / or discontinuous change relative to the change in the input latent code that produced the image. In other words, in response to a small change in the latent code, the image changes more abruptly than smoothly from the previous image. The images are generated by the style-based generator system 100 is generated using various random starting values as input and the path lengths are calculated based on the path endpoints in W.

7D zeigt eine Verteilung der PPL-Werte 720 für einen Satz von Bildern, die bei Verwendung der glättenden Regularisierung gemäß einer Ausführungsform erzeugt wurden. In einer Ausführungsform wird das glättende Regularisierungsverfahren während des Trainings auf das stilbasierte Generatorsystem 100 angewendet. Das neuronale Abbildungsnetzwerk 110 empfängt einen latenten Eingabecode und erzeugt einen latenten Zwischencode. Das neuronale Synthesenetzwerk 140 wiederum empfängt den latenten Zwischencode und erzeugt ein Ausgabebild. Insbesondere wird eine glättende Regularisierung zwischen dem latenten Zwischencode und dem Ausgabebild angewendet, um sicherzustellen, dass die Transformation zwischen dem latenten Zwischencode und dem Ausgabebild glatt ist. In einer Ausführungsform wird eine glättende Regularisierung zwischen einem der Stilsignale und den Ausgabedaten angewendet. Die durchschnittlichen FID, die für die Bilder berechnet werden, die der Verteilung der PPL-Werte 700 und 720 zugeordnet sind, sind gleich. Die durchschnittlichen PPL-Werte sind jedoch sehr unterschiedlich und das Ende der Verteilung innerhalb des Bereichs 710 der Verteilung der PPL-Werte 700 fehlt in der Verteilung der PPL-Werte 720. 7D shows a distribution of the PPL values 720 for a set of images generated using smoothing regularization according to one embodiment. In one embodiment, the smoothing regularization process is performed on the style-based generator system during training 100 applied. The neural mapping network 110 receives an input latent code and generates an intermediate latent code. The neural synthesis network 140 in turn, receives the intermediate latent code and produces an output image. In particular, smoothing regularization is applied between the intermediate latent code and the output image to ensure that the transformation between the intermediate latent code and the output image is smooth. In one embodiment, smoothing regularization is applied between one of the style signals and the output data. The average FID that will be calculated for the images that reflect the distribution of the PPL values 700 and 720 are assigned are the same. However, the average PPL scores are very different and the end of the distribution within the range 710 the distribution of the PPL values 700 is missing in the distribution of the PPL values 720 .

Es ist nicht sofort ersichtlich, warum ein niedriger PPL-Wert mit der Bildqualität korrelieren sollte. Da der Diskriminator 275 während des Trainings kaputte Bilder bestraft, ist es vielleicht der direkteste Weg für das stilbasierte Generatorsystem 100, sich zu verbessern, indem es den Bereich des latenten Raums, der gute Bilder liefert, effektiv ausdehnt. Infolgedessen können die Bilder mit geringer Qualität in kleine Bereiche des latenten Raums mit schnellen Veränderungen gepresst werden. Während das Ausdehnen und Pressen verschiedener Bereiche des latenten Raums die durchschnittliche Ausgabequalität kurzfristig verbessern kann, beeinträchtigen die sich ansammelnden Verzerrungen die Trainingsdynamik und damit die endgültige Bildqualität. Die empirische Korrelation zwischen niedrigem PPL-Wert und erhöhter Ausgabequalität legt nahe, dass die Begünstigung einer glatten Generatorabbildung durch die Förderung eines niedrigen PPL-Werts während des Trainings die Bildqualität verbessern kann.It is not immediately obvious why a low PPL value should correlate with image quality. Because the discriminator 275 Punished broken images during training, it is perhaps the most direct path for the style-based generator system 100 to improve by effectively expanding the area of latent space that provides good images. As a result, the poor quality images can be pressed into small areas of latent space with rapid changes. While expanding and compressing different areas of latent space can improve the average output quality in the short term, the accumulated distortions affect the training dynamics and thus the final image quality. The empirical correlation between low PPL and increased output quality suggests that promoting smooth generator mapping by promoting low PPL during exercise can improve image quality.

Übermäßige Pfadverzerrungen in dem stilbasierten Generatorsystem 100 zeigen sich als schlechte lokale Konditionierung: Jeder kleine Bereich im latenten Zwischenraum W wird beim Training des stilbasierten Generatorsystems 100 willkürlich gepresst und gedehnt. Eine Generatorabbildung von dem latenten Raum auf den Bildraum wird als gut konditioniert angesehen, wenn an jedem Punkt im latenten Raum kleine Verschiebungen zu gleich großen Änderungen im Bildraum führen, unabhängig von der Richtung der Störung. Die kleinen Verschiebungen können in dem latenten Raum angewendet werden, um entsprechende Änderungen gleicher Größenordnung im Bildraum zu erzeugen, oder die kleinen Verschiebungen können im Bildraum angewendet werden, um entsprechende Änderungen gleicher Größenordnung in dem latenten Raum zu erzeugen.Excessive path distortion in the style-based generator system 100 show up as poor local conditioning: every small area in the latent space W becomes when the style-based generator system is trained 100 arbitrarily pressed and stretched. A generator mapping from the latent space to the image space is considered to be well conditioned if at any point in the latent space small shifts lead to equally large changes in the image space, regardless of the direction of the disturbance. The small shifts can be applied in the latent space to produce corresponding changes of the same order of magnitude in the image space, or the small shifts can be applied in the image space to produce corresponding changes of the same order of magnitude in the latent space.

Das in 2B dargestellte neuronale Synthesenetzwerk 140 weist eine Folge von Verarbeitungsblöcken 200 und 230 auf, die jeweils Zwischendaten (Aktivierungen) erzeugen. Eine Regularisierung kann auf das neuronale Synthesenetzwerk 140 angewendet werden, um sicherzustellen, dass die Transformation zwischen dem latenten Zwischencode und dem Ausgabebild glatt ist. Alternativ kann die Regularisierung auch zwischen zwei beliebigen korrespondierenden Punkten in dem neuronalen Synthesenetzwerk 140 angewendet werden. Zum Beispiel kann die Beziehung zwischen den Ausgaben (z. B. Ausgabemerkmalen oder modifizierten Merkmalen) von jedem Paar der Stilblöcke 645 regularisiert werden. Der letzte Stilblock 645 erzeugt das Ausgabebild. Alternativ kann die Regularisierung auch auf andere neuronale Generatornetzwerkarchitekturen angewendet werden. In einer Ausführungsform kann die Regularisierung, um den Rechenaufwand der Regularisierung abzustimmen, weniger häufig durchgeführt werden, ohne dass die Effektivität darunter leidet.This in 2 B illustrated neural synthesis network 140 assigns a sequence of processing blocks 200 and 230 which each generate intermediate data (activations). A regularization can be applied to the neural synthesis network 140 applied to ensure that the transformation between the intermediate latent code and the output image is smooth. Alternatively, the regularization can also be between any two corresponding points in the neural synthesis network 140 be applied. For example, the relationship between the outputs (e.g., output features or modified features) of each pair of the style blocks 645 be regularized. The last style block 645 generates the output image. Alternatively, the regularization can also be applied to other neural generator network architectures. In one embodiment, the regularization, in order to adjust the computational effort of the regularization, can be carried out less frequently without the effectiveness suffering as a result.

7E zeigt gemäß einer Ausführungsform eine konzeptionelle Darstellung von Pfaden ohne Regularisierung. Eine lineare Trajektorie eines Stilsignals 725 wird durch wiederholtes Ändern des Stilsignals im selben Umfang erzeugt. Als Reaktion darauf erzeugt das neuronale Synthesenetzwerk 140 eine gekrümmte Trajektorie der Ausgabedaten 730. Die gekrümmte Trajektorie resultiert aus Änderungen in den Ausgabedaten, die im Vergleich zu den gleichgroßen Änderungen in dem Stilsignal eine unterschiedliche Größe aufweisen. 7E shows, according to one embodiment, a conceptual illustration of paths without regularization. A linear trajectory of a style signal 725 is generated by repeatedly changing the style signal to the same extent. In response, the neural synthesis network generates 140 a curved trajectory of the output data 730 . The curved trajectory results from changes in the output data that have a different size compared to the changes in the style signal of the same size.

7F zeigt gemäß einer Ausführungsform eine konzeptionelle Darstellung von Pfaden mit Regularisierung. Das Abbildungsnetzwerk 110 wird trainiert, um einen latenten Code in einen latenten Zwischenraum abzubilden und ein Stilsignal zu erzeugen. Die in 7F gezeigte Abbildung ist gleichmäßiger als die in 7E gezeigte Abbildung. Eine lineare Trajektorie eines Stilsignals 735 wird durch wiederholtes Ändern des Stilsignals in der gleichen Größe erzeugt. Als Reaktion darauf erzeugt das neuronale Synthesenetzwerk 140 eine nahezu lineare Trajektorie der Ausgabedaten 740 mit Änderungen derselben Größenordnung. Eine Änderung des Stilsignals mit einer ersten Größe erzeugt eine entsprechende Änderung der Ausgabedaten mit einer ähnlichen Größe. 7F shows, according to an embodiment, a conceptual illustration of paths with regularization. The mapping network 110 is trained to map a latent code into a latent space and generate a style signal. In the 7F Figure shown is more uniform than that in 7E shown illustration. A linear trajectory of a style signal 735 is created by repeatedly changing the style signal in the same size. In response, the neural synthesis network generates 140 an almost linear trajectory of the output data 740 with changes of the same order of magnitude. A change in the style signal with a first size produces a corresponding change in the output data with a similar size.

8A zeigt ein Blockdiagramm eines neuronalen Synthesenetzwerks 840, das unter Verwendung des Stilblocks 645 aus 6D implementiert ist, zur Verwendung bei der Implementierung einiger Ausführungsformen der vorliegenden Offenbarung. Das neuronale Synthesenetzwerk 840 weist eine Folge von Stilblöcken 645 und einen Stilblock 646 auf. Im Vergleich zu den Stilblöcken 645 wird in dem Stilblock 646 die Demodulationseinheit 640 weggelassen, da es sich um den letzten Stilblock in dem neuronalen Synthesenetzwerk 840 handelt. Der erste Stilblock 645 empfängt die ersten Zwischendaten, das erste Stilsignal und mindestens einen Teil der Gewichte in einem Satz von Gewichten. Die Gewichte werden entsprechend dem ersten Stilsignal verarbeitet und auf die ersten Zwischendaten angewendet, um zweite Zwischendaten zu erzeugen. Die zweiten Zwischendaten weisen einen in den ersten Zwischendaten kodierten Inhalt auf, der auf der Grundlage des ersten Stilsignals geändert ist. In die zweiten Zwischendaten kann räumliches Rauschen und/oder ein Bias (nicht dargestellt) eingefügt werden. 8A Figure 3 shows a block diagram of a neural synthesis network 840 that is done using the style block 645 the end 6D for use in implementing some embodiments of the present disclosure. The neural synthesis network 840 assigns a sequence of style blocks 645 and a style block 646 on. Compared to the style blocks 645 is in the style block 646 the demodulation unit 640 omitted because it is the last style block in the neural synthesis network 840 acts. The first style block 645 receives the first intermediate data, the first style signal, and at least a portion of the weights in a set of weights. The weights are processed in accordance with the first style signal and applied to the first intermediate data to generate second intermediate data. The second intermediate data has a content encoded in the first intermediate data that is changed based on the first style signal. Spatial noise and / or a bias (not shown) can be inserted into the second intermediate data.

Der zweite Stil-Block 645 empfängt die zweiten Zwischendaten, das zweite Stilsignal und mindestens einen weiteren Teil der Gewichte in dem Satz der Gewichte. Die Gewichte werden gemäß dem zweiten Stilsignal verarbeitet und auf die zweiten Zwischendaten angewendet, um dritte Zwischendaten zu erzeugen. Die dritten Zwischendaten weisen einen in den ersten Zwischendaten kodierten Inhalt auf, der auf der Grundlage des ersten Stilsignals und des zweiten Stilsignals geändert ist. In einer Ausführungsform arbeiten das erste und das zweite Stilsignal auf unterschiedlichen Skalen. Daher werden die Stiländerungen, die aus dem ersten Stilsignal resultieren, in den dritten Zwischendaten beibehalten. Bei anderen Ausführungen können ein oder mehrere zusätzliche Stilblöcke 645 zwischen dem zweiten Stilblock 645 und dem Stilblock 646 vorhanden sein. In einer anderen Ausführungsform wird der zweite Stilblock 645 weggelassen und der Stilblock 646 erhält die zweiten Zwischendaten. In die dritten Zwischendaten kann räumliches Rauschen und/oder ein Bias (nicht dargestellt) eingefügt werden.The second style block 645 receives the second intermediate data, the second style signal, and at least a further portion of the weights in the set of weights. The weights are processed according to the second style signal and applied to the second intermediate data to generate third intermediate data. The third intermediate data has a content encoded in the first intermediate data that is changed based on the first style signal and the second style signal. In one embodiment, the first and second style signals operate on different scales. Therefore, the style changes resulting from the first style signal are retained in the third intermediate data. In other designs, one or more additional style blocks 645 between the second style block 645 and the style block 646 to be available. In another embodiment, the second style block is 645 omitted and the style block 646 receives the second intermediate data. Spatial noise and / or a bias (not shown) can be inserted into the third intermediate data.

Der Stilblock 646 empfängt die dritten Zwischendaten, das dritte Stilsignal und mindestens einen weiteren Teil der Gewichte in dem Satz der Gewichte. Die Gewichte werden gemäß dem dritten Stilsignal verarbeitet und auf die dritten Zwischendaten angewendet, um vierte Zwischendaten zu erzeugen. Die vierten Zwischendaten weisen einen in den ersten Zwischendaten kodierten Inhalt auf, der auf der Grundlage des ersten Stilsignals, des zweiten Stilsignals und des dritten Stilsignals geändert ist. In einer Ausführungsform arbeiten das erste, zweite und dritte Stilsignal auf unterschiedlichen Skalen. Daher werden die Stilmodifikationen, die aus dem ersten und zweiten Stilsignal resultieren, in den vierten Zwischendaten beibehalten. In die vierten Zwischendaten kann räumliches Rauschen und/oder ein Bias (nicht dargestellt) eingefügt werden, um die Ausgabedaten zu erzeugen.The style block 646 receives the third intermediate data, the third style signal, and at least another portion of the weights in the set of weights. The weights are processed according to the third style signal and applied to the third intermediate data to generate fourth intermediate data. The fourth intermediate data has a content encoded in the first intermediate data that is changed based on the first style signal, the second style signal, and the third style signal. In one embodiment, the first, second and third style signals operate on different scales. Therefore, the style modifications resulting from the first and second style signals are retained in the fourth intermediate data. Spatial noise and / or a bias (not shown) can be inserted into the fourth intermediate data in order to generate the output data.

8B zeigt ein Blockdiagramm eines Generator-Trainingssystems 800, gemäß einer Ausführungsform. Das Generator-Trainingssystem 800 kann durch ein Programm, eine benutzerdefinierte Schaltung oder durch eine Kombination aus benutzerdefinierter Schaltung und einem Programm implementiert werden. Beispielsweise kann das Generator-Trainingssystem 800 mit einer GPU, einer CPU oder einem beliebigen Prozessor implementiert werden, die die hier beschriebenen Operationen ausführen können. Darüber hinaus versteht der Fachmann, dass jedes System, das die Operationen des Generator-Trainingssystems 800 durchführt, innerhalb des Umfangs und des Geistes der Ausführungsformen der vorliegenden Erfindung liegt. 8B Figure 3 shows a block diagram of a generator training system 800 , according to one embodiment. The generator training system 800 can be implemented by a program, a custom circuit, or a combination of a custom circuit and a program. For example, the generator training system 800 with a GPU, a CPU, or any Processor are implemented that can perform the operations described here. In addition, those skilled in the art will understand that any system capable of performing the operations of the generator training system 800 is within the scope and spirit of embodiments of the present invention.

Das Generator-Trainingssystem 800 weist ein neuronales Generatornetzwerk 820, wie z. B. das stilbasierte Generatorsystem 100 mit dem neuronalen Synthesenetzwerk 140 oder 840, und eine Trainingsverlusteinheit 810 auf. Das neuronale Generatornetzwerk 820 empfängt Eingabedaten (z. B. mindestens einen latenten Code und/oder Rauscheingaben) und erzeugt Ausgabedaten. Je nach Aufgabe können die Ausgabedaten ein Bild, Audio, Video oder andere Arten von Daten sein (Konfigurationseinstellung). Das neuronale Generatornetzwerk 820 kann einen Trainingsdatensatz verwenden, der beispielhafte Ausgabedaten aufweist, mit denen die von dem neuronalen Generatornetzwerk 820 erzeugten Ausgabedaten konsistent sein sollten. Das neuronale Generatornetzwerk 820 erzeugt Ausgabedaten als Reaktion auf die Eingabedaten, und die Trainingsverlusteinheit 810 bestimmt, ob die Ausgabedaten den in den Trainingsdaten enthaltenen beispielhaften Ausgabedaten ähnlich sind. Basierend auf der Bestimmung wird ein Satz von Parametern des neuronalen Generatornetzwerks 820 angepasst.The generator training system 800 exhibits a neural generator network 820 such as B. the style-based generator system 100 with the neural synthesis network 140 or 840 , and a training loss session 810 on. The neural generator network 820 receives input data (e.g. at least one latent code and / or noise inputs) and generates output data. Depending on the task, the output data can be an image, audio, video or other types of data (configuration setting). The neural generator network 820 may use a training data set that has exemplary output data that is used by the neural generator network 820 generated output data should be consistent. The neural generator network 820 generates output data in response to the input data, and the training loss session 810 determines whether the output data is similar to the exemplary output data included in the training data. Based on the determination, a set of parameters of the neural generator network 820 customized.

Wenn die Regularisierung durchgeführt wird, ist die Trainingsverlusteinheit 810 so ausgestaltet, dass sie zwei Punkte bzw. Aspekte innerhalb des neuronalen Generatornetzwerks 820 identifiziert und eine erste Modifikation auf einen ersten Punkt bzw. Aspekt anwendet und eine zweite Modifikation für einen zweiten Punkt bzw. Aspekt berechnet. Die zweite Modifikation ist konsistent mit der ersten Modifikation und ein Regularisierungsverlust wird basierend auf der zweiten Modifikation berechnet. Der Parametersatz, der von dem neuronalen Generatornetzwerk verwendet wird, wird dann aktualisiert, um den Regularisierungsverlust zu reduzieren. In einer Ausführungsform können die zwei Punkte Zwischendaten und die Ausgabedaten aufweisen. In einer Ausführungsform können die zwei Punkte ein Stilsignal und entweder Zwischendaten oder die Ausgabedaten aufweisen.When the regularization is done, the training loss session is 810 designed so that they have two points or aspects within the neural generator network 820 identifies and applies a first modification to a first point or aspect and calculates a second modification for a second point or aspect. The second modification is consistent with the first modification and a regularization loss is calculated based on the second modification. The parameter set used by the neural generator network is then updated to reduce the loss of regularization. In one embodiment, the two points can comprise intermediate data and the output data. In one embodiment, the two points can comprise a style signal and either intermediate data or the output data.

In einer Ausführungsform wird eine Finite-Differenzen-Methode verwendet, um die zweite Modifikation zu berechnen, indem die erste Modifikation auf das Stilsignal oder die Zwischendaten an dem ersten Punkt angewendet wird und das erste modifizierte Stilsignal oder die Zwischendaten durch die nachfolgenden Schichten des neuronalen Generatornetzwerks 820 verarbeitet werden, um die zweite Modifikation in den Zwischendaten oder den Ausgabedaten an dem zweiten Punkt zu erzeugen. In einer Ausführungsform ist die erste Modifikation eine kleine Zufallsgröße.In one embodiment, a finite difference method is used to compute the second modification by applying the first modification to the style signal or intermediate data at the first point and the first modified style signal or intermediate data through subsequent layers of the neural generator network 820 processed to produce the second modification in the intermediate data or the output data at the second point. In one embodiment, the first modification is a small random variable.

In einer Ausführungsform wird ein Differenzierungsverfahren im Vorwärtsmodus verwendet, um die zweite Modifikation zu berechnen, indem die Zwischendaten oder Ausgabedaten an dem zweiten Punkt in Bezug auf eine lineare Trajektorie des Stilsignals oder der Zwischendaten an dem ersten Punkt differenziert werden, wobei die lineare Transformation durch die erste Modifikation definiert ist. In einer Ausführungsform wird die lineare Trajektorie zufällig gewählt.In one embodiment, a differentiation method is used in the forward mode to calculate the second modification by differentiating the intermediate data or output data at the second point with respect to a linear trajectory of the style signal or the intermediate data at the first point, the linear transformation being represented by the first modification is defined. In one embodiment, the linear trajectory is chosen at random.

Ein anderes Glättungsregularisierungsverfahren ändert die Ausgabedaten, anstatt die Zwischendaten oder ein Stilsignal zu modifizieren und die Modifikation vorwärts durch das neuronale Generatornetzwerk 820 zu propagieren. In einer Ausführungsform wird das Differenzierungsverfahren im Rückwärtsmodus verwendet, um die zweite Modifikation zu berechnen, indem der erste und der zweite Punkt vertauscht werden, so dass der erste Punkt stromabwärts (in Bezug auf die Verarbeitung im neuronalen Generatornetzwerk 820) relativ zu dem zweiten Punkt liegt. Für die Differenzierung im Rückwärtsmodus wird ein inneres Produkt (z. B. Punktprodukt) zwischen den Zwischendaten oder Ausgabedaten an dem ersten Punkt und der ersten Modifikation berechnet, und das innere Produkt wird in Bezug auf das Stilsignal oder die Zwischendaten an dem zweiten Punkt differenziert, um die zweite Modifikation zu berechnen. In einer Ausführungsform kann z. B. ein Gradientenvektor als ein Punktprodukt zwischen den Ausgabedaten und einem Zufallsvektor berechnet werden, welches in Bezug auf die Zwischendaten oder das Stilsignal differenziert wird.Another smoothing regularization method changes the output data instead of modifying the intermediate data or a style signal and modifying the modification forward through the neural generator network 820 to propagate. In one embodiment, the differentiation method is used in reverse mode to compute the second modification by swapping the first and second points so that the first point is downstream (with respect to the processing in the neural generator network 820 ) is relative to the second point. For the differentiation in the reverse mode, an inner product (e.g. point product) between the intermediate data or output data at the first point and the first modification is calculated, and the inner product is differentiated with respect to the style signal or the intermediate data at the second point, to calculate the second modification. In one embodiment, e.g. B. a gradient vector can be calculated as a point product between the output data and a random vector which is differentiated with respect to the intermediate data or the style signal.

Die Regularisierung wird durch wiederholtes Berechnen der zweiten Modifikation durchgeführt, wenn das neuronale Synthesenetzwerk 840 trainiert wird, und dann werden Abweichungen in den Größen der zweiten Modifikation im Vergleich zu einem Referenzwert bestraft. Der Satz von Parametern (z. B. Gewichte) wird basierend auf den Abweichungen angepasst, um die Einheitlichkeit der Größen zu erhöhen. Der erste Punkt kann dem ersten Stilsignal, dem zweiten Stilsignal, dem dritten Stilsignal, den ersten Zwischendaten, den zweiten Zwischendaten oder den dritten Zwischendaten entsprechen. Der zweite Punkt kann den zweiten Zwischendaten, den dritten Zwischendaten, den vierten Zwischendaten oder den Ausgabedaten entsprechen. Wenn die Differenzierung im Rückwärtsmodus verwendet wird, werden die Entsprechungen des ersten Punktes mit denen des zweiten Punktes vertauscht.The regularization is performed by repeatedly calculating the second modification when the neural synthesis network 840 is trained, and then deviations in the sizes of the second modification compared to a reference value are penalized. The set of parameters (e.g. weights) is adjusted based on the deviations in order to increase the uniformity of the sizes. The first point may correspond to the first style signal, the second style signal, the third style signal, the first intermediate data, the second intermediate data or the third intermediate data. The second point may correspond to the second intermediate data, the third intermediate data, the fourth intermediate data, or the output data. When differentiation is used in reverse mode, the correspondences of the first point are swapped with those of the second point.

8C zeigt ein Flussdiagramm eines Verfahrens 825 zur Glättungsregularisierung zur Verwendung in einem neuronalen Generatornetzwerk gemäß einer Ausführungsform. Jeder Block des Verfahrens 825, wie es hier beschrieben ist, umfasst einen Rechenprozess, der mit einer beliebigen Kombination aus Hardware, Firmware und/oder Software durchgeführt werden kann. Beispielsweise können verschiedene Funktionen von einem Prozessor ausgeführt werden, der im Speicher gespeicherte Anweisungen ausführt. Das Verfahren kann auch als computerverwendbare Anweisungen, die auf Computerspeichermedien gespeichert sind, ausgeführt werden. Das Verfahren kann durch eine eigenständige Anwendung, einen Dienst oder einen gehosteten Dienst (eigenständig oder in Kombination mit einem anderen gehosteten Dienst) oder ein Plug-in für ein anderes Produkt bereitgestellt werden, um nur einige zu nennen. Darüber hinaus wird das Verfahren 825 beispielhaft in Bezug auf das neuronale Generatornetzwerk 820 der 8B beschrieben. Dieses Verfahren kann jedoch zusätzlich oder alternativ von einem beliebigen System oder einer beliebigen Kombination von Systemen ausgeführt werden, einschließlich, aber nicht beschränkt auf die hier beschriebenen Systeme. Darüber hinaus versteht der Fachmann, dass jedes System, das das Verfahren 825 durchführt, in den Anwendungsbereich und den Geist der Ausführungsformen der vorliegenden Offenbarung fällt. 8C shows a flow diagram of a method 825 for smoothing regularization for use in a neural generator network according to one embodiment. Each block of the procedure 825 as described herein includes a computing process that can be performed with any combination of hardware, firmware, and / or software. For example, various functions can be performed by a processor executing instructions stored in memory. The method can also be carried out as computer-usable instructions stored on computer storage media. The method can be provided by a standalone application, service, or hosted service (standalone or in combination with another hosted service) or a plug-in for another product, to name a few. In addition, the procedure 825 exemplary in relation to the neural generator network 820 the 8B described. However, this method can additionally or alternatively be performed by any system or combination of systems including, but not limited to, the systems described herein. In addition, those skilled in the art understand that any system that incorporates the method 825 performs falls within the scope and spirit of the embodiments of the present disclosure.

In Schritt 830 werden Ausgabedaten durch ein neuronales Generatornetzwerk auf der Grundlage eines Satzes von Parametern erzeugt, wobei das neuronale Generatornetzwerk eine oder mehrere Schichten umfasst, die jeweils Merkmale an eine nachfolgende Schicht der einen oder mehreren Schichten ausgeben. In einer Ausführungsform umfasst das neuronale Generatornetzwerk eine oder mehrere Schichten, die jeweils eine erste Schicht 120, eine zweite Schicht 130, Verarbeitungsblöcke 200 oder 230 und/oder Stilblöcke 600, 640, 645 oder 646 umfassen. In einer Ausführungsform weist das neuronale Generatornetzwerk das neuronale Synthesenetzwerk 140 oder 840 auf. In einer Ausführungsform umfasst das Erzeugen der Ausgabedaten das Berechnen der zweiten Merkmale vor dem Berechnen der ersten Merkmale. In einer Ausführungsform sind die ersten Merkmale die Ausgabedaten und die zweiten Merkmale sind ein Stilsignal oder Zwischendaten, so dass die Regularisierung unter Verwendung der Differenzierung im Rückwärtsmodus durchgeführt wird.In step 830 For example, output data are generated by a neural generator network based on a set of parameters, the neural generator network comprising one or more layers, each of which outputs features to a subsequent layer of the one or more layers. In one embodiment, the neural generator network comprises one or more layers, each with a first layer 120 , a second layer 130 , Processing blocks 200 or 230 and / or style blocks 600 , 640 , 645 or 646 include. In one embodiment, the neural generator network has the neural synthesis network 140 or 840 on. In one embodiment, generating the output data comprises calculating the second features before calculating the first features. In one embodiment, the first features are the output data and the second features are a style signal or intermediate data, so that the regularization is carried out using the differentiation in the reverse mode.

In Schritt 835 werden erste Merkmale, die einer ersten Schicht der einen oder mehreren Schichten zugeordnet sind, und zweite Merkmale, die einer zweiten Schicht der einen oder mehreren Schichten zugeordnet sind, identifiziert. In einer Ausführungsform sind die ersten Merkmale eines von einem Stilsignal, Zwischendaten und Ausgabedaten. In einer Ausführungsform sind die zweiten Merkmale eines von einem Stilsignal, Zwischendaten und Ausgabedaten.In step 835 first features associated with a first layer of the one or more layers and second features associated with a second layer of the one or more layers are identified. In one embodiment, the first features are one of a style signal, intermediate data, and output data. In one embodiment, the second features are one of a style signal, intermediate data, and output data.

In Schritt 845 wird eine erste Modifikation in Bezug auf die ersten Merkmale ausgewählt. In einer Ausführungsform bewirkt die erste Modifikation eine Änderung der ersten Merkmale. In einer Ausführungsform umfasst die Auswahl der ersten Modifikation die zufällige Auswahl jeder Komponente der ersten Modifikation, um eine Gaußsche Verteilung der ersten Modifikationen zu erzeugen.In step 845 a first modification with respect to the first features is selected. In one embodiment, the first modification brings about a change in the first features. In one embodiment, the selection of the first modification comprises randomly selecting each component of the first modification to generate a Gaussian distribution of the first modifications.

In Schritt 850 wird eine zweite Modifikation in Bezug auf die zweiten Merkmale berechnet, wobei die zweite Modifikation mit der ersten Modifikation konsistent ist. In einer Ausführungsform umfasst das Berechnen der zweiten Modifikation ein Modifizieren der ersten Merkmale (z. B. Stilsignal oder Zwischendaten) gemäß der ersten Modifikation, um modifizierte erste Merkmale zu erhalten, ein Neuberechnen der zweiten Merkmale basierend auf den modifizierten ersten Merkmalen, um modifizierte zweite Merkmale (z. B. stromabwärts gelegene Zwischendaten oder die Ausgabedaten) zu erhalten, und ein Berechnen der zweiten Modifikation als die Differenz zwischen den zweiten Merkmalen und den modifizierten zweiten Merkmalen. In einer Ausführungsform umfasst die Neuberechnung der zweiten Merkmale eine Verarbeitung der modifizierten ersten Merkmale durch eine oder mehrere Schichten des neuronalen Generatornetzwerks, um die modifizierten zweiten Merkmale zu erzeugen.In step 850 a second modification is calculated with respect to the second features, the second modification being consistent with the first modification. In one embodiment, calculating the second modification comprises modifying the first features (e.g. style signal or intermediate data) according to the first modification to obtain modified first features, recalculating the second features based on the modified first features to obtain modified second ones To obtain features (e.g., intermediate downstream data or the output data), and calculating the second modification as the difference between the second features and the modified second features. In one embodiment, the recalculation of the second features comprises processing the modified first features by one or more layers of the neural generator network in order to generate the modified second features.

Wenn die Dfferenzierung im Rückwärtsmodus zur Durchführung der Regularisierung verwendet wird, kann die zweite Modifikation berechnet werden, indem ein inneres Produkt zwischen den ersten Merkmalen (z. B. stromabwärts gelegene Zwischendaten oder die Ausgabedaten) und der ersten Modifikation berechnet wird und dann das innere Produkt in Bezug auf die zweite Modifikation differenziert wird.If the backward mode differential is used to perform the regularization, the second modification can be calculated by calculating an inner product between the first features (e.g., intermediate downstream data or the output data) and the first modification and then calculating the inner product is differentiated with respect to the second modification.

In Schritt 855 wird ein Regularisierungsverlust basierend auf der zweiten Modifikation berechnet. In einer Ausführungsform wird der Regularisierungsverlust von der Trainingsverlusteinheit 810 berechnet. In einer Ausführungsform umfasst der Regularisierungsverlust eine Größe der zweiten Modifikation. In einer Ausführungsform umfasst der Regularisierungsverlust eine L2-Normfunktion. In einer Ausführungsform wird der Regularisierungsverlust berechnet, indem eine Größe der zweiten Modifikation mit einem Referenzwert verglichen wird. In einer Ausführungsform ist der Referenzwert eine Konstante. In einer anderen Ausführungsform wird der Referenzwert als Mittelwert der Größen über mehrere Ausführungen des neuronalen Generatornetzwerks berechnet.In step 855 a regularization loss is calculated based on the second modification. In one embodiment, the loss of regularization is from the loss of training session 810 calculated. In one embodiment, the regularization loss comprises a magnitude of the second modification. In one embodiment, the regularization loss comprises an L 2 norm function. In one embodiment, the regularization loss is calculated by comparing a variable of the second modification with a reference value. In one embodiment, the reference value is a constant. In another embodiment the reference value is calculated as the mean value of the variables over several versions of the neural generator network.

In Schritt 860 wird der Satz von Parametern aktualisiert, um den Regularisierungsverlust zu reduzieren. In einer Ausführungsform handelt es sich bei dem Satz von Parametern um Gewichte, wobei unterschiedliche Teile der Gewichte auf die Aktivierungen durch die verschiedenen Schichten in dem neuronalen Generatornetzwerk angewendet werden. In einer Ausführungsform bringt das Aktualisieren des Parametersatzes die Größe näher an den Referenzwert.In step 860 the set of parameters is updated to reduce the loss of regularization. In one embodiment, the set of parameters are weights, with different parts of the weights being applied to the activations by the different layers in the neural generator network. In one embodiment, updating the parameter set brings the size closer to the reference value.

An einem einzelnen Punkt in dem latenten Zwischenraum, w ∈ W, werden die lokalen metrischen Skalierungseigenschaften der Generatorabbildung g(W) : W Y

Figure DE102021105291A1_0008
durch die Jacobimatrix Jw = ∂g(w)/ ∂w erfasst. Bei dem Punkt in dem latenten Zwischenraum kann es sich um die ersten Merkmale handeln, die in Schritt 840 identifiziert wurden, und er kann ein Stilsignal oder Zwischendaten umfassen, die einer Schicht des Generators zugeordnet sind. Motiviert durch den Wunsch, die erwarteten Längen von Vektoren unabhängig von der Richtung beizubehalten, kann eine Regularisierungsfunktion zur Durchführung der Differenzierung im Rückwärtsmodus formuliert werden als E w , y ~ N ( 0,1 ) ( | J w T y | 2 a ) 2 ,
Figure DE102021105291A1_0009
wobei a ein Referenzwert ist, y Modifikationen wie Zufallsbilder mit normalverteilten Pixelintensitäten sind, und w ~ f(z) gilt, wobei die latenten Vektoren in dem latenten Raum z normalverteilt sind. Die Zufallsbilder können von dem stilbasierten Generatorsystem 100 unter Verwendung eines latenten Zufallscodes erzeugt werden, um ein Ausgangsbild bzw. initiales Bild zu erzeugen. Ein Satz von Bildern mit einem zufälligen Gaußschen Rauschen pro Pixel kann verwendet werden, um einen Satz von Modifikationen bezüglich des Ausgangsbildes zu definieren. Die Rauschbilder müssen nicht verwendet werden, um das Ausgangsbild tatsächlich zu verändern.At a single point in the latent space, w ∈ W, the generator map's local metric scale properties become g ( W ): W. Y
Figure DE102021105291A1_0008
recorded by the Jacobian matrix J w = ∂g (w) / ∂w. The point in the latent space can be the first features shown in step 840 and it may include a style signal or intermediate data associated with a layer of the generator. Motivated by the desire to keep the expected lengths of vectors regardless of direction, a regularization function for performing the differentiation in the reverse mode can be formulated as E. w , y ~ N ( 0.1 ) ( | J w T y | 2 - a ) 2 ,
Figure DE102021105291A1_0009
where a is a reference value, y are modifications such as random images with normally distributed pixel intensities, and w ~ f (z) holds true, with the latent vectors in the latent space z being normally distributed. The random images can be generated by the style-based generator system 100 can be generated using a latent random code to generate an initial image. A set of images with random Gaussian noise per pixel can be used to define a set of modifications to the output image. The noise images do not have to be used to actually change the original image.

Um die explizite Berechnung der Jacobimatrix zu vermeiden, kann die Identität J w T y = w ( g ( w ) y ) ,

Figure DE102021105291A1_0010
verwendet werden, die mit Hilfe einer standardisierten Rückwärtspropagation effizient berechenbar ist. J w T y
Figure DE102021105291A1_0011
umfasst eine zweite Modifikation, die einer Modifikation des Stilsignals oder der Zwischendaten als Ergebnis des Hinzufügens von Zufallsrauschen y zu dem Ausgangsbild g(w) entspricht. In einer Ausführungsform ist a eine Konstante, die während der Optimierung dynamisch als langlaufender exponentieller gleitender Mittelwert der Längen einer Größe der zweiten Modifikation | J w T y | 2 ,
Figure DE102021105291A1_0012
eingestellt wird, so dass die Optimierung selbständig eine geeignete globale Skala findet. In einer Ausführungsform werden die zweiten Modifikationen, Produkte J w T y
Figure DE102021105291A1_0013
analytisch berechnet. Gleichung (5) wird minimiert, wenn Jw orthogonal (bis zu einer globalen Skala) bei jedem w ist. Eine orthogonale Matrix bewahrt Längen und führt kein Quetschen entlang einer Dimension ein. Daher ist die orthogonale Matrix einem einheitlichen Raum zugeordnet.In order to avoid the explicit calculation of the Jacobian matrix, the identity J w T y = w ( G ( w ) y ) ,
Figure DE102021105291A1_0010
can be used, which can be calculated efficiently with the help of standardized backward propagation. J w T y
Figure DE102021105291A1_0011
comprises a second modification corresponding to a modification of the style signal or the intermediate data as a result of adding random noise y to the output image g (w). In one embodiment, a is a constant that is dynamically used during optimization as a long-running exponential moving average of the lengths of a quantity of the second modification | J w T y | 2 ,
Figure DE102021105291A1_0012
is set so that the optimization automatically finds a suitable global scale. In one embodiment, the second modifications become products J w T y
Figure DE102021105291A1_0013
analytically calculated. Equation (5) is minimized when J w is orthogonal (up to a global scale) at every w. An orthogonal matrix preserves lengths and does not introduce squeezing along a dimension. Therefore, the orthogonal matrix is assigned to a uniform space.

Änderungen in dem Ausgangsbild g(w), die aus der Modifikation resultieren (z. B. den Rauschbildern), werden als Punktprodukt zwischen dem Bild und jedem Rauschbild y in der Menge der Rauschbilder berechnet, g(w) . y. Unter der Annahme, dass das Ausgangsbild auf Basis jedes Rauschbildes modifiziert wird, gibt das Punktprodukt an, wie schnell sich das Ausgangsbild in Richtung des Rauschbildes bewegt. Das Rauschbild definiert Änderungen in dem Bildraum. Eine Richtung jeder Änderung kann durch ein Berechnen eines Differenzgradienten (∇w) des Punktprodukts in Bezug auf den latenten Zwischencode w bestimmt werden, der zur Erzeugung der Stilsignale verwendet wird. Die Richtung gibt die Richtung an, in der die Bewegung in dem latenten Zwischenraum erfolgen soll, um die Änderungen in dem modifizierten Bild zu maximieren. Die Länge (Größe) des Differenzgradienten gibt die Geschwindigkeit der Änderung in dem Bild in Bezug auf das Rauschbild für entsprechende Änderungen in dem latenten Raum (z. B. zweite Modifikationen) an, die in der Richtung des Differenzgradienten liegen.Changes in the output image g (w) resulting from the modification (e.g. the noise images) are calculated as the dot product between the image and each noise image y in the set of noise images, g (w). y. Assuming that the output image is modified on the basis of each noise image, the dot product indicates how fast the output image moves in the direction of the noise image. The noise image defines changes in the image space. A direction of each change can be determined by calculating a differential gradient (∇ w ) of the dot product with respect to the intermediate latent code w used to generate the style signals. The direction indicates the direction in which to move in the latent space in order to maximize the changes in the modified image. The length (size) of the difference gradient indicates the rate of change in the image with respect to the noise image for corresponding changes in the latent space (e.g. second modifications) which lie in the direction of the difference gradient.

Wie in Gleichung (5) gezeigt wird, wird eine Größe der zweiten Modifikation (eine Differenzgradientenlänge) mit der Referenzlänge (a) verglichen, und das Quadrat der Differenz ist ein Regularisierungsaufschlag für eine bestimmte Wahl von w und y, der während des Trainings berechnet wird. Die Differenzgradienten sollten gegen eine gleiche Länge konvergieren, was darauf hinweist, dass die Transformation zwischen den Räumen gleichmäßiger ist. Während des Trainings können Variationen in den Differenzgradientenlängen durch eine Verlustfunktion bestraft werden, um die Glättungsregularisierung durchzuführen. Wenn das Regularisierungsverfahren für mehrere Auswahlen von w und y während des Trainings des stilbasierten Generatorsystems 100 oder des neuronalen Generatornetzwerks 820 wiederholt wird, berechnet Gleichung (5) den Durchschnitt des Regularisierungsaufschlags über die mehreren Auswahlen, der minimiert wird.As shown in equation (5), an amount of the second modification (a difference gradient length) is compared with the reference length (a), and the square of the difference is a regularization allowance for a particular choice of w and y calculated during training . The difference gradients should converge to an equal length, indicating that the transformation between the Clearing is more even. During training, variations in the difference gradient lengths can be penalized by a loss function in order to perform the smoothing regularization. If the regularization procedure for multiple choices of w and y during training of the style-based generator system 100 or the neural generator network 820 is repeated, Equation (5) computes the average of the regularization charge over the multiple choices that is minimized.

Da die Berechnung des Differenzgradienten ∇w(g(w) · y) etwas aufwändig ist, kann eine allgemeine Optimierung verwendet werden, die für alle Regularisierungsverfahren gilt. Typischerweise werden die Hauptverlustfunktion (z. B. logistischer Verlust) und Regularisierungsterme (z. B. R1) als ein einzelner Ausdruck geschrieben und somit gleichzeitig optimiert. Die Regularisierungsterme können jedoch viel seltener berechnet werden als die Hauptverlustfunktion, wodurch sich ihre Rechenkosten und der Gesamtspeicherverbrauch erheblich verringern. Zum Beispiel kann die R1-Regularisierung nur einmal alle 16 Minibatches durchgeführt werden, ohne dass ein Nachteil entsteht. Darüber hinaus kann die Trainingsleistung durch die weniger häufige Berechnung der Regularisierungsterme ebenfalls verbessert werden. In einer Ausführungsform wird das Training mit reduzierter Berechnungshäufigkeit für ein neuronales Generatornetzwerk, das eine Gewichtsdemodulation implementiert, bei 61 Bildern/Sek. im Vergleich zu 37 Bildern/Sek. ohne Gewichtsdemodulation und Regularisierung um 40 % schneller durchgeführt.Since the calculation of the differential gradient ∇ w (g (w) · y) is somewhat complex, a general optimization can be used that applies to all regularization methods. Typically, the main loss function (e.g. logistic loss) and regularization terms (e.g. R 1 ) are written as a single expression and thus optimized at the same time. However, the regularization terms can be computed much less frequently than the main loss function, which significantly reduces their computational costs and overall memory consumption. For example, the R 1 regularization can only be performed once every 16 minibatches without incurring any disadvantage. In addition, the less frequent calculation of the regularization terms can also improve training performance. In one embodiment, the reduced frequency training for a neural generator network implementing weight demodulation is performed at 61 frames / sec. compared to 37 frames / sec. carried out 40% faster without weight demodulation and regularization.

Probleme mit der Bildqualität, wie z. B. die in 6A gezeigten Artefakte 601, 603 und 605, wurden identifiziert, und die Umstrukturierung des neuronalen Synthesenetzwerks zur Implementierung der Gewichtsdemodulation verbessert die Qualität. Die Gewichtsdemodulation kann auch auf andere neuronale Generatornetze angewendet werden. Zusätzlich reduziert die Regularisierung der Glättung zwischen den Zwischendaten, die von zwei verschiedenen Schichten (oder Stufen) ausgegeben werden, oder zwischen den Zwischendaten und dem Ausgabebild Bildartefakte, wie z. B. die Artefakte, die in Bild 7A dargestellt sind. Das Regularisierungsverfahren kann in Kombination mit einer Gewichtsdemodulation oder separat verwendet werden, um die Leistung eines neuronalen Generatornetzwerks zu verbessern.Image quality problems such as B. the in 6A artifacts shown 601 , 603 and 605 , have been identified, and restructuring the neural synthesis network to implement weight demodulation improves quality. Weight demodulation can also be applied to other neural generator networks. In addition, the regularization of the smoothing between the intermediate data output from two different layers (or levels) or between the intermediate data and the output image reduces image artifacts, e.g. B. the artifacts shown in Figure 7A. The regularization method can be used in combination with weight demodulation or separately to improve the performance of a neural generator network.

Es wird darauf hingewiesen, dass die hier beschriebenen Verfahren in ausführbaren Befehlen ausgestaltet sein können, die in einem computerlesbaren Medium zur Verwendung durch oder in Verbindung mit einer Maschine, einem System, einem Gerät oder einer Einrichtung jeweils zur prozessorbasierten Befehlsausführung ausgestaltet gespeichert sind. Der Fachmann weiß, dass bei einigen Ausführungsformen verschiedene Arten von computerlesbaren Medien zum Speichern von Daten vorhanden sein können. Wie es hier beschrieben ist, weist ein „computerlesbares Medium“ ein oder mehrere geeignete Medien zum Speichern der ausführbaren Befehle eines Computerprogramms auf, so dass die Maschine, das System, das Gerät oder die Einrichtung, welche jeweils zur prozessorbasierten Befehlsausführung ausgestaltet sind, die Befehle von dem computerlesbaren Medium lesen (oder abrufen) und die Befehle zur Ausführung der beschriebenen Ausführungsformen ausführen können. Geeignete Speicherformate weisen eines oder mehrere der folgenden Formate auf: elektronisch, magnetisch, optisch und elektromagnetisch. Eine nicht abschließende Liste konventioneller, beispielhafter computerlesbarer Medien weist auf: eine tragbare Computerdiskette, einen Direktzugriffsspeicher (RAM), einen Festwertspeicher (ROM), einen löschbaren programmierbaren Festwertspeicher (EPROM), eine Flash-Speichereinrichtung und optische Speichervorrichtungen, einschließlich einer tragbaren Compact Disc (CD), einer tragbaren digitalen Videodisk (DVD) und dergleichen.It is pointed out that the methods described here can be embodied in executable commands that are stored in a computer-readable medium for use by or in connection with a machine, a system, a device or a device, each configured for processor-based command execution. Those skilled in the art will recognize that there may be various types of computer readable media for storing data in some embodiments. As described here, a “computer-readable medium” has one or more suitable media for storing the executable instructions of a computer program, so that the machine, the system, the device or the device, which are each designed for processor-based instruction execution, carry the instructions read (or retrieve) from the computer readable medium and execute the instructions to carry out the described embodiments. Suitable storage formats have one or more of the following formats: electronic, magnetic, optical and electromagnetic. A non-exhaustive list of conventional, exemplary computer readable media includes: a portable computer disk, random access memory (RAM), read only memory (ROM), erasable programmable read only memory (EPROM), flash memory device, and optical storage devices including a portable compact disc ( CD), a portable digital video disc (DVD), and the like.

Die in den beigefügten Figuren dargestellte Anordnung der Komponenten dient nur zur Veranschaulichung und es sind auch andere Anordnungen möglich. Zum Beispiel kann eines oder mehrere der hier beschriebenen Elemente ganz oder teilweise als elektronische Hardwarekomponente realisiert sein. Andere Elemente können in Software, Hardware oder einer Kombination aus Software und Hardware realisiert sein. Darüber hinaus können einige oder alle dieser anderen Elemente kombiniert werden, einige können ganz weggelassen werden, und zusätzliche Komponenten können hinzugefügt werden, während immer noch die hier beschriebene Funktionalität erreicht wird. Somit kann der hier beschriebene Gegenstand in vielen verschiedenen Ausführungsformen ausgestaltet sein, und alle derartigen Variationen fallen unter den Umfang der Ansprüche.The arrangement of the components shown in the accompanying figures is for illustration purposes only and other arrangements are also possible. For example, one or more of the elements described here can be implemented in whole or in part as electronic hardware components. Other elements can be implemented in software, hardware, or a combination of software and hardware. In addition, some or all of these other elements can be combined, some can be omitted entirely, and additional components can be added while still achieving the functionality described herein. Thus, the subject matter described herein can be embodied in many different forms, and all such variations come within the scope of the claims.

Um das Verständnis des hier beschriebenen Gegenstands zu erleichtern, werden viele Aspekte in Form von Handlungsabläufen beschrieben. Der Fachmann erkennt, dass die verschiedenen Aktionen durch spezialisierte Schaltungen oder Schaltkreise, durch Programmanweisungen, die von einem oder mehreren Prozessoren ausgeführt werden, oder durch eine Kombination aus beidem ausgeführt werden können. Die hier beschriebene Abfolge von Aktionen soll nicht bedeuten, dass die beschriebene spezifische Reihenfolge für die Ausführung dieser Abfolge eingehalten werden muss. Alle Verfahren, die hier beschrieben sind, können in jeder geeigneten Reihenfolge ausgeführt werden, sofern hier nichts anderes angegeben ist oder der Kontext nicht eindeutig dagegen spricht.To facilitate understanding of the subject matter described here, many aspects are described in the form of courses of action. Those skilled in the art will recognize that the various actions can be performed by specialized circuitry or circuitry, by program instructions executed by one or more processors, or by a combination of both. The sequence of actions described here is not intended to mean that the specific sequence described must be followed in order to carry out this sequence. All of the procedures described herein can be performed in any suitable order unless otherwise noted herein or unless the context clearly indicates otherwise.

Die Verwendung der Begriffe „ein“, „eine“ und „eines“ sowie „der“, „die“ und „das“ und ähnlicher Verweise im Zusammenhang mit der Beschreibung des Gegenstands (insbesondere im Zusammenhang mit den folgenden Ansprüchen) ist so auszulegen, dass sie sowohl den Singular als auch den Plural umfassen, sofern hier nicht anderes angegeben oder es durch den Kontext eindeutig widerlegt wird. Die Verwendung des Begriffs „mindestens eines“, gefolgt von einer Aufzählung von einem oder mehreren Gegenständen (z. B. „mindestens eines von A und B“) ist so auszulegen, dass damit ein aus den aufgelisteten Gegenständen (A oder B) ausgewählter Gegenstand oder eine beliebige Kombination von zwei oder mehreren der aufgelisteten Gegenstände (A und B) gemeint ist, sofern es hier nicht anders angegeben oder durch den Kontext eindeutig widerlegt wird. Darüber hinaus dient die vorstehende Beschreibung nur der Veranschaulichung und nicht der Einschränkung, da der angestrebte Schutzumfang durch die nachstehend aufgeführten Ansprüche zusammen mit deren Äquivalenten definiert ist. Die Verwendung von Beispielen oder beispielhaften Ausdrücken (z. B. „wie z.B.“) dient lediglich der besseren Veranschaulichung des Gegenstands und stellt keine Einschränkung des Umfangs des Gegenstands dar, sofern nichts anderes beansprucht wird. Die Verwendung des Begriffs „basierend auf“ oder „abhängig von“ und anderer ähnlicher Ausdrücke, die eine Bedingung für das Herbeiführen eines Ergebnisses angeben, sowohl in den Ansprüchen als auch in der schriftlichen Beschreibung, soll keine anderen Bedingungen ausschließen, die dieses Ergebnis herbeiführen. Keine Formulierung in der Beschreibung sollte so ausgelegt werden, dass sie ein nicht beanspruchtes Element als wesentlich für die Ausführung der beanspruchten Erfindung bezeichnet.The use of the terms “a”, “an” and “an” as well as “the”, “the” and “that” and similar references in connection with the description of the subject matter (in particular in connection with the following claims) is to be interpreted as that they include both the singular and the plural, unless otherwise stated here or the context clearly contradicts it. The use of the term “at least one” followed by a list of one or more items (e.g. “at least one of A and B”) is to be interpreted in such a way that it is an item selected from the listed items (A or B) or any combination of two or more of the listed items (A and B) is meant, unless otherwise stated here or clearly refuted by the context. Furthermore, the foregoing description is intended to be illustrative and not restrictive, as the intended scope of protection is defined by the claims listed below, along with their equivalents. The use of examples or exemplary expressions (e.g. "such as") is only used to better illustrate the subject matter and does not represent a limitation of the scope of the subject matter unless otherwise claimed. The use of the term “based on” or “dependent on” and other similar expressions that indicate a condition for producing a result, in both the claims and the written description, is not intended to exclude any other condition that could produce that result. Nothing in the specification should be construed as indicating any unclaimed element as essential to the practice of the claimed invention.

Claims (20)

Computerimplementiertes Verfahren, umfassend: Empfangen erster Gewichte zum Modifizieren erster Merkmale in einer ersten Stufe eines neuronalen Generatornetzwerks, das mehrere Stufen aufweist, wobei eine letzte Stufe des neuronalen Generatornetzwerks Ausgabedaten erzeugt; Modulieren der ersten Gewichte mit einem ersten Stil-Steuersignal, um erste modulierte Gewichte zu erzeugen; Demodulieren der ersten modulierten Gewichte, um erste normalisierte Gewichte zu erzeugen; Anwenden der ersten normalisierten Gewichte durch die erste Stufe, um modifizierte erste Merkmale zu erzeugen; und Verarbeiten der modifizierten ersten Merkmale durch mindestens eine zusätzliche Stufe des neuronalen Generatornetzwerks, um die Ausgabedaten zu erzeugen, die einen den ersten Merkmalen entsprechenden Inhalt aufweisen.A computer implemented method comprising: Receiving first weights for modifying first features in a first stage of a neural generator network having a plurality of stages, a last stage of the neural generator network generating output data; Modulating the first weights with a first style control signal to produce first modulated weights; Demodulating the first modulated weights to produce first normalized weights; Applying the first normalized weights by the first stage to generate modified first features; and Processing the modified first features by at least one additional stage of the neural generator network in order to generate the output data which have a content corresponding to the first features. Computerimplementiertes Verfahren nach Anspruch 1, wobei die ersten Gewichte erste Werte, die einer ersten Ausführung des neuronalen Generatornetzwerks zur Verarbeitung eines ersten Eingabemusters zugeordnet sind, und zweite Werte, die einer zweiten Ausführung des neuronalen Generatornetzwerks zur Verarbeitung eines zweiten Eingabemusters zugeordnet sind, umfassen.Computer-implemented method according to Claim 1 wherein the first weights include first values associated with a first implementation of the neural generator network for processing a first input pattern, and second values associated with a second implementation of the neural generator network for processing a second input pattern. Computerimplementiertes Verfahren nach Anspruch 1 oder 2, wobei das Demodulieren ein Berechnen einer erwarteten Standardabweichung der modifizierten ersten Merkmale umfasst, die zum Demodulieren des ersten Satzes von Gewichten verwendet wird.Computer-implemented method according to Claim 1 or 2 wherein the demodulating comprises calculating an expected standard deviation of the modified first features that is used to demodulate the first set of weights. Computerimplementiertes Verfahren nach einem der vorhergehenden Ansprüche, wobei das Anwenden ein Falten der ersten normalisierten Gewichte mit den ersten Merkmalen umfasst, um die modifizierten ersten Merkmale zu erzeugen.The computer-implemented method of any preceding claim, wherein applying comprises convolving the first normalized weights with the first features to produce the modified first features. Computerimplementiertes Verfahren nach einem der vorangehenden Ansprüche, das darüber hinaus umfasst: Abbilden eines latenten Codes in einem Eingaberaum auf einen Zwischenraum, der lineare Unterräume aufweist, um einen latenten Zwischencode zu erzeugen, wobei die linearen Unterräume jeweils mit einem anderen Attribut des Inhalts korrespondieren; und Anwenden einer affinen Transformation auf den latenten Zwischencode, um das erste Stilsignal zu erzeugen.A computer-implemented method according to any one of the preceding claims, further comprising: Mapping a latent code in an input space onto a space having linear subspaces to generate an intermediate latent code, the linear subspaces each corresponding to a different attribute of the content; and Applying an affine transform to the intermediate latent code to generate the first style signal. Computerimplementiertes Verfahren nach einem der vorhergehenden Ansprüche, wobei das erste Stil-Steuersignal mindestens ein erstes Attribut des Inhalts steuert.The computer-implemented method of any preceding claim, wherein the first style control signal controls at least a first attribute of the content. Computerimplementierte Verfahren nach einem der vorangehenden Ansprüche, das darüber hinaus umfasst: Empfangen von zweiten Gewichten zum Modifizieren von zweiten Merkmalen in der zusätzlichen Stufe des neuronalen Generatornetzwerks; Modulieren der zweiten Gewichte mit einem zweiten Stil-Steuersignal, um zweite modulierte Gewichte zu erzeugen; Demodulieren der zweiten modulierten Gewichte, um zweite normalisierte Gewichte zu erzeugen; und Anwenden der zweiten normalisierten Gewichte, durch die zusätzliche Stufe, auf die ersten modifizierten Merkmale, um modifizierte zweite Merkmale zu erzeugen.The computer-implemented method of any preceding claim, further comprising: receiving second weights for modifying second features in the additional stage of the neural generator network; Modulating the second weights with a second style control signal to produce second modulated weights; Demodulating the second modulated weights to produce second normalized weights; and applying, by the additional stage, the second normalized weights to the first modified features to produce modified second features. Computerimplementiertes Verfahren nach Anspruch 7, wobei das erste Stil-Steuersignal die ersten Merkmale modifiziert, um den Inhalt in einer ersten Skala zu ändern, und das zweite Stil-Steuersignal die ersten modifizierten Merkmale modifiziert, um den Inhalt in einer zweiten Skala zu ändern.Computer-implemented method according to Claim 7 wherein the first style control signal modifies the first features to change the content in a first scale and the second style control signal modifies the first modified features to change the content in a second scale. Computerimplementiertes Verfahren nach Anspruch 7 oder 8, das darüber hinaus ein Einfügen von Rauschen in die ersten modifizierten Merkmale vor dem Anwenden der zweiten normalisierten Gewichte durch die zusätzliche Stufe umfasst.Computer-implemented method according to Claim 7 or 8th which further comprises inserting noise into the first modified features prior to the additional stage applying the second normalized weights. Computerimplementiertes Verfahren nach einem der vorhergehenden Ansprüche, das darüber hinaus umfasst: Empfangen von zweiten Gewichten zum Modifizieren von zweiten Merkmalen in der letzten Stufe des neuronalen Generatornetzwerks; Modulieren der zweiten Gewichte mit einem zweiten Stil-Steuersignal, um zweite modulierte Gewichte zu erzeugen; Anwenden der zweiten modulierten Gewichte, durch die letzte Stufe, auf die ersten modifizierten Merkmale, um die Ausgabedaten zu erzeugen.The computer-implemented method of any preceding claim further comprising: Receiving second weights for modifying second features in the last stage of the neural generator network; Modulating the second weights with a second style control signal to produce second modulated weights; Applying the second modulated weights, by the final stage, to the first modified features to produce the output data. Computerimplementiertes Verfahren nach einem der vorhergehenden Ansprüche, wobei die Schritte des Empfangens, des Modulierens, des Demodulierens, des Anwendens und des Verarbeitens innerhalb einer Cloud-Computing-Umgebung durchgeführt werden.Computer-implemented method according to one of the preceding claims, wherein the steps of receiving, modulating, demodulating, applying and processing are performed within a cloud computing environment. Computerimplementiertes Verfahren nach einem der vorhergehenden Ansprüche, wobei die Schritte des Empfangens, des Modulierens, des Demodulierens, des Anwendens und des Verarbeitens auf einem Server oder in einem Datenzentrum durchgeführt werden, um ein Bild zu erzeugen, und wobei das Bild zu einer Einrichtung des Benutzers gestreamt wird.The computer-implemented method of any preceding claim, wherein the steps of receiving, modulating, demodulating, applying and processing are performed on a server or in a data center to generate an image, and wherein the image is provided to a device of the user is streamed. Computerimplementiertes Verfahren nach einem der vorhergehenden Ansprüche, wobei die Schritte des Empfangens, des Modulierens, des Demodulierens, des Anwendens und des Verarbeitens durchgeführt werden, um ein Bild zu erzeugen, das zum Trainieren, Testen oder Zertifizieren eines neuronalen Netzes verwendet wird, das in einer Maschine, einem Roboter oder einem autonomen Fahrzeug eingesetzt wird.A computer-implemented method according to any preceding claim, wherein the steps of receiving, modulating, demodulating, applying and processing are performed to generate an image that is used to train, test or certify a neural network that is in a Machine, a robot or an autonomous vehicle is used. System umfassend: einen Prozessor, der ausgestaltet ist, um ein neuronales Generatornetzwerk zu implementieren, das mehrere Stufen aufweist, wobei eine letzte Stufe des neuronalen Generatornetzwerks Ausgabedaten erzeugt und das neuronale Generatornetzwerk ausgestaltet ist, um: erste Gewichte zum Modifizieren erster Merkmale in einer ersten Stufe des neuronalen Generatornetzwerks zu empfangen; die ersten Gewichte mit einem ersten Stil-Steuersignal zu modulieren, um erste modulierte Gewichte zu erzeugen; die ersten modulierten Gewichte zu demodulieren, um erste normalisierte Gewichte zu erzeugen; die ersten normalisierten Gewichte durch die erste Stufe anzuwenden, um modifizierte erste Merkmale zu erzeugen; und die modifizierten ersten Merkmale durch mindestens eine zusätzliche Stufe des neuronalen Generatornetzwerks zu verarbeiten, um die Ausgabedaten zu erzeugen, die einen den ersten Merkmalen entsprechenden Inhalt aufweisen.System comprehensive: a processor configured to implement a neural generator network having multiple stages, a final stage of the neural generator network generating output data and the neural generator network being configured to: receive first weights for modifying first features in a first stage of the neural generator network; modulating the first weights with a first style control signal to produce first modulated weights; demodulate the first modulated weights to produce first normalized weights; apply the first normalized weights by the first stage to generate modified first features; and to process the modified first features by at least one additional stage of the neural generator network in order to generate the output data which have a content corresponding to the first features. System nach Anspruch 14, wobei die ersten Gewichte erste Werte, die einer ersten Ausführung des neuronalen Generatornetzwerks zur Verarbeitung eines ersten Eingabemusters zugeordnet sind, und zweite Werte, die einer zweiten Ausführung des neuronalen Generatornetzwerks zur Verarbeitung eines zweiten Eingabemusters zugeordnet sind, umfassen.System according to Claim 14 wherein the first weights include first values associated with a first implementation of the neural generator network for processing a first input pattern, and second values associated with a second implementation of the neural generator network for processing a second input pattern. System nach Anspruch 14 oder 15, wobei das Demodulieren ein Berechnen einer erwarteten Standardabweichung der modifizierten ersten Merkmale umfasst, die zum Demodulieren des ersten Satzes von Gewichten verwendet wird.System according to Claim 14 or 15th wherein the demodulating comprises calculating an expected standard deviation of the modified first features that is used to demodulate the first set of weights. System nach einem der Ansprüche 14 bis 16, wobei das Anwenden ein Falten der ersten normalisierten Gewichte mit den ersten Merkmalen umfasst, um die modifizierten ersten Merkmale zu erzeugen.System according to one of the Claims 14 until 16 wherein applying comprises convolving the first normalized weights with the first features to produce the modified first features. System nach einem der Ansprüche 14 bis 17, wobei das neuronale Generatornetzwerk darüber hinaus ausgestaltet ist, um: einen latenten Code in einem Eingaberaum auf einen Zwischenraum, der lineare Unterräume aufweist, abzubilden, um einen latenten Zwischencode zu erzeugen, wobei die linearen Unterräume jeweils mit einem anderen Attribut des Inhalts korrespondieren; und um eine affine Transformation auf den latenten Zwischencode anzuwenden, um das erste Stilsignal zu erzeugen.System according to one of the Claims 14 until 17th wherein the neural generator network is further configured to: map a latent code in an input space onto a space having linear subspaces to generate an intermediate latent code, the linear subspaces each corresponding to a different attribute of the content; and to apply an affine transform to the intermediate latent code to generate the first style signal. System nach einem der Ansprüche 14 bis 18, wobei das erste Stil-Steuersignal mindestens ein erstes Attribut des Inhalts steuert.System according to one of the Claims 14 until 18th wherein the first style control signal controls at least a first attribute of the content. Nicht-transitorisches computerlesbares Medium, das Computerbefehle speichert, die, wenn sie von einem oder mehreren Prozessoren ausgeführt werden, den einen oder die mehreren Prozessoren veranlassen, die Schritte eines Verfahrens nach einem der Ansprüche 1 bis 13 durchzuführen.Non-transitory computer readable medium that stores computer instructions that, when executed by one or more processors, cause the one or more processors to perform the steps of a method according to any one of the Claims 1 until 13th perform.
DE102021105291.2A 2020-03-16 2021-03-04 WEIGHT DEMODULATION FOR A GENERATING NEURAL NETWORK Pending DE102021105291A1 (en)

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 US11605001B2 (en) 2018-11-14 2021-01-28 Weight demodulation for a generative neural network
US17/160,585 2021-01-28

Publications (1)

Publication Number Publication Date
DE102021105291A1 true DE102021105291A1 (en) 2021-09-16

Family

ID=77457480

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102021105291.2A Pending DE102021105291A1 (en) 2020-03-16 2021-03-04 WEIGHT DEMODULATION FOR A GENERATING NEURAL NETWORK

Country Status (2)

Country Link
CN (1) CN113408694A (en)
DE (1) DE102021105291A1 (en)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115439720B (en) * 2022-11-08 2023-01-24 成都数联云算科技有限公司 CAM image reconstruction method, training method, device, equipment and medium

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101399803B (en) * 2007-09-27 2011-04-13 大唐移动通信设备有限公司 Multi-user detection method and device for OFDM signal
US20180012359A1 (en) * 2016-07-06 2018-01-11 Marinko Venci Sarunic Systems and Methods for Automated Image Classification and Segmentation
CN110059793B (en) * 2017-10-26 2024-01-26 辉达公司 Gradual modification of a generative antagonistic neural network
US11551064B2 (en) * 2018-02-08 2023-01-10 Western Digital Technologies, Inc. Systolic neural network engine capable of forward propagation
US10937438B2 (en) * 2018-03-29 2021-03-02 Ford Global Technologies, Llc Neural network generative modeling to transform speech utterances and augment training data
CN110837523A (en) * 2019-10-29 2020-02-25 山东大学 High-confidence reconstruction quality and false-transient-reduction quantitative evaluation method based on cascade neural network

Also Published As

Publication number Publication date
CN113408694A (en) 2021-09-17

Similar Documents

Publication Publication Date Title
DE102019130702A1 (en) STYLE-BASED ARCHITECTURE FOR GENERATIVE NEURONAL NETWORKS
DE102018126670A1 (en) Progressive modification of generative adversative neural networks
DE102018117813A1 (en) Timely data reconstruction with an external recurrent neural network
DE102021119726A1 (en) THREE-DIMENSIONAL OBJECT RECONSTRUCTION FROM A VIDEO
DE112020004702T5 (en) IMAGE GENERATION USING ONE OR MORE NEURAL NETWORKS
DE102018126342A1 (en) TRANSFORM FOLDING NEURONAL NETWORKS TO LEARN VISUAL SEQUENCES
DE102018111407A1 (en) METHOD FOR MACHINE LEARNING FOR AUTOMATICALLY MODELING OF EXCESSIVE EXPENDITURE
DE102018130924A1 (en) Systems and methods for dynamic facial analysis using a recurrent neural network
DE102019106123A1 (en) Three-dimensional (3D) pose estimation from the side of a monocular camera
DE102021105249A1 (en) MICROTRAINING FOR ITERATIVE REFINEMENT OF A NEURAL NETWORK WITH FEW ADAPTATIONS
DE102021119722A1 (en) FINE-GRANULAR PRO-VECTOR SCALING FOR NEURAL NETWORK QUANTIZATION
DE102021205690A1 (en) Training neural networks with limited data using invertible augmentation operators
DE102021121109A1 (en) RECOVERY OF THREE-DIMENSIONAL MODELS FROM TWO-DIMENSIONAL IMAGES
DE102021109050A1 (en) VIDEO COMPRESSION AND TRANSMISSION SUPPORTED BY A NEURONAL GENERATIVE ADVERSARIAL NETWORK
DE102022100360A1 (en) MACHINE LEARNING FRAMEWORK APPLIED IN A SEMI-SUPERVISED SETTING TO PERFORM INSTANCE TRACKING IN A SEQUENCE OF IMAGE FRAMES
DE102021130031A1 (en) APPEARANCE-DRIVEN AUTOMATIC THREE-DIMENSIONAL MODELING
DE102022118651A1 (en) MULTI-RESOLUTION HASH CODING FOR NEURAL NETWORKS
DE112022002079T5 (en) HIGH-PRECISION SEMANTIC IMAGE EDITING USING NEURONAL NETWORKS FOR SYNTHETIC DATA GENERATION SYSTEMS AND APPLICATIONS
DE102022113244A1 (en) Joint shape and appearance optimization through topology scanning
DE102018114799A1 (en) SEMINAR-LEANED LEARNING FOR ORIENTATION LOCALIZATION
DE102022104142A1 (en) REAL-TIME RADIANCE CACHING BY A NEURAL NETWORK FOR PATH TRACKING PURPOSES
DE102022123434A1 (en) Joint estimation of heart rate and respiratory rate using neural networks
DE102022121509A1 (en) SINGLE FRAME INVERSE RENDERING
DE102022107232A1 (en) PACKED ERROR CORRECTION CODE (ECC) FOR COMPRESSED PRIVACY
DE102021128286A1 (en) ADAPTIVE SAMPLING AT A TARGET SAMPLE RATE

Legal Events

Date Code Title Description
R012 Request for examination validly filed