DE102019112595A1 - GUIDED HALLUCATION FOR MISSING PICTURE CONTENT USING A NEURONAL NETWORK - Google Patents

GUIDED HALLUCATION FOR MISSING PICTURE CONTENT USING A NEURONAL NETWORK Download PDF

Info

Publication number
DE102019112595A1
DE102019112595A1 DE102019112595.2A DE102019112595A DE102019112595A1 DE 102019112595 A1 DE102019112595 A1 DE 102019112595A1 DE 102019112595 A DE102019112595 A DE 102019112595A DE 102019112595 A1 DE102019112595 A1 DE 102019112595A1
Authority
DE
Germany
Prior art keywords
image
resolution
neural network
semantic
data
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
DE102019112595.2A
Other languages
German (de)
Inventor
Seung-Hwan Baek
Kihwan Kim
Jinwei Gu
Orazio Gallo
Alejandro Jose Troccoli
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/353,195 external-priority patent/US10922793B2/en
Application filed by Nvidia Corp filed Critical Nvidia Corp
Publication of DE102019112595A1 publication Critical patent/DE102019112595A1/en
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/10Segmentation; Edge detection
    • G06T7/11Region-based segmentation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/50Image enhancement or restoration using two or more images, e.g. averaging or subtraction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/60Image enhancement or restoration using machine learning, e.g. neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/77Retouching; Inpainting; Scratch removal
    • 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]

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Image Processing (AREA)

Abstract

Ein fehlender Bildinhalt wird mit einem neuronalen Netz erzeugt. Bei einer Ausführungsform werden ein hochaufgelöstes Bild und eine zugeordnete hochaufgelöste semantische Labelkarte von einem niedrigaufgelösten Bild und einer zugeordneten niedrigaufgelösten semantischen Labelkarte erzeugt. Dem Eingabe-Paar aus Bild / Karte (niedrigaufgelöstem Bild und zugeordneter niedrigaufgelösten semantischen Labelkarte) fehlt es an Details und damit an Inhalt. Anstatt einfach das Eingabepaar aus Bild / Karte zu verbessern, werden Daten, welche in dem Eingabepaar aus Bild / Karte fehlen, durch ein neuronales Netz improvisiert oder halluziniert, wobei ein plausibler Inhalt erzeugt wird, während eine Raum-Zeit-Konsistenz aufrechterhalten wird. Der fehlende Inhalt wird halluziniert, um einen detaillierten vergrößerten Ausschnitt eines Bildes zu erzeugen. Der fehlende Inhalt wird halluziniert, um verschiedene Variationen eines Bildes zu erzeugen, wie z.B. unterschiedliche Jahreszeiten oder Wetterbedingungen für ein Fahrvideo.A missing image content is generated with a neural network. In one embodiment, a high-resolution image and an associated high-resolution semantic label map are generated from a low-resolution image and an associated low-resolution semantic label map. The input pair of image / map (low-resolution image and associated low-resolution semantic label map) lacks details and thus content. Rather than simply improving the image / map input pair, data missing from the image / map input pair is improvised or hallucinated through a neural network, producing plausible content while maintaining space-time consistency. The missing content is hallucinated to produce a detailed enlarged section of an image. The missing content is hallucinated to produce various variations of an image, such as different seasons or weather conditions for a driving video.

Description

TECHNISCHER BEREICHTECHNICAL PART

Die vorliegende Offenbarung bezieht sich auf die Bilderzeugung, und insbesondere auf die Erzeugung fehlender Bildinhalte unter Verwendung eines neuronalen Netzes.The present disclosure relates to image generation, and more particularly to generation of missing image content using a neural network.

HINTERGRUNDBACKGROUND

Eine bestimmte Art der Erzeugung von Bildinhalten wird verwendet, um manuell Bilder zu erstellen, die bei der Betrachtung in einer Sequenz einen bestimmten Spezialeffekt aufweisen. Eine Sequenz von Bildern, bei denen jedes Bild rekursiv in sich selbst erscheint, entspricht dem „Droste-Effekt“. Mit anderen Worten, eine kleinere Version des Bildes ist in einem Originalbild vorhanden, so dass, wenn eine Kamera in das Originalbild hineinzoomt, die kleinere Version wiederholt eine Kopie des Originalbildes wird. Eine solche Sequenz von Bildern wird manuell erzeugt, da die begrenzte Auflösung des Originalbildes nicht die erforderlichen Daten bereitstellt, um automatisch eine zunehmend höher aufgelöste Version des kleineren Bildes zu erzeugen, wenn die Kamera hineinzoomt, bis die höher aufgelöste Version des kleineren Bildes zur Kopie des Originalbildes wird. Die manuelle Erzeugung der Bildsequenzen ist langsam und erfordert erfahrene Fachleute. Es besteht die Notwendigkeit, diese Probleme und/oder andere Probleme im Zusammenhang mit dem Stand der Technik zu behandeln.One way of generating image content is to manually create images that have some special effect when viewed in a sequence. A sequence of images in which each image recursively appears in itself corresponds to the "Droste effect". In other words, a smaller version of the image is present in an original image, so that when a camera is zooming into the original image, the smaller version repeatedly becomes a copy of the original image. Such a sequence of images is generated manually because the limited resolution of the original image does not provide the necessary data to automatically generate an increasingly higher resolution version of the smaller image as the camera zooms in, until the higher resolution version of the smaller image replicates the image Original picture will. The manual generation of image sequences is slow and requires experienced professionals. There is a need to address these problems and / or other problems associated with the prior art.

ZUSAMMENFASSUNGSUMMARY

Fehlende Bildinhalte werden über ein neuronales Netz erzeugt. In einer Ausführungsform werden ein vollständiges Bild und eine zugehörige vollständige semantische Labelkarte aus einem unvollständigen Bild und einer zugehörigen unvollständigen semantischen Labelkarte erzeugt. Dem Paar aus unvollständigem Bild / semantischer Labelkarte entsprechen im Vergleich zu dem Paar aus vollständigem Bild/semantischer Labelkarte fehlende Daten. In einer Ausführungsform ist das eingegebene Paar aus Bild / Karte ein niedrigaufgelöstes Bild bzw. Bild mit einer niedrigen Auflösung und eine zugehörige niedrigaufgelöste semantische Labelkarte bzw. semantische Labelkarte mit niedriger Auflösung, wobei Details fehlen und daher Daten oder Inhalte fehlen. Anstatt das unvollständige Paar aus Bild / Karte einfach zu verbessern (z.B. durch Upsampling), werden die fehlenden Daten durch ein neuronales Netz improvisiert oder halluziniert, wobei plausible Inhalte unter Beibehaltung der räumlich-zeitlichen Konsistenz erzeugt werden. In einer Ausführungsform werden die fehlenden Daten halluziniert, um einen detaillierten, vergrößerten Ausschnitt eines Bildes zu erzeugen. In einer Ausführungsform werden die fehlenden Daten halluziniert, um verschiedene Variationen eines Bildes zu erzeugen, wie beispielsweise verschiedene Jahreszeiten oder Wetterbedingungen für ein Fahrvideo.Missing image content is generated via a neural network. In one embodiment, a complete image and associated complete semantic label map are generated from an incomplete image and an associated incomplete semantic label map. The incomplete image / semantic label card pair has missing data compared to the full image / semantic label card pair. In one embodiment, the input image / map pair is a low resolution, low resolution image and a low resolution, low resolution, semantic label map, with details missing and therefore missing data or content. Rather than simply enhancing the incomplete image / map pair (e.g., by upsampling), the missing data is improvised or hallucinated through a neural network, producing plausible content while maintaining spatial-temporal consistency. In one embodiment, the missing data is hallucinated to produce a detailed, enlarged section of an image. In one embodiment, the missing data is hallucinated to produce various variations of an image, such as different seasons or weather conditions for a driving video.

Ein Verfahren, ein computerlesbares Medium und ein System werden offenbart, um durch ein Modell eines neuronalen Netzes ein erstes Bild, dem ein Teil der Bilddaten fehlt, und eine erste semantische Karte, die dem ersten Bild entspricht und bei der ein Teil der semantischen Daten fehlt, zu empfangen. Das Modell des neuronalen Netzes verarbeitet das erste Bild und die erste semantische Karte, um ein zweites Bild mit halluzinierten Bilddaten zu erzeugen, die eine vollständige Version des ersten Bildes darstellen.A method, a computer readable medium, and a system are disclosed to use a model of a neural network to obtain a first image lacking a portion of the image data and a first semantic map corresponding to the first image and lacking a portion of the semantic data , to recieve. The model of the neural network processes the first image and the first semantic map to produce a second image of hallucinated image data representing a complete version of the first image.

Figurenlistelist of figures

  • 1A stellt eine konzeptionelle Darstellung eines Bildes mit niedriger Auflösung und einer semantischen Karte mit niedriger Auflösung und eines entsprechenden halluzinierten hochaufgelösten Bildes und einer hochaufgelösten semantischen Karte gemäß einer Ausführungsform dar. 1A FIG. 4 illustrates a conceptual representation of a low resolution image and a low resolution semantic map and corresponding hallucinated high resolution image and a high resolution semantic map according to one embodiment. FIG.
  • 1B stellt ein Blockdiagramm eines Systems eines neuronalen Netzes zur Halluzinierung fehlender Inhalte für Bilder und semantische Labelkarten gemäß einer Ausführungsform dar. 1B FIG. 12 illustrates a block diagram of a system of a neural network for missing content hallucination for images and semantic label cards according to an embodiment. FIG.
  • 1C stellt ein Flussdiagramm eines Verfahrens zur Halluzinierung kompletter Bilder gemäß einer Ausführungsform dar. 1C FIG. 10 illustrates a flowchart of a method of hallucinating complete images according to one embodiment. FIG.
  • 1D stellt ein Flussdiagramm eines Verfahrens zur Halluzinierung kompletter Bilder und semantischer Labelkarten gemäß einer Ausführungsform dar. 1D FIG. 12 illustrates a flowchart of a method of hallucinating complete images and semantic label cards according to one embodiment.
  • 2A stellt ein Blockdiagramm einer Trainingskonfiguration für das System des neuronalen Netzes von 1B gemäß einer Ausführungsform dar. 2A FIG. 12 is a block diagram of a training configuration for the neural network system of FIG 1B according to an embodiment.
  • 2B stellt ein Flussdiagramm eines Verfahrens zum Training des Systems des neuronalen Netzes von 1B gemäß einer Ausführungsform dar. 2 B FIG. 3 illustrates a flowchart of a method of training the neural network system 1B according to an embodiment.
  • 3 stellt eine Parallelverarbeitungseinheit gemäß einer Ausführungsform dar. 3 illustrates a parallel processing unit according to an embodiment.
  • 4A stellt ein allgemeines Verarbeitungscluster innerhalb der Parallelverarbeitungseinheit von 3 gemäß einer Ausführungsform dar. 4A provides a general processing cluster within the parallel processing unit of 3 according to an embodiment.
  • 4B stellt eine Speicherpartitionseinheit der Parallelverarbeitungseinheit von 3 gemäß einer Ausführungsform dar. 4B represents a storage partition unit of the parallel processing unit of 3 according to an embodiment.
  • 5A stellt den Streaming-Multiprozessor von 4A gemäß einer Ausführungsform dar. 5A turns off the streaming multiprocessor 4A according to an embodiment.
  • 5B ist eine konzeptionelle Darstellung eines Verarbeitungssystems, das unter Verwendung der PPU von 3 gemäß einer Ausführungsform implementiert wurde. 5B FIG. 12 is a conceptual diagram of a processing system using the PPU of FIG 3 has been implemented according to one embodiment.
  • 5C stellt ein beispielhaftes System, in dem die unterschiedlichen Architekturen und/oder Funktionalitäten der verschiedenen vorherigen Ausführungsformen implementiert werden können, dar. 5C FIG. 3 illustrates an example system in which the different architectures and / or functionalities of the various previous embodiments may be implemented. FIG.
  • 6 ist eine konzeptionelle Darstellung einer Grafikverarbeitungspipeline, die von der PPU von 3 gemäß einer Ausführungsform implementiert wurde. 6 FIG. 3 is a conceptual illustration of a graphics processing pipeline used by the PPU of FIG 3 has been implemented according to one embodiment.

DETAILLIERTE BESCHREIBUNGDETAILED DESCRIPTION

Konventionelle Bilderzeugung zur Erzeugung eines endlosen Zooms, wie beispielsweise der Droste-Effekt, erfordert sehr hochgeauflöste Bilder, um ein Bild kontinuierlich heranzuzoomen. In Wirklichkeit kann das Zoomen durch Anwendung eines hohen Vergrößerungsverhältnisses auf ein einzelnes Bild mit hoher, aber begrenzter Auflösung keine hochaufgelösten gezoomten Bilder erzeugen. Daher kann das Zoomproblem als Halluzinationsproblem mit minimalen semantischen Informationen betrachtet werden, aus denen die fehlenden Bilddaten (z.B. Auflösung) improvisiert oder halluziniert werden können. Ein neuronales Netz kann lernen, die fehlenden Daten für ein unvollständiges Eingabebild basierend auf dem unvollständigen Eingabebild und semantischen Informationen, welche mit dem unvollständigen Eingabebild korrespondieren, zu erzeugen. In einer Ausführungsform wird ein generatives gegnerisches Netz („Generative Adversarial Network“ GAN) verwendet, um das neuronale Netz zu trainieren, um fehlende Daten für unvollständige Eingabebilder zu erzeugen.Conventional imaging to produce an infinite zoom, such as the Droste effect, requires very high resolution images to continuously zoom in on an image. In reality, zooming can not produce high-resolution zoomed images by applying a high magnification ratio to a single high-resolution but limited-resolution image. Therefore, the zoom problem can be viewed as a hallucination problem with minimal semantic information from which the missing image data (e.g., resolution) can be improvised or hallucinated. A neural network may learn to generate the missing data for an incomplete input image based on the incomplete input image and semantic information corresponding to the incomplete input image. In one embodiment, a generative adversary network (GAN) is used to train the neural network to generate missing data for incomplete input images.

1A stellt eine konzeptionelle Darstellung eines unvollständigen Bildes 101 und einer unvollständigen semantischen Karte 103 und eines entsprechenden vollständigen Bildes 102 und einer vollständigen semantischen Karte 104 gemäß einer Ausführungsform dar. Bei dem unvollständigen Bild 101 und der unvollständigen semantischen Karte 103 fehlen jeweils Daten oder einige Daten sind aufgrund der begrenzten Pixelauflösung kaum sichtbar. Das unvollständige Bild 101 ist ein Bild niedriger Qualität, das durch Farbbilddaten für jedes Pixel dargestellt wird (dargestellt als gepunktetes Graustufenbild anstelle eines RGB-Farbbildes). In einer Ausführungsform ist das unvollständige Bild 101 ein niedrigaufgelöstes Bild. Das vollständige Bild 102 ist ein halluziniertes hochaufgelöstes Bild, das durch Farbbilddaten für jedes Pixel dargestellt wird (dargestellt als gepunktetes Graustufenbild anstelle eines RGB-Farbbildes), wobei die Pixelauflösung des vollständigen Bildes 102 größer ist als die Pixelauflösung des unvollständigen Bildes 101. 1A represents a conceptual representation of an incomplete picture 101 and an incomplete semantic map 103 and a corresponding complete picture 102 and a complete semantic map 104 according to one embodiment. In the incomplete image 101 and the incomplete semantic map 103 missing data or some data are hardly visible due to the limited pixel resolution. The incomplete picture 101 is a low-quality image represented by color image data for each pixel (shown as a dotted grayscale image instead of an RGB color image). In one embodiment, the incomplete image 101 a low-resolution image. The complete picture 102 is a hallucinated high-resolution image represented by color image data for each pixel (shown as a dotted grayscale image instead of an RGB color image), where the pixel resolution of the complete image 102 is greater than the pixel resolution of the incomplete image 101 ,

Die unvollständige semantische Karte 103 ist eine semantische Karte niedriger Qualität, die durch Farbdaten für jedes Pixel dargestellt wird (dargestellt als Graustufenbild anstelle eines RGB-Farbbildes), wobei jede Farbe ein Label definiert, das ein anderes Objekt, eine andere Objektinstanz und/oder eine andere Objektklasse repräsentiert. In einer Ausführungsform ist die unvollständige semantische Karte 103 eine niedrigaufgelöste semantische Karte. In einer Ausführungsform umfasst das unvollständige Bild 101 spärliche Daten, beschädigte Daten und/oder verrauschte Daten. Die vollständige semantische Karte 104 ist eine halluzinierte hochaufgelöste semantische Karte, die durch Farbdaten für jedes Pixel dargestellt wird (dargestellt als Graustufenbild anstelle eines RGB-Farbbildes), wobei die Pixelauflösung der vollständigen semantischen Karte 104 größer ist als die Pixelauflösung der unvollständigen semantischen Karte 103.The incomplete semantic map 103 is a low-quality semantic map represented by color data for each pixel (represented as a grayscale image rather than an RGB color image), each color defining a label representing another object, object instance, and / or object class. In one embodiment, the incomplete semantic map is 103 a low-resolution semantic map. In one embodiment, the incomplete image includes 101 sparse data, damaged data and / or noisy data. The complete semantic map 104 is a hallucinated high-resolution semantic map represented by color data for each pixel (shown as a grayscale image instead of an RGB color image), where the pixel resolution of the complete semantic map 104 is greater than the pixel resolution of the incomplete semantic map 103 ,

Um plausible, genaue und/oder realistische halluzinierte Bilddaten zu erzeugen, sollten die halluzinierten Bilddaten den Kontext (z.B. Farben, Formen usw.) beibehalten, der mit dem/n unvollständigen Eingabebild(ern) übereinstimmt. Semantische Karten, sogar unvollständige semantische Karten, können bei der Erzeugung der halluzinierten Bilddaten sicherstellen, dass der Kontext konsistent ist. Zusätzlich sollten die halluzinierten Bilddaten zeitlich mit den unvollständigen Bilddaten übereinstimmen. Die Bereitstellung einer Folge von unvollständigen Bildern für das Modell eines neuronalen Netzes anstelle eines einzelnen unvollständigen Bildes kann die zeitliche Konsistenz verbessern. Ein GAN kann beim Training eines Modells eines neuronalen Netzes verwendet werden, um sicherzustellen, dass das Modell des neuronalen Netzes plausible Inhalte erzeugt.To create plausible, accurate and / or realistic hallucinated image data, the hallucinated image data should retain the context (e.g., colors, shapes, etc.) that matches the incomplete input image (s). Semantic maps, even incomplete semantic maps, can help ensure that the context is consistent in creating the hallucinated image data. In addition, the hallucinated image data should coincide in time with the incomplete image data. Providing a sequence of incomplete images for the neural network model, rather than a single incomplete image, can improve temporal consistency. A GAN can be used in training a neural network model to ensure that the neural network model generates plausible content.

1B stellt ein Blockdiagramm eines Systems 100 eines neuronalen Netzes zur Halluzinierung fehlender Inhalte für Bilder und semantische Labelkarten gemäß einer Ausführungsform dar. Das System 100 eines neuronalen Netzes entspricht einem Modell eines neuronalen Netzes, das zwei neuronale Netze 115 und 105 eines Kodierers, eine Restfunktion 110 und zwei neuronale Netze 125 und 135 eines Dekodierers beinhaltet. Das neuronale Netz 115 des Kodierers verarbeitet die unvollständige semantische Karte SI und das neuronale Netz 105 des Kodierers verarbeitet das entsprechende unvollständige Bild II . In einer Ausführungsform entfällt das neuronale Netz 125 des Dekodierers und das System 100 eines neuronalen Netzes 100 gibt vollständige Bilder IC aus, ohne vollständige semantische Karten Sc auszugeben. 1B represents a block diagram of a system 100 of a neural network for hallucinating missing content for images and semantic label cards according to an embodiment. The system 100 of a neural network corresponds to a model of a neural network comprising two neural networks 115 and 105 an encoder, a residual function 110 and two neural networks 125 and 135 a decoder includes. The neural network 115 the coder processes the incomplete semantic map S I and the neural network 105 the encoder processes the corresponding incomplete image I i , In one embodiment, the neural network is eliminated 125 the decoder and the system 100 a neural network 100 gives complete pictures I C without issuing complete semantic maps Sc.

Das neuronale Netz 115 des Kodierers verarbeitet die unvollständige semantische Karte SI gemäß den Schichtparametern (z.B. Gewichten), die während des Trainings bestimmt werden. Das neuronale Netz 105 des Kodierers verarbeitet das unvollständige Bild Ii gemäß den Schichtparametern, die während des Trainings bestimmt werden. Die von den neuronalen Netzen 105 und 115 des Kodierers ausgegebenen Merkmale werden verknüpft und von der Restfunktion 110 entsprechend den während des Trainings ermittelten Schichtparametern verarbeitet. Die beiden neuronalen Netze 125 und 135 des Dekodierers verarbeiten auch die von der Restfunktion 110 ausgegebenen Daten gemäß den während des Trainings bestimmten Schichtparametern, um das vollständige Bild Ic und die vollständige semantische Karte Sc zu erzeugen. In einer Ausführungsform ist das unvollständige Bild ein niedrigaufgelöstes Bild, die unvollständige semantische Karte ist eine niedrigaufgelöste semantische Karte, das vollständige Bild ist ein hochaufgelöstes Bild. Das vollständige Bild enthält halluzinierte Bilddaten, die eine vollständige (z.B. hochaufgelöste) Version des unvollständigen Bildes darstellen. Ebenso beinhaltet die vollständige semantische Karte halluzinierte semantische Daten, die eine vollständige (z.B. hochaufgelöste) Version der semantischen Karte für das vollständige Bild darstellen.The neural network 115 the coder processes the incomplete semantic map S I according to the shift parameters (eg weights) determined during exercise. The neural network 105 The encoder processes the incomplete image Ii according to the slice parameters determined during exercise. The of the neural networks 105 and 115 The features output by the encoder are linked and from the residual function 110 processed according to the shift parameters determined during the training. The two neural networks 125 and 135 The decoder also handles those from the remainder function 110 output data according to the shift parameters determined during the training to the complete image ic and the complete semantic map sc to create. In one embodiment, the incomplete image is a low-resolution image, the incomplete semantic map is a low-resolution semantic map, the full image is a high-resolution image. The full image contains hallucinated image data that represents a complete (eg, high-resolution) version of the incomplete image. Similarly, the complete semantic map contains hallucinated semantic data that represents a complete (eg, high-resolution) version of the semantic map for the complete image.

Obwohl das System 100 des neuronalen Netzes im Kontext von Verarbeitungseinheiten beschrieben wird, können eine oder mehrere der Einheiten, neuronale Netze 105 und 115 eines Kodierers, neuronale Netze 125 und 135 eines Dekodierers und die Restfunktion 110 als Programm, benutzerdefinierte Schaltung oder durch eine Kombination von benutzerdefinierter Schaltung und einem Programm implementiert sein. So können beispielsweise die neuronalen Netze 105 und/oder 115 eines Kodierers von einer GPU (Grafikprozessoreinheit), einer CPU (Zentraleinheit) oder einem beliebigen Prozessor implementiert werden, der in der Lage ist, Schichten eines neuronalen Netzes zu implementieren. Darüber hinaus versteht der Fachmann, dass jedes System, das die Funktionen des Systems 100 eines neuronalen Netzes ausführt, im Rahmen und Geist der Ausführungsformen der vorliegenden Offenbarung liegt.Although the system 100 of the neural network in the context of processing units may include one or more of the units, neural networks 105 and 115 of an encoder, neural networks 125 and 135 a decoder and the residual function 110 be implemented as a program, custom circuit, or through a combination of custom circuitry and a program. For example, the neural networks 105 and or 115 an encoder can be implemented by a GPU (graphics processor unit), a CPU (central processing unit) or any processor capable of implementing layers of a neural network. In addition, the expert understands that any system that performs the functions of the system 100 of a neural network is within the scope and spirit of embodiments of the present disclosure.

Es werden nun weitere veranschaulichende Informationen zu verschiedenen optionalen Architekturen und Funktionen gegeben, mit denen das vorgenannte Framework nach den Wünschen des Benutzers implementiert werden kann. Es sei ausdrücklich darauf hingewiesen, dass die folgenden Informationen zur Veranschaulichung aufgeführt sind und nicht als einschränkend ausgelegt werden sollen. Eines der folgenden Merkmale kann wahlweise mit oder ohne Ausschluss anderer beschriebener Merkmale enthalten sein.Additional illustrative information will now be given on various optional architectures and functions that can be used to implement the aforementioned framework as desired by the user. It is to be expressly understood that the following is illustrative and should not be construed as limiting. One of the following features may optionally be included with or without the exclusion of other features described.

Die Halluzinations-Aufgabe kann unter der Annahme eines unvollständigen Bildes II modelliert werden, bei dem das System 100 des neuronalen Netzes eine Funktion F erlernt, die II in ein entsprechendes vollständiges Bild Ic abbilden kann. Wenn das unvollständige Bild und die semantische Karte eine niedrige Auflösung aufweisen, ist das entsprechende vollständige Bild ein hochaufgelöstes Bild. Herkömmliche Superauflösungsalgorithmen können die Erzeugung hochaufgelöster Bilder nicht realisieren, bei denen die Auflösungsdifferenz zwischen II und Ic 20x oder mehr beträgt. Im Gegensatz zu herkömmlichen Superauflösungsalgorithmen kann das System 100 des neuronalen Netzes jedoch das hochaufgelöste Ausgabebild IC halluzinieren. Darüber hinaus kann das System 100 des neuronalen Netzes, wenn eine niedrigaufgelöste semantische Karte SI (oder semantische Segmentierungsmaske) für II verfügbar ist, neben der Halluzinierung des hochaufgelösten Ausgabebildes Ic auch eine hochaufgelöste semantische Karte halluzinieren. In einer Ausführungsform kann die niedrigaufgelöste semantische Karte SI durch eine hochaufgelöste semantische Karte ersetzt werden. Wenn eine entsprechende semantische Karte verfügbar ist, kann das System 100 des neuronalen Netzes die Zuordnung Ic, Sc = F(II, SI) lernen, wobei Si und Sc die niedrigaufgelöste bzw. hochaufgelöste semantische Karte ist.The hallucination task can be under the assumption of an incomplete picture I i be modeled in which the system 100 of the neural network learns a function F, the I i into a corresponding complete picture Ic can map. If the incomplete image and the semantic map have a low resolution, the corresponding full image is a high resolution image. Conventional super-resolution algorithms can not realize the generation of high-resolution images in which the difference in resolution between I i and IC 20x or more. Unlike conventional super-resolution algorithms, the system can 100 of the neural network, however, the high resolution output image I C hallucinate. In addition, the system can 100 of the neural network, when a low-resolution semantic card S I (or semantic segmentation mask) for I i In addition to the hallucination of the high-resolution output image Ic, it is also possible to hallucinate a high-resolution semantic map. In one embodiment, the low-resolution semantic map S I be replaced by a high-resolution semantic map. If a corresponding semantic map is available, the system can 100 of the neural network learn the assignment Ic, Sc = F (I I , S I ), where Si and Sc is the low-resolution or high-resolution semantic map.

Betrachtet man die Halluzinations-Aufgabe als ein Problem einer Bildübersetzung, so besteht eine zentrale Herausforderung darin, eine gemeinsame Verteilung (joint distribution) der Eingabedaten in verschiedenen Domänen zu erlernen, nämlich in der Bilddomäne und der Domäne der semantischen Karten. Es wird vorausgesetzt, dass ein unvollständiges Eingabepaar (II , SI ) auf einen gleichen latenten Code z im gemeinsamen latenten Raum 140 abgebildet werden kann. Daten einer semantischen Karte entsprechen einer ersten Domäne 101 und Bilddaten einer zweiten Domäne 102. E1 und E2 sind zwei Kodierfunktionen, die unvollständige Bilder bzw. semantische Karten auf latente Codes im gemeinsamen latenten Raum 140 abbilden. Das neuronale Netz 115 eines Kodierers und das neuronale Netz 105 eines Kodierers führen die Kodierfunktionen E1 und E2 aus. G1 und G2 sind zwei Dekodierfunktionen, die die latenten Codes auf die vollständigen Bilder (Ic) in der ersten Domäne 101 und die vollständigen sematischen Karten (Sc) in der zweiten Domäne 102 abbilden. Das neuronale Netz 125 eines Dekodierers und das neuronale Netz 135 eines Dekodierers führen die Dekodierfunktion G1 bzw. G2 aus. Das System 100 des neuronalen Netzes kann überwacht (unter Verwendung von Ground-Truth-Trainingsdaten) und/oder nicht überwacht (unter Verwendung bedingter Diskriminatoren) trainiert werden.Considering the hallucination task as a problem of image translation, a key challenge is to learn joint distribution of the input data in different domains, namely the image domain and the domain of the semantic maps. It is assumed that an incomplete input pair ( I i . S I ) to a same latent code z in the common latent space 140 can be displayed. Data of a semantic card corresponds to a first domain 101 and image data of a second domain 102 , E 1 and E 2 are two coding functions, the incomplete images or semantic maps on latent codes in the common latent space 140 depict. The neural network 115 an encoder and the neural network 105 an encoder perform the coding functions E 1 and E 2 out. G 1 and G 2 are two decoding functions that convert the latent codes to the full images (Ic) in the first domain 101 and the complete sematic maps (Sc) in the second domain 102 depict. The neural network 125 a decoder and the neural network 135 a decoder perform the decoding function G 1 respectively. G 2 out. The system 100 of the neural network may be monitored (using ground truth training data) and / or not supervised (using conditional discriminators).

Eine gemeinsame Restfunktion R verarbeitet die latenten Codes im gemeinsamen latenten Raum. In einer Ausführungsform ist die Restfunktion 110 als neuronales Netz implementiert. In einer Ausführungsform wird ein erster Abschnitt des neuronalen Netzes, der die Restfunktion 110 implementiert, zunächst auf unvollständige Bilder und semantische Karten trainiert, bevor ein zweiter Abschnitt des neuronalen Netzes mit dem ersten Abschnitt kombiniert wird. Die Kombination aus dem ersten und zweiten Abschnitt des neuronalen Netzes wird dann auf vollständige Bilder trainiert, bevor sie in das System 100 des neuronalen Netzes integriert wird. In einer Ausführungsform ist der erste Abschnitt ein grobes globales Erzeugernetz und der zweite Abschnitt ein feines lokales Verbesserungsnetz. In einer Ausführungsform umfasst der erste Abschnitt ein Faltungs-Frontend, einen Satz von Restblöcken und ein transponiertes Faltungs-Backend. Der erste Abschnitt kann eine Eingabe mit einer Auflösung von 1024 × 512 empfangen und Ausgabedaten mit gleicher Auflösung erzeugen. In einer Ausführungsform umfasst der zweite Abschnitt ein Faltungs-Frontend, einen Satz von Restblöcken und ein transponiertes Faltungs-Backend. Der zweite Abschnitt kann eine Eingabe mit einer Auflösung von 2048 × 1024 empfangen und Ausgabedaten mit gleicher Auflösung erzeugen. Eine Eingabe in den Satz von Restblöcken innerhalb des zweiten Abschnitts ist eine Element-weise Summe aus zwei Merkmalskarten, nämlich eine Ausgabemerkmalskarte, die durch das Faltungs-Frontend des zweiten Abschnitts erzeugt wird, und eine letzte Merkmalskarte, die durch das transponierte Faltungs-Backend des ersten Abschnitts des neuronalen Netzes erzeugt wird. In einer Ausführungsform ist der erste Abschnitt innerhalb des zweiten Abschnitts nach dem Faltungs-Frontend und vor dem Satz von Restblöcken eingefügt. In einer Ausführungsform wird eine Eingabe für den ersten Abschnitt 2x unterabgetastet und als Eingabe für den ersten Abschnitt bereitgestellt.A common residual function R processes the latent codes in the common latent space. In one embodiment, the residual function is 110 implemented as a neural network. In one embodiment, a first portion of the neural network that is the residual function 110 first trained on incomplete images and semantic maps before a second section of the neural network is combined with the first section. The combination of the first and second sections of the neural network is then trained to complete images before entering the system 100 of the neural network is integrated. In one embodiment, the first portion is a coarse global generator network and the second portion is a fine local area network. In one embodiment, the first portion includes a convolution frontend, a set of remainder blocks, and a transposed convolutional backend. The first section can receive an input with a resolution of 1024x512 and produce output data with the same resolution. In one embodiment, the second section includes a convolution frontend, a set of remainder blocks, and a transposed convolutional backend. The second section can receive an input with a resolution of 2048 × 1024 and produce output data with the same resolution. An input to the set of residual blocks within the second section is an elemental sum of two feature maps, namely an output feature map generated by the convolution front end of the second section, and a last feature map represented by the transposed convolutional backend of the second first section of the neural network is generated. In one embodiment, the first portion is inserted within the second portion after the convolution frontend and before the set of remainder blocks. In one embodiment, an input is for the first section 2x sub-sampled and provided as input to the first section.

Zusätzlich zur oder anstelle der Erzeugung hochaufgelöster Bilder aus niedrigaufgelösten Bildern kann das System des neuronalen Netzes auch konfiguriert werden, um Bildinhalte für Teile des unvollständigen Eingabebildes zu halluzinieren, für die keine Bilddaten verfügbar sind. Wenn eine Kamera beispielsweise schwenkt, werden Teile der Szene, die sich außerhalb eines Sichtfeldes befinden, das einem ersten Bildframe zugeordnet ist, nicht im ersten Bildframe erfasst. Die im ersten Bildframe fehlenden Szenenabschnitte werden in einem späteren Bildframe erfasst. In einer Ausführungsform erzeugt das Modell des neuronalen Netzes den im ersten Bildframe fehlenden Bildinhalt, um ein vollständiges späteres Bildframe in einer Sequenz zu halluzinieren. In einem anderen Beispiel kann ein Teil einer Szene fehlen, weil er von einem Objekt verdeckt wird, und der Teil der Szene kann halluziniert werden, um ein vollständiges Bild zu erzeugen.In addition to or instead of generating high resolution images from low resolution images, the neural network system may also be configured to hallucinate image content for portions of the incomplete input image for which no image data is available. For example, if a camera is panning, portions of the scene that are outside of a field of view associated with a first frame will not be captured in the first frame. The missing scene sections in the first frame are captured in a later frame. In one embodiment, the model of the neural network generates the image content missing in the first image frame to hallucinate a complete later image frame in a sequence. In another example, a portion of a scene may be missing because it is obscured by an object, and the portion of the scene may be hallucinated to produce a complete image.

Schließlich kann das System des neuronalen Netzes Bildinhalte halluzinieren, um eine Vielzahl von vollständigen Bildern für ein einzelnes Eingabebild oder für jedes einzelne Bildframe in einer Folge von unvollständigen Bildern zu erzeugen. Zusammenfassend kann das System 100 des neuronalen Netzes konfiguriert sein, um eine unendliche Anzahl von vollständigen Bildern aus einem oder mehreren unvollständigen Bildern und entsprechenden unvollständigen semantischen Karten zu halluzinieren. Die Technik der unendlichen Bilder kann verwendet werden, um hochaufgelöste hineingezoomte Bilder (Uberzoom), fehlende Inhalte aufgrund von Kamerabewegungen (Ubertranslation) und/oder unendliche Inhaltserzeugung (Variationen eines Eingabebildes) zu erzeugen.Finally, the neural network system can hallucinate image content to produce a plurality of complete images for a single input image or for each individual image frame in a sequence of incomplete images. In summary, the system can 100 of the neural network to hallucinate an infinite number of complete images from one or more incomplete images and corresponding incomplete semantic maps. The technique of infinite images can be used to produce high-resolution zoomed-in images (over-zoom), missing content due to camera movement (over-translation), and / or infinite content generation (variations of an input image).

Rekursive Erzeugung und rekursives Zoomen sind Verfahren zur „Erzeugung unendlicher Bilder“ zum Halluzinieren oder Erzeugen einer Bildsequenz aus einem oder mehreren (II , SI )-Paaren, um eine Sequenz von vollständigen Bildern mit dem Droste-Effekt zu erzeugen. Ein erster Abschnitt eines hochaufgelösten Bildes wird extrahiert, um ein niedrigaufgelöstes Bild für den ersten Abschnitt zu erzeugen, aus dem, wenn es von dem System 100 des neuronalen Netzes verarbeitet wird, ein hochaufgelöstes Bild erzeugt wird, das dem ersten Abschnitt entspricht. Ein zweiter Abschnitt einer hochaufgelösten semantischen Karte, der dem ersten Abschnitt des hochaufgelösten Bildes entspricht, wird extrahiert, um eine niedrigaufgelöste semantische Karte für den zweiten Abschnitt zu erzeugen, aus der, wenn sie von dem System des neuronalen Netzes verarbeitet wird, ein hochaufgelöstes Bild erzeugt wird, das dem zweiten Abschnitt entspricht.Recursive generation and recursive zooming are methods for "generating infinite images" for hallucinating or generating an image sequence from one or more ( I I . S I ) Pairs to create a sequence of complete Droste effect images. A first portion of a high resolution image is extracted to produce a low resolution image for the first portion from which, when extracted from the system 100 of the neural network is processed, a high-resolution image is generated that corresponds to the first section. A second portion of a high-resolution semantic map corresponding to the first portion of the high-resolution image is extracted to produce a low-resolution semantic map for the second portion, from which, when processed by the neural network system, produces a high-resolution image which corresponds to the second section.

In einer Ausführungsform zoomt die rekursive Erzeugung in einen Bereich eines hochaufgelösten Ausgangspaares (Ic, Sc), extrahiert den Bereich durch Cropping des Bereichs, führt ein Upsampling für den zugeschnittenen Bereich aus und erzeugt so ein verschwommenes Eingabepaar (II , SI ). Das verschwommene Eingabepaar (II , Si) wird in das System 100 des neuronalen Netzes eingegeben, um ein anderes hochaufgelöstes Ausgabepaar zu halluzinieren. Das Verfahren kann wiederholt werden, um rekursiv eine Vielzahl von hochaufgelösten Ausgabepaaren zu erzeugen. Der rekursive Zoom kann verwendet werden, um den Droste-Effekt automatisch zu synthetisieren, unter anderem für Anwendungen, wie sie in Virtual-Reality-Umgebungen verwendet werden. Insbesondere können aus einem einzelnen Bild (oder mehreren Bildern) Fahrbildfolgen erzeugt werden, um bestehende Straßenszenendatensätze zu ergänzen.In one embodiment, the recursive generation zooms into an area of a high-resolution output pair (Ic, Sc), extracts the area by cropping the area, upsampling the cropped area, and generates a blurry input pair (Fig. I i . S I ). The blurry Input pair ( I i , Si) is in the system 100 of the neural network to hallucinate another high-resolution output pair. The method may be repeated to recursively generate a plurality of high-resolution output pairs. The recursive zoom can be used to automatically synthesize the Droste effect, for applications such as those used in virtual reality environments. In particular, motion picture sequences can be generated from a single image (or multiple images) to supplement existing street scene data sets.

1C stellt ein Flussdiagramm eines Verfahrens 120 zum Halluzinieren hochaufgelöster Bilder gemäß einer Ausführungsform dar. Obwohl das Verfahren 120 im Zusammenhang mit einer Verarbeitungseinheit beschrieben wird, kann das Verfahren 120 auch durch ein Programm, eine benutzerdefinierte Schaltung oder durch eine Kombination aus einer benutzerdefinierten Schaltung und einem Programm durchgeführt werden. So kann beispielsweise das Verfahren 120 von einer GPU (Grafikprozessoreinheit), einer CPU (Zentraleinheit) oder einem beliebigen Prozessor, der ein Modell eines neuronalen Netzes implementieren kann, wie beispielsweise dem System 100 des neuronalen Netzes, ausgeführt werden. Darüber hinaus versteht der Fachmann, dass jedes System, das das Verfahren 120 durchführt, im Rahmen und Geist der Ausführungsformen der vorliegenden Offenbarung liegt. 1C FIG. 3 illustrates a flowchart of a method 120 for hallucinating high resolution images according to one embodiment. Although the method 120 is described in the context of a processing unit, the method 120 also be performed by a program, a user-defined circuit or by a combination of a user-defined circuit and a program. For example, the procedure 120 from a GPU (graphics processor unit), a CPU (central processing unit), or any processor that can implement a neural network model, such as the system 100 of the neural network. In addition, the skilled person understands that any system that performs the procedure 120 is within the scope and spirit of embodiments of the present disclosure.

Bei Schritt 130 empfängt das Modell des neuronalen Netzes ein erstes Bild, dem ein Teil der Bilddaten fehlt. Bei Schritt 140 erhält das Modell des neuronalen Netzes eine erste semantische Karte, die mit dem ersten Bild korrespondiert und bei der ein Teil der semantischen Daten fehlt. In einer Ausführungsform ist das erste Bild ein niedrigaufgelöstes Bild und die erste semantische Karte eine niedrigaufgelöste semantische Karte. Die erste semantische Karte wird vom Modell des neuronalen Netzes verwendet, um die Halluzination von Bildinhalten von Ausgabebildern einzuschränken und zu steuern, um den fehlenden Teil der Bilddaten zu erzeugen, der plausibel und kontextabhängig ist.At step 130 The model of the neural network receives a first image that lacks part of the image data. At step 140 For example, the model of the neural network receives a first semantic map that corresponds to the first image and lacks some of the semantic data. In one embodiment, the first image is a low-resolution image and the first semantic map is a low-resolution semantic map. The first semantic map is used by the neural network model to constrain and control the hallucination of image contents of output images to produce the missing portion of the image data that is plausible and context dependent.

Bei Schritt 145 verarbeitet das Modell des neuronalen Netzes das erste Bild und die erste semantische Karte, um ein zweites Bild mit halluzinierten Bilddaten zu erzeugen, das eine vollständige Version des ersten Bildes darstellt. In einer Ausführungsform ist das erste Bild ein niedrigaufgelöstes Bild, das durch Cropping und Upsampling eines bestimmten Bereichs eines hochaufgelösten Bildes erzeugt wird. Es ist nicht praktikabel, den spezifischen Bereich des hochaufgelösten Bildes zu vergrößern, der eine begrenzte Auflösung hat und möglicherweise nicht genügend Informationen enthält, um mit herkömmlichen Techniken, wie z.B. Upsampling mittels bilinearer Interpolation, hochaufgelöst bzw. in hoher Auflösung wiederhergestellt zu werden, wenn der Zoom 15x oder größer ist. Daher kann der fehlende Teil des ersten Bildes mit herkömmlichen hochauflösenden Techniken nicht zuverlässig erzeugt werden. In einer Ausführungsform halluziniert das Modell des neuronalen Netzes ein hochaufgelöstes Bild des entsprechenden Bereiches, so dass das künstliche Zoomen in den entsprechenden Bereich des hochaufgelösten Bildes eine höhere Auflösung als das erste Bild bietet.At step 145 The model of the neural network processes the first image and the first semantic map to produce a second image with hallucinated image data representing a complete version of the first image. In one embodiment, the first image is a low-resolution image that is generated by cropping and upsampling a particular area of a high-resolution image. It is impractical to increase the specific area of the high resolution image that has limited resolution and may not contain enough information to be reconstructed in high resolution with conventional techniques, such as bilinear interpolation upsampling, if the zoom 15x or larger. Therefore, the missing part of the first image can not be reliably generated by conventional high-resolution techniques. In one embodiment, the model of the neural network hallucinates a high-resolution image of the corresponding area, so that the artificial zooming into the corresponding area of the high-resolution image offers a higher resolution than the first image.

In einer Ausführungsform ist das erste Bild ein unvollständiges Bild, bei dem ein Abschnitt (d.h. 20% des rechten Abschnitts) des Bildes leer ist, weil die Kamera geschwenkt wurde. In einer Ausführungsform halluziniert das Modell des neuronalen Netzes den Bildinhalt für den leeren Abschnitt des ersten Bildes, um das zweite Bild zu erzeugen, das eine vollständige Version des ersten Bildes ist.In one embodiment, the first image is an incomplete image in which a portion (i.e., 20% of the right portion) of the image is blank because the camera has been panned. In one embodiment, the model of the neural network hallucinates the image content for the blank portion of the first image to produce the second image that is a complete version of the first image.

1D stellt einen Flussplan eines Verfahrens 150 zum Halluzinieren von hochaufgelösten Bildern und semantischen Labelkarten gemäß einer Ausführungsform dar. Die Schritte 130, 140 und 145 werden wie zuvor in Verbindung mit 1C beschrieben abgeschlossen. Bei Schritt 155 verarbeitet das Modell des neuronalen Netzes das erste Bild und die erste semantische Karte, um eine zweite semantische Karte zu erzeugen, die halluzinierte semantische Daten enthält, die mit dem zweiten Bild korrespondieren. In einer Ausführungsform halluziniert das Modell des neuronalen Netzes eine hochaufgelöste semantische Karte für das zweite Bild, wobei das zweite Bild ein hochaufgelöstes, gezoomtes Bild im Bereich eines hochaufgelösten Bildes ist. In einer Ausführungsform halluziniert das Modell des neuronalen Netzes den semantischen Inhalt für den leeren Abschnitt des ersten Bildes, um die zweite semantische Karte zu erzeugen. 1D provides a flowchart of a process 150 for hallucinating high-resolution images and semantic label cards according to one embodiment. The steps 130 . 140 and 145 be in contact with you as before 1C described completed. At step 155 The model of the neural network processes the first image and the first semantic map to produce a second semantic map containing hallucinated semantic data corresponding to the second image. In one embodiment, the model of the neural network hallucinates a high-resolution semantic map for the second image, the second image being a high-resolution, zoomed image in the region of a high-resolution image. In one embodiment, the neural network model hallucinates the semantic content for the blank portion of the first image to generate the second semantic map.

Bei einem unvollständigen Bild II wird vom System des neuronalen Netzes eine Funktion F gelernt, die II in ein entsprechendes vollständiges Bild IC abbilden kann. Die Abbildung lautet: I C ,  S C = F ( I I ,  S I )

Figure DE102019112595A1_0001
wobei SI und Sc die unvollständige bzw. vollständige semantische Karte sind. Um die Abbildungsfunktion zu erlernen, wird das System 100 des neuronalen Netzes unter Verwendung eines Satzes von Trainingsdaten trainiert, die durch die folgenden Parameter gegeben sind: Trainingdatensatz = { I I ( i ) , S I ( i ) , I C ( i ) , S C ( i ) } i = 1 : N
Figure DE102019112595A1_0002
In an incomplete picture I i is learned by the system of the neural network a function F, the I i into a corresponding complete picture I C can map. The picture is: I C . S C = F ( I I . S I )
Figure DE102019112595A1_0001
in which S I and Sc are the incomplete or complete semantic map. To learn the mapping function, the system becomes 100 of the neural network using a set of training data given by the following parameters: Training data set = { I I ( i ) . S I ( i ) . I C ( i ) . S C ( i ) } i = 1 : N
Figure DE102019112595A1_0002

Die Lernaufgabe besteht also darin, die beiden verbundenen Verteilungen p(II , SI , Ic, Sc) und p(II , SI , F(II , SI )) aufeinander abzustimmen. Die Übereinstimmung der beiden verbundenen Verteilungen ist das klassische Zwei-Stichproben-Testproblem in der Statistik, das durch Minimierung der maximalen mittleren Diskrepanzmetrik gelöst werden kann. In einer Ausführungsform wird eine Variante eines bedingten GAN-Frameworks implementiert, um die Aufgabe zu erfüllen. Die Variante basiert auf dem bedingten GAN-Framework, wobei die Eingabe die hochaufgelöste semantische Karte und die Ausgabe das hochaufgelöste Bild ist. Das Framework wird so modifiziert, dass die Eingabe ein Paar aus unvollständigem Bild und semantischer Karte ist, während die Ausgabe ein Paar aus vollständigem Bild und semantischer Karte ist.The learning task is therefore to connect the two associated distributions p ( I i . S I , Ic, Sc) and p ( I i . S I , F ( I i . S I )). The match between the two related distributions is the classic two-sample test problem in statistics, which can be solved by minimizing the maximum mean mismatch metric. In one embodiment, a variant of a conditional GAN framework is implemented to accomplish the task. The variant is based on the conditional GAN framework, where the input is the high-resolution semantic map and the output is the high-resolution image. The framework is modified so that the input is a pair of incomplete image and semantic map, while the output is a pair of full image and semantic map.

Für einen Trainingsdatensatz, der für das überwachte Training verwendet wird, beinhalten Trainingspaare ein unvollständiges Bild und ein damit korrespondierendes vollständiges (Ziel-) Bild gemäß Ground Truth bzw. vollständiges Ground-Truth-Bild. In einer Ausführungsform sind die unvollständigen Bilder niedrigaufgelöste Bilder und die vollständigen Bilder sind damit korrespondierende vollständige (Ziel-) Bilder gemäß Ground Truth. In einer Ausführungsform werden Paare von unvollständigen Eingabedaten erzeugt, indem Daten aus Paaren von vollständigem Bild und semantischer Karte entfernt werden. Beispielsweise werden niedrigaufgelöste Eingabebilder erzeugt, indem hochaufgelöste Ausgabebilder mit 256×128 Pixeln mit bikubischer Interpolation auf 16×8 Pixel herunterskaliert werden, und dann das herunterskalierte Bild mit bikubischer Interpolation hochskaliert wird, um ein unscharfes Eingabebild mit 256×128 Pixeln zu erzeugen. So werden beispielsweise niedrigaufgelöste semantische Karten erzeugt, indem eine hochaufgelöste semantische Labelkarte von 256×128 Pixeln in Wahrscheinlichkeitswerte für jede Labelklasse (eine Wahrscheinlichkeitskarte) umgewandelt wird. In einer Ausführungsform wird die hochaufgelöste semantische Karte in ein parametrisiertes Volumen (z.B. einen Würfel) umgewandelt, wobei eine Tiefe des Würfels der Anzahl der Labels entspricht und jedes Voxel des Würfels ein semantischer Wahrscheinlichkeitswert von Null oder Eins ist. Der Wahrscheinlichkeitswürfel wird mit bikubischer Interpolation auf 16×8 Pixel herunterskaliert, dann wird der herunterskalierte Wahrscheinlichkeitswürfel mit bikubischer Interpolation hochskaliert, um einen 256×128 Wahrscheinlichkeitswürfel zu erzeugen, und der hochskalierte Wahrscheinlichkeitswürfel wird in die niedrigaufgelöste semantische Karte umgewandelt. Die Umwandlung des Wahrscheinlichkeitswürfels in die semantische Karte bedeutet, dass jedes Pixel in der niedrigaufgelösten semantischen Karte ein bestimmtes semantisches Label aufweist, anstatt einen Wahrscheinlichkeitswert über die semantischen Label aufzuweisen.For a training data set used for the supervised training, training pairs include an incomplete image and a corresponding complete (target) image according to ground truth or complete ground truth image, respectively. In one embodiment, the incomplete images are low resolution images and the complete images are corresponding complete (target) images according to ground truth. In one embodiment, pairs of incomplete input data are generated by removing data from full image and semantic map pairs. For example, low resolution input images are generated by scaling down 256x128 pixel high resolution Cubic interpolation output images to 16x8 pixels and then scaling up the downscaled image using bicubic interpolation to produce a blurred 256x128 pixel input image. For example, low-resolution semantic maps are generated by converting a high-resolution 256 x 128 pixel semantic label map into probability values for each label class (a probability map). In one embodiment, the high-resolution semantic map is converted to a parameterized volume (e.g., a cube), where a depth of the cube corresponds to the number of labels, and each voxel of the cube is a semantic probability value of zero or one. The probability cube is scaled down to 16x8 pixels using bicubic interpolation, then the scaled down probability cubic cubic interpolation cube is scaled up to produce a 256 × 128 probability cube, and the upscaled probability cube is converted to the low resolution semantic map. The conversion of the probability cube into the semantic map means that each pixel in the low-resolution semantic map has a particular semantic label instead of having a probability value over the semantic labels.

Wenn für eine Teilmenge unvollständiger Bilder im Trainingsdatensatz die entsprechenden vollständigen Bilder fehlen, kann ein teilüberwachter Lernansatz zum Training des Systems 100 des neuronalen Netzes verwendet werden. Daher kann das System 100 des neuronalen Netzes gleichzeitig mit überwachtem und unüberwachtem Lernen trainiert werden.If a subset of incomplete images in the training dataset lacks the corresponding full images, a partially supervised learning approach may be used to train the system 100 of the neural network. Therefore, the system can 100 of the neural network can be trained simultaneously with supervised and unsupervised learning.

Ubertranslation erzeugt ein Bild, das Bereiche enthält, die im Eingabebild nicht beobachtet werden. Im Vergleich zu Uberzoom lernt die Abbildungsfunktion F für Ubertranslation, Ansichten außerhalb des gegebenen Sichtfeldes eines Eingabebildes zu erweitern. Daher kann die Übersetzungsaufgabe so interpretiert werden, dass man lernt, zu extrapolieren, d.h. aus einem unvollständigen Bild II und einer unvollständigen semantischen Karte SI ein vollständiges Bild IC und eine vollständige semantische Karte Sc zu erzeugen. Zusammenfassend lässt sich sagen, dass die grundlegende Abbildung, die für die Halluzinierung von Bildinhalten für die Übersetzung benötigt wird, auch Ic, Sc = F(II, SI) ist. Daher kann das System 100 des neuronalen Netzes trainiert werden, um Halluzinationen für Ueberzoom-Anwendungen durchzuführen, wobei ein anderer Trainingsdatensatz verwendet wird, als er für das Training des System 100 des neuronalen Netzes für Ueberübersetzungs-Anwendungen verwendet wird.Ubertranslation creates an image that contains areas that are not observed in the input image. Compared to Uberzoom, the over-translation mapping function F learns to expand views outside the given field of view of an input image. Therefore, the translation task can be interpreted as learning to extrapolate, ie from an incomplete picture I i and an incomplete semantic map S I a complete picture I C and generate a complete semantic map Sc. In summary, the basic mapping required for the translation of image content for translation is also Ic, Sc = F (I I , S I ). Therefore, the system can 100 of the neural network to perform hallucinations for overzoom applications, using a different training record than it would for training the system 100 of the neural network is used for translation applications.

2A stellt ein Blockdiagramm einer Trainingskonfiguration 200 für das System 100 des neuronalen Netzes von 1B gemäß einer Ausführungsform dar. Zusätzlich zum System 100 des neuronalen Netzes beinhaltet die Trainingskonfiguration 200 ein neuronales Netz 225 eines semantischen Diskriminators, ein neuronales Netz 235 eines Bilddiskriminators, die Verlustfunktionen 215 und 205 sowie eine Parameteraktualisierungseinheit 220. Die Kombination aus dem neuronalen Netz 135 eines Generators und dem neuronalen Netz 235 des Bilddiskriminators bildet ein GAN. Die Kombination aus dem neuronalen Netz 125 eines Generators und dem neuronalen Netz 225 des semantischen Diskriminators bildet ein zweites GAN. 2A provides a block diagram of a training configuration 200 for the system 100 of the neural network of 1B according to one embodiment. In addition to the system 100 of the neural network includes the training configuration 200 a neural network 225 a semantic discriminator, a neural network 235 an image discriminator, the loss functions 215 and 205 and a parameter updating unit 220 , The combination of the neural network 135 a generator and the neural network 235 of the image discriminator forms a GAN. The combination of the neural network 125 a generator and the neural network 225 of the semantic discriminator forms a second GAN.

Eine Verlustfunktion einer ersten Basis („first base loss function“) ist definiert, um Unterschiede zwischen der Ausgabe einer vollständigen semantischen Karte durch das neuronale Netz 125 des Generators und der semantischen Karte gemäß Ground Truth zu reduzieren. Die Verlustfunktion 215 empfängt die Ausgabe der vollständigen semantischen Karte des neuronalen Netzes 215 des Generators und eine semantische Karte gemäß Ground Truth und berechnet einen entropieübergreifenden Verlustwert („cross-entropy loss value“) für die vollständige semantische Karte. L b a s e s e m a n t i c ( G ) = E ( I I , S , I C ) 1 K i = 1 K S G T i log [ G ( I I , S I ) ] s e m a n t i c i

Figure DE102019112595A1_0003
wobei G das neuronale Netz 125 des Generators ist, E das neuronale Netz 115 des Kodierers ist, [G(II,SI)]semantic die Ausgabe der hochaufgelösten semantischen Karte ist, II das unvollständige Eingabebild ist, SI die unvollständige semantische Eingabekarte ist, K die Anzahl der semantischen Labels ist und S G T i
Figure DE102019112595A1_0004
die hochaufgelöste semantische Karte gemäß Ground Truth für das semantische Label i ist.A first base loss function is defined to mean differences between the output of a complete semantic map by the neural network 125 of the generator and the semantic map according to Ground Truth. The loss function 215 receives the output of the complete semantic map of the neural network 215 of the generator and a semantic map according to ground truth and calculates a cross entropy loss value for the complete semantic map. L b a s e - s e m a n t i c ( G ) = e ( I I . S . I C ) - 1 K Σ i = 1 K S G T i log [ G ( I I . S I ) ] s e m a n t i c i
Figure DE102019112595A1_0003
where G is the neural network 125 of the generator, E is the neural network 115 of the encoder is [G (I I , S I )] semantic is the output of the high-resolution semantic map, I i the incomplete input image is, S I the incomplete semantic input card is, K is the number of semantic labels and S G T i
Figure DE102019112595A1_0004
is the high-resolution semantic map according to ground truth for the semantic label i.

Eine Verlustfunktion einer zweiten Basis ist definiert, um Unterschiede zwischen der Ausgabe des vollständigen Bildes durch das neuronale Netz 135 des Generators und dem Bild gemäß Ground Truth zu reduzieren. Die Verlustfunktion 205 empfängt die Ausgabe des vollständigen Bildes des neuronalen Netzes 135 des Generators und ein Bild gemäß Ground Truth und berechnet einen Wahrnehmungsverlustwert für das vollständige Ausgabebild. L b a s e i m a g e ( G ) = E ( I I , S , I C ) i = I N Φ ( i ) ( [ G ( I I , S I ) ] i m a g e I

Figure DE102019112595A1_0005
wobei G das neuronale Netz 135 des Generators ist, E das neuronale Netz 105 des Kodierers ist, [G(II, SI)]image das hochaufgelöste Ausgabebild ist, N die Anzahl der Schichten in einem neuronalen Netz zur Berechnung der Verlustfunktion ist.A loss function of a second basis is defined to be differences between the output of the complete image by the neural network 135 of the generator and the image according to Ground Truth. The loss function 205 receives the output of the complete image of the neural network 135 of the generator and a picture according to ground truth and calculates a perception loss value for the complete output image. L b a s e - i m a G e ( G ) = e ( I I . S . I C ) Σ i = I N Φ ( i ) ( [ G ( I I . S I ) ] i m a G e I
Figure DE102019112595A1_0005
where G is the neural network 135 of the generator, E is the neural network 105 of the encoder, [G (I I , S I )] image is the high-resolution output image, N the number of layers in a neural network to calculate the loss function is.

Das neuronale Netz 225 des semantischen Diskriminators ist ein gegnerischer Diskriminator, der die Ausgabe der vollständigen semantischen Karte durch das neuronale Netz 125 des Generators und eine semantische Karte gemäß Ground Truth erhält. Das neuronale Netz 225 des semantischen Diskriminators empfängt auch die Ausgabe des vollständigen Bildes durch das neuronale Netz 135 des Generators und ein Bild gemäß Ground Truth und berechnet einen bedingten gegnerischen Verlust. Das neuronale Netz 225 des semantischen Diskriminators kann die folgende bedingte gegnerische Verlustfunktion berechnen, um sicherzustellen, dass die vollständige semantische Karte plausibel ist. L a d v s e m a n t i c ( G , D s e m a n t i c ) = E ( I G T , S G T ) [ log D s e m a n t i c ( I G T , S G T ) ] + E ( I I , S I , I G T ) [ log ( 1 D s e m a n t i c ( I G T , [ G ( I I , S I ] s e m a n t i c ) ) ]

Figure DE102019112595A1_0006
wobei Dsemantic das neuronale Netz 235 des semantischen Diskriminators ist.The neural network 225 of the semantic discriminator is an adversary discriminator, which is the output of the complete semantic card through the neural network 125 of the generator and receives a semantic map according to Ground Truth. The neural network 225 The semantic discriminator also receives the output of the complete image through the neural network 135 of the generator and a picture according to Ground Truth and calculates a conditional enemy loss. The neural network 225 of the semantic discriminator can compute the following conditional adversary loss function to ensure that the complete semantic map is plausible. L a d v - s e m a n t i c ( G . D s e m a n t i c ) = e ( I G T . S G T ) [ log D s e m a n t i c ( I G T . S G T ) ] + e ( I I . S I . I G T ) [ log ( 1 - D s e m a n t i c ( I G T . [ G ( I I . S I ] s e m a n t i c ) ) ]
Figure DE102019112595A1_0006
where D semantic is the neural network 235 of the semantic discriminator.

Das neuronale Netz 235 des Bilddiskriminators entspricht einem gegnerischen Diskriminator, der die Ausgabe des vollständigen Bildes durch das neuronale Netz 135 des Generators und ein Bild gemäß Ground Truth empfängt. Das neuronale Netz 235 des Bilddiskriminators empfängt auch die Ausgabe der vollständigen semantischen Karte durch das neuronale Netz 125 des Generators und eine semantische Karte gemäß Ground Truth und berechnet einen bedingten gegnerischen Verlust. Das neuronale Netz 235 des Bilddiskriminators kann die folgende bedingte gegnerische Verlustfunktion berechnen, um sicherzustellen, dass das vollständige Bild plausibel ist. L a d v i m a g e ( G , D i m a g e ) = E ( I G T , S G T ) [ log D i m a g e ( S G T , I G T ) ] + E ( I I , S I , S G T ) [ log ( 1 D i m a g e ( S G T , [ G ( I I , S I ] i m a g e ) ) ]

Figure DE102019112595A1_0007
wobei Dimage das neuronale Netz 225 des Bilddiskriminators ist.The neural network 235 of the image discriminator corresponds to an opposing discriminator, which is the output of the complete image through the neural network 135 of the generator and a picture according to Ground Truth receives. The neural network 235 The image discriminator also receives the output of the complete semantic map through the neural network 125 of the generator and a semantic map according to Ground Truth and calculates a conditional enemy loss. The neural network 235 of the image discriminator can compute the following conditional enemy loss function to ensure that the complete image is plausible. L a d v - i m a G e ( G . D i m a G e ) = e ( I G T . S G T ) [ log D i m a G e ( S G T . I G T ) ] + e ( I I . S I . S G T ) [ log ( 1 - D i m a G e ( S G T . [ G ( I I . S I ] i m a G e ) ) ]
Figure DE102019112595A1_0007
where D image is the neural network 225 of the image discriminator.

Zwei weitere Verlustwerte, insbesondere der Diskriminatoraktivierungsverlustwert oder der Merkmalübereinstimmungsverlustwert, können durch das neuronale Netz 225 des semantischen Diskriminators und das neuronale Netz 235 des Bilddiskriminators berechnet werden, um die Leistung weiter zu verbessern.                            L F M i m a g e ( G , D i m a g e ) = + E ( I I , S I , I G T , S G T ) i = 1 T D i m a g e i ( S G T , I G T ) D i m a g e i ( S G T , [ G ( I I , S I ) ] i m a g e ) I

Figure DE102019112595A1_0008
und L F M s e m a n t i c ( G , D s e m a n t i c ) = E ( I I , S I , I G T , S G T ) i = 1 T D s e m a n t i c i ( I G T , S G T ) D s e m a n t i c i ( I G T , [ G ( I I , S I ) ] s e m a n t i c ) I
Figure DE102019112595A1_0009
wobei Di die Aktivierung der Schicht i aus dem neuronalen Netz 225 oder 235 des Diskriminators und T die Anzahl der Schichten in den neuronalen Netzen 225 und 235 des Diskriminators ist.Two other loss values, in particular the discriminator activation loss value or the characteristic match loss value, may pass through the neural network 225 the semantic discriminator and the neural network 235 of the image discriminator to further improve performance. L F M - i m a G e ( G . D i m a G e ) = + e ( I I . S I . I G T . S G T ) Σ i = 1 T D i m a G e i ( S G T . I G T ) - D i m a G e i ( S G T . [ G ( I I . S I ) ] i m a G e ) I
Figure DE102019112595A1_0008
and L F M - s e m a n t i c ( G . D s e m a n t i c ) = e ( I I . S I . I G T . S G T ) Σ i = 1 T D s e m a n t i c i ( I G T . S G T ) - D s e m a n t i c i ( I G T . [ G ( I I . S I ) ] s e m a n t i c ) I
Figure DE102019112595A1_0009
in which D i the activation of layer i from the neural network 225 or 235 of the discriminator and T the number of layers in the neural networks 225 and 235 of the discriminator.

Die Parameteraktualisierungseinheit 220 stellt aktualisierte Schichtparameter (z.B. Gewichte) für das neuronale Netz 115 des Kodierers, das neuronale Netz 105 des Kodierers, die Restfunktion 110, das neuronale Netz 125 des Generators und das neuronale Netz 135 des Generators basierend auf den Verlustwerten zur Verfügung. In einer Ausführungsform aktualisiert die Parameteraktualisierungseinheit 220 die Parameter, um die Verluste gemäß der folgenden Optimierungsformel mit sechs Verlustfunktionen zu minimieren: min G { L b a s e i m a g e ( G ) + L b a s e s e m a n t i c ( G ) + max D i m a g e ( L a d v i m a g e ( G , D i m a g e ) + L F M i m a g e ( G , D i m a g e ) ) + max D s e m a n t i c ( L a d v s e m a n t i c ( G , D s e m a n t i c ) + L F M s e m a n t i c ( G , D s e m a n t i c ) ) }

Figure DE102019112595A1_0010
The parameter update unit 220 provides updated layer parameters (eg weights) for the neural network 115 of the encoder, the neural network 105 of the encoder, the residual function 110 , the neural network 125 of the generator and the neural network 135 of the generator based on the loss values available. In one embodiment, the parameter update unit updates 220 the parameters to minimize the losses according to the following optimization formula with six loss functions: min G { L b a s e - i m a G e ( G ) + L b a s e - s e m a n t i c ( G ) + Max D i m a G e ( L a d v - i m a G e ( G . D i m a G e ) + L F M - i m a G e ( G . D i m a G e ) ) + Max D s e m a n t i c ( L a d v - s e m a n t i c ( G . D s e m a n t i c ) + L F M - s e m a n t i c ( G . D s e m a n t i c ) ) }
Figure DE102019112595A1_0010

2B stellt einen Flussplan eines Verfahrens 250 zum Trainieren des Systems 100 des neuronalen Netzes aus 1B gemäß einer Ausführungsform dar. Obwohl das Verfahren 250 im Rahmen einer Verarbeitungseinheit beschrieben wird, kann das Verfahren 120 auch durch ein Programm, eine benutzerdefinierte Schaltung oder durch eine Kombination aus einer benutzerdefinierten Schaltung und einem Programm durchgeführt werden. So kann beispielsweise das Verfahren 250 von einer GPU (Grafikprozessoreinheit), einer CPU (Zentraleinheit) oder einem beliebigen Prozessor ausgeführt werden, der in der Lage ist, eine Trainingskonfiguration für ein Modell eines neuronalen Netzes zu implementieren, wie beispielsweise das System 100 des neuronalen Netzes. Darüber hinaus versteht der Fachmann, dass jedes System, das das Verfahren 250 durchführt, im Rahmen und Geist der Ausführungsformen der vorliegenden Offenbarung liegt. 2 B provides a flowchart of a process 250 to train the system 100 of the neural network 1B according to one embodiment. Although the method 250 is described in the context of a processing unit, the method 120 also be performed by a program, a user-defined circuit or by a combination of a user-defined circuit and a program. For example, the procedure 250 by a GPU (graphics processing unit), a CPU (central processing unit), or any processor capable of implementing a training configuration for a neural network model, such as the system 100 of the neural network. In addition, the skilled person understands that any system that performs the procedure 250 is within the scope and spirit of embodiments of the present disclosure.

Die Schritte 130, 140, 145 und 155 werden wie zuvor in Verbindung mit den 1C und 1D beschrieben abgeschlossen. Bei Schritt 255 werden die zweite semantische Karte, die semantische Karte gemäß Ground Truth, das zweite Bild und ein Bild gemäß Ground Truth durch das neuronale Netz 225 des semantischen Diskriminators verarbeitet, um semantische Verlustwerte zu erzeugen. In einer Ausführungsform werden die semantischen Verlustwerte als Ladv-semantic (G, Dsemantic) und/oder LFM-semantic (G, Dsemantic) berechnet.The steps 130 . 140 . 145 and 155 be as in connection with the 1C and 1D described completed. At step 255 become the second semantic map, the ground truth map semantic map, the second image and a ground truth image through the neural network 225 of the semantic discriminator to produce semantic loss values. In one embodiment, the semantic loss values are calculated as L adv-semantic (G, D semantic ) and / or L FM semantic (G, D semantic ).

Bei Schritt 260 werden das zweite Bild, das Ground-Truth-Bild bzw. Bild gemäß Ground Truth, die zweite semantische Karte und eine semantische Karte gemäß Ground Truth durch das neuronale Netz 235 des Bilddiskriminators verarbeitet, um Bildverlustwerte zu erzeugen. In einer Ausführungsform werden die Bildverlustwerte als Ladv-image (G,Dimage) und/oder LFM-image (G,Dimage) berechnet. At step 260 For example, the second image, the ground truth image, the second semantic map, and a ground truth truth map are passed through the neural network 235 of the image discriminator to produce image loss values. In one embodiment, the image loss values are calculated as L adv-image (G, D image ) and / or L FM-image (G, D image ).

Bei Schritt 265 verarbeitet die Verlustfunktion 215 die zweite semantische Karte und die semantische Karte gemäß Ground Truth, um zusätzliche semantische Verlustwerte zu erzeugen. In einer Ausführungsform werden die zusätzlichen semantischen Verlustwerte als Lbase-semantic (G) berechnet. Bei Schritt 270 verarbeitet die Verlustfunktion 205 das zweite Bild und das Bild gemäß Ground Truth, um zusätzliche Bildverlustwerte zu erzeugen. In einer Ausführungsform werden die zusätzlichen Bildverlustwerte als Lbase-image (G) berechnet. Bei Schritt 275 aktualisiert die Parameteraktualisierungseinheit 220 die Parameter des Systems 100 des neuronalen Netzes, um Verluste basierend auf den semantischen Bildverlustwerten, den zusätzlichen semantischen Verlustwerten, den Bildverlustwerten und den zusätzlichen Bildverlustwerten zu minimieren.At step 265 processes the loss function 215 the second semantic map and the ground truth map semantic map to generate additional semantic loss values. In one embodiment, the additional semantic loss values are expressed as L base-semantic ( G ). At step 270 processes the loss function 205 the second image and the image according to ground truth to produce additional image loss values. In one embodiment, the additional image loss values are expressed as L base-image ( G ). At step 275 updates the parameter update unit 220 the parameters of the system 100 of the neural network to minimize losses based on the semantic image loss values, the additional semantic loss values, the image loss values, and the additional image loss values.

Nach dem Training kann das System 100 des neuronalen Netzes zum Halluzinieren von Bildinhalten für die Anwendungen Vergrößern, Bewegen der Kamera und/oder Erzeugen unendlicher Inhalte eingesetzt werden, wobei die zeitliche Konsistenz der ausgegebenen Bildsequenz ein realistisches oder plausibles Ergebnis liefert. Für die Anwendung des Zoomens bzw. Vergrößerns kann die zeitliche Konsistenz durch die Erzeugung von Zwischenbildern erreicht werden. Anstatt beispielsweise ein hochaufgelöstes Bild zu erzeugen, das einem 16-fachen Zoom entspricht, kann ein 2-facher Zoom iterativ (4-mal) erzeugt werden, wobei die Ausgabe der vorherigen Iteration als Eingabe für das System 100 des neuronalen Netzes für die nächste Iteration verwendet wird. In einem weiteren Beispiel kann ein Benutzer mehrere Eingabebilder als Keyframes bzw. Schlüsselbilder bereitstellen, um die zeitliche Konsistenz zu verbessern. So kann beispielsweise für die Keyframes für eine Bildsequenz ein Downsampling ausgeführt werden, und dazwischenliegende Frames können durch die mittels Downsampling erstellten Daten von den Keyframes ersetzt werden, um Bilddaten für mindestens ein dazwischenliegendes Bild in der Bildsequenz zu halluzinieren. Neben der Erstellung konsistenterer Bildsequenzen bietet die Übernahme mehrerer Eingabebilder zur Erzeugung des halluzinierten Inhalts dem Benutzer mehr Kontrolle.After training, the system can 100 of the neural network for hallucinating image content for the applications zoom in, moving the camera and / or generating infinite content, the temporal consistency of the output image sequence providing a realistic or plausible result. For the application of zooming or enlargement, the temporal consistency can be achieved by the production of intermediate images. For example, instead of creating a high-resolution image that is 16x zoom, a 2x zoom can be generated iteratively (4 times) using the output of the previous iteration as input to the system 100 of the neural network is used for the next iteration. In another example, a user may provide multiple input images as keyframes to improve temporal consistency. For example, the keyframes for an image sequence may be downsampled, and intervening frames may be replaced by the downsampled data from the keyframes to hallucinate image data for at least one intervening image in the image sequence. In addition to creating more consistent image sequences, adopting multiple input images to create the hallucinated content provides the user with more control.

Zusammenfassend ermöglicht das System 100 des neuronalen Netzes die Erzeugung einer Bildsequenz durch Halluzinieren von Inhalten für ein oder mehrere Eingabebilder, deren Auflösung zu niedrig ist (durch Zoomen) oder die außerhalb des Sichtfeldes der Originalkamera liegen (d.h. beim Simulieren einer sich seitlich bewegenden oder drehenden Kamera). Die Ausgabesequenz von vollständigen Bildern kann dann eine Reihe von Bildern sein, die eine kurze Videosequenz bilden, oder eine Reihe von alternativen Versionen des Eingabebildes, bei denen der Inhalt durch Halluzinationen variiert.In summary, the system allows 100 the neural network generating an image sequence by hallucinating content for one or more input images whose resolution is too low (by zooming) or out of the field of view of the original camera (ie simulating a laterally moving or rotating camera). The output sequence of complete images may then be a series of images forming a short video sequence or a series of alternative versions of the input image where the content varies by hallucinations.

Halluzinierende Bildinhalte können auch verwendet werden, um Straßenansichten zu erzeugen (Blick auf einen Fluchtpunkt) und Videosequenzen zu erzeugen, die räumlich und zeitlich konsistent sind. Die Videosequenzen können eine unterschiedliche oder sogar unendliche Länge aus einem oder mehreren Bildern niedriger Qualität und einer oder mehreren entsprechenden semantischen Karten niedriger Qualität aufweisen. In einer Ausführungsform ist eine Videosequenz eine ähnliche Straßenszene, um einen Trainingsdatensatz zu ergänzen, der für maschinelles Lernen und Computer-Vision-Aufgaben benötigt wird. Wichtig ist, dass verschiedene Erscheinungsformen von Instanzen in einer Szene aus einem einzigen Eingabebild und einer entsprechenden semantischen Karte halluziniert werden können, was die Trainingsdaten für Szenen- oder Objekterkennungsaufgaben leicht ergänzt.Hallucinating image content can also be used to create street views (looking at a vanishing point) and create video sequences that are spatially and temporally consistent. The video sequences may have a different or even infinite length of one or more low quality images and one or more corresponding low quality semantic maps. In one embodiment, a video sequence is a similar street scene to supplement a training data set needed for machine learning and computer vision tasks. Importantly, different instances of instances in a scene can be hallucinated from a single input image and a corresponding semantic map, which easily complements the training data for scene or object recognition tasks.

Parallele VerarbeitungsarchitekturParallel processing architecture

3 stelle eine Parallelverarbeitungseinheit (PPU) 300 gemäß einer Ausführungsform dar. In einer Ausführungsform ist die PPU 300 ein Multithread-Prozessor, der auf einer oder mehreren integrierten Schaltungsbauelementen implementiert ist. Die PPU 300 ist eine latenzverbergende Architektur, die entwickelt wurde, um viele Threads parallel zu verarbeiten. Ein Thread (z.B. ein Thread der Ausführung) ist eine Instanziierung einer Reihe von Anweisungen, die für die Ausführung durch die PPU 300 konfiguriert sind. In einer Ausführungsform ist die PPU 300 eine Grafikverarbeitungseinheit (GPU), die konfiguriert ist, um eine Grafik-Rendering-Pipeline zum Verarbeiten von dreidimensionalen (3D) Bilddaten zu implementieren, um zweidimensionale (2D) Bilddaten zur Anzeige auf einer Anzeigevorrichtung, wie beispielsweise einer Flüssigkristallanzeigevorrichtung (LCD), zu erzeugen. In anderen Ausführungsformen kann die PPU 300 zur Durchführung von Universalberechnungen verwendet werden. Obwohl hierin ein exemplarischer Parallelprozessor zu veranschaulichenden Zwecken vorgesehen ist, ist völlig klar, dass dieser Prozessor nur zu veranschaulichenden Zwecken vorgesehen ist und dass jeder Prozessor als Ergänzung und/oder Ersatz für diesen eingesetzt werden kann. 3 create a parallel processing unit (PPU) 300 according to one embodiment. In one embodiment, the PPU 300 a multithreaded processor implemented on one or more integrated circuit devices. The PPU 300 is a latency-concealing architecture designed to handle many threads in parallel. A thread (eg a thread of execution) is an instantiation of a series of statements that are required to be executed by the PPU 300 are configured. In one embodiment, the PPU 300 a graphics processing unit (GPU) configured to implement a graphics rendering pipeline for processing three-dimensional (3D) image data to produce two-dimensional (2D) image data for display on a display device such as a liquid crystal display (LCD) device , In other embodiments, the PPU 300 used to perform general purpose calculations. Although an exemplary parallel processor is provided herein for illustrative purposes, it is to be understood that this processor is for illustrative purposes only and that any processor may be used to supplement and / or replace it.

Eine oder mehrere PPUs 300 können konfiguriert werden, um Tausende von Anwendungen für High Performance Computing (HPC), für Rechenzentren und für maschinelles Lernen zu beschleunigen. Die PPU 300 kann konfiguriert werden, um zahlreiche Systeme und Anwendungen für das Tiefenlernen zu beschleunigen, darunter autonome Fahrzeugplattformen, Tiefenlernen (Deep Learning), hochpräzise Sprach-, Bild- und Texterkennungssysteme, intelligente Videoanalytik, molekulare Simulationen, Medikamentenentwicklung, Krankheitsdiagnose, Wettervorhersage, Big Data Analytik, Astronomie, Molekulardynamiksimulation, Finanzmodellierung, Robotik, Fabrikautomatisierung, Echtzeit-Sprachübersetzung, Online-Suchoptimierung und personalisierte Benutzerempfehlungen und dergleichen. One or more PPUs 300 can be configured to accelerate thousands of high performance computing (HPC), data center, and machine learning applications. The PPU 300 can be configured to accelerate numerous systems and applications for depth learning, including autonomous vehicle platforms, deep learning, high-precision speech, image and text recognition systems, intelligent video analytics, molecular simulations, drug development, disease diagnosis, weather forecasting, big data analytics, Astronomy, molecular dynamics simulation, financial modeling, robotics, factory automation, real-time language translation, online search optimization, and personalized user recommendations and the like.

Wie in 3 dargestellt ist, beinhaltet die PPU 300 eine Input/Output (I/O)-Einheit 305, eine Frontend-Einheit 315, eine Schedulereinheit 320, eine Arbeitsverteilungseinheit 325, einen Netzwerkknoten (hub) 330, ein Koppelfeld (crossbar) (Xbar) 370, einen oder mehrere General Processing Cluster (GPCs) 350 und eine oder mehrere Speicherpartitionseinheiten 380. Die PPU 300 kann über eine oder mehrere Hochgeschwindigkeits-NVLink 310-Verbindungen mit einem Host-Prozessor oder anderen PPUs 300 verbunden werden. Die PPU 300 kann über eine Verbindung 302 mit einem Host-Prozessor oder anderen Peripheriegeräten verbunden werden. Die PPU 300 kann auch an einen lokalen Speicher angeschlossen werden, der eine Anzahl von Speichervorrichtungen 304 umfasst. In einer Ausführungsform kann der lokale Speicher eine Anzahl von dynamischen DRAM-Vorrichtungen (Dynamic Random Access Memory) umfassen. Die DRAM-Vorrichtungen können als HBM-Subsystem (High-Bandwidth Memory) konfiguriert werden, wobei mehrere DRAM-Dies in jeder Vorrichtung gestapelt sind.As in 3 shown includes the PPU 300 an input / output (I / O) unit 305, a front-end unit 315 , a scheduler unit 320 , a work distribution unit 325 , a network hub 330 , a crossbar (Xbar) 370 , one or more general processing clusters (GPCs) 350 and one or more storage partition units 380 , The PPU 300 can connect to one or more high-speed NVLink 310 connections to a host processor or other PPUs 300 get connected. The PPU 300 can have a connection 302 be connected to a host processor or other peripherals. The PPU 300 can also be connected to a local memory containing a number of memory devices 304 includes. In one embodiment, the local memory may include a number of Dynamic Random Access Memory (DRAM) devices. The DRAM devices may be configured as an HBM (High-Bandwidth Memory) subsystem with multiple DRAM dies stacked in each device.

Die NVLink 310-Verbindung ermöglicht es Systemen, eine oder mehrere PPUs 300 in Kombination mit einer oder mehreren CPUs zu skalieren und zu integrieren, unterstützt die Cache-Kohärenz zwischen den PPUs 300 und CPUs und das CPU-Mastering. Daten und/oder Befehle können vom NVLink 310 über den Netzwerkknoten 330 zu/von anderen Einheiten der PPU 300 übertragen werden, wie z.B. einer oder mehreren Kopiermaschinen, einem Video-Encoder, einem Videodecoder, einer Power-Management-Einheit usw. (nicht explizit dargestellt). Der NVLink 310 wird in Verbindung mit 5B näher beschrieben.The NVLink 310 connection allows systems to have one or more PPUs 300 Scale and integrate with one or more CPUs to support cache coherency between the PPUs 300 and CPUs and CPU mastering. Data and / or commands can be obtained from NVLink 310 over the network node 330 to / from other units of the PPU 300 be transmitted, such as one or more copy machines, a video encoder, a video decoder, a power management unit, etc. (not explicitly shown). The NVLink 310 will be in contact with 5B described in more detail.

Die I/O-Einheit 305 ist konfiguriert, um Kommunikation (z.B. Befehle, Daten usw.) von einem Host-Prozessor (nicht dargestellt) über die Verbindung 302 zu senden und zu empfangen. Die I/O-Einheit 305 kann mit dem Host-Prozessor direkt über die Verbindung 302 oder über eine oder mehrere Zwischenvorrichtungen, wie beispielsweise eine Speicherbrücke, kommunizieren. In einer Ausführungsform kann die I/O-Einheit 305 mit einem oder mehreren anderen Prozessoren kommunizieren, wie beispielsweise einer oder mehreren der PPUs 300 über die Verbindung 302. In einer Ausführungsform implementiert die I/O-Einheit 305 eine Peripheral Component Interconnect Express (PCIe)-Schnittstelle für die Kommunikation über einen PCIe-Bus und die Verbindung 302 ist ein PCIe-Bus. In alternativen Ausführungsformen kann die I/O-Einheit 305 andere Arten von bekannten Schnittstellen zur Kommunikation mit externen Geräten implementieren.The I / O unit 305 is configured to communicate (eg, commands, data, etc.) from a host processor (not shown) over the connection 302 to send and receive. The I / O unit 305 can work with the host processor directly over the connection 302 or communicate via one or more intermediate devices, such as a memory bridge. In one embodiment, the I / O unit 305 communicate with one or more other processors, such as one or more of the PPUs 300 about the connection 302 , In one embodiment, the I / O unit implements 305 a Peripheral Component Interconnect Express (PCIe) interface for communication over a PCIe bus and the connection 302 is a PCIe bus. In alternative embodiments, the I / O unit 305 implement other types of known interfaces for communicating with external devices.

Die I/O-Einheit 305 dekodiert Pakete, die über die Verbindung 302 empfangen werden. In einer Ausführungsform stellen die Pakete Befehle dar, die konfiguriert sind, um die PPU 300 zu veranlassen, verschiedene Operationen durchzuführen. Die I/O-Einheit 305 überträgt die dekodierten Befehle an verschiedene andere Einheiten der PPU 300, wie es in den Befehlen angegeben ist. So können beispielsweise einige Befehle an die Frontend-Einheit 315 übertragen werden. Andere Befehle können an den Netzwerkknoten 330 oder andere Einheiten der PPU 300 übertragen werden, wie z.B. eine oder mehrere Kopiermaschinen, ein Video-Encoder, ein Videodecoder, ein Power-Management-Gerät usw. (nicht explizit dargestellt). Mit anderen Worten, die I/O-Einheit 305 ist konfiguriert, um die Kommunikation zwischen den verschiedenen logischen Einheiten der PPU 300 und unter diesen zu leiten.The I / O unit 305 decodes packets over the connection 302 be received. In one embodiment, the packets represent commands configured to the PPU 300 to cause to perform various operations. The I / O unit 305 transmits the decoded commands to various other units of the PPU 300 as specified in the commands. For example, some commands to the frontend unit 315 be transmitted. Other commands can be sent to the network node 330 or other units of the PPU 300 such as one or more copy machines, a video encoder, a video decoder, a power management device, etc. (not explicitly shown). In other words, the I / O unit 305 is configured to communicate between the various logical units of the PPU 300 and to lead among them.

In einer Ausführungsform kodiert ein vom Host-Prozessor ausgeführtes Programm einen Befehlsstrom in einem Puffer, der der PPU 300 Arbeitslasten zur Verarbeitung bereitstellt. Eine Arbeitslast (Workload) kann mehrere Anweisungen und Daten umfassen, die durch diese Anweisungen verarbeitet werden sollen. Der Puffer ist ein Bereich in einem Speicher, der sowohl vom Host-Prozessor als auch von der PPU 300 zugänglich ist (z.B. Lesen/Schreiben). So kann beispielsweise die I/O-Einheit 305 konfiguriert sein, um auf den Puffer in einem Systemspeicher zuzugreifen, der mit der Verbindung 302 über Speicheranforderungen verbunden ist, die über die Verbindung 302 übertragen werden. In einer Ausführungsform schreibt der Host-Prozessor den Befehlsstrom in den Puffer und sendet dann einen Zeiger auf den Anfang des Befehlsstroms an die PPU 300. Die Frontend-Einheit 315 empfängt Zeiger auf einen oder mehrere Befehlsströme. Die Frontend-Einheit 315 verwaltet einen oder mehrere Ströme, liest Befehle aus den Strömen und leitet Befehle an die verschiedenen Einheiten der PPU 300 weiter.In one embodiment, a program executed by the host processor encodes an instruction stream in a buffer belonging to the PPU 300 Provides workloads for processing. A workload can include multiple statements and data to be processed by these statements. The buffer is an area in a memory owned by both the host processor and the PPU 300 is accessible (eg read / write). For example, the I / O unit 305 be configured to access the buffer in a system memory associated with the connection 302 is connected via storage requirements over the connection 302 be transmitted. In one embodiment, the host processor writes the instruction stream into the buffer and then sends a pointer to the beginning of the instruction stream to the PPU 300 , The frontend unit 315 receives pointers to one or more instruction streams. The frontend unit 315 manages one or more streams, reads commands from the streams, and forwards commands to the various units of the PPU 300 further.

Die Frontend-Einheit 315 ist mit einer Scheduler-Einheit 320 gekoppelt, die die verschiedenen GPCs 350 konfiguriert, um Tasks zu verarbeiten, die durch einen oder mehrere Ströme definiert sind. Die Scheduler-Einheit 320 ist konfiguriert, um Zustandsinformationen in Bezug auf die verschiedenen Tasks zu verfolgen, die von der Scheduler-Einheit 320 verwaltet werden. Der Zustand kann anzeigen, welchem GPC 350 eine Task zugeordnet ist, ob die Task aktiv oder inaktiv ist, eine der Task zugeordnete Prioritätsstufe und so weiter. Die Scheduler-Einheit 320 verwaltet die Ausführung einer Vielzahl von Tasks auf einem oder mehreren GPCs 350. The frontend unit 315 is with a scheduler unit 320 Coupled with the various GPCs 350 configured to process tasks that are defined by one or more streams. The scheduler unit 320 is configured to keep track of state information related to the various tasks performed by the scheduler unit 320 to get managed. The state can indicate which GPC 350 a task is assigned, whether the task is active or inactive, a priority level assigned to the task, and so on. The scheduler unit 320 manages the execution of a large number of tasks on one or more GPCs 350 ,

Die Scheduler-Einheit 320 ist mit einer Arbeitsverteilungseinheit 325 gekoppelt, die konfiguriert ist, um Tasks zur Ausführung auf den GPCs 350 zu verteilen. Die Arbeitsverteilungseinheit 325 kann eine Anzahl von geplanten Tasks verfolgen, die von der Scheduler-Einheit 320 empfangen wurden. In einer Ausführungsform verwaltet die Arbeitsverteilungseinheit 325 für jeden der GPCs 350 einen Pool bevorstehender Tasks und einen Pool aktiver Tasks. Der Pool bevorstehender Tasks kann eine Anzahl von Slots (z.B. 32 Slots) umfassen, die Tasks enthalten, die von einem bestimmten GPC 350 bearbeitet werden sollen. Der Pool aktiver Tasks kann eine Anzahl von Slots (z.B. 4 Slots) für Tasks umfassen, die von den GPCs 350 aktiv bearbeitet werden. Wenn ein GPC 350 die Ausführung einer Task beendet, wird diese Task aus dem Pool aktiver Tasks für den GPC 350 geworfen und eine der anderen Tasks aus dem Pool bevorstehender Tasks ausgewählt und zur Ausführung auf dem GPC 350 eingeplant. Wenn eine aktive Task auf dem GPC 350 inaktiv war, z. B. während des Wartens auf die Auflösung einer Datenabhängigkeit, kann die aktive Task aus dem GPC 350 geworfen und in den Pool der bevorstehenden Aufgaben zurückgeführt werden, während eine andere Task im Pool der bevorstehenden Tasks ausgewählt und für die Ausführung auf dem GPC 350 geplant wird.The scheduler unit 320 is with a work distribution unit 325 coupled, which is configured to perform tasks on the GPCs 350 to distribute. The work distribution unit 325 can track a number of scheduled tasks by the scheduler unit 320 were received. In one embodiment, the work distribution unit manages 325 for each of the GPCs 350 a pool of upcoming tasks and a pool of active tasks. The pool of pending tasks may include a number of slots (eg, 32 slots) that contain tasks performed by a particular GPC 350 to be edited. The active task pool may include a number of slots (eg, 4 slots) for tasks performed by the GPCs 350 be actively worked on. If a GPC 350 When a task finishes executing, this task is taken from the pool of active tasks for the GPC 350 and select one of the other tasks from the pool of upcoming tasks and run it on the GPC 350 planned. If an active task on the GPC 350 was inactive, z. For example, while waiting for the resolution of a data dependency, the active task may be from the GPC 350 Thrown and returned to the pool of upcoming tasks, while another task selected in the pool of upcoming tasks and for execution on the GPC 350 is planned.

Die Arbeitsverteilungseinheit 325 kommuniziert mit einem oder mehreren GPCs 350 über die XBar 370. Die XBar 370 ist ein Verbindungsnetzwerk, das viele der Einheiten der PPU 300 mit anderen Einheiten der PPU 300 koppelt. So kann beispielsweise die XBar 370 konfiguriert sein, um die Arbeitsverteilungseinheit 325 mit einem bestimmten GPC 350 zu koppeln. Obwohl nicht ausdrücklich angegeben, können eine oder mehrere andere Einheiten der PPU 300 auch über den Netzwerkknoten 330 mit der XBar 370 verbunden werden.The work distribution unit 325 communicates with one or more GPCs 350 over the XBar 370 , The XBar 370 is a connection network that many of the units of PPU 300 with other units of PPU 300 coupled. For example, the XBar 370 be configured to the work distribution unit 325 with a particular GPC 350 to pair. Although not expressly stated, one or more other units of PPU 300 also via the network node 330 with the XBar 370 get connected.

Die Tasks werden von der Scheduler-Einheit 320 verwaltet und von der Arbeitsverteilungseinheit 325 an einen GPC 350 geschickt. Das GPC 350 ist konfiguriert, um die Task zu bearbeiten und Ergebnisse zu generieren. Die Ergebnisse können von anderen Tasks innerhalb des GPC 350 übernommen, über die XBar 370 an ein anderes GPC 350 weitergeleitet oder im Speicher 304 gespeichert werden. Die Ergebnisse können über die Speicherpartitionseinheiten 380 in den Speicher 304 geschrieben werden, die eine Speicherschnittstelle zum Lesen und Schreiben von Daten in/aus dem Speicher 304 implementieren. Die Ergebnisse können über den NVLink 310 an eine andere PPU 304 oder CPU übertragen werden. In einer Ausführungsform beinhaltet die PPU 300 eine Anzahl U von Speicherpartitionseinheiten 380, die gleich der Anzahl der separaten und unterschiedlichen Speichervorrichtungen 304 ist, die mit der PPU 300 gekoppelt sind. Eine Speicherpartitionseinheit 380 wird im Folgenden in Verbindung mit 4B näher beschrieben.The tasks are handled by the scheduler unit 320 managed and distributed by the work distribution unit 325 to a GPC 350 cleverly. The GPC 350 is configured to edit the task and generate results. The results can be obtained from other tasks within the GPC 350 taken over the XBar 370 to another GPC 350 forwarded or in memory 304 get saved. The results can be obtained through the storage partition units 380 in the store 304 written to a memory interface for reading and writing data to / from memory 304 to implement. The results can be obtained through the NVLink 310 to another PPU 304 or CPU. In one embodiment, the PPU includes 300 a number U of storage partition units 380 equal to the number of separate and different memory devices 304 is that with the PPU 300 are coupled. A storage partition unit 380 will be in connection with 4B described in more detail.

In einer Ausführungsform führt ein Host-Prozessor einen Treiberkern aus, der eine Anwendungsprogrammierschnittstelle (API) implementiert, die es einer oder mehreren auf dem Host-Prozessor ausgeführten Anwendungen ermöglicht, Operationen zur Ausführung auf der PPU 300 zu planen. In einer Ausführungsform werden mehrere Rechenanwendungen gleichzeitig von der PPU 300 ausgeführt, und die PPU 300 bietet Isolation, Quality of Service (QoS) und unabhängige Adressräume für die mehreren Rechenanwendungen. Eine Anwendung kann Anweisungen (z.B. API-Aufrufe) erzeugen, die den Treiberkern veranlassen, einen oder mehrere Tasks zur Ausführung durch die PPU 300 zu erzeugen. Der Treiberkern gibt Tasks an einen oder mehrere Ströme aus, die von der PPU 300 verarbeitet werden. Jede Task kann eine oder mehrere Gruppen von verwandten Threads umfassen, die hierin als Warp bezeichnet werden. In einer Ausführungsform umfasst ein Warp 32 verwandte Threads, die parallel ausgeführt werden können. Kooperierende Threads können sich auf eine Vielzahl von Threads beziehen, einschließlich Anweisungen zur Ausführung der Task, die Daten über einen gemeinsamen Speicher austauschen können. Threads und zusammenwirkende Threads werden in Verbindung mit 5A näher beschrieben.In one embodiment, a host processor executes a driver core that implements an application programming interface (API) that allows one or more applications running on the host processor to perform operations on the PPU 300 to plan. In one embodiment, multiple computing applications simultaneously from the PPU 300 executed, and the PPU 300 provides isolation, Quality of Service (QoS) and independent address space for multiple computing applications. An application may generate instructions (eg, API calls) that cause the driver core to perform one or more tasks for execution by the PPU 300 to create. The driver core issues tasks to one or more streams from the PPU 300 are processed. Each task may include one or more groups of related threads, referred to herein as warp. In one embodiment, a warp 32 related threads that can be executed in parallel. Cooperating threads can refer to a variety of threads, including instructions for executing the task that can share data through shared memory. Threads and collaborative threads are associated with 5A described in more detail.

4A stellt einen GPC 350 der PPU 300 aus 3 gemäß einer Ausführungsform dar. Wie in 4A dargestellt ist, beinhaltet jedes GPC 350 eine Reihe von Hardwareeinheiten zum Verarbeiten von Tasks. In einer Ausführungsform beinhaltet jedes GPC 350 einen Pipeline-Manager 410, eine Pre-Raster Operations Unit (PROP) 415, eine Raster-Engine 425, eine Work Distribution Crossbar (WDX) 480, eine Memory Management Unit (MMU) 490 und einen oder mehrere Data Processing Cluster (DPCs) 420. Es ist zu beachten, dass das GPC 350 von 4A anstelle oder zusätzlich zu den in 4A dargestellten Einheiten weitere Hardwareeinheiten beinhalten kann. 4A puts a GPC 350 the PPU 300 out 3 according to one embodiment. As in 4A is shown, includes every GPC 350 a set of hardware units for processing tasks. In one embodiment, each GPC includes 350 a pipeline manager 410 , a Pre-Raster Operations Unit (PROP) 415 , a raster engine 425 , a Work Distribution Crossbar (WDX) 480 , a Memory Management Unit (MMU) 490 and one or more Data Processing Clusters (DPCs) 420 , It should be noted that the GPC 350 from 4A instead of or in addition to the in 4A units shown may include other hardware units.

In einer Ausführungsform wird der Betrieb des GPC 350 durch den Pipeline-Manager 410 gesteuert. Der Pipeline-Manager 410 verwaltet die Konfiguration eines oder mehrerer DPCs 420 für die Bearbeitung von Tasks, die dem GPC 350 zugeordnet sind. In einer Ausführungsform kann der Pipeline-Manager 410 mindestens einen der einen oder mehreren DPCs 420 konfigurieren, um mindestens einen Teil einer Grafik-Rendering-Pipeline zu implementieren. So kann beispielsweise ein DPC 420 konfiguriert werden, um ein Vertex-Shader-Programm auf dem programmierbaren Streaming-Multiprozessor (SM) 440 auszuführen. Der Pipeline-Manager 410 kann auch konfiguriert werden, um von der Arbeitsverteilungseinheit 325 empfangene Pakete an die entsprechenden logischen Einheiten innerhalb des GPC 350 weiterzuleiten. So können beispielsweise einige Pakete an Hardwareeinheiten mit fester Funktion im PROP 415 und/oder in der Raster-Engine 425 weitergeleitet werden, während andere Pakete an die DPCs 420 zur Verarbeitung durch die Primitiv-Engine 435 oder die SM 440 weitergeleitet werden können. In einer Ausführungsform kann der Pipeline-Manager 410 mindestens einen der einen oder mehreren DPCs 420 konfigurieren, um ein Modell eines neuronalen Netzes und/oder eine Rechen-Pipeline zu implementieren. In one embodiment, the operation of the GPC 350 through the pipeline manager 410 controlled. The pipeline manager 410 Manages the configuration of one or more DPCs 420 for editing tasks related to the GPC 350 assigned. In one embodiment, the pipeline manager 410 at least one of the one or more DPCs 420 configure to implement at least part of a graphics rendering pipeline. For example, a DPC 420 configured to use a vertex shader program on the programmable streaming multiprocessor (SM) 440 perform. The pipeline manager 410 can also be configured to work from the work distribution unit 325 received packets to the corresponding logical units within the GPC 350 forward. For example, some packages can be attached to hard-function hardware units in PROP 415 and / or in the raster engine 425 be forwarded while other packets to the DPCs 420 for processing by the primitive engine 435 or the SM 440 can be forwarded. In one embodiment, the pipeline manager 410 at least one of the one or more DPCs 420 to implement a model of a neural network and / or a computational pipeline.

Die PROP-Einheit 415 ist konfiguriert, um die von der Raster-Engine 425 und den DPCs 420 erzeugten Daten an eine Raster Operations (ROP)-Einheit weiterzuleiten, die in Verbindung mit 4B näher beschrieben wird. Die PROP-Einheit 415 kann auch konfiguriert werden, um Optimierungen für die Farbmischung durchzuführen, Pixeldaten zu organisieren, Adressenübersetzungen durchzuführen und dergleichen.The PROP unit 415 is configured to by the raster engine 425 and the DPCs 420 generated data to a Raster Operations (ROP) unit to be used in conjunction with 4B will be described in more detail. The PROP unit 415 can also be configured to perform optimizations for color mixing, organize pixel data, perform address translations, and the like.

Die Raster-Engine 425 beinhaltet eine Reihe von Hardwareeinheiten mit fester Funktion, die für die Durchführung verschiedener Rastervorgänge konfiguriert sind. In einer Ausführungsform beinhaltet die Raster-Egine 425 eine Einrichtungs-Engine, eine Grobraster-Engine, eine Culling-Engine, eine Clipping-Maschine, eine Feinraster-Engine und eine Kachel-Vereinigungs-Engine. Die Einrichtungs-Engine empfängt transformierte Vertices und erzeugt Ebenengleichungen, die dem durch die Vertices definierten geometrischen Primitiv zugeordnet sind. Die Ebenengleichungen werden an die Grobraster-Engine übertragen, um Abdeckungsinformationen (z.B. eine x,y-Abdeckungsmaske für eine Kachel) für das Primitiv zu erzeugen. Die Leistung der Grobraster-Engine wird an die Culling-Engine übertragen, wo Fragmente, die dem Primitiv zugeordnet sind und einen z-Test nicht bestehen, aussortiert werden, und an eine Clipping-Engine übertragen werden, wo Fragmente, die außerhalb eines Sichtvolumens liegen, geschnitten werden. Die Fragmente, die das Clipping und Culling überleben, können an die Feinraster-Engine übergeben werden, um Attribute für die Pixelfragmente basierend auf den von der Einrichtungs-Engine erzeugten Ebenengleichungen zu erzeugen. Die Ausgabe der Raster-Engine 425 umfasst Fragmente, die beispielsweise von einem in einem DPC 420 implementierten Fragment-Shader zu verarbeiten sind.The raster engine 425 includes a set of fixed-function hardware units configured to perform various raster operations. In one embodiment, the raster egg includes 425 a setup engine, a Grobraster engine, a culling engine, a clipping engine, a fine grid engine, and a tile merge engine. The device engine receives transformed vertices and generates plane equations associated with the geometric primitive defined by the vertices. The plane equations are transmitted to the Grobraster engine to provide coverage information (eg x, y Mask for a tile) for the primitive. The power of the Grobraster engine is passed to the culling engine, where fragments that are assigned to the primitive and fail a z-test are sorted out and transferred to a clipping engine, where fragments are out of sight , get cut. The fragments that survive clipping and culling may be passed to the fine grid engine to generate attributes for the pixel fragments based on the plane equations generated by the device engine. The output of the raster engine 425 includes fragments, for example, of one in a DPC 420 implemented fragment shaders are to be processed.

Jedes DPC 420, das im GPC 350 enthalten ist, beinhaltet einen M-Pipe Controller (MPC) 430, eine Primitiv-Engine 435 und einen oder mehrere SMs 440. Der MPC 430 steuert den Betrieb des DPC 420 und leitet die vom Pipeline-Manager 410 empfangenen Pakete an die entsprechenden Einheiten des DPC 420 weiter. So können beispielsweise Pakete, die einem Vertex zugeordnet sind, an die Primitiv-Engine 435 weitergeleitet werden, die konfiguriert ist, um die dem Vertex zugeordneten Vertexattribute aus dem Speicher 304 zu holen. Im Gegensatz dazu können Pakete, die einem Shader-Programm zugeordnet sind, an den SM 440 übertragen werden.Every DPC 420 that in GPC 350 is included, includes one M Pipe Controller (MPC) 430 , a primitive engine 435 and one or more SMs 440 , The MPC 430 controls the operation of the DPC 420 and directs those from the pipeline manager 410 received packets to the appropriate units of the DPC 420 further. For example, packets associated with a vertex may be sent to the primitive engine 435 which is configured to retrieve the vertex attributes associated with the vertex from memory 304 pick up. In contrast, packets associated with a shader program may be sent to the SM 440 be transmitted.

Der SM 440 umfasst einen programmierbaren Streaming-Prozessor, der konfiguriert ist, um Tasks zu verarbeiten, die durch eine Reihe von Threads repräsentiert werden. Jeder SM 440 ist multi-threaded und konfiguriert, um eine Vielzahl von Threads (z.B. 32 Threads) aus einer bestimmten Gruppe von Threads gleichzeitig auszuführen. In einer Ausführungsform implementiert der SM 440 eine SIMD-Architektur (Single-Instruction, Multiple-Data), bei der jeder Thread in einer Gruppe von Threads (z.B. ein Warp) konfiguriert ist, um einen anderen Datensatz basierend auf demselben Befehlssatz zu verarbeiten. Alle Threads in der Gruppe der Threads führen die gleichen Anweisungen aus. In einer weiteren Ausführungsform implementiert der SM 440 eine SIMT-Architektur (Single-Instruction, Multiple Thread), bei der jeder Thread in einer Gruppe von Threads konfiguriert ist, um einen anderen Datensatz zu verarbeiten, der auf demselben Befehlssatz basiert, wobei jedoch einzelne Threads in der Gruppe von Threads während der Ausführung divergieren dürfen. In einer Ausführungsform wird für jeden Warp ein Programmzähler, ein Aufrufstapel und ein Ausführungszustand geführt, was die Gleichzeitigkeit zwischen Warps und die serielle Ausführung innerhalb von Warps ermöglicht, wenn Threads innerhalb des Warps divergieren. In einer weiteren Ausführungsform wird für jeden einzelnen Thread ein Programmzähler, ein Aufrufstapel und ein Ausführungszustand geführt, wodurch eine gleichwertige Gleichzeitigkeit zwischen allen Threads, innerhalb und zwischen den Warps ermöglicht wird. Wenn der Ausführungszustand für jeden einzelnen Thread geführt wird, können Threads, die dieselben Anweisungen ausführen, konvergieren und parallel ausgeführt werden, um eine maximale Effizienz zu erreichen. Der SM 440 wird im Folgenden in Verbindung mit 5A näher beschrieben.The SM 440 includes a programmable streaming processor configured to process tasks represented by a series of threads. Every SM 440 is multi-threaded and configured to handle a variety of threads (eg 32 Threads) from a particular group of threads concurrently. In one embodiment, the SM implements 440 a single-instruction (multiple-data) architecture in which each thread in a group of threads (eg, a warp) is configured to process another record based on the same instruction set. All threads in the set of threads execute the same statements. In another embodiment, the SM implements 440 a single-instruction, multiple thread (SIMT) architecture in which each thread in a group of threads is configured to process another record based on the same set of instructions, but individual threads in the set of threads during execution may diverge. In one embodiment, a program counter, a call stack, and an execution state are maintained for each warp, allowing for concurrency between warps and serial execution within warps when threads within the warp diverge. In another embodiment, a program counter, a call stack, and an execution state are maintained for each individual thread, allowing equivalent concurrency between all threads, within and between the warps. When running the execution state for each thread, threads that execute the same instructions can converge and execute in parallel for maximum efficiency. The SM 440 will be in connection with 5A described in more detail.

Die MMU 490 bietet eine Schnittstelle zwischen dem GPC 350 und der Speicherpartitionseinheit 380. Die MMU 490 kann die Übersetzung virtueller Adressen in physikalische Adressen, den Speicherschutz und die Konkurrenzbereinigung von Speicheranforderungen ermöglichen. In einer Ausführungsform stellt die MMU 490 einen oder mehrere Übersetzungspuffer (Translation Lookaside Buffer (TLBs)) zur Verfügung, um die Übersetzung von virtuellen Adressen in physikalische Adressen im Speicher 304 durchzuführen. The MMU 490 provides an interface between the GPC 350 and the storage partition unit 380 , The MMU 490 can enable translation of virtual addresses into physical addresses, memory protection, and competing requests for storage. In one embodiment, the MMU 490 One or more Translation Lookaside Buffers (TLBs) are available to translate virtual addresses into physical addresses in memory 304 perform.

4B stellt eine Speicherpartitionseinheit 380 der PPU 300 von 3 gemäß einer Ausführungsform dar. Wie in 4B dargestellt ist, beinhaltet die Speicherpartitionseinheit 380 eine Raster Operations (ROP)-Einheit 450, einen Level-2 (L2)-Cache 460 und eine Speicherschnittstelle 470. Die Speicherschnittstelle 470 ist mit dem Speicher 304 gekoppelt. Die Speicherschnittstelle 470 kann 32, 64, 128, 1024-Bit-Datenbusse oder dergleichen für die Hochgeschwindigkeits-Datenübertragung implementieren. In einer Ausführungsform beinhaltet die PPU 300 eine Speicherschnittstelle 470 pro Paar von Speicherpartitionseinheiten 380, wobei jedes Paar von Speicherpartitionseinheiten 380 mit einer entsprechenden Speichervorrichtung 304 verbunden ist. So kann die PPU 300 beispielsweise an bis zu Y Speichervorrichtungen 304 angeschlossen werden, wie beispielsweise an Speicherstapel mit hoher Bandbreite oder Grafiken mit doppelter Datenrate, Version 5, synchroner dynamischer Direktzugriffsspeicher oder andere Arten von persistenten Speichern. 4B represents a storage partition unit 380 the PPU 300 from 3 according to one embodiment. As in 4B is shown includes the storage partition unit 380 a raster operations (ROP) unit 450 , a level 2 (L2) cache 460 and a memory interface 470 , The storage interface 470 is with the store 304 coupled. The storage interface 470 can 32 . 64 . 128 , 1024-bit data buses or the like for high speed data transmission. In one embodiment, the PPU includes 300 a memory interface 470 per pair of storage partition units 380 where each pair of storage partition units 380 with a corresponding storage device 304 connected is. So can the PPU 300 for example, up to Y memory devices 304 such as high-bandwidth memory stacks or double-data-rate graphics, version 5 , synchronous dynamic random access memory or other types of persistent storage.

In einer Ausführungsform implementiert die Speicherschnittstelle 470 eine HBM2-Speicherschnittstelle und Y entspricht der Hälfte von U. In einer Ausführungsform befinden sich die HBM2-Speicherstapel auf dem gleichen physikalischen Gehäuse wie die PPU 300, was im Vergleich zu herkömmlichen GDDR5-SDRAM-Systemen zu erheblichen Strom- und Flächeneinsparungen führt. In einer Ausführungsform beinhaltet jeder HBM2-Stapel vier Speicherchips und Y ist gleich 4, wobei der HBM2-Stapel zwei 128-Bit-Kanäle pro Chip für insgesamt 8 Kanäle und eine Datenbusbreite von 1024 Bit beinhaltet.In one embodiment, the memory interface implements 470 an HBM2 memory interface and Y is half of U. In one embodiment, the HBM2 memory stacks reside on the same physical enclosure as the PPU 300 , which results in significant power and space savings compared to traditional GDDR5 SDRAM systems. In one embodiment, each HBM2 stack includes four memory chips and Y is equal to 4, with the HBM2 stack two 128 -Bit-channels per chip for a total of 8 channels and a data bus width of 1024 bits.

In einer Ausführungsform unterstützt der Speicher 304 den Single-Error Correcting Double-Error Detecting (SECDED) Error Correction Code (ECC) zum Schutz der Daten. ECC bietet eine höhere Zuverlässigkeit für Rechenanwendungen, die empfindlich auf Datenverluste reagieren. Zuverlässigkeit ist besonders wichtig in großen Cluster-Computerumgebungen, in denen PPUs 300 sehr große Datensätze verarbeiten und/oder Anwendungen über einen längeren Zeitraum betreiben.In one embodiment, the memory supports 304 Single-Error Correcting Double-Error Detecting (SECDED) Error Correction Code (ECC) to protect data. ECC provides greater reliability for computing applications that are sensitive to data loss. Reliability is especially important in large clustered computer environments where PPUs are used 300 process very large data sets and / or operate applications over a longer period of time.

In einer Ausführungsform implementiert die PPU 300 eine mehrstufige Speicherhierarchie. In einer Ausführungsform unterstützt die Speicherpartitionseinheit 380 einen vereinheitlichten Speicher, um einen einzigen vereinheitlichten virtuellen Adressraum für CPU- und PPU 300-Speicher bereitzustellen, der den Datenaustausch zwischen virtuellen Speichersystemen ermöglicht. In einer Ausführungsform wird die Häufigkeit der Zugriffe einer PPU 300 auf Speicher auf anderen Prozessoren verfolgt, um sicherzustellen, dass Speicherseiten in den physikalischen Speicher der PPU 300 verschoben werden, wenn diese häufiger auf die Seiten zugreift. In einer Ausführungsform unterstützt der NVLink 310 Adressübersetzungsdienste, die es der PPU 300 ermöglichen, direkt auf die Seitentabellen einer CPU zuzugreifen, und den vollen Zugriff auf den CPU-Speicher durch die PPU 300 ermöglichen.In one embodiment, the PPU implements 300 a multilevel storage hierarchy. In one embodiment, the storage partition unit supports 380 a unified memory to provide a single unified virtual address space for CPU and PPU 300 memory that enables data exchange between virtual storage systems. In one embodiment, the frequency of accesses to a PPU 300 Traced memory on other processors to ensure that memory pages are in the physical memory of the PPU 300 be moved if it accesses the pages more often. In one embodiment, the NVLink supports 310 Address translation services that the PPU 300 allow access directly to the page tables of a CPU, and full access to the CPU memory through the PPU 300 enable.

In einer Ausführungsform übertragen Kopiermaschinen Daten zwischen mehreren PPUs 300 oder zwischen PPUs 300 und CPUs. Die Kopiermaschinen können Seitenfehler für Adressen erzeugen, die nicht in den Seitentabellen abgebildet sind. Die Speicherpartitionseinheit 380 kann dann die Seitenfehler beheben und die Adressen in die Seitentabelle eintragen, woraufhin die Kopiermaschine die Übertragung durchführen kann. In einem herkömmlichen System ist der Speicher für Mehrfachkopiermaschinenoperationen zwischen mehreren Prozessoren fest zugeordnet (z.B. nicht auslagerbar), was den verfügbaren Speicher erheblich reduziert. Mit Hardware-Seitenfehlern können Adressen an die Kopiermaschinen weitergegeben werden, ohne sich Sorgen zu machen, ob die Speicherseiten resident sind und der Kopiervorgang transparent ist.In one embodiment, copy machines transmit data between multiple PPUs 300 or between PPUs 300 and CPUs. The copy machines can generate page faults for addresses that are not shown in the page tables. The storage partition unit 380 can then correct the page faults and enter the addresses in the page table, whereupon the copying machine can perform the transfer. In a conventional system, the memory for multi-copy engine operations is dedicated (eg non-swappable) between multiple processors, which significantly reduces available memory. With hardware page faults, addresses can be passed to the copy machines without worrying about whether the pages are resident and the copy process is transparent.

Daten aus dem Speicher 304 oder einem anderen Systemspeicher können von der Speicherpartitionseinheit 380 abgerufen und im L2-Cache 460 gespeichert werden, der sich auf dem Chip befindet und von den verschiedenen GPCs 350 gemeinsam benutzt wird. Wie dargestellt ist, beinhaltet jede Speicherpartitionseinheit 380 einen Abschnitt des L2-Cache 460, der einer entsprechenden Speichervorrichtung 304 zugeordnet ist. Untergeordnete Caches können dann in verschiedenen Einheiten innerhalb der GPCs 350 implementiert werden. So kann beispielsweise jeder der SMs 440 einen Level One (L1)-Cache implementieren. Der L1-Cache ist ein privater Speicher, der einem bestimmten SM 440 zugeordnet ist. Daten aus dem L2-Cache 460 können abgerufen und in jedem der LI-Caches zur Verarbeitung in den Funktionseinheiten des SMs 440 gespeichert werden. Der L2-Cache 460 ist mit der Speicherschnittstelle 470 und der XBar 370 gekoppelt.Data from the memory 304 or any other system memory may be from the storage partition unit 380 retrieved and in L2 cache 460 stored on the chip and from the various GPCs 350 is shared. As shown, each storage partition unit includes 380 a section of the L2 cache 460 that of a corresponding storage device 304 assigned. Subordinate caches can then be in different units within the GPCs 350 be implemented. For example, each of the SMs 440 a level one ( L1 ) Cache. Of the L1 Cache is a private store that belongs to a specific SM 440 assigned. Data from the L2 cache 460 can be retrieved and in each of the LI caches for processing in the functional units of the SMs 440 get saved. Of the L2 -cache 460 is with the memory interface 470 and the XBar 370 coupled.

Die ROP-Einheit 450 führt grafische Rasteroperationen im Zusammenhang mit Pixelfarben durch, wie beispielsweise Farbkompression, Pixelblending und dergleichen. Die ROP-Einheit 450 führt auch Tiefenprüfungen in Verbindung mit der Raster-Engine 425 durch, die eine Tiefe für eine Sample-Position empfängt, die einem Pixelfragment aus der Culling-Engine der Raster-Engine 425 zugeordnet ist. Die Tiefe wird gegen eine entsprechende Tiefe in einem Tiefenpuffer für eine dem Fragment zugeordnete Sample-Position getestet. Wenn das Fragment den Tiefentest für die Sample-Position besteht, aktualisiert die ROP-Einheit 450 den Tiefenpuffer und sendet ein Ergebnis des Tiefentests an die Raster-Engine 425. Es wird darauf hingewiesen, dass die Anzahl der Speicherpartitionseinheiten 380 von der Anzahl der GPCs 350 abweichen kann und daher jede ROP-Einheit 450 mit jedem der GPCs 350 gekoppelt werden kann. Die ROP-Einheit 450 verfolgt die von den verschiedenen GPCs 350 empfangenen Pakete und bestimmt, zu welchem GPC 350 ein von der ROP-Einheit 450 erzeugtes Ergebnis durch die Xbar 370 geleitet wird. Obwohl die ROP-Einheit 450 in 4B innerhalb der Speicherpartitionseinheit 380 enthalten ist, kann sich die ROP-Einheit 450 in einer anderen Ausführungsform außerhalb der Speicherpartitionseinheit 380 befinden. So kann sich beispielsweise die ROP-Einheit 450 im GPC 350 oder einer anderen Einheit befinden. The ROP unit 450 performs graphic raster operations related to pixel colors, such as color compression, pixel blending, and the like. The ROP unit 450 also performs depth checks in conjunction with the raster engine 425 which receives a depth for a sample position, which is a pixel fragment from the raster engine's culling engine 425 assigned. The depth is tested against a corresponding depth in a depth buffer for a sample position associated with the fragment. If the fragment passes the sample position depth test, the ROP unit updates 450 the depth buffer and sends a result of the depth test to the raster engine 425 , It should be noted that the number of storage partition units 380 from the number of GPCs 350 can deviate and therefore every ROP unit 450 with each of the GPCs 350 can be coupled. The ROP unit 450 keeps track of those from the various GPCs 350 received packets and determines to which GPC 350 one from the ROP unit 450 Result generated by the Xbar 370 is directed. Although the ROP unit 450 in 4B within the storage partition unit 380 included is the ROP unit 450 in another embodiment, outside the storage partition unit 380 are located. For example, this may be the ROP unit 450 in the GPC 350 or another unit.

5A stellt den Streaming-Multiprozessor 440 von 4A gemäß einer Ausführungsform dar. Wie in 5A dargestellt ist, beinhaltet der SM 440 einen Befehls-Cache 505, eine oder mehrere Scheduler-Einheiten 510, eine Registerdatei 520, einen oder mehrere Rechenkerne 550, eine oder mehrere Spezialfunktionseinheiten (SFUs) 552, eine oder mehrere Lade-/Speichereinheiten (LSUs) 554, ein Verbindungsnetzwerk 580, einen gemeinsamen Speicher / L1-Cache 570. 5A represents the streaming multiprocessor 440 from 4A according to one embodiment. As in 5A is shown, the SM includes 440 an instruction cache 505 , one or more scheduler units 510 , a register file 520 , one or more cores 550 , one or more special function units (SFUs) 552 , one or more load / store units (LSUs) 554 , a connection network 580 , a shared memory / L1 cache 570 ,

Wie vorstehend beschrieben ist, plant die Arbeitsverteilungseinheit 325 Tasks zur Ausführung auf den GPCs 350 der PPU 300. Die Tasks sind einem bestimmten DPC 420 innerhalb eines GPC 350 zugeordnet und, wenn die Tasks einem Shaderprogramm zugeordnet ist, kann die Task einem SM 440 zugeordnet werden. Die Scheduler-Einheit 510 empfängt die Tasks von der Arbeitsverteilungseinheit 325 und verwaltet die Befehlsplanung für einen oder mehrere der dem SM 440 zugeordneten Threadblöcke. Die Scheduler-Einheit 510 plant Thread-Blöcke zur Ausführung als Warp paralleler Threads, wobei jedem Thread-Block mindestens ein Warp zugeordnet ist. In einer Ausführungsform führt jeder Warp 32 Threads aus. Die Scheduler-Einheit 510 kann eine Vielzahl von verschiedenen Threadblöcken verwalten, indem sie die Warps den verschiedenen Threadblöcken zuordnet und dann während jedes Taktzyklus Anweisungen von der Vielzahl von verschiedenen kooperativen Gruppen an die verschiedenen Funktionseinheiten (z.B. Kerne 550, SFUs 552 und LSUs 554) sendet.As described above, the work distribution unit plans 325 Tasks to run on the GPCs 350 the PPU 300 , The tasks are a specific DPC 420 within a GPC 350 and, if the task is assigned to a shader program, the task can be assigned to an SM 440 be assigned. The scheduler unit 510 receives the tasks from the work distribution unit 325 and manages command scheduling for one or more of the SMs 440 associated thread blocks. The scheduler unit 510 schedules thread blocks to run as parallel thread warps, with each thread block associated with at least one warp. In one embodiment, each warp performs 32 Threads off. The scheduler unit 510 It may manage a plurality of different thread blocks by mapping the warps to the various thread blocks and then, during each clock cycle, directing instructions from the plurality of different cooperative groups to the various functional units (eg cores 550 , SFUs 552 and LSUs 554 ) sends.

Kooperative Gruppen (Cooperative Groups) ist ein Programmiermodell zum Organisieren von Gruppen von kommunizierenden Threads, das es Entwicklern ermöglicht, die Granularität auszudrücken, mit der Threads kommunizieren, was den Ausdruck von reichhaltigeren, effizienteren parallelen Zerlegungen ermöglicht. Kooperative Start-APIs unterstützen die Synchronisation zwischen Thread-Blöcken zur Ausführung paralleler Algorithmen. Herkömmliche Programmiermodelle bieten ein einziges, einfaches Konstrukt zur Synchronisation kooperierender Threads: eine Barriere über alle Threads eines Thread-Blocks (z.B. die Funktion syncthreads()). Programmierer möchten jedoch oft Gruppen von Threads definieren, die kleiner als die Granularität von Threadblöcken sind, und innerhalb der definierten Gruppen synchronisieren, um mehr Leistung, Designflexibilität und Softwarewiederverwendung in Form von gemeinsamen gruppenweiten Funktionsschnittstellen zu ermöglichen.Cooperative Groups is a programming model for organizing groups of communicating threads that enables developers to express the granularity with which threads communicate, enabling the expression of richer, more efficient parallel decompositions. Cooperative launch APIs support synchronization between thread blocks to execute parallel algorithms. Traditional programming models provide a single, simple construct to synchronize cooperating threads: a barrier across all thread block threads (for example, the syncthreads () function). However, programmers often want to define groups of threads that are smaller than the granularity of thread blocks and synchronize within the defined groups to allow for more performance, design flexibility, and software reuse in the form of shared, group-wide functional interfaces.

Kooperative Gruppen ermöglichen es Programmierern, Gruppen von Threads explizit in Form von Subblock- (z.B. so klein wie ein einzelner Thread) und Multiblock-Granularitäten zu definieren und gemeinsame Operationen wie die Synchronisation der Threads in einer kooperativen Gruppe durchzuführen. Das Programmiermodell unterstützt eine saubere Zusammensetzung über Softwaregrenzen hinweg, so dass Bibliotheken und Utility-Funktionen sicher in ihrem lokalen Kontext synchronisieren können, ohne Annahmen über die Konvergenz treffen zu müssen. Kooperative Gruppen von Primitives ermöglichen neue Muster kooperativer Parallelität, einschließlich Produzenten-Verbraucher-Parallelität, opportunistischer Parallelität und globaler Synchronisation über ein ganzes Netz von Threadblöcken hinweg.Cooperative groups allow programmers to explicitly define groups of threads in the form of subblock (e.g., as small as a single thread) and multiblock granularities and perform common operations such as thread synchronization in a cooperative set. The programming model supports clean composition across software boundaries so that libraries and utility functions can securely synchronize in their local context without having to make assumptions about convergence. Cooperative groups of primitives enable new patterns of cooperative concurrency, including producer-consumer parallelism, opportunistic parallelism, and global synchronization across an entire network of thread blocks.

Eine Dispatcher-Einheit 515 ist konfiguriert, um Anweisungen an eine oder mehrere der Funktionseinheiten zu senden. In der Ausführungsform beinhaltet die Scheduler-Einheit 510 zwei Dispatcher-Einheiten 515, die es ermöglichen, während jedes Taktzyklus zwei verschiedene Anweisungen von demselben Warp zu senden. In alternativen Ausführungsformen kann jede Scheduler-Einheit 510 eine einzelne Dispatcher-Einheit 515 oder zusätzliche Dispatcher-Einheiten 515 beinhalten.A dispatcher unit 515 is configured to send instructions to one or more of the functional units. In the embodiment, the scheduler unit includes 510 two dispatcher units 515 which allow to send two different instructions from the same warp during each clock cycle. In alternative embodiments, each scheduler unit 510 a single dispatcher unit 515 or additional dispatcher units 515 include.

Jeder SM 440 enthält eine Registerdatei 520, die einen Satz von Registern für die Funktionseinheiten des SM 440 bereitstellt. In einer Ausführungsform ist die Registerdatei 520 auf jede der Funktionseinheiten aufgeteilt, so dass jeder Funktionseinheit ein bestimmter Abschnitt der Registerdatei 520 zugeordnet ist. In einer weiteren Ausführungsform wird die Registerdatei 520 auf die verschiedenen Warps aufgeteilt, die von dem SM 440 ausgeführt werden. Die Registerdatei 520 bietet Zwischenspeicher für Operanden, die mit den Datenpfaden der Funktionseinheiten verbunden sind. Every SM 440 contains a register file 520 containing a set of registers for the functional units of the SM 440 provides. In one embodiment, the register file is 520 divided into each of the functional units, so that each functional unit a specific section of the register file 520 assigned. In another embodiment, the register file becomes 520 divided into the different warps, that of the SM 440 be executed. The register file 520 provides buffers for operands associated with the data paths of the functional units.

Jeder SM 440 umfasst L Verarbeitungskerne 550. In einer Ausführungsform beinhaltet der SM 440 eine große Anzahl (z.B. 128, etc.) von verschiedenen Verarbeitungskernen 550. Jeder Kern 550 kann eine mit vollständiger Pipeline ausgestattete, mit einfacher Präzision, mit doppelter Präzision und/oder mit gemischter Präzision arbeitende Verarbeitungseinheit beinhalten, die eine Logikeinheit für Gleitkommaarithmetik und eine Logikeinheit für ganzzahlige Arithmetik beinhaltet. In einer Ausführungsform implementieren die Logikeinheiten für Gleitkommaarithmetik den Standard IEEE 754-2008 für Gleitkommaarithmetik. In einer Ausführungsform beinhalten die Kerne 550 64 Single-Precision (32-Bit) Gleitkomma-Kerne, 64 Ganzzahlkerne, 32 Double-Precision (64-Bit) Gleitkomma-Kerne und 8 Tensorkerne.Every SM 440 includes L processing cores 550 , In one embodiment, the SM includes 440 a large number (eg 128 , etc.) of different processing cores 550 , Every core 550 may include a full pipeline, single precision, double precision and / or mixed precision processing unit including a floating point arithmetic logic unit and an integer arithmetic logic unit. In one embodiment, the floating-point arithmetic logic units implement the IEEE standard 754 - 2008 for floating point arithmetic. In one embodiment, the cores include 550 64 Single-precision (32-bit) floating-point cores, 64 Integer cores, 32 Double-Precision (64-bit) floating-point cores and 8 tensor cores.

Tensorkerne sind konfiguriert, um Matrixoperationen durchzuführen, und in einer Ausführungsform sind ein oder mehrere Tensorkerne in den Kernen 550 enthalten. Insbesondere sind die Tensorkerne konfiguriert, um Matrixarithmetik für Tiefenlernen durchzuführen, wie z.B. Faltungsoperationen für das Training und die Folgerung bei neuronalen Netzen. In einer Ausführungsform arbeitet jeder Tensorkern auf einer 4x4-Matrix und führt eine Matrixmultiplikation- und Summations-Operation D=AB+C durch, wobei A, B, C und D 4x4-Matrizen sind.Tensor cores are configured to perform matrix operations, and in one embodiment, one or more tensor cores are in the cores 550 contain. In particular, the tensor cores are configured to perform matrix arithmetic for depth learning, such as convolution operations for training and inference in neural networks. In one embodiment, each tensor core operates on a 4x4 matrix and performs a matrix multiplication and summation operation D = AB + C, where A . B . C and D 4x4 matrices are.

In einer Ausführungsform sind die Matrix-Multiplikatoreingänge A und B 16-Bit-Fließkomma-Matrizen, während die Summationsmatrizen C und D 16-Bit-Fließkomma- oder 32-Bit-Fließkomma-Matrizen sein können. Tensorkerne arbeiten mit 16-Bit Gleitkomma-Eingangsdaten mit 32-Bit Gleitkommaakkumulation. Die 16-Bit-Fließkomma-Multiplikation erfordert 64 Operationen und führt zu einem hochpräzisen Produkt, das dann unter Verwendung der 32-Bit-Fließkommaaddition mit den anderen Zwischenprodukten für eine 4x4x4x4-Matrix-Multiplikation akkumuliert wird. In der Praxis werden Tensorkerne verwendet, um viel größere zweidimensionale oder höher dimensionale Matrixoperationen durchzuführen, die sich aus diesen kleineren Elementen zusammensetzen. Eine API, wie die CUDA 9 C++ API, stellt spezielle Matrixlade-, Matrixmultiplikations- und Summations- sowie Matrixspeicher-Operationen zur Verfügung, um Tensor-Kerne aus einem CUDA-C++-Programm effizient zu nutzen. Auf der CUDA-Ebene geht das Warp-Level-Interface von Matrizen der Größe 16x16 aus, die alle 32 Threads des Warps umfassen.In one embodiment, the matrix multiplier inputs are A and B 16-bit floating-point matrices, while the summation matrices C and D 16-bit floating-point or 32-bit floating-point arrays. Tensor cores use 16-bit floating-point input data with 32-bit floating-point accumulation. The 16-bit floating-point multiplication requires 64 operations and results in a high-precision product which is then accumulated using the 32-bit floating-point addition with the other intermediates for 4x4x4x4 matrix multiplication. In practice, tensor cores are used to perform much larger two-dimensional or higher-dimensional matrix operations composed of these smaller elements. An API, such as the CUDA 9 C ++ API, provides specialized matrix loading, matrix multiplication, summation, and matrix memory operations to efficiently use tensor kernels from a CUDA C ++ program. At the CUDA level, the warp-level interface is based on 16x16 matrices, which include all 32 threads of the warp.

Jeder SM 440 umfasst auch M SFUs 552, die spezielle Funktionen ausführen (z.B. Attributbewertung, reziproke Quadratwurzel und dergleichen).In einer Ausführungsform können die SFUs 552 eine Baumdurchlaufeinheit beinhalten, die konfiguriert ist, um eine hierarchische Baumdatenstruktur zu durchlaufen. In einer Ausführungsform können die SFUs 552 eine Textureinheit beinhalten, die konfiguriert ist, um Texturkartenfilteroperationen durchzuführen. In einer Ausführungsform sind die Textureinheiten konfiguriert, um Texturkarten (z.B. ein 2D-Array von Texturen) aus dem Speicher 304 zu laden und die Texturkarten abzutasten, um abgetastete Texturwerte für die Verwendung in Shader-Programmen zu erzeugen, die vom SM 440 ausgeführt werden. In einer Ausführungsform werden die Texturkarten im gemeinsamen Speicher/L1-Cache 470 gespeichert. Die Textureinheiten implementieren Texturoperationen, wie z.B. Filteroperationen, mittels Mip-Maps (z.B. Texturkarten mit unterschiedlichem Detaillierungsgrad). In einer Ausführungsform beinhaltet jeder SM 340 zwei Textureinheiten.Every SM 440 also includes M SFUs 552 performing special functions (eg attribute evaluation, reciprocal square root and the like). In one embodiment, the SFUs 552 include a tree traversal unit configured to traverse a hierarchical tree data structure. In one embodiment, the SFUs 552 include a texture unit configured to perform texture map filtering operations. In one embodiment, the texture units are configured to render texture maps (eg, a 2D array of textures) from memory 304 to load and scan the texture maps to produce sampled texture values for use in shader programs written by the SM 440 be executed. In one embodiment, the texture maps are in shared memory / L1 cache 470 saved. The texture units implement texture operations, such as filter operations, using mip maps (eg texture maps with varying degrees of detail). In one embodiment, each SM includes 340 two texture units.

Jeder SM 440 umfasst auch N LSUs 554, die Lade- und Speicheroperationen zwischen dem gemeinsamen Speicher / L1-Cache 570 und der Registerdatei 520 implementieren. Jeder SM 440 beinhaltet ein Verbindungsnetzwerk 580, das jede der Funktionseinheiten mit der Registerdatei 520 und die LSU 554 mit der Registerdatei 520, gemeinsamen Speicher / L1 Cache 570 verbindet. In einer Ausführungsform ist das Verbindungsnetzwerk 580 ein Koppelfeld, das konfiguriert werden kann, um eine der Funktionseinheiten mit einem der Register in der Registerdatei 520 zu verbinden und die LSUs 554 mit der Registerdatei und den Speicherplätzen im gemeinsamen Speicher / L1-Cache 570 zu verbinden.Every SM 440 also includes N LSUs 554 , the load and store operations between the shared memory / L1 cache 570 and the register file 520 to implement. Every SM 440 includes a connection network 580 containing each of the functional units with the register file 520 and the LSU 554 with the register file 520 , shared memory / L1 cache 570 combines. In one embodiment, the interconnect network is 580 a switch fabric that can be configured to associate one of the functional units with one of the registers in the register file 520 to connect and the LSUs 554 with the register file and the shared memory / L1 cache locations 570 connect to.

Der gemeinsame Speicher / L1 Cache 570 ist ein Feld von On-Chip-Speichern, das die Datenspeicherung und Kommunikation zwischen dem SM 440 und der Primitiv-Engine 435 sowie zwischen den Threads im SM 440 ermöglicht. In einer Ausführungsform umfasst der gemeinsame Speicher / L1-Cache 570 128 KB Speicherkapazität und befindet sich auf dem Pfad vom SM 440 zur Speicherpartitionseinheit 380. Der gemeinsame Speicher / L1-Cache 570 kann zum Cache-Lesen und -Schreiben verwendet werden. Einer oder mehrere aus dem gemeinsamen Speicher / L1-Cache 570, L2-Cache 460 und Speicher 304 sind Backup-Speicher.The shared memory / L1 cache 570 is a field of on-chip storage that supports data storage and communication between the SM 440 and the primitive engine 435 as well as between the threads in the SM 440 allows. In one embodiment, the shared memory includes / L1 cache 570 128 KB storage capacity and is located on the path from the SM 440 to the storage partition unit 380 , The common Memory / L1 cache 570 can be used for cache reading and writing. One or more of the shared memory / L1 cache 570 , L2 cache 460 and memory 304 are backup storage.

Die Kombination von Daten-Cache und gemeinsamer Speicher-Funktionalität in einem einzigen Speicherblock bietet die beste Gesamtleistung für beide Arten von Speicherzugriffen. Die Kapazität ist als Cache für Programme nutzbar, die keinen gemeinsamen Speicher verwenden. Wenn beispielsweise der gemeinsame Speicher so konfiguriert ist, dass er die Hälfte der Kapazität nutzt, können Textur- und Lade-/Speicher-Operationen die verbleibende Kapazität nutzen. Die Integration in den gemeinsamen Speicher / L1-Cache 570 ermöglicht es dem gemeinsamen Speicher / L1-Cache 570, als Hochdurchsatzleitung für das Streaming von Daten zu fungieren und gleichzeitig einen Zugriff mit großer Bandbreite und geringer Latenz auf häufig wiederverwendeten Daten zu ermöglichen.The combination of data cache and shared memory functionality in a single block of memory provides the best overall performance for both types of memory accesses. The capacity can be used as a cache for programs that do not use shared memory. For example, if the shared memory is configured to use half the capacity, texture and load / store operations can use the remaining capacity. The integration into the shared memory / L1 cache 570 allows the shared memory / L1 cache 570 to act as a high-throughput streaming line for data while providing high-bandwidth, low-latency access to frequently reused data.

Bei der Konfiguration für allgemeine parallele Berechnungen kann eine einfachere Konfiguration im Vergleich zur Grafikverarbeitung verwendet werden. Insbesondere werden die in 3 dargestellten Grafikverarbeitungseinheiten mit fester Funktion umgangen, wodurch ein wesentlich einfacheres Programmiermodell entsteht. In der universellen Konfiguration der parallelen Berechnung weist die Arbeitsverteilungseinheit 325 Threadblöcke direkt den DPCs 420 zu und verteilt sie. Die Threads in einem Block führen das gleiche Programm aus, wobei eine eindeutige Thread-ID in der Berechnung verwendet wird, um sicherzustellen, dass jeder Thread eindeutige Ergebnisse erzeugt, wobei der SM 440 verwendet wird, um das Programm auszuführen und Berechnungen durchzuführen, der gemeinsame Speicher / L1-Cache 570, um zwischen Threads zu kommunizieren, und die LSU 554, um den globalen Speicher über den gemeinsamen Speicher / L1-Cache 570 und die Speicherpartitionseinheit 380 zu lesen und zu schreiben. Wenn der SM 440 für die allgemeine parallele Berechnung konfiguriert ist, kann er auch Befehle schreiben, mit denen die Scheduler-Einheit 320 neue Arbeiten an den DPCs 420 starten kann.In the general parallel configuration configuration, a simpler configuration compared to graphics processing can be used. In particular, the in 3 bypassed graphics processing units with a fixed function, creating a much simpler programming model. In the universal configuration of the parallel calculation, the work distribution unit 325 Thread blocks directly to the DPCs 420 to and distribute them. The threads in a block execute the same program, using a unique thread ID in the calculation to ensure that each thread produces unique results, with the SM 440 is used to run the program and perform calculations, the shared memory / L1 cache 570 to communicate between threads and the LSU 554 to the global memory through the shared memory / L1 cache 570 and the storage partition unit 380 to read and write. If the SM 440 For general parallel computation, it can also write commands to the scheduler unit 320 new work on the DPCs 420 can start.

Die PPU 300 kann in einem Desktop-Computer, einem Laptop-Computer, einem Tablet-Computer, Servern, Supercomputern, einem Smartphone (z.B. einem drahtlosen, tragbaren Gerät), einem Personal Digital Assistant (PDA), einer Digitalkamera, einem Fahrzeug, einem am Kopf montierten Display, einem tragbaren elektronischen Gerät und dergleichen enthalten sein. In einer Ausführungsform ist die PPU 300 auf einem einzelnen Halbleitersubstrat ausgeführt. In einer weiteren Ausführungsform ist die PPU 300 zusammen mit einer oder mehreren anderen Vorrichtungen, wie zusätzlichen PPUs 300, dem Speicher 204, einer CPU mit reduziertem Befehlssatz (RISC), einer Speicherverwaltungseinheit (MMU), einem Digital-Analog-Wandler (DAC) und dergleichen, in einem System auf einem Chip (SoC) enthalten.The PPU 300 can be used in a desktop computer, a laptop computer, a tablet computer, servers, supercomputers, a smartphone (such as a wireless, portable device), a personal digital assistant (PDA), a digital camera, a vehicle, a head-mounted Display, a portable electronic device and the like may be included. In one embodiment, the PPU 300 executed on a single semiconductor substrate. In another embodiment, the PPU 300 together with one or more other devices, such as additional PPUs 300 the store 204 , a reduced instruction set CPU (RISC), a memory management unit (MMU), a digital-to-analog converter (DAC) and the like, in a system on a chip (SoC).

In einer Ausführungsform kann die PPU 300 auf einer Grafikkarte enthalten sein, die eine oder mehrere Speichervorrichtungen 304 beinhaltet. Die Grafikkarte kann so konfiguriert werden, dass sie mit einem PCIe-Steckplatz auf einem Motherboard eines Desktop-Computers verbunden ist. In noch einer weiteren Ausführungsform kann die PPU 300 eine integrierte Grafikverarbeitungseinheit (iGPU) oder ein paralleler Prozessor sein, der im Chipsatz des Motherboards enthalten ist.In one embodiment, the PPU 300 to be included on a video card containing one or more storage devices 304 includes. The graphics card can be configured to connect to a PCIe slot on a motherboard of a desktop computer. In still another embodiment, the PPU 300 an integrated graphics processing unit (iGPU) or a parallel processor included in the chipset of the motherboard.

Beispielhaftes RechensystemExemplary calculation system

Systeme mit mehreren GPUs und CPUs werden in einer Vielzahl von Branchen eingesetzt, da Entwickler mehr Parallelität in Anwendungen wie künstlicher Intelligenz bereitstellen und nutzen. Leistungsstarke GPU-beschleunigte Systeme mit Zehntausenden von Rechenknoten werden in Rechenzentren, Forschungseinrichtungen und Supercomputern eingesetzt, um immer größere Probleme zu lösen. Mit zunehmender Anzahl von Verarbeitungsgeräten innerhalb der Hochleistungssysteme müssen die Kommunikations- und Datenübertragungsmechanismen skaliert werden, um die erhöhte Bandbreite zu unterstützen.Systems with multiple GPUs and CPUs are used in a variety of industries as developers provide and leverage more parallelism in applications such as artificial intelligence. Powerful GPU-accelerated systems with tens of thousands of compute nodes are being used in data centers, research facilities, and supercomputers to solve more and more problems. As the number of processing devices within the high performance systems increases, the communication and data transfer mechanisms must be scaled to support the increased bandwidth.

5B ist eine konzeptionelle Darstellung eines Verarbeitungssystems 500, das unter Verwendung der PPU 300 aus 3 gemäß einer Ausführungsform implementiert wurde. Das exemplarische System 565 kann konfiguriert werden, um das in den 1C, 1D und/oder 2B dargestellte Verfahren 120, 150 und 250 zu implementieren. Das Verarbeitungssystem 500 beinhaltet eine CPU 530, einen Switch 510 und jeweils mehrere PPUs 300 und entsprechende Speicher 304. Der NVLink 310 bietet Hochgeschwindigkeitskommunikationsverbindungen zwischen jeder der PPUs 300. Obwohl eine bestimmte Anzahl von NVLink 310- und Interconnect 302-Verbindungen in 5B dargestellt ist, kann die Anzahl der Verbindungen zu jeder PPU 300 und der CPU 530 variieren. Der Switch 510 verbindet die Verbindung 302 mit der CPU 530. Die PPUs 300, die Speicher 304 und NVLinks 310 können sich auf einer einzigen Halbleiterplattform befinden, um ein Parallelverarbeitungsmodul 525 zu bilden. In einer Ausführungsform unterstützt der Switch 510 zwei oder mehr Protokolle zur Schnittstelle zwischen verschiedenen unterschiedlichen Verbindungen und/oder Verbindungen. 5B is a conceptual representation of a processing system 500 using the PPU 300 out 3 has been implemented according to one embodiment. The exemplary system 565 can be configured to do that in the 1C . 1D and / or 2B illustrated methods 120 . 150 and 250 to implement. The processing system 500 includes a CPU 530 , a switch 510 and in each case several PPUs 300 and corresponding memory 304 , The NVLink 310 provides high-speed communication links between each of the PPUs 300 , Although a certain number of NVLink 310 and interconnect 302 Connections in 5B is shown, the number of connections to each PPU 300 and the CPU 530 vary. The switch 510 connects the connection 302 with the CPU 530 , The PPUs 300 , the memory 304 and NVLinks 310 can reside on a single semiconductor platform to a parallel processing module 525 to build. In one embodiment, the switch supports 510 two or more protocols for the interface between different different connections and / or connections.

In einer weiteren Ausführungsform (nicht dargestellt) stellt der NVLink 310 eine oder mehrere Hochgeschwindigkeitskommunikationsverbindungen zwischen jeder der PPUs 300 und der CPU 530 bereit, und der Switch 510 verbindet die Verbindung 302 mit der PPUs 300 über eine Schnittstelle. Die PPUs 300, die Speicher 304 und die Verbindung 302 können auf einer einzigen Halbleiterplattform angeordnet sein, um ein Parallelverarbeitungsmodul 525 zu bilden. In noch einer weiteren Ausführungsform (nicht dargestellt) stellt die Verbindung 302 eine oder mehrere Kommunikationsverbindungen zwischen jeder der PPUs 300 und der CPU 530 bereit, und der Switch 510 verbindet jede der PPUs 300 mit einer Schnittstelle und mittels dem NVLink 310, um eine oder mehrere Hochgeschwindigkeitskommunikationsverbindungen zwischen den PPUs 300 bereitzustellen. In einer weiteren Ausführungsform (nicht dargestellt) stellt der NVLink 310 eine oder mehrere Hochgeschwindigkeitskommunikationsverbindungen zwischen den PPUs 300 und der CPU 530 über den Switch 510 bereit. In noch einer weiteren Ausführungsform (nicht dargestellt) stellt die Verbindung 302 eine oder mehrere Kommunikationsverbindungen zwischen jeder der PPUs 300 direkt zur Verfügung. Eine oder mehrere der Hochgeschwindigkeitskommunikationsverbindungen NVLink 310 können als physische NVLink-Verbindung oder als On-Chip- oder On-Die-Verbindung unter Verwendung des gleichen Protokolls wie NVLink 310 implementiert werden. In another embodiment (not shown), the NVLink provides 310 one or more high speed communication links between each of the PPUs 300 and the CPU 530 ready, and the switch 510 connects the connection 302 with the PPUs 300 via an interface. The PPUs 300 , the memory 304 and the connection 302 can be arranged on a single semiconductor platform to a parallel processing module 525 to build. In yet another embodiment (not shown), the compound provides 302 one or more communication links between each of the PPUs 300 and the CPU 530 ready, and the switch 510 connects each of the PPUs 300 with an interface and with the NVLink 310 to one or more high-speed communication links between the PPUs 300 provide. In another embodiment (not shown), the NVLink provides 310 one or more high speed communication links between the PPUs 300 and the CPU 530 over the switch 510 ready. In yet another embodiment (not shown), the compound provides 302 one or more communication links between each of the PPUs 300 directly available. One or more of the high-speed NVLink communications links 310 can be used as a physical NVLink connection or as an on-chip or on-die connection using the same protocol as NVLink 310 be implemented.

Im Rahmen der vorliegenden Beschreibung kann sich eine einzelne Halbleiterplattform auf eine einzige einheitliche halbleiterbasierte integrierte Schaltung beziehen, die auf einem Die oder einem Chip hergestellt wird. Es ist zu beachten, dass sich der Begriff Single-Halbleiterplattform auch auf Multichip-Module mit erhöhter Konnektivität beziehen kann, die den On-Chip-Betrieb simulieren und wesentliche Verbesserungen gegenüber einer herkömmlichen Busimplementierung vornehmen. Natürlich können die verschiedenen Schaltungen oder Vorrichtungen auch einzeln oder in verschiedenen Kombinationen von Halbleiterplattformen nach den Wünschen des Benutzers angeordnet sein. Alternativ kann das Parallelverarbeitungsmodul 525 als Leiterplattensubstrat implementiert werden und jede der PPUs 300 und/oder Speicher 304 kann als kompakte Vorrichtung ausgeführt werden. In einer Ausführungsform befinden sich die CPU 530, der Switch 510 und das Parallelverarbeitungsmodul 525 auf einer einzigen Halbleiterplattform.In the present specification, a single semiconductor platform may refer to a single unitary semiconductor-based integrated circuit fabricated on a die or chip. It should be noted that the term single-semiconductor platform may also refer to multichip modules with increased connectivity that simulate on-chip operation and make significant improvements over a traditional bus implementation. Of course, the various circuits or devices may also be arranged individually or in various combinations of semiconductor platforms according to the wishes of the user. Alternatively, the parallel processing module 525 be implemented as a printed circuit board substrate and each of the PPUs 300 and / or memory 304 can be designed as a compact device. In one embodiment, the CPU is located 530 , the switch 510 and the parallel processing module 525 on a single semiconductor platform.

In einer Ausführungsform beträgt die Signalübertragungsrate jedes NVLink 310 20 bis 25 Gigabit/Sekunde und jede PPU 300 beinhaltet sechs NVLink 310-Schnittstellen (wie in 5B dargestellt ist, sind fünf NVLink 310-Schnittstellen für jede PPU 300 enthalten). Jeder NVLink 310 bietet eine Datenübertragungsrate von 25 Gigabyte/Sekunde in jede Richtung, sechs Links liefern 300 Gigabyte/Sekunde. Der NVLinks 310 kann ausschließlich für die PPU-zu-PPU-Kommunikation verwendet werden, wie es in 5B dargestellt ist, oder für eine Kombination aus PPU-zu-PPU und PPU-zu-CPU, wenn die CPU 530 auch eine oder mehrere NVLink 310-Schnittstellen beinhaltet.In one embodiment, the signal transmission rate is each NVLink 310 20 to 25 gigabits / second and every PPU 300 includes six NVLinks 310 Interfaces (as in 5B are represented, are five NVLink 310 Interfaces for each PPU 300 contain). Every NVLink 310 provides a data transfer rate of 25 gigabytes / second in each direction, delivering six links 300 Gigabyte / second. The NVLinks 310 can only be used for PPU-to-PPU communication as it is in 5B or for a combination of PPU-to-PPU and PPU-to-CPU, if the CPU 530 also one or more NVLink 310 Interfaces included.

In einer Ausführungsform ermöglicht der NVLink 310 den direkten Lade-/Speicher-/Atomzugriff von der CPU 530 auf den 300 Speicher 304 jeder PPU. In einer Ausführungsform unterstützt die NVLink 310 Kohärenzoperationen, so dass aus den Speichern 304 gelesene Daten in der Cache-Hierarchie der CPU 530 gespeichert werden können, wodurch die Cache-Zugriffslatenz für die CPU 530 reduziert wird. In einer Ausführungsform beinhaltet der NVLink 310 die Unterstützung von Address Translation Services (ATS), so dass die PPU 300 direkt auf Seitentabellen innerhalb der CPU 530 zugreifen kann. Eine oder mehrere der NVLinks 310 können auch für den Betrieb in einem Niedrigverbrauchsmodus konfiguriert werden.In one embodiment, the NVLink allows 310 Direct load / memory / Atom access from the CPU 530 on the 300 Storage 304 every PPU. In one embodiment, the NVLink supports 310 Coherence operations, so that from the stores 304 read data in the cache hierarchy of the CPU 530 can be stored, which increases the cache access latency for the CPU 530 is reduced. In one embodiment, the NVLink includes 310 the support of Address Translation Services (ATS) so that the PPU 300 directly on page tables within the CPU 530 can access. One or more of the NVLinks 310 can also be configured to operate in a low-power mode.

5C stellt ein exemplarisches System 565 dar, in dem die unterschiedliche Architekturen und/oder Funktionalitäten der verschiedenen vorherigen Ausführungsformen implementiert werden können. Das exemplarische System 565 kann konfiguriert werden, um das in den 1C, 1D und/oder 2B dargestellte Verfahren 120, 150 und 250 zu implementieren. 5C represents an exemplary system 565 in which the different architectures and / or functionalities of the various previous embodiments can be implemented. The exemplary system 565 can be configured to do that in the 1C . 1D and / or 2B illustrated methods 120 . 150 and 250 to implement.

Wie dargestellt ist, ist ein System 565 vorgesehen, das mindestens eine Zentraleinheit 530 beinhaltet, die an einen Kommunikationsbus 575 angeschlossen ist. Der Kommunikationsbus 575 kann mit jedem geeigneten Protokoll implementiert werden, wie z.B. PCI (Peripheral Component Interconnect), PCI-Express, AGP (Accelerated Graphics Port), HyperTransport oder jedem anderen Bus oder Punkt-zu-Punkt Kommunikationsprotokoll(en). Das System 565 beinhaltet auch einen Hauptspeicher 540. Die Steuerlogik (Software) und die Daten werden im Hauptspeicher 540 gespeichert, der als Direktzugriffsspeicher (RAM) ausgeführt sein kann.As shown, is a system 565 provided, the at least one central unit 530 which is connected to a communication bus 575 connected. The communication bus 575 can be implemented with any suitable protocol, such as PCI (Peripheral Component Interconnect), PCI Express, Accelerated Graphics Port (AGP), HyperTransport, or any other bus or point-to-point communication protocol (s). The system 565 also includes a main memory 540 , The control logic (software) and the data are stored in main memory 540 which may be implemented as random access memory (RAM).

Das System 565 beinhaltet auch die Eingabevorrichtungen 560, das Parallelverarbeitungssystem 525 und die Anzeigevorrichtungen 545, z.B. ein herkömmliches CRT (Kathodenstrahlröhre), LCD (Flüssigkristallanzeige), LED (Leuchtdiode), Plasmaanzeige oder dergleichen. Benutzereingaben können von den Eingabegeräten 560 empfangen werden, z.B. Tastatur, Maus, Touchpad, Mikrofon und dergleichen. Jedes der vorgenannten Module und/oder Vorrichtungen kann sich sogar auf einer einzigen Halbleiterplattform befinden, um das System 565 zu bilden. Alternativ können die verschiedenen Module auch einzeln oder in verschiedenen Kombinationen von Halbleiterplattformen nach den Wünschen des Anwenders angeordnet werden.The system 565 also includes the input devices 560 , the parallel processing system 525 and the display devices 545 For example, a conventional CRT (Cathode Ray Tube), LCD (Liquid Crystal Display), LED (Light Emitting Diode), Plasma Display or the like. User input can be from the input devices 560 received, eg keyboard, mouse, touchpad, microphone and the like. Each of the aforementioned modules and / or devices may even be located on a single semiconductor platform in order to the system 565 to build. Alternatively, the various modules can also be arranged individually or in various combinations of semiconductor platforms according to the wishes of the user.

Weiterhin kann das System 565 über eine Netzwerkschnittstelle 535 zu Kommunikationszwecken mit einem Netzwerk (z.B. Telekommunikationsnetzwerk, Local Area Network (LAN), Wireless Network, Wide Area Network (WAN) wie Internet, Peer-to-Peer-Netzwerk, Kabelnetzwerk oder dergleichen) gekoppelt werden.Furthermore, the system can 565 over a network interface 535 for communication purposes with a network (eg, telecommunications network, local area network (LAN), wireless network, wide area network (WAN) such as Internet, peer-to-peer network, cable network, or the like).

Das System 565 kann auch einen Sekundärspeicher beinhalten (nicht dargestellt). Der Sekundärspeicher 610 beinhaltet beispielsweise ein Festplattenlaufwerk und/oder ein Wechselspeicherlaufwerk, das ein Diskettenlaufwerk, ein Magnetbandlaufwerk, ein Kompaktdiskettenlaufwerk, ein digitales vielseitiges Platten-(DVD)-Laufwerk, ein Aufzeichnungsgerät, einen universellen seriellen Bus-(USB)-Flashspeicher darstellt. Das Wechselspeicherlaufwerk liest und/oder schreibt in bekannter Weise von einer Wechselspeichereinheit.The system 565 may also include a secondary memory (not shown). The secondary storage 610 includes, for example, a hard disk drive and / or a removable storage drive that is a floppy disk drive, a magnetic tape drive, a compact diskette drive, a digital versatile disk (DVD) drive, a recording device, a universal serial bus (USB) flash memory. The removable storage drive reads and / or writes in a known manner from a removable storage unit.

Computerprogramme oder Logikalgorithmen der Computersteuerung können im Hauptspeicher 540 und/oder im Sekundärspeicher gespeichert werden. Solche Computerprogramme ermöglichen es dem System 565, verschiedene Funktionen auszuführen, wenn sie ausgeführt werden. Der Speicher 540, der Speicher und/oder jeder andere Speicher sind mögliche Beispiele für computerlesbare Medien.Computer programs or logic algorithms of computer control can be stored in main memory 540 and / or stored in secondary storage. Such computer programs make it possible for the system 565 to perform various functions when they are executed. The memory 540 , the memory and / or any other memory are possible examples of computer-readable media.

Die Architektur und/oder Funktionalität der verschiedenen vorherigen Figuren kann im Zusammenhang mit einem allgemeinen Computersystem, einem Platinensystem, einem Spielkonsolensystem für Unterhaltungszwecke, einem anwendungsspezifischen System und/oder einem anderen gewünschten System implementiert werden. Das System 565 kann beispielsweise in Form eines Desktop-Computers, eines Laptops, eines Tablet-Computers, von Servern, Supercomputern, eines Smartphones (z.B. eines drahtlosen, tragbaren Geräts), eines persönlichen digitalen Assistenten (PDA), einer Digitalkamera, eines Fahrzeugs, eines am Kopf montierten Displays, einer tragbaren elektronischen Vorrichtung, einer mobilen Telefonvorrichtung, eines Fernsehers, einer Workstation, einer Spielkonsole, eines eingebetteten Systems und/oder einer anderen Art von Logik ausgeführt werden.The architecture and / or functionality of the various previous figures may be implemented in the context of a general computer system, a circuit board system, a gaming console system, an application specific system, and / or another desired system. The system 565 For example, it may be in the form of a desktop computer, a laptop, a tablet computer, servers, supercomputers, a smartphone (eg, a wireless portable device), a personal digital assistant (PDA), a digital camera, a vehicle, a head mounted displays, a portable electronic device, a mobile telephone device, a television, a workstation, a game console, an embedded system and / or other type of logic.

Obwohl verschiedene Ausführungsformen vorstehend beschrieben wurden, sollte klar sein, dass sie nur als Beispiel und nicht als Einschränkung dargestellt wurden. Daher sollte die Breite und der Umfang einer bevorzugten Ausführungsform nicht durch eine der oben beschriebenen exemplarischen Ausführungsformen eingeschränkt werden, sondern nur in Übereinstimmung mit den folgenden Ansprüchen und ihren Entsprechungen definiert werden.Although various embodiments have been described above, it should be understood that they have been presented by way of example only, and not limitation. Therefore, the breadth and scope of a preferred embodiment should not be limited by any of the above-described exemplary embodiments, but should be defined only in accordance with the following claims and their equivalents.

Grafikbearbeitungs-PipelineGraphics processing pipeline

In einer Ausführungsform umfasst die PPU 300 eine Grafikprozessoreinheit (GPU). Die PPU 300 ist konfiguriert, um Befehle zu empfangen, die Shader-Programme zur Verarbeitung von Bilddaten spezifizieren. Grafikdaten können als eine Reihe von Primitives wie Punkte, Linien, Dreiecke, Vierecke (Quads), Dreiecksstreifen und dergleichen definiert werden. Typischerweise beinhaltet ein Primitiv Daten, die eine Anzahl von Vertices für das Primitiv angeben (z.B. in einem Modell-Raum-Koordinatensystem) sowie Attribute, die jedem Vertex des Primitives zugeordnet sind. Die PPU 300 kann konfiguriert werden, um die Grafik-Primitives zu verarbeiten, um einen Frame-Puffer zu erzeugen (z.B. Pixeldaten für jedes der Pixel der Anzeige).In one embodiment, the PPU includes 300 a graphics processor unit (GPU). The PPU 300 is configured to receive commands specifying image data shader programs. Graphics data may be defined as a series of primitives such as points, lines, triangles, quads, triangular stripes, and the like. Typically, a primitive includes data indicating a number of vertices for the primitive (eg, in a model-space coordinate system) and attributes associated with each vertex of the primitive. The PPU 300 can be configured to process the graphics primitives to generate a frame buffer (eg, pixel data for each of the pixels of the display).

Eine Anwendung schreibt Modelldaten für eine Szene (z.B. eine Sammlung von Vertices und Attributen) in einen Speicher, wie beispielsweise einen Systemspeicher oder Speicher 304. Die Modelldaten definieren jedes der Objekte, die auf einer Anzeige sichtbar sein können. Die Anwendung führt dann einen API-Aufruf an den Treiberkern durch, der die Modelldaten zur Darstellung und Anzeige auffordert. Der Treiberkern liest die Modelldaten und schreibt Befehle in einen oder mehrere Ströme, um Operationen zur Verarbeitung der Modelldaten durchzuführen. Die Befehle können auf verschiedene Shader-Programme verweisen, die auf den SMs 440 der PPU 300 implementiert werden sollen, einschließlich eines oder mehrerer Vertex-Shader, Rumpf-Shader, Domain-Shader, Geometrie-Shader und Pixel-Shader. So kann beispielsweise einer oder mehrere der SMs 440 konfiguriert werden, um ein Vertex-Shader-Programm auszuführen, das eine Anzahl von durch die Modelldaten definierten Vertices verarbeitet. In einer Ausführungsform können die verschiedenen SMs 440 konfiguriert werden, um verschiedene Shader-Programme gleichzeitig auszuführen. So kann beispielsweise eine erste Teilmenge von SMs 440 konfiguriert werden, um ein Vertex-Shader-Programm auszuführen, während eine zweite Teilmenge von SMs 440 konfiguriert werden kann, um ein Pixel-Shader-Programm auszuführen. Die erste Teilmenge der SMs 440 verarbeitet Vertex-Daten, um verarbeitete Vertex-Daten zu erzeugen, und schreibt die verarbeiteten Vertex-Daten in den L2-Cache 460 und/oder den Speicher 304. Nachdem die verarbeiteten Vertexdaten gerastert wurden (z.B. von dreidimensionalen Daten in zweidimensionale Daten im Bildschirmraum umgewandelt), um Fragmentdaten zu erzeugen, führt die zweite Teilmenge von SMs 440 einen Pixel-Shader aus, um verarbeitete Fragmentdaten zu erzeugen, die dann mit anderen verarbeiteten Fragmentdaten gemischt und in den Frame-Puffer im Speicher 304 geschrieben werden. Das Vertex-Shader-Programm und das Pixel-Shader-Programm können gleichzeitig ausgeführt werden und verschiedene Daten aus derselben Szene in einer Pipeline verarbeiten, bis alle Modelldaten für die Szene in den Frame-Puffer übertragen wurden. Anschließend wird der Inhalt des Frame-Puffers an eine Anzeigesteuerung zur Anzeige auf einer Anzeigevorrichtung übertragen.An application writes model data for a scene (eg, a collection of vertices and attributes) to memory, such as system memory or memory 304 , The model data defines each of the objects that may be visible on a display. The application then makes an API call to the driver core that prompts the model data for presentation and display. The driver core reads the model data and writes commands into one or more streams to perform operations to process the model data. The commands can refer to different shader programs running on the SMs 440 the PPU 300 including one or more vertex shaders, body shaders, domain shaders, geometry shaders, and pixel shaders. For example, one or more of the SMs 440 be configured to execute a vertex shader program that processes a number of vertices defined by the model data. In one embodiment, the various SMs 440 be configured to run different shader programs simultaneously. For example, a first subset of SMs 440 be configured to execute a vertex shader program while a second subset of SMs 440 can be configured to run a pixel shader program. The first subset of SMs 440 Processes vertex data to produce processed vertex data and writes the processed vertex data into the L2 cache 460 and / or the memory 304 , After the processed vertex data has been rasterized (eg from three-dimensional data into two-dimensional Data converted to screen space) to generate fragment data, performs the second subset of SMs 440 a pixel shader to generate processed fragment data which is then mixed with other processed fragment data and stored in the frame buffer 304 to be written. The vertex shader program and the pixel shader program can execute concurrently and pipeline various data from the same scene until all the model data for the scene has been transferred to the frame buffer. Subsequently, the content of the frame buffer is transferred to a display controller for display on a display device.

6 ist eine konzeptionelle Darstellung einer Grafikverarbeitungspipeline 600, die von der PPU 300 aus 3 gemäß einer Ausführungsform implementiert wurde. Die Grafikverarbeitungspipeline 600 ist ein abstraktes Flussdiagramm der implementierten Verarbeitungsschritte zur Erzeugung von 2D-Computerbildern aus 3D-Geometriedaten. Wie bekannt ist, können Pipeline-Architekturen Operationen mit langen Latenzzeiten effizienter durchführen, indem sie die Operation in eine Vielzahl von Stufen aufteilen, wobei der Ausgang jeder Stufe mit dem Eingang der nächsten nachfolgenden Stufe gekoppelt ist. Somit empfängt die Grafikverarbeitungspipeline 600 Eingangsdaten 601, die von einer Stufe zur nächsten Stufe der Grafikverarbeitungspipeline 600 übertragen werden, um Ausgangsdaten 602 zu erzeugen. In einer Ausführungsform kann die Grafikverarbeitungspipeline 600 eine durch die OpenGL®-API definierte Grafikverarbeitungspipeline darstellen. Optional kann die Grafikverarbeitungspipeline 600 im Rahmen der Funktionalität und Architektur der vorherigen Figuren und/oder jeder nachfolgenden Figur(en) implementiert werden. 6 is a conceptual representation of a graphics processing pipeline 600 that of the PPU 300 out 3 has been implemented according to one embodiment. The graphics processing pipeline 600 Figure 4 is an abstract flow diagram of the implemented processing steps for generating 2D computer images from 3D geometry data. As is known, pipelined architectures can more efficiently perform long latency operations by dividing the operation into a plurality of stages with the output of each stage coupled to the input of the next succeeding stage. Thus, the graphics processing pipeline receives 600 input data 601 going from one level to the next level of the graphics processing pipeline 600 be transmitted to output data 602 to create. In one embodiment, the graphics processing pipeline 600 represent a graphics processing pipeline defined by the OpenGL® API. Optionally, the graphics processing pipeline 600 be implemented within the functionality and architecture of the previous figures and / or any subsequent figure (s).

Wie in 6 dargestellt ist, umfasst die Grafikverarbeitungspipeline 600 eine Pipeline-Architektur, die mehrere Stufen umfasst. Die Stufen beinhalten, sind aber nicht beschränkt auf, eine Datenmontagestufe 610, eine Vertex-Shading-Stufe 620, eine Primitiv-Montage-Stufe 630, eine Geometrie-Shading-Stufe 640, eine Viewport-Scale, Cull und Clip- (VSCC-) Stufe 650, eine Rasterungsstufe 660, eine Fragment-Shading-Stufe 670 und eine Raster-Operationen-Stufe 680. In einer Ausführungsform umfassen die Eingabedaten 601 Befehle, die die Verarbeitungseinheiten so konfigurieren, dass sie die Stufen der Grafikverarbeitungspipeline 600 und geometrische Primitives (z.B. Punkte, Linien, Dreiecke, Vierecke, Quads, Dreiecksstreifen oder Fans usw.) implementieren, die von den Stufen verarbeitet werden sollen. Die Ausgabedaten 602 können Pixeldaten (z.B. Farbdaten) umfassen, die in einen Frame-Puffer oder eine andere Art von Oberflächendatenstruktur in einen Speicher kopiert werden.As in 6 includes the graphics processing pipeline 600 a pipeline architecture that includes multiple stages. The stages include, but are not limited to, a data assembly stage 610 , a vertex shading level 620 , a primitive assembly stage 630 , a geometry shading level 640 , a viewport-scale, cull, and clip (VSCC) level 650 , a screening level 660 , a fragment shading level 670 and a raster operations level 680 , In one embodiment, the input data includes 601 Commands that configure the processing units to follow the stages of the graphics processing pipeline 600 and implement geometric primitives (eg, points, lines, triangles, squares, quads, triangular stripes, or fans, etc.) to be processed by the stages. The output data 602 may include pixel data (eg, color data) that is copied to a memory in a frame buffer or other type of surface data structure.

Die Datenmontagestufe 610 empfängt die Eingabedaten 601, die Vertex-Daten für Oberflächen hoher Ordnung, Primitives oder dergleichen spezifizieren. Die Datenmontagestufe 610 sammelt die Vertexdaten in einem Zwischenspeicher oder einer Warteschlange, beispielsweise durch Empfangen eines Befehls vom Host-Prozessor, der einen Zeiger auf einen Puffer im Speicher enthält, und Lesen der Vertex-Daten aus dem Puffer. Die Vertex-Daten werden dann zur Verarbeitung an die Vertex-Shading-Stufe 620 übertragen.The data assembly stage 610 receives the input data 601 which specify vertex data for high-order surfaces, primitive or the like. The data assembly stage 610 collects the vertex data in a cache or queue, for example, by receiving a command from the host processor containing a pointer to a buffer in memory and reading the vertex data from the buffer. The vertex data is then sent to the vertex shading stage for processing 620 transfer.

Die Vertex-Shading-Stufe 620 verarbeitet Vertex-Daten, indem sie eine Reihe von Operationen (z.B. einen Vertex-Shader oder ein Programm) einmal für jeden der Vertices durchführt. Vertices können z.B. als 4-Koordinaten-Vektor (z.B. <x, y, z, w>) angegeben werden, der einem oder mehreren Vertexattributen (z.B. Farbe, Texturkoordinaten, Oberflächennormale, etc.) zugeordnet ist. Die Vertex-Shading-Stufe 620 kann einzelne VertexAttribute wie Position, Farbe, Texturkoordinaten und dergleichen manipulieren. Mit anderen Worten, die Vertex-Shading-Stufe 620 führt Operationen an den Vertex-Koordinaten oder anderen Vertex-Attributen durch, die einem Vertex zugeordnet sind. Solche Operationen beinhalten üblicherweise Beleuchtungsoperationen (z.B. Ändern von Farbattributen für einen Vertex) und Transformationsoperationen (z.B. Ändern des Koordinatenraums für einen Vertex). So können beispielsweise Vertices durch Koordinaten in einem Objektkoordinatenraum spezifiziert werden, die durch Multiplikation der Koordinaten mit einer Matrix transformiert werden, die die Koordinaten aus dem Objektkoordinatenraum in einen World Space oder einen normalisierten Gerätekoordinatenraum (NCD) übersetzt. Die Vertex-Shading-Stufe 620 erzeugt transformierte Vertex-Daten, die an die Primitiv-Montage-Stufe 630 übertragen werden.The vertex shading level 620 Processes vertex data by performing a series of operations (eg, a vertex shader or a program) once for each of the vertices. For example, vertices may be specified as a 4-coordinate vector (eg, <x, y, z, w>) associated with one or more vertex attributes (eg, color, texture coordinates, surface normals, etc.). The vertex shading level 620 can manipulate individual vertex attributes such as position, color, texture coordinates, and the like. In other words, the vertex shading level 620 performs operations on the vertex coordinates or other vertex attributes associated with a vertex. Such operations typically involve lighting operations (eg, changing color attributes for a vertex) and transform operations (eg, changing the coordinate space for a vertex). For example, vertices may be specified by coordinates in an object coordinate space that are transformed by multiplying the coordinates by a matrix that translates the coordinates from the object coordinate space to a world space or a normalized device coordinate space (NCD). The vertex shading level 620 generates transformed vertex data to the primitive assembly stage 630 be transmitted.

Die Primitiv-Montage-Stufe 630 sammelt die von der Vertex-Shading-Stufe 620 ausgegebenen Vertices und gruppiert die Vertices zu geometrischen Primitives für die Verarbeitung durch die Geometrie-Shading-Stufe 640. So kann beispielsweise die Primitiv-Montage-Stufe 630 konfiguriert werden, um alle drei aufeinanderfolgenden Vertices als geometrisches Primitiv (z.B. ein Dreieck) zur Übertragung auf die Geometrie-Shading-Stufe 640 zu gruppieren. In einigen Ausführungsformen können bestimmte Vertices für aufeinanderfolgende geometrische Primitives wiederverwendet werden (z.B. können zwei aufeinanderfolgende Dreiecke in einem Dreieckstreifen zwei Vertices teilen). Die Primitiv-Montage-Stufe 630 überträgt geometrische Primitives (z.B. eine Sammlung von zugehörigen Vertices) an die Geometrie-Shading-Stufe 640.The primitive assembly stage 630 collects those from the vertex shading level 620 output vertices and groups the vertices to geometric primitives for processing by the geometry shading stage 640 , For example, the primitive assembly stage 630 be configured to use all three consecutive vertices as a geometric primitive (eg, a triangle) for transmission to the geometry shading stage 640 to group. In some embodiments, certain vertices may be reused for successive geometric primitives (eg, two consecutive triangles in a triangular strip may share two vertices). The primitive assembly stage 630 transfers geometric primitives (eg a collection of associated vertices) to the geometry shading stage 640 ,

Die Geometrie-Shading-Stufe 640 verarbeitet geometrische Primitives, indem sie eine Reihe von Operationen (z.B. einen Geometrie-Shader oder ein Programm) auf den geometrischen Primitives durchführt. Tessellierungsoperationen können aus jedem geometrischen Primitiv ein oder mehrere geometrische Primitives erzeugen. Mit anderen Worten, die Geometrie-Shading-Stufe 640 kann jedes geometrische Primitiv in ein feineres Netz von zwei oder mehr geometrischen Primitives unterteilen, die zur Verarbeitung durch den Rest der Grafikverarbeitungspipeline 600 vorgesehen sind. Die Geometrie-Shading-Stufe 640 überträgt geometrische Primitives an die Viewport-SCC-Stufe 650. The geometry shading level 640 processes geometric primitives by performing a series of operations (such as a geometry shader or a program) on the geometric primitive. Tessellation operations can generate one or more geometric primitives from each geometric primitive. In other words, the geometry shading level 640 may subdivide each geometric primitive into a finer mesh of two or more geometric primitives for processing by the remainder of the graphics processing pipeline 600 are provided. The geometry shading level 640 transfers geometric primitives to the viewport SCC stage 650 ,

In einer Ausführungsform kann die Grafikverarbeitungspipeline 600 innerhalb eines Streaming-Multiprozessors betrieben werden und die Vertex-Shading-Stufe 620, die Primitiv-Montagestufe 630, die Geometrie-Shading-Stufe 640, die Fragment-Shading-Stufe 670 und/oder die damit verbundene Hard- und Software können nacheinander Verarbeitungsvorgänge durchführen. Sobald die sequentiellen Verarbeitungsvorgänge in einer Ausführungsform abgeschlossen sind, kann die Viewport-SCC-Stufe 650 die Daten verwenden. In einer Ausführungsform können Primitiv-Daten, die von einer oder mehreren Stufen der Grafikverarbeitungspipeline 600 verarbeitet werden, in einen Cache geschrieben werden (z.B. L1-Cache, Vertex-Cache, etc.). In diesem Fall kann die Viewport-SCC-Stufe 650 in einer Ausführungsform auf die Daten im Cache zugreifen. In einer Ausführungsform sind die Viewport-SCC-Stufe 650 und die Rasterungsstufe 660 als feste Funktionsschaltung implementiert.In one embodiment, the graphics processing pipeline 600 within a streaming multiprocessor and the vertex shading stage 620 , the primitive assembly stage 630 , the geometry shading level 640 , the fragment shading level 670 and / or the associated hardware and software can perform processing operations sequentially. Once the sequential processing operations are completed in one embodiment, the viewport SCC stage 650 to use the data. In one embodiment, primitive data obtained from one or more stages of the graphics processing pipeline 600 be written to a cache (eg L1 cache, vertex cache, etc.). In this case, the viewport SCC stage 650 in one embodiment, accessing the data in the cache. In one embodiment, the viewport is SCC stage 650 and the screening level 660 implemented as a fixed function circuit.

Die Viewport-SCC-Stufe 650 führt die Skalierung, das Culling und das Clipping der geometrischen Primitives durch. Jede Oberfläche, auf die gerendert wird, ist mit einer abstrakten Kameraposition verbunden. Die Kameraposition stellt eine Position eines Betrachters dar, der die Szene betrachtet, und definiert ein Sichtvolumen, das die Objekte der Szene einschließt. Das Sichtvolumen kann eine Betrachtungsebene, eine hintere Ebene und vier Clipping-Ebenen beinhalten. Jedes geometrische Primitiv, das sich vollständig außerhalb des Sichtvolumens befindet, kann aussortiert (z.B. verworfen) werden, da das geometrische Primitiv nicht zur endgültigen gerenderten Szene beiträgt. Jedes geometrische Primitiv, das sich teilweise innerhalb des Sichtvolumens und teilweise außerhalb des Sichtvolumens befindet, kann zugeschnitten werden (z.B. in ein neues geometrisches Primitiv umgewandelt werden, das innerhalb des Sichtvolumens eingeschlossen ist). Darüber hinaus können geometrische Primitives jeweils auf der Grundlage einer Tiefe des Sichtvolumens skaliert werden. Alle potenziell sichtbaren geometrischen Primitives werden dann an die Rasterstufe 660 übertragen.The viewport SCC level 650 performs the scaling, culling, and clipping of geometric primitives. Each rendered surface is linked to an abstract camera position. The camera position represents a position of a viewer viewing the scene and defines a viewing volume that includes the objects of the scene. The view volume may include a viewing plane, a posterior plane and four clipping planes. Any geometric primitive that is completely outside the view volume may be discarded (eg discarded) because the geometric primitive does not contribute to the final rendered scene. Any geometric primitive that is partially within the view volume and partially outside the view volume may be trimmed (eg, converted into a new geometric primitive that is included within the view volume). In addition, geometric primitives may each be scaled based on a depth of view volume. All potentially visible geometric primitives are then sent to the grid level 660 transfer.

Die Rasterstufe 660 wandelt die geometrischen 3D-Primitives in 2D-Fragmente um (z.B. darstellbar, etc.). Die Rasterstufe 660 kann konfiguriert werden, um die Vertices der geometrischen Primitive zu nutzen, um einen Satz von Ebenengleichungen aufzubauen, aus denen verschiedene Attribute interpoliert werden können. Die Rasterstufe 660 kann auch eine Abdeckungsmaske für eine Vielzahl von Pixeln berechnen, die angibt, ob eine oder mehrere Sample-Positionen für das Pixel das geometrische Primitiv unterbricht. In einer Ausführungsform kann auch ein Z-Test durchgeführt werden, um zu bestimmen, ob das geometrische Primitiv durch andere geometrische Primitives, die bereits gerastert wurden, verdeckt wird. Die Rasterstufe 660 erzeugt Fragmentdaten (z.B. interpolierte VertexAttribute, die einem bestimmten Sample-Standort für jedes abgedeckte Pixel zugeordnet sind), die an die Fragment-Shading-Stufe 670 übertragen werden.The grid level 660 converts the geometric 3D primitives into 2D fragments (eg displayable, etc.). The grid level 660 can be configured to use the vertices of the geometric primitives to construct a set of plane equations from which various attributes can be interpolated. The grid level 660 may also compute a coverage mask for a plurality of pixels indicating whether one or more sample positions for the pixel interrupts the geometric primitive. In one embodiment, a Z-test may also be performed to determine if the geometric primitive is obscured by other geometric primitives already rasterized. The grid level 660 generates fragment data (eg, interpolated vertex attributes associated with a particular sample location for each covered pixel) that is sent to the fragment shading stage 670 be transmitted.

Die Fragment-Shading-Stufe 670 verarbeitet Fragment-Daten, indem sie eine Reihe von Operationen (z.B. einen Fragment-Shader oder ein Programm) an jedem der Fragmente durchführt. Die Fragment-Shading-Stufe 670 kann Pixeldaten (z.B. Farbwerte) für das Fragment erzeugen, z.B. durch Beleuchtungsoperationen oder Abtasten von Texturkarten unter Verwendung interpolierter Texturkoordinaten für das Fragment. Die Fragment-Shading-Stufe 670 erzeugt Pixeldaten, die an die Raster-Operationen-Stufe 680 übertragen werden.The fragment shading level 670 Processes fragment data by performing a series of operations (eg, a fragment shader or a program) on each of the fragments. The fragment shading level 670 may generate pixel data (eg, color values) for the fragment, eg, by lighting operations or scanning texture maps using interpolated texture coordinates for the fragment. The fragment shading level 670 generates pixel data that is sent to the raster operations stage 680 be transmitted.

Die Raster-Operationen-Stufe 680 kann verschiedene Operationen auf den Pixeldaten durchführen, wie z.B. Alpha-Tests, Schablonentests und das Mischen der Pixeldaten mit anderen Pixeldaten, die anderen dem Pixel zugeordneten Fragmenten entsprechen. Wenn die Raster-Operationen-Stufe 680 die Verarbeitung der Pixeldaten (z.B. der Ausgabedaten 602) abgeschlossen hat, können die Pixeldaten in ein Renderziel wie einen Frame-Puffer, einen Color-Puffer oder dergleichen geschrieben werden.The raster operations level 680 may perform various operations on the pixel data, such as alpha testing, template testing, and mixing the pixel data with other pixel data corresponding to other fragments associated with the pixel. When the raster operations stage 680 the processing of the pixel data (eg the output data 602 ), the pixel data may be written to a rendering target such as a frame buffer, a color buffer, or the like.

Es sei darauf hingewiesen, dass neben oder anstelle einer oder mehrerer der oben beschriebenen Stufen eine oder mehrere zusätzliche Stufen in die Grafikverarbeitungspipeline 600 aufgenommen werden können. Verschiedene Implementierungen der abstrakten Grafikverarbeitungspipeline können verschiedene Phasen implementieren. Darüber hinaus kann in einigen Ausführungsformen (z. B. Geometrie-Shading-Stufe 640) eine oder mehrere der vorstehend beschriebenen Stufen von der Grafikverarbeitungspipeline ausgeschlossen werden. Andere Arten von Grafikverarbeitungspipelines werden als im Rahmen der vorliegenden Offenbarung betrachtet. Darüber hinaus kann jede der Stufen der Grafikverarbeitungspipeline 600 durch eine oder mehrere dedizierte Hardwareeinheiten innerhalb eines Grafikprozessors wie der PPU 300 implementiert werden. Weitere Stufen der Grafikverarbeitungspipeline 600 können durch programmierbare Hardwareeinheiten wie den SM 440 der PPU 300 realisiert werden.It should be appreciated that, in addition to or instead of one or more of the above-described stages, one or more additional stages may be included in the graphics processing pipeline 600 can be included. Different implementations of the abstract graphics processing pipeline may implement different phases. In addition, in some embodiments (eg, geometry shading level 640 ) one or more of the above described steps are excluded from the graphics processing pipeline. Other types of graphics processing pipelines are considered within the scope of the present disclosure. In addition, each of the stages of the graphics processing pipeline 600 by a or multiple dedicated hardware units within a graphics processor such as the PPU 300 be implemented. Further stages of the graphics processing pipeline 600 can be controlled by programmable hardware units like the SM 440 the PPU 300 will be realized.

Die Grafikverarbeitungspipeline 600 kann über eine Anwendung implementiert werden, die von einem Host-Prozessor, wie beispielsweise einer CPU, ausgeführt wird. In einer Ausführungsform kann ein Gerätetreiber eine Anwendungsprogrammierschnittstelle (API) implementieren, die verschiedene Funktionen definiert, die von einer Anwendung verwendet werden können, um grafische Daten für die Anzeige zu erzeugen. Der Gerätetreiber ist ein Softwareprogramm, das eine Vielzahl von Anweisungen enthält, die den Betrieb der PPU 300 steuern. Die API bietet eine Abstraktion für einen Programmierer, der es einem Programmierer ermöglicht, spezielle Grafikhardware wie die PPU 300 zu verwenden, um die grafischen Daten zu erzeugen, ohne dass der Programmierer den spezifischen Befehlssatz für die PPU 300 verwenden muss. Die Anwendung kann einen API-Aufruf beinhalten, der an den Gerätetreiber für die PPU 300 weitergeleitet wird. Der Gerätetreiber interpretiert den API-Aufruf und führt verschiedene Operationen durch, um auf den API-Aufruf zu reagieren. In einigen Fällen kann der Gerätetreiber Operationen ausführen, indem er Anweisungen auf der CPU ausführt. In anderen Fällen kann der Gerätetreiber zumindest teilweise Operationen durchführen, indem er Operationen auf der PPU 300 über eine Ein-/Ausgabeschnittstelle zwischen der CPU und der PPU 300 startet. In einer Ausführungsform ist der Gerätetreiber konfiguriert, um die Grafikverarbeitungspipeline 600 unter Verwendung der Hardware der PPU 300 zu implementieren.The graphics processing pipeline 600 can be implemented via an application executed by a host processor, such as a CPU. In one embodiment, a device driver may implement an application programming interface (API) that defines various functions that may be used by an application to generate graphical data for display. The device driver is a software program that contains a variety of instructions that govern the operation of the PPU 300 control. The API provides an abstraction for a programmer that allows a programmer to use special graphics hardware like the PPU 300 to generate the graphical data without the programmer having the specific instruction set for the PPU 300 must use. The application may include an API call to the device driver for the PPU 300 is forwarded. The device driver interprets the API call and performs various operations to respond to the API call. In some cases, the device driver may perform operations by executing instructions on the CPU. In other cases, the device driver may at least partially perform operations by performing operations on the PPU 300 via an input / output interface between the CPU and the PPU 300 starts. In one embodiment, the device driver is configured to control the graphics processing pipeline 600 using the hardware of the PPU 300 to implement.

Innerhalb der PPU 300 können verschiedene Programme ausgeführt werden, um die verschiedenen Phasen der Grafikverarbeitungspipeline 600 zu realisieren. So kann beispielsweise der Gerätetreiber einen Kernel auf der PPU 300 starten, um die Vertex-Shading-Stufe 620 auf einem SM 440 (oder mehreren SMs 440) durchzuführen. Der Gerätetreiber (oder der anfängliche Kernel, der von der PPU 400 ausgeführt wird) kann auch andere Kernel auf der PPU 400 starten, um andere Stufen der Grafikverarbeitungspipeline 600 auszuführen, wie z.B. die Geometrie-Shading-Stufe 640 und die Fragment-Shading-Stufe 670. Darüber hinaus können einige der Phasen der Grafikverarbeitungspipeline 600 auf fester Hardware wie einem Rasterer oder einem innerhalb der PPU 400 implementierten Datenassembler implementiert werden. Es ist zu beachten, dass die Ergebnisse eines Kernels von einer oder mehreren dazwischenliegenden Hardwareeinheiten mit fester Funktion verarbeitet werden können, bevor sie von einem nachfolgenden Kernel auf einem SM 440 verarbeitet werden.Within the PPU 300 Different programs can be run to the different stages of the graphics processing pipeline 600 to realize. For example, the device driver may have a kernel on the PPU 300 start at the vertex shading level 620 on a SM 440 (or multiple SMs 440 ). The device driver (or the initial kernel used by the PPU 400 also runs other kernels on the PPU 400 start to other stages of the graphics processing pipeline 600 such as the geometry shading level 640 and the fragment shading level 670 , In addition, some of the phases of the graphics processing pipeline 600 on solid hardware like a rasterizer or inside the PPU 400 implemented data assembler can be implemented. It should be noted that the results of a kernel may be processed by one or more intervening fixed-function hardware units before being taken from a subsequent kernel on an SM 440 are processed.

Maschinelles LernenMachine learning

Tiefe neuronale Netze (DNNs), die auf Prozessoren wie der PPU 300 entwickelt wurden, wurden für verschiedene Anwendungsfälle eingesetzt, von selbstfahrenden Autos bis hin zu schnellerer Medikamentenentwicklung, von der automatischen Bildunterschrift in Online-Bilddatenbanken bis hin zur intelligenten Echtzeit-Sprachübersetzung in Video-Chat-Anwendungen. Deep Learning ist eine Technik, die den neuronalen Lernprozess des menschlichen Gehirns modelliert, kontinuierlich lernt, kontinuierlich intelligenter wird und im Laufe der Zeit schnellere und genauere Ergebnisse liefert. Ein Kind wird zunächst von einem Erwachsenen gelehrt, verschiedene Formen richtig zu identifizieren und zu klassifizieren, um schließlich ohne Coaching Formen identifizieren zu können. Ebenso muss ein tief lernendes oder neuronales Lernsystem in der Objekterkennung und -klassifizierung trainiert werden, damit es intelligenter und effizienter grundlegende Objekte, verdeckte Objekte usw. identifizieren und gleichzeitig den Objekten Kontext zuweisen kann.Deep neural networks (DNNs) working on processors like the PPU 300 have been used for a variety of applications, from self-driving cars to faster drug development, from automated captioning in online image databases to intelligent real-time language translation in video chat applications. Deep learning is a technique that models the neuronal learning process of the human brain, continuously learning, becoming smarter, and delivering faster, more accurate results over time. A child is first taught by an adult to correctly identify and classify various forms in order to ultimately identify forms without coaching. Similarly, a deep learning or neural learning system must be trained in object recognition and classification so that it can more intelligently and efficiently identify basic objects, obscured objects, and so on while assigning context to the objects.

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

Ein DNN-Modell (Deep Neural Network) beinhaltet mehrere Schichten vieler verbundener Knoten (z.B. Wahrnehmungen, Boltzmann-Maschinen, radiale Basisfunktionen, Faltungsschichten, etc.), die mit riesigen Mengen an Eingabedaten trainiert werden können, um komplexe Probleme schnell und mit hoher Genauigkeit zu lösen. In einem Beispiel zerlegt eine erste Schicht des DNN-Modells ein Eingabebild eines Autos in verschiedene Abschnitte und sucht nach Grundmustern wie Linien und Winkeln. Die zweite Schicht setzt die Linien zusammen, um nach Mustern höherer Ebene wie Rädern, Windschutzscheiben und Spiegeln zu suchen. Die nächste Schicht identifiziert den Fahrzeugtyp, und die letzten paar Schichten erzeugen ein Label für das Eingangsbild, das das Modell einer bestimmten Automobilmarke identifiziert.A deep neural network (DNN) model includes multiple layers of many connected nodes (eg, perceptions, Boltzmann machines, radial basis functions, convolutional layers, etc.) that can be trained with huge amounts of input data to solve complex problems quickly and with high accuracy to solve. In one example, a first layer of the DNN model decomposes an input image of a car into different sections and looks for basic patterns such as lines and angles. The second layer assembles the lines to look for higher-level patterns such as wheels, windshields, and mirrors. The next layer identifies the vehicle type, and the last few layers create a label for the input image that identifies the model of a particular automobile brand.

Sobald das DNN trainiert ist, kann das DNN eingesetzt und verwendet werden, um Objekte oder Muster in einem Prozess zu identifizieren und zu klassifizieren, der als Folgerung bezeichnet wird. Beispiele für Schlussfolgerungen (der Prozess, durch den ein DNN nützliche Informationen aus einer gegebenen Eingabe extrahiert) beinhalten das Identifizieren von handschriftlichen Zahlen bei Schecks, die in Geldautomaten hinterlegt sind, das Identifizieren von Bildern von Freunden auf Fotos, das Liefern von Filmempfehlungen an über fünfzig Millionen Benutzer, das Identifizieren und Klassifizieren verschiedener Arten von Autos, Fußgängern und Straßengefahren bei fahrerlosen Autos oder das Übersetzen menschlicher Sprache in Echtzeit.Once the DNN is trained, the DNN can be used and used to identify and classify objects or patterns in a process called inference. Examples of inferences (the process by which a DNN extracts useful information from a given input) include identifying handwritten numbers on checks deposited at ATMs, identifying pictures of friends on photos, delivering film referrals to over fifty Millions of users, identifying and classifying different types of cars, pedestrians and road hazards in driverless cars or translating human speech in real time.

Während des Trainings fließen die Daten in einer Vorwärtsausbreitungsphase durch das DNN, bis eine Vorhersage erstellt wird, die auf ein Label hinweist, das der Eingabe entspricht. Wenn das neuronale Netz die Eingabe nicht korrekt kennzeichnet, werden Fehler zwischen der richtigen Bezeichnung und der vorhergesagten Kennzeichnung analysiert und die Gewichte für jedes Merkmal während einer Rückwärtsausbreitungsphase angepasst, bis das DNN die Eingabe und andere Eingaben in einem Trainingsdatensatz korrekt kennzeichnet. Das Training komplexer neuronaler Netze erfordert enorme Mengen an paralleler Rechenleistung, einschließlich Gleitkomma-Multiplikationen und Additionen, die von der PPU 300 unterstützt werden. Die Folgerung ist weniger rechenintensiv als das Training, da es sich um einen latenzsensitiven Prozess handelt, bei dem ein trainiertes neuronales Netzwerk auf neue Eingaben angewendet wird, die es bisher noch nicht gegeben hat, um Bilder zu klassifizieren, Sprache zu übersetzen und generell neue Informationen abzuleiten.During training, the data flows through the DNN in a forward propagation phase until a prediction indicative of a label corresponding to the input is made. If the neural network does not correctly identify the input, errors between the correct label and the predicted label are analyzed and the weights adjusted for each feature during a reverse propagation phase until the DNN correctly identifies the input and other inputs to a training data set. The training of complex neural networks requires enormous amounts of parallel computing power, including floating-point multiplications and additions by the PPU 300 get supported. The implication is less computationally intensive than training because it is a latency-sensitive process in which a trained neural network is applied to new inputs that have not previously existed to classify images, translate, and generally provide new information derive.

Neuronale Netze sind stark auf mathematische Matrixoperationen angewiesen, und komplexe mehrschichtige Netze erfordern enorme Mengen an Gleitkommaleistung und Bandbreite für Effizienz und Geschwindigkeit. Mit Tausenden von Rechenkernen, optimiert für Matrix-Mathematik-Operationen, und Hunderten von TFLOPS an Leistung, ist die PPU 300 eine Computerplattform, die in der Lage ist, die für tief neuronale netzbasierte künstliche Intelligenz und maschinelle Lernanwendungen erforderliche Leistung zu liefern.Neural networks rely heavily on mathematical matrix operations, and complex multi-layered networks require massive amounts of floating point performance and bandwidth for efficiency and speed. With thousands of cores optimized for matrix math operations, and hundreds of TFLOPS in performance, the PPU is 300 a computer platform capable of delivering the performance required for deep neural net-based artificial intelligence and machine learning applications.

Claims (21)

Computer-implementiertes Verfahren, umfassend: Empfangen eines ersten Bildes, bei welchem ein Abschnitt von Bilddaten fehlt, durch ein Modell eines neuronales Netzes; Empfangen einer ersten semantischen Karte, welche mit dem ersten Bild korrespondiert und bei welcher ein Abschnitt von semantischen Daten fehlt, durch das Modell des neuronalen Netzes; und Verarbeiten des ersten Bildes und der ersten semantischen Karte durch das Modell des neuronalen Netzes, um ein zweites Bild zu erstellen, welches halluzinierte Bilddaten aufweist, die eine vollständige Version des ersten Bildes repräsentieren.Computer-implemented method comprising: Receiving a first image in which a portion of image data is absent through a model of a neural network; Receiving, by the model of the neural network, a first semantic map corresponding to the first image and lacking a portion of semantic data; and Processing the first image and the first semantic map through the model of the neural network to create a second image having hallucinated image data representing a complete version of the first image. Computer-implementiertes Verfahren nach Anspruch 1, darüber hinaus umfassend Verarbeiten des ersten Bildes und der ersten semantischen Karte durch das Modell des neuronalen Netzes, um eine zweite semantische Karte zu erstellen, welche halluzinierte semantische Daten aufweist, die mit dem zweiten Bild korrespondieren.Computer-implemented method according to Claim 1 further comprising processing the first image and the first semantic map by the model of the neural network to create a second semantic map having hallucinated semantic data corresponding to the second image. Computer-implementiertes Verfahren nach Anspruch 2, darüber hinaus umfassend Trainieren des Modells des neuronalen Netzes mittels eines semantischen Diskriminators, welcher konfiguriert ist, um die zweite semantische Karte abhängig von einem Ground-Truth-Bild, das mit der vollständigen Version des ersten Bildes korrespondiert, auszuwerten.Computer-implemented method according to Claim 2 further comprising training the model of the neural network using a semantic discriminator configured to evaluate the second semantic map in response to a ground truth image corresponding to the full version of the first image. Computer-implementiertes Verfahren nach Anspruch 3, wobei die zweite semantische Karte eine hochaufgelöste semantische Karte und die erste semantische Karte eine niedrigaufgelöste semantische Karte ist.Computer-implemented method according to Claim 3 , where the second semantic map is a high-resolution semantic map and the first semantic map is a low-resolution semantic map. Computer-implementiertes Verfahren nach Anspruch 4, wobei das zweite Bild ein hochaufgelöstes Bild und das erste Bild ein niedrigaufgelöstes Bild ist, und darüber hinaus umfassend: Ändern des zweiten Bildes, um ein zweites niedrigaufgelöstes Bild zu erzeugen; Ändern der zweiten semantischen Karte, um eine zweite niedrigaufgelöste semantische Karte zu erzeugen; und Verarbeiten des zweiten niedrigaufgelösten Bildes und der zweiten niedrigaufgelösten semantischen Karte durch das Modell des neuronalen Netzes, um ein zusätzliches hochaufgelöstes Bild zu erzeugen, welches sich in einem Vergleich von dem zweiten Bild unterscheidet. Computer-implemented method according to Claim 4 wherein the second image is a high-resolution image and the first image is a low-resolution image, and further comprising: changing the second image to produce a second low-resolution image; Changing the second semantic map to produce a second low-resolution semantic map; and processing the second low-resolution image and the second low-resolution semantic map by the neural network model to produce an additional high-resolution image that differs from the second image in a comparison. Computer-implementiertes Verfahren nach Anspruch 4 oder 5, wobei das zweite Bild ein hochaufgelöstes Bild und das erste Bild ein niedrigaufgelöstes Bild ist, und darüber hinaus umfassend: Extrahieren eines ersten Abschnitts von dem zweiten Bild, um ein niedrigaufgelöstes Bild für den ersten Abschnitt zu erzeugen; Extrahieren eines zweiten Abschnitts von der zweiten semantischen Karte, um eine niedrigaufgelöste semantische Karte für den zweiten Abschnitt zu erzeugen, wobei der zweite Abschnitt mit dem ersten Abschnitt korrespondiert; und Verarbeiten des niedrigaufgelösten Bildes für den ersten Abschnitt und der niedrigaufgelösten semantischen Karte für den zweiten Abschnitt durch das Modell des neuronalen Netzes, um ein zweites hochaufgelöstes Bild zu erzeugen.Computer-implemented method according to Claim 4 or 5 wherein the second image is a high resolution image and the first image is a low resolution image, and further comprising: extracting a first portion of the second image to produce a low resolution image for the first portion; Extracting a second portion from the second semantic map to generate a low-resolution semantic map for the second portion, the second portion corresponding to the first portion; and processing the low-resolution image for the first portion and the low-resolution semantic map for the second portion through the model of the neural network to produce a second high-resolution image. Computer-implementiertes Verfahren nach Anspruch 6, wobei das zweite Bild und das zweite hochaufgelöste Bild in einer Sequenz von Bildern enthalten sind, welche, wenn sie aufeinanderfolgend auf einer Anzeigevorrichtung dargestellt werden, einen Zoomeffekt von dem zweiten Bild zu dem ersten Abschnitt des hochaufgelösten Bildes bereitstellen, wenn er als das zweite hochaufgelöste Bild dargestellt wird.Computer-implemented method according to Claim 6 wherein the second image and the second high-resolution image are contained in a sequence of images which, when sequentially displayed on a display device, provide a zoom effect from the second image to the first portion of the high-resolution image, if it is the second high-resolution image Picture is shown. Computer-implementiertes Verfahren nach einem der vorhergehenden Ansprüche, wobei das zweite Bild ein hochaufgelöstes Bild und das erste Bild ein niedrigaufgelöstes Bild ist.The computer implemented method of any one of the preceding claims, wherein the second image is a high resolution image and the first image is a low resolution image. Computer-implementiertes Verfahren nach einem der vorhergehenden Ansprüche, darüber hinaus umfassend Trainieren des Modells des neuronalen Netzes mittels eines Trainingsdatensatzes, welcher Paare von niedrigaufgelösten Bildern und niedrigaufgelösten semantischen Karten aufweist, welche Ground-Truth-Paaren von hochaufgelösten Bildern und hochaufgelösten semantischen Karten zugeordnet sind.A computer-implemented method according to any one of the preceding claims, further comprising training the model of the neural network using a training data set comprising pairs of low-resolution images and low-resolution semantic maps associated with ground-truth pairs of high-resolution images and high-resolution semantic maps. Computer-implementiertes Verfahren nach einem der vorhergehenden Ansprüche, darüber hinaus umfassend Trainieren des Modells des neuronalen Netzes mittels eines Bilddiskriminators, welcher konfiguriert ist, um das zweite Bild abhängig von einer semantischen Karte gemäß Ground Truth, welche mit einer vollständigen Version des ersten Bildes korrespondiert, auszuwerten.The computer-implemented method of claim 1, further comprising training the model of the neural network using an image discriminator configured to image the second image according to a ground truth map corresponding to a full version of the first image. evaluate. Computer-implementiertes Verfahren nach einem der vorhergehenden Ansprüche, darüber hinaus umfassend: Empfangen eines Keyframe-Bildes; und Erzeugen mindestens eines zusätzlichen Bildes in einer Sequenz von Bildern zwischen dem zweiten Bild und dem Keyframe-Bild.A computer-implemented method according to any one of the preceding claims, further comprising: Receiving a keyframe image; and Generating at least one additional image in a sequence of images between the second image and the keyframe image. Computer-implementiertes Verfahren nach einem der vorhergehenden Ansprüche, darüber hinaus umfassend Verarbeiten des ersten Bildes und der ersten semantischen Karte durch das Modell des neuronalen Netzes, um ein drittes Bild zu erstellen, welches zusätzliche halluzinierte Bilddaten aufweist, die eine vollständige Version des ersten Bildes repräsentieren, wobei das dritte Bild bei einem Vergleich mit dem zweiten Bild unterschiedlich ist.The computer-implemented method of any preceding claim, further comprising processing the first image and the first semantic map by the model of the neural network to create a third image having additional hallucinated image data representing a complete version of the first image wherein the third image differs in comparison with the second image. Computer-implementiertes Verfahren nach einem der vorhergehenden Ansprüche, wobei die halluzinierten Bilddaten außerhalb eines Gesichtsfelds sind, welches dem ersten Bild zugeordnet ist.A computer-implemented method according to any one of the preceding claims, wherein the hallucinated image data is outside of a field of view associated with the first image. System umfassend: ein Modell eines neuronalen Netzes, welches konfiguriert ist, um: ein erstes Bild zu empfangen, bei welchem ein Abschnitt von Bilddaten fehlt; eine erste semantische Karte zu empfangen, welche mit dem ersten Bild korrespondiert und bei welcher ein Abschnitt von semantischen Daten fehlt; und das erste Bild und die erste semantische Karte zu verarbeiten, um ein zweites Bild zu erstellen, welches halluzinierte Bilddaten aufweist, die eine vollständige Version des ersten Bildes repräsentieren.System comprising: a model of a neural network configured to: receive a first image in which a portion of image data is missing; receive a first semantic map that corresponds to the first image and that lacks a portion of semantic data; and process the first image and the first semantic map to create a second image having hallucinated image data representing a complete version of the first image. System nach Anspruch 14, wobei das Modell des neuronalen Netzes darüber hinaus konfiguriert ist, um das erste Bild und die erste semantische Karte zu verarbeiten, um eine zweite semantische Karte zu erstellen, welche halluzinierte semantische Daten aufweist, die mit dem zweiten Bild korrespondieren.System after Claim 14 wherein the model of the neural network is further configured to process the first image and the first semantic map to create a second semantic map having hallucinated semantic data corresponding to the second image. System nach Anspruch 14 oder 15, wobei das zweite Bild ein hochaufgelöstes Bild und das erste Bild ein niedrigaufgelöstes Bild ist.System after Claim 14 or 15 wherein the second image is a high resolution image and the first image is a low resolution image. System nach einem der Ansprüche 14 bis 16, wobei das Modell des neuronalen Netzes mittels eines Trainingsdatensatzes trainiert wird, welcher Paare von niedrigaufgelösten Bildern und niedrigaufgelösten semantischen Karten aufweist, die Ground-Truth-Paaren von hochaufgelösten Bildern und hochaufgelösten semantischen Karten zugeordnet sind. System according to one of Claims 14 to 16 wherein the model of the neural network is trained by means of a training data set comprising pairs of low-resolution images and low-resolution semantic maps associated with ground-truth pairs of high-resolution images and high-resolution semantic maps. System nach einem der Ansprüche 14 bis 17, wobei das Modell des neuronalen Netzes darüber hinaus konfiguriert ist, um das erste Bild und die erste semantische Karte zu verarbeiten, um ein drittes Bild zu erstellen, welches zusätzliche halluzinierte Bilddaten aufweist, die eine vollständige Version des ersten Bildes repräsentieren, wobei das dritte Bild bei einem Vergleich mit dem zweiten Bild unterschiedlich ist.System according to one of Claims 14 to 17 wherein the model of the neural network is further configured to process the first image and the first semantic map to create a third image having additional hallucinated image data representing a complete version of the first image, the third image is different when compared with the second image. System nach einem der Ansprüche 14 bis 18, wobei die halluzinierten Bilddaten außerhalb eines Gesichtsfelds sind, welches dem ersten Bild zugeordnet ist.System according to one of Claims 14 to 18 wherein the hallucinated image data is outside of a field of view associated with the first image. Nicht flüchtige von einem Computer lesbare auf einem Medium gespeicherte Computeranweisungen, welche, wenn sie durch einen oder mehrere Prozessoren ausgeführt werden, bewirken, dass der eine oder die mehreren Prozessoren die Schritte ausführen von: Bereitstellen eines ersten Bildes, bei welchem ein Abschnitt von Bilddaten fehlt, einem Modell eines neuronalen Netzes; Bereitstellen einer ersten semantischen Karte, welche mit dem ersten Bild korrespondiert und bei welcher ein Abschnitt von semantischen Daten fehlt, dem Modell des neuronalen Netzes; und Verarbeiten des ersten Bildes und der ersten semantischen Karte durch das Modell des neuronalen Netzes, um ein zweites Bild zu erstellen, welches halluzinierte Bilddaten aufweist, die eine vollständige Version des ersten Bildes repräsentieren.Non-transitory computer-readable computer instructions stored on a medium which, when executed by one or more processors, cause the one or more processors to perform the steps of: Providing a first image lacking a portion of image data, a model of a neural network; Providing a first semantic map that corresponds to the first image and that lacks a portion of semantic data, the model of the neural network; and Processing the first image and the first semantic map through the model of the neural network to create a second image having hallucinated image data representing a complete version of the first image. Nicht flüchtige von einem Computer lesbare auf einem Medium gespeicherte Computeranweisungen, welche, wenn sie durch einen oder mehrere Prozessoren ausgeführt werden, bewirken, dass der eine oder die mehreren Prozessoren die Schritte von einem Verfahren nach einem der Ansprüche 1 bis 13 ausführen.Non-transitory computer readable computer instructions stored on a medium which, when executed by one or more processors, cause the one or more processors to perform the steps of a method according to any one of Claims 1 to 13 To run.
DE102019112595.2A 2018-05-16 2019-05-14 GUIDED HALLUCATION FOR MISSING PICTURE CONTENT USING A NEURONAL NETWORK Pending DE102019112595A1 (en)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201862672499P 2018-05-16 2018-05-16
US62/672,499 2018-05-16
US16/353,195 2019-03-14
US16/353,195 US10922793B2 (en) 2018-05-16 2019-03-14 Guided hallucination for missing image content using a neural network

Publications (1)

Publication Number Publication Date
DE102019112595A1 true DE102019112595A1 (en) 2019-11-21

Family

ID=68419809

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102019112595.2A Pending DE102019112595A1 (en) 2018-05-16 2019-05-14 GUIDED HALLUCATION FOR MISSING PICTURE CONTENT USING A NEURONAL NETWORK

Country Status (1)

Country Link
DE (1) DE102019112595A1 (en)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111932458A (en) * 2020-08-10 2020-11-13 韶鼎人工智能科技有限公司 Image information extraction and generation method based on inter-region attention mechanism
CN112053362A (en) * 2020-07-14 2020-12-08 北京百度网讯科技有限公司 Image segmentation method and device, electronic equipment and storage medium
CN112669240A (en) * 2021-01-22 2021-04-16 深圳市格灵人工智能与机器人研究院有限公司 High-definition image restoration method and device, electronic equipment and storage medium

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112053362A (en) * 2020-07-14 2020-12-08 北京百度网讯科技有限公司 Image segmentation method and device, electronic equipment and storage medium
CN112053362B (en) * 2020-07-14 2024-02-06 北京百度网讯科技有限公司 Image segmentation method, device, electronic equipment and storage medium
CN111932458A (en) * 2020-08-10 2020-11-13 韶鼎人工智能科技有限公司 Image information extraction and generation method based on inter-region attention mechanism
CN111932458B (en) * 2020-08-10 2024-01-23 韶鼎人工智能科技有限公司 Image information extraction and generation method based on inter-region attention mechanism
CN112669240A (en) * 2021-01-22 2021-04-16 深圳市格灵人工智能与机器人研究院有限公司 High-definition image restoration method and device, electronic equipment and storage medium
CN112669240B (en) * 2021-01-22 2024-05-10 深圳市格灵人工智能与机器人研究院有限公司 High-definition image restoration method and device, electronic equipment and storage medium

Similar Documents

Publication Publication Date Title
US10922793B2 (en) Guided hallucination for missing image content using a neural network
DE102018117813A1 (en) Timely data reconstruction with an external recurrent neural network
DE102018108324A1 (en) System and method for estimating an optical flow
DE102018126670A1 (en) Progressive modification of generative adversative neural networks
DE102019102279A1 (en) Generation of synthetic images for training a neuronal network model
DE102019130889A1 (en) ESTIMATE THE DEPTH OF A VIDEO DATA STREAM TAKEN BY A MONOCULAR RGB CAMERA
DE102018121282A1 (en) DIFFERENTIAL RENDERING PIPELINE FOR INVERSE GRAPHICS
DE102018130924A1 (en) Systems and methods for dynamic facial analysis using a recurrent neural network
DE102018132069A1 (en) Equivariant landmark transformation for landmark localization
DE102019130702A1 (en) STYLE-BASED ARCHITECTURE FOR GENERATIVE NEURONAL NETWORKS
DE102019106123A1 (en) Three-dimensional (3D) pose estimation from the side of a monocular camera
DE102021119726A1 (en) THREE-DIMENSIONAL OBJECT RECONSTRUCTION FROM A VIDEO
DE102017124573A1 (en) SYSTEMS AND METHOD FOR CRITING NEURONAL NETWORKS FOR AN OPERATIONAL EFFICIENT CONCLUSION
DE102019102009A1 (en) REDUCING NOISE DURING RENDERING THROUGH PARALLEL PATH SPACE FILTERING USING HASHING
DE102018009315A1 (en) Deep learning method for separating reflection and transmission images that are visible on a semi-reflective surface in a computer image of a real world scene
DE102019128750A1 (en) REDUCING THE LEVEL OF DETAILS OF A POLYGON NETWORK TO REDUCE THE COMPLEXITY OF A PICTURED GEOMETRY WITHIN A SCENE
DE102021121109A1 (en) RECOVERY OF THREE-DIMENSIONAL MODELS FROM TWO-DIMENSIONAL IMAGES
DE102021105249A1 (en) MICROTRAINING FOR ITERATIVE REFINEMENT OF A NEURAL NETWORK WITH FEW ADAPTATIONS
DE102019130311A1 (en) TRANSPOSED WEAK MATRIX MULTIPLICATED WITH DENSE MATRIX FOR TRAINING NEURONAL NETWORKS
DE102019106996A1 (en) PRESENTING A NEURONAL NETWORK USING PATHS INSIDE THE NETWORK TO IMPROVE THE PERFORMANCE OF THE NEURONAL NETWORK
DE102018128592A1 (en) Generating an image using a map representing different classes of pixels
DE102019103319A1 (en) STOCHASTIC ROUNDING OF NUMBER VALUES
DE102020108526A1 (en) ADAPTIVE PIXEL SCAN ORDER FOR DENSE RENDERING
DE102019134020A1 (en) DECOMPRESSION TECHNIQUES FOR THE PROCESSING OF COMPRESSED DATA SUITABLE FOR ARTIFICIAL NEURAL NETWORKS
DE112019001978T5 (en) IMPROVING THE REALISM OF SCENES WITH WATER SURFACES DURING RENDERING

Legal Events

Date Code Title Description
R012 Request for examination validly filed