DE102019123455A1 - Gemeinsame synthese und platzierung von objekten in szenen - Google Patents

Gemeinsame synthese und platzierung von objekten in szenen Download PDF

Info

Publication number
DE102019123455A1
DE102019123455A1 DE102019123455.7A DE102019123455A DE102019123455A1 DE 102019123455 A1 DE102019123455 A1 DE 102019123455A1 DE 102019123455 A DE102019123455 A DE 102019123455A DE 102019123455 A1 DE102019123455 A1 DE 102019123455A1
Authority
DE
Germany
Prior art keywords
generator
model
generator model
models
affine transformation
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
DE102019123455.7A
Other languages
English (en)
Inventor
Donghoon Lee
Sifei Liu
Jinwei Gu
Ming-Yu Liu
Jan Kautz
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 US16/201,934 external-priority patent/US20200074707A1/en
Application filed by Nvidia Corp filed Critical Nvidia Corp
Publication of DE102019123455A1 publication Critical patent/DE102019123455A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/02Affine transformations
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/60Editing figures and text; Combining figures or text
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/21Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
    • G06F18/217Validation; Performance evaluation; Active pattern learning techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/30Determination of transform parameters for the alignment of images, i.e. image registration
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V30/00Character recognition; Recognising digital ink; Document-oriented image-based pattern recognition
    • G06V30/10Character recognition
    • G06V30/26Techniques for post-processing, e.g. correcting the recognition result
    • G06V30/262Techniques for post-processing, e.g. correcting the recognition result using context analysis, e.g. lexical, syntactic or semantic context
    • G06V30/274Syntactic or semantic context, e.g. balancing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20081Training; Learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20084Artificial neural networks [ANN]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/12Bounding box
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/70Determining position or orientation of objects or cameras

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Evolutionary Computation (AREA)
  • Evolutionary Biology (AREA)
  • General Engineering & Computer Science (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Artificial Intelligence (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Multimedia (AREA)
  • Image Analysis (AREA)

Abstract

Eine Ausführungsform eines Verfahrens umfasst ein Anwenden eines ersten Generatormodells auf eine semantische Darstellung eines Bildes, um eine affine Transformation zu erzeugen, wobei die affine Transformation ein Begrenzungsrahmen darstellt, der mit mindestens einem Bereich innerhalb des Bildes verbunden ist. Das Verfahren umfasst ferner ein Anwenden eines zweiten Generatormodells auf die affine Transformation und die semantische Darstellung, um eine Form eines Objekts zu erzeugen. Das Verfahren umfasst ferner ein Einfügen des Objekts in das Bild auf Grundlage des Begrenzungsrahmens und der Form.

Description

  • QUERVERWEIS AUF VERBUNDENE ANMELDUNGEN
  • Diese Anmeldung beansprucht die Priorität der vorläufigen Patentanmeldung der Vereinigten Staaten mit dem Titel „CONTEXT-AWARE SYNTHESIS AND PLACEMENT OF OBJECT INSTANCES“, die am 4. September 2018 eingereicht wurde und die die Seriennummer 62/726.872 aufweist. Der Gegenstand dieser verbundenen Anmeldung wird hiermit durch Querverweis hierin aufgenommen.
  • HINTERGRUND
  • Objekte können in realen Anwendungen, welche Bildsynthese, erweiterte Realität, virtuelle Realität und/oder Domänen-Randomisierung bei maschinellem Lernen umfassen, in Szenen eingefügt werden, sind aber nicht darauf beschränkt. So können beispielsweise Modelle des maschinellen Lernens Fußgänger und/oder Autos in Bilder einfügen, die Straßen enthalten, um sie anschließend bei einem Training eines autonomen Fahrsystems und/oder bei einem Erzeugen eines Videospiels oder einer Virtual-Reality-Umgebung zu verwenden. Ein Einfügen von Objekten in eine Szene in realistischer und/oder in kontextuell bedeutsamer Weise stellt viele technische Herausforderungen dar.
  • Figurenliste
  • Damit die oben beschriebenen Merkmale der verschiedenen Ausführungsformen im Detail verstanden werden können, kann eine detailliertere Beschreibung der erfinderischen Konzepte, die vorstehend kurz zusammengefasst ist, unter Bezugnahme auf verschiedene Ausführungsformen erfolgen, von denen einige in den beigefügten Zeichnungen dargestellt sind. Es ist jedoch zu beachten, dass die beigefügten Zeichnungen nur typische Ausführungsformen der erfinderischen Konzepte veranschaulichen und daher in keiner Weise als Einschränkung des Geltungsbereichs anzusehen sind und dass es weitere ebenso wirksame Ausführungsformen gibt.
    • 1 ist ein Blockdiagramm, das ein System veranschaulicht, das dazu eingerichtet ist, einen oder mehrere Aspekte verschiedener Ausführungsformen zu implementieren.
    • 2 ist eine detailliertere Darstellung der Trainings- und Ausführungseinrichtung der 1 in Übereinstimmung mit verschiedenen Ausführungsformen.
    • 3 ist ein Flussdiagramm von Verfahrensschritten zur Durchführung einer gemeinsamen Synthese und Platzierung eines Objekts in einer Szene in Übereinstimmung mit verschiedenen Ausführungsformen.
    • 4 ist ein Flussdiagramm von Verfahrensschritten zum Training von Modellen des maschinellen Lernens, die eine gemeinsame Synthese und Platzierung von Objekten in Szenen in Übereinstimmung mit verschiedenen Ausführungsformen durchführen.
    • 5 ist ein Blockdiagramm, das ein Rechnersystem veranschaulicht, das dazu eingerichtet ist, einen oder mehrere Aspekte verschiedener Ausführungsformen zu implementieren.
    • 6 ist ein Blockdiagramm einer Parallelverarbeitungseinheit (PPU), die in dem Parallelverarbeitungssubsystem der 5 in Übereinstimmung mit verschiedenen Ausführungsformen umfasst ist.
    • 7 ist ein Blockdiagramm eines Allgemeinverarbeitungsclusters (GPC), der in der Parallelverarbeitungseinheit (PPU) der 6 in Übereinstimmung mit verschiedenen Ausführungsformen umfasst ist.
  • DETAILLIERTE BESCHREIBUNG
  • In der folgenden Beschreibung werden zahlreiche spezifische Details erläutert, um ein besseres Verständnis der verschiedenen Ausführungsformen zu ermöglichen. Für einen Fachmann wird es jedoch offensichtlich sein, dass die erfinderischen Konzepte ohne ein oder mehrere dieser spezifischen Details ausgeführt werden können.
  • Systemübersicht
  • 1 veranschaulicht eine Rechenvorrichtung 100, die dazu eingerichtet ist, einen oder mehrere Aspekte verschiedener Ausführungsformen zu implementieren. In einer Ausführungsform kann die Rechenvorrichtung 100 ein Desktop-Computer, ein Laptop-Computer, ein Smartphone, ein persönlicher digitaler Assistent (PDA), ein Tablet-Computer oder jede andere Art von Rechenvorrichtung sein, die dazu eingerichtet ist, Eingaben zu empfangen, Daten zu verarbeiten und optional Bilder anzuzeigen, und sich zum Ausführen einer oder mehrerer Ausführungsformen eignet. Die Rechenvorrichtung 100 ist dazu eingerichtet, eine Trainingseinrichtung 122 und eine Ausführungseinrichtung 124 zu betreiben, die sich in einem Speicher 116 befinden. Es wird darauf hingewiesen, dass die hierin beschriebene Rechenvorrichtung veranschaulichend ist und dass jegliche anderen technisch realisierbaren Konfigurationen in den Geltungsbereich der vorliegenden Offenbarung fallen.
  • In einer Ausführungsform umfasst die Rechenvorrichtung 100 ohne Einschränkung einen Verbinder (Bus) 112, die eine oder mehrere Verarbeitungseinheiten 102 verbindet, eine Ein-/Ausgabe-(I/O)-Vorrichtungsschnittstelle 104, die mit einer oder mehreren Ein-/Ausgabe-(I/O)-Vorrichtungen 108 gekoppelt ist, Speicher 116, einen Massenspeicher 114 und eine Netzwerkschnittstelle 106. Die Verarbeitungseinheit(en) 102 kann jeder geeignete Prozessor sein, der als Zentralverarbeitungseinheit (CPU), Grafikverarbeitungseinheit (GPU), anwendungsspezifische integrierte Schaltung (ASIC), feldprogrammierbare Gatteranordnung (FPGA), Beschleuniger für künstliche Intelligenz (AI), jede andere Art von Verarbeitungseinheit oder eine Kombination verschiedener Verarbeitungseinheiten verwirklicht ist, wie beispielsweise eine CPU, die für den Betrieb in Verbindung mit einer GPU konfiguriert ist. Ganz allgemein kann die Verarbeitungseinheit(en) 102 jede technisch realisierbare Hardwareeinheit sein, die dazu geeignet ist, Daten zu verarbeiten und/oder Softwareanwendungen auszuführen. Darüber hinaus können die in der Rechenvorrichtung 100 dargestellten Rechenelemente im Rahmen dieser Offenbarung einem physikalischen Rechensystem (z.B. einem System in einem Rechenzentrum) entsprechen oder eine virtuelle Recheninstanz sein, die innerhalb einer Cloud ausgeführt wird.
  • In einer Ausführungsform umfassen die I/O-Vorrichtungen 108 Vorrichtungen, die dazu geeignet sind, Eingaben bereitzustellen, wie beispielsweise eine Tastatur, eine Maus, ein berührungsempfindlicher Bildschirm usw., sowie Vorrichtungen, die dazu geeignet sind, Ausgaben bereitzustellen, wie beispielsweise eine Anzeigevorrichtung. Darüber hinaus können I/O-Vorrichtungen 108 Vorrichtungen umfassen, die sowohl Eingaben empfangen als auch Ausgaben bereitstellen können, wie beispielsweise ein berührungsempfindlicher Bildschirm, eine universelle serielle Bus-(USB)-Schnittstelle und so weiter. I/O-Vorrichtungen 108 können dazu eingerichtet werden, verschiedene Arten von Eingaben von einem Endanwender (z.B. einem Entwerfer) der Rechenvorrichtung 100 zu empfangen und auch verschiedene Arten von Ausgaben für den Endanwender der Rechenvorrichtung 100 bereitzustellen, wie beispielsweise angezeigte digitale Bilder oder digitale Videos oder Text. In einigen Ausführungsformen sind eine oder mehrere der I/O-Vorrichtungen 108 dazu eingerichtet, die Computervorrichtung 100 mit einem Netzwerk 110 zu koppeln.
  • In einer Ausführungsform ist das Netzwerk 110 jede technisch realisierbare Art von Kommunikationsnetzwerk, die einen Datenaustausch zwischen der Rechenvorrichtung 100 und externen Einheiten oder Vorrichtungen, wie beispielsweise einem Webserver oder einer anderen vernetzten Rechenvorrichtung, ermöglicht. Beispielsweise kann das Netzwerk 110 unter anderem ein Weitverkehrsnetzwerk (WAN), ein Lokalnetzwerk (LAN), ein Drahtlos-(WiFi)-Netzwerk und/oder das Internet umfassen.
  • In einer Ausführungsform umfasst der Massenspeicher 114 einen nichtflüchtigen Massenspeicher für Anwendungen und Daten und kann feste oder wechselbare Festplattenlaufwerke, Flash-Speichergeräte und CD-ROM, DVD-ROM, Blu-Ray, HD-DVD oder andere magnetische, optische oder Festkörperspeichergeräte umfassen. Trainingseinrichtung 122 und Ausführungseinrichtung 124 können in dem Massenspeicher 114 gespeichert und bei Ausführung in den Speicher 116 geladen werden.
  • In einer Ausführungsform umfasst der Speicher 116 ein Wahlfreizugriffsspeicher-(RAM)-Modul, eine Flash-Speichereinheit oder jegliche andere Art von Speichereinheit oder eine Kombination davon. Verarbeitungseinheit(en) 102, I/O-Vorrichtungsschnittstelle 104 und Netzwerkschnittstelle 106 sind dazu eingerichtet, Daten aus dem Speicher 116 zu lesen und in diesen zu schreiben. Der Speicher 116 umfasst verschiedene Softwareprogramme, die durch den/die Verarbeitungseinheit(en) 102 ausführbar sind, und Anwendungsdaten, die mit den Softwareprogrammen verbunden sind, einschließlich Trainingseinrichtung 122 und Ausführungseinrichtung 124.
  • In einer Ausführungsform erzeugt die Trainingseinrichtung 122 maschinelle Lernmodelle zum Einfügen von Objekten in Szenen. Die Szenen können semantische Darstellungen von Bildern umfassen, wie beispielsweise Segmentierungskarten, die einzelne Pixel in den Bildern mit semantischen Bezeichnern verknüpfen. Beispielsweise kann eine Segmentierungskarte einer Außenszene Pixelbereiche umfassen, denen Bezeichner wie „Straße“, „Himmel“, „Gebäude“, „Brücke“, „Baum“, „Boden“, „Auto“ und „Fußgänger“ zugeordnet sind. Im Gegenzug können mit der Trainingseinrichtung 122 erstellte maschinelle Lernmodelle verwendet werden, um plausible Positionen eines Objekts in der Szene sowie plausible Größen und Formen der Objekte an den Positionen zu identifizieren. In verschiedenen Ausführungsformen können die maschinellen Lernmodelle lernen, „wo“ in einer Szene Objekte eingefügt werden können, sowie „wie“ die Objekte aussehen, sodass das Objekt einen kontextuellen Zusammenhang mit der Szene aufrechterhält.
  • In einer Ausführungsform führt die Ausführungseinrichtung 124 die maschinellen Lernmodelle aus, um eine gemeinsame Synthese und Platzierung von Objekten in Szenen durchzuführen. Die gemeinsame Synthese und Platzierung von Objekten in Szenen kann ein kombiniertes Lernen von Position und Maßstab eines jeden Objekts in einer bestimmten Szene sowie der Formen eines jeden Objekts bei Vorgabe von entsprechender Position und Maßstab umfassen. In Fortführung des obigen Beispiels kann die Ausführungseinrichtung 124 ein durch die Trainingseinrichtung 122 erzeugtes erstes Generatormodell auf eine semantische Darstellung der Außenszene anwenden, um plausible Positionen in der Szene zu identifizieren, an denen Autos, Fußgänger und/oder andere Arten von Objekten eingefügt werden können. Die Ausführungseinrichtung 124 kann dann ein durch die Trainingseinrichtung 122 erzeugtes zweites Generatormodell auf die semantische Darstellung und die durch das erste Generatormodell identifizierten Positionen anwenden, um realistische Formen der Objekte an den identifizierten Positionen zu erzeugen. Trainingseinrichtung 122 und Ausführungseinrichtung 124 werden im Folgenden mit Bezug auf 2 näher beschrieben.
  • Gemeinsame Synthese und Platzierung von Objekten in Szenen
  • 2 ist eine detailliertere Darstellung der Trainingseinrichtung 122 und der Ausführungseinrichtung 124 der 1 in Übereinstimmung mit verschiedenen Ausführungsformen. In der dargestellten Ausführungsform erzeugt die Trainingseinrichtung 122 eine Reihe von Generatormodellen, wie etwa die Generatormodelle 202-204, und eine Reihe von Unterscheidungsmodellen, wie z.B. Affinitätsdiskriminator 206, Anordnungsdiskriminator 208-210 und Formdiskriminator 212, um eine gemeinsame Synthese und Platzierung von Objekten auf Grundlage von semantischen Darstellungen 200 von Bildern 258 durchzuführen. Die Unterscheidungsmodelle werden hierin gemeinsam als „Unterscheidungsmodelle 206-212“ bezeichnet. In verschiedenen Ausführungsformen wendet Ausführungseinrichtung 124 Generatormodelle 202-204 auf weitere Bilder 258 aus einer Bildablage 264 an, um Objekte 260 realistisch und/oder semantisch plausibel in Bilder 258 einzufügen.
  • Die Generatormodelle 202-204 und/oder die entsprechenden Unterscheidungsmodelle 206-212 können jede technisch machbare Form des maschinellen Lernens sein. Beispielsweise können Generatormodelle 202-204, Affinitätsdiskriminator 206, Anordnungsdiskriminatoren 208-210 und/oder Formdiskriminator 212 rückgekoppelte neuronale Netze (RNNs), faltende neuronale Netze (CNNs), mehrschichtige neuronale Netze (DNNs), mehrschichtige faltende neuronale Netze (DCNs), mehrschichtige Bayes'sche Netze (DBNs), beschränkte Boltzmann-Maschinen (RBMs), Langes-Kurzzeitgedächtnis-(LSTM)-Einheiten, torgesteuerte rückgekoppelte Einheiten (GRUs), erzeugende konträre Netzwerke (GANs), selbstorganisierende Karten (SOMs) und/oder andere Arten von künstlichen neuronalen Netzwerken oder Komponenten künstlicher neuronaler Netzwerke umfassen. In einem weiteren Beispiel können Generatormodelle 202-204, Affinitätsdiskriminator 206, Anordnungsdiskriminatoren 208-210 und/oder Formdiskriminator 212 Funktionen zum Durchführen von Clusteranalyse, Hauptkomponentenanalyse (PCA), latente semantische Analyse (LSA), Word2vec und/oder eine andere unüberwachte Lerntechnik umfassen. In einem dritten Beispiel können Generatormodelle 202-204, Affinitätsdiskriminator 206, Anordnungsdiskriminatoren 208-210 und/oder Formdiskriminator 212 Regressionsmodelle, Support Vector Machines, Entscheidungsbäume, Zufallswälder, gradientenverstärkte Bäume, naive Bayes-Klassifikatoren, Bayes'sche Netze, hierarchische Modelle und/oder Ensemblemodelle umfassen.
  • Wie vorstehend erwähnt können semantische Darstellungen 200 von Bildern 200 Pixel 218 in Bildern 200 sowie Bezeichner 220 umfassen, die Pixel 218 mit verschiedenen Klassen verknüpfen. Beispielsweise kann eine semantische Darstellung einer Außenszene eine „Segmentierungskarte“ umfassen, die auf Bezeichner 220 wie etwa „Himmel“, „Boden“, „Baum“, „Wasser“, „Straße“, „Gehweg“, „Gebäude“, „Struktur“, „Auto“ und/oder „Fußgänger“ abgebildete Bereiche mit Pixeln 218 enthält. In verschiedenen Ausführungsformen wird jeder Bereich der Pixel 218 auf ein oder mehrere Bezeichner der Bezeichner 220 abgebildet.
  • In einer Ausführungsform gibt die Trainingseinrichtung 122 semantische Darstellungen 200 von Szenen in das Generatormodell 202 ein. Das Generatormodell 202 gibt affine Transformationen 230 aus, die Begrenzungsrahmen für Objekte 260 darstellen, die in die Szenen eingefügt werden können. So kann beispielsweise Trainingseinrichtung 122 eine Segmentierungskarte einer Außenszene in das Generatormodell 202 eingeben, und das Generatormodell 202 kann einen Begrenzungsrahmen für ein Auto, einen Fußgänger und/oder ein anderes in die Außenszene einzufügendes Objekt als eine affine Transformationsmatrix definieren, die auf einen Einheitsbegrenzungsrahmen in der Szene angewendet wird.
  • In verschiedenen Ausführungsformen kann die affine Transformationsmatrix Verschiebung, Skalierung, Drehung und/oder andere Arten von affinen Transformationen umfassen, die auf den Einheitsbegrenzungsrahmen angewendet werden, um einen Begrenzungsrahmen an einer bestimmten Position und in einem bestimmten Maßstab in der Szene zu erzeugen. In diesen Ausführungsformen kann bei einer zweidimensionalen (2D) semantischen Darstellung einer Szene mit und einem Einheitsrahmen von 1 Pixel x 1 Pixel der Begrenzungsrahmen unter Verwendung der folgenden Gleichung berechnet werden: [ x ' y ' 1 ] [ a b t x c d t y 0 0 1 ] [ x y 1 ]
    Figure DE102019123455A1_0001
    In der obigen Gleichung stellen x und y die Koordinaten jedes Punktes in dem Einheitsbegrenzungsrahmen dar, x' und y' die Koordinaten eines entsprechenden Punktes in dem durch das Generatormodell 202 in der Szene identifizierten Begrenzungsrahmen, und a, b, c, d, tx und ty Parameter einer affinen Transformation, die auf x und y angewendet wird, um x' und y'zu erzeugen.
  • In einer Ausführungsform umfasst das Generatormodell 202 einen Variational Autoencoder (VAE) 224 und/oder ein Spatial Transformer Network (STN) 228. In dieser Ausführungsform wird ein Encoderabschnitt eines VAE 224 auf eine semantische Darstellung einer Szene und eine Zufallseingabe 214 angewendet, um einen Vektor in einem latenten Raum zu erzeugen. Der Vektor wird dann in STN 228 eingegeben, um eine oder mehrere affine Transformationen 230 zu erzeugen, die Begrenzungsrahmen für Objekte in der Szene darstellen. Folglich kann jede affine Transformation die Position und den Maßstab eines entsprechenden Objekts in der Szene festlegen.
  • Beispielsweise kann Zufallseingabe 214 einen Zufallsvektor mit einer Standardnormalverteilung umfassen, der mit einer gegebenen semantischen Darstellung eines Bildes kombiniert (z.B. verkettet) wird, um eine Eingabe in VAE 224 zu erzeugen. Die Trainingseinrichtung 122 kann den Encoderabschnitt des VAE 224 auf die Kombination aus Zufallseingabe 214 und semantischer Darstellung anwenden, um einen Vektor in einem latenten Raum zu erzeugen, der ebenfalls eine Standardnormalverteilung aufweist. Trainingseinrichtung 122 kann dann STN 228 einsetzen, um den Vektor in eine affine Transformation umwandeln, die einen Begrenzungsrahmen für ein in die Szene einzufügendes Objekt darstellt.
  • In einer Ausführungsform gibt Trainingseinrichtung 122 von dem Generatormodell 202 erzeugte semantische Darstellungen 200 von Szenen und entsprechende affine Transformationen 230 in das Generatormodell 204 ein. Generatormodell 204 gibt Formen 232 der Objekte 260 innerhalb von Begrenzungsrahmen aus, die durch affine Transformationen 230 dargestellt werden. In einer Ausführungsform umfasst das Generatormodell 204 einen weiteren VAE 226. In dieser Ausführungsform wird ein Encoderabschnitt des VAE 226 auf eine semantische Darstellung einer Szene angewandt, die eine oder mehrere von dem Generatormodell 202 ausgegebene affine Transformationen 230 und Zufallseingaben 214 umfasst, um einen Vektor in einem latenten Raum zu erzeugen. Der Vektor wird dann in einen Decoderabschnitt des VAE 226 eingegeben, um eine oder mehrere Formen 232 zu erzeugen, die in Begrenzungsrahmen passen, die durch affine Transformationen 230 dargestellt werden.
  • Beispielsweise kann Zufallseingabe 216 einen Zufallsvektor mit einer Standardnormalverteilung umfassen, der mit einer semantischen Darstellung eines Bildes kombiniert (z.B. verkettet) wird, um eine Eingabe in VAE 226 zu erzeugen. Die semantische Darstellung kann aktualisiert werden, um Bereiche von Pixel 218 und entsprechende Bezeichner 220 für Begrenzungsrahmen, die durch affine Transformationen 230 dargestellt werden, aufzunehmen. Der Trainingseinrichtung 122 kann den Encoderabschnitt von VAE 226 auf die Eingabe anwenden, um einen Vektor in einem latenten Raum zu erzeugen, der ebenfalls eine Standardnormalverteilung aufweist. Trainingseinrichtung 122 kann dann den Decoderabschnitt von VAE 226 auf den Vektor anwenden, um binäre Masken zu erzeugen, die Formen von Objekten in Begrenzungsrahmen umfassen, die durch affine Transformationen 230 dargestellt werden.
  • In verschiedenen Ausführungsformen können affine Transformationen 230, die von STN 228 ausgegeben werden, als unterscheidbare Verbindungen zwischen den Generatormodellen 202-204 fungieren. Im Ergebnis kann Trainingseinrichtung 122 ein gemeinsames Training und/oder Aktualisieren von Generatormodellen 202-204 unter Verwendung der unterscheidbaren Verbindungen durchführen. Auf diese Weise funktionieren Generatormodelle 202-204 als ein Ende-zu-Ende-Modell des maschinellen Lernens, das die gemeinsame Verteilung der Positionen und Formen verschiedener Arten von Objekten 260 in semantischen Darstellungen 200 von Szenen erlernt.
  • Genauer gesagt kombiniert die Trainingseinrichtung 122 in einer Ausführungsform die Ausgabe der Generatormodelle 202-204 mit entsprechenden Vorhersagen 234-240 des Affinitätsdiskriminators 206, der Anordnungsdiskriminatoren 208-210 und des Formdiskriminators 212, um die Generatormodelle 202-204 zu trainieren und/oder zu aktualisieren. In dieser Ausführungsform liest Trainingseinrichtung 122 affine Transformationen 230, die von Generatormodell 202 und/oder Grundwahrheiten 222 für Objektpositionen in semantischen Darstellungen 200 ausgegeben werden, in den Affinitätsdiskriminator 206 und den Anordnungsdiskriminator 208 ein. Affinitätsdiskriminator 206 kann Vorhersagen 234 ausgeben, die die Parameter von affinen Transformationen 230 als echt oder gefälscht klassifizieren, und Anordnungsdiskriminator 208 kann Vorhersagen 236 ausgeben, die die Platzierung der entsprechenden Begrenzungsrahmen in semantischen Darstellungen 200 als echt oder gefälscht klassifizieren.
  • In einer Ausführungsform gibt Trainingseinrichtung 122 auch die von Generatormodell 204 ausgegebenen Formen 232 und Grundwahrheiten 222 für die Objektformen 232 in semantischen Darstellungen 200 in den Anordnungsdiskriminator 210 und den Formdiskriminator 212 ein. Anordnungsdiskriminator kann Vorhersagen 238 ausgeben, die die Platzierung von Formen 232 in semantischen Darstellungen 200 als echt oder gefälscht klassifizieren, und Formdiskriminator 212 kann Vorhersagen 240 ausgeben, die die erzeugten Formen 232 als echt oder gefälscht klassifizieren. Trainingseinrichtung 122 berechnet dann Verluste 242-248 auf Grundlage von Vorhersagen 234-240 aus den Unterscheidungsmodellen und verwendet die mit Verlusten 242-248 verbundenen Gradienten, um die Parameter von Generatormodellen 202-204 zu aktualisieren.
  • In verschiedenen Ausführungsformen kann Trainingseinrichtung 122 Generatormodelle 202-204, Affinitätsdiskriminator 206, Anordnungsdiskriminator 208-210 und Formdiskriminator 212 zu GANs kombinieren, wobei jedes Generatormodell und die entsprechenden Unterscheidungsmodelle gegeneinander trainiert werden. Beispielsweise können Generatormodelle 202-204, Affinitätsdiskriminator 206, Anordnungsdiskriminatoren 208-210 und Formdiskriminator 212 in faltenden GANs, bedingten GANs, Zyklus-GANs, Wasserstein-GANs und/oder andere Arten von GANs aufgenommen werden. Im Gegenzug können Generatormodelle 202-204 realistischere affine Transformationen 230 und Formen 232 erzeugen, und die Unterscheidungsmodelle können lernen, besser zwischen realen und gefälschten Objektpositionen und -formen in semantischen Darstellungen 200 von Szenen zu unterscheiden.
  • In einer Ausführungsform kann Trainingseinrichtung 122 Generatormodelle 202-204 über sowohl überwachte Pfade 250-252 als auch unüberwachten Pfade 254-256 aktualisieren, um die Vielfalt der durch Generatormodelle 202-204 erzeugten affinen Transformationen 230 und Formen 232 zu erhöhen. Überwachter Pfad 250 kann als zusätzliche Eingabe in Generatormodell 202 Grundwahrheiten 222 für Begrenzungsrahmen von Objekten umfassen, die in die entsprechenden semantischen Darstellungen 200 eingefügt werden können. Ebenso kann überwachter Pfad 252 als zusätzliche Eingabe für Generatormodell 204 Grundwahrheiten 222 für Formen 232 von Objekten umfassen, die in die entsprechenden semantischen Darstellungen eingefügt werden können.
  • Im Ergebnis können überwachte Pfade 250-252 es Generatormodellen 202-204 ermöglichen, zusätzliche Positionen und/oder Formen von Objekten in Szenen zu erlernen, die über jene hinausgehen, die über unüberwachte Pfade 254-256 erzeugten wurden und denen Grundwahrheiten 222 für die Positionen und Formen der Objekte fehlen. So kann beispielsweise ein Training von Generatormodellen 202-204 über unüberwachte Pfade 254-256 dazu führen, dass die Generatormodelle 202-204 bei Erzeugung der entsprechenden affinen Transformationen 230 und/oder 232 Zufallseingaben 214-216 effektiv ignorieren. Durch Hinzufügen überwachter Pfade 250-252 zur Trainingspipeline für Generatormodelle 202-204 kann Trainingseinrichtung 122 VAEs 224-226 und/oder STN 228 so trainieren, um die entsprechenden in die Generatormodelle 202-204 eingegebenen Grundwahrheiten 222 zu rekonstruieren, wodurch unterschiedliche Werte der Zufallseingaben 214-216 ermöglicht werden, um unterschiedliche Begrenzungsrahmen und Formen 232 von Objekten in einer bestimmten Szene zu erzeugen.
  • In einer Ausführungsform kann das Training des Generatormodells 202 unter Verwendung eines Minimaxspiels zwischen Generatormodell 202, Affinitätsdiskriminator 208 und Anordnungsdiskriminator 208 mit der folgenden Verlustfunktion durchgeführt werden: L l ( G 1 , D 1 ) = L l a d v ( G 1 , D l a y o u t b o x ) + L l r e c o n ( G 1 ) + L l s u p ( G 1 , D a f f i n e )
    Figure DE102019123455A1_0002
    In der obigen Funktion stellt L l
    Figure DE102019123455A1_0003
    den mit einem Verlust dar, der verbunden ist mit einem GAN-enthaltenden Generatormodell 202, Affinitätsdiskriminator 206 und Anordnungsdiskriminator 208; Gl stellt Generatormodell 202 dar; und Dl stellt Diskriminatoren dar, die sich auf die Ausgabe des Generatormodells 202 beziehen (d.h. Affinitätsdiskriminator 206 und Anordnungsdiskriminator 208).
    Der Verlust umfasst drei Komponenten: einen als L l a d v
    Figure DE102019123455A1_0004
    bezeichneten unüberwachten konträren Verlust, einen als L l r e c o n
    Figure DE102019123455A1_0005
    bezeichneten Rekonstruktionsverlust, und einen als L l s u p
    Figure DE102019123455A1_0006
    bezeichneten überwachten konträren Verlust. Der unüberwachte konträre Verlust (z.B. Verluste 244) wird auf Grundlage des Generatormodells 202 und des als D l a y o u t b o x
    Figure DE102019123455A1_0007
    bezeichneten Anordnungsdiskriminators 208 bestimmt. Der Rekonstruktionsverlust wird auf Grundlage des Generatormodells 202 bestimmt. Der überwachte konträre Verlust (z.B. Verluste 242) wird auf Grundlage des Generatormodells 202 und des als Daffine bezeichneten Affinitätsdiskriminators 206 bestimmt.
  • In einer Ausführungsform nutzt Trainingseinrichtung 122 den unüberwachten konträren Verlust, um Generatormodell 202 über unüberwachten Pfad 254 zu aktualisieren. Beispielsweise kann der unüberwachte konträre Verlust nach der folgenden Gleichung berechnet werden: L l a d v ( G 1 , D l a y o u t b o x ) = E x [ l o g D l a y o u t b o x ( x A ( b ) ) ] + E x ,z l [ D l a y o u t b o x ( x A ^ ( b ) ) ]
    Figure DE102019123455A1_0008
    In der obigen Gleichung stellt zl Zufallseingabe 214 dar, x stellt eine semantische Darstellung dar, die in das Generatormodell 202 eingegeben wird, A(b) stellt eine affine Transformationsmatrix A dar, die auf einen Einheitsbegrenzungsrahmen b angewendet wird, um einen Grundwahrheitsbegrenzungsrahmen für ein Objekt zu erzeugen, und Ä(b) stellt eine Vorhersage von A durch Generatormodell 202 dar.
  • In einer Ausführungsform wird Rekonstruktionsverlust auch dazu verwendet, Generatormodell 202 über unüberwachten Pfad 254 zu aktualisieren. Beispielsweise kann der Rekonstruktionsverlust nach folgender Gleichung berechnet werden: L l r e c o n ( G 1 ) = x' x 1 + z l ' z l 1
    Figure DE102019123455A1_0009
    In der obigen Gleichung sind x' und x' und z l '
    Figure DE102019123455A1_0010
    repräsentieren Rekonstruktionen von x und zl die jeweils aus dem von VAE 224 erzeugten latenten Vektor erzeugt werden. Dadurch kann mit Hilfe der Rekonstruktionsverluste sichergestellt werden, dass sowohl die Zufallseingabe 214 als auch die in das Generatormodell 202 eingegebene semantische Darstellung im latenten Vektor kodiert werden.
  • In einer Ausführungsform wird der überwachte konträre Verlust verwendet, um das Generatormodell 202 über den überwachten Pfad 250 zu aktualisieren. So kann beispielsweise der überwachte konträre Verlust nach folgender Gleichung berechnet werden: L l s u p ( G 1 , D a f f i n e ) = E z A E A A A ^ + KL ( z A z l ) + L s u p , a d v ( G 1 , D a f f i n e )
    Figure DE102019123455A1_0011
    In der obigen Gleichung ist A eine affine Transformation, die einen realistischen Begrenzungsrahmen für eine vorgegebene Grundwahrheit erzeugt, ist eine vorhergesagte affine Transformation, die über überwachten Pfad 250 erzeugt wird.
    zA stellt einen Vektor dar, der aus Parametern eines Grundwahrheitsbegrenzungsrahmens für ein Objekt kodiert wird, EA stellt einen Encoder dar, der Parameter einer eingegebenen affinen Transformation A kodiert, KL bezeichnet die Kullback-Leibler-Divergenz und L s u p , a d v
    Figure DE102019123455A1_0012
    stellt einen auf eine Vorhersage eines realistischen Ä gerichteten, konträren Verlust dar. Die Gleichung wiederum kann verwendet werden, um Generatormodell 202 so zu aktualisieren, dass das Generatormodell 202 für jede Grundwahrheit zA auf A abbildet.
  • In einer Ausführungsform kann das Training des Generatormodells 204 unter Verwendung eines Minimaxspiels zwischen Generatormodell 204, Anordnungsdiskriminator 210 und Formdiskriminator 212 mit der folgenden Verlustfunktion durchgeführt werden: L s ( G s ,   D s ) = L s a d v ( G s ,   D l a y o u t i n s t a n c e ) + L s r e c o n ( G s ) + L s s u p ( G s ,   D s h a p e )
    Figure DE102019123455A1_0013
    L s
    Figure DE102019123455A1_0014
    stellt den Verlust dar, der verbunden ist mit einem GAN-enthaltenden Generatormodell 204, Anordnungsdiskriminator 210 und Formdiskriminator 212; Gs stellt Generatormodell 204 dar; und Ds stellt Diskriminatoren dar, die sich auf die Ausgabe des Generatormodells 204 beziehen (d.h. Anordnungsdiskriminator 210 und Formdiskriminator 212).
    Wie die Verlustfunktion zur Aktualisierung des Generatormodells 202 umfasst die obige Verlustfunktion drei Komponenten: einen als L s a d v
    Figure DE102019123455A1_0015
    bezeichneten unüberwachten konträren Verlust, einen als L s r e c o n
    Figure DE102019123455A1_0016
    bezeichneten Rekonstruktionsverlust, und einen als L s s u p
    Figure DE102019123455A1_0017
    bezeichneten überwachten konträren Verlust. Der unüberwachte konträre Verlust (z.B. Verluste 246) wird auf Grundlage des Generatormodells 204 und des als D l a y o u t i n s t a n c e
    Figure DE102019123455A1_0018
    bezeichneten Anordnungsdiskriminators 210 bestimmt. Der Rekonstruktionsverluste wird auf Grundlage des Generatormodells 202 bestimmt. Der überwachte konträre Verlust (z.B. Verluste 248) wird auf Grundlage des Generatormodells 204 und des als Dshape bezeichneten Formdiskriminators 212 bestimmt.
  • In einer Ausführungsform ist die Rolle jeder Komponente in der Verlustfunktion zur Aktualisierung von Generatormodell 204 ähnlich derjenigen der entsprechenden Komponente der Verlustfunktion zur Aktualisierung von Generatormodell 204. Das heißt, dass der unüberwachte konträre Verlust und der Rekonstruktionsverlust dazu verwendet werden, um Generatormodell 204 über unüberwachten Pfad 256 zu aktualisieren, und der überwachte konträre Verlust dazu verwendet wird, um Generatormodell 204 über überwachten Pfad 252 zu aktualisieren. Andererseits kann der überwachte konträre Verlust dazu verwendet werden kann, um Generatormodell 204 zu trainieren um eine Grundwahrheitsform für ein Objekt anstelle eines Grundwahrheitsbegrenzungsrahmens und/oder einer Position für das Objekt zu rekonstruieren. Darüber hinaus können ein oder mehrere Verluste 246-248, die mit Generatormodell 204, Anordnungsdiskriminator 210 und Formdiskriminator 212 verbunden sind, durch VAE 226 von Generatormodell 204 und STN 228 von Generatormodell 202 rückwärts fortgepflanzt werden, sodass mit einer Erzeugung von Formen 232 im Zusammenhang stehende Verluste 246-248 verwendet werden, um die Parameter beider Generatormodelle 202-204 anzupassen.
  • In einer Ausführungsform wendet Ausführungseinrichtung 124, nachdem ein Training von Generatormodellen 202-204 abgeschlossen wurde, Generatormodelle 202-204 auf zusätzliche Bilder 258 aus einem Bildablage 264 an, um Objekte 260 in die Bilder 258 einzufügen. So kann beispielsweise Ausführungseinrichtung 124 einen unüberwachten Pfad 254 ausführen, der Generatormodell 202, Affinitätsdiskriminator 206 und Anordnungsdiskriminator 208 enthält, um affine Transformationen 230 zu erzeugen, die Begrenzungsrahmen für Objekte 260 auf Grundlage von Zufallseingabe 214 und semantischen Darstellungen 200 von Bildern 258 darstellen. Ausführungseinrichtung 124 kann dann unüberwachten Pfad 256 ausführen, der Generatormodell 204, Anordnungsdiskriminator 210 und Formdiskriminator 212 enthält, um Formen 232 zu erzeugen, die auf Grundlage von Zufallseingabe 216, semantischen Darstellungen 200 und affinen Transformationen 230 in die Begrenzungsrahmen passen. Schließlich kann Ausführungseinrichtung 124 affine Transformationen 230 auf die entsprechenden Formen 232 anwenden, um an den vorhergesagten Positionen Objekte 260 in Bilder 258 einzufügen.
  • 3 ist ein Flussdiagramm von Verfahrensschritten zur Durchführung einer gemeinsamen Synthese und Platzierung eines Objekts in einer Szene in Übereinstimmung mit verschiedenen Ausführungsformen. Obwohl die Verfahrensschritte in Verbindung mit den Systemen der 1 und 2 beschrieben werden, werden Fachpersonen verstehen, dass jedes System, das dazu eingerichtet ist, die Verfahrensschritte in beliebiger Reihenfolge durchzuführen, in den Geltungsbereich der vorliegenden Offenbarung fällt.
  • Wie dargestellt wendet Ausführungseinrichtung 124 ein erstes Generatormodell 302 auf eine semantische Darstellung eines Bildes an, um eine affine Transformation zu erzeugen, die einen Begrenzungsrahmen darstellt, der mit mindestens einem Bereich in dem Bild verbunden ist. So kann beispielsweise das erste Generatormodell ein VAE und ein STN umfassen. Eingaben in den VAE können die semantische Darstellung und die Zufallseingabe (z.B. einen Zufallsvektor) umfassen. Im Gegenzug kann ein Encoder in dem VAE einen latenten Vektor aus den Eingaben erzeugen, und das STN kann den latenten Vektor in eine affine Transformation umwandeln, die sowohl die Position als auch den Maßstab eines in das Bild einzufügenden Objekts angibt.
  • Als nächstes wendet Ausführungseinrichtung 124 ein zweites Generatormodell auf die affine Transformation und die semantische Darstellung an, um eine Form des Objekts zu erzeugen. Beispielsweise kann das zweite Generatormodell auch einen VAE umfassen. Eingaben in den VAE können die semantische Darstellung, die affine Transformation und die Zufallseingabe (z.B. einen Zufallsvektor) umfassen. Der VAE in dem zweiten Generatormodell kann auf Grundlage der Eingaben eine Form erzeugen, die das Objekt repräsentiert und die zu der durch die affine Transformation angegebenen Position und Maßstab passt.
  • Dann fügt 306 Ausführungseinrichtung 124 das Objekt auf Grundlage des Begrenzungsrahmens und der Form in das Bild ein. Beispielsweise kann Ausführungseinrichtung 124 die affine Transformation auf die Form anwenden, um einen Bereich von Pixeln in dem Bild zu erhalten, das das Objekt umfasst. Ausführungseinrichtung 124 kann dann durch Aktualisierung der semantische Darstellung das Objekt in das Bild einfügen, um eine Zuordnung des Bereichs von Pixeln zu einem Bezeichner für das Objekt vorzunehmen.
  • 4 ist ein Flussdiagramm von Verfahrensschritten zum Trainieren von Modellen des maschinellen Lernens, die eine gemeinsame Synthese und Platzierung von Objekten in Szenen in Übereinstimmung mit verschiedenen Ausführungsformen durchführen. Obwohl die Verfahrensschritte in Verbindung mit den Systemen der 1 und 2 beschrieben werden, werden Fachpersonen verstehen, dass jedes System, das dazu eingerichtet ist, die Verfahrensschritte in beliebiger Reihenfolge durchzuführen, in den Geltungsbereich der vorliegenden Offenbarung fällt.
  • Wie dargestellt berechnet 402 Trainingseinrichtung 122 auf Grundlage einer Ausgabe von Unterscheidungsmodellen für die Generatormodelle Fehler, die mit zwei Generatormodellen verbunden sind. Beispielsweise können die Unterscheidungsmodelle für ein Generatormodell, das eine einen Begrenzungsrahmen für ein Objekt darstellende affine Transformation ausgibt, ein Anordnungsunterscheidungsmodell umfassen, das eine Position des Begrenzungsrahmens in einem Bild als real oder gefälscht einstuft, und ein Affinitätsunterscheidungsmodell, das die affine Transformation als real oder gefälscht einstuft. In einem weiteren Beispiel können die Unterscheidungsmodelle für ein anderes Generatormodell, das eine Form eines Objekts innerhalb des Begrenzungsrahmens ausgibt, ein Anordnungsunterscheidungsmodell umfassen, das eine Position der Form in dem Bild als echt oder gefälscht einstuft, und ein Formunterscheidungsmodell, das die Form als echt oder gefälscht einstuft. Die Fehler können Verluste umfassen, die auf Grundlage von Vorhersagen der Unterscheidungsmodelle und/oder der Ausgaben der entsprechenden Generatormodelle berechnet werden.
  • Als nächstes führt 404 die Trainingseinrichtung 122 einen unüberwachten Pfad aus, um die Parameter jedes Generatormodells auf Grundlage eines ersten Fehlers zu aktualisieren. Die Trainingseinrichtung 122 führt 406 auch einen für jedes Generatormodell Grundwahrheiten enthaltenden überwachten Pfad aus, um die Parameter des Generatormodells auf Grundlage eines zweiten Fehlers zu aktualisieren.
  • So kann beispielsweise der erste Fehler einen unüberwachten konträren Verlust umfassen, der aus einem ersten Unterscheidungsmodell für das Generatormodell berechnet wird, und/oder einen Rekonstruktionsverlust, der mit Zufallseingaben in das Generatormodell verbunden ist, und der zweite Fehler kann einen überwachten konträren Verlust umfassen, der aus einem zweiten Unterscheidungsmodell für das Generatormodell berechnet wird. Infolgedessen können unüberwachte Pfade verwendet werden, um die Leistung der Generatormodelle beim Erzeugen realistischer Begrenzungsrahmen und/oder Formen von Objekten in den entsprechenden Bildern zu verbessern, und die überwachten Pfade können mit den Grundwahrheiten verwendet werden, um die Vielfalt der von den Generatormodellen erzeugten Begrenzungsrahmen und/oder Formen zu erhöhen.
  • Beispielhafte Hardware-Architektur
  • 5 ist ein Blockdiagramm, das ein Rechnersystem 500 veranschaulicht, das dazu eingerichtet ist, einen oder mehrere Aspekte verschiedener Ausführungsformen zu implementieren. In einigen Ausführungsformen ist Rechnersystem 500 eine Servereinrichtung, die in einem Rechenzentrum oder einer Cloud-Computing-Umgebung arbeitet und skalierbare Rechnerressourcen als Dienst über ein Netzwerk bereitstellt.
  • In verschiedenen Ausführungsformen umfasst das Rechnersystem 500 ohne Einschränkung eine Zentralverarbeitungseinheit (CPU) 502 und einen Systemspeicher 504, der über eine Speicherbrücke 505 und einen Kommunikationspfad 513 mit einem Parallelverarbeitungssubsystem 512 gekoppelt ist. Speicherbrücke 505 ist ferner über einen Kommunikationspfad 506 mit einer I/O-(Ein-/Ausgangs-)Brücke 507 gekoppelt, und I/O-Brücke 507 ist wiederum mit einem Vermittlungsknoten (Switch) 516 gekoppelt.
  • In einer Ausführungsform ist die I/O-Brücke 507 dazu eingerichtet, eine Anwendereingabeinformation von optionalen Eingabegeräten 508,wie etwa einer Tastatur oder einer Maus zu empfangen und die Eingabeinformationen zur Verarbeitung über den Kommunikationspfad 506 und die Speicherbrücke 505 an die CPU 502 weiterzuleiten. In einigen Ausführungsformen kann das Rechnersystem 500 eine Servereinrichtung in einer Cloud-Computing-Umgebung sein. In solchen Ausführungsformen weist Rechnersystem 500 möglicherweise keine Eingabevorrichtungen 508 auf. Stattdessen kann das Rechnersystem 500 gleichwertige Eingabeinformationen empfangen, indem es Befehle in Form von Nachrichten empfängt, die über ein Netzwerk übertragen und über den Netzwerkadapter 518 empfangen werden. In einer Ausführungsform ist Vermittlungsknoten 516 dazu eingerichtet, Verbindungen zwischen I/O-Brücke 507 und anderen Komponenten des Rechnersystems 500 bereitzustellen, wie etwa einem Netzwerkadapter 518 und verschiedenen Zusatzkarten 520 und 521.
  • In einer Ausführungsform ist die I/O-Brücke 507 mit einem Systemlaufwerk 514 gekoppelt, das dazu eingerichtet werden kann, Inhalte, Anwendungen und Daten für eine Verwendung durch die CPU 502 und das Parallelverarbeitungssubsystem 512 zu speichern. In einer Ausführungsform stellt Systemlaufwerk 514 einen nichtflüchtigen Speicher für Anwendungen und Daten bereit und kann feste oder austauschbare Festplattenlaufwerke, Flash-Speichergeräte und CD-ROM (Compact Disc Read-Only-Memory), DVD-ROM (Digital Versatile Disc-ROM), Blu-ray, HD-DVD (High Definition DVD) oder andere magnetische, optische oder Festkörperspeichervorrichtungen umfassen. In verschiedenen Ausführungsformen können auch andere Komponenten wie etwa universelle serielle Bus- oder andere Portanschlüsse, Compact-Disc-Laufwerke, Digital Versatile Disc-Laufwerke, Filmaufnahmegeräte und dergleichen an die I/O-Brücke 507 angeschlossen werden.
  • In verschiedenen Ausführungsformen kann Speicherbrücke 505 ein Northbridge-Chip und I/O-Brücke 507 ein Southbridge-Chip sein. Darüber hinaus können Kommunikationspfade 506 und 513 sowie andere Kommunikationspfade innerhalb des Rechnersystems 500 unter Verwendung jeglicher technisch geeigneter Protokolle implementiert werden, einschließlich, aber nicht beschränkt auf, AGP (Accelerated Graphics Port), HyperTransport oder jedes andere auf dem Gebiet bekannte Bus- oder Punkt-zu-Punkt-Kommunikationsprotokoll.
  • In einigen Ausführungsformen umfasst Parallelverarbeitungssubsystem 512 ein Grafiksubsystem, das Pixel an eine optionale Anzeigevorrichtung 510 liefert, die eine herkömmliche Kathodenstrahlröhre, eine Flüssigkristallanzeige, eine lichtemittierende Diodenanzeige oder dergleichen sein kann. In solchen Ausführungsformen umfasst Parallelverarbeitungssubsystem 512 eine für Grafik- und Videoverarbeitung optimierte Schaltung, die beispielsweise eine Videoausgabeschaltung umfasst. Wie im Folgenden in Verbindung mit den 6 und 7 näher beschrieben kann eine solche Schaltung über eine oder mehrere Parallelverarbeitungseinheiten (PPUs) integriert sein, die hierin auch als Parallelprozessoren bezeichnet werden und zum Parallelverarbeitungssubsystem 512 gehören. In weiteren Ausführungsformen umfasst das Parallelverarbeitungssubsystem 512 eine Schaltung, die für Allzweck- und/oder Rechenverarbeitung optimiert ist. Auch hier kann eine solche Schaltung über eine oder mehrere PPUs integriert sein, die in Parallelverarbeitungssubsystem 512 einbezogen sind und für eine Durchführung solcher Allzweck- und/oder Rechenoperationen eingerichtet sind. In noch weiteren Ausführungsformen können die eine oder mehreren PPUs, die im Parallelverarbeitungssubsystem 512 einbezogen sind, dazu eingerichtet sein, Grafikverarbeitung, Allzweckverarbeitung und Rechenverarbeitungsoperationen durchzuführen. Der Systemspeicher 504 umfasst mindestens einen Gerätetreiber, der dazu eingerichtet ist, die Verarbeitungsoperationen der einen oder mehreren PPUs innerhalb des Parallelverarbeitungssubsystems 512 zu verwalten.
  • In verschiedenen Ausführungsformen kann Parallelverarbeitungssubsystem 512 mit einem oder mehreren der anderen Elemente der 5 zu einem einzigen System integriert sein. So kann beispielsweise Parallelverarbeitungssubsystem 512 mit CPU 502 und anderen Verbindungsschaltungen auf einem einzigen Chip integriert sein, um ein System on Chip (SoC) zu bilden.
  • In einer Ausführungsform ist CPU 502 der Masterprozessor des Rechnersystems 500, der die Vorgänge anderer Systemkomponenten steuert und koordiniert. In einer Ausführungsform gibt CPU 502 Befehle aus, die den Betrieb von PPUs steuern. In einigen Ausführungsformen ist Kommunikationspfad 513 eine PCI-Express-Verbindung, bei der jeder PPU, wie in der Technik bekannt, eigene Spuren zugeordnet sind. Es können auch andere Kommunikationspfade verwendet werden. PPU implementiert vorteilhaft eine hochparallele Verarbeitungsarchitektur. Eine PPU kann mit einer beliebigen Menge an lokalem Parallelverarbeitungsspeicher (PP-Speicher) ausgestattet sein.
  • Es sei darauf hingewiesen, dass das hier gezeigte System veranschaulichend ist und dass Abweichungen und Modifikationen möglich sind. Die Verbindungstopologie, einschließlich der Anzahl und Anordnung der Brücken, der Anzahl der CPUs 502 und die Anzahl der Parallelverarbeitungssubsysteme 512 kann beliebig geändert werden. Beispielsweise könnte in einigen Ausführungsformen Systemspeicher 504 direkt und nicht über die Speicherbrücke 505 mit CPU 502 verbunden sein, und andere Vorrichtungen würden mit Systemspeicher 504 über Speicherbrücke 505 und CPU 502 kommunizieren. In anderen Ausführungsformen kann das Parallelverarbeitungssubsystem 512 nicht an Speicherbrücke 505, sondern an I/O-Brücke 507 oder direkt an CPU 502 angeschlossen sein. In noch weiteren Ausführungsformen können I/O-Brücke 507 und Speicherbrücke 505 auf einem einzigen Chip integriert sein, anstatt als eine oder mehrere diskrete Vorrichtungen vorzuliegen. Schließlich können in bestimmten Ausführungsformen eine oder mehrere der in 5 dargestellten Komponenten nicht vorhanden sein. Beispielsweise könnte Vermittlungsknoten 516 beseitigt sein, und Netzwerkadapter 518 und Erweiterungskarten 520, 521 wären direkt mit I/O-Brücke 507 verbunden.
  • 6 ist ein Blockdiagramm einer Parallelverarbeitungseinheit (PPU) 602, die im Parallelverarbeitungssubsystem 512 der 5 enthalten ist, in Übereinstimmung mit verschiedenen Ausführungsformen. Obwohl 6 eine PPU 602 darstellt, kann das Parallelverarbeitungssubsystem 512, wie oben beschrieben, eine beliebige Anzahl von PPUs 602 umfassen. Wie dargestellt ist PPU 602 mit einem lokalen Parallelverarbeitungs-(PP)-Speicher 604 gekoppelt. PPU 602 und PP-Speicher 604 können auf Grundlage einer oder mehrerer integrierten Schaltungsvorrichtungen wie etwa programmierbaren Prozessoren, anwendungsspezifischen integrierten Schaltungen (ASICs) oder Speichervorrichtungen, oder auf jede andere technisch machbare Weise implementiert werden.
  • In einigen Ausführungsformen umfasst PPU 602 eine Grafikverarbeitungseinheit (GPU), die dazu eingerichtet werden kann, eine Grafikwiedergabe-Pipeline zu implementieren, um verschiedene Operationen im Zusammenhang mit einer Erzeugung von Pixeldaten auf Grundlage von Grafikdaten durchzuführen, die von CPU 502 und/oder Systemspeicher 504 bereitgestellt werden. Bei Verarbeitung von Grafikdaten kann PP-Speicher 604 als Grafikspeicher verwendet werden, der einen oder mehrere herkömmliche Einzelbild-Puffer und bei Bedarf auch ein oder mehrere andere Wiedergabeziele speichert. PP-Speicher 604 kann unter anderem dazu verwendet werden, Pixeldaten zu speichern und zu aktualisieren und endgültige Pixeldaten oder Anzeigebilder an eine optionale Anzeigevorrichtung 510 zur Anzeige zu liefern. In einigen Ausführungsformen kann PPU 602 auch für Allzweck-Verarbeitungs- und Rechenoperationen eingerichtet sein. In einigen Ausführungsformen kann Rechnersystem 500 eine Servereinrichtung in einer Cloud-Computing-Umgebung sein. In solchen Ausführungsformen weist Rechnersystem 500 möglicherweise keine Anzeigevorrichtung 510 auf. Stattdessen kann das Rechnersystem 500 gleichwertige Ausgabeinformationen erzeugen, indem es Befehle in Form von Nachrichten über ein Netzwerk über den Netzwerkadapter 518 sendet.
  • In einigen Ausführungsformen ist CPU 502 der Masterprozessor des Rechnersystems 500, der die Vorgänge anderer Systemkomponenten steuert und koordiniert. In einer Ausführungsform gibt CPU 502 Befehle aus, die den Betrieb von PPU 602 steuern. In einigen Ausführungsformen schreibt CPU 502 einen Befehlsstrom für PPU 602 in eine Datenstruktur (weder in 5 noch in 6 explizit dargestellt), die sich im Systemspeicher 504, PP-Speicher 604 oder einem anderen Speicherort befinden kann, der sowohl für CPU 502 als auch für PPU 602 zugänglich ist. Ein Zeiger auf die Datenstruktur wird in eine Befehlswarteschlange, im Folgenden auch als Push-Puffer bezeichnet, geschrieben, um eine Verarbeitung des Befehlsstroms in der Datenstruktur einzuleiten. In einer Ausführungsform liest PPU 602 Befehlsströme aus der Befehlswarteschlange und führt dann Befehle asynchron zum Betrieb von CPU 502 aus. In Ausführungsformen, in denen mehrere Push-Puffer erzeugt werden, können für jeden Push-Puffer mittels eines Anwendungsprogramms über den Gerätetreiber Ausführungsprioritäten festgelegt werden, um eine Abrufplanung der verschiedenen Push-Puffer zu steuern.
  • In einer Ausführungsform umfasst PPU 602 eine I/O-(Eingabe/Ausgabe)-Einheit 605, die mit dem Rest des Rechnersystems 500 über den Kommunikationspfad 513 und Speicherbrücke 505 kommuniziert. In einer Ausführungsform erzeugt I/O-Einheit 605 Pakete (oder andere Signale) zur Übertragung auf Kommunikationspfad 513 und empfängt auch alle eingehenden Pakete (oder andere Signale) von Kommunikationspfad 513, wobei die eingehenden Pakete an geeignete Komponenten von PPU 602 geleitet werden. Beispielsweise können Befehle, die sich auf Verarbeitungsaufgaben beziehen, an eine Hostschnittstelle 606 gerichtet werden, während Befehle, die sich auf Speicheroperationen beziehen (z.B. Lesen oder Schreiben in PP-Speicher 604), an ein Koppelfeld 610 gerichtet sein können. In einer Ausführungsform liest die Hostschnittstelle 606 jede Befehlswarteschlange und sendet den in der Befehlswarteschlange gespeicherten Befehlsstrom an ein Frontend 612.
  • Wie vorstehend in Verbindung mit 5 erwähnt kann die Verbindung von PPU 602 mit dem Rest von Rechnersystem 500 variiert werden. In einigen Ausführungsformen ist Parallelverarbeitungssubsystem 512, das mindestens eine PPU 602 umfasst, als Erweiterungskarte implementiert, die in einen Erweiterungssteckplatz von Rechnersystem 500 einführbar ist. In weiteren Ausführungsformen kann PPU 602 auf einem einzigen Chip mit einer Busbrücke integriert sein, wie z.B. Speicherbrücke 505 oder I/O-Brücke 507. Auch in noch weiteren Ausführungsformen können einige oder alle Elemente von PPU 602 zusammen mit CPU 502 in einer einzigen integrierten Schaltung oder einem einzigen Chip-System (SoC) umfasst sein.
  • In einer Ausführungsform überträgt Frontend 612 von Hostschnittstelle 606 empfangene Verarbeitungsaufgaben an eine (nicht dargestellte) Arbeitsverteilungseinheit innerhalb Aufgaben-/Arbeitseinheit 607. In einer Ausführungsform empfängt die Arbeitsverteilungseinheit Zeiger auf Verarbeitungsaufgaben, die als Aufgabenmetadaten (TMD) kodiert und im Speicher abgelegt sind. Die Zeiger auf TMDs sind von einem Befehlsstrom umfasst, der als Befehlswarteschlange gespeichert und durch die Frontend-Einheit 612 von der Hostschnittstelle 606 empfangen wird. Verarbeitungsaufgaben, die als TMDs kodierbar sind, umfassen Indizes, die mit den zu verarbeitenden Daten verbunden sind, sowie Zustandsparameter und Befehle, die festlegen, wie die Daten verarbeitet werden sollen. Beispielsweise könnten die Zustandsparameter und Befehle das Programm definieren, das auf den Daten ausgeführt werden soll. Beispielsweise könnten die TMD auch die Anzahl und Konfiguration des Satzes von CTAs angeben. Ganz allgemein entspricht jedes TMD einer Aufgabe. Die Aufgaben-/Arbeitseinheit 607 empfängt Aufgaben vom Frontend 612 und stellt sicher, dass GPCs 608 in einen gültigen Zustand eingerichtet sind, bevor die durch jedes der TMDs spezifizierte Verarbeitungsaufgabe eingeleitet wird. Für jedes TMD, das zur Planung der Ausführung der Verarbeitungsaufgabe verwendet wird, kann eine Priorität angegeben werden. Verarbeitungsaufgaben können auch von der Verarbeitungsclusterreihung 630 empfangen werden. Optional kann das TMD einen Parameter umfassen, der steuert, ob das TMD zum Kopf oder zum Ende einer Liste von Verarbeitungsaufgaben (oder zu einer Liste von Zeigern auf die Verarbeitungsaufgaben) hinzugefügt wird, wodurch eine weitere Ebene der Steuerung einer Ausführungspriorität bereitgestellt wird.
  • In einer Ausführungsform implementiert PPU 602 eine hochparallele Verarbeitungsarchitektur auf Grundlage einer Verarbeitungsclusterreihung 630, die einen Satz von C Allgemeinverarbeitungsclustern (GPCs) 608 umfasst mit C ≥ 1. Jeder GPC 608 ist dazu geeignet, eine große Anzahl (z.B. hunderte oder tausende) von Threads gleichzeitig auszuführen, wobei jeder Thread eine Instanz eines Programms ist. In verschiedenen Anwendungen können verschiedene GPCs 608 zugeordnet werden, um verschiedene Arten von Programmen zu verarbeiten oder verschiedene Arten von Berechnungen durchzuführen. Die Zuordnung der GPCs 608 kann je nach Arbeitsbelastung für jede Art von Programm oder Berechnung variieren.
  • In einer Ausführungsform umfasst Speicherschnittstelle 614 einen Satz von D Teileinheiten 615 mit D ≥ 1. Jede Teileinheit 615 ist mit einem oder mehreren dynamischen Wahlfreizugriffsspeichern (DRAMs) 620 gekoppelt, die sich im PPM-Speicher 604 befinden. In einigen Ausführungsformen entspricht die Anzahl der Teileinheiten 615 der Anzahl der DRAMs 620, und jede Teileinheit 615 ist mit einem anderen DRAM 620 gekoppelt. In anderen Ausführungsformen kann die Anzahl der Teileinheiten 615 von der Anzahl der DRAMs 620 abweichen. Fachpersonen auf dem Gebiet werden anerkennen, dass ein DRAM 620 durch jede andere technisch geeignete Speichervorrichtung ersetzbar ist. Im Betrieb können verschiedene Wiedergabeziele, wie Texturkarten und Einzelbild-Puffer, in mehreren DRAMs 620 gespeichert werden, sodass Teileinheiten 615 Teile jedes Wiedergabeziels parallel schreiben können, um die verfügbare Bandbreite des PP-Speichers 604 effizient zu nutzen.
  • In einer Ausführungsform kann ein vorgegebener GPC 608 Daten verarbeiten, die in einen der DRAMs 620 im PP-Speicher 604 geschrieben werden sollen. In einer Ausführungsform ist das Koppelfeld 610 dazu eingerichtet, den Ausgang jedes GPC 608 an einen Eingang einer beliebigen Teileinheit 615 oder zur weiteren Verarbeitung an einen anderen GPC 608 zu leiten. GPCs 608 kommunizieren mit Speicherschnittstelle 614 über Koppelfeld 610, um von verschiedenen DRAMs 620 zu lesen oder zu schreiben. In einigen Ausführungsformen hat Koppelfeld 610 eine Verbindung zu I/O-Einheit 605 sowie eine Verbindung zu PP-Speicher 604 über Speicherschnittstelle 614, wodurch die Verarbeitungskerne innerhalb der verschiedenen GPCs 608 mit Systemspeicher 504 oder einem anderen Speicher, der sich nicht lokal bei PPU 602 befindet, kommunizieren können. In der Ausführungsform der 6 ist Koppelfeld 610 direkt mit I/O-Einheit 605 verbunden. In verschiedenen Ausführungsformen kann Koppelfeld 610 virtuelle Kanäle verwenden, um Verkehrsströme zwischen den GPCs 608 und Teileinheiten 615 aufzuteilen.
  • In einer Ausführungsform können GPCs 608 dazu programmiert sein, Verarbeitungsaufgaben für eine Vielzahl von Anwendungen auszuführen, einschließlich, aber nicht beschränkt auf lineare und nichtlineare Datentransformationen, Filtern von Video- und/oder Audiodaten, Modellierungsoperationen (z.B. Anwenden von physikalischen Gesetzen zur Bestimmung von Position, Geschwindigkeit und anderen Attributen von Objekten), Bildwiedergabeoperationen (z.B. Tessellierungs-Shader, Vertex-Shader, Geometrie-Shader und/oder Pixel/Fragment-Shaderprogramme), allgemeine Rechenoperationen, usw. Im Betrieb ist PPU 602 dazu eingerichtet, Daten vom Systemspeicher 504 und/oder PP-Speicher 604 an eine oder mehrere On-Chip-Speichereinheiten zu übertragen, die Daten zu verarbeiten und Ergebnisdaten in Systemspeicher 504 und/oder PP-Speicher 604 zurückzuschreiben. Auf die Ergebnisdaten können dann andere Systemkomponenten zugreifen, einschließlich CPU 502, eine weitere PPU 602 innerhalb des Parallelverarbeitungssubsystems 512 oder ein anderes Parallelverarbeitungssubsystem 512 innerhalb des Rechnersystems 500.
  • In einer Ausführungsform kann eine beliebige Anzahl von PPUs 602 in ein Parallelverarbeitungssubsystem 512 aufgenommen sein. So können beispielsweise mehrere PPUs 602 auf einer einzigen Erweiterungskarte bereitgestellt sein, oder mehrere Erweiterungskarten können mit dem Kommunikationspfad 513 verbunden sein, oder eine oder mehrere PPUs 602 können in einen Brückenbaustein integriert sein. PPUs 602 in einem Multi-PPU-System können identisch oder voneinander verschieden sein. Beispielsweise können verschiedene PPUs 602 unterschiedliche Anzahlen von Verarbeitungskernen und/oder unterschiedliche Mengen an PP-Speicher 604 aufweisen. In Implementierungen mit mehreren PPUs 602 können diese PPUs parallel zu den Prozessdaten mit einem höheren Durchsatz betrieben werden als dies mit einer einzigen PPU 602 möglich ist. Systeme, die eine oder mehrere PPUs 602 umfassen, können in einer Vielzahl von Konfigurationen und Formfaktoren implementiert werden, einschließlich, aber nicht beschränkt auf Desktop-Rechner, Laptop-Rechner, persönliche tragbare Rechner oder andere tragbare Geräte, Server, Arbeitsstationen, Spielkonsolen, eingebettete Systeme und dergleichen.
  • 7 ist ein Blockdiagramm eines Allgemeinverarbeitungsclusters (GPC) 608, das von der Parallelverarbeitungseinheit (PPU) 602 der 6 umfasst ist, in Übereinstimmung mit verschiedenen Ausführungsformen. Ohne Einschränkung umfasst der GPC 608 wie dargestellt einen Pipelinemanager 705, eine oder mehrere Textureinheiten 715, eine PreROP-Einheit 725, eine Arbeitsverteilungskoppelfeld 730 und einen L1,5-Cache 735.
  • In einer Ausführungsform kann der GPC 608 dazu eingerichtet sein, eine große Anzahl von Threads parallel auszuführen, um Grafik-, Allgemeinverarbeitungs- und/oder Rechenoperationen durchzuführen. Wie hierin verwendet bezieht sich ein „Thread“ auf eine Instanz eines bestimmten Programms, das auf einem bestimmten Satz von Eingangsdaten ausgeführt wird. In einigen Ausführungsformen werden Einzelanweisung-Mehrfachdaten-(SIMD)-Anweisungserteilungsmethoden verwendet, um eine parallele Ausführung einer großen Anzahl von Threads zu unterstützen, ohne mehrere unabhängige Befehlseinheit bereitzustellen. In anderen Ausführungsformen werden Einzelanweisung-Mehrfachthread-(SIMT)-Methoden verwendet, um eine parallele Ausführung einer großen Anzahl von allgemein synchronisierten Threads zu unterstützen, wobei eine gemeinsame Befehlseinheit verwendet wird, die dazu eingerichtet ist, einem Satz von Verarbeitungseinrichtungen innerhalb des GPC 608 Anweisungen zu erteilen. Im Gegensatz zu einem SIMD-Ausführungsregime, bei dem alle Verarbeitungseinrichtungen typischerweise identische Anweisungen ausführen, ermöglicht eine SIMT-Ausführung verschiedenen Threads, leichter unterschiedlichen Ausführungspfaden durch ein bestimmtes Programm zu folgen. Durchschnittliche Fachpersonen auf dem Gebiet werden verstehen, dass ein SIMD-Verarbeitungsregime eine funktionale Teilmenge eines SIMT-Verarbeitungsregimes darstellt.
  • In einer Ausführungsform wird ein Betrieb des GPC 608 über einen Pipelinemanager 705 gesteuert, der die von einer (nicht dargestellten) Arbeitsverteilungseinheit innerhalb von Aufgaben-/Arbeitseinheit 607 empfangenen Verarbeitungsaufgaben auf einen oder mehrere Streaming-Multiprozessoren (SMs) 710 verteilt. Pipelinemanager 705 kann auch dazu eingerichtet sein, ein Arbeitsverteilungskoppelfeld 730 zu steuern, indem Ziele für die verarbeitete Datenausgabe durch SMs 710 angegeben werden.
  • In verschiedenen Ausführungsformen umfasst GPC 608 einen Satz von M SMs 710, wobei M ≥ 1. Außerdem umfasst jeder SM 710 eine Reihe von (nicht dargestellten) funktionalen Ausführungseinheiten, wie beispielsweise Ausführungseinheiten und Lade-Speicher-Einheiten. Verarbeitungsvorgänge, die für eine der funktionalen Ausführungseinheiten spezifisch sind, können in einer Pipeline zusammengefasst werden, sodass eine neue Anweisung zur Ausführung erteilt werden kann, bevor eine vorherige Anweisung ausgeführt wurde. Es kann eine beliebige Kombination von funktionalen Ausführungseinheiten innerhalb einer bestimmten SM 710 vorgesehen sein. In verschiedenen Ausführungsformen können die funktionalen Ausführungseinheiten dazu eingerichtet sein, eine Vielzahl von verschiedenen Operationen zu unterstützen, einschließlich Ganzzahl- und Gleitpunktarithmetik (z.B. Addition und Multiplikation), Vergleichsoperationen, boolesche Operationen (AND, OR, 5OR),- Bitverschiebung und Berechnung verschiedener algebraischer Funktionen (z.B. planare Interpolation und trigonometrische, exponentielle und logarithmische Funktionen, usw.). Vorteilhaft kann dieselbe funktionale Ausführungseinheit für verschiedene Operationen eingerichtet sein.
  • In verschiedenen Ausführungsformen umfasst jeder SM 710 mehrere Verarbeitungskerne. In einer Ausführungsform umfasst der SM 710 eine große Anzahl (z.B. 128, etc.) eigenständiger Verarbeitungskerne. Jeder Kern kann eine vollständig zeitverschachtelte, einfachpräzise, doppelpräzise und/oder gemischtpräzise Verarbeitungseinheit umfassen, die eine Gleitpunkt-Arithmetik-Logik-Einheit und eine Ganzzahl-Arithmetik-Logik-Einheit umfasst. In einer Ausführungsform implementieren die Gleitpunkt-Arithmetik-Logik-Einheiten den Standard IEEE 754-2008 für Gleitpunktarithmetik. In einer Ausführungsform umfassen die Kerne 64 Einfachpräzisions- (32-Bit) Gleitpunkt-Kerne, 64 Ganzzahlkerne, 32 Doppelpräzisions-(64-Bit) Gleitpunkt-Kerne und 8 Tensorkerne.
  • In einer Ausführungsform sind Tensorkerne, die dazu eingerichtet sind, Matrixoperationen durchzuführen, und in einer Ausführungsform ein oder mehrere Tensorkerne in den Kernen umfasst. Insbesondere sind die Tensorkerne dazu eingerichtet, Deep-Learning-Matrixarithmetik durchzuführen, wie z.B. Faltungsoperationen für ein Training und Schlussfolgern neuronaler Netze. In einer Ausführungsform arbeitet jeder Tensorkern auf einer 4×4-Matrix und führt eine Matrixmultiplikations- und -akkumulationsoperation D=AxB+C durch, wobei A, B, C und D 4×4-Matrizen sind.
  • In einer Ausführungsform sind die Matrixmultiplikatoreingaben A und B 16-Bit Gleitpunkt-Matrizen, während die Akkumulationsmatrizen C und D 16-Bit Gleitpunkt- oder 32-Bit Gleitpunkt-Matrizen sein können. Tensorkerne arbeiten auf 16-Bit-Gleitpunkt-Eingabedaten mit 32-Bit-Gleitpunktakkumulation. Die 16-Bit-Gleitpunkt-Multiplikation erfordert 64 Operationen und führt zu einem voll präzisen Produkt, das dann unter Verwendung von 32-Bit-Gleitpunktaddition mit den anderen Zwischenprodukten für eine 4×4×4-Matrix-Multiplikation akkumuliert wird. In der Praxis werden Tensorkerne verwendet, um viel größere, sich aus diesen kleineren Elementen zusammensetzende zweidimensionale oder höherdimensionale Matrixoperationen durchzuführen. Eine API, wie die CUDA 9 C++ API, stellt spezielle Matrixlade-, Matrixmultiplikations- und -akkumulations- sowie Matrixspeicheroperationen bereit, um Tensorkerne aus einem CUDA-C++-Programm heraus effizient zu nutzen. Auf der CUDA-Ebene unterstellt das Warp-Level-Interface Matrizen der Größe 16×16, die alle 32 Threads des Warps umfassen.
  • Neuronale Netze sind stark auf Matrixmathematikoperationen angewiesen, und komplexe mehrschichtige Netzwerke erfordern enorme Mengen an Gleitpunktleistung und Bandbreite für Effizienz und Geschwindigkeit. In verschiedenen Ausführungsformen bieten die SMs 710 mit Tausenden von für Matrixmathematikoperationen optimierten Rechenkernen und mit Dutzenden bis zu Hunderten von TFLOPS an Leistung eine Computerplattform, die dazu geeignet ist, die für auf mehrschichtigen neuronalen Netzwerken basierenden Anwendungen der künstlichen Intelligenz und des maschinellen Lernens erforderliche Leistung zu erbringen.
  • In verschiedenen Ausführungsformen kann jeder SM 710 auch mehrere Spezialfunktionseinheiten (SFUs) umfassen, die spezielle Funktionen erfüllen (z.B. Attributbewertung, reziproke Quadratwurzel und dergleichen). In einer Ausführungsform können die SFUs eine Baumdurchlaufeinheit umfassen, die dazu eingerichtet ist, eine hierarchische Baumdatenstruktur zu durchlaufen. In einer Ausführungsform können die SFUs eine Textureinheit umfassen, die dazu eingerichtet ist, Texturkartenfilteroperationen durchzuführen. In einer Ausführungsform sind die Textureinheiten dazu eingerichtet, Texturkarten (z.B. ein 2D-Array von Texturelementen) aus einem Speicher zu laden und die Texturkarten abzutasten, um abgetastete Texturwerte für eine Verwendung in von dem SM ausgeführten Shaderprogrammen zu erzeugen. In verschiedenen Ausführungsformen umfasst jeder SM 710 auch mehrere Lade-/Speichereinheiten (LSUs), die Lade- und Speicheroperationen zwischen dem gemeinsam genutzten Speicher/L1-Cache und den Registerdateien innerhalb des SM 710 implementieren.
  • In einer Ausführungsform ist jeder SM 710 dazu eingerichtet, eine oder mehrere Threadgruppen zu verarbeiten. Wie hierin verwendet bezieht sich eine „Threadgruppe“ oder ein „Warp“ auf eine Gruppe von Threads, die gleichzeitig dasselbe Programm auf verschiedenen Eingabedaten ausführen, wobei ein Thread der Gruppe einer anderen Ausführungseinheit innerhalb eines SM 710 zugeordnet ist. Eine Threadgruppe kann weniger Threads umfassen als die Anzahl der Ausführungseinheiten innerhalb des SM 710, wobei in diesem Fall ein Teil der Ausführung während der Zyklen, in denen diese Threadgruppe verarbeitet wird, untätig sein kann. Eine Threadgruppe kann auch mehr Threads umfassen als die Anzahl der Ausführungseinheiten innerhalb des SM 710, wobei die Verarbeitung über aufeinanderfolgende Taktzyklen erfolgen kann. Da jede SM 710 bis zu G Threadgruppen gleichzeitig unterstützen kann, folgt daraus, dass im GPC 608 jederzeit bis zu G*M- Threadgruppen ausgeführt werden können.
  • Zusätzlich kann in einer Ausführungsform innerhalb eines SM 710 gleichzeitig eine Vielzahl von verbundenen Threadgruppen (in verschiedenen Ausführungsphasen) aktiv sein. Diese Sammlung von Threadgruppen wird hierin als „kooperative Thread-Reihe“ („CTA“) oder „Thread-Reihe“ bezeichnet. Die Größe einer bestimmten CTA ist gleich m*k, wobei k die Anzahl der gleichzeitig ausgeführten Threads in einer Threadgruppe ist, die typischerweise ein ganzzahliges Vielfaches der Anzahl der Ausführungseinheiten innerhalb des SM 710 ist, und m die Anzahl der gleichzeitig innerhalb des SM 710 aktiven Threadgruppen ist. In einigen Ausführungsformen kann ein einzelner SM 710 gleichzeitig mehrere CTAs unterstützen, wenn diese CTAs die Granularität aufweisen, in der Arbeit auf die SMs 710 verteilt wird.
  • In einer Ausführungsform enthält jeder SM 710 einen Stufe-Eins-(L1)-Cache oder verwendet Platz in einem entsprechenden L1-Cache außerhalb des SM 710, um unter anderem Lade- und Speicheroperationen der Ausführungseinheiten zu unterstützen. Jeder SM 710 hat auch Zugriff auf (nicht dargestellte) Stufe-Zwei-(L2)-Caches, die von allen GPCs 608 in PPU 602 gemeinsam genutzt werden. Die L2-Caches können zum Übertragen von Daten zwischen Threads verwendet werden. Schließlich haben SMs 710 auch Zugriff auf chipexternen „globalen“ Speicher, der PP-Speicher 604 und/oder Systemspeicher 504 umfassen kann. Es sollte verstanden werden, dass jeder externe Speicher der PPU 602 als globaler Speicher verwendet werden kann. Zusätzlich kann, wie in 7 dargestellt, ein Stufe-Eins-Komma-Fünf-(L1.5)-Cache 735 in den GPC 608 aufgenommen und dazu eingerichtet sein, Daten zu empfangen und zu speichern, die über Speicherschnittstelle 614 durch SM 710 aus dem Speicher angefordert werden. Diese Daten können, ohne Einschränkung, Anweisungen, einheitliche Daten und konstante Daten umfassen. In Ausführungsformen mit mehreren SMs 710 innerhalb von GPC 608 können die SMs 710 nutzbringend gemeinsame Anweisungen und Daten, die im L1.5-Cache 735 zwischengespeichert sind, austauschen.
  • In einer Ausführungsform kann jeder GPC 608 eine verbundene Speicherverwaltungseinheit (MMU) 720 aufweisen, die dazu eingerichtet ist, virtuelle Adressen auf physikalische Adressen abzubilden. In verschiedenen Ausführungsformen kann sich die MMU 720 entweder im GPC 608 oder in der Speicherschnittstelle 614 befinden. Die MMU 720 umfasst einen Satz von Seitentabelleneinträgen (PTEs), die dazu verwendet werden, eine virtuelle Adresse einer physikalischen Adresse einer Kachel oder Speicherseite zuzuordnen, und optional einen Cache-Zeilenindex. Die MMU 720 kann Adressübersetzungs-Nachschlagepuffer (TLB) oder Caches umfassen, die sich innerhalb von SMs 710, in einem oder mehreren L1-Caches oder in GPC 608 befinden können.
  • In einer Ausführungsform, kann in Grafik- und Rechenanwendungen der GPC 608 so eingerichtet sein, dass jeder SM 710 mit einer Textureinheit 715 gekoppelt ist, um Texturabbildungsoperationen durchzuführen, wie z.B. ein Bestimmen von Texturabtastpositionen, ein Lesen von Texturdaten und ein Filtern von Texturdaten.
  • In einer Ausführungsform überträgt jeder SM 710 eine bearbeitete Aufgabe an das Arbeitsverteilungskoppelfeld 730, um die bearbeitete Aufgabe einem anderen GPC 608 zur weiteren Verarbeitung bereitzustellen oder die bearbeitete Aufgabe in einem (nicht dargestellten) L2-Cache, Parallelverarbeitungsspeicher 604 oder Systemspeicher 504 über das Koppelfeld 610 zu speichern. Darüber hinaus ist eine Pre-Raster-Operationen-(preROP)-Einheit 725 dazu eingerichtet, Daten von dem SM 710 zu empfangen, Daten an eine oder mehrere Raster-Operationen-(ROP)-Einheiten innerhalb von Teileinheiten 615 zu leiten, Optimierungen für ein Farbmischen durchzuführen, Pixelfarbdaten zu organisieren und Adressübersetzungen durchzuführen.
  • Es wird anerkannt werden, dass die hierin beschriebene Architektur veranschaulichend ist und dass Abweichungen und Modifikationen möglich sind. Unter anderem kann eine beliebige Anzahl von Verarbeitungseinheiten, wie etwa SMs 710, Textureinheiten 715 oder preROP-Einheiten 725, in die GPC 608 integriert sein. Darüber hinaus kann, wie vorstehend in Verbindung mit 6 beschrieben, PPU 602 eine beliebige Anzahl von GPCs 608 umfassen, die so eingerichtet sind, dass sie einander funktional ähnlich sind, sodass ein Ausführungsverhalten nicht davon abhängt, welche GPC 608 eine bestimmte Verarbeitungsaufgabe empfängt. Darüber hinaus arbeitet jeder GPC 608 unabhängig von den anderen GPCs 608 in PPU 602, um Aufgaben für ein oder mehrere Anwendungsprogramme auszuführen.
  • Zusammenfassend verwenden die offenbarten Methoden mehrere Generatormodelle, um auf Grundlage von semantischen Darstellungen von Szenen in Bildern Objekte in den Szenen zu synthetisieren und zu platzieren. Unterscheidbare affine Transformationen, die Begrenzungsrahmen für die Objekte darstellen, können zwischen den Generatormodellen ausgetauscht werden. Fehler, die aus Vorhersagen von Unterscheidungsmodellen resultieren, die mit den Generatormodellen verbunden sind, können gemeinsam mit den affinen Transformationen dazu verwendet werden, die Parameter der Generatormodelle zu aktualisieren. Zusätzlich können im Training überwachte Pfade, die Grundwahrheitsinstanzen für die Generatormodelle umfassen, dazu verwendet werden, die Vielfalt der Ausgaben der Generatormodelle zu erhöhen.
  • Ein technologischer Vorteil der offenbarten Methoden ist, dass die affine Transformation eine unterscheidbare Verbindung zwischen den beiden Generatormodellen bereitstellt. Dadurch kann ein gemeinsames Training und/oder Aktualisieren der Generatormodelle unter Verwendung der unterscheidbaren Verbindung durchgeführt werden, sodass die Generatormodelle als Ende-zu-Ende-Modell des maschinellen Lernens funktionieren, das die gemeinsame Verteilung der Positionen und Formen verschiedener Objekttypen in semantischen Darstellungen von Bildern erlernt. Ein weiterer technologischer Vorteil der offenbarten Methoden ist eine erhöhte Vielfalt der Ausgaben der Generatormodelle, die durch das Training der Generatormodelle unter Verwendung von überwachten und unüberwachten Pfaden erzielt wird. Folglich bieten die offenbarten Methoden technologische Verbesserungen bei Training, Ausführung und Leistung von Modellen des maschinellen Lernens, Rechnersystemen, Anwendungen und/oder Methoden für kontextuelles Einfügen von Objekten in Bildern und/oder Szenen.
  • 1. In einigen Ausführungsformen umfasst ein Verfahren ein Anwenden eines ersten Generatormodells auf eine semantische Darstellung eines Bildes, um eine affine Transformation zu erzeugen, wobei die affine Transformation einen Begrenzungsrahmen darstellt, der mit mindestens einem Bereich innerhalb des Bildes verbunden ist; Anwenden eines zweiten Generatormodells auf die affine Transformation und die semantische Darstellung, um eine Form eines Objekts zu erzeugen; und Einfügen des Objekts in das Bild auf Grundlage des Begrenzungsrahmens und der Form.
  • 2. Verfahren nach Klausel 1, ferner umfassend Berechnen eines oder mehrerer Fehler, die mit dem ersten Generatormodell und dem zweiten Generatormodell verbunden sind, auf Grundlage von Ausgaben von Unterscheidungsmodellen, die mit mindestens einem aus dem ersten Generatormodell und dem zweiten Generatormodell verbunden sind; und Aktualisieren von Parametern von mindestens einem aus dem ersten Generatormodell und dem zweiten Generatormodell auf Grundlage von dem einen oder den mehreren Fehlern.
  • 3. Verfahren nach einer der Klauseln 1-2, wobei ein Aktualisieren der Parameter ein Ausführen eines unüberwachten Pfades zum Aktualisieren der Parameter des ersten Generatormodells und des zweiten Generatormodells auf Grundlage eines ersten Fehlers in dem einen oder den mehreren Fehlern umfasst;
    und ein Ausführen eines überwachten Pfades mit Grundwahrheiten für das erste Generatormodell und das zweite Generatormodell zum Aktualisieren der Parameter des ersten und zweiten Generatormodells auf Grundlage eines zweiten Fehlers in dem einen oder den mehreren Fehlern umfasst.
  • 4. Verfahren nach einer der Klauseln 1-3, wobei der erste Fehler einen unüberwachten konträren Verlust umfasst, der aus einem ersten Unterscheidungsmodell für mindestens eines der ersten und zweiten Generatormodelle berechnet wird.
  • 5. Verfahren nach einer der Klauseln 1-4, wobei der zweite Fehler einen überwachten konträren Verlust umfasst, der aus einem zweiten Unterscheidungsmodell für mindestens eines der ersten und zweiten Generatormodelle berechnet wird.
  • 6. Verfahren nach einer der Klauseln 1-5, wobei der erste Fehler einen Rekonstruktionsverlust umfasst, der mit einer Zufallseingabe in mindestens eines der ersten und zweiten Generatormodelle verbunden ist.
  • 7. Verfahren nach einer der Klauseln 1-6, wobei ein mit dem ersten Generatormodell verbundenes erstes Unterscheidungsmodell ein Anordnungsunterscheidungsmodell umfasst, das eine Position des Begrenzungsrahmens als echt oder gefälscht einstuft, oder ein Affinitätsunterscheidungsmodell, das die affine Transformation als echt oder gefälscht einstuft.
  • 8. Verfahren nach einer der Klauseln 1-7, wobei ein mit dem zweiten Generatormodell verbundenes erstes Unterscheidungsmodell ein Anordnungsunterscheidungsmodell umfasst, das eine Position der Form als echt oder gefälscht einstuft, oder ein Formunterscheidungsmodell, das die Form als echt oder gefälscht einstuft.
  • 9. Verfahren nach einer der Klauseln 1-8, wobei ein Einfügen des Objekts in das Bild auf Grundlage des Begrenzungsrahmens und der Form ein Anwenden der affinen Transformation auf die Form umfasst.
  • 10. Verfahren nach einer der Klauseln 1-9, wobei ein jedes aus dem ersten Generatormodell und dem zweiten Generatormodell mindestens einen aus einem Variational Autoencoder (VAE) und einem Spatial Transformer Network umfasst.
  • 11. In einigen Ausführungsformen speichert ein nichtflüchtiges, rechnerlesbares Medium Anweisungen, die bei Ausführung durch einen Prozessor den Prozessor dazu veranlassen, mindestens ein erstes Generatormodell auf eine semantische Darstellung eines Bildes anzuwenden, um eine affine Transformation zu erzeugen, wobei die affine Transformation einen Begrenzungsrahmen darstellt, der mit mindestens einem Bereich innerhalb des Bildes verbunden ist; ein zweites Generatormodell auf die affine Transformation und die semantische Darstellung anzuwenden, um eine Form eines Objekts zu erzeugen; und das Objekt auf Grundlage des Begrenzungsrahmens und der Form in das Bild einzufügen.
  • 12. Nichtflüchtiges, rechnerlesbares Medium nach Klausel 11, ferner umfassend Programmanweisungen, um den Prozessor dazu zu veranlassen, auf Grundlage von Ausgaben von Unterscheidungsmodellen, die mit mindestens einem aus dem ersten Generatormodell und dem zweiten Generatormodell verbunden sind, einen oder mehrere Fehler zu berechnen, die mit dem ersten Generatormodell und dem zweiten Generatormodell verbunden sind; und auf Grundlage von dem einen oder den mehreren Fehlern Parameter von mindestens einem aus dem ersten Generatormodell und dem zweiten Generatormodell zu aktualisieren.
  • 13. Nichtflüchtiges, rechnerlesbares Medium nach einer der Klauseln 11-12, wobei ein Aktualisieren der Parameter ein Ausführen eines unüberwachten Pfades zum Aktualisieren der Parameter des ersten Generatormodells und des zweiten Generatormodells auf Grundlage eines ersten Fehlers in dem einen oder den mehreren Fehlern
    und ein Ausführen eines überwachten Pfades mit Grundwahrheiten für das erste Generatormodell und das zweite Generatormodell zum Aktualisieren der Parameter der ersten und zweiten Generatormodelle auf Grundlage eines zweiten Fehlers in dem einen oder den mehreren Fehlern umfasst.
  • 14. Nichtflüchtiges, rechnerlesbares Medium nach einer der Klauseln 11-13, wobei die ersten und zweiten Fehler mindestens einen aus einem unüberwachten konträren Verlust, der aus einem ersten Unterscheidungsmodell berechnet wird, einen überwachten konträren Verlust, der aus einem zweiten Unterscheidungsmodell berechnet wird, und einen Rekonstruktionsverlust, der mit Zufallseingaben in mindestens eines aus dem ersten Generatormodell und dem zweiten Generatormodell verbunden ist, umfassen.
  • 15. Nichtflüchtiges, rechnerlesbares Medium nach einer der Klauseln 11-14, wobei die Unterscheidungsmodelle ein Anordnungsunterscheidungsmodell umfassen, das eine Position des Begrenzungsrahmens als echt oder gefälscht einstuft, ein Affinitätsunterscheidungsmodell, das die affine Transformation als echt oder gefälscht einstuft, ein Anordnungsunterscheidungsmodell, das eine Position der Form als echt oder gefälscht einstuft, und ein Formunterscheidungsmodell, das die Form als echt oder gefälscht einstuft.
  • 16. In einigen Ausführungsformen umfasst ein System einen Speicher, der eine oder mehrere Anweisungen speichert;
    und einen Prozessor, der die Anweisungen ausführt, um mindestens ein erstes Generatormodell auf eine semantische Darstellung eines Bildes anzuwenden, um eine affine Transformation zu erzeugen, wobei die affine Transformation einen Begrenzungsrahmen darstellt, der mit mindestens einem Bereich innerhalb des Bildes verbunden ist; ein zweites Generatormodell auf die affine Transformation und die semantische Darstellung anzuwenden, um eine Form eines Objekts zu erzeugen; und das Objekt auf Grundlage des Begrenzungsrahmens und der Form in das Bild einzufügen.
  • System nach Klausel 16, wobei der Prozessor die Anweisungen ausführt, um einen oder mehrere mit dem ersten Generatormodell und dem zweiten Generatormodell verbundene Fehler auf Grundlage von Ausgaben von Unterscheidungsmodellen, die mit mindestens einem aus dem ersten Generatormodell und dem zweiten Generatormodell verbunden sind, zu berechnen; und Parameter von mindestens einem aus dem ersten Generatormodell und dem zweiten Generatormodell auf Grundlage von dem einen oder den mehreren Fehlern in dem einen oder den mehreren Fehlern zu aktualisieren.
  • System nach einer der Klauseln 16-17, wobei ein Aktualisieren der Parameter ein Ausführen eines unüberwachten Pfades zum Aktualisieren der Parameter des ersten Generatormodells und des zweiten Generatormodells auf Grundlage eines ersten Fehlers in dem einen oder den mehreren Fehlern und ein Ausführen eines überwachten Pfades mit Grundwahrheiten für das erste Generatormodell und das zweite Generatormodell zum Aktualisieren der Parameter der ersten und zweiten Generatormodelle auf Grundlage von einem zweiten Fehler umfasst.
  • System nach einer der Klauseln 16-18, wobei die ersten und zweiten Fehler mindestens einen aus einem unüberwachten konträren Verlust, der aus einem ersten Unterscheidungsmodell berechnet wird, einem überwachten konträren Verlust, der aus einem zweiten Unterscheidungsmodell berechnet wird, und einem Rekonstruktionsverlust, der mit Zufallseingaben in mindestens eines aus dem ersten Generatormodell und dem zweiten Generatormodell verbunden ist, umfassen.
  • 20. System nach einer der Klauseln 16-19, wobei ein Einfügen des Objekts in das Bild auf Grundlage des Begrenzungsrahmens und der Form ein Anwenden der affinen Transformation auf die Form umfasst.
  • Jede und alle Kombinationen beliebiger der in den Ansprüchen beschriebenen Anspruchselemente und/oder der in dieser Anmeldung dargestellten Elemente fallen jedenfalls in den vorgesehenen Geltungsbereich der vorliegenden Offenbarung und des Schutzes.
  • Die Beschreibungen der verschiedenen Ausführungsformen wurden zur Veranschaulichung vorgelegt, sollen aber nicht abschließend oder auf die offenbarten Ausführungsformen beschränkt sein. Viele Modifikationen und Variationen sind für jene mit durchschnittlichen Fertigkeiten auf dem Gebiet offensichtlich, ohne vom Geltungsbereich und Wesen der beschriebenen Ausführungsformen abzuweichen.
  • Aspekte der vorliegenden Ausführungsformen können als System, Verfahren oder Computerprogrammprodukt verkörpert werden. Dementsprechend können Aspekte der vorliegenden Offenbarung in Form einer vollständigen Hardwareausführungsform, einer vollständigen Softwareausführungsform (einschließlich Firmware, residenter Software, Mikrocode usw.) oder einer Ausführungsform, die Software- und Hardwareaspekte kombiniert, vorliegen, die alle ganz allgemein als „Modul“ oder „System“ bezeichnet werden können.
    Darüber hinaus kann jegliche(s) in dieser Offenbarung beschriebene Hardware- und/oder Softwaremethode, Verfahren, Funktion, Komponente, Einrichtung, Modul oder System als ein Schaltkreis oder ein Satz von Schaltkreisen implementiert werden. Darüber hinaus können Aspekte der vorliegenden Offenbarung in Form eines Computerprogrammprodukts vorliegen, das in einem oder mehreren rechnerlesbaren Medien mit einem darauf verkörperten rechnerlesbaren Programmcode verkörpert ist.
  • Es kann jegliche Kombination aus einem oder mehreren rechnerlesbaren Medien verwendet werden. Das rechnerlesbare Medium kann ein rechnerlesbares Signalmedium oder ein rechnerlesbares Speichermedium sein. Ein rechnerlesbares Speichermedium kann beispielsweise, aber ohne Einschränkung, ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleitersystem, ein Apparat oder eine Vorrichtung oder eine geeignete Kombination der vorgenannten sein. Konkretere Beispiele (eine nichterschöpfende Liste) des rechnerlesbaren Speichermediums würden folgende umfassen: eine elektrische Verbindung mit einem oder mehreren Kabeln, eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (RAM), ein Nur-Lese-Speicher (ROM), ein löschbarer programmierbarer Nur-Lese-Speicher (EPROM oder Flash-Speicher), eine Glasfaser, ein tragbarer Nur-Lese-Speicher (CD-ROM), eine optische Speichervorrichtung, eine magnetische Speichervorrichtung oder eine geeignete Kombination der vorgenannten. Im Kontext dieses Dokuments kann ein rechnerlesbares Speichermedium jedes materielle Medium sein, das ein Programm zur Verwendung durch oder in Verbindung mit einem Befehlsausführungssystem, -apparat oder einer -vorrichtung umfassen oder speichern kann.
  • Aspekte der vorliegenden Offenbarung werden vorstehend unter Bezugnahme auf Flussdiagrammdarstellungen und/oder Blockdiagramme von Verfahren, Apparaten (Systemen) und Computerprogrammprodukten in Übereinstimmung mit den Ausführungsformen der Offenbarung beschrieben. Es versteht sich, dass jeder Block der Flussdiagramm-Illustrationen und/oder Blockdiagramme und Kombinationen von Blöcken in den Flussdiagramm-Illustrationen und/oder Blockdiagrammen durch Computerprogrammanweisungen implementiert werden können. Diese Computerprogrammanweisungen können einem Prozessor eines Allzweckrechners, eines Spezialrechners oder einer anderen programmierbaren Datenverarbeitungsvorrichtung zur Herstellung einer Maschine zur Verfügung gestellt werden. Die Anweisungen ermöglichen bei Ausführung über den Prozessor des Rechners oder der der anderen programmierbaren Datenverarbeitungsvorrichtung die Implementierung der in dem Flussdiagramm und/oder Blockschaltbild oder in den Blocks angegebenen Funktionen/Aktionen. Solche Prozessoren können, ohne Einschränkung, Allzweckprozessoren, Spezialprozessoren, anwendungsspezifische Prozessoren oder feldprogrammierbare Gatteranordnungen sein.
  • Die Flussdiagramme und Blockdiagramme in den Figuren veranschaulichen die Architektur, Funktionalität und den Betrieb möglicher Implementierungen von Systemen, Verfahren und Computerprogrammprodukten in Übereinstimmung mit verschiedenen Ausführungsformen der vorliegenden Offenbarung. In diesem Zusammenhang kann jeder Block in den Fluss- oder Blockdiagrammen ein Modul, Segment oder Abschnitt eines Codes darstellen, der eine oder mehrere ausführbare Anweisungen zur Implementierung der angegebenen logischen Funktion(en) umfasst. Es ist auch zu beachten, dass in einigen alternativen Implementierungen die in dem Block angegebenen Funktionen außerhalb der in den Figuren angegebenen Reihenfolge auftreten können. So können beispielsweise zwei aufeinanderfolgende Blocks im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können je nach Funktionalität manchmal in umgekehrter Reihenfolge ausgeführt werden. Es wird auch festgestellt werden, dass jeder Block der Blockdiagramme und/oder der Flussdiagrammdarstellung und Kombinationen von Blöcken in den Blockdiagrammen und/oder der Flussdiagrammdarstellung durch hardwarebasierte Spezialzweck-Systeme implementiert werden kann, die die angegebenen Funktionen oder Handlungen ausführen, oder Kombinationen von Spezialzweck-Hardware und Computeranweisungen.
  • Während sich das Vorangegangene auf Ausführungsformen der vorliegenden Offenbarung bezieht, können andere und weitere Ausführungsformen der Offenbarung erarbeitet werden, ohne vom grundlegenden Geltungsbereich abzuweichen, und der Umfang davon wird durch die nachfolgenden Ansprüche bestimmt.

Claims (10)

  1. Verfahren, umfassend: Anwenden eines ersten Generatormodells auf eine semantische Darstellung eines Bildes, um eine affine Transformation zu erzeugen, wobei die affine Transformation einen Begrenzungsrahmen darstellt, der mit mindestens einem Bereich innerhalb des Bildes verbunden ist; Anwenden eines zweiten Generatormodells auf die affine Transformation und die semantische Darstellung, um eine Form eines Objekts zu erzeugen; und Einfügen des Objekts in das Bild auf Grundlage des Begrenzungsrahmens und der Form.
  2. Verfahren nach Anspruch 1, ferner umfassend: Berechnen eines oder mehrerer Fehler, die mit dem ersten Generatormodell und dem zweiten Generatormodell verbunden sind, auf Grundlage von Ausgaben von Unterscheidungsmodellen, die mit mindestens einem aus dem ersten Generatormodell und dem zweiten Generatormodell verbunden sind; und Aktualisieren von Parametern von mindestens einem aus dem ersten Generatormodell und dem zweiten Generatormodell auf Grundlage von dem einem oder den mehreren Fehlern.
  3. Verfahren nach Anspruch 2, wobei das Aktualisieren der Parameter umfasst: Ausführen eines unüberwachten Pfades zum Aktualisieren der Parameter des ersten Generatormodells und des zweiten Generatormodells auf Grundlage eines ersten Fehlers in dem einen oder den mehreren Fehlern; und Ausführen eines überwachten Pfades, der Grundwahrheiten für das erste Generatormodell und das zweite Generatormodell umfasst, um die Parameter der ersten und zweiten Generatormodelle auf Grundlage eines zweiten Fehlers in dem einen oder den mehreren Fehlern zu aktualisieren.
  4. Verfahren nach Anspruch 3, wobei der erste Fehler einen unüberwachten konträren Verlust umfasst, der aus einem ersten Unterscheidungsmodell für mindestens eines aus den ersten und zweiten Generatormodellen berechnet wird.
  5. Verfahren nach Anspruch 4, wobei der zweite Fehler einen überwachten konträren Verlust umfasst, der aus einem zweiten Unterscheidungsmodell für mindestens eines aus den ersten und zweiten Generatormodellen berechnet wird.
  6. Verfahren nach einem der Ansprüche 3 bis 5, wobei der erste Fehler einen Rekonstruktionsverlust umfasst, der mit einer Zufallseingabe in mindestens eines der ersten und zweiten Generatormodelle verbunden ist.
  7. Verfahren nach einem der Ansprüche 2 bis 6, wobei ein mit dem ersten Generatormodell verbundenes erstes Unterscheidungsmodell ein Anordnungsunterscheidungsmodell umfasst, das eine Position des Begrenzungsrahmens als echt oder gefälscht einstuft, oder ein Affinitätsunterscheidungsmodell, das die affine Transformation als echt oder gefälscht ei nstuft.
  8. Verfahren nach einem der Ansprüche 2 bis 7, wobei ein mit dem zweiten Generatormodell verbundenes erstes Unterscheidungsmodell ein Anordnungsunterscheidungsmodell umfasst, das eine Position der Form als echt oder gefälscht einstuft, oder ein Formunterscheidungsmodell, das die Form als echt oder gefälscht einstuft.
  9. Verfahren nach einem der vorhergehenden Ansprüche, wobei ein Einfügen des Objekts in das Bild auf Grundlage des Begrenzungsrahmens und der Form ein Anwenden der affinen Transformation auf die Form umfasst.
  10. Verfahren nach einem der vorhergehenden Ansprüche, wobei jedes aus dem ersten Generatormodell und dem zweiten Generatormodell mindestens einen aus einem Variational Autoencoder (VAE) und einem Spatial Transformer Network umfasst.
DE102019123455.7A 2018-09-04 2019-09-02 Gemeinsame synthese und platzierung von objekten in szenen Pending DE102019123455A1 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201862726872P 2018-09-04 2018-09-04
US62/726,872 2018-09-04
US16/201,934 US20200074707A1 (en) 2018-09-04 2018-11-27 Joint synthesis and placement of objects in scenes
US16/201,934 2018-11-27

Publications (1)

Publication Number Publication Date
DE102019123455A1 true DE102019123455A1 (de) 2020-03-05

Family

ID=69526529

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102019123455.7A Pending DE102019123455A1 (de) 2018-09-04 2019-09-02 Gemeinsame synthese und platzierung von objekten in szenen

Country Status (2)

Country Link
US (1) US20220335672A1 (de)
DE (1) DE102019123455A1 (de)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE102018128592A1 (de) * 2017-11-15 2019-05-16 Nvidia Corporation Erzeugen eines Bilds unter Verwendung einer Map, die verschiedene Klassen von Pixeln repräsentiert
WO2020014294A1 (en) * 2018-07-11 2020-01-16 Google Llc Learning to segment via cut-and-paste
US11651554B2 (en) * 2021-07-30 2023-05-16 The Boeing Company Systems and methods for synthetic image generation
US11900534B2 (en) * 2021-07-30 2024-02-13 The Boeing Company Systems and methods for synthetic image generation
CN113890109B (zh) * 2021-09-05 2023-08-25 三峡大学 具有时间空间相关性的多风电场功率日场景生成方法

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9158995B2 (en) * 2013-03-14 2015-10-13 Xerox Corporation Data driven localization using task-dependent representations
US10599958B2 (en) * 2017-12-14 2020-03-24 Avigilon Corporation Method and system for classifying an object-of-interest using an artificial neural network
US10592779B2 (en) * 2017-12-21 2020-03-17 International Business Machines Corporation Generative adversarial network medical image generation for training of a classifier
US10818080B2 (en) * 2018-07-25 2020-10-27 Disney Enterprises, Inc. Piecewise-polynomial coupling layers for warp-predicting neural networks
US11880770B2 (en) * 2018-08-31 2024-01-23 Intel Corporation 3D object recognition using 3D convolutional neural network with depth based multi-scale filters

Also Published As

Publication number Publication date
US20220335672A1 (en) 2022-10-20

Similar Documents

Publication Publication Date Title
DE102019123455A1 (de) Gemeinsame synthese und platzierung von objekten in szenen
DE102018117813A1 (de) Zeitlich stabile Datenrekonstruktion mit einem externen rekurrenten neuronalen Netzwerk
DE102018126670A1 (de) Fortschreitende Modifizierung von generativen adversativen neuronalen Netzen
DE102019130889A1 (de) Schätzung der tiefe eines mit einer monokularen rgb-kamera aufgenommenen videodatenstroms
DE102018108324A1 (de) System und Verfahren zur Schätzung eines optischen Flusses
DE102019130702A1 (de) Stilbasierte architektur für generative neuronale netzwerke
DE102018132069A1 (de) Äquivariante Orientierungspunkt-Transformation für Orientierungspunkt-Lokalisierung
DE102019102279A1 (de) Erzeugung von synthetischen Bildern zum Trainieren eines Neuronal-Netzwerkmodells
DE102019130311A1 (de) Transponierte schwachbesetzte matrix multipliziert mit dichtbesetzter matrix für ein training neuronaler netzwerke
DE102019102009A1 (de) Reduzierung des rauschens während des renderings durch parallele path-space-filterung unter verwendung von hashing
DE102019128750A1 (de) Reduzierung des detailgrades eines polygonnetzes, um eine komplexität einer bildlich wiedergegebenen geometrie innerhalb einer szene zu verringern
DE102019103310A1 (de) Schätzer for einen optimalen betriebspunkt für hardware, die unter einer beschränkung der gemeinsam genutzten leistung/wärme arbeitet
DE102018009315A1 (de) Verfahren tiefgehenden Lernens zum Trennen von Reflexions- und Übertragungsbildern, die an einer halbreflektierenden Oberfläche in einem Computerbild einer Realweltszene sichtbar sind
DE102021105249A1 (de) Mikrotraining zur iterativen verfeinerung eines neuronalen netzes mit wenigen anpassungen
DE102022119386A1 (de) Verfahren und einrichtung zum durchführen einer dichten vorhersage unter verwendung von transformatorblöcken
DE102018124211A1 (de) Lernbasierte Kameraposenschätzung von Bildern einer Umgebung
DE102019106996A1 (de) Darstellen eines neuronalen netzwerks unter verwendung von pfaden innerhalb des netzwerks zum verbessern der leistung des neuronalen netzwerks
DE102019103319A1 (de) Stochastisches runden von zahlenwerten
DE102019134020A1 (de) Dekompprimierungstechniken zur verarbeitung komprimierter daten, die für künstliche neuronale netzwerke geeignet sind
DE102018114799A1 (de) Halbüberwachtes lernen zur orientierungspunktlokalisierung
DE102021130031A1 (de) Erscheinungsbildgesteuerte automatische dreidimensionale modellierung
DE112019001978T5 (de) Verbesserung des realismus von szenen mit wasseroberflächen beim rendern
DE102022121509A1 (de) Einzelbild-inversrendering
DE102021111335A1 (de) Techniken zum dynamischen komprimieren von speicherregionen, die einen einheitlichen wert haben
DE102022103358A1 (de) Training für maschinelles lernen im logarithmischen zahlensystem

Legal Events

Date Code Title Description
R012 Request for examination validly filed