DE102021109501A1 - Durch erzeugendes gegnerisches neuronales netzwerk unterstützte videorekonstruktion - Google Patents

Durch erzeugendes gegnerisches neuronales netzwerk unterstützte videorekonstruktion Download PDF

Info

Publication number
DE102021109501A1
DE102021109501A1 DE102021109501.8A DE102021109501A DE102021109501A1 DE 102021109501 A1 DE102021109501 A1 DE 102021109501A1 DE 102021109501 A DE102021109501 A DE 102021109501A DE 102021109501 A1 DE102021109501 A1 DE 102021109501A1
Authority
DE
Germany
Prior art keywords
network
data
neural
computer
image
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
DE102021109501.8A
Other languages
English (en)
Inventor
Tero Tapani KARRAS
Samuli Matias Laine
David Patrick Luebke
Jaakko T. Lehtinen
Miika Samuli Aittala
Timo Oskari Aila
Ming-Yu Liu
Arun Mohanray Mallya
Ting-Chun Wang
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/069,449 external-priority patent/US11580395B2/en
Application filed by Nvidia Corp filed Critical Nvidia Corp
Publication of DE102021109501A1 publication Critical patent/DE102021109501A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • G06F18/241Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
    • G06F18/2413Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches based on distances to training or reference patterns
    • G06F18/24133Distances to prototypes
    • G06F18/24143Distances to neighbourhood prototypes, e.g. restricted Coulomb energy networks [RCEN]
    • 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/08Learning methods
    • 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
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/82Arrangements for image or video recognition or understanding using pattern recognition or machine learning using neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V40/00Recognition of biometric, human-related or animal-related patterns in image or video data
    • G06V40/10Human or animal bodies, e.g. vehicle occupants or pedestrians; Body parts, e.g. hands
    • G06V40/16Human faces, e.g. facial parts, sketches or expressions
    • G06V40/168Feature extraction; Face representation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V40/00Recognition of biometric, human-related or animal-related patterns in image or video data
    • G06V40/10Human or animal bodies, e.g. vehicle occupants or pedestrians; Body parts, e.g. hands
    • G06V40/16Human faces, e.g. facial parts, sketches or expressions
    • G06V40/172Classification, e.g. identification
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/132Sampling, masking or truncation of coding units, e.g. adaptive resampling, frame skipping, frame interpolation or high-frequency transform coefficient masking
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/172Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a picture, frame or field
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/43Processing of content or additional data, e.g. demultiplexing additional data from a digital video stream; Elementary client operations, e.g. monitoring of home network or synchronising decoder's clock; Client middleware
    • H04N21/44Processing of video elementary streams, e.g. splicing a video clip retrieved from local storage with an incoming video stream or rendering scenes according to encoded video stream scene graphs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/45Management operations performed by the client for facilitating the reception of or the interaction with the content or administrating data related to the end-user or to the client device itself, e.g. learning user preferences for recommending movies, resolving scheduling conflicts
    • H04N21/466Learning process for intelligent management, e.g. learning user preferences for recommending movies
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/40Client devices specifically adapted for the reception of or interaction with content, e.g. set-top-box [STB]; Operations thereof
    • H04N21/47End-user applications
    • H04N21/478Supplemental services, e.g. displaying phone caller identification, shopping application
    • H04N21/4788Supplemental services, e.g. displaying phone caller identification, shopping application communicating with other users, e.g. chatting
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/14Systems for two-way working
    • H04N7/15Conference systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V20/00Scenes; Scene-specific elements
    • G06V20/50Context or environment of the image
    • G06V20/56Context or environment of the image exterior to a vehicle by using sensors mounted on the vehicle
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V40/00Recognition of biometric, human-related or animal-related patterns in image or video data
    • G06V40/10Human or animal bodies, e.g. vehicle occupants or pedestrians; Body parts, e.g. hands
    • G06V40/16Human faces, e.g. facial parts, sketches or expressions
    • G06V40/174Facial expression recognition

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Multimedia (AREA)
  • Health & Medical Sciences (AREA)
  • General Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Computation (AREA)
  • Signal Processing (AREA)
  • Artificial Intelligence (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Software Systems (AREA)
  • Computing Systems (AREA)
  • Oral & Maxillofacial Surgery (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Biophysics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Molecular Biology (AREA)
  • Biomedical Technology (AREA)
  • Mathematical Physics (AREA)
  • Computational Linguistics (AREA)
  • Databases & Information Systems (AREA)
  • Human Computer Interaction (AREA)
  • Medical Informatics (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Evolutionary Biology (AREA)
  • Image Analysis (AREA)
  • Image Processing (AREA)

Abstract

Ein Latenzcode, der in einem Eingaberaum definiert ist, wird durch das neuronale Mappingnetzwerk verarbeitet, um einen Zwischen-Latenzcode zu erzeugen, der in einem Zwischen-Latenzraum definiert ist. Der Zwischen-Latenzcode kann als ein Erscheinungsvektor verwendet werden, der durch das neuronale Synthesenetzwerk verarbeitet wird, um ein Bild zu erzeugen. Der Erscheinungsvektor ist eine komprimierte Kodierung von Daten, wie z.B. Videoframes mit dem Gesicht einer Person, Audio und anderen Daten. Erfasste Bilder können auf einem lokalen Gerät in Erscheinungsvektoren umgewandelt und an ein entferntes Gerät übertragen werden, wobei im Vergleich zur Übertragung der erfassten Bilder viel weniger Bandbreite benötigt wird. Ein neuronales Synthesenetzwerk auf dem entfernten Gerät rekonstruiert die Bilder für die Anzeige.

Description

  • TECHNISCHES GEBIET
  • Die Erfindung bezieht sich auf neuronale Netzwerke, insbesondere auf eine Generatorarchitektur zur Synthese von Daten mit Hilfe von maßstabsspezifischen Steuerungen.
  • HINTERGRUND
  • Die Auflösung und die Qualität von Bildern, die von erzeugenden gegnerischen Netzwerken (GANs; Generative Adversarial Networks) erzeugt werden, hat sich in letzter Zeit verbessert. Dennoch arbeiten GANs weiterhin als schwarze Kästen bzw. Black Boxes, und trotz jüngster Bemühungen fehlt noch immer das Verständnis für verschiedene Aspekte des Bildsyntheseprozesses, z.B. der Entstehung stochastischer Merkmale. Die Eigenschaften des Latenzraums sind ebenfalls kaum verstanden, und die häufig nachgewiesenen Interpolationen des Latenzraums bieten keine quantitative Möglichkeit, verschiedene GANs miteinander zu vergleichen. Es besteht die Notwendigkeit, sich mit diesen und/oder anderen, dem Stand der Technik zugehörigen Fragen zu befassen.
  • KURZBESCHREIBUNG
  • Eine stilbasierte generative Netzwerkarchitektur ermöglicht die maßstabsspezifische Steuerung von synthetisierten Ausgabedaten, wie z.B. Bildern. Das stilbasierte generative neuronale Netzwerk (neuronales Generatornetzwerk) beinhaltet während des Trainings ein abbildendes Netzwerk bzw. Abbildungsnetzwerk bzw. Mappingnetzwerk und ein synthetisierendes Netzwerk bzw. Synthesenetzwerk. Während der Vorhersage kann das Mappingnetzwerk weggelassen, repliziert oder mehrfach ausgewertet werden. Das Synthesenetzwerk kann dazu verwendet werden, hoch unterschiedliche, hochqualitative Ausgabedaten mit unterschiedlichsten Attributen bzw. Eigenschaften erzeugen. Zum Beispiel sind dann, wenn sie dazu verwendet werden, Bilder von Gesichtern von Menschen zu generieren, die Attribute, die variieren können, Alter, Ethnizität, Kameraperspektive, Pose, Gesichtsform, Brille, Farben (Augen, Haar, usw.), Frisur, Beleuchtung, Hintergrund, usw. Abhängig von der Aufgabenstellung können die generierten Ausgabedaten Bilder, Audio, Video, dreidimensionale (3D) Objekte, Text usw. beinhalten.
  • Ein latenter Code bzw. Latenzcode, der in einem Eingaberaum definiert ist, wird durch das abbildende neuronale Netzwerk bzw. neuronale Mappingnetzwerk verarbeitet, um einen Zwischen-Latenzcode zu erzeugen, der in einem Zwischen-Latenzraum definiert ist. Der Zwischen-Latenzcode kann als ein Aussehens- bzw. Erscheinungsvektor verwendet werden, der durch das neuronale Synthesenetzwerk verarbeitet wird, um ein Bild zu erzeugen. Der Erscheinungsvektor ist eine komprimierte Kodierung von Daten, wie z.B. Videoframes mit dem Gesicht einer Person, Audio und anderen Daten. Erfasste Bilder können in Erscheinungsvektoren auf einem lokalen Gerät umgewandelt und an ein entferntes Gerät übertragen werden, wobei im Vergleich zur Übertragung der erfassten Bilder viel weniger Bandbreite benötigt wird. Ein neuronales Synthesenetzwerk auf dem entfernten Gerät rekonstruiert die Bilder für die Anzeige.
  • Ein Verfahren, ein computer-lesbares Medium und ein System werden für die durch ein erzeugendes gegnerisches neuronales Netzwerk unterstützte Videorekonstruktion offenbart. Replikationsdaten, die für ein reales oder synthetisches Subjekt spezifisch sind, werden für die Konfiguration eines neuronalen Synthesenetzwerks erhalten. Es wird ein Erscheinungsvektor empfangen, der Attribute eines menschlichen Gesichts kodiert, das in einem Videobild erfasst wurde. Das neuronale Synthesenetzwerk verarbeitet den Erscheinungsvektor, um ein Bild des menschlichen Gesichts zu rekonstruieren, einschließlich von Eigenschaften, die durch die Replikationsdaten definiert sind.
  • Figurenliste
    • 1A veranschaulicht ein Blockdiagramm eines stilbasierten Generatorsystems, gemäß einer Ausführungsform.
    • 1B veranschaulicht Bilder, die von dem stilbasierten Generatorsystem erzeugt werden, gemäß einer Ausführungsform.
    • 1C veranschaulicht ein Ablaufdiagramm eines Verfahrens für stilbasierte Erzeugung, gemäß einer Ausführungsform.
    • 2A veranschaulicht ein Blockdiagramm des in 1A dargestellten neuronalen Mappingnetzwerks, gemäß einer Ausführungsform.
    • 2B veranschaulicht ein Blockdiagramm des in 1A dargestellten neuronalen Synthesenetzwerks, gemäß einer Ausführungsform.
    • 2C veranschaulicht ein Ablaufdiagramm eines Verfahrens zur Anwendung räumlichen Rauschens unter Verwendung des stilbasierten Generatorsystems, gemäß einer Ausführungsform.
    • 2D veranschaulicht ein Blockdiagramm eines GAN-Systems, gemäß einer Ausführungsform.
    • 3 veranschaulicht eine Parallelverarbeitungseinheit, gemäß einer Ausführungsform.
    • 4A veranschaulicht einen allgemeinen Verarbeitungscluster innerhalb der Parallelverarbeitungseinheit von 3, gemäß einer Ausführungsform.
    • 4B veranschaulicht eine Speicherpartitionseinheit der Parallelverarbeitungseinheit aus 3, gemäß einer Ausführungsform.
    • 5A veranschaulicht den Streaming-Multiprozessor von 4A, gemäß einer Ausführungsform.
    • 5B ist ein konzeptionelles Diagramm eines unter Verwendung der PPU von 3 implementierten Verarbeitungssystems, gemäß einer Ausführungsform.
    • 5C veranschaulicht ein beispielhaftes System, in dem die unterschiedliche Architektur und/oder Funktionalität der verschiedenen vorangehenden Ausführungsformen implementiert sein kann.
    • 5D veranschaulicht Komponenten eines beispielhaften Systems, das zum Trainieren und Nutzen von maschinellem Lernen verwendet werden kann, zur Verwendung bei der Implementierung einiger Ausführungsformen der Erfindung.
    • 6A veranschaulicht ein beispielhaftes Video-Streaming-System, das für die Verwendung bei der Implementierung einiger Ausführungsformen der Erfindung geeignet ist.
    • 6B veranschaulicht eine Vielzahl von Erscheinungsvektoren zur Verwendung bei der Implementierung einiger Ausführungsformen der Erfindung
    • 6C veranschaulicht ein Flussdiagramm eines Verfahrens zur GAN-unterstützten Videokompression, gemäß einer Ausführungsform.
    • 6D veranschaulicht ein Flussdiagramm eines Verfahrens zur GAN-unterstützten Videorekonstruktion, gemäß einer Ausführungsform.
    • 7A ist ein konzeptionelles Diagramm einer Trainingskonfiguration für ein neuronales Synthesenetzwerk, zur Verwendung bei der Implementierung einiger Ausführungsformen der Erfindung.
    • 7B ist ein konzeptionelles Diagramm eines End-to-End-Systems, das den Projektor aus 7A enthält, zur Verwendung bei der Implementierung einiger Ausführungsformen der Erfindung.
    • 7C ist ein konzeptionelles Diagramm einer Konfiguration zum Erzeugen von Trainingsdaten, zur Verwendung bei der Implementierung einiger Ausführungsformen der Erfindung.
    • 7D ist ein konzeptionelles Diagramm einer Trainingskonfiguration, die Orientierungspunkte zur Vorhersage von Erscheinungsvektoren verwendet, zur Verwendung bei der Implementierung einiger Ausführungsformen der Erfindung.
    • 7E ist ein konzeptionelles Diagramm eines anderen End-to-End-Systems, das das neuronale Synthesenetzwerk enthält, zur Verwendung bei der Implementierung einiger Ausführungsformen der Erfindung.
    • 8A ist ein konzeptionelles Diagramm einer anderen Trainingskonfiguration für ein neuronales Synthesenetzwerk, zur Verwendung bei der Implementierung einiger Ausführungsformen der Erfindung.
    • 8B ist ein konzeptionelles Diagramm einer weiteren Trainingskonfiguration für ein neuronales Synthesenetzwerk, zur Verwendung bei der Implementierung einiger Ausführungsformen der Erfindung.
  • DETAILLIERTE BESCHREIBUNG
  • Eine stilbasierte generative Netzwerkarchitektur ermöglicht eine skalen- bzw. maßstabsspezifische Steuerung der synthetisierten Ausgabe. Ein stilbasiertes Generatorsystem umfasst ein Mappingnetzwerk und ein Synthesenetzwerk. Konzeptionell werden in einer Ausführungsform Merkmalskarten bzw. Merkmalstabellen (die räumlich variierende Informationen enthalten, die den Inhalt der Ausgabedaten repräsentieren, wobei jede Merkmalstabelle ein Kanal von Zwischenaktivierungen ist), die von verschiedenen Schichten des Synthesenetzwerks erzeugt werden, auf der Grundlage von Stilsteuersignalen modifiziert, die von dem Mappingnetzwerk bereitgestellt werden. Die Stilsteuersignale für verschiedene Schichten des Synthesenetzwerks können aus dem gleichen Latenzcode oder verschiedenen Latenzcodes generiert sein. Wie hierin verwendet, signalisiert der Begriff Stilsteuerung Steuerungsattribute synthetisierter Bilder eines Subjekts, wie beispielsweise einer Pose, eines allgemeinen Haarstils, einer Gesichtsform, einer Brille, Farben (Augen, Haare, Beleuchtung) und Mikrostruktur. Ein Latenzcode kann ein zufälliger N-dimensionaler Vektor sein, der z.B. aus einer Gauß'schen Verteilung gezeichnet wird. Die Stilsteuersignale für die verschiedenen Ebenen des Synthesenetzwerks können aus dem gleichen oder verschiedenen Mappingnetzwerken generiert sein. Zusätzlich kann in jede Schicht des Synthesenetzwerkes räumliches Rauschen injiziert werden.
  • 1A veranschaulicht ein Blockdiagramm eines stilbasierten Generatorsystems 100 gemäß einer Ausführungsform. Das stilbasierte Generatorsystem 100 beinhaltet ein abbildendes neuronales Netzwerk bzw. neuronales Mappingnetzwerk 110, eine Stilumwandlungseinheit 115 und ein synthetisierendes neuronales Netzwerk bzw. neuronales Synthesenetzwerk 140. Nachdem das neuronale Synthesenetzwerk 140 trainiert ist, kann das neuronale Synthesenetzwerk 140 auch ohne das neuronale Mappingnetzwerk 110 eingesetzt werden, wenn der/die Latenz-Zwischencode(s) und/oder die von der Stilumwandlungseinheit 115 erzeugten Stilsignale vorab berechnet werden. In einer Ausführungsform können zusätzliche Stilumwandlungseinheiten 115 enthalten sein, um den durch das neuronale Mappingnetzwerk 110 erzeugten Zwischen-Latenzcode in ein zweites Stilsignal bzw. Signal des zweiten Stils umzuwandeln, oder um einen anderen Zwischen-Latenzcode in das zweite Stilsignal umzuwandeln. Ein oder mehrere zusätzliche neuronale Netzwerke110 können in das stilbasierte Generatorsystem 100 aufgenommen sein, um aus dem Latenzcode oder den zusätzlichen Latenzcodes zusätzliche Zwischen-Latenzcodes zu erzeugen.
  • Das stilbasierte Generatorsystem 100 kann durch ein Programm, eine kundenspezifische Schaltung oder durch eine Kombination aus einer kundenspezifischen Schaltung und einem Programm implementiert sein. Zum Beispiel kann das stilbasierte Generatorsystem 100 mit einer GPU (Grafikverarbeitungseinheit), einer CPU (Zentralverarbeitungseinheit) oder einem anderen Prozessor, der die hierin beschriebenen Operationen ausführen kann, implementiert sein. Ferner versteht sich für den Fachmann, dass jedes System, das die Operationen des stilbasierten Generatorsystems 100 ausführt, im Rahmen und im Sinne der Ausführungsformen der Erfindung liegt.
  • Konventionell wird ein Latenzcode über eine Eingangsschicht, wie z.B. die erste Schicht eines neuronalen Feedforward-Netzwerks, einem Generator zur Verfügung gestellt. In einer Ausführungsform hingegen beginnt das neuronale Synthesenetzwerk 140 ausgehend von einer gelernten Konstante und wird der Latenzcode in das neuronale Mappingnetzwerk 110 eingegeben, anstatt den Latenzcode zu erhalten. In einer Ausführungsform sind die ersten Zwischendaten die gelernte Konstante. Bei einem gegebenen Latenzcode z im Eingabe-Latenzbereich Z erzeugt ein nichtlineares Mappingnetzwerk ƒ/: Z → W zunächst einen Zwischen-Latenzcode w ∈ W. Das neuronale Mappingnetzwerk 110 kann dazu konfiguriert sein, das nichtlineare Mappingnetzwerk zu implementieren. In einer Ausführungsform sind die Dimensionen von Eingangs- und Ausgangsaktivierungen in dem Eingangs-Latenzraum Z und dem Zwischen-Latenzraum W gleich (z.B. 512). In einer Ausführungsform ist die Mappingfunktion ƒ unter Verwendung eines 8-Schichten-MLP (Multilayer-Perceptron, d.h. ein neuronales Netzwerk, das nur aus vollständig miteinander verbundenen Schichten besteht) realisiert.
  • Während der konventionelle Generator nur den Latenzcode über die Eingangsschicht des Generators zuführt, bildet das neuronale Mappingnetzwerk 110 stattdessen den Eingabe-Latenzcode z auf den dazwischen liegenden Latenzraum W ab, um den Zwischen-Latenzcode w zu erzeugen. Die Stilumwandlungseinheit 115 wandelt den Zwischen-Latenzcode w in ein erstes Stilsignal um. Ein oder mehrere Zwischen-Latenzcodes w werden in räumlich invariante Stile einschließlich des ersten Stilsignals und eines zweiten Stilsignals umgewandelt. Im Gegensatz zu herkömmlichen Stiltransfertechniken werden die räumlich invarianten Stile nicht aus einem Beispielbild, sondern aus einem Vektor, nämlich dem Zwischen-Latenzcode w, berechnet. Der eine oder die mehreren Zwischen-Latenzcodes w können durch ein oder mehrere neuronale Mappingnetzwerke 110 für einen oder mehrere entsprechende Latenzcodes z erzeugt werden. Das neuronale Synthesenetzwerk 140 verarbeitet die ersten Zwischendaten (z.B. eine gelernte Konstante, die als Merkmalstabelle kodiert ist) gemäß den Stilsignalen, z.B. Erhöhen der Dichte der ersten Zwischendaten von 4x4 auf 8x8 und Fortfahren, bis die Ausgabedatendichte erreicht ist.
  • In einer Ausführungsform führt die Stilumwandlungseinheit 115 eine affine Transformation durch. Die Stilumwandlungseinheit 115 kann dazu trainiert sein, die affine Transformation während des Trainings des neuronalen Synthesenetzwerks 140 zu lernen. Das erste Stilsignal steuert Operationen auf einer ersten Schicht 120 des neuronalen Synthesenetzwerks 140, um modifizierte erste Zwischendaten zu erzeugen. In einer Ausführungsform steuert das erste Stilsignal eine adaptive Instanznormalisierung (AdaIN) innerhalb der ersten Schicht 120 des Synthesenetzwerks 140. In einer Ausführungsform empfängt die AdalN-Operation einen Satz von Inhaltsmerkmalstabellen und ein Stilsignal und modifiziert die Statistiken erster Ordnung (d.h. den „Stil“) der Inhaltsmerkmalstabellen, um mit den durch das Stilsignal definierten Statistiken erster Ordnung übereinzustimmen. Die von der ersten Schicht 120 ausgegebenen modifizierten ersten Zwischendaten werden von der/den Verarbeitungsschicht(en) 125 verarbeitet, um zweite Zwischendaten zu erzeugen. In einer Ausführungsform beinhalten die Verarbeitungsschicht(en) 125 eine 3x3-Faltungsschicht. In einer Ausführungsform beinhalten die Verarbeitungsschicht(en) 125 eine 3x3-Faltungsschicht gefolgt von einer AdaIN-Operation, die ein zusätzliches Stilsignal empfängt, das in 1A nicht explizit gezeigt ist.
  • Die zweiten Zwischendaten werden in eine zweite Schicht 130 des neuronalen Synthesenetzwerks 140 eingegeben. Das zweite Stilsignal steuert Operationen auf 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 kodiert ist, und modifiziert das zweite Stilsignal ein zweites Attribut, das in den ersten Zwischendaten und den zweiten Zwischendaten kodiert ist. Zum Beispiel sind die ersten Zwischendaten grobe Daten im Vergleich zu den zweiten Zwischendaten und wird der erste Stil auf der ersten Schicht 120 in grobe Merkmalstabellen übertragen, während der zweite Stil auf der zweiten Schicht 130 in Merkmalstabellen mit höherer Dichte übertragen wird.
  • In einer Ausführungsform erhöht die zweite Schicht 130 die Abtastrate der zweiten Zwischendaten und beinhaltet eine 3x3-Faltungsschicht gefolgt von einer AdaIN-Operation. 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, deren Inhalt den zweiten Zwischendaten entspricht. 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 konvertiert, die als Farbkanäle (z.B. rot, grün, blau) kodiert sind.
  • In einer Ausführungsform beinhaltet/beinhalten die Verarbeitungsschicht(en) 135 eine 3x3-Faltungsschicht. In einer Ausführungsform sind die Ausgabedaten ein Bild mit ersten Attributen, die einer ersten Skale bzw. einem ersten Maßstab entsprechen, und zweiten Attributen, die einer zweiten Skale bzw. einem zweiten Maßstab entsprechen, wobei der erste Maßstab im Vergleich zu dem zweiten Maßstab gröber ist. Der erste Maßstab kann einem Maßstab der Merkmalstabellen entsprechen, die von der ersten Schicht 120 verarbeitet werden, und der zweite Maßstab kann einem Maßstab der Merkmalstabellen entsprechen, die von der zweiten Schicht 130 verarbeitet werden. Demgemäß modifiziert das erste Stilsignal die ersten Attribute auf dem ersten Maßstab und modifiziert das zweite Stilsignal die zweiten Attribute auf dem zweiten Maßstab.
  • Nachstehend werden weitere darstellende Informationen zu verschiedenen optionalen Architekturen und Merkmalen, mit welchen das vorangehende Rahmenwerk je nach Benutzerwunsch implementiert sein kann, gegeben. Es wird nachdrücklich darauf hingewiesen, dass die folgenden Informationen nur zur Veranschaulichung dienen und in keiner Weise als beschränkend anzusehen sind. Jedes der folgenden Merkmale kann wahlweise mit oder ohne Ausschluss anderer beschriebener Merkmale vorgesehen sein.
  • 1B veranschaulicht Bilder, die durch das stilbasierte Generatorsystem 100 gemäß einer Ausführungsform erzeugt werden. Die Bilder werden in einer Auflösung von 10242 generiert. In anderen Ausführungsformen können die Bilder in einer anderen Auflösung erzeugt werden. Zwei verschiedene Latenzcodes werden dazu verwendet, die Stile der Bilder zu steuern, die durch das stilbasierte Generatorsystem 100 generiert werden. Im Einzelnen wird ein erster Teil der Stile durch das neuronale Mappingnetzwerk 110 und eine Stilumwandlungseinheit 115 aus den latenten „Quell“-Codes in der oberen Zeile erzeugt. Ein zweiter Teil der Stile wird durch das gleiche oder ein zusätzliches neuronales Netzwerk 110 und eine entsprechende Stilumwandlungseinheit 115 aus den latenten „Ziel“-Codes in der linksseitigsten Spalte erzeugt. Das stilbasierte Generatorsystem 100 beginnt ausgehend von einem gelernten konstanten Input an dem neuronalen Synthesenetzwerk 140 und passt den „Stil“ des Bilds in jeder Faltungsschicht auf der Grundlage des Latenzcodes an und steuert damit direkt die Stärke von in Merkmalstabellen kodierten Bildattributen bei verschiedenen Maßstäben. Mit anderen Worten wird ein gegebener Satz von Stilen aus „Quell“-Daten in „Ziel“-Daten kopiert. Folglich werden die kopierten Stile (grob, mittel oder fein) aus den „Quell“-Daten übernommen, während alle anderen Stile die gleichen bleiben wie in den „Ziel“-Daten.
  • Der erste Teil der Stile (Ziel) wird durch das neuronale Netzwerk 140 dazu angewendet, die gelernte Konstante zu verarbeiten, wobei eine erste Teilmenge des ersten Teils der Stile durch eine 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 Bildzeile in 1B ersetzt der zweite Teil der Stile (Quelle) den ersten Teil der Stile (Ziel) an groben Schichten des neuronalen Synthesenetzwerks 140. In einer Ausführungsform entsprechen die groben Schichten groben räumlichen Dichten 42 -82. In einer Ausführungsform werden hochrangige Attribute, wie beispielsweise Pose, allgemeine Frisur, Gesichtsform und Brille, von der Quelle kopiert, während andere Attribute, wie beispielsweise alle Farben (Augen, Haare, Beleuchtung) und feinere Gesichtszüge des Ziels beibehalten werden.
  • In der fünften und der sechsten Bildzeile in 1B ersetzt der zweite Teil der Stile (Quelle) den ersten Teil der Stile (Ziel) in mittleren Schichten des neuronalen Synthesenetzwerks 140. In einer Ausführungsform entsprechen die mittleren Schichten räumlichen Dichten von 162 - 322. Kleinere Gesichtszüge, Frisur, Augen offen/geschlossen werden von der Quelle geerbt, während die Pose, die allgemeine Gesichtsform und die Brille von dem Ziel erhalten bleiben. Schließlich ersetzt in der letzten Bildzeile in 1B der zweite Teil der Stile (Quelle) den ersten Teil der Stile (Ziel) in hochdichten (feinen) Schichten des neuronalen Synthesenetzwerks 140. In einer Ausführungsform entsprechen die feinen Schichten räumlichen Dichten von 642 - 10242. Unter Verwendung der Stile aus dem zweiten Teil der Stile (Quelle) für die feinen Schichten werden das Farbschema und die Mikrostruktur von der Quelle vererbt, während die Pose und die allgemeine Gesichtsform von dem Ziel erhalten bleiben.
  • Die Architektur des stilbasierten Generatorsystems 100 ermöglicht die Steuerung der Bildsynthese durch skalen- bzw. maßstabsspezifische Modifikationen an den Stilen. Das Mappingnetzwerk 110 und die affinen Transformationen, die von der Stilumwandlungseinheit 115 durchgeführt werden, können als eine Möglichkeit angesehen werden, Proben für jeden Stil aus einer gelernten Verteilung zu ziehen, und das Synthesenetzwerk 140 stellt einen Mechanismus bereit zum Erzeugen eines neuen Bilds auf der Grundlage einer Sammlung von Stilen. Die Wirkungen jedes Stils sind in dem Synthesenetzwerk 140 lokalisiert, d.h. es ist zu erwarten, dass ein Modifizieren einer bestimmten Teilmenge der Stile nur bestimmte Attribute des Bilds beeinflusst.
  • Die Verwendung von Stilsignalen aus zumindest zwei verschiedenen Latenzcodes, wie in 1B gezeigt, wird als eine Stilmischung oder Mischungsregelung bezeichnet. Das Mischen von Stilen während des Trainings dekorreliert benachbarte Stile und ermöglicht eine feinere Kontrolle über die generierten Bilder. In einer Ausführungsform wird während des Trainings ein bestimmter Prozentsatz von Bildern unter Verwendung zweier zufälliger Latenzcodes statt einem erzeugt. Wenn ein solches Bild generiert wird, kann eine zufällige Stelle (z.B. ein Übergangspunkt) in dem neuronalen Synthesenetzwerk 140 ausgewählt werden, an der die Verarbeitung von der Verwendung von Stilsignalen, die unter Verwendung eines ersten Latenzcodes erzeugt wurden, zu Stilsignalen, die unter Verwendung eines zweiten Latenzcodes erzeugt wurden, wechselt. In einer Ausführungsform werden zwei Latenzcodes z1, z2 durch das neuronale Mappingnetzwerk 110 verarbeitet, und steuern die entsprechenden Zwischen-Latenzcodes w1, w2 die Stile so, dass w1 vor dem Übergangspunkt und w2 nach dem Übergangspunkt gilt. Die Mischungsregelungstechnik verhindert, dass das neuronale Synthesenetzwerk 140 davon ausgeht, dass benachbarte Stile korreliert sind.
  • TABELLE 1 zeigt, wie ein Ermöglichen der Mischungsregelung während des Trainings die Lokalisierung der Stile signifikant verbessern kann, was durch verbesserte (niedriger ist besser) Frechet-Inception-Distanzen (FIDs) in Szenarien, in denen mehrere Latenzcodes zur Testzeit gemischt werden, angezeigt wird. Die in 1B gezeigten Bilder sind Beispiele von Bildern, die durch Mischen zweier Latenzcodes bei verschiedenen Maßstäben synthetisiert wurden. Jede Teilmenge von Stilen steuert sinnvolle hochrangige Attribute des Bilds. TABELLE 1 FIDs für verschiedene Mischungsregelungsverhältnisse
    Mischungsverhältnis (Trainingszeit) Anzahl von Latenzcodes (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
  • Das Mischungsverhältnis gibt den Prozentsatz von Trainingsbeispielen an, für welchen die Mischungsregelung aktiviert ist. Während der Testzeit wurden maximal vier verschiedene Latenzcodes nach dem Zufallsprinzip ausgewählt, und wurden auch die Übergangspunkte zwischen den verschiedenen Latenzcodes zufällig gewählt. Die Mischungsregelung verbessert die Toleranz gegenüber diesen ungünstigen Operationen signifikant.
  • Wie die FIDs bestätigen, ist die durchschnittliche Qualität der Bilder, die von dem stilbasierten Generatorsystem 100 erzeugt wurden, hoch, und werden selbst Accessoires wie Brillen und Hüte erfolgreich synthetisiert. Für die in 1B gezeigten Bilder wird die Abtastung aus den extremen Regionen von W unter Verwendung des so genannten Abschneide- bzw. Trunkierungs-Tricks vermieden, der in W anstatt in Z durchgeführt werden kann. Es wird angemerkt, dass das stilbasierte Generatorsystem 100 dazu implementiert sein kann, die Anwendung der Trunkierung nur selektiv auf niedrige Auflösungen anzuwenden, so dass hochauflösende Details nicht beeinträchtigt werden.
  • Unter Berücksichtigung der Verteilung von Trainingsdaten sind Bereiche mit geringer Dichte schlecht repräsentiert und daher wahrscheinlich für das stilbasierte Generatorsystem 100 schwer zu lernen. Nicht gleichmäßige Verteilungen von Trainingsdaten stellen bei allen generativen Stilisierungstechniken ein signifikantes offenes Problem dar. Es ist jedoch bekannt, dass das Zeichnen latenter Vektoren aus einem trunkierten bzw. abgeschnittenen oder anderweitig verkleinerten Abtastraum die durchschnittliche Bildqualität tendenziell verbessert, obwohl ein gewisser Grad an Variation verloren geht. In einer Ausführungsform wird zur Verbesserung des Trainings des stilbasierten Generatorsystems 100 ein Schwerpunkt von W als w̅ = Ez∼P(z) [ƒ(z)] berechnet. Im Falle eines Datensatzes von menschlichen Gesichtern (z.B. FFHQ, Flickr-Gesichter-HQ) repräsentiert der Punkt eine Art Durchschnittsgesicht (ψ=0). Die Abweichung eines gegebenen w wird von der Mitte aus als w' = w̅ + ψ(w- w̅) verkleinert, worin ψ < 1 ist. In konventionellen generativen Stilisierungssystemen ist nur eine Teilmenge der neuronalen Netzwerke für eine solche Trunkierung geeignet, auch wenn eine orthogonale Regularisierung verwendet wird, scheint eine Trunkierung im W-Raum auch ohne Änderungen an der Verlustfunktion zuverlässig zu funktionieren.
  • 1C veranschaulicht ein Ablaufdiagramm eines Verfahrens 150 zur stilbasierten Generierung gemäß einer Ausführungsform. Das Verfahren 150 kann durch ein Programm, eine benutzerdefinierte Schaltung oder durch eine Kombination aus einer benutzerdefinierten Schaltung und einem Programm durchgeführt werden. Beispielsweise kann das Verfahren 150 von einer GPU (Grafikverarbeitungseinheit), einer CPU (Zentralverarbeitungseinheit) oder einem beliebigen Prozessor ausgeführt werden, der in der Lage ist, die Operationen des stilbasierten Generatorsystems 100 durchzuführen. Darüber hinaus versteht sich für den Fachmann, dass jedes System, das das Verfahren 150 durchführt, im Rahmen und im Sinne der Ausführungsformen der Erfindung liegt.
  • In Schritt 155 verarbeitet das neuronale Mappingnetzwerk 110 einen Latenzcode, der in einem Eingangsraum definiert ist, um einen Zwischen-Latenzcode zu erzeugen, der in einem Zwischen-Latenzraum definiert ist. In Schritt 160 wird der Zwischen-Latenzcode von der Stilumwandlungseinheit 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. In Schritt 170 werden die modifizierten ersten Zwischendaten von der/den 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 angewendet, um die zweiten Zwischendaten entsprechend dem zweiten Stilsignal zu modifizieren, um modifizierte zweite Zwischendaten zu erzeugen. In Schritt 180 werden die modifizierten zweiten Zwischendaten von der/den Verarbeitungsschicht(en) 135 verarbeitet, um Ausgabedaten zu erzeugen, deren Inhalt den zweiten Zwischendaten entspricht.
  • Es gibt verschiedene Definitionen zur Entflechtung, aber ein gemeinsames Ziel ist ein Latenzraum, der aus linearen Unterräumen besteht, von denen jeder einen Variationsfaktor steuert. Allerdings muss die Abtastwahrscheinlichkeit jeder Kombination von Faktoren in dem Latenzraum Z mit der entsprechenden Dichte in den Trainingsdaten übereinstimmen.
  • Ein großer Vorteil des stilbasierten Generatorsystems 100 besteht darin, dass der Zwischen-Latenzraum W eine Abtastung gemäß irgendeiner festen Verteilung nicht unterstützen muss; die Abtastdichte für das stilbasierte Generatorsystem 100 wird durch das gelernte stückweise kontinuierliche Mapping ƒ(z) induziert. Das Mapping kann dazu angepasst sein, W zu entwarpen bzw. zu entzerren, so dass die Variationsfaktoren linearer werden. Das stilbasierte Generatorsystem 100 kann natürlicherweise dazu neigen, W zu entzerren, da es einfacher sein sollte, realistische Bilder auf der Basis einer entflochtenen Repräsentation als auf der Basis einer verflochtenen Darstellung zu erzeugen. Als solches kann das Training einen weniger verflochtenen W in einer nicht überwachten Umgebung erzielen, d.h. wenn die Variationsfaktoren im Voraus nicht bekannt sind.
  • 2A veranschaulicht ein Blockdiagramm des in 1A gezeigten neuronalen Mappingnetzwerks 110 gemäß einer Ausführungsform. Einer Verteilung der Trainingsdaten kann eine Kombination von Attributen, wie z.B. Brillen tragende Kinder, fehlen. Eine Verteilung der Variationsfaktoren in der Kombination Brillen und Alter wird verglichen mit dem Latenzraum Z in dem Zwischen-Latenzraum W linearer.
  • In einer Ausführungsform beinhaltet das neuronale Mappingnetzwerk 110 eine Normalisierungsschicht 205 und mehrere vollständig verbundene Schichten 210. In einer Ausführungsform werden acht vollständig miteinander verbundene Schichten 210 nacheinander gekoppelt, um den Zwischen-Latenzcode zu erzeugen. Parameter (z.B. Gewichte) des neuronalen Mappingnetzwerks 110 werden während des Trainings gelernt, und die Parameter werden zur Verarbeitung der Eingabe-Latenzcodes verwendet, wenn das stilbasierte Generatorsystem 100 zur Erzeugung der Ausgabedaten eingesetzt wird. In einer Ausführungsform erzeugt das neuronale Mappingnetzwerk 110 einen oder mehrere Zwischen-Latenzcodes, die später von dem neuronalen Synthesenetzwerk 140 zur Erzeugung der Ausgabedaten verwendet werden.
  • Es gibt viele Attribute in menschlichen Porträts, die als stochastisch angesehen werden können, wie z.B. die genaue Platzierung von Haaren, Stoppeln, Sommersprossen oder Hautporen. Jedes beliebige derselben kann randomisiert werden, ohne eine Wahrnehmung des Bilds zu beeinflussen, solange die Randomisierungen der korrekten Verteilung folgen. Die künstliche Weglassung von Rauschen bei der Bilderzeugung führt zu Bildern mit einem merkmalslosen, „malerischen“ Aussehen. Insbesondere bei der Erstellung von menschlichen Porträts kann grobes Rauschen zu großflächigem lockig werden von Haar und einem Erscheinen größerer Hintergrundmerkmale führen, während das feine Rauschen die feineren Haarlocken, feineren Hintergrunddetails und Hautporen hervorheben kann.
  • Ein konventioneller Generator kann nur stochastische Variation basierend auf der Eingabe in das neuronale Netzwerk erzeugen, 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, wenn die Pseudozufallszahlen benötigt werden. Mit anderen Worten ist die Pseudozufallszahlengenerierung nicht absichtlich in den konventionellen Generator eingebaut. Stattdessen entsteht die Erzeugung von Pseudozufallszahlen während des Trainings von selbst, damit der konventionelle Generator das Trainingsziel erfüllen kann. Die Erzeugung der Pseudozufallszahlen verbraucht Kapazität des neuronalen Netzwerks, und es ist schwierig, die Periodizität des generierten Signals zu verbergen - und nicht immer erfolgreich, wie die sich häufig wiederholenden Muster in den generierten Bildern zeigen. Im Gegensatz dazu kann das stilbasierte Generatorsystem 100 dazu konfiguriert sein, diese Beschränkungen durch Hinzufügen von pixelweisem Rauschen nach jeder Faltung zu vermeiden.
  • In einer Ausführungsform ist das stilbasierte Generatorsystem 100 mit einem direkten Mittel zur Erzeugung stochastischer Details durch Einführen expliziter Rauscheingaben konfiguriert. In einer Ausführungsform sind die Rauscheingaben einkanalige Bilder, die aus unkorreliertem Gauß'schen Rauschen bestehen, und wird ein dediziertes Rauschbild in eine oder mehrere Schichten des Synthesenetzwerkes 140 eingegeben. Das Rauschbild kann unter Verwendung gelernter, merkmalsweiser Maßstabsfaktoren auf alle Merkmalstabellen übertragen und dann zu der Ausgabe der entsprechenden Faltung hinzugefügt werden.
  • 2B veranschaulicht ein Blockdiagramm des in 1A gezeigten neuronalen Synthesenetzwerks 140 gemäß einer Ausführungsform. Das neuronale Synthesenetzwerk 140 beinhaltet einen ersten Verarbeitungsblock 200 und einen zweiten Verarbeitungsblock 230. In einer Ausführungsform verarbeitet der Verarbeitungsblock 200 Merkmalstabellen mit 4x4-Auflösung und verarbeitet der Verarbeitungsblock 230 Merkmalstabellen mit 8x8-Auflösung. 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 enthalten sein.
  • 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, kanalweisen Skalierungsfaktor skaliert, bevor es mit den ersten Zwischendaten kombiniert (z.B. ergänzt) wird. In einer Ausführungsform sind das erste räumliche Rauschen, das zweite räumliche Rauschen, das dritte räumliche Rauschen und das vierte räumliche Rauschen von dem pixelweisen Gauß'schen Rauschen unabhängig.
  • Der erste Verarbeitungsblock 200 empfängt darüber hinaus das erste Stilsignal und das zweite Stilsignal. Wie vorangehend bereits erklärt wurde, können die Stilsignale durch Verarbeiten des Zwischen-Latenzcodes in Übereinstimmung mit einer gelernten affinen Transformation erhalten werden. Gelernte affine Transformationen spezialisieren w auf Stile y = (ys, yb), die adaptive Instanz- Normalisierungs (AdaIN)-Operationen steuern, die von den Modulen 220 in dem neuronalen Synthesenetzwerk 140 implementiert werden. AdalN eignet sich aufgrund seiner Effizienz und der kompakten Darstellung besonders gut für die Implementierung in dem stilbasierten Generatorsystem 100.
  • Die AdalN-Operation ist definiert als AdaIN ( x i , y ) = y s , i x i μ ( x i ) σ ( x i ) + y b , i
    Figure DE102021109501A1_0001
    worin jede Merkmalstabelle xi separat normalisiert und dann unter Verwendung der entsprechenden skalaren Komponenten aus Stil y skaliert und verzerrt wird. Die Dimensionalität von y ist somit das Zweifache der Anzahl der Merkmalstabellen im Vergleich zu der Eingabe der Schicht. In einer Ausführungsform ist eine Dimension des Stilsignals ein Vielfaches einer Anzahl von Merkmalstabellen in der Schicht, auf welche das Stilsignal angewendet wird. Im Gegensatz zum herkömmlichen Stiltransfer wird der räumlich invariante Stil y aus dem Vektor w und nicht aus einem Beispielbild berechnet.
  • Die Wirkungen jedes Stilsignals 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 Bilds beeinflusst. Um den Grund für die Lokalisierung zu erkennen, sei betrachtet, wie die von dem Modul 220 implementierte AdalN-Operation (Gl. 1) zunächst jeden Kanal auf Mittelwert null und Einheitenvarianz normalisiert, und erst dann Maßstäbe und Verzerrungen basierend auf dem Stilsignal anwendet. Die neuen Pro-Kanal-Statistiken, wie von dem Stil vorgegeben, modifizieren die relative Bedeutung von Merkmalen für die nachfolgende Faltungsoperation, aber die neuen Pro-Kanal-Statistiken hängen aufgrund der Normalisierung nicht von den ursprünglichen Statistiken ab. Folglich steuert jedes Stilsignal nur eine vordefinierte Anzahl von Faltung(en) 225, bevor es von der nächsten AdalN-Operation übersteuert wird. In einer Ausführungsform wird den Merkmalen nach jeder Faltung und vor der Verarbeitung durch ein anderes Modul 225 skaliertes räumliches Rauschen hinzugefügt.
  • Jedem Modul 220 kann eine Faltungsschicht 225 folgen. In einer Ausführungsform wendet die Faltungsschicht 225 einen 3 × 3-Faltungskern auf die Eingabe an. Innerhalb des Verarbeitungsblocks 200 werden zweite Zwischendaten, die von der Faltungsschicht 225 ausgegeben werden, mit dem zweiten räumlichen Rauschen kombiniert und in ein zweites Modul 220 eingegeben, das das Signal des zweiten Stils anwendet, um eine Ausgabe des Verarbeitungsblocks 200 zu erzeugen. In einer Ausführungsform wird das zweite räumliche Rauschen mit einen gelernten kanalweisen Skalierungsfaktor skaliert, bevor es mit den zweiten Zwischendaten kombiniert (z.B. zu diesen hinzugefügt) wird.
  • Der Verarbeitungsblock 230 empfängt die von dem Verarbeitungsblock 200 ausgegebenen Merkmalstabellen, und die Merkmalstabellen werden durch eine Upsampling-Schicht 235 hochgerechnet. In einer Ausführungsform werden 4x4-Merkmalstabellen durch die Upsampling-Schicht 235 auf 8x8-Merkmalstabellen hochgerechnet. Die hochgesampelten Merkmalstabellen 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 AdalN-Operation anwendet. In einer Ausführungsform wird das dritte räumliche Rauschen mit einem kanalweise gelernten Skalierungsfaktor 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 zu vierten Zwischendaten verarbeitet. Die vierten Zwischendaten werden mit dem vierten räumlichen Rauschen kombiniert und in ein viertes Modul 220 eingegeben, das das vierte Stilsignal über eine AdalN-Operation anwendet. In einer Ausführungsform wird das vierte räumliche Rauschen mit einem kanalweise gelernten Skalierungsfaktor skaliert, bevor es mit den vierten Zwischendaten kombiniert (z.B. zu diesen hinzugefügt) wird.
  • In einer Ausführungsform beträgt die Auflösung der Ausgabedaten 10242 und beinhaltet das neuronale Synthesenetzwerk 140 18 Schichten - zwei für jede Zweierpotenz der Auflösung (42 - 10242). Die Ausgabe der letzten Schicht des neuronalen Synthesenetzwerks 140 kann unter Verwendung einer separaten 1 × 1-Faltung nach RGB konvertiert werden. In einer Ausführungsform hat das neuronale Synthesenetzwerk 140 insgesamt 26,2 Mio. trainierbare Parameter, im Vergleich zu 23,1 Mio. in einem konventionellen Generator mit der gleichen Anzahl von Schichten und Merkmalstabellen.
  • Die Einführung von räumlichem Rauschen wirkt sich nur auf die stochastischen Aspekte der Ausgabedaten aus und belässt die Gesamtzusammensetzung und hochrangige Attribute wie beispielsweise die Identität intakt. Separate Rauscheingaben in das neuronale Synthesenetzwerk 140 ermöglichen die Anwendung einer stochastischen Variation auf verschiedene Teilmengen von Schichten. Die Anwendung einer räumlichen Rauscheingabe auf eine bestimmte Schicht des neuronalen Synthesenetzwerks 140 führt zu einer stochastischen Variation auf einem Maßstab, der dem Maßstab der jeweiligen Schicht entspricht.
  • Die Wirkung des Rauschens erscheint in dem neuronalen Synthesenetzwerk 140 eng lokalisiert. An jedem beliebigen Punkt in dem neuronalen Synthesenetzwerk 140 besteht der Druck, neue Inhalte so schnell wie möglich einzuführen, und besteht der einfachste Weg für das neuronale Synthesenetzwerk 140, stochastische Variation zu erzeugen, darin, sich auf die räumlichen Rauscheingaben zu verlassen. Für jede Schicht in dem neuronalen Synthesenetzwerk 140 steht ein neuer Satz von räumlichem Rauschen zur Verfügung, so dass es folglich keinen Anreiz gibt, die stochastischen Effekte aus früheren Aktivierungen zu erzeugen, was zu einer lokalisierten Wirkung führt. Daher beeinflusst das Rauschen nur inkonsequente stochastische Variationen (anders gekämmtes Haar, Bart, usw.). Demgegenüber haben Änderungen an den Stilsignalen globale Auswirkungen (Änderung der Pose, der Identität usw.).
  • In dem neuronalen Synthesenetzwerk 140 beeinflussen dann, wenn die Ausgabedaten ein Bild sind, die Stilsignale das gesamte Bild, weil komplette Merkmalstabellen mit den gleichen Werten skaliert und verzerrt werden. Daher können globale Effekte wie beispielsweise Pose, Beleuchtung oder Hintergrundstil kohärent gesteuert werden. Inzwischen wird das räumliche Rauschen unabhängig zu jedem Pixel addiert und eignet sich somit ideal zur Steuerung der stochastischen Variation. Würde das neuronale Synthesenetzwerk 140 versuchen, z.B. die Pose unter Verwendung des Rauschens zu steuern, würde das zu räumlich inkonsistenten Entscheidungen führen, die während des Trainings bestraft würden. Somit lernt das neuronale Synthesenetzwerk 140 ohne explizite Anleitung, die globalen und lokalen Kanäle in geeigneter Weise zu nutzen.
  • 2C zeigt ein Ablaufdiagramm eines Verfahrens 250 zur Anwendung räumlichen Rauschens 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 einer benutzerdefinierten Schaltung und einem Programm ausgeführt werden. Beispielsweise kann das Verfahren 250 von einer GPU (Grafikverarbeitungseinheit), einer CPU (Zentralverarbeitungseinheit) oder einem beliebigen Prozessor ausgeführt werden, der in der Lage ist, die Operationen des stilbasierten Generatorsystems 100 auszuführen. Darüber hinaus versteht sich für den Fachmann, dass jedes System, das das Verfahren 250 durchführt, im Rahmen und im Sinne der Ausführungsformen der Erfindung liegt.
  • In Schritt 255 wird ein erster Satz räumlichen Rauschens auf eine erste Schicht des neuronalen Synthesenetzwerks 140 angewendet, um die ersten Zwischendaten zu erzeugen, die Inhalte umfassen, die den Quelldaten entsprechen, die auf der Grundlage des ersten Satzes räumlichen Rauschens modifiziert sind. In einer Ausführungsform sind die Quelldaten die ersten Zwischendaten und ist die erste Schicht eine Schicht, die das Modul 220 und/oder die Faltungsschicht 225 beinhaltet. In Schritt 258 werden die geänderten ersten Zwischendaten von der/den Verarbeitungsschicht(en) 225 verarbeitet, um die zweiten Zwischendaten zu erzeugen. In Schritt 260 wird ein zweiter Satz von räumlichen Rauschens auf eine zweite Schicht des neuronalen Synthesenetzwerks 140 angewendet, um zweite Zwischendaten zu erzeugen, die Inhalte umfassen, die den ersten Zwischendaten entsprechen und die auf der Grundlage des zweiten Satzes von räumlichem Rauschen modifiziert sind. 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 beinhalten, die den zweiten Zwischendaten entsprechen. In einer Ausführungsform werden die zweiten Zwischendaten von einem weiteren Modul 220 und dem Block 230 verarbeitet, um die Ausgabedaten zu erzeugen.
  • Rauschen kann in die Schichten des neuronalen Synthesenetzwerks 140 injiziert werden, um die Synthese stochastischer Variationen in einem der Schicht entsprechenden Maßstab bzw. einer der Schicht entsprechenden Skale zu bewirken. Wichtig ist, dass das Rauschen sowohl während des Trainings als auch während der Erzeugung injiziert wird. Zusätzlich kann während der Erzeugung die Stärke des Rauschens modifiziert werden, um das „Aussehen“ der Ausgabedaten weiter zu kontrollieren. Die Bereitstellung von Stilsignalen anstelle der direkten Eingabe des Latenzcodes in das neuronale Synthesenetzwerk 140 in Kombination mit direkt in das neuronale Synthesenetzwerk 140 injiziertem Rauschen führt zu einer automatischen, unbeaufsichtigten Trennung von hochrangigen bzw. High-Level-Attributen (z.B. Pose, Identität) von stochastischer Variation (z.B. Sommersprossen, Haar) in den generierten Bildern und ermöglicht intuitive maßstabspezifische Misch- und I nterpolationsoperatione n.
  • Insbesondere die Stilsignale passen direkt die Stärke von Bildattributen bei verschiedenen Maßstäben in dem neuronalen Synthesenetzwerk 140 an. Während der Erzeugung können die Stilsignale dazu verwendet werden, ausgewählte Bildattribute zu modifizieren. Zusätzlich kann während des Trainings das neuronale Mappingnetzwerk 110 dazu konfiguriert sein, eine Stilmischregelung durchzuführen, um die Lokalisierung der Stile zu verbessern.
  • Das neuronale Mappingnetzwerk 110 bettet den Eingabe-Latenzcode in den Zwischen-Latenzraum ein, welches einen tiefgreifenden Einfluss darauf hat, wie die Variationsfaktoren in dem neuronalen Synthesenetzwerk 140 repräsentiert werden. Der Eingabe-Latenzraum folgt der Wahrscheinlichkeitsdichte der Trainingsdaten, und dies führt wahrscheinlich zu einem gewissen Grad an unvermeidbarer Verflechtung. Der Zwischen-Latenzraum ist frei von dieser Beschränkung und darf daher entflochten werden. Im Vergleich zu einer konventionellen Generatorarchitektur erlaubt das stilbasierte Generatorsystem 100 eine linearere, weniger verflochtene Repräsentation verschiedener Variationsfaktoren. In einer Ausführungsform darf das Ersetzen eines konventionellen Generators durch den stilbasierten Generator keine Modifikation anderer Komponenten des Trainingsrahmenwerks (Verlustfunktion, Diskriminator, Optimierungsverfahren oder dergleichen) erfordern.
  • Das stilbasierte generative neuronale Netzwerk 100 kann unter Verwendung z.B. der GAN (erzeugende gegnerische Netzwerke), eines VAE (Variational Autoencoder)-Rahmenwerks, eines flussbasierten Rahmenwerks oder dergleichen trainiert werden. 2D veranschaulicht ein Blockdiagramm des GAN 270-Trainingsrahmenwerks gemäß einer Ausführungsform. Das GAN 270 kann durch ein Programm, eine kundenspezifische Schaltung oder durch eine Kombination aus einer kundenspezifischer Schaltung und einem Programm implementiert sein. Beispielsweise kann das GAN 270 mit einer GPU, einer CPU oder einem anderen Prozessor, der in der Lage ist, die hierin beschriebenen Operationen auszuführen kann, implementiert sein. Ferner versteht sich für den Fachmann, dass jedes System, das die Funktionen des GAN 270 ausführt, im Rahmen und im Sinne der Ausführungsformen der Erfindung liegt.
  • Das GAN 270 beinhaltet einen Generator, wie z.B. das stilbasierte Generatorsystem 100, einen Diskriminator (neuronales Netzwerk) 275 und eine Trainingsverlusteinheit 280. Die Topologien sowohl des Generators 110 als auch des Diskriminators 275 können während des Trainings modifiziert werden. Das GAN 270 kann in einer unbeaufsichtigten oder in einer bedingten Einstellung arbeiten. Das stilbasierte Generatorsystem 100 empfängt Eingangsdaten (z.B. zumindest einen Latenzcode und/oder Rauscheingaben) und erzeugt Ausgabedaten. Abhängig von der Aufgabenstellung können die Ausgabedaten ein Bild, Audio, Video oder andere Datentypen (Konfigurationseinstellung) sein. Der Diskriminator 275 ist eine adaptive Verlustfunktion, die während des Trainings des stilbasierten Generatorsystems 100 verwendet wird. Das stilbasierte Generatorsystem 100 und der Diskriminator 275 werden gleichzeitig mit einem Trainingsdatensatz trainiert, der Beispielausgabedaten beinhaltet, mit denen die von dem stilbasierten Generatorsystem 100 erzeugten Ausgabedaten konsistent sein sollten. Das stilbasierte Generatorsystem 100 erzeugt Ausgabedaten als Reaktion auf die Eingabedaten, und der Diskriminator 275 bestimmt, ob die Ausgabedaten zu den in den Trainingsdaten enthaltenen Beispielausgabedaten ähnlich erscheinen. Auf der Grundlage der Bestimmung werden Parameter des Diskriminators 275 und/oder des stilbasierten generativen neuronalen Netzwerks 100 angepasst.
  • In der unüberwachten Einstellung gibt der Diskriminator 275 einen kontinuierlichen Wert aus, der angibt, wie genau die Ausgabedaten mit den Beispielausgabedaten übereinstimmen. Zum Beispiel gibt in einer Ausführungsform der Diskriminator 275 einen ersten Trainingsstimulus (z.B. einen hohen Wert) aus, wenn die Ausgabedaten als mit den Beispielausgabedaten übereinstimmend bestimmt werden, und einen zweiten Trainingsstimulus (z.B. einen niedrigen Wert), wenn die Ausgabedaten als nicht mit den Beispielausgabedaten übereinstimmend bestimmt werden. Die Trainingsverlusteinheit 280 stellt Parameter (Gewichte) des GAN 270 auf der Grundlage der Ausgabe des Diskriminators 275 ein. Wenn das stilbasierte Generatorsystem 100 für eine bestimmte Aufgabe, wie z.B. die Erzeugung von Bildern menschlicher Gesichter, trainiert wird, 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 Beispielausgabedaten für den Diskriminator 275 identisch sein, um die Übereinstimmung der Ausgabedaten mit den Beispielausgabedaten zu ermitteln. Im Kontext der folgenden Beschreibung bestimmt der Diskriminator 275, dass die Ausgabedaten mit den Beispielausgabedaten übereinstimmen, wenn die Ausgabedaten wahrnehmbar beliebigen der Beispielausgabedaten ähnlich sind.
  • In der bedingten Einstellung kann die Eingabe des stilbasierten generativen neuronalen Netzwerks 100 andere Daten enthalten, wie z.B. ein Bild, ein Klassifikationslabel, Segmentierungskonturen und andere (zusätzliche) Datentypen (eine Verteilung, Audio usw.). Die zusätzlichen Daten können zusätzlich zu dem zufälligen Latenzcode spezifiziert werden, oder die zusätzlichen Daten können den zufälligen Latenzcode ganz ersetzen. Der Trainingsdatensatz kann Eingabe-/ Ausgabe-Datenpaare beinhalten, und die Aufgabe des Diskriminators 275 kann darin bestehen, auf der Grundlage der Beispiels-Eingabe/Ausgabe-Paare, die der Diskriminator 275 in den Trainingsdaten gesehen hat, zu bestimmen, ob die Ausgabe des stilbasierten generativen neuronalen Netzwerks 100 mit der Eingabe konsistent erscheint.
  • In einer Ausführungsform kann das stilbasierte generative neuronale Netzwerk 100 mit einer progressiven Wachstumstechnik trainiert werden. In einer Ausführungsform sind das neuronale Mappingnetzwerk 110 und/oder das neuronale Synthesenetzwerk 140 zunächst als ein neuronales Generatornetzwerk-Abschnitt eines GAN implementiert und unter Verwendung einer Technik progressiven Wachstums trainiert, wie in Karras et al., „Progressive Growing of GANs for Improved Quality, Stability, and Variation“, sechste Internationale Konferenz über Lernende Repräsentationen (ICLR), (30. April 2018), die durch Bezugnahme in ihrer Gesamtheit hierin einbezogen wird, beschrieben ist.
  • Parallelverarbeitungsarchitektur
  • 3 veranschaulicht eine Parallelverarbeitungseinheit (PPU) 300 gemäß einer Ausführungsform. In einer Ausführungsform ist die PPU 300 ein Multithread-Prozessor, der auf einer oder mehreren integrierten Schaltungen implementiert ist. Die PPU 300 ist eine latenzverbergende Architektur, die dazu entwickelt wurde, viele Threads parallel zu verarbeiten. Ein Thread (z.B. ein Ausführungsthread) ist eine Instanziierung eines Satzes von Anweisungen, die dazu konfiguriert sind, von der PPU 300 ausgeführt zu werden. In einer Ausführungsform ist die PPU 300 eine Grafikverarbeitungseinheit (GPU), die dazu konfiguriert ist, eine Grafik-Rendering-Pipeline zum Verarbeiten von dreidimensionalen (3D) Grafikdaten zu implementieren, um zweidimensionale (2D) Bilddaten zur Anzeige auf einer Anzeigevorrichtung, wie beispielsweise einer Flüssigkristallanzeige (LCD)-Vorrichtung, zu erzeugen. In einer anderen Ausführungsform kann die PPU 300 zur Durchführung von Universalberechnungen verwendet werden. Während hierin ein beispielhafter Parallelprozessor zu veranschaulichenden Zwecken bereitgestellt ist, ist dringend darauf hinzuweisen, dass dieser Prozessor nur zu veranschaulichenden Zwecken aufgeführt ist und dass jeder beliebige Prozessor verwendet werden kann, um diesen zu ergänzen und/oder zu ersetzen.
  • Eine oder mehrere PPUs 300 können dazu konfiguriert sein, Tausende von High Performance Computing (HPC), Rechenzentren, Cloud-Computing und maschinellen Lernanwendungen zu beschleunigen. Die PPU 300 kann dazu konfiguriert sein, zahlreiche Systeme und Anwendungen für Deep Learning zu beschleunigen, darunter Anwendungen für autonome Fahrzeuge, Berechnungsgrafiken wie beispielsweise Strahlen- oder Pfad-Nachverfolgung bzw. Ray- oder Path-Tracing, Deep Learning, hochpräzise Sprach-, Bild- und Texterkennungssysteme, intelligente Videoanalytik, molekulare Simulationen, Medikamentenentdeckung, Krankheitsdiagnose, Wettervorhersage, Big Data Analytik, Astronomie, Molekulardynamiksimulation, Finanzmodellierung, Robotik, Fabrikautomatisierung, Echtzeit-Sprachübersetzung, Online-Suchoptimierung und personalisierte Benutzerempfehlungen und dergleichen.
  • Wie in 3 gezeigt ist, beinhaltet die PPU 300 eine Eingabe/Ausgabe (E/A)- bzw. Input/Output (I/O)-Einheit 305, eine Frontend-Einheit 315, eine Scheduler-Einheit 320, eine Arbeitsverteilungseinheit 325, einen Verteiler bzw. Hub 330, eine Kreuz- bzw. Querschiene (Xbar) 370, einen oder mehrere Universalverarbeitungscluster bzw. General Processing Cluster (GPCs) 350 und eine oder mehrere Speicherpartitionierungseinheiten 380. Die PPU 300 kann über einen oder mehrere schnelle NVLink-Zwischenverbindungen bzw. Interconnects 310 mit einem Host-Prozessor oder anderen PPUs 300 verbunden sein. Die PPU 300 kann über eine Zwischenverbindung bzw. Interconnect 302 mit einem Host-Prozessor oder anderen Peripheriegeräten verbunden sein. Die PPU 300 kann darüber hinaus mit einem lokalen Speicher verbunden sein, der eine Anzahl von Speichervorrichtungen 304 umfasst. In einer Ausführungsform kann der lokale Speicher eine Anzahl von dynamischen DRAM (Dynamic Random Access Memory)-Vorrichtungen umfassen Die DRAM-Vorrichtungen können als HBM (High-Bandwidth Memory)-Subsystem konfiguriert sein, wobei mehrere DRAM-Dies in jeder Vorrichtung gestapelt sind.
  • Der NVLink-Interconnect 310 ermöglicht es Systemen, zu skalieren und eine oder mehrere PPUs 300 kombiniert mit einer oder mehreren CPUs zu beinhalten, unterstützt eine Cache-Kohärenz zwischen den PPUs 300 und CPUs, und CPU-Mastering. Daten und/oder Befehle können von dem NVLink 310 über den Hub 330 zu/von anderen Einheiten der PPU 300, wie z.B. einer oder mehreren Kopier-Engines, einem Video-Encoder, einem Video-Decoder, einer Energieverwaltungs- bzw. Power-Management-Einheit usw. (nicht explizit dargestellt) übertragen werden. Der NVLink 310 wird in Verbindung mit 5B näher beschrieben.
  • Die E/A-Einheit 305 ist dazu konfiguriert, Kommunikationen (d.h. Befehle, Daten usw.) von einem Host-Prozessor (nicht dargestellt) über den Interconnect 302 zu senden und zu empfangen. Die E/A-Einheit 305 kann mit dem Host-Prozessor direkt über den Interconnect 302 oder über eine oder mehrere Zwischenvorrichtungen, wie beispielsweise eine Speicherbrücke, kommunizieren. In einer Ausführungsform kann die E/A-Einheit 305 mit einem oder mehreren anderen Prozessoren, wie beispielsweise einer oder mehreren der PPUs 300, über den Interconnect 302 kommunizieren. In einer Ausführungsform implementiert die E/A-Einheit 305 eine Peripheral Component Interconnect Express (PCIe)-Schnittstelle für Kommunikationen über einen PCIe-Bus, und ist der Interconnect 302 ein PCIe-Bus. In alternativen Ausführungsformen kann die E/A-Einheit 305 andere Arten von gut bekannten Schnittstellen zum Kommunizieren mit externen Geräten implementieren.
  • Die E/A-Einheit 305 dekodiert Pakete, die über den Interconnect 302 empfangen wurden. In einer Ausführungsform repräsentieren die Pakete Befehle, die dazu konfiguriert sind, die PPU 300 zu veranlassen, verschiedene Operationen durchzuführen. Die E/A-Einheit 305 überträgt die dekodierten Befehle an verschiedene andere Einheiten der PPU 300, wie in den Befehlen angegeben. Beispielsweise können einige Befehle an die Frontend-Einheit 315 übertragen werden. Andere Befehle können an den Hub 330 oder andere Einheiten der PPU 300, wie z.B. eine oder mehrere Kopier-Engines, ein Video-Encoder, ein Video-Decoder, eine Power-Management-Einheit usw. (nicht explizit dargestellt), übertragen werden. Mit anderen Worten ist die E/A-Einheit 305 dazu konfiguriert, Kommunikationen zwischen und unter den verschiedenen logischen Einheiten der PPU 300 zu routen.
  • 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 durch diese Anweisungen zu verarbeiten sind. Der Puffer ist eine Region in einem Speicher, der sowohl von dem Host-Prozessor als auch von der PPU 300 aus (d.h. lesend/schreibend) zugänglich ist. Beispielsweise kann die E/A-Einheit 305 dazu konfiguriert sein, über Speicheranfragen, die über den Interconnect 302 übertragen werden, auf den Puffer in einem Systemspeicher, der mit dem Interconnect 302 verbunden ist, zuzugreifen. 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 einen oder mehrere Ströme bzw. Streams, wobei sie Befehle aus den Streams liest und Befehle an die verschiedenen Einheiten der PPU 300 weiterleitet.
  • Die Front-End-Einheit 315 ist mit einer Scheduler-Einheit 320 gekoppelt, die die verschiedenen GPCs 350 dazu konfiguriert, Aufgaben zu verarbeiten, die durch den einen oder die mehreren Streams definiert sind. Die Scheduler-Einheit 320 ist dazu konfiguriert, Zustandsinformationen mit Bezug zu den verschiedenen Aufgaben, die von der Scheduler-Einheit 320 verwaltet werden, nachzuverfolgen. Der Zustand kann anzeigen, welchem GPC 350 eine Aufgabe zugeordnet ist, ob die Aufgabe aktiv oder inaktiv ist, eine der Aufgabe zugeordnete Prioritätsstufe und so weiter. Die Scheduler-Einheit 320 verwaltet die Ausführung einer Vielzahl von Aufgaben auf dem einem oder den mehreren GPCs 350.
  • Die Scheduler-Einheit 320 ist mit einer Arbeitsverteilungseinheit 325 gekoppelt, die dazu konfiguriert ist, Aufgaben zur Ausführung auf den GPCs 350 zu verteilen. Die Arbeitsverteilungseinheit 325 kann eine Anzahl von geplanten Aufgaben, die von der Planungseinheit 320 empfangen wurden, verfolgen. In einer Ausführungsform verwaltet die Arbeitsverteilungseinheit 325 für jeden der GPCs 350 einen Pool offener Aufgaben und einen Pool aktiver Aufgaben. Der Pool offener Aufgaben kann eine Anzahl von Slots (z.B. 32 Slots) umfassen, die Aufgaben enthalten, die von einem bestimmten GPC 350 zu verarbeiten sind. Der Pool aktiver Aufgaben kann eine Anzahl von Slots (z.B. 4 Slots) für Aufgaben umfassen, die von den GPCs 350 aktiv verarbeitet werden. Wenn ein GPC 350 die Ausführung einer Aufgabe beendet, wird diese Aufgabe aus dem Pool aktiver Aufgaben für den GPC 350 herausgenommen und wird eine der anderen Aufgaben aus dem Pool offener Aufgaben ausgewählt und zur Ausführung auf dem GPC 350 eingeplant. Wenn eine aktive Aufgabe auf dem GPC 350 im Leerlauf war, z. B. während des Wartens auf die Auflösung einer Datenabhängigkeit, kann die aktive Aufgabe aus dem GPC 350 herausgenommen und in den Pool offener Aufgaben zurückgeführt werden, während eine andere Aufgabe im Pool offener Aufgaben ausgewählt und für die Ausführung auf dem GPC 350 eingeplant wird.
  • Die Arbeitsverteilungseinheit 325 kommuniziert über die XBar 370 mit dem einen oder den mehreren GPCs 350. Die XBar 370 ist ein Interconnect- bzw. Zwischenverbindungsnetzwerk, das viele der Einheiten der PPU 300 mit anderen Einheiten der PPU 300 koppelt. Beispielsweise kann die XBar 370 dazu konfiguriert sein, die Arbeitsverteilungseinheit 325 mit einem bestimmten GPC 350 zu koppeln. Obwohl dies nicht explizit gezeigt ist, können eine oder mehrere andere Einheiten der PPU 300 auch über den Hub 330 mit der XBar 370 verbunden sein.
  • Die Aufgaben werden von der Scheduler-Einheit 320 verwaltet und von der Arbeitsverteilungseinheit 325 an einen GPC 350 gesendet. Der GPC 350 ist dazu konfiguriert, die Aufgabe zu verarbeiten und Ergebnisse zu erzeugen. Die Ergebnisse können von anderen Aufgaben innerhalb des GPC 350 übernommen, über die XBar 370 an einen anderen GPC 350 weitergeleitet oder in dem Speicher 304 gespeichert werden. Die Ergebnisse können über die Speicherpartitionierungseinheiten 380, die eine Speicherschnittstelle zum Lesen und Schreiben von Daten in/aus dem Speicher 304 implementieren, in den Speicher 304 geschrieben werden. Die Ergebnisse können über den NVLink 310 an eine andere PPU 304 oder CPU übertragen werden. In einer Ausführungsform beinhaltet die PPU 300 eine Anzahl U von Speicherpartitionierungseinheiten 380, die gleich der Anzahl der separaten und unterschiedlichen Speichervorrichtungen 304 ist, die mit der PPU 300 gekoppelt sind. Eine Speicherpartitionierungseinheit 380 wird nachstehend in Verbindung mit 4B näher beschrieben.
  • 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 stellt Isolation, Quality of Service (QoS) und unabhängige Adressräume für die mehreren Rechenanwendungen bereit. Eine Anwendung kann Anweisungen (z.B. API-Aufrufe) erzeugen, die den Treiberkern veranlassen, eine oder mehrere Aufgaben zur Ausführung durch die PPU 300 zu erzeugen. Der Treiberkern gibt Aufgaben an einen oder mehrere Streams aus, die von der PPU 300 verarbeitet werden. Jede Aufgabe kann eine oder mehrere Gruppen von verwandten Threads umfassen, die hierin als Warp bezeichnet werden. In einer Ausführungsform umfasst ein Warp 32 verwandte Threads, die parallel ausgeführt werden können. Kooperierende Threads können sich auf eine Vielzahl von Threads beziehen, einschließlich Anweisungen zum Durchführen der Aufgabe, und die Daten über einen gemeinsamen Speicher austauschen können. Threads und kooperierende Threads werden in Verbindung mit 5A näher beschrieben.
  • 4A veranschaulicht einen GPC 350 der PPU 300 aus 3 gemäß einer Ausführungsform. Wie in 4A gezeigt ist, beinhaltet jeder GPC 350 eine Reihe von Hardwareeinheiten für Verarbeitungsaufgaben. In einer Ausführungsform beinhaltet jeder GPC 350 einen Pipeline-Verwalter bzw. Pipeline-Manager 410, eine Pre-Raster Operations Unit (PROP) 415, eine Rastermaschine bzw. Raster-Engine 425, eine Arbeitsverteilungs-Querschiene bzw. Work Distribution Crossbar (WDX) 480, eine Speicherverwaltungseinheit bzw. Memory Management Unit (MMU) 490 und einen oder mehrere Datenverarbeitungscluster bzw. Data Processing Cluster (DPCs) 420. Es versteht sich, dass der GPC 350 von 4A anstelle der oder zusätzlich zu den in 4A dargestellten Einheiten weitere Hardwareeinheiten beinhalten kann.
  • In einer Ausführungsform wird der Betriebsablauf des GPC 350 durch den Pipeline-Manager 410 gesteuert. Der Pipeline-Manager 410 verwaltet die Konfiguration des einen oder der mehreren DPCs 420 zum Verarbeiten von Aufgaben, die dem GPC 350 zugewiesen sind. In einer Ausführungsform kann der Pipeline-Manager 410 zumindest einen der einen oder mehreren DPCs 420 dazu konfigurieren, zumindest einen Teil einer Grafik-Rendering-Pipeline zu implementieren. So kann beispielsweise ein DPC 420 dazu konfiguriert sein, ein Vertex-Shader-Programm auf dem programmierbaren Streaming-Multiprozessor (SM) 440 auszuführen. Der Pipeline-Manager 410 kann auch dazu konfiguriert sein, von der Arbeitsverteilungseinheit 325 empfangene Pakete an die geeigneten logischen Einheiten innerhalb des GPC 350 weiterzuleiten. Beispielsweise können einige Pakete an Hardwareeinheiten mit fester Funktion in dem PROP 415 und/oder in der Raster-Engine 425 weitergeleitet werden, während andere Pakete an die DPCs 420 zur Verarbeitung durch die Primitiv- bzw. Stammfunktions-Engine 435 oder den SM 440 weitergeleitet werden können. In einer Ausführungsform kann der Pipeline-Verwalter bzw. Pipeline-Manager 410 zumindest einen der einen oder mehreren DPCs 420 dazu konfigurieren, ein neuronales Netzwerkmodell und/oder eine Rechen-Pipeline zu implementieren.
  • Die PROP-Einheit 415 ist dazu konfiguriert, die von der Raster-Engine 425 und den DPCs 420 erzeugten Daten an eine Raster Operations (ROP)-Einheit weiterzuleiten, die in Verbindung mit 4B näher beschrieben wird. Die PROP-Einheit 415 kann auch dazu konfiguriert sein, Optimierungen zur Farbmischung durchzuführen, Pixeldaten zu organisieren, Adressenübersetzungen durchzuführen und dergleichen.
  • Die Raster-Engine 425 beinhaltet eine Reihe von Hardwareeinheiten mit fester Funktion, die dazu konfiguriert sind, verschiedene Rasteroperationen durchzuführen. In einer Ausführungsform beinhaltet die Raster-Engine 425 eine Setup-Engine, eine Grobraster-Engine, eine Entnahme-Engine, eine Clipping-Engine, eine Feinraster-Engine und eine Kachelvereinigungs- bzw. Kachel-Koaleszenz-Engine. Die Setup-Engine empfängt transformierte Eckpunkte bzw. Vertices und erzeugt Ebenengleichungen, die der durch die Vertices definierten geometrischen Stammfunktion zugeordnet sind. Die Ebenengleichungen werden an die Grobraster-Engine übertragen, um Abdeckungsinformationen (z.B. eine x, y-Abdeckungsmaske für eine Kachel) für die Stammfunktion zu erzeugen. Die Ausgabe der Grobraster-Engine wird an die Entnahme-Engine übertragen, an der der Stammfunktion zugeordnete Fragmente, die einen z-Test nicht bestehen, entnommen bzw. aussortiert werden, und nicht aussortierte Fragmente werden an eine Clipping-Engine übertragen, an der Fragmente, die außerhalb eines Betrachtungskegels liegen, abgeschnitten werden. Die Fragmente, die das Abschneiden und das Aussortieren überleben, können an die Feinraster-Engine übergeben werden, um Attribute für die Pixelfragmente auf der Grundlage der von der Setup-Engine erzeugten Ebenengleichungen zu erzeugen. Die Ausgabe der Raster-Engine 425 umfasst Fragmente, die beispielsweise von einem in einem DPC 420 implementierten Fragment-Shader zu verarbeiten sind.
  • Jeder in dem GPC 350 enthaltene DPC 420 beinhaltet einen M-Pipe Controller (MPC) 430, eine Stammfunktions-Engine 435 und einen oder mehrere SMs 440. Der MPC 430 steuert den Betriebsablauf des DPC 420 und leitet die von dem Pipeline-Manager 410 empfangenen Pakete an die geeigneten Einheiten des DPC 420 weiter. Beispielsweise können Pakete, die einem Vertex zugeordnet sind, an die Stammfunktions-Engine 435 weitergeleitet werden, die dazu konfiguriert ist, dem Vertex zugeordnete Vertexattribute aus dem Speicher 304 zu holen. Demgegenüber können Pakete, die einem Shader-Programm zugeordnet sind, an den SM 440 übertragen werden.
  • Der SM 440 umfasst einen programmierbaren Streaming-Prozessor, der dazu konfiguriert ist, Aufgaben zu verarbeiten, die durch eine Reihe von Threads repräsentiert werden. Jeder SM 440 ist multi-threaded und dazu konfiguriert, eine Vielzahl von Threads (z.B. 32 Threads) aus einer bestimmten Gruppe von Threads gleichzeitig auszuführen. In einer Ausführungsform implementiert der SM 440 eine SIMD (Single-Instruction, Multiple-Data)-Architektur, bei der jeder Thread in einer Gruppe von Threads (d.h. einem Warp) dazu konfiguriert ist, einen anderen Datensatz auf der Grundlage desselben Befehlssatzes zu verarbeiten. Alle Threads in der Gruppe der Threads führen dieselben Anweisungen aus. In einer anderen Ausführungsform implementiert der SM 440 eine SIMT (Single-Instruction, Multiple Thread)-Architektur, bei der jeder Thread in einer Gruppe von Threads dazu konfiguriert ist, einen anderen Datensatz auf der Grundlage desselben Befehlssatzes zu verarbeiten, wobei jedoch einzelne Threads in der Gruppe von Threads während der Ausführung divergieren dürfen. In einer Ausführungsform wird für jeden Warp ein Programmzähler, ein Aufrufstapel und ein Ausführungszustand beibehalten, wodurch Gleichzeitigkeit zwischen Warps und eine serielle Ausführung innerhalb von Warps ermöglicht wird, wenn Threads innerhalb des Warps divergieren. In einer anderen Ausführungsform wird für jeden einzelnen Thread ein Programmzähler, ein Aufrufstapel und ein Ausführungszustand beibehalten, wodurch eine gleiche Gleichzeitigkeit zwischen allen Threads, innerhalb und zwischen Warps, ermöglicht wird. Wenn der Ausführungszustand für jeden einzelnen Thread beibehalten wird, können Threads, die dieselben Anweisungen ausführen, konvergiert und parallel ausgeführt werden, um maximale Effizienz zu erreichen. Der SM 440 wird nachstehend in Verbindung mit 5A näher beschrieben.
  • Die MMU 490 stellt eine Schnittstelle zwischen dem GPC 350 und der Speicherpartitionierungseinheit 380 bereit. Die MMU 490 kann eine Übersetzung von virtuellen Adressen in physikalische Adressen, einen Speicherschutz und eine Arbitrierung von Speicheranfragen bereitstellen. In einer Ausführungsform stellt die MMU 490 einen oder mehrere Translation Lookaside Buffer (TLBs) zur Verfügung, um eine Übersetzung von virtuellen Adressen in physikalische Adressen in dem Speicher 304 durchzuführen.
  • 4B veranschaulicht eine Speicherpartitionierungseinheit 380 der PPU 300 von 3 gemäß einer Ausführungsform. Wie in 4B dargestellt ist, beinhaltet die Speicherpartitionierungseinheit 380 eine Raster Operations (ROP)-Einheit 450, einen Level-2 (L2)-Cache 460 und eine Speicherschnittstelle 470. Die Speicherschnittstelle 470 ist mit dem Speicher 304 gekoppelt. Die Speicherschnittstelle 470 kann 32, 64, 128, 1024-Bit-Datenbusse oder dergleichen für Hochgeschwindigkeits-Datenübertragung implementieren. In einer Ausführungsform beinhaltet die PPU 300 U-Speicherschnittstellen 470, eine Speicherschnittstelle 470 pro Paar von Speicherpartitionierungseinheiten 380, wobei jedes Paar von Speicherpartitionierungseinheiten 380 mit einer entsprechenden Speichervorrichtung 304 verbunden ist. Beispielsweise kann die PPU 300 mit bis zu Y Speichervorrichtungen verbunden sein, wie beispielsweise Speicherstapeln mit hoher Bandbreite, oder synchronem dynamischen Grafik-Direktzugriffsspeicher mit doppelter Datenrate, Version 5, oder anderen Arten von persistenten Speichern.
  • In einer Ausführungsform implementiert die Speicherschnittstelle 470 eine HBM2-Speicherschnittstelle und entspricht Y der Hälfte von U. In einer Ausführungsform befinden sich die HBM2-Speicherstapel in demselben physikalischen Gehäuse wie die PPU 300, wodurch im Vergleich zu herkömmlichen GDDR5-SDRAM-Systemen erhebliche Strom- und Flächeneinsparungen bereitgestellt werden. In einer Ausführungsform beinhaltet jeder HBM2-Stapel vier Speicherchips und ist Ygleich 4, wobei der HBM2-Stapel zwei 128-Bit-Kanäle pro Chip für insgesamt 8 Kanäle und eine Datenbusbreite von 1024 Bit beinhaltet.
  • In einer Ausführungsform unterstützt der Speicher 304 Single-Error Correcting Double-Error Detecting (SECDED) Error Correction Code (ECC) zum Schutz der Daten. ECC bietet eine höhere Zuverlässigkeit für Rechenanwendungen, die gegenüber Datenkorruption empfindlich reagieren. Zuverlässigkeit ist besonders wichtig in großen Cluster-Rechenumgebungen, in denen PPUs 300 sehr große Datensätze verarbeiten und/oder Anwendungen über längere Zeitspannen hinweg betreiben.
  • In einer Ausführungsform implementiert die PPU 300 eine mehrstufige Speicherhierarchie. In einer Ausführungsform unterstützt die Speicherpartitionseinheit 380 einen vereinigten Speicher, um einen einzigen vereinigten virtuellen Adressraum für CPU- und PPU 300-Speicher bereitzustellen, der einen Datenaustausch 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, nachverfolgt, um sicherzustellen, dass Speicherseiten in den physikalischen 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 vollen Zugriff auf CPU-Speicher durch die PPU 300 bereitstellen.
  • 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, die nicht in den Seitentabellen abgebildet sind, erzeugen. Die Speicherpartitionierungseinheit 380 kann dann die Seitenfehler bedienen, wobei sie die Adressen in die Seitentabelle abbildet, woraufhin die Kopier-Engine die Übertragung durchführen kann. In einem herkömmlichen System ist der Speicher für mehrfache Kopier-Engine-Operationen zwischen mehreren Prozessoren verankert (d.h. nicht auslagerbar), welches den verfügbaren Speicher erheblich reduziert. Mit Hardware-Seitenfehlerverwerfung können Adressen an die Kopier-Engines weitergegeben werden, ohne besorgt sein zu müssen, ob die Speicherseiten resident sind, und ist der Kopiervorgang transparent.
  • Daten aus dem Speicher 304 oder anderem Systemspeicher können von der Speicherpartitionierungseinheit 380 abgerufen und in dem L2-Cache 460 gespeichert werden, welcher sich auf dem Chip befindet und von den verschiedenen GPCs 350 gemeinsam genutzt wird. Wie gezeigt ist, beinhaltet jede Speicherpartitionierungseinheit 380 einen Teil des L2-Cache 460, der einer entsprechenden Speichervorrichtung 304 zugeordnet ist. Untergeordnete Caches können dann in verschiedenen Einheiten innerhalb der GPCs 350 implementiert sein. Beispielsweise kann jeder der SMs 440 einen Level One (L1)-Cache implementieren. Der L1-Cache ist ein privater Speicher, der für einen bestimmten SM 440 dediziert ist.
  • Daten aus dem L2-Cache 460 können abgerufen und in jedem der L1-Caches zur Verarbeitung in den Funktionseinheiten des SMs 440 gespeichert werden. Der L2-Cache 460 ist mit der Speicherschnittstelle 470 und der XBar 370 gekoppelt.
  • Die ROP-Einheit 450 führt Grafikrasteroperationen mit Bezug zu Pixelfarben durch, wie z.B. eine Farbkompression, ein Pixelblending und dergleichen. Die ROP-Einheit 450 implementiert darüber hinaus Tiefenprüfungen in Verbindung mit der Raster-Engine 425, wobei sie eine Tiefe für einen Probenort empfängt, der einem Pixelfragment aus der Entnahme-Engine der Raster-Engine 425 zugeordnet ist. Die Tiefe wird gegen eine entsprechende Tiefe in einem Tiefenpuffer für einen dem Fragment zugeordneten Probenort getestet. Wenn das Fragment den Tiefentest für den Probenort besteht, aktualisiert die ROP-Einheit 450 den Tiefenpuffer und überträgt ein Ergebnis des Tiefentests an die Raster-Engine 425. Es versteht sich, dass die Anzahl von Speicherpartitionierungseinheiten 380 von der Anzahl der GPCs 350 verschieden sein 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 nach und ermittelt den GPC 350, zu dem ein von der ROP-Einheit 450 erzeugtes Ergebnis über die Xbar 370 geroutet wird. Obwohl die ROP-Einheit 450 innerhalb der Speicherpartitionierungseinheit 380 in 4B enthalten ist, kann in einer anderen Ausführungsform die ROP-Einheit 450 außerhalb der Speicherpartitionierungseinheit 380 sein. Beispielsweise kann sich die ROP-Einheit 450 in dem GPC 350 oder in einer anderen Einheit befinden.
  • 5A veranschaulicht den Streaming-Multiprozessor 440 von 4A gemäß einer Ausführungsform. Wie in 5A gezeigt ist, beinhaltet der SM 440 einen Anweisungs-Cache 505, eine oder mehrere Planer- bzw. 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 Zwischenverbindungsnetzwerk 580 und einen gemeinsam genutzten Speicher/L1-Cache 570.
  • Wie vorstehend beschrieben wurde, versendet die Arbeitsverteilungseinheit 325 Aufgaben zur Ausführung auf den GPCs 350 der PPU 300. Die Aufgaben sind einem bestimmten DPC 420 innerhalb eines GPC 350 zugeordnet, und falls die Aufgabe einem Shaderprogramm zugeordnet ist, kann die Aufgabe einem SM 440 zugeordnet sein. Die Scheduler-Einheit 510 empfängt die Aufgaben von der Arbeitsverteilungseinheit 325 und verwaltet die Anweisungsplanung für einen oder mehrere der dem SM 440 zugeordneten Thread-Blöcke. Die Scheduler-Einheit 510 plant Thread-Blöcke zur Ausführung als Warps paralleler Threads, wobei jedem Thread-Block zumindest ein Warp zugeordnet ist. In einer Ausführungsform führt jeder Warp 32 Threads aus. Die Scheduler-Einheit 510 kann eine Vielzahl verschiedener Thread-Blöcke verwalten, wobei sie die Warps den verschiedenen Thread-Blöcken zuordnet und dann während jedes Taktzyklus Anweisungen von der Vielzahl von verschiedenen kooperativen Gruppen an die verschiedenen Funktionseinheiten (beispielsweise Kerne 550, SFUs 552 und LSUs 554) sendet.
  • Cooperative Groups bzw. kooperative Gruppen ist ein Programmiermodell zum Organisieren von Gruppen kommunizierender Threads, das es Entwicklern ermöglicht, die Granularität auszudrücken, mit welcher Threads kommunizieren, wodurch der Ausdruck reichhaltigerer, effizienterer paralleler Zerlegungen ermöglicht wird. Kooperative Start-APIs unterstützen die Synchronisation zwischen Thread-Blöcken zur Ausführung paralleler Algorithmen. Herkömmliche Programmiermodelle stellen ein einziges, einfaches Konstrukt zur Synchronisation kooperierender Threads bereit: eine Barriere über alle Threads eines Thread-Blocks (d.h. die Funktion syncthreads()). Programmierer möchten jedoch oftmals Gruppen von Threads definieren, die kleiner als die Granularität von Threads sind, und innerhalb der definierten Gruppen synchronisieren, um mehr Leistung, Designflexibilität und Softwarewiederverwendbarkeit in Form von gemeinsamen gruppenweiten Funktionsschnittstellen zu ermöglichen.
  • Kooperative Gruppen ermöglicht es Programmierern, Gruppen von Threads explizit bei Subblock (d.h. so klein wie ein einzelner Thread) und Multiblock-Granularitäten zu definieren und kollektive Operationen wie beispielsweise die Synchronisation auf der Threads in einer kooperativen Gruppe durchzuführen. Das Programmiermodell unterstützt eine saubere Zusammensetzung über Softwaregrenzen hinweg, so dass Bibliotheken und Utility-Funktionen in ihrem lokalen Kontext sicher synchronisieren können, ohne Annahmen über Konvergenz treffen zu müssen. Stammfunktionen kooperativer Gruppen ermöglichen neue Muster kooperativer Parallelität, einschließlich von Erzeuger-Verbraucher-Parallelität, opportunistischer Parallelität und globaler Synchronisation über ein ganzes Netz von Thread-Blöcken hinweg.
  • Eine Sendeeinheit 515 ist dazu konfiguriert, Anweisungen an eine oder mehrere der Funktionseinheiten zu senden. In der Ausführungsform beinhaltet die Scheduler-Einheit 510 zwei Sendeeinheiten 515, die es ermöglichen, während jedes Taktzyklus zwei verschiedene Anweisungen desselben Warps zu versenden. In alternativen Ausführungsformen kann jede Scheduler-Einheit 510 eine einzelne Sendeeinheit 515 oder zusätzliche Sendeeinheiten 515 beinhalten.
  • Jeder SM 440 beinhaltet eine Registerdatei 520, die einen Satz von Registern für die Funktionseinheiten des SM 440 bereitstellt. In einer Ausführungsform ist die Registerdatei 520 zwischen jeder der Funktionseinheiten aufgeteilt, so dass jeder Funktionseinheit ein dedizierter Teil der Registerdatei 520 zugeordnet ist. In einer anderen Ausführungsform ist die Registerdatei 520 zwischen den verschiedenen Warps aufgeteilt, die von dem SM 440 ausgeführt werden. Die Registerdatei 520 stellt einen Zwischenspeicher für Operanden, die mit den Datenpfaden der Funktionseinheiten verbunden sind, bereit.
  • Jeder SM 440 umfasst L Verarbeitungskerne 550. In einer Ausführungsform beinhaltet der SM 440 eine große Anzahl (z.B. 128, usw.) verschiedener Verarbeitungskerne 550. Jeder Kern 550 kann eine vollpipelinierte, einfachgenaue, doppelgenaue und/oder gemischtgenaue Verarbeitungseinheit beinhalten, die eine Gleitkomma-Rechenlogikeinheit und eine Ganzzahl-Rechenlogikeinheit beinhaltet. In einer Ausführungsform implementieren die Gleitkomma-Rechenlogikeinheiten den Standard IEEE 754-2008 für Gleitkommaarithmetik. In einer Ausführungsform beinhalten die Kerne 550 64 einfachgenaue (32-Bit) Gleitkomma-Kerne, 64 Ganzzahlkerne, 32 doppelgenaue (64-Bit) Gleitkommakerne und 8 Tensorkerne.
  • Tensorkerne sind dazu konfiguriert, Matrixoperationen durchzuführen, und in einer Ausführungsform sind ein oder mehrere Tensorkerne in den Kernen 550 enthalten.
  • Insbesondere sind die Tensorkerne dazu konfiguriert, tief lernende Matrixarithmetik durchzuführen, wie z.B. Faltungsoperationen für das Training und die Inferenzierung neuronaler Netzwerke. In einer Ausführungsform arbeitet jeder Tensorkern auf einer 4x4-Matrix und führt eine Matrixmultiplikations- und Akkumulationsoperation D=A×B+C durch, worin A, B, C und D 4x4-Matrizen sind.
  • In einer Ausführungsform sind die Matrixmultiplikationseingänge A und B 16-Bit Fließkomma-Matrizen, während die Akkumulationsmatrizen C und D 16-Bit Fließkomma- oder 32-Bit Fließkomma-Matrizen sein können. Tensorkerne arbeiten auf 16-Bit Gleitkomma-Eingangsdaten mit 32-Bit Gleitkommaakkumulation. Die 16-Bit-Fließkomma-Multiplikation erfordert 64 Operationen und resultiert in einem hochpräzisen Produkt, das dann unter Verwendung der 32-Bit-Fließkommaaddition mit den anderen Zwischenprodukten für eine 4x4x4-Matrix-Multiplikation akkumuliert wird. In der Praxis werden Tensorkerne dazu verwendet, viel größere zweidimensionale oder höher dimensionale Matrixoperationen durchzuführen, die aus diesen kleineren Elementen aufgebaut sind. Eine API, wie beispielsweise die CUDA 9 C++ API, exponiert spezielle Matrixlasten, Matrixmultiplikationen und -akkumulationen sowie Matrixspeicheroperationen, um Tensorkerne aus einem CUDA-C++-Programm heraus effizient zu nutzen. Auf der CUDA-Ebene nimmt das Warp-Level-Interface Matrizen der Größe 16x16 an, die alle 32 Threads des Warps umspannen.
  • Jeder SM 440 umfasst darüber hinaus M SFUs 552, die spezielle Funktionen (z.B. Attributbewertung, reziproke Quadratwurzel und dergleichen) durchführen. In einer Ausführungsform können die SFUs 552 eine Baumdurchlaufeinheit beinhalten, die dazu konfiguriert ist, eine hierarchische Baumdatenstruktur zu durchlaufen. In einer Ausführungsform können die SFUs 552 eine Textureinheit beinhalten, die dazu konfiguriert ist, Texturkartenfilteroperationen durchzuführen. In einer Ausführungsform sind die Textureinheiten dazu konfiguriert, Texturkarten (z.B. ein 2D-Array von Texeln) aus dem Speicher 304 zu laden und die Texturkarten abzutasten, um abgetastete Texturwerte zur Verwendung in Shaderprogrammen zu erzeugen, die von dem SM 440 ausgeführt werden. In einer Ausführungsform werden die Texturkarten in dem gemeinsamen Speicher/L1-Cache 470 gespeichert. Die Textureinheiten implementieren Texturoperationen wie z.B. Filteroperationen mit Hilfe von Mip-Maps (d.h. Texturkarten mit variierendem Detaillierungsgrad). In einer Ausführungsform beinhaltet jeder SM 340 zwei Textureinheiten.
  • Jeder SM 440 umfasst darüber hinaus N LSUs 554, die Lade- und Speicheroperationen zwischen dem gemeinsamen Speicher/L1-Cache 570 und der Registerdatei 520 implementieren. Jeder SM 440 beinhaltet ein Zwischenverbindungsnetzwerk 580, das jede der Funktionseinheiten mit der Registerdatei 520 und die LSU 554 mit der Registerdatei 520 und dem gemeinsamen Speicher/L1 Cache 570 verbindet. In einer Ausführungsform ist das Verbindungsnetzwerk 580 eine Kreuz- bzw. Querschiene, die dazu konfiguriert werden kann, eine beliebige der Funktionseinheiten mit einem beliebigen der Register in der Registerdatei 520 zu verbinden und die LSUs 554 mit der Registerdatei und Speicherplätzen in dem gemeinsamen Speicher/L1-Cache 570 zu verbinden.
  • Der gemeinsam genutzte Speicher/L1 Cache 570 ist ein Feld bzw. Array von Speichern auf dem Chip bzw. On-Chip-Speicher, das eine Datenspeicherung und Kommunikation zwischen dem SM 440 und der Stammfunktions-Engine 435 sowie zwischen Threads in dem SM 440 ermöglicht. In einer Ausführungsform umfasst der gemeinsam genutzte Speicher/L1-Cache 570 128KB Speicherkapazität und liegt in dem Pfad von dem SM 440 zu der Partitionseinheit 380. Der gemeinsam genutzte Speicher/L1-Cache 570 kann dazu verwendet werden, Lesevorgänge und Schreibvorgänge zwischenzuspeichern. Einer oder mehrere des gemeinsam genutzten Speichers/L1-Caches 570, L2-Caches 460 und Speichers 304 sind Backup-Speicher.
  • Ein Kombinieren von Daten-Cache und gemeinsam genutzter Speicherfunktionalität zu einem einzigen Speicherblock stellt die beste Gesamtleistung für beide Arten von Speicherzugriffen bereit. Die Kapazität ist als ein Zwischenspeicher bzw. Cache für Programme nutzbar, die keinen gemeinsamen Speicher verwenden. Wenn beispielsweise ein gemeinsam genutzter Speicher so konfiguriert ist, dass er die Hälfte der Kapazität verwendet, können Textur- und Lade-/Speicher-Operationen die verbleibende Kapazität nutzen. Die Integration innerhalb des gemeinsam genutzten Speichers/L1-Caches 570 ermöglicht es dem gemeinsam genutzten Speicher/L1-Cache 570, als eine Hochdurchsatzleitung zum Streamen von Daten zu arbeiten und gleichzeitig einen Zugriff auf häufig wiederverwendete Daten mit hoher Bandbreite und geringer Latenz bereitzustellen.
  • Bei einer Konfiguration für universelle parallele Berechnungen kann eine im Vergleich mit Grafikverarbeitung einfachere Konfiguration verwendet werden. Insbesondere werden die in 3 gezeigten Grafikverarbeitungseinheiten mit fester Funktion umgangen, wodurch ein wesentlich einfacheres Programmiermodell entsteht. In der Konfiguration für universelle parallele Berechnung weist die Arbeitsverteilungseinheit 325 Thread-Blöcke direkt den DPCs 420 zu und verteilt sie. 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, und wobei der SM 440 dazu verwendet wird, das Programm auszuführen und Berechnungen durchzuführen, der gemeinsam genutzte Speicher/L1-Cache 570 dazu verwendet wird, zwischen Threads zu kommunizieren, und die LSU 554 dazu verwendet wird, den globalen Speicher über den gemeinsamen Speicher/L1-Cache 570 und die Speicherpartitionseinheit 380 zu lesen und zu beschreiben. Bei der Konfiguration für universelle parallele Berechnungen kann der SM 440 ebenfalls Befehle schreiben, die die Scheduler-Einheit 320 dazu verwenden kann, neue Arbeit an den DPCs 420 zu beginnen.
  • Die PPU 300 kann in einem Desktop-Computer, einem Laptop-Computer, einem Tablet-Computer, Servern, Supercomputern, einem Smartphone (z.B. einem drahtlosen, tragbaren Gerät), einem Personal Digital Assistant (PDA), einer Digitalkamera, einem Fahrzeug, einem Kopfbildschirm, einer tragbaren elektronischen Vorrichtung und dergleichen integriert sein. In einer Ausführungsform ist die PPU 300 auf einem einzelnen Halbleitersubstrat ausgeführt. In einer anderen Ausführungsform ist die PPU 300 zusammen mit einer oder mehreren anderen Vorrichtungen, wie beispielsweise zusätzlichen PPUs 300, dem Speicher 304, einer CPU mit reduziertem Befehlssatz (RISC), einer Speicherverwaltungseinheit (MMU), einem Digital-AnalogWandler (DAC) und dergleichen, in einem System auf einem Chip (SoC) enthalten.
  • In einer Ausführungsform kann die PPU 300 auf einer Grafikkarte enthalten sein, die eine oder mehrere Speichervorrichtungen 304 beinhaltet. Die Grafikkarte kann so konfiguriert sein, dass sie mit einem PCIe-Steckplatz auf einer Mutterplatine bzw. einem Motherboard eines Desktop-Computers verbunden ist. In einer nochmals anderen Ausführungsform kann die PPU 300 eine integrierte Grafikverarbeitungseinheit (iGPU) oder ein Parallelprozessor sein, der in dem Chipsatz des Motherboards enthalten ist.
  • Beispielhaftes Rechensystem
  • Systeme mit mehreren GPUs und CPUs werden in einer Vielzahl von Branchen eingesetzt, da Entwickler mehr Parallelität in Anwendungen wie künstlicher Intelligenz bereitstellen und nutzen. Leistungsstarke GPU-beschleunigte Systeme mit Zehntausenden und mehr Rechenknoten werden in Rechenzentren, Forschungseinrichtungen und Supercomputern eingesetzt, um immer größere Probleme zu lösen. Mit zunehmender Anzahl von Verarbeitungseinrichtungen innerhalb der Hochleistungssysteme müssen die Kommunikations- und Datenübertragungsmechanismen skaliert werden, um die erhöhte Bandbreite zu unterstützen.
  • 5B ist ein konzeptionelles Diagramm eines unter Verwendung der PPU 300 von 3 implementierten Verarbeitungssystems 500, gemäß einer Ausführungsform. Das beispielhafte System 565 kann dazu konfiguriert sein, eines oder mehrere der in den 1C, 2C, 6B und 6C gezeigten Verfahren 150, 250, 650 bzw. 675 zu implementieren. Das Verarbeitungssystem 500 beinhaltet eine CPU 530, einen Switch 510 und mehrere PPUs 300 sowie entsprechende Speicher 304. Die PPUs 330 können jeweils einen oder mehrere Verarbeitungskerne und/oder Komponenten davon enthalten und/oder so konfiguriert sein, dass sie deren Funktionen ausführen, wie z.B. Tensorkerne bzw. Tensor Cores (TCs), Tensorverarbeitungseinheiten bzw. Tensor Processing Units (TPUs), Pixelvisuellkerne bzw. Pixel Visual Cores (PVCs), Sehverarbeitungseinheiten bzw. Vision Processing Units (VPUs), Grafikverarbeitungscluster bzw. Graphics Processing Clusters (GPCs), Texturverarbeitungscluster bzw. Texture Processing Clusters (TPCs), Streaming-Multiprozessoren bzw. Streaming Multiprocessors (SMs), Baumdurchlaufeinheiten bzw. Tree Traversal Units (TTUs), Beschleuniger für künstliche Intelligenz bzw. Artificial Intelligence Accelerators (AlAs), Beschleuniger für tiefes Lernen bzw. Deep Learning Accelerators (DLAs), Arithmetik-Logik-Einheiten bzw. Arithmetic-Logic Units (ALUs), anwendungsspezifische integrierte Schaltkreise bzw. Application-Specific Integrated Circuits (ASICs), Gleitkommaeinheiten bzw. Floating Point Units (FPUs), Eingabe-/Ausgabe (E/A)-Elemente bzw. Input/Output (I/O)-Elemente, Peripheral Component Interconnect (PCI)- oder Peripheral Component Interconnect Express (PCIe)-Elemente und/oder dergleichen.
  • Der NVLink 310 stellt Hochgeschwindigkeits-Kommunikationsverbindungen zwischen jeder der PPUs 300 bereit. Obwohl eine bestimmte Anzahl von NVLink 310- und Interconnect 302-Verbindungen in 5B dargestellt ist, kann die Anzahl der Verbindungen zu jeder PPU 300 und der CPU 530 variieren. Der Switch 510 verbindet zwischen dem Interconnect 302 und der CPU 530. Die PPUs 300, die Speicher 304 und die NVLinks 310 können auf einer einzigen Halbleiterplattform liegen, um ein Parallelverarbeitungsmodul 525 zu bilden. In einer Ausführungsform unterstützt der Switch 510 zwei oder mehr Protokolle, um zwischen verschiedenen unterschiedlichen Verbindungen und/oder Verknüpfungen zu verbinden.
  • In einer anderen Ausführungsform (nicht gezeigt) stellt der NVLink 310 eine oder mehrere Hochgeschwindigkeits-Kommunikationsverbindungen zwischen jeder der PPUs 300 und der CPU 530 bereit und verbindet der Switch 510 zwischen dem Interconnect 302 und jeder der PPUs 300. Die PPUs 300, die Speicher 304 und der Interconnect 302 können auf einer einzigen Halbleiterplattform angeordnet sein, um ein Parallelverarbeitungsmodul 525 zu bilden. In einer nochmals weiteren Ausführungsform (nicht gezeigt) stellt der Interconnect 302 eine oder mehrere Kommunikationsverbindungen zwischen jeder der PPUs 300 und der CPU 530 bereit, und verbindet der Switch 510 zwischen jeder der PPUs 300 unter Verwendung des NVLinks 310, um eine oder mehrere Hochgeschwindigkeits-Kommunikationsverbindungen zwischen den PPUs 300 bereitzustellen. In einer weiteren Ausführungsform (nicht gezeigt) stellt der NVLink 310 eine oder mehrere Hochgeschwindigkeits-Kommunikationsverbindungen zwischen den PPUs 300 und der CPU 530 über den Switch 510 bereit. In einer nochmals anderen Ausführungsform (nicht gezeigt) stellt der Interconnect 302 eine oder mehrere Kommunikationsverbindungen zwischen jeder der PPUs 300 direkt zur Verfügung. Eine oder mehrere der NVLink 310-Hochgeschwindigkeits-Kommunikationsverbindungen können als physikalische NVLink-Verbindung oder als entweder eine On-Chip- oder eine On-Die-Verbindung unter Verwendung desselben Protokolls wie der NVLink 310 implementiert sein.
  • Im Kontext der vorliegenden Beschreibung kann sich eine einzelne Halbleiterplattform auf eine einzige einheitliche halbleiterbasierte integrierte Schaltung beziehen, die auf einem Die oder einem Chip hergestellt ist. Es wird angemerkt, dass sich der Begriff einzelne Halbleiterplattform auch auf Multichip-Module mit erhöhter Konnektivität, die einen On-Chip-Betriebsablauf simulieren und wesentliche Verbesserungen gegenüber der Nutzung einer herkömmlichen Busimplementierung bereitstellen, beziehen kann. Natürlich können die verschiedenen Schaltungen oder Vorrichtungen auch einzeln oder in verschiedenen Kombinationen von Halbleiterplattformen nach den Wünschen des Benutzers angeordnet sein. Alternativ kann das Parallelverarbeitungsmodul 525 als ein Leiterplattensubstrat implementiert sein, und kann jede der PPUs 300 und/oder jeder der Speicher 304 eine gepackte Vorrichtung sein. In einer Ausführungsform befinden sich die CPU 530, der Switch 510 und das Parallelverarbeitungsmodul 525 auf einer einzigen Halbleiterplattform.
  • In einer Ausführungsform beträgt die Signalübertragungsrate jedes NVLinks 310 20 bis 25 Gigabit/Sekunde und beinhaltet jede PPU 300 sechs NVLink 310-Schnittstellen (wie in 5B gezeigt ist, sind fünf NVLink 310-Schnittstellen für jede PPU 300 enthalten). Jeder NVLink 310 stellt eine Datenübertragungsrate von 25 Gigabyte/Sekunde in jede Richtung bereit, wobei sechs Links 300 Gigabyte/Sekunde liefern. Die NVLinks 310 können ausschließlich für die PPU-zu-PPU-Kommunikation, wie in 5B gezeigt, oder für eine Kombination aus PPU-zu-PPU und PPU-zu-CPU verwendet werden, wenn die CPU 530 ebenfalls eine oder mehrere NVLink 310-Schnittstellen beinhaltet.
  • In einer Ausführungsform ermöglicht der NVLink 310 den direkten Lade-/Speicher-/Kern-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, wodurch die Cache-Zugriffslatenz für die CPU 530 reduziert wird. In einer Ausführungsform beinhaltet der NVLink 310 die Unterstützung von Address Translation Services (ATS), so dass die PPU 300 direkt auf Seitentabellen innerhalb der CPU 530 zugreifen kann. Einer oder mehrere der NVLinks 310 können auch für den Betrieb in einem Energiesparmodus konfiguriert sein.
  • 5C veranschaulicht 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 dazu konfiguriert sein, eines oder mehrere der in den 1C, 2C, 6B und 6C gezeigten Verfahren 150, 250, 650 bzw. 675 zu implementieren.
  • Wie gezeigt ist, wird ein System 565 bereitgestellt, das zumindest eine Zentralprozessoreinheit 530 beinhaltet, die mit einem Kommunikationsbus 575 verbunden ist. Der Kommunikationsbus 575 kann direkt oder indirekt eine oder mehrere der folgenden Vorrichtungen koppeln: Hauptspeicher 540, Netzwerkschnittstelle 535, CPU(s) 530, Anzeigevorrichtung(en) 545, Eingabevorrichtung(en) 560, Schalter 510 und Parallelverarbeitungssystem 525. Der Kommunikationsbus 575 kann unter Verwendung eines beliebigen geeigneten Protokolls implementiert sein und kann eine oder mehrere Verbindungen oder Busse repräsentieren, wie z.B. einen Adressbus, einen Datenbus, einen Steuerbus oder eine Kombination davon. Der Kommunikationsbus 575 kann einen oder mehrere Bus- oder Verbindungstypen umfassen, z.B. einen ISA (Industry Standard Architecture)-Bus, einen EISA (Extended Industry Standard Architecture)-Bus, einen VESA (Video Electronics Standards Association)-Bus, einen PCI (Peripheral Component Interconnect)-Bus, einen PCle (Peripheral Component Interconnect Express)-Bus, HyperTransport und/oder eine andere Art von Bus oder Verbindung. In einigen Ausführungsformen gibt es direkte Verbindungen zwischen Komponenten. Zum Beispiel kann/können die CPU(s) 530 direkt mit dem Hauptspeicher 540 verbunden sein. Außerdem kann/können die CPU(s) 530 direkt mit dem Parallelverarbeitungssystem 525 verbunden sein. Bei einer direkten Verbindung oder einer Punkt-zu-Punkt-Verbindung zwischen Komponenten kann der Kommunikationsbus 575 eine PCIe-Verbindung enthalten, um die Verbindung herzustellen. In diesen Beispielen braucht ein PCI-Bus nicht im System 565 enthalten zu sein.
  • Obwohl die verschiedenen Blöcke von 5C als über den Kommunikationsbus 575 mit Leitungen verbunden dargestellt sind, soll dies nicht beschränkend sein und dient nur der Klarheit. Beispielsweise kann in einigen Ausführungsformen eine Darstellungskomponente, wie beispielsweise die Anzeigevorrichtung(en) 545, als eine E/A-Komponente betrachtet werden, wie beispielsweise die Eingabevorrichtung(en) 560 (z.B. falls die Anzeige ein berührungsempfindlicher Bildschirm bzw. ein Touchscreen ist). Als ein weiteres Beispiel kann/können die CPU(s) 530 und/oder das Parallelverarbeitungssystem 525 Speicher enthalten (z.B. kann der Hauptspeicher 540 zusätzlich zu dem Parallelverarbeitungssystem 525, den CPUs 530 und/oder anderen Komponenten eine Speichervorrichtung repräsentieren). Mit anderen Worten ist die Rechenvorrichtung von 5C 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 Geräte- oder Systemtypen unterschieden, da alle im Rahmen der Rechenvorrichtung von 5C in Betracht gezogen werden.
  • Das System 565 umfasst auch einen Hauptspeicher 540. Steuerlogik (Software) und Daten werden in dem Hauptspeicher 540 gespeichert, der die Form einer Vielzahl von computer-lesbaren Medien annehmen kann. Die computer-lesbaren Medien können alle verfügbaren Medien sein, auf die das System 565 zugreifen kann. Die computer-lesbaren Medien können sowohl flüchtige als auch nichtflüchtige Medien sowie entfernbare und nichtentfernbare Medien umfassen. Als Beispiel und ohne Beschränkung darauf können die computer-lesbaren Medien Computerspeichermedien und Kommunikationsmedien umfassen.
  • Die Computerspeichermedien können sowohl flüchtige als auch nichtflüchtige Medien und/oder entfernbare und nichtentfernbare Medien umfassen, die in einem beliebigen Verfahren oder einer beliebigen Technologie zur Speicherung von Informationen wie beispielsweise computer-lesbaren Anweisungen, Datenstrukturen, Programmmodulen und/oder anderen Datentypen implementiert sind. Beispielsweise kann der Hauptspeicher 540 computer-lesbare Anweisungen (die z.B. ein oder mehrere Programme und/oder ein oder mehrere Programmelemente darstellen, wie z.B. ein Betriebssystem) speichern. Die Computerspeichermedien können unter anderem RAM, ROM, EEPROM, Flash-Speicher oder andere Speichertechnologien, CD-ROM, Digital Versatile Disks (DVD) oder andere optische Plattenspeicher, Magnetkassetten, Magnetbänder, Magnetplattenspeicher oder andere magnetische Speichergeräte oder jedes andere Medium, das zum Speichern der gewünschten Informationen verwendet werden kann und auf das das System 565 zugreifen kann, beinhalten. Wie hierin verwendet, umfasst der Begriff Computerspeichermedium nicht Signale per se.
  • Die Computerspeichermedien können computer-lesbare Befehle, Datenstrukturen, Programmmodule und/oder andere Datentypen in einem modulierten Datensignal, wie z.B. einer Trägerwelle oder einem anderen Transportmechanismus, verkörpern und umfassen beliebige Informationsübertragungsmedien. 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 werden. Als Beispiel, und nicht als Beschränkung, können die Computerspeichermedien verdrahtete Medien wie ein verdrahtetes Netzwerk oder eine direkt verdrahtete Verbindung und drahtlose Medien wie akustische, RF-, Infrarot- und andere drahtlose Medien umfassen. Kombinationen aus allen oben genannten sollten ebenfalls in den Bereich der computer-lesbaren Medien fallen.
  • Computerprogramme ermöglichen bei ihrer Ausführung dem System 565, verschiedene Funktionen auszuführen. Die CPU(s) 530 kann/können so konfiguriert sein, dass sie zumindest einige der computer-lesbaren Anweisungen ausführen, um eine oder mehrere Komponenten des Systems 565 zu steuern, um eines oder mehrere der hierin beschriebenen Verfahren und/oder Prozesse durchzuführen. Die CPU(s) 530 kann/können jeweils einen oder mehrere Kerne (z.B. einen, zwei, vier, acht, achtundzwanzig, zweiundsiebzig usw.) umfassen, die in der Lage sind, eine Vielzahl von Software-Threads gleichzeitig zu verarbeiten. Die CPU(s) 530 kann/können jeden Prozessortyp umfassen und je nach Art des implementierten Systems 565 unterschiedliche Prozessortypen umfassen (z.B. Prozessoren mit weniger Kernen für mobile Geräte 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 zusätzlich zu einem oder mehreren Mikroprozessoren oder zusätzlichen Co-Prozessoren, wie z.B. mathematischen Co-Prozessoren, enthalten.
  • Zusätzlich zu oder alternativ zu der/den CPU(s) 530 kann das Parallelverarbeitungsmodul 525 so konfiguriert sein, dass es zumindest einige der computer-lesbaren Anweisungen ausführt, um eine oder mehrere Komponenten des Systems 565 zu steuern, um eines oder mehrere der hierin 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 Universalberechnungen verwendet werden. Zum Beispiel kann das Parallelverarbeitungsmodul 525 für universelles Rechnen 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 Teile davon durchführen.
  • Das System 565 beinhaltet darüber hinaus eine oder mehrere Eingabevorrichtung(en) 560, das Parallelverarbeitungssystem 525 und eine oder mehrere Anzeigevorrichtung(en) 545. Die Anzeigevorrichtung(en) 545 kann/können eine Anzeige (z.B. einen Monitor, einen Touchscreen, einen Fernsehbildschirm, ein Headsup-Display (HUD), andere Anzeigetypen oder eine Kombination davon), Lautsprecher und/oder andere Präsentationskomponenten umfassen. Die Anzeigevorrichtung(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.).
  • Die Netzwerkschnittstelle 535 kann es dem System 565 ermöglichen, logisch mit anderen Vorrichtungen zu verbinden, einschließlich der Eingabevorrichtungen 560, der Anzeigevorrichtung(en) 545 und/oder anderer Komponenten, von welchen einige in das System 565 eingebaut (z.B. integriert) sein können. Illustrative Eingabegeräte 560 umfassen ein Mikrofon, eine Maus, eine Tastatur, einen Joystick, ein Gamepad, einen Gamecontroller, eine Satellitenschüssel, einen Scanner, einen Drucker, eine drahtlose Vorrichtung usw. Die Eingabevorrichtungen 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 zur weiteren Verarbeitung an ein entsprechendes Netzwerkelement ü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, Touchscreen-Technologie und Kombinationen davon, zur Gestenerkennung und -erfassung enthalten. Zusätzlich kann das System 565 Eingabegeräte 560 wie Beschleunigungssensoren oder Gyroskope (z.B. als Teil einer Trägheitsmesseinheit (IMU)) enthalten, die die Erkennung von Bewegungen ermöglichen. In einigen Beispielen kann die Ausgabe der Beschleunigungsmesser oder Gyroskope von dem System 565 dazu verwendet werden, immersive Augmented Reality oder Virtual Reality zu rendern.
  • Ferner 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 beispielsweise dem Internet, einem Peer-to-Peer-Netzwerk, einem Kabelnetzwerk oder dergleichen) gekoppelt sein. Das System 565 kann in einem verteilten Netzwerk und/oder einer Cloud-Computing-Umgebung enthalten sein.
  • Die Netzwerkschnittstelle 535 kann einen oder mehrere Empfänger, Sender und/oder Transceiver enthalten, die es dem System 565 ermöglichen, mit anderen Rechenvorrichtungen über ein elektronisches Kommunikationsnetzwerk zu kommunizieren, einschließlich verdrahteter und/oder drahtloser Kommunikation. Die Netzwerkschnittstelle 535 kann Komponenten und Funktionen enthalten, die die Kommunikation über eine Reihe verschiedener Netzwerke ermöglichen, wie z.B. drahtlose Netzwerke (z.B. Wi-Fi, Z-Wave, Bluetooth, Bluetooth LE, ZigBee usw.), drahtgebundene Netzwerke (z.B. Kommunikation über Ethernet oder InfiniBand), Weitverkehrsnetzwerke mit geringer Leistung (z.B. LoRaWAN, SigFox usw.) und/oder das Internet.
  • Das System 565 kann darüber hinaus einen Sekundärspeicher (nicht dargestellt) beinhalten. Der Sekundärspeicher 610 beinhaltet beispielsweise ein Festplattenlaufwerk und/oder ein Wechselspeicherlaufwerk, das ein Diskettenlaufwerk, ein Magnetbandlaufwerk, ein Compact-Disc-Laufwerk, ein Digital Versatile Disc (DVD)-Laufwerk, ein Aufzeichnungsgerät oder einen universeller serieller Bus-(USB)-Flashspeicher darstellt. Das Wechselspeicherlaufwerk liest und/oder schreibt in gut bekannter Weise von einer/auf eine Wechselspeichereinheit. Das System 565 kann darüber hinaus eine fest verdrahtete Stromversorgung, eine Batteriestromversorgung oder eine Kombination davon enthalten (nicht gezeigt). Die Stromversorgung kann das System 565 mit Strom versorgen, um den Betrieb der Komponenten des Systems 565 zu ermöglichen.
  • Jede(s) der vorgenannten Module und/oder Vorrichtungen 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 Benutzers angeordnet sein. Während vorstehend verschiedene Ausführungsformen beschrieben wurden, versteht sich, dass diese lediglich beispielhaft und nicht als beschränkend dargestellt wurden. Daher ist die Breite und der Schutzumfang einer bevorzugten Ausführungsform nicht durch eine der vorstehend beschriebenen, beispielhaften Ausführungsformen zu beschränken, sondern nur in Übereinstimmung mit den nachfolgenden Ansprüchen und deren Entsprechungen zu definieren.
  • Beispielhafte Netzwerkumgebungen
  • Netzwerkumgebungen, die zur Verwendung bei der Implementierung von Ausführungsformen der Erfindung geeignet sind, können ein oder mehrere Client-Geräte, Server, Network Attached Storage (NAS), andere Backend-Geräte und/oder andere Gerätetypen umfassen. Die Client-Geräte, Server und/oder anderen Gerätetypen (z.B. jedes Gerät) können auf einer oder mehreren Instanzen des Verarbeitungssystems 500 von 5B und/oder des Beispielsystems 565 von 5C implementiert sein - z.B. kann jedes Gerät bzw. jede Vorrichtung ähnliche Komponenten, Merkmale und/oder Funktionalität des Verarbeitungssystems 500 und/oder des Beispielsystems 565 beinhalten.
  • 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 umfassen. Beispielsweise kann das Netzwerk ein oder mehrere WANs, ein oder mehrere LANs, ein oder mehrere öffentliche Netzwerke wie beispielsweise das Internet und/oder ein öffentliches Telefonnetz (PSTN) und/oder ein oder mehrere private Netzwerke umfassen. Wo das Netzwerk ein drahtloses Telekommunikationsnetzwerk beinhaltet, können Komponenten wie beispielsweise eine Basisstation, ein Kommunikationsturm oder sogar Zugangspunkte (sowie andere Komponenten) drahtlose Konnektivität bereitstellen.
  • Kompatible Netzwerkumgebungen können eine oder mehrere Peer-to-Peer-Netzwerkumgebungen - in welchem Fall ein Server nicht in einer Netzwerkumgebung enthalten zu sein braucht - und eine oder mehrere Client-Server-Netzwerkumgebungen - in welchem Fall ein oder mehrere Server in einer Netzwerkumgebung enthalten sein können - beinhalten. In Peer-to-Peer-Netzwerkumgebungen kann die hierin beschriebene Funktionalität in Bezug auf einen oder mehrere Server auf einer beliebigen Anzahl von Client-Geräten implementiert sein.
  • In mindestens einer Ausführungsform kann eine Netzwerkumgebung eine oder mehrere Cloud-basierte Netzwerkumgebungen, eine verteilte Rechenumgebung, eine Kombination davon usw. umfassen. Eine Cloud-basierte Netzwerkumgebung kann eine Framework-Schicht, einen Auftragsplaner bzw. Job-Scheduler, einen Ressourcenverwalter und ein verteiltes Dateisystem umfassen, die auf einem oder mehreren Servern implementiert sind, die einen oder mehrere Kernnetzwerkserver und/oder Edge-Server bzw. Randserver umfassen können. Eine Frameworkschicht kann ein Rahmenwerk bzw. Framework zur Unterstützung von Software einer Softwareschicht und/oder einer oder mehrerer Anwendung(en) einer Anwendungsschicht umfassen. Die Software oder Anwendung(en) können jeweils webbasierte Dienstsoftware oder Anwendungen umfassen. In Ausführungsformen können ein oder mehrere der Client-Geräte die webbasierte Dienstsoftware oder Anwendungen verwenden (z.B. durch Zugriff auf die Dienstsoftware und/oder Anwendungen über eine oder mehrere Anwendungsprogrammierschnittstellen (APIs)). Die Frameworkschicht 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.
  • Eine Cloud-basierte Netzwerkumgebung kann Cloud-Computing und/oder Cloud-Speicher bereitstellen, der eine beliebige Kombination der hierin beschriebenen Rechen- und/oder Datenspeicherfunktionen (oder einen oder mehrere Teile davon) ausführt. Jede dieser verschiedenen Funktionen kann über mehrere Standorte von zentralen Servern 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 sich eine Verbindung zu einem Benutzer (z.B. einem Client-Gerät) relativ nahe an einem oder mehreren Randservern befindet, können ein oder mehrere Kernserver zumindest einen Teil der Funktionalität dem oder den Randservern 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.
  • Das/die Client-Gerät(e) kann/können zumindest einige der Komponenten, Merkmale und Funktionen des beispielhaften Verarbeitungssystems 500 von 5B und/oder des beispielhaften Systems 565 von 5C beinhalten. Beispielhaft und ohne Beschränkung darauf kann ein Client-Gerät 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 ein Gerät, ein Video-Player, eine Videokamera, ein Überwachungsgerät oder -system, ein Fahrzeug, ein Boot, ein fliegendes Schiff, eine virtuelle Maschine, eine Drohne, ein Roboter, ein Handheld-Kommunikationsgerät, ein Krankenhausgerät, ein Spielgerät oder -system, ein Unterhaltungssystem, ein Fahrzeugcomputersystem, eine eingebettete Systemsteuerung, eine Fernbedienung, ein Gerät, ein Unterhaltungselektronikgerät, eine Workstation, ein Edge-Gerät, eine beliebige Kombination dieser beschriebenen Geräte oder jedes andere geeignete Gerät sein.
  • Maschinelles Lernen
  • Deep Neural Networks (DNNs), die auf Prozessoren wie beispielsweise der PPU 300 entwickelt wurden, wurden für diverse Anwendungsfälle eingesetzt, von selbstfahrenden Autos bis hin zu schnellerer Medikamentenentwicklung, von automatischer Bildaufzeichnung in Online-Bilddatenbanken bis hin zu intelligenter Echtzeit-Sprachübersetzung in Video-Chat-Anwendungen. Deep Learning ist eine Technik, die den neuronalen Lernprozess des menschlichen Gehirns modelliert, kontinuierlich lernt, kontinuierlich intelligenter wird und im Laufe der Zeit schnellere und genauere Ergebnisse liefert. Ein Kind wird zunächst von einem Erwachsenen gelehrt, verschiedene Formen richtig zu identifizieren und zu klassifizieren, um schließlich ohne jegliche Nachhilfe Formen identifizieren zu können. In ähnlicher Weise muss ein tief lernendes oder neuronal lernendes System in Objekterkennung und - klassifizierung trainiert werden, damit es intelligenter und effizienter grundlegende Objekte, okkludierte Objekte usw. identifizieren und gleichzeitig den Objekten Kontext zuweisen kann.
  • Auf der einfachsten Ebene betrachten Neuronen im menschlichen Gehirn verschiedene Inputs bzw. Eingaben, die empfangen werden, werden jedem dieser Inputs Wichtigkeitsstufen zugewiesen, und wird ein Output bzw. eine Ausgabe an andere Neuronen weitergeleitet, um darauf zu reagieren. Ein künstliches Neuron oder Perzeptron ist das grundlegendste Stil eines neuronalen Netzwerks. In einem Beispiel kann ein Perzeptron eine oder mehrere Eingaben empfangen, die verschiedene Merkmale eines Objekts repräsentieren, für die das Perzeptron trainiert wird, um sie zu erkennen und zu klassifizieren, und wird jedem dieser Merkmale ein bestimmtes Gewicht zugewiesen, das auf der Bedeutung dieses Merkmals für die Definition der Form eines Objekts basiert.
  • Ein Deep Neural Network (DNN)-Modell beinhaltet mehrere Schichten vieler verbundener Knoten (z.B. Perzeptrons, Boltzmann-Maschinen, radiale Basisfunktionen, faltende Schichten, usw.), die mit enormen Mengen von Eingangsdaten trainiert werden können, um komplexe Probleme schnell mit hoher Genauigkeit zu lösen. In einem Beispiel zerlegt eine erste Schicht des DNN-Modells ein Eingangsbild eines Automobils in verschiedene Abschnitte und sucht nach Grundmustern wie beispielsweise Linien und Winkeln. Die zweite Schicht setzt die Linien zusammen, um nach Mustern höherer Ebene wie beispielsweise Rädern, Windschutzscheiben und Spiegeln zu suchen. Die nächste Schicht identifiziert den Fahrzeugtyp, und die letzten paar Schichten erzeugen ein Label für das Eingangsbild, das das Modell einer bestimmten Automobilmarke identifiziert.
  • Sobald das DNN trainiert ist, kann das DNN eingesetzt und dazu verwendet werden, Objekte oder Muster in einem Prozess, der als Inferenz bzw. Schlussfolgerung bekannt ist, zu identifizieren und zu klassifizieren. Beispiele für Schlussfolgerungen (der Prozess, durch welchen ein DNN nützliche Informationen aus einem gegebenen Input extrahiert) beinhalten das Identifizieren von handschriftlichen Zahlen auf Schecks, die in Geldautomaten hinterlegt werden, das Identifizieren von Bildern von Freunden auf Fotos, das Liefern von Filmempfehlungen an über fünfzig Millionen Benutzer, das Identifizieren und Klassifizieren verschiedener Arten von Automobilen, Fußgängern und Straßengefahren in fahrerlosen Autos oder das Übersetzen menschlicher Sprache in Echtzeit.
  • Während des Trainings fließen Daten in einer Vorwärtspropagationsphase durch das DNN, bis eine Vorhersage erstellt ist, die ein dem Input entsprechendes Label angibt. Wenn das neuronale Netzwerk den Input nicht korrekt kennzeichnet, werden Fehler zwischen der korrekten Kennzeichnung und der vorhergesagten Kennzeichnung analysiert und werden die Gewichte für jedes Merkmal während einer Rückwärtspropagationsphase angepasst, bis das DNN den Input und andere Eingaben in einem Trainingsdatensatz korrekt kennzeichnet. Das Training komplexer neuronaler Netze erfordert enorme Mengen an paralleler Rechenleistung, einschließlich von Gleitkomma-Multiplikationen und Additionen, die von der PPU 300 unterstützt werden. Die Inferenzierung ist weniger rechenintensiv als das Training, da es sich um einen latenzsensitiven Prozess handelt, bei dem ein trainiertes neuronales Netzwerk auf neue Inputs, die es bisher noch nicht gegeben hat, angewendet wird, um Bilder zu klassifizieren, Sprache zu übersetzen und generell neue Informationen abzuleiten.
  • Neuronale Netzwerke sind stark auf Matrix-Mathematik-Operationen angewiesen, und komplexe mehrschichtige Netzwerke erfordern enorme Mengen an Gleitkommaleistung und Bandbreite für sowohl Effizienz als auch Geschwindigkeit. Mit Tausenden von Rechenkernen, die für Matrix-Mathematik-Operationen optimiert sind und zehn bis Hunderte von TFLOPS an Leistung liefern, ist die PPU 300 eine Rechenplattform, die in der Lage ist, die Leistung zu liefern, die für auf tiefen neuronalen Netzwerken basierende künstliche Intelligenz und Anwendungen des maschinellen Lernens erforderlich ist.
  • Ferner hinaus können Bilder, die unter Anwendung einer oder mehrerer der hierin offengelegten 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 realen Umgebungen enthalten. Ferner können solche Bilder 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. Ferner 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 hierin offengelegten Techniken erzeugt wurden, verwendet werden, um den Benutzern solcher Maschinen, Roboter und Fahrzeuge Informationen zu vermitteln.
  • 5D veranschaulicht Komponenten eines beispielhaften Systems 555, das zum Trainieren und Verwenden von maschinellem Lernen verwendet werden kann, in Übereinstimmung mit mindestens einer Ausführungsform. Wie erörtert werden wird, können verschiedene Komponenten von verschiedenen Kombinationen von Rechenvorrichtungen bzw. Computergeräten und Ressourcen oder einem einzelnen Rechensystem bzw. Computersystem bereitgestellt sein, das unter der Kontrolle einer einzelnen Entität oder mehrerer Entitäten stehen kann. Ferner können Aspekte von verschiedenen Entitäten ausgelöst, initiiert oder angefordert werden. In mindestens einer Ausführungsform kann das Training eines neuronalen Netzwerks von einem Anbieter angewiesen werden, der mit einer Anbieterumgebung 506 verbunden ist, während in mindestens einer Ausführungsform das Training von einem Kunden oder einem anderen Benutzer angefordert werden kann, der über ein Client-Gerät 502 oder eine andere derartige Ressource Zugriff auf eine Anbieterumgebung hat. In mindestens einer Ausführungsform können Trainingsdaten (oder Daten, die von einem trainierten neuronalen Netzwerk analysiert werden sollen) von einem Anbieter, einem Benutzer oder einem Drittanbieter von Inhalten 524 bereitgestellt werden. In mindestens einer Ausführungsform kann das Client-Gerät 502 z.B. ein Fahrzeug oder ein Objekt sein, das im Auftrag eines Benutzers navigiert werden soll und das Anfragen senden und/oder Anweisungen empfangen kann, die bei der Navigation einer Vorrichtung assistieren.
  • In mindestens einer Ausführungsform können Anfragen über mindestens ein Netzwerk 504 hinweg übermittelt werden, um von einer Anbieterumgebung 506 empfangen zu werden. In mindestens einer Ausführungsform kann ein Client-Gerät 502 ein beliebiges geeignetes elektronisches Gerät und/oder Computergerät sein, das es einem Benutzer ermöglicht, solche Anfragen zu erzeugen und zu senden, wie z.B., aber nicht beschränkt auf, Desktop-Computer, Notebook-Computer, Computer-Server, Smartphones, Tablet-Computer, Spielkonsolen (tragbar oder anderweitig), Computer-Prozessoren, Computer-Logik 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 umfassen, wie z.B. das Internet, ein Intranet, ein Mobilfunknetz, ein lokales Netzwerk (LAN), ein Weitverkehrsnetz (WAN), ein persönliches Netzwerk (PAN), ein Ad-hoc-Netzwerk aus direkten drahtlosen Verbindungen zwischen Peers usw.
  • In mindestens einer Ausführungsform können Anfragen an einer Schnittstellenschicht 508 empfangen werden, die in diesem Beispiel Daten an einen Trainings- und Inferenzierungs-Verwalter 532 weiterleiten kann. Der Trainings- und Inferenzierungs-Verwalter 532 kann ein System oder ein Dienst sein, der Hardware und Software zum Verwalten von Anfragen und dienstentsprechenden Daten oder Inhalten beinhaltet. In mindestens einer Ausführungsform kann der Trainings- und Inferenzierungs-Verwalter 532 eine Anfrage zum Trainieren eines neuronalen Netzwerks empfangen und Daten für eine Anfrage an ein Trainingsmodul 512 bereitstellen. In mindestens einer Ausführungsform kann das Trainingsmodul 512 ein geeignetes Modell oder neuronales Netzwerk auswählen, das zu verwenden ist, falls es nicht durch die Anfrage bzw. Anfrage spezifiziert wurde, und kann ein Modell unter Verwendung relevanter Trainingsdaten trainieren. In mindestens einer Ausführungsform können die Trainingsdaten ein Datenstapel sein, der in einem Trainingsdatenspeicher 514 gespeichert ist, von dem Client-Gerät 502 empfangen oder von einem Drittanbieter 524 bezogen wird. In mindestens einer Ausführungsform kann das Trainingsmodul 512 für das Training der Daten verantwortlich sein. Ein neuronales Netzwerk kann ein beliebiges geeignetes Netzwerk sein, wie z.B. ein rekurrentes neuronales Netzwerk (RNN; recurrent neural network) oder ein faltendes neuronales Netzwerk (CNN; convolutional neural network). Sobald ein neuronales Netzwerk trainiert und erfolgreich ausgewertet wurde, kann ein trainiertes neuronales Netzwerk beispielsweise in einem Modellspeicher 516 gespeichert werden, der verschiedene Modelle oder Netze für Benutzer, Anwendungen oder Dienste usw. speichern kann. In 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 mindestens einer Ausführungsform kann zu einem späteren Zeitpunkt eine Anfrage von dem Client-Gerät 502 (oder einem anderen solchen Gerät) für Inhalte (z.B. Pfadbestimmungen) oder Daten empfangen werden, die zumindest teilweise von einem trainierten neuronalen Netzwerk bestimmt oder beeinflusst werden. Diese Anfrage kann beispielsweise Eingabedaten enthalten, die unter Verwendung eines neuronalen Netzwerks zu verarbeiten sind, um eine oder mehrere Schlussfolgerungen oder andere Ausgabewerte, Klassifizierungen oder Vorhersagen zu erhalten, oder es können, für mindestens eine Ausführungsform, die Eingabedaten von der Schnittstellenschicht 508 empfangen und an ein Inferenzierungsmodul 518 weitergeleitet werden, obwohl auch ein anderes System oder ein anderer Dienst verwendet werden kann. In mindestens einer Ausführungsform kann das Inferenzierungsmodul 518 ein geeignetes trainiertes Netzwerk, wie z.B. ein trainiertes tiefes neuronales Netzwerk (DNN), wie hierin beschrieben, aus dem Modellspeicher 516 beziehen, falls es nicht bereits lokal in dem Inferenzierungsmodul 518 gespeichert ist. Das Inferenzierungsmodul 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 beinhalten. In mindestens einer Ausführungsform können die Schlussfolgerungen dann an das Client-Gerät 502 zur Anzeige oder anderen Kommunikation an einen Benutzer übertragen werden. In mindestens einer Ausführungsform können Kontextdaten für einen Benutzer auch in einem Benutzerkontextdatenspeicher 522 gespeichert werden, welcher Daten über einen Benutzer enthalten kann, die als Eingabe für ein Netzwerk beim Erzeugen von Schlussfolgerungen oder beim Bestimmen von Daten, die nach dem Erhalten von Instanzen an einen Benutzer zurückgegeben werden, nützlich sein können. In mindestens einer Ausführungsform können relevante Daten, welche zumindest einige der Eingabe- oder Schlussfolgerungsdaten beinhalten können, auch in einer lokalen Datenbank 534 für die Verarbeitung zukünftiger Anfragen gespeichert werden. In mindestens einer Ausführungsform kann ein Benutzer Kontoinformationen oder andere Informationen verwenden, um auf Ressourcen oder Funktionen einer Anbieterumgebung zuzugreifen. In mindestens einer Ausführungsform können, falls zulässig und verfügbar, Benutzerdaten auch gesammelt und zum weiteren Trainieren von Modellen verwendet werden, um genauere Inferenzierungen bzw. Schlussfolgerungen für zukünftige Anfragen abzuleiten bzw. zu ziehen. In mindestens einer Ausführungsform können Anfragen über eine Benutzerschnittstelle an eine Anwendung für maschinelles Lernen (526), die auf dem Client-Gerät 502 ausgeführt wird, empfangen werden, und werden die Ergebnisse über dieselbe Schnittstelle angezeigt. Ein Client-Gerät kann Ressourcen wie beispielsweise einen Prozessor 528 und einen Speicher 562 zum Erzeugen einer Anfrage und Verarbeiten von Ergebnissen oder einer Antwort sowie mindestens ein Datenspeicherelement 552 zum Speichern von Daten für die Anwendung maschinellen Lernens 526 beinhalten.
  • In mindestens einer Ausführungsform wird ein Prozessor 528 (oder ein Prozessor des Trainingsmoduls 512 oder des Inferenzierungsmoduls 518) eine Zentralverarbeitungseinheit (CPU) sein. Wie bereits erwähnt wurde, 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 Netzwerke und die Erstellung von Vorhersagen sehr populär 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 Eingabemerkmale 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. Falls ein Framework für tiefes Lernen bzw. 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 Inferenzierung in Echtzeit auf einer CPU durchgeführt werden. Falls ein CPU-Ansatz nicht praktikabel ist, dann kann ein Dienst auf einer GPU-Instanz laufen. Weil GPUs jedoch andere Leistungs- und Kosteneigenschaften als CPUs haben, muss ein Dienst, der einen Laufzeitalgorithmus auf eine GPU auslagert, möglicherweise anders konzipiert werden als ein CPU-basierter Dienst.
  • In mindestens einer Ausführungsform können Videodaten von dem Client-Gerät 502 für eine Verbesserung in der Anbieterumgebung 506 bereitgestellt werden. In mindestens einer Ausführungsform können Videodaten für eine Verbesserung auf dem Client-Gerät 502 verarbeitet werden. In mindestens einer Ausführungsform können Videodaten von einem Drittanbieter von Inhalten 524 gestreamt und von dem Drittanbieter von Inhalten 524, der Anbieterumgebung 506 oder dem Client-Gerät 502 verbessert werden. In mindestens einer Ausführungsform können Videodaten von dem Client-Gerät 502 zur Verwendung als Trainingsdaten in der Anbieterumgebung 506 bereitgestellt werden.
  • In mindestens einer Ausführungsform kann überwachtes und/oder unüberwachtes Training von dem Client-Gerät 502 und/oder der Anbieterumgebung 506 durchgeführt werden. In mindestens einer Ausführungsform wird ein Satz von Trainingsdaten 514 (z.B. klassifizierte oder gelabelte bzw. 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 Netzwerk bzw. neuronales Generatornetzwerk zu trainieren.
  • In mindestens einer Ausführungsform können die Trainingsdaten Bilder von mindestens einer menschlichen Person, einem Avatar oder einer Figur enthalten, für die ein neuronales Netzwerk zu trainieren ist. In mindestens einer Ausführungsform können Trainingsdaten Instanzen mindestens eines Objekttyps enthalten, für welchen ein neuronales Netzwerk zu trainieren ist, sowie Informationen, die diesen Objekttyp identifizieren. In mindestens einer Ausführungsform könnten Trainingsdaten einen Satz von Bildern beinhalten, die jeweils eine Repräsentation eines Objekttyps beinhalten, wobei jedes Bild auch ein Label bzw. Etikett, Metadaten, eine Klassifizierung oder andere Informationen beinhaltet, oder diesen zugeordnet ist, die einen Objekttyp identifizieren, der in einem jeweiligen Bild repräsentiert ist. Verschiedene andere Datentypen können ebenfalls als Trainingsdaten verwendet werden, wie z.B. Textdaten, Audiodaten, Videodaten usw. In mindestens einer Ausführungsform werden die Trainingsdaten 514 als Trainingseingabe für ein Trainingsmodul 512 bereitgestellt. In mindestens einer Ausführungsform kann das Trainingsmodul 512 ein System oder ein Dienst sein, der Hardware und Software umfasst, wie z.B. ein oder mehrere Rechenvorrichtungen, die eine Trainingsanwendung ausführen, um ein neuronales Netzwerk (oder ein anderes Modell oder einen Algorithmus usw.) zu trainieren. In mindestens einer Ausführungsform empfängt das Trainingsmodul 512 eine Anweisung oder Anfrage, die eine Art von Modell angibt, das für das Training zu verwenden ist. In mindestens einer Ausführungsform kann ein Modell ein beliebiges geeignetes statistisches Modell, ein Netzwerk oder ein Algorithmus sein, das bzw. der für solche Zwecke nützlich ist, wie z.B. ein künstliches neuronales Netzwerk, ein Algorithmus für tiefes Lernen, ein Lernklassifikator, ein Bayes'sches Netzwerk usw. In mindestens einer Ausführungsform kann das Trainingsmodul 512 ein Ausgangsmodell oder ein anderes untrainiertes Modell aus einem geeigneten Modellspeicher bzw. Repositorium 516 auswählen und Trainingsdaten 514 verwenden, um ein Modell zu trainieren, wodurch ein trainiertes Modell (z.B. ein trainiertes tiefes neuronales Netzwerk) erzeugt wird, das verwendet werden kann, um ähnliche Datentypen zu klassifizieren oder andere derartige Schlussfolgerungen zu erzeugen. In mindestens einer Ausführungsform, in der keine Trainingsdaten verwendet werden, kann dennoch ein geeignetes Ausgangsmodell für das Training auf Eingangsdaten per Trainingsmodul 512 ausgewählt werden.
  • In mindestens einer Ausführungsform kann ein Modell in einer Anzahl verschiedener Arten trainiert werden, was zum Teil von der Art des gewählten Modells abhängen kann. In mindestens einer Ausführungsform kann ein Algorithmus maschinellen Lernens mit einem Satz von Trainingsdaten versehen sein, wobei ein Modell ein Modellartefakt ist, das durch einen Trainingsprozess erstellt wurde. In mindestens einer Ausführungsform enthält jede Instanz von Trainingsdaten eine richtige Antwort (z.B. Klassifizierung), die als ein Ziel oder Zielattribut bezeichnet werden kann. In mindestens einer Ausführungsform findet ein Lernalgorithmus Muster in Trainingsdaten, die Eingabedatenattribute auf ein Ziel, eine vorherzusagende Antwort, abbilden, und wird ein Modell maschinellen Lernens ausgegeben, das diese Muster erfasst. In mindestens einer Ausführungsform kann ein Modell maschinellen Lernens dann dazu verwendet werden, Vorhersagen für neue Daten zu erhalten, für welche ein Ziel nicht spezifiziert ist.
  • In mindestens einer Ausführungsform kann der Trainings- und Inferenzierungs-Verwalter 532 aus einer Reihe von Modellen maschinellen Lernens auswählen, darunter binäre Klassifikation, Multiklassen-Klassifikation, erzeugende bzw. generative Modelle und Regressionsmodelle. In mindestens einer Ausführungsform kann ein zu verwendender Modelltyp zumindest teilweise von der Art des vorherzusagenden Ziels abhängen.
  • GAN-gestützte Videokodierung und -rekonstruktion
  • Videokonferenzen und ähnliche Anwendungen erfordern eine große Bandbreite, um Bilder über das Netzwerk an Randvorrichtungen zu übertragen. Wenn keine adäquate Bandbreite verfügbar ist, wird die Bild- und/oder Audioqualität beeinträchtigt. Herkömmliche Bildkompressionsverfahren können eingesetzt werden, um die Bilder vor der Übertragung zu komprimieren und für die Anzeige am Empfangsgerät zu dekomprimieren. Die konventionellen Techniken sind jedoch möglicherweise nicht robust, wenn die Bandbreite extrem begrenzt oder die Verbindung unzuverlässig ist.
  • In einer Anwendung, wie z.B. für Videokonferenzen (VC), bei der eine große Menge an Filmmaterial von einem einzigen Subjekt unter relativ konsistenten Situationen übertragen wird, kann ein neuronales Generatornetzwerk, wie beispielsweise das stilbasierte Generatorsystem 100, verwendet werden, um ein Bild als einen latenten Zwischencode oder einen Erscheinungsvektor zu kodieren. Ein neuronales Synthesenetzwerk, wie z.B. das neuronale Synthesenetzwerk 140, kann dann das Bild aus dem Erscheinungsvektor rekonstruieren.
  • In einer Ausführungsform enthält der Erscheinungsvektor mindestens einen abstrakten latenten Code (z.B. einen latenten Zwischencode), einen Satz von (Gesichts-)Orientierungspunkten, einen Satz von Koeffizienten, die zum bekannten Facial Action Coding System (FACS) gehören, oder einen Vektor, der das Aussehen des Gesichts in einem gelernten Merkmaleinbettungsraum repräsentiert.
  • Bilder eines Objekts können erfasst und verarbeitet werden, um jedes Videobild in den latenten Raum eines neuronalen Synthesenetzwerks zu projizieren oder abzubilden, um Erscheinungsvektoren zu erzeugen, die an eine Empfangsvorrichtung übertragen werden. Die Erscheinungsvektoren kodieren Attribute des Objekts und sind eine komprimierte Darstellung der Bilder. Das neuronale Synthesenetzwerk, das im latenten Raum arbeitet, kann so konfiguriert sein, dass es die Erscheinungsvektoren wiedergibt, um die Bilder am Empfänger zu rekonstruieren, wodurch die Erscheinungsvektoren effektiv dekomprimiert werden. Bei Videokonferenzen beispielsweise ist ein Subjekt typischerweise ein einzelner Mensch unter relativ stabilen Bedingungen für Kamera, Pose und Beleuchtung. Ein Video-Stream einer solchen Person, die spricht und zuhört, ist weitgehend redundant, weil die Videobilder nur geringfügige Variationen derselben Person enthalten.
  • Ferner bietet die standardmäßige Videoübertragung in der Regel nur wenig Kontrolle auf hoher Ebene über Aspekte wie das Aussehen des Subjekts. Demgegenüber ermöglicht ein neuronales Synthesenetzwerk eine verbesserte Steuerung, insbesondere die Fähigkeit, Merkmale eines bestimmten Subjekts von der Bewegung der Person, deren Bild in den Videobildern erfasst wird, zu entkoppeln. Daher ermöglicht die Verwendung eines neuronalen Synthesenetzwerks zur Rekonstruktion von komprimiertem Video eine Steuerung für Modifikationen während der Rekonstruktion, wie hierin weiter beschrieben wird.
  • Der Erscheinungsvektor liefert die Echtzeitinformationen für Pose, Ausdruck usw. für die rekonstruierten Videobilder, und Replikationsdaten tragen die zugrunde liegenden Merkmale der menschlichen Person bei, deren Bildnis erfasst und gesendet wird. Replikationsdaten (z.B. Gewichte eines trainierten neuronalen Netzwerks) können während des Trainings ermittelt und an den Empfänger übertragen werden.
  • Die Charakteristiken des menschlichen Subjekts, die während des Trainings des neuronalen Synthesenetzwerks verwendet wurden, können auf die rekonstruierten Videobilder angewendet werden - selbst wenn ein anderes menschliches Subjekt in den aufgenommenen Bildern erscheint, aus welchen der Erscheinungsvektor generiert wird. Mit anderen Worten werden die Replikationsdaten durch das neuronale Synthesenetzwerk auf die rekonstruierten Videobilder übertragen. Die Replikationsdaten können unter Verwendung der gleichen Person erzeugt werden, deren Bildnis erfasst und übertragen wird, jedoch mit unterschiedlichen Attributen, wie z.B. unterschiedlichen Frisuren, Kleidungsstücken und/oder Szenenbeleuchtung. Zum Beispiel können die Replikationsdaten für eine Person generiert werden, wenn die Person ihre Haare so gestylt hat, wie sie es bevorzugt, während sie eine Uniform trägt und unter Studiolichtbedingungen. Demgegenüber können die Erscheinungsvektoren generiert werden, während dieselbe Person eine andere Frisur hat, einen Hut oder eine Brille trägt, und unter schlechten Lichtverhältnissen. Die Replikationsdaten werden auf die rekonstruierten Bilder übertragen, so dass die Person ihre bevorzugte Frisur zu haben scheint, die Uniform trägt und die Bilder von ihr unter den Studiolichtbedingungen aufgenommen wurden. In einem anderen Beispiel können die Replikationsdaten für eine andere Person erzeugt werden und werden die Attribute der anderen Person auf die rekonstruierten Bilder übertragen. Daher können die Replikationsdaten verwendet werden, um einen oder mehrere Aspekte der rekonstruierten Bilder zu modifizieren. In einer anderen Ausführungsform werden individuelle Attribute, die von dem neuronalen Synthesenetzwerk zur Rekonstruktion verwendet werden, mit dem Erscheinungsvektor versehen. Zum Beispiel kann die Person, deren Bild aufgenommen wird, verschiedene Attribute auswählen (z.B. Brillenträger, Augenfarbe usw.), die an den Empfänger gesendet werden. In einem anderen Beispiel kann der Empfänger ein oder mehrere verschiedene Attribute auswählen, die für die Rekonstruktion zu verwenden sind.
  • Nachstehend werden weitere veranschaulichende Informationen zu verschiedenen optionalen Architekturen und Funktionen dargelegt, mit denen das oben beschriebene Framework nach den Wünschen des Benutzers implementiert werden kann. Es wird ausdrücklich darauf hingewiesen, dass die folgenden Informationen zu illustrativen Zwecken dargelegt werden und nicht als in irgendeiner Weise beschränkend auszulegen sind. Jedes der folgenden Merkmale kann optional mit oder ohne Ausschluss anderer beschriebener Merkmale integriert werden.
  • 6A veranschaulicht ein beispielhaftes Video-Streaming-System 600, das zur Verwendung bei der Implementierung einiger Ausführungsformen der Erfindung geeignet ist. Es versteht sich, dass diese und andere hierin beschriebene Anordnungen nur als Beispiele dargestellt sind. 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. Ferner sind viele der hierin beschriebenen Elemente funktionale Entitäten, die als diskrete oder verteilte Komponenten oder in Verbindung mit anderen Komponenten und in jeder geeigneten Kombination und an jedem geeigneten Ort implementiert werden können. Verschiedene hierin beschriebene Funktionen, wie sie von Entitäten ausgeführt werden, können durch Hardware, Firmware und/oder Software ausgeführt werden. Beispielsweise können verschiedene Funktionen von einem Prozessor ausgeführt werden, der in Speicher gespeicherte Anweisungen ausführt. Darüber hinaus wird der Fachmann verstehen, dass jedes beliebige System, das die Operationen des beispielhaften Video-Streaming-Systems 600 ausführt, innerhalb des Rahmens und der Idee von Ausführungsformen der Erfindung liegt.
  • 6A beinhaltet Client-Geräte 603 und 604 (die ähnliche Komponenten, Merkmale und/oder Funktionalität wie das beispielhafte Verarbeitungssystem 500 von 5B, das beispielhafte System 565 von 5C und/oder das beispielhafte System 555 von 5D aufweisen können) und ein oder mehrere Netzwerk(e) 504 (das/die ähnlich dem/den hierin beschriebenen Netzwerk(en) sein kann/können). In einigen Ausführungsformen der Erfindung kann das System 600 die Anbieterumgebung 506 umfassen und können die Client-Geräte 603 und/oder 604 jeweils das Client-Gerät 502 sein. Obwohl das sendende Client-Gerät 603 als eine Quelle oder ein Sender beschrieben wird, kann das sendende Client-Gerät 603 so konfiguriert sein, dass es gleichzeitig die Operationen eines Ziel- oder des Empfangs-Client-Geräts 604 ausführt. In ähnlicher Weise kann/können, obwohl das/die empfangende(n) Client-Geräte) 604 als ein Ziel oder Empfänger beschrieben wird/werden, das/die empfangende(n) Client-Gerät(e) 604 so konfiguriert sein, dass es/sie gleichzeitig die Operationen des Quell- oder Sende-Client-Geräts 603 ausführt/ausführen.
  • In dem System 600 können für eine Videokonferenzsitzung das/die empfangende(n) Client-Gerät(e) 604 Eingabedaten unter Verwendung einer Datenerfassungskomponente 614 erfassen. Die Eingabedaten können Bilder, Audio, Blickrichtung, Blickposition und andere Arten von Daten sein, die von Eingabegeräten 560 erfasst wurden. Die Datenerfassungskomponente 614 stellt die erfassten Daten zum Trainieren eines Kodierers bzw. Encoders 616 bereit, um eine Eingabe in einen Eingabelatenzraum, wie den Latenzraum Z, in einen Latenzraum zu projizieren, der einem neuronalen Synthesenetzwerk zugeordnet ist, wie z.B. der Zwischen-Latenzraum W. Wenn die Daten Videoframes sind, die von einer Person 605 aufgenommen wurden, wie z.B. einer Person, die mit dem sendenden Client-Gerät 603 interagiert oder es betrachtet, wird der Encoder 616 dazu trainiert, einen Erscheinungsvektor für jedes Einzelbild bzw. jeden Frame zu erzeugen. Sobald der Encoder 616 darauf trainiert ist, eine Eingabe in den Eingabelatenzraum auf einen Erscheinungsvektor in den Latenzraum W zu projizieren, wandelt der Encoder die erfassten Bilder der Person 605 in Erscheinungsvektoren um.
  • Parameter (z.B. Gewichte) des Encoders 616 werden während des Trainings gelernt und die Parameter werden dazu verwendet, die eingegebenen latenten Codes zu verarbeiten, wenn der Encoder 616 dazu eingesetzt wird, die Erscheinungsvektoren zu erzeugen. In einer Ausführungsform umfasst der Encoder 616 das abbildende neuronale Netzwerk 110 und umfasst ein Dekodierer bzw. Decoder 622 innerhalb des/der empfangenden Client-Gerät(e) 604 das neuronale Synthesenetzwerk 140 und die Stilkonvertierungseinheit 115.
  • In einer Ausführungsform kann der Encoder 616 einen Erscheinungsvektor für ein Bild erzeugen und dann Erscheinungsvektoranpassungen für ein oder mehrere nachfolgende Bilder vornehmen. In einer Ausführungsform kann der Encoder 616 so konfiguriert sein, dass er anstelle von oder zusätzlich zu den Anpassungen des Erscheinungsvektors für ein oder mehrere Frames auf der Grundlage einer Metrik oder in vorgegebenen Intervallen einen Erscheinungsvektor erzeugt.
  • In einer anderen Ausführungsform können das/die empfangende(n) Client-Gerät(e) 604 zwischen zwei Erscheinungsvektoren interpolieren, um zusätzliche Erscheinungsvektoren und zusätzliche rekonstruierte Bilder zu erzeugen. Die zusätzlichen rekonstruierten Bilder können mehr Bilder rekonstruieren als erfasst wurden. Die Erscheinungsvektoren, die den Decoder 622 veranlassen, verschiedene Bilder zu rekonstruieren, können als Vektoren in einem hochdimensionalen Raum betrachtet werden, und diese „Schlüssel“-Erscheinungsvektoren können interpoliert werden, um Erscheinungsvektoren zu erzeugen, deren entsprechende Bilder „zwischen“ den rekonstruierten Bildern liegen, die den „Schlüssel“-Erscheinungsvektoren entsprechen. Ein erfolgreich trainierter Decoder 622 neigt dazu, einen „glatteren“ Latenzraum zu haben, in dem interpolierte Erscheinungsvektoren einen glatten und natürlichen visuellen Übergang zwischen den erfassten Bildern getreu einfangen.
  • Wenn das sendende Client-Gerät 603 nicht für jedes aufgenommene Bild einen Erscheinungsvektor erzeugt, können die zusätzlichen rekonstruierten Einzelbilder bzw. Frames die Frames rekonstruieren, für die keine Erscheinungsvektoren erzeugt wurden. Durch Rekonstruieren der zusätzlichen Bilder bzw. Frames kann ein Zeitlupeneffekt erzielt werden. Wenn ein oder mehrere Erscheinungsvektoren beschädigt sind oder (aufgrund von Netzwerküberlastung usw.) fallen gelassen werden und von dem empfangenden Client-Gerät 604 nicht empfangen werden, können die zusätzlichen rekonstruierten Frames die Frames für die fehlenden Erscheinungsvektoren rekonstruieren. Ferner können einer oder mehrere der Erscheinungsvektoren und Erscheinungsvektoranpassungen von dem sendenden Client-Gerät 603 komprimiert und von dem/den empfangenden Client-Gerät(en) 604 unter Verwendung herkömmlicher Techniken dekomprimiert werden.
  • Die Erscheinungsvektoren (oder Erscheinungsvektoranpassungen) werden von dem sendenden Client-Gerät 603 über das/die Netzwerk(e) 504 an das/die empfangende(n) Client-Gerät(e) 604 übertragen. Das sendende Client-Gerät 603 kann auch Replikationsdaten 615 über das/die Netzwerk(e) 504 an das/die empfangende(n) Client-Gerät(e) 604 übertragen. In einer Ausführungsform werden die Replikationsdaten 615 auf sichere Weise in dem mit der Anbieterumgebung 506 gekoppelten Speicher (wie in 6A gezeigt) und/oder in dem sendenden Client-Gerät 603 gespeichert. In einer Ausführungsform kann die Person 605 ein oder mehrere individuelle Benutzerattribute 612 auswählen, die an das/die empfangende(n) Client-Gerät(e) 604 zur Rekonstruktion übertragen werden.
  • In einer Ausführungsform werden die Replikationsdaten 615 für ein bestimmtes Subjekt, wie z.B. die Person 605, durch Trainieren eines neuronalen Synthesenetzwerks erzeugt. Das spezifische Subjekt kann eine reale oder eine synthetische bzw. künstliche Figur sein, einschließlich Menschen und/oder computergenerierte Avatare wie beispielsweise Menschen, Tiere, Kreaturen usw. Trainingsdaten können Frames von gerenderten oder aufgenommenen Videos sein, die das Subjekt enthalten. Das neuronale Synthesenetzwerk kann mit Videobildern des Gesichts des bestimmten Subjekts trainiert werden, anstatt mit Bildern von Gesichtern vieler verschiedener Personen. In einer Ausführungsform kann das Training mit einem vortrainierten neuronalen Synthesenetzwerk beginnen, das mit Gesichtern vieler verschiedener Personen trainiert wurde, gefolgt von einer Feinabstimmung mit Video-Frames des Gesichts des bestimmten Subjekts.
  • Die Replikationsdaten 615 können im Voraus generiert werden oder kontinuierlich generiert und/oder aktualisiert werden oder periodisch aktualisiert werden, wenn zusätzliches Training durchgeführt wird. In einer Ausführungsform kann das sendende Client-Gerät 603 das neuronale Synthesenetzwerk unter Verwendung der in 2D gezeigten Konfiguration des erzeugenden gegnerischen Netzwerks 270 kontinuierlich trainieren, um die der Person 605 zugeordneten Replikationsdaten 615 zu verfeinern. In einer Ausführungsform enthält das sendende Client-Gerät 603 zusätzlich zu dem Encoder 616 auch den Decoder 622; aufgenommene Bilder der Person 605 können mit rekonstruierten Bildern verglichen werden, die aus den Erscheinungsvektoren durch den Decoder 622 innerhalb des sendenden Client-Geräts 603 erzeugt wurden. Die Replikationsdaten 615 werden dann geändert, um Unterschiede zwischen den rekonstruierten Bildern, die in dem sendenden Client-Gerät erzeugt wurden, und den erfassten Bildern zu reduzieren. In einer anderen Ausführungsform werden die Replikationsdaten 615 von der Anbieterumgebung 506 geändert, wenn die erfassten Bilder ebenfalls verfügbar sind und die Anbieterumgebung 506 das in 2D gezeigte Trainingsframework GAN 270 implementiert, um ein kontinuierliches oder periodisches Training durchzuführen.
  • Das empfangende Client-Gerät 604 kann die Erscheinungsvektoren und Replikationsdaten 615 über die Kommunikationsschnittstelle 621 empfangen, und der Decoder 622 kann die durch die Erscheinungsvektoren kodierten Bilder entsprechend den Replikationsdaten 615 rekonstruieren. Das empfangende Client-Gerät 604 kann dann die rekonstruierten Bilder über die Anzeige 624 anzeigen. In einer Ausführungsform empfängt/empfangen die empfangende(n) Client-Vorrichtung(en) 604 auch ein oder mehrere Benutzerattribute 612, die ebenfalls die rekonstruierten Bilder beeinflussen. Der Decoder 622 kann mindestens das neuronale Synthesenetzwerk 140, eine Instanz des neuronalen Synthesenetzwerks, die zur Erzeugung der Replikationsdaten 615 trainiert wurde, oder ein anderes neuronales Synthesenetzwerk umfassen.
  • In einer Ausführungsform rekonstruiert das neuronale Synthesenetzwerk 140 hochrealistische 1024x1024-Pixel-Bilder aus einem latenten Code von 512 16-Bit-Gleitkommazahlen. In einer anderen Ausführungsform umfasst der latente Code weniger als 512 Zahlen in einem Fließkomma- oder Ganzzahlformat. Die latenten Codes werden von dem sendenden Client-Gerät 603 an das empfangende Client-Gerät 604 übertragen und zum Synthetisieren eines Video-Streams der Person 605 verwendet. Das Senden der latenten Codes, die 8 Kilobit pro generiertem Frame umfassen, bei 30 oder 60 FPS entspricht 240 oder 480 Kbps - ein Bruchteil der Bandbreite, die normalerweise für einen Megapixel-Video-Stream benötigt wird.
  • 6B veranschaulicht eine Vielzahl von Erscheinungsvektoren zur Verwendung bei der Implementierung einiger Ausführungsformen der Erfindung. Die Eingabedaten können ein Bild 606, Audio 607, eine Blickrichtung, eine Blickposition und andere Arten von von den Eingabevorrichtungen 560 erfassten Daten sein. Der Encoder 616 verarbeitet die Eingabedaten, um einen Erscheinungsvektor zu erzeugen. Die Erscheinungsvektoren kodieren Attribute der Eingabedaten und sind eine komprimierte Repräsentation der Eingabedaten. In einer Ausführungsform enthält der Erscheinungsvektor mindestens einen abstrakten latenten Code 610 (z.B. intermediärer latenter Code), einen Satz von (Gesichts-) Orientierungspunkten 611, einen Satz von FACS-Koeffizienten 613, oder einen Vektor, der das Aussehen des Gesichts in einem gelernten Merkmalseinbettungsraum repräsentiert.
  • 6C veranschaulicht ein Flussdiagramm eines Verfahrens 650 zur GANunterstützten Videokompression, gemäß einer Ausführungsform. Jeder Block des hierin beschriebenen Verfahrens 650 umfasst einen Rechenprozess, der unter Verwendung 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 650 kann auch als computerverwendbare Anweisungen, die auf Computerspeichermedien gespeichert sind, verkörpert sein. 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 650 beispielhaft in Bezug auf das System von 6A beschrieben. Dieses Verfahren kann jedoch zusätzlich oder alternativ von einem beliebigen System oder einer beliebigen Kombination von Systemen ausgeführt werden, einschließlich der, aber nicht beschränkt auf die, hierin beschriebenen Systeme. Darüber versteht sich für den Fachmann, dass jedes beliebige System, das das Verfahren 650 ausführt, in den Rahmen und die Idee der Ausführungsformen der Erfindung fällt.
  • In Schritt 655 werden Replikationsdaten 615, die für ein erstes Subjekt spezifisch sind, übertragen, um ein entferntes neuronales Synthesenetzwerk so zu konfigurieren, dass es ein Bild eines Gesichts einschließlich von Merkmalen basierend auf den Replikationsdaten 615 rekonstruiert. In einer Ausführungsform befindet sich das entfernte neuronale Synthesenetzwerk innerhalb eines Client-Geräts, wie z.B. dem/den empfangenden Client-Gerät(en) 604. In einer Ausführungsform umfasst das entfernte neuronale Synthesenetzwerk den Decoder 622.
  • In Schritt 660 verarbeitet ein erzeugendes bzw. generierendes neuronales Netzwerk ein aufgenommenes Bild des ersten Subjekts oder eines zweiten Subjekts, um einen Erscheinungsvektor zu erzeugen, der Attribute eines Gesichts des ersten Subjekts oder des zweiten Subjekts kodiert. Das erste und das zweite Subjekt können jedes eine reale oder synthetische bzw. künstliche Figur sein, einschließlich Menschen und/oder computergenerierte Avatare wie beispielsweise Menschen, Tiere, Kreaturen usw. In einer Ausführungsform umfasst das neuronale Generatornetzwerk ein neuronales Mappingnetzwerk, wie beispielsweise das neuronale Mappingnetzwerk 110. In einer Ausführungsform umfasst das neuronale Generatornetzwerk ein neuronales Mappingnetzwerk und ein neuronales Synthesenetzwerk. In einer Ausführungsform wird der abstrakte latente Code durch das neuronale Synthesenetzwerk verarbeitet, um ein vorhergesagtes Bild des Gesichts der ersten Person zu erzeugen. In einer Ausführungsform wird das neuronale Generatornetzwerk trainiert, um ein vorhergesagtes Bild des ersten Subjekts zu erzeugen, das mit dem erfassten Bild des ersten Subjekts verglichen wird, um die Replikationsdaten 615 zu lernen. In einer Ausführungsform wird das vorhergesagte Bild mit dem erfassten Bild verglichen und werden die Parameter des neuronalen Generatornetzwerks aktualisiert, um die Unterschiede zwischen dem vorhergesagten Bild und dem erfassten Bild zu verringern. In einer Ausführungsform wird der abstrakte latente Code basierend auf den Unterschieden inkrementell aktualisiert und durch das neuronale Synthesenetz verarbeitet, um ein nachfolgendes Bild des Gesichts vorherzusagen.
  • In einer Ausführungsform umfassen die Attribute die Kopfpose und den Gesichtsausdruck. In einer Ausführungsform ist der Erscheinungsvektor eine komprimierte Kodierung des Gesichts. In einer Ausführungsform umfasst der Erscheinungsvektor einen abstrakten latenten Code, wie beispielsweise den latenten Zwischencode und/oder ein oder mehrere Stilsignale. In einer Ausführungsform kodiert der Erscheinungsvektor mindestens ein zusätzliches Attribut, das der Kleidung, der Frisur oder der Beleuchtung zugeordnet ist. Das mindestens eine zusätzliche Attribut kann von den erfassten Bildern oder einem Sensor abgeleitet werden. In einer Ausführungsform umfasst der Erscheinungsvektor einen latenten Code aus 512 16-Bit-Gleitkom mazahlen .
  • In einer Ausführungsform umfasst der Erscheinungsvektor ferner Attribute eines zusätzlichen Teils des ersten Subjekts oder des zweiten Subjekts, und ist das entfernte neuronale Synthesenetzwerk ferner so konfiguriert, dass es das Bild rekonstruiert, um den zusätzlichen Teil einzubeziehen. Der zusätzliche Teil kann mindestens eine Schulter, einen Hals, einen Arm oder eine Hand umfassen.
  • In einer Ausführungsform werden Gesichtsorientierungspunkte in dem aufgenommenen Bild erkannt und zur Erzeugung des Erscheinungsvektors verwendet. In einer Ausführungsform wird der abstrakte latente Code durch Transformieren von Gesichtsorientierungspunkten gemäß einer gelernten oder optimierten Matrix berechnet. In einer Ausführungsform wird die optimierte Matrix durch ein neuronales Netzwerk implementiert, das die optimierte Matrix lernt. In einer Ausführungsform wird der abstrakte latente Code mit einem vorhergesagten abstrakten latenten Code verglichen, der durch die Transformation von Gesichtsorientierungspunkten gemäß einer gelernten oder optimierten Matrix berechnet wird. Die Matrix wird aktualisiert, um Unterschiede zwischen dem abstrakten latenten Code und dem vorhergesagten abstrakten latenten Code zu reduzieren. In einer Ausführungsform wird der abstrakte latente Code von einem neuronalen Synthesenetzwerk verarbeitet, um ein vorhergesagtes Bild des Gesichts des ersten Subjekts zu erzeugen, das wird vorhergesagte Bild mit dem erfassten Bild verglichen und wird die Matrix aktualisiert, um Unterschiede zwischen dem vorhergesagten Bild und dem erfassten Bild zu verringern. In einer Ausführungsform umfasst das neuronale Generatornetzwerk ein abbildendes neuronales Netzwerk, und werden die in dem erfassten Bild detektierten Gesichtsorientierungspunkte in das abbildende neuronale Netzwerk eingegeben, um den abstrakten latenten Code zu berechnen. In einer Ausführungsform wird das vorhergesagte Bild, das mit den Gesichtsorientierungspunkten gepaart ist, mit dem erfassten Bild, das mit den Gesichtsorientierungspunkten gepaart ist, verglichen, um Unterschiede und Parameter des neuronalen Generatornetzwerks zu erzeugen, die aktualisiert sind, um die Unterschiede zu verringern.
  • In Schritt 670 wird der Erscheinungsvektor an das entfernte neuronale Synthesenetzwerk übertragen. In einer Ausführungsform wird der Erscheinungsvektor während einer Videokonferenzsitzung an das entfernte neuronale Synthesenetzwerk übertragen. In einer Ausführungsform ist das erfasste Bild ein Frame bzw. Einzelbild eines Videos und ist das neuronale Generatornetzwerk so konfiguriert, dass es für jedes zusätzliche Einzelbild des Videos, das zusätzlichen erfassten Bildern entspricht, Werte für die Einstellung des Erscheinungsvektors erzeugt.
  • 6D veranschaulicht ein Flussdiagramm eines Verfahrens 675 zur GANgestützten Videorekonstruktion, gemäß einer Ausführungsform. In Schritt 680 werden für ein Subjekt spezifische Replikationsdaten 615 zur Konfiguration eines neuronalen Synthesenetzwerks erhalten. In einer Ausführungsform umfasst der Decoder 622 das neuronale Synthesenetzwerk. Das Subjekt kann ein reales oder synthetisches Subjekt sein. In einer Ausführungsform umfassen die Replikationsdaten 615 Gewichte, die während des Trainings des neuronalen Synthesenetzwerks gelernt wurden.
  • In Schritt 685 wird ein Erscheinungsvektor empfangen, der Attribute eines menschlichen Gesichts kodiert, das in einem Videobild erfasst wurde. In einer Ausführungsform ist das menschliche Gesicht ein Gesicht der Person 605. In einer anderen Ausführungsform ist das menschliche Gesicht nicht das Gesicht der Person 605. Beispielsweise können die Replikationsdaten 615 Merkmale eines Subjekts, wie z.B. eines Elfen-Avatars, repräsentieren. Während einer Videokonferenzsitzung werden die Erscheinungsvektoren durch den Decoder 622 verarbeitet, um ein Bild des menschlichen Gesichts der Person 605 zu rekonstruieren, das die durch die Replikationsdaten 615 definierten Merkmale enthält. Mit anderen Worten sieht ein Betrachter der rekonstruierten Bilder auf der Anzeige 624 einen Elfen-Avatar mit Ausdrücken und Posen, die mit denen der Person 605 übereinstimmen.
  • In einer Ausführungsform ist der Erscheinungsvektor eine komprimierte Kodierung des menschlichen Gesichts der Person 605. In einer Ausführungsform werden für jeden zusätzlichen Frame des Videos Anpassungswerte für den Erscheinungsvektor empfangen. In einer Ausführungsform wird jede Anpassung des Erscheinungsvektors sukzessive auf den Erscheinungsvektor angewendet, um zusätzliche Bilder des menschlichen Gesichts für jeden zusätzlichen Frame des Videos, das die Merkmale enthält, zu rekonstruieren.
  • In Schritt 690 verarbeitet das neuronale Synthesenetzwerk den Erscheinungsvektor, um ein Bild des menschlichen Gesichts zu rekonstruieren, das die durch die Replikationsdaten definierten Merkmale enthält. In einer Ausführungsform wird das rekonstruierte Bild des menschlichen Gesichts in einer Betrachtungsumgebung angezeigt, wobei das neuronale Synthesenetzwerk das Bild entsprechend der Beleuchtung in der Betrachtungsumgebung rekonstruiert. Anstatt beispielsweise ein Beleuchtungsattribut zu verwenden, das in dem Erscheinungsvektor und/oder den Replikationsdaten 615 kodiert ist, rekonstruiert das neuronale Synthesenetzwerk das Bild basierend auf der Beleuchtung in der Umgebung, in der die rekonstruierten Bilder angezeigt werden. In einer Ausführungsform können die Beleuchtung oder andere Informationen von einem Sensor bereitgestellt werden.
  • 7A ist ein konzeptionelles Diagramm einer Trainingskonfiguration für ein neuronales Synthesenetzwerk, einschließlich eines Projektors 700, zur Verwendung bei der Implementierung einiger Ausführungsformen der Erfindung. In einer Ausführungsform werden ein Encoder 710 und ein neuronales Synthesenetzwerk 715 in Übereinstimmung mit einer GAN-Zielsetzung unter Verwendung der in 2D gezeigten Konfiguration des erzeugenden gegnerischen Netzwerks 270 trainiert, um Erscheinungsvektoren für Bilder zu erzeugen bzw. die Bilder zu rekonstruieren. Das neuronale Synthesenetzwerk 715 und der Encoder 710 können dann gemeinsam unter Verwendung der in 7A gezeigten Konfiguration trainiert werden. Der trainierte Encoder 710 und das neuronale Synthesenetzwerk 715 können als Encoder 616 bzw. Decoder 622 zur Verwendung während Echtzeit-Videokonferenzen eingesetzt werden.
  • In einer Ausführungsform ist der Projektor 700 innerhalb des sendenden Client-Geräts 603 implementiert und wird verwendet, um die Qualität der von dem sendenden Client-Gerät 603 erzeugten Erscheinungsvektoren zu verbessern. Der Projektor 700 ahmt den Betrieb des/der empfangenden Client-Geräte(s) 604 nach, indem er das neuronale Synthesenetzwerk 715 enthält. Der Decoder 622 kann eine Instanz des neuronalen Synthesenetzwerks 715 sein. Wie zuvor beschrieben wurde, kann der Encoder 616 eine Projektion durchführen, um jedes erfasste Bild der Person 605 abzubilden und einen Erscheinungsvektor zu erzeugen. Das neuronale Synthesenetzwerk 715 rekonstruiert ein vorhergesagtes Bild 720 aus dem Erscheinungsvektor.
  • Eine Trainingsverlusteinheit 725 vergleicht die vorhergesagten Bilder 720 mit den entsprechenden erfassten Bildern 705, um Unterschiede zwischen den vorhergesagten Bildern 720 und den erfassten Bildern 705 zu identifizieren. In einer Ausführungsform kann die Trainingsverlusteinheit 725 ein Verfahren zur erlernten wahrnehmungsbezogenen Bildfeldähnlichkeit (LPIPS) verwenden, um die Unterschiede in den Pixelwerten zwischen entsprechenden Bildfeldern zu identifizieren. Die Trainingsverlusteinheit 725 aktualisiert Parameter (z.B. Gewichte) des Encoders 710, um Unterschiede zwischen den vorhergesagten Bildern 720 und den erfassten Bildern 705 zu verringern. In einer Ausführungsform ist die Trainingsverlusteinheit 720 so konfiguriert, dass sie die von dem neuronalen Synthesenetzwerk 715 verwendeten Parameter aktualisiert, wodurch die Replikationsdaten 615 für das Objekt in dem erfassten Bild aktualisiert werden.
  • Wenn der Decoder 622 in dem/den empfangenden Client-Gerät(en) 604 während der Inferenzierung Bilder auf der Grundlage von Erscheinungsvektoren, die von dem sendenden Client-Gerät 603 empfangen wurden, rekonstruiert, kann das sendende Client-Gerät 603 den Projektor 700 weiter betreiben, um die Leistung des Encoders 710 und/oder des neuronalen Synthesenetzwerks 715 kontinuierlich zu verbessern. Auf diese Weise kann der Kodierer 710 und/oder das neuronale Synthesenetzwerk 715 während der Inferenzierung „trainiert“ werden, indem viel mehr aufgenommene Bilder mit einer größeren Anzahl unterschiedlicher Attribute verwendet werden. Das fortgesetzte Aktualisieren nur der Parameter des neuronalen Synthesenetzwerks 715 innerhalb des Encoders 710 hat keinen Einfluss auf die Qualität der Erscheinungsvektoren. Das sendende Client-Gerät 603 kann so konfiguriert sein, dass es die Replikationsdaten 615 und/oder die Parameter des Decoders 622 aktualisiert, wenn sich die Leistung des neuronalen Synthesenetzwerks 715 verbessert, so dass sich auch die Leistung des Decoders 622 verbessern kann.
  • Anstatt eine Projektion durchzuführen, um jedes erfasste Bild 705 abzubilden und einen Erscheinungsvektor zu erzeugen, führt der Encoder 710 stattdessen zunächst eine Projektion durch, um einen ersten Erscheinungsvektor für ein erstes erfasstes Bild zu erzeugen. Nach dem ersten erfassten Bild kann der Encoder 710 den ersten Erscheinungsvektor als eine Eingabe verwenden, um daraus einen zweiten Erscheinungsvektor zu erzeugen. Wenn der Projektionsvorgang rechenintensiv ist, kann die Vorhersage des Erscheinungsvektors aus dem vorherigen Erscheinungsvektor rechnerisch effizient sein und eine Echtzeitleistung ermöglichen. Die Verwendung des vorherigen Erscheinungsvektors zur Durchführung einer inkrementellen Projektion kann die Leistung in Bezug auf die Berechnungsgeschwindigkeit und die Bildqualität verbessern, da benachbarte Videobilder oft ähnlich sind. Anstatt an einem beliebigen Punkt im latenten Raum zu beginnen, beginnt die Projektionsoperation mit dem latenten Vektor, der durch den Projektionsalgorithmus für das vorherige Bild erzeugt wurde. Der Encoder 710 führt effektiv eine lokale Suche anstelle einer globalen Suche durch, um die nachfolgenden Erscheinungsvektoren zu erzeugen. Die inkrementelle Projektion kann auch ein zeitlich kohärenteres resultierendes Video erzeugen, wodurch Flimmern oder Framezu-Frame-Verzerrungen reduziert werden, die durch unterschiedliche Auswahlen bei der globalen Suche verursacht werden, die zu unterschiedlichen, nahezu äquivalenten Punkten im latenten Raum für jeden Frame führen.
  • In einer Ausführungsform erzeugt der Projektor 700 Korrekturdaten für jeden Erscheinungsvektor, wobei die Korrekturdaten auf der Grundlage eines Vergleichs zwischen dem vorhergesagten Bild 720 und dem erfassten Bild 705 berechnet werden. Das vorhergesagte Bild 720 kann als zusätzliches Makroblock-Vorhersageschema verwendet werden, das einem herkömmlichen Encoder, wie z.B. dem Encoder für das H.265-Format (HEVC = High Efficiency Video Coding), zur Verfügung steht. In einer Ausführungsform, wenn das empfangende Client-Gerät 604 nur konventionell videocodierte Daten unterstützt, kann das sendende Client-Gerät 603 konventionell kodierte Videodaten erzeugen, die von dem empfangenden Client-Gerät 604 decodiert werden können.
  • In einer Ausführungsform kann dann, wenn eine signifikante Änderung in dem erfassten Bild im Vergleich zu einem zuvor erfassten Bild auftritt, eine Projektionsoperation durchgeführt werden, um einen anderen Erscheinungsvektor für das aufgenommene Bild abzubilden und dann die inkrementellen Projektionen wieder aufzunehmen. Es kann eine Konfidenzmetrik berechnet werden, um zu bestimmen, wann die signifikante Änderung auftritt. Die Konfidenzmetrik kann z.B. eine Anzahl von Pixeln angeben, die in dem erfassten Bild im Vergleich zum vorangehenden Bild geändert wurden. Der Projektionsvorgang kann eingeleitet werden, wenn die Konfidenzmetrik größer als ein Schwellenwert ist. In einer anderen Ausführungsform kann die Konfidenzmetrik für vorhergesagte Bilder oder den Vergleich entsprechender vorhergesagter und erfasster Bilder ausgewertet werden. In einer Ausführungsform kann das empfangende Client-Gerät 604 (z.B. das entfernte neuronale Synthesenetzwerk) einen durch die Projektionsoperation erzeugten Erscheinungsvektor anfordern. Das Client-Gerät 604 kann die Anfrage basierend auf der Auswertung einer für rekonstruierte Bilder berechneten Vertrauensmetrik initiieren.
  • 7B ist ein konzeptionelles Diagramm eines End-to-End-Systems 730, das den Projektor 700 aus 7A enthält, zur Verwendung bei der Implementierung einiger Ausführungsformen der Erfindung. Das System 730 umfasst mindestens ein sendendes Client-Gerät 603 und ein empfangendes Client-Gerät 604. Der Kodierer 710 befindet sich in der sendenden Client-Vorrichtung 603 und erzeugt die Erscheinungsvektoren, die über das/die Netzwerk(e) 504 an den Decoder 722 in der empfangenden Client-Vorrichtung 604 übertragen werden. Der Decoder 722 kann eine Instanz des neuronalen Synthesenetzwerks 715 sein. Der Decoder 722 verarbeitet die Erscheinungsvektoren gemäß den Replikationsdaten, um rekonstruierte Bilder 712 zu erzeugen. Die rekonstruierten Bilder 712 können dann einem Betrachter auf der Anzeige 624 angezeigt werden. Die Replikationsdaten können von der Person in den aufgenommenen Bildern 705 oder vom Betrachter ausgewählt werden.
  • 7C ist ein konzeptionelles Diagramm einer Konfiguration zur Erzeugung von Trainingsdaten zur Verwendung bei der Implementierung einiger Ausführungsformen der Erfindung. Eine Alternative zur Verwendung der Projektion zur Erzeugung eines latenten Codes ist die Umwandlung von Gesichtsorientierungspunkten in einen latenten Code unter Verwendung einer Matrix oder eines neuronalen Netzwerks. Wenn Gesichtsorientierungspunkte verwendet werden, werden die Parameter der Matrix oder die Gewichte des neuronalen Netzwerks mit Hilfe von Trainingsdaten für Orientierungspunkte gelernt. Die Gesichtsorientierungspunkte können von einem Orientierungspunktdetektor 735 aus den aufgenommenen Bildern extrahiert werden, um Orientierungspunkt-Trainingsdaten zu erzeugen. Der Orientierungspunktdetektor 735 kann mit herkömmlichen Computer-Vision-Techniken oder neuronalen Analysetechniken implementiert sein. Die Gesichtsorientierungspunkte beschreiben die Position von Schlüsselpunkten im Gesicht (Ränder der Augenlider und Lippen, Mitte der Pupillen, Nasenrücken usw.) und erfassen die wichtigsten Bewegungen und Verformungen eines Gesichts. Der Orientierungspunktdetektor 735 kann verwendet werden, um andere Arten von Orientierungspunkten zu erkennen, einschließlich Gesichtsorientierungspunkten, die nicht auf den Bildraum beschränkt sind. Die Orientierungspunkte können zum Beispiel ein Satz von Koeffizienten sein, die zum Facial Action Coding System (FACS) gehören, andere Attribute des Gesichtsaussehens oder ein Vektor, der das Erscheinungsbild des Gesichts in einem gelernten Merkmalseinbettungsraum repräsentiert. FACS definiert einen Satz von Gesichtsmuskelbewegungen, die einer angezeigten Emotion entsprechen.
  • Die extrahierten Gesichtsorientierungspunkte können als Erscheinungsvektoren verwendet werden, zur Erzeugung der Erscheinungsvektoren verwendet werden oder getrennt von den Erscheinungsvektoren bereitgestellt werden. Im Allgemeinen können verschiedene Trainingsdatensätze verwendet werden, um Replikationsdaten für verschiedene Personen (real und synthetisch) zu erzeugen. Darüber hinaus können verschiedene Sätze von Trainingsdaten verwendet werden, um verschiedene Replikationsdaten für dasselbe Subjekt zu erzeugen, wobei Attribute, die von Tag zu Tag oder von Sitzung zu Sitzung variieren, wie z.B. die Kleidung einer Person, die Frisur und Variationen aufgrund von Make-up, Beleuchtung usw., für jede Replikationsdaten spezifisch sind.
  • 7D ist ein konzeptionelles Diagramm einer Trainingskonfiguration, die Gesichtsorientierungspunkte zur Vorhersage von Erscheinungsvektoren verwendet, zur Verwendung bei der Implementierung einiger Ausführungsformen der Erfindung.
  • In einer Ausführungsform wird eine lineare Regression verwendet, um eine Matrix zu erlernen oder zu optimieren, die den Vektor der Gesichtsorientierungspunkte in einen Erscheinungsvektor (z.B. einen latenten Codevektor) transformiert. Die Verwendung von Gesichtsorientierungspunkten zum Erzeugen von Erscheinungsvektoren kann im Vergleich zur Projektion der erfassten Bilder zum Erzeugen der Erscheinungsvektoren robuster gegenüber Abweichungen zwischen Trainingsbildern und in Echtzeit aufgenommenen Bildern (unterschiedliche Frisur, unterschiedliche Kleidung usw.) sein.
  • Die Orientierungspunkt-Trainingsdaten werden durch eine Regressionsmatrix 740 in den Latenzraum transformiert, der mit einem neuronalen Synthesenetzwerk oder Decoder 722 in einem empfangenden Client-Gerät 604 verbunden ist. Insbesondere werden die Gesichtsorientierungspunkte für jedes Trainingsbild gemäß der Regressionsmatrix oder einem neuronalen Netzwerk übersetzt, um vorhergesagte Erscheinungsvektoren zu erzeugen. Eine Trainingsverlusteinheit 745 vergleicht die von dem trainierten Encoder 710 erzeugten projizierten Erscheinungsvektoren mit den vorhergesagten Erscheinungsvektoren und aktualisiert die Parameter der Regressionsmatrix, um die Unterschiede zwischen den projizierten und den vorhergesagten Erscheinungsvektoren zu verringern.
  • 7E ist ein konzeptionelles Diagramm eines End-to-End-Systems 750 zur Verwendung bei der Implementierung einiger Ausführungsformen der Erfindung. Das System 750 umfasst mindestens ein sendendes Client-Gerät 603 und ein empfangendes Client-Gerät 604. Der Orientierungspunktdetektor 735 befindet sich in der sendenden Client-Vorrichtung 603 und erzeugt die Erscheinungsvektoren, die über das/die Netzwerk(e) 504 an den Decoder 722 in der empfangenden Client-Vorrichtung 604 übertragen werden. Der Decoder 722 kann eine Instanz des neuronalen Synthesenetzwerks 715 sein. Der Decoder 722 verarbeitet die Erscheinungsvektoren gemäß den Replikationsdaten, um rekonstruierte Bilder 712 zu erzeugen. Die rekonstruierten Bilder 712 können dann einem Betrachter auf der Anzeige 624 angezeigt werden. Die Replikationsdaten können von der Person in den aufgenommenen Bildern 705 oder vom Betrachter ausgewählt werden.
  • In einer Ausführungsform kann das sendende Client-Gerät 603 statt der Übertragung der Erscheinungsvektoren an den Decoder 722 stattdessen die erkannten Orientierungspunkte für jedes aufgenommene Bild übertragen. In einer solchen Ausführungsform ist die Regressionsmatrix 740 in dem empfangenden Client-Gerät 604 enthalten und verarbeitet die erfassten Orientierungspunkte, um die Erscheinungsvektoren in dem empfangenden Client-Gerät 604 zu erzeugen. Die von der Regressionsmatrix 740 verwendeten Parameter, die während des Trainings gelernt wurden, können dem empfangenden Client-Gerät 604 zusammen mit den Replikationsdaten bereitgestellt werden.
  • Konventionelle Komprimierungstechniken können auf den Erscheinungsvektor angewendet werden, z.B. durch Quantisierung und Delta-Codierung der Koordinaten von Gesichtsmerkmalen. In einer Ausführungsform können dann, wenn detektierte Orientierungspunkte zur Erzeugung der Erscheinungsvektoren verwendet werden, Replikationsdaten auch zur Kontrolle von Merkmalen der rekonstruierten Bilder im Vergleich zu Merkmalen der Person in den aufgenommenen Bildern verwendet werden. Attribute der rekonstruierten menschlichen Person, wie z.B. Frisur, Kleidung und/oder Beleuchtung, können mit dem Erscheinungsvektor oder mit den Replikationsdaten (z.B. Filter) versehen werden.
  • Da ein Satz von Orientierungspunkt-Trainingsdaten auf viele verschiedene vorhergesagte Erscheinungsvektoren gleich gut projiziert oder transformiert werden kann, kann die Regressionsmatrix, die durch die Regressionsmatrix 740 während des Trainings gelernt wird, einen großen „Nullraum“ in algebraischer Hinsicht haben. Mit anderen Worten kann es viele Regionen des hochdimensionalen Latenzraums geben, aus denen ein rekonstruiertes Bild erzeugt werden kann, das gut auf die Orientierungspunkt-Trainingsdaten abbildet. Allerdings können die rekonstruierten Bilder manchmal nicht mit den aufgenommenen Bildern übereinstimmen, was zu zeitlichen Artefakten führt. Die zeitlichen Artefakte können sich z.B. als subtiles, aber auffälliges Flimmern oder seltsame ruckartige Verzerrungen in der vom Empfänger betrachteten Animation äußern. Die Qualität der rekonstruierten Bilder kann durch direktes Lernen der Regressionsmatrix verbessert werden, um die Zuordnung der Gesichtsorientierungspunkte bzw. Gesichtsmerkmale zum Latenzraum zu verbessern.
  • 8A ist ein konzeptionelles Diagramm einer End-to-End-Systemtrainingskonfiguration 800 zur Verwendung bei der Implementierung einiger Ausführungsformen der Erfindung. Das neuronale Synthesenetzwerk 715 kann zunächst mit einer GAN-Zielsetzung unter Verwendung der in 2D gezeigten Konfiguration des erzeugenden gegnerischen Netzwerks 270 trainiert werden, um Erscheinungsvektoren für Bilder zu erzeugen bzw. die Bilder zu rekonstruieren. In der Konfiguration 800 wird dann die Regressionsmatrix 740 gemeinsam mit dem neuronalen Synthesenetzwerk 715 trainiert, um Erscheinungsvektoren für Bilder vorherzusagen bzw. die Bilder zu rekonstruieren. Die Konfiguration 800 kann verwendet werden, um eine End-to-End-Regression zur Umwandlung von Gesichtsorientierungspunkten in die Erscheinungsvektoren durchzuführen. Die trainierte Regressionsmatrix 740 und das neuronale Synthesenetzwerk 715 können als Encoder 710 bzw. Decoder 722 für die Verwendung bei Echtzeit-Videokonferenzen eingesetzt werden.
  • Eine Trainingsverlusteinheit 825 vergleicht die rekonstruierten Bilder mit den Bildtrainingsdaten, um Unterschiede zwischen den rekonstruierten Bildern und den Bildtrainingsdaten zu identifizieren. In einer Ausführungsform kann die Trainingsverlusteinheit 825 eine LPIPS-Technik verwenden, um die Unterschiede zu identifizieren. Die Trainingsverlusteinheit 825 aktualisiert Parameter der Regressionsmatrix 740, um Unterschiede zwischen den rekonstruierten Bildern und den Bildtrainingsdaten zu reduzieren. In einer Ausführungsform ist die Trainingsverlusteinheit 825 so konfiguriert, dass sie die von dem neuronalen Synthesenetzwerk 715 verwendeten Parameter aktualisiert, wodurch die Replikationsdaten für das Objekt in dem erfassten Bild aktualisiert werden.
  • 8B ist ein konzeptionelles Diagramm einer End-to-End-Systemtrainingskonfiguration 850 zur Verwendung bei der Implementierung einiger Ausführungsformen der Erfindung. Die Konfiguration 850 kann dazu verwendet werden, gemeinsam einen Encoder 716, um Gesichtsorientierungspunkte in die Erscheinungsvektoren umzuwandeln, und das neuronale Synthesenetzwerk 715 zu trainieren, unter Verwendung einer bedingten GAN-Zielsetzung. Die in 2D gezeigte Konfiguration des erzeugenden gegnerischen Netzwerks 270 kann mit dem Encoder 716 und dem neuronalen Synthesenetzwerk 715 verwendet werden, um Erscheinungsvektoren für Bilder vorherzusagen bzw. die Bilder zu rekonstruieren. Das neuronale Diskriminatornetzwerk 875 bestimmt, ob die rekonstruierten Bilder, die mit den Orientierungspunkt-Trainingsdaten gepaart sind, die auch in den Encoder eingegeben werden, den Bild-Trainingsdaten, die mit den richtigen Orientierungspunkten gepaart sind, ähnlich sind. Basierend auf der Bestimmung passt eine Trainingsverlusteinheit 835 die Parameter des Diskriminators 875, des neuronalen Synthesenetzwerks 715 und/oder des Encoders 716 an. Sobald das neuronale Synthesenetzwerk 715 mit der bedingten GAN-Zielsetzung trainiert ist, kann/können der Encoder 716 und/oder das neuronale Synthesenetzwerk 715 während einer Echtzeit-Videokonferenz verwendet werden. Der trainierte Encoder 716 und das neuronale Synthesenetzwerk 715 können als Encoder 616 bzw. Decoder 622 eingesetzt werden.
  • In einer Ausführungsform ist das neuronale Synthesenetzwerk 715 so konfiguriert, dass es in jedem rekonstruierten Bild einen Vordergrundteil erzeugt, der von einem Hintergrundteil getrennt ist. Der Vordergrundteil umfasst mindestens den Gesichtsteil des rekonstruierten Bilds und kann auch die Schultern und andere Körperteile der Person enthalten, die in den aufgenommenen Bildern erscheinen. Das neuronale Synthesenetzwerk 715 kann auch so konfiguriert sein, dass es eine Alphamaske (Kanal) oder Matte erzeugt, die die getrennten Vordergrund- und Hintergrundteile anzeigt. In einer Ausführungsform können die empfangenden Client-Geräte 604 die Vordergrundteile der rekonstruierten Bilder von Kopf und Gesicht auf beliebige Hintergründe zusammensetzen oder die Hintergrundteile entweder modifizieren oder ganz entfernen.
  • Während des Trainings können der Vordergrundteil und die Alphamaske für jedes rekonstruierte Bild zufällig in Bezug auf den Hintergrundteil verschoben werden, bevor sie zusammengesetzt werden, um das rekonstruierte Bild zu erzeugen, das das neuronale Diskriminatornetzwerk 875 empfängt und auf Realismus bewertet. Dadurch wird das neuronale Netzwerk 715 für die Synthese trainiert, um hochwertige Alphamasken zu erzeugen. Die relativen Verschiebungen (über die Verschiebung) sind eine einfache und robuste Technik, um das neuronale Diskriminatornetzwerk 875 zu veranlassen, eine hohe Realitätsbewertung zuzuweisen, nachdem die zufällig verschobenen Teile zusammengesetzt wurden. Die relativen Verschiebungen können auch die Fähigkeit des Encoders 716 und/oder des neuronalen Synthesenetzwerks 715 (z.B. des neuronalen Generatornetzwerks) verbessern, die Hintergrund-, Posen- und Texturattribute der rekonstruierten Bilder zu entwirren und die Nützlichkeit des neuronalen Generatornetzwerks zu verbessern. Ähnliche Techniken können verwendet werden, um das neuronale Netzwerk 715 zu veranlassen, andere Aspekte der in den Bildern erfassten Person 605 zu segmentieren und zusammenzusetzen, wie z.B. Kleidung oder Hände und Arme, die bei Gesten verwendet werden.
  • In einer Ausführungsform ist der Encoder 616, 710 oder 716 so konfiguriert, dass er zumindest das Gesicht in dem erfassten Bild von den Hintergrundbilddaten (z.B. dem Hintergrundteil) trennt, werden die Hintergrundbilddaten kodiert, und werden die kodierten Hintergrundbilddaten von der sendenden Client-Vorrichtung 603 übertragen, um von der/den empfangenden Client-Vorrichtung(en) 604 mit dem rekonstruierten Bild des menschlichen Gesichts kombiniert zu werden. In einer Ausführungsform werden die Hintergrundbilddaten von der sendenden Client-Vorrichtung 603 für die Übertragung an die empfangende(n) Client-Vorrichtung(en) 604 mit herkömmlichen Techniken komprimiert. In einer Ausführungsform wird die Bandbreite, die für die Übertragung der Hintergrundbilddaten benötigt wird, reduziert, indem das neuronale Synthesenetzwerk 715 in dem sendenden Client-Gerät 603 betrieben wird und Bereiche der Hintergrundbilddaten entfernt werden, die durch den Vordergrundteil des rekonstruierten Bildes verdeckt sind, entsprechend der Alphamaske für das rekonstruierte Bild. Teilweise verdeckte Bereiche des Hintergrundteils können an das/die empfangende(n) Client-Gerät(e) 604 übertragen werden, wenn ein hohes Vertrauen besteht, dass der Hintergrundteil im Vergleich zum vorherigen rekonstruierten Bild verändert ist.
  • In einer Ausführungsform kann die Aufmerksamkeit des neuronalen Diskriminatornetzwerks 875 auf die semantisch kritischen Bereiche des Gesichts, wie z.B. Augen, Mund und Stirn, gerichtet werden. In einer Ausführungsform werden die semantisch wichtigsten Bereiche jedes Trainingsbilds vorhergesagt, z.B. mit Hilfe von handcodierten Heuristiken oder einem Bildsalienznetzwerk, das auf Daten der Verfolgung des menschlichen Blicks trainiert wurde. Die Bildauflösung kann künstlich reduziert oder das Bild anderweitig gestört sein, und zwar außerhalb der semantisch wichtigen Regionen in einigen der Bilder, die in das neuronale Diskriminatornetzwerk 875 eingegeben werden. Eine Änderung der Bereiche außerhalb der semantisch wichtigen Regionen kann dazu führen, dass das neuronale Synthesenetzwerk 715 zusätzliche Kapazität für die Regionen des rekonstruierten Bildes bereitstellt, die für einen menschlichen Betrachter am wichtigsten sein werden.
  • In einer Ausführungsform werden Audiodaten in die Trainingskonfigurationen für das neuronale Generatornetzwerk 800 oder 850 integriert, entweder direkt als Wellenform, Spektrogramm oder ähnliche Low-Level-Darstellung von Audio oder kodiert als Darstellung auf höherer Ebene, z.B. als Phoneme. Wenn die Audiodaten Phoneme sind, können die Phoneme auf ähnliche Weise wie die Gesichtsorientierungspunkte bzw. Gesichtsmerkmale erkannt werden. In einer Ausführungsform lernt das neuronale Diskriminatornetzwerk 875, den Realismus von Gesichtsbildern im Kontext eines Klangs, Phonems oder einer Äußerung, die das Gesicht machen soll, zu beurteilen. Das neuronale Synthesenetzwerk 715 lernt dann, Gesichter zu erzeugen, die gut mit den eingehenden Audiodaten übereinstimmen. Mit anderen Worten, das/die empfangende(n) Client-Gerät(e) empfängt/empfangen Audiodaten, die von dem Decoder 622 verwendet werden können, um das Bild des menschlichen Gesichts zu rekonstruieren.
  • In einer Ausführungsform ist das neuronale Synthesenetzwerk 715 mit Speicher erweitert, um die Audiodaten zu verarbeiten. Das neuronale Synthesenetzwerk 715 kann beispielsweise mit rekurrenten neuronalen Netzwerken (RNNs), Langzeitspeichern (LSTMs) und „Transformer“-Aufmerksamkeitsnetzwerken implementiert sein. Die Integration von Audioverarbeitungsfunktionen kann zur Verbesserung der rekonstruierten Bilder verwendet werden, auch in Situationen, in denen Paketverluste oder die Netzwerkqualität den Video-Stream verschlechtern, die Audiodaten aber erhalten bleiben.
  • In einer Ausführungsform werden die rekonstruierten Bilder verwendet, um die Qualität der rekonstruierten Audiodaten zu verbessern. Der extrem bandbreiteneffiziente Erscheinungsvektorstream kodiert nützliche „Lippenlese“-Informationen (z.B. die Form des Munds, der Zunge, der Wangen, den genauen Moment, in dem sich die Lippen schließen und öffnen, usw. ), um einen schlechten Audiostream zu verbessern. Das neuronale Netzwerk des Generators kann dazu trainiert werden, einen verbesserten, entrauschten, quellen-separierten oder verräumlichten Audiostream auf dem/den empfangenden Client-Gerät(en) 604 zu erzeugen.
  • Die Fähigkeit, Aspekte der Gesichtserscheinung zu steuern, bietet eine Möglichkeit, Attribute der Rekonstruktion zu steuern, wie z.B. die Blickrichtung des rekonstruierten Gesichts basierend auf dem Blick des Betrachters. Ein häufiges Problem bei Videokonferenzen aus der Sicht eines Betrachters ist das Fehlen eines offensichtlichen Augenkontakts. Da die Kamera selten in der Nähe der Augen der Person platziert ist, deren Videobild aufgenommen wird, haben die Gesprächspartner in einer Videokonferenz selten das Gefühl, dass sie Augenkontakt herstellen. Augenkontakt ist ein wichtiges soziales Zeichen für Engagement, und das Fehlen von Augenkontakt wird als ein Grund dafür genannt, dass Menschen persönliche Treffen gegenüber Videokonferenzen bevorzugen. Auch bei Videokonferenzen mit mehreren Personen kann man nicht sagen, wer wen ansieht, zumal das Layout der Videofenster auf den Bildschirmen der einzelnen Teilnehmer unterschiedlich sein kann. Frühere Arbeiten haben sich mit der Neudarstellung von Augen beschäftigt, um ein Gefühl von Augenkontakt zu erzeugen, aber die Manipulation von latenten Codes, Gesichtsorientierungspunkten oder anderen Erscheinungsvektoren, die die Blickposition und/oder -richtung definieren, kann verwendet werden, um den wahrgenommenen Augenkontakt zu erhöhen.
  • Zum Beispiel kann das neuronale Synthesenetzwerk 715 die Augenbrauen und sogar die Kopfrichtung des Subjekts in den rekonstruierten Bildern geringfügig verändern, um unterschiedliche Blickpunkte oder -positionen zu berücksichtigen. Die Modifikationen können mit einem Trainingsprotokoll gekoppelt sein, das das neuronale Synthesenetzwerk 715 dazu anregen soll, die Blickrichtung von anderen Aspekten wie der Gesichtsidentität zu entkoppeln. Da die Rekonstruktion in einem Videokonferenzsystem auf dem/den empfangenden Client-Gerät(en) 604 stattfindet, kann das Videokonferenzsystem lokales Wissen über das Layout der Teilnehmervideos ausnutzen und kann eine Kamera oder ein Sensor des/der empfangenden Client-Gerät(e) 604 eine Blickposition des Betrachters liefern. Die Blickposition ist die Position auf der Anzeige, die von der Blickrichtung des Betrachters geschnitten wird. Der Blick einer Person in einem rekonstruierten Bild, das dem Betrachter angezeigt wird, kann vom Decoder so verändert werden, dass die Person entweder auf eine Stelle zu schauen scheint, an der ein anderes rekonstruiertes Bild angezeigt wird, oder auf die Blickposition des Betrachters. Die Blickposition kann auf ein rekonstruiertes Bild einer sprechenden Person gerichtet sein. Das Konzept der Manipulation des scheinbaren Blicks und der Aufmerksamkeit lässt sich über Videokonferenzen hinaus auf Einstellungen wie Telepräsenz-Avatare verallgemeinern, deren räumliche Beziehung für verschiedene Teilnehmer im Telepräsenzsystem unterschiedlich erscheinen kann.
  • In einer Ausführungsform wird das rekonstruierte Bild des menschlichen Gesichts in einer Betrachtungsumgebung angezeigt, wobei das neuronale Synthesenetzwerk 715 das Bild entsprechend einer Blickposition eines in der Betrachtungsumgebung erfassten Betrachters rekonstruiert. In einer Ausführungsform ist eine Blickrichtung des menschlichen Gesichts in dem Bild in Richtung der Blickposition. In einer Ausführungsform enthält der Erscheinungsvektor eine Blickposition, die einem zweiten Bild entspricht, das von dem menschlichen Gesicht betrachtet wird, und eine Blickrichtung des rekonstruierten Bildes des menschlichen Gesichts in einer Betrachtungsumgebung ist in Richtung des zweiten Bilds, das ebenfalls rekonstruiert und in der Betrachtungsumgebung angezeigt wird.
  • Die Fähigkeit, das Erscheinungsbild des Gesichts während der Rekonstruktion eines Bilds zu verändern, ermöglicht die Änderung der Beleuchtung. Die Beleuchtung kann basierend auf den Replikationsdaten oder Umgebungsdaten von einem Sensor in der Betrachtungsumgebung geändert werden. Die Anpassung der Beleuchtung an die Umgebung kann eine überzeugendere Illusion des Übertragens der Präsenz des Subjekts erzeugen. Bewegungsparallaxe kann darüber hinaus von dem Decoder 622 oder 722 angewendet werden, wenn Augenverfolgungsdaten für den Betrachter verfügbar sind. Im Allgemeinen sind 3D-Inhalte, die in natürlicher Größe dargestellt werden, die die Bewegungsparallaxe des Betrachters berücksichtigen und die Beleuchtung der Umgebung nachahmen, qualitativ überzeugender als ein Bild ohne diese Merkmale.
  • Auf einer höheren Ebene können die soziale Effektivität und der Gesprächsfluss bei Videokonferenzen durch die Einführung asynchroner Unterbrechungen verbessert werden. Videokonferenzen leiden heute unter einem Mangel an Unterbrechungen, weil es schwierig ist, die Aufmerksamkeit des Sprechers zu erhalten oder zu bemerken, wenn eine Person unterbrechen möchte. Außerdem wird der Gesprächsfluss durch jede Unterbrechung stärker gestört, da eine unnatürliche Verzögerung zwischen dem Beginn des Sprechens und dem Hören der Unterbrechung durch die andere Person entsteht. Eine mögliche Lösung für dieses Problem besteht darin, die Wirkung einer Unterbrechung in rekonstruierten Bildern zu modellieren, die einer ersten Person angezeigt werden, wenn diese zu sprechen beginnt, und dabei die Reaktion einer zweiten Person zu antizipieren, die rekonstruierte Bilder der ersten Person auf einem entfernten Client-Gerät betrachtet. Die wichtigste Beobachtung ist, dass es eine soziale Transaktion gibt, die stattfindet, wenn die zweite Person versucht, die erste Person während einer Videokonferenzsitzung zu unterbrechen. Um erfolgreich zu sein, muss die Interaktion jedoch nicht für beide Personen gleich sein.
  • In einer Ausführungsform kann eine Stilmischung durch das neuronale Synthesenetzwerk 715 oder den Decoder 622 oder 722 durchgeführt werden, unter Verwendung von Erscheinungsvektoren, die aus zwei verschiedenen erfassten Bildern erzeugt wurden, um ein rekonstruiertes Bild zu erzeugen. Wie zuvor in Verbindung mit den 1A, 1 B und 2B beschrieben wurde, können die Erscheinungsvektoren in einen Satz von statistischen Parametern umgewandelt werden, die als Stile bezeichnet werden und das neuronale Synthesenetzwerk 715 auf verschiedenen Ebenen einer pyramidalen Hierarchie beeinflussen. Nach dem Training des neuronalen Synthesewerks 715 zur Erzeugung von Bildern von Gesichtern neigen beispielsweise die „groben Stile“, die die Auflösungen 4×4 und 8×8 des Synthesewerks beeinflussen, dazu, High-Level-Aspekte der resultierenden Gesichtsbilder zu steuern, wie z.B. Pose, Geschlecht, Haarlänge, während „mittlere Stile“, die 16×16 und 32×32 beeinflussen, die Gesichtsidentität steuern - was eine bestimmte Person unverwechselbar aussehen lässt, ihren Eltern ähnelt usw.
  • In einer Ausführungsform wird Stilmischung verwendet, um das Aussehen der rekonstruierten Bilder auf subtile Weise zu ändern. Zum Beispiel wird ein Bild, in dem sich die Person 605 schnell bewegt, mit Bewegungsunschärfe aufgenommen, und ein Bild, das aus dem resultierenden Erscheinungsvektor rekonstruiert wird, gibt die Bewegungsunschärfe getreu wieder. Durch Mischen der groben Stile des entsprechenden Erscheinungsvektors jedes Bilds mit den feinen Stilen eines ausgewählten Bilds, das keine Bewegungsunschärfe enthält, können die rekonstruierten Bilder jedoch die Bewegung und die Verformung des Gesichts der Person korrekt erfassen und dabei auch feine Details beibehalten, die scharf und ohne Bewegungsunschärfe erscheinen. Ein ähnliches Mischen von Stilen kann verwendet werden, um Videos zu produzieren, in denen eine Person wacher oder aufmerksamer aussieht, Make-up oder bestimmte Kleidung trägt oder einen bestimmten Ausdruck zeigt.
  • In einer Ausführungsform kann eine Stilmischung durch das neuronale Synthesenetzwerk 715 durchgeführt werden, um bewegungsunscharfe Teile von Bildern durch Kombinieren feiner Stilsteuerungen für ein Standbild mit groben Stilsteuerungen für ein unscharfes Bild zu schärfen. Der Erscheinungsvektor umfasst beispielsweise einen ersten Teil, der einem ersten Bild in dem Video entspricht, in dem das menschliche Gesicht unscharf ist, und einen zweiten Teil, der einem zweiten Bild in dem Video entspricht, in dem das menschliche Gesicht klar definiert ist. Die Verarbeitung durch das neuronale Synthesenetzwerk 715 kombiniert den ersten und den zweiten Teil, um das Bild mit dem klar definierten menschlichen Gesicht zu rekonstruieren, indem der erste Teil zur „Steuerung grober Stile“ und der zweite Teil zur „Steuerung feiner Stile“ verwendet wird. In einem anderen Beispiel rekonstruiert das neuronale Synthesenetzwerk 715 bei einem unscharfen menschlichen Gesicht das Bild mit dem klar definierten menschlichen Gesicht, indem es den Erscheinungsvektor zur Steuerung der groben Stile und die Replikationsdaten zur Steuerung der feinen Stile verwendet.
  • Das Training und der Einsatz der Komponenten des erzeugenden neuronalen Netzwerks zum Codieren und Rekonstruieren von Bildern unter Verwendung von Erscheinungsvektoren, Rekonstruktionsdaten und spezifischen Attributdaten kann ein fesselnderes Videokonferenzerlebnis bereitstellen. Der Erscheinungsvektor liefert die Echtzeitinformationen für Pose, Ausdruck usw. für die rekonstruierten Videobilder, und die Replikationsdaten steuern die zugrunde liegenden Eigenschaften der menschlichen Person bei, deren Abbild übertragen wird. Die Replikationsdaten (z.B. die Gewichte eines trainierten neuronalen Synthesenetzwerks) werden während des Trainings ermittelt und an den Empfänger übertragen. Die Merkmale der menschlichen Person in den für das Training verwendeten Bildern können auf die rekonstruierten Videobilder angewendet werden - selbst wenn eine andere menschliche Person in den aufgenommenen Bildern erscheint, die zur Erzeugung des Erscheinungsvektors verwendet wurden. Attribute der rekonstruierten menschlichen Person, wie z.B. Frisur, Kleidung und/oder Beleuchtung, können mit dem Erscheinungsvektor oder mit den Replikationsdaten bereitgestellt werden). Der scheinbare Blick der rekonstruierten menschlichen Person(en) kann gesteuert werden, z.B. basierend auf der Blickrichtung des Betrachters oder der relativen Position der Bilder von Teilnehmern, die während einer Videokonferenzsitzung angezeigt werden.
  • Das Übertragen der Erscheinungsvektoren mit geringer Bandbreite zum Rekonstruieren der Bilder an entfernten Client-Geräten reduziert die Bandbreite, die für die Bereitstellung der für ein interaktives Videokonferenz-Erlebnis erforderlichen Leistung erforderlich ist. Zeitliches Upsampling kann verwendet werden, um zusätzliche Frames durch Interpolieren zwischen verschiedenen Erscheinungsvektoren zu erzeugen. Herkömmliche Komprimierungstechniken können auf den Erscheinungsvektor und/oder das Hintergrundbild angewendet werden. Audiodaten können übertragen und zur Unterstützung der Rekonstruktion der Videobilder verwendet werden.
  • Es wird angemerkt, dass die hier beschriebenen Techniken in ausführbaren Anweisungen verkörpert sein können, die in einem computer-lesbaren Medium zur Verwendung durch oder in Verbindung mit einer prozessorbasierten Anweisungsausführungsmaschine, einem System, einer Vorrichtung oder einem Gerät gespeichert sind. Für den Fachmann versteht sich, dass für einige Ausführungsformen verschiedene Arten von computer-lesbaren Medien zur Speicherung von Daten beinhaltet sein können. Ein „computer-lesbarer Datenträger“ wie hierin verwendet beinhaltet ein oder mehrere beliebiger geeigneter Medien zur Speicherung der ausführbaren Befehle eines Computerprogramms derart, dass die Anweisungsausführungsmaschine, das System, das die Vorrichtung oder das Gerät die Befehle von dem computer-lesbaren Datenträger lesen (oder abrufen) und die Anweisungen zur Durchführung der beschriebenen Ausführungsformen ausführen kann. Geeignete Speicherformate beinhalten ein oder mehrere eines elektronischen, magnetischen, optischen und elektromagnetischen Formats. Eine nicht erschöpfende Liste konventioneller beispielhafter computer-lesbarer Datenträger beinhaltet: eine portable Computerdiskette; einen Direktzugriffsspeicher (RAM); einen Festwertspeicher (ROM); einen löschbaren programmierbaren Festwertspeicher (EPROM); eine Flash-Speichervorrichtung; und optische Speichervorrichtungen, einschließlich einer portablen Compact Disc (CD), einer portablen digitalen Videodisc (DVD) und dergleichen.
  • Es versteht sich, dass die in den beigefügten Figuren dargestellte Anordnung von Komponenten zu Veranschaulichungszwecken dient und dass andere Anordnungen möglich sind. Beispielsweise können ein oder mehrere der hierin beschriebenen Elemente ganz oder teilweise als eine elektronische Hardwarekomponente realisiert sein. Andere Elemente können in Software, Hardware oder einer Kombination aus Software und Hardware implementiert sein. Außerdem können einige oder alle dieser anderen Elemente kombiniert sein, können einige ganz weggelassen sein, und können zusätzliche Komponenten hinzugefügt sein, während die hier beschriebene Funktionalität noch immer erreicht wird. Folglich kann der hier beschriebene Gegenstand in vielen verschiedenen Variationen verkörpert sein, und wird davon ausgegangen, dass alle solche Variationen in den Geltungsbereich der Ansprüche fallen.
  • Um das Verständnis des hierin beschriebenen Gegenstands zu erleichtern, sind viele Aspekte im Hinblick auf Sequenzen von Aktionen beschrieben. Es versteht sich für den Fachmann, dass die verschiedenen Aktionen durch spezialisierte Schaltungen oder Schaltkreise, durch Programmanweisungen, die von einem oder mehreren Prozessoren ausgeführt werden, oder durch eine Kombination von beidem ausgeführt werden können. Die hierin dargelegte Beschreibung einer beliebigen Sequenz von Aktionen soll nicht implizieren, dass der für die Ausführung dieser Sequenz beschriebenen spezifischen Reihenfolge gefolgt werden muss. Alle hierin beschriebenen Verfahren können in jeder beliebigen geeigneten Reihenfolge durchgeführt werden, sofern es hierin nicht anders angegeben ist oder anderweitig durch Kontext klar im Widerspruch steht.
  • Die Verwendung der Begriffe „ein“ und „ein“ und „der“ und ähnliche Bezugnahmen im Kontext der Beschreibung des Gegenstands (insbesondere im Kontext der folgenden Ansprüche) sind so auszulegen, dass sie sowohl den Singular als auch den Plural abdecken, sofern dies hierin nicht anders angegeben ist oder durch Kontext eindeutig im Widerspruch steht. Die Verwendung des Begriffs „zumindest ein“, gefolgt von einer Liste eines oder mehrerer Elemente (z. B. „zumindest einer von A und B“) ist so auszulegen, dass eines der aufgelisteten Elemente (A oder B) oder eine beliebige Kombination zweier oder mehrerer der aufgelisteten Elemente (A und B) ausgewählt wird, sofern dies hierin nicht anders angegeben ist oder durch Kontext klar im Widerspruch steht. Ferner dient die vorangehende Beschreibung lediglich der Zweck der Veranschaulichung und nicht dem Zweck der Beschränkung dient, da der angestrebte Schutzumfang durch die nachstehenden Ansprüche und deren Äquivalente definiert wird. Die Verwendung beliebiger und aller Beispiele, oder hierin bereitgestellter beispielhafter Formulierungen (z.B. „wie beispielsweise“), dient lediglich der besseren Veranschaulichung des Gegenstands und stellt keine Beschränkung des Schutzumfangs des Gegenstands dar, sofern dies nicht anders beansprucht wird. Die Verwendung des Begriffs „basierend auf“ und anderer ähnlicher Ausdrücke, die eine Bedingung für die Herbeiführung eines Ergebnisses angeben, sowohl in den Ansprüchen als auch in der schriftlichen Beschreibung, soll keine wie auch immer anderen Bedingungen ausschließen, die dieses Ergebnis herbeiführen. Keine Formulierung in der Spezifikation sollte so ausgelegt werden, dass sie ein beliebiges nicht beanspruchtes Element als wesentlich für die praktische Umsetzung der beanspruchten Erfindung anzeigt.

Claims (28)

  1. Computer-implementiertes Verfahren, umfassend: Erlangen von für ein reales oder synthetisches Subjekt spezifischen Replikationsdaten zum Konfigurieren eines neuronalen Synthesenetzwerks; Empfangen eines Erscheinungsvektors, der Attribute eines in einem Videobild aufgenommenen menschlichen Gesichts kodiert; und Verarbeiten des Erscheinungsvektors unter Verwendung des neuronalen Synthesenetzwerks, um ein Bild des menschlichen Gesichts einschließlich von durch die Replikationsdaten definierten Merkmalen zu rekonstruieren.
  2. Computer-implementiertes Verfahren nach Anspruch 1, wobei der Erscheinungsvektor eine komprimierte Kodierung des menschlichen Gesichts ist.
  3. Computer-implementiertes Verfahren nach Anspruch 1 oder 2, ferner umfassend ein Empfangen von Erscheinungsvektor-Einstellwerten für jeden zusätzlichen Frame des Videos.
  4. Computer-implementiertes Verfahren nach Anspruch 3, ferner umfassend ein sukzessives Anwenden jeder Erscheinungsvektoreinstellung auf den Erscheinungsvektor, um zusätzliche Bilder des menschlichen Gesichts einschließlich der Merkmale zu rekonstruieren.
  5. Computer-implementiertes Verfahren nach einem der vorangehenden Ansprüche, wobei die Replikationsdaten durch Trainieren eines neuronalen Generatornetzwerks bestimmt werden, um Bilder des realen oder synthetischen Subjekts zu erzeugen, die mit aufgenommenen Bildern des realen oder synthetischen Subjekts verglichen werden.
  6. Computer-implementiertes Verfahren nach einem der vorangehenden Ansprüche, wobei die Attribute eine Kopfpose und einen Gesichtsausdruck umfassen.
  7. Computer-implementiertes Verfahren nach einem der vorangehenden Ansprüche, wobei der Erscheinungsvektor mindestens ein zusätzliches Attribut kodiert, das Kleidung, einer Frisur oder Beleuchtung zugeordnet ist.
  8. Computer-implementiertes Verfahren nach einem der vorangehenden Ansprüche, ferner umfassend ein Anzeigen des rekonstruierten Bilds des menschlichen Gesichts in einer Betrachtungsumgebung, wobei das neuronale Synthesenetzwerk das Bild in Übereinstimmung mit der Beleuchtung in der Betrachtungsumgebung rekonstruiert.
  9. Computer-implementiertes Verfahren nach einem der vorangehenden Ansprüche, ferner umfassend ein Empfangen kodierter Hintergrundbilddaten, die mit dem rekonstruierten Bild des menschlichen Gesichts kombiniert werden.
  10. Computer-implementiertes Verfahren nach einem der vorangehenden Ansprüche, wobei der Erscheinungsvektor einen abstrakten Latenzcode umfasst.
  11. Computer-implementiertes Verfahren nach Anspruch 10, wobei der abstrakte Latenzcode durch ein entferntes neuronales Mappingnetzwerk berechnet wird.
  12. Computer-implementiertes Verfahren nach Anspruch 10, wobei der abstrakte Latenzcode durch Transformieren von Gesichtsorientierungspunkten in Übereinstimmung mit einer gelernten oder optimierten Matrix berechnet wird.
  13. Computer-implementiertes Verfahren nach einem der vorangehenden Ansprüche, wobei der Erscheinungsvektor während einer Videokonferenzsitzung an das neuronale Synthesenetzwerk übertragen wird.
  14. Computer-implementiertes Verfahren nach einem der vorangehenden Ansprüche, wobei das menschliche Gesicht verglichen mit dem realen oder synthetischen Subjekt ein anderer Mensch ist.
  15. Computer-implementiertes Verfahren nach einem der vorangehenden Ansprüche, wobei das menschliche Gesicht dem realen oder synthetischen Subjekt entspricht.
  16. Computer-implementiertes Verfahren nach einem der vorangehenden Ansprüche, ferner umfassend ein Interpolieren eines ersten Erscheinungsvektors und eines zweiten Erscheinungsvektors, die zwei Frames in dem Video entsprechen, um den Erscheinungsvektor zu erzeugen, wobei der Frame zwischen den beiden Frames liegt.
  17. Computer-implementiertes Verfahren nach einem der vorangehenden Ansprüche, ferner umfassend ein Empfangen von Audiodaten, wobei die Audiodaten verwendet werden, um das Bild des menschlichen Gesichts zu rekonstruieren.
  18. Computer-implementiertes Verfahren nach einem der vorangehenden Ansprüche, wobei der Erscheinungsvektor einen ersten Teil, der einem ersten Frame in dem Video entspricht, in dem das menschliche Gesicht unscharf ist, und einen zweiten Teil, der einem zweiten Frame in dem Video entspricht, in dem das menschliche Gesicht klar definiert ist, umfasst.
  19. Computer-implementiertes Verfahren nach Anspruch 18, wobei die Verarbeitung den ersten Teil und den zweiten Teil kombiniert, um das Bild mit dem klar definierten menschlichen Gesicht unter Verwendung des ersten Teils zur Steuerung grober Stile und des zweiten Teils zur Steuerung feiner Stile zu rekonstruieren.
  20. Computer-implementiertes Verfahren nach einem der vorangehenden Ansprüche, wobei das in dem Frame aufgenommene menschliche Gesicht unscharf ist und die Verarbeitung das Bild mit dem klar definierten menschlichen Gesicht unter Verwendung des Erscheinungsvektors zur Steuerung grober Stile und der Replikationsdaten zur Steuerung feiner Stile rekonstruiert.
  21. Computer-implementiertes Verfahren nach einem der vorangehenden Ansprüche, ferner umfassend ein Anzeigen des rekonstruierten Bildes des menschlichen Gesichts in einer Betrachtungsumgebung, wobei das neuronale Synthesenetzwerk das Bild in Übereinstimmung mit einer in der Betrachtungsumgebung erfassten Blickposition eines Betrachters rekonstruiert.
  22. Computer-implementiertes Verfahren nach Anspruch 21, wobei eine Blickrichtung des menschlichen Gesichts in dem Bild zu der Blickposition hin verläuft.
  23. Computer-implementiertes Verfahren nach einem der vorangehenden Ansprüche, wobei der Erscheinungsvektor eine Blickposition enthält, die einem zweiten Bild entspricht, das von dem menschlichen Gesicht betrachtet wird, und eine Blickrichtung des rekonstruierten Bildes des menschlichen Gesichts in einer Betrachtungsumgebung auf das zweite Bild gerichtet ist, das ebenfalls rekonstruiert und in der Betrachtungsumgebung angezeigt wird.
  24. Computer-implementiertes Verfahren nach Anspruch 1, wobei die Schritte des Erlangens, Empfangens und Verarbeitens auf einer virtuellen Maschine durchgeführt werden, die einen Teil einer Grafikverarbeitungseinheit umfasst.
  25. Computer-implementiertes Verfahren nach einem der vorangehenden Ansprüche, wobei das Bild zum Trainieren, Testen oder Zertifizieren eines neuronalen Netzwerks verwendet wird, das in einer Maschine, einem Roboter oder einem autonomen Fahrzeug eingesetzt wird.
  26. System, umfassend einen Prozessor, der dazu konfiguriert ist, einen Decoder zu implementieren, der konfiguriert ist zum: Erlangen von für ein reales oder synthetisches Subjekt spezifischen Replikationsdaten zum Konfigurieren eines neuronalen Synthesenetzwerks; Empfangen eines Erscheinungsvektors, der Attribute eines in einem Videoframe aufgenommenen menschlichen Gesichts kodiert; und Verarbeiten des Erscheinungsvektors unter Verwendung des neuronalen Synthesenetzwerks, um ein Bild des menschlichen Gesichts einschließlich von durch die Replikationsdaten definierten Merkmalen zu rekonstruieren.
  27. System nach Anspruch 26, das ferner dazu konfiguriert ist, ein computer-implementiertes Verfahren nach einem der Ansprüche 1 bis 25 auszuführen.
  28. Nicht-transitorisches, computer-lesbares Speichermedium, das Anweisungen speichert, die dann, wenn sie von einer Verarbeitungseinheit ausgeführt werden, die Verarbeitungseinheit veranlassen zum: Ausführen eines computer-implementierten Verfahrens nach einem der Ansprüche 1 bis 25.
DE102021109501.8A 2020-04-15 2021-04-15 Durch erzeugendes gegnerisches neuronales netzwerk unterstützte videorekonstruktion Pending DE102021109501A1 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202063010511P 2020-04-15 2020-04-15
US63/010,511 2020-04-15
US17/069,449 US11580395B2 (en) 2018-11-14 2020-10-13 Generative adversarial neural network assisted video reconstruction
US17/069,449 2020-10-13

Publications (1)

Publication Number Publication Date
DE102021109501A1 true DE102021109501A1 (de) 2021-10-21

Family

ID=77919673

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102021109501.8A Pending DE102021109501A1 (de) 2020-04-15 2021-04-15 Durch erzeugendes gegnerisches neuronales netzwerk unterstützte videorekonstruktion

Country Status (2)

Country Link
CN (1) CN113542759B (de)
DE (1) DE102021109501A1 (de)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116781912B (zh) * 2023-08-17 2023-11-14 瀚博半导体(上海)有限公司 视频传输方法、装置、计算机设备及计算机可读存储介质

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10542267B2 (en) * 2016-01-21 2020-01-21 Samsung Display Co., Ltd. Classification preserving image transform compression
CN116546221A (zh) * 2016-02-05 2023-08-04 渊慧科技有限公司 使用神经网络压缩图像
US10595039B2 (en) * 2017-03-31 2020-03-17 Nvidia Corporation System and method for content and motion controlled action video generation
US10504268B1 (en) * 2017-04-18 2019-12-10 Educational Testing Service Systems and methods for generating facial expressions in a user interface
JP6381768B1 (ja) * 2017-11-20 2018-08-29 ヤフー株式会社 学習装置、学習方法、学習プログラムおよび動作プログラム
US10373332B2 (en) * 2017-12-08 2019-08-06 Nvidia Corporation Systems and methods for dynamic facial analysis using a recurrent neural network
US10867214B2 (en) * 2018-02-14 2020-12-15 Nvidia Corporation Generation of synthetic images for training a neural network model
US20190295228A1 (en) * 2018-03-21 2019-09-26 Nvidia Corporation Image in-painting for irregular holes using partial convolutions
US11074717B2 (en) * 2018-05-17 2021-07-27 Nvidia Corporation Detecting and estimating the pose of an object using a neural network model
CN109410131B (zh) * 2018-09-28 2020-08-04 杭州格像科技有限公司 基于条件生成对抗神经网络的人脸美颜方法及系统
CN109711364A (zh) * 2018-12-29 2019-05-03 成都视观天下科技有限公司 一种人脸图像超分辨重建方法、装置及计算机设备
CN110222722A (zh) * 2019-05-14 2019-09-10 华南理工大学 交互式图像风格化处理方法、系统、计算设备及存储介质
CN110225350B (zh) * 2019-05-30 2021-03-23 西安电子科技大学 基于生成式对抗网络的自然图像压缩方法
CN110706157B (zh) * 2019-09-18 2022-09-30 中国科学技术大学 一种基于身份先验生成对抗网络的人脸超分辨率重建方法
CN110868598B (zh) * 2019-10-17 2021-06-22 上海交通大学 基于对抗生成网络的视频内容替换方法及系统

Also Published As

Publication number Publication date
CN113542759B (zh) 2024-05-10
CN113542759A (zh) 2021-10-22

Similar Documents

Publication Publication Date Title
US11775829B2 (en) Generative adversarial neural network assisted video reconstruction
US11625613B2 (en) Generative adversarial neural network assisted compression and broadcast
DE102019130702A1 (de) Stilbasierte architektur für generative neuronale netzwerke
DE102018126670A1 (de) Fortschreitende Modifizierung von generativen adversativen neuronalen Netzen
DE102019130889A1 (de) Schätzung der tiefe eines mit einer monokularen rgb-kamera aufgenommenen videodatenstroms
DE102018111407A1 (de) Methode zum maschinellen lernen für automatisches modellieren von mehrwertigen ausgaben
DE112018007721T5 (de) Aufnehmen und modifizieren von 3D-Gesichtern unter Verwendung neuronaler Bild-und Zeitverfolgungsnetze
DE102021109050A1 (de) Durch ein neuronales generative adversarial netzwerk unterstützte videokompression und -übertragung
DE102019106123A1 (de) Dreidimensionale (3D) Posenschätzung von Seiten einer monokularen Kamera
DE102021119722A1 (de) Feingranulare pro-vektor-skalierung für neuronale netzwerkquantisierung
DE102021121109A1 (de) Wiederherstellung dreidimensionaler modelle aus zweidimensionalen bildern
DE102021105249A1 (de) Mikrotraining zur iterativen verfeinerung eines neuronalen netzes mit wenigen anpassungen
DE102021205690A1 (de) Trainieren neuronaler Netze mit begrenzten Daten unter Verwendung invertierbarer Augmentationsoperatoren
DE102021130031A1 (de) Erscheinungsbildgesteuerte automatische dreidimensionale modellierung
DE102022123434A1 (de) Gemeinsame Schätzung von Herzfrequenz und Atemfrequenz unter Verwendung neuronaler Netze
DE102022118651A1 (de) Mehrfachauflösung-hash-codierung für neuronale netzwerke
DE102022113244A1 (de) Gemeinsame Form- und Erscheinungsbildoptimierung durch Topologieabtastung
DE102021132992A1 (de) Messen und Detektieren von Leerlaufzeiten und Erkennen der Ursachen dafür in Cloud-basierten Streaming-Anwendungen
DE102022121509A1 (de) Einzelbild-inversrendering
DE102021105291A1 (de) Gewichtsdemodulation für ein erzeugendes neuronales netz
DE102022107232A1 (de) Gepackter fehlerkorrekturcode (ecc) für komprimierten datenschutz
DE102021128286A1 (de) Adaptives abtasten mit einer zielabtastrate
DE102019112595A1 (de) Geführte halluzination für fehlende bildinhalte unter verwendung eines neuronalen netzes
CN113542758A (zh) 生成对抗神经网络辅助的视频压缩和广播
DE102021120604A1 (de) Dynamische bildglättung basierend auf netzwerkbedingungen

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06K0009000000

Ipc: G06V0010000000