DE102019101845A1 - Photorealistic image stylization using a neural network model - Google Patents

Photorealistic image stylization using a neural network model Download PDF

Info

Publication number
DE102019101845A1
DE102019101845A1 DE102019101845.5A DE102019101845A DE102019101845A1 DE 102019101845 A1 DE102019101845 A1 DE 102019101845A1 DE 102019101845 A DE102019101845 A DE 102019101845A DE 102019101845 A1 DE102019101845 A1 DE 102019101845A1
Authority
DE
Germany
Prior art keywords
photorealistic
image
style
stylized
content
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.)
Granted
Application number
DE102019101845.5A
Other languages
German (de)
Other versions
DE102019101845B4 (en
Inventor
Yijun Li
Ming-Yu Liu
Ming-Hsuan Yang
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/246,375 external-priority patent/US10872399B2/en
Application filed by Nvidia Corp filed Critical Nvidia Corp
Publication of DE102019101845A1 publication Critical patent/DE102019101845A1/en
Application granted granted Critical
Publication of DE102019101845B4 publication Critical patent/DE102019101845B4/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T11/002D [Two Dimensional] image generation
    • G06T11/60Editing figures and text; Combining figures or text

Landscapes

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

Abstract

Eine photorealistische Bildstilisierung betrifft das Transferieren eines Stils eines Referenzphotos an ein Inhaltsphoto mit der Einschränkung, dass das stilisierte Photo photorealistisch bleiben sollte. Beispiele von Stilen umfassen Jahreszeiten (Sommer, Winter usw.), Wetter (sonnig, regnerisch, neblig usw.), Ausleuchtung (Tageszeit, Nachtzeit usw.). Ein photorealistischer Bildstilisierungsprozess umfasst einen Stilisierungsschritt und einen Glättungsschritt. Der Stilisierungsschritt transferiert den Stil des Referenzphotos an das Inhaltsphoto. Ein Photostiltransfer-Neuronal-Netzwerkmodell empfängt ein photorealistisches Inhaltsbild und ein photorealistisches Stilbild und erzeugt ein stilisiertes photorealistisches Zwischenbild, das die Inhalte des gemäß dem Stilbild modifizierten Inhaltsbild umfasst. Eine Glättungsfunktion empfängt das stilisierte photorealistische Zwischenbild und Pixelähnlichkeitsdaten und erzeugt das stilisierte photorealistische Bild, das räumlich konsistente Stilisierungen sicherstellt.Photorealistic image stylization involves transferring a style of a reference photograph to a content photograph, with the restriction that the stylized photograph should remain photorealistic. Examples of styles include seasons (summer, winter, etc.), weather (sunny, rainy, fog, etc.), illumination (time of day, night time, etc.). A photorealistic image styling process includes a stylization step and a smoothing step. The styling step transfers the style of the reference photo to the content photo. A photostimulation-neuronal network model receives a photorealistic content image and a photorealistic style image and produces a stylized photorealistic intermediate image comprising the contents of the style image modified content image. A smoothing function receives the stylized photorealistic intermediate image and pixel similarity data, creating the stylized photorealistic image that ensures spatially consistent stylization.

Description

TECHNISCHES GEBIETTECHNICAL AREA

Die vorliegende Offenbarung betrifft photorealistische Bilder und insbesondere das Transferieren eines Stils eines Referenzphotos an ein Inhaltsphoto, um ein photorealistisches Bild zu erzeugen.The present disclosure relates to photorealistic images and, more particularly, to transferring a style of a reference photograph to a content photograph to produce a photorealistic image.

HINTERGRUNDBACKGROUND

Photorealistische Bildstilisierung betrifft das Transferieren eines Stils eines Referenzphotos an ein Inhaltsphoto mit der Einschränkung, dass das stilisierte Photo photorealistisch bleiben sollte. Beispiele von Stilen umfassen Jahreszeiten (Sommer, Winter usw.), Wetter (sonnig, regnerisch, neblig usw.), Ausleuchtung (Tageszeit, Nachtzeit usw.). Künstlerische Stilisierungstechniken, die Bilder in Gemälde umwandeln, ohne Photorealismus zu bewahren, führen häufig strukturelle Artefakte und Verzerrungen ein, wenn sie zur photorealistischen Bildstilisierung verwendet werden. Herkömmliche photorealistische Bildstilisierungstechniken neigen dazu, räumlich inkonsistente Stilisierungen mit bemerkenswerten Artefakten zu erzeugen. Es gibt es einen Bedarf, sich diesen Problemen und/oder anderen Problemen zu widmen, die dem Stand der Technik zugeordnet sind.Photorealistic image stylization involves transferring a style of a reference photograph to a content photograph, with the restriction that the stylized photograph should remain photorealistic. Examples of styles include seasons (summer, winter, etc.), weather (sunny, rainy, fog, etc.), illumination (time of day, night time, etc.). Artistic stylization techniques that transform images into paintings without preserving photorealism often introduce structural artifacts and distortions when used for photorealistic image stylization. Conventional photorealistic image styling techniques tend to create spatially inconsistent stylizations with notable artifacts. There is a need to address these problems and / or other problems associated with the prior art.

ZUSAMMENFASSUNGSUMMARY

Eine photorealistische Bildstilisierungstechnik umfasst einen Stilisierungsschritt und einen Glättungsschritt. Während des Stilisierungsschritts den Stil des Referenzphotos an das Inhaltsphoto transferiert, gewährleistet der Glättungsschritt räumlich konsistente Stilisierungen. Jeder der Schritte weist eine Lösung in geschlossener Form auf und kann effizient berechnet werden. Der Stilisierungsschritt basiert auf einer Aufhellungs- und Farbgebungstransformation (whitening and coloring transform; WCT) und der Glättungsschritt basiert auf einem vielfältigen Rangordnungsalgorithmus. Der Stilisierungsschritt und der Glättungsschritt sind unabhängig und können jeweils mit anderen Glättungs- und Stilisierungstechniken verwendet werden.A photorealistic image styling technique includes a stylization step and a smoothing step. During the stylization step, transferring the style of the reference photo to the content photo, the smoothing step ensures spatially consistent styling. Each of the steps has a solution in closed form and can be calculated efficiently. The stylization step is based on a whitening and coloring transform (WCT) and the smoothing step is based on a manifold ranking algorithm. The stylization step and the smoothing step are independent and can each be used with other smoothing and styling techniques.

Ein Verfahren, ein computerlesbares Medium und ein System werden zum Durchführen der Bildstilisierung offenbart. Ein photorealistisches Inhaltsbild und ein photorealistisches Stilbild werden von einer Max-Pooling-Schicht eines Codiererabschnitts eines Photostiltransfer-Neuronalen-Netzwerkmodells verarbeitet, um Ortsdaten zu erzeugen, die einen Ort innerhalb einer Merkmalsabbildung eines Maximalwerts kennzeichnen, der von der Max-Pooling-Schicht ausgegeben wird. Eine Ausgabe des Codiererabschnitts wird von einer Zerstreuungs-Schicht eines Decodiererabschnitts des Photostiltransfer-Neuronalen-Netzwerkmodell basierend auf den Ortsdaten verarbeitet, um ein stilisiertes photorealistische Bild zu erzeugen, das die Inhalte des photorealistischen Inhaltsbilds umfasst, das gemäß dem photorealistischen Stilbild modifiziert wird.A method, a computer-readable medium and a system are disclosed for performing image stylization. A photorealistic content image and a photorealistic style image are processed by a max-pooling layer of a coder portion of a photostable transfer neural network model to generate location data that identifies a location within a feature map of a maximum value output from the max-pooling layer , An output of the encoder section is processed by a dispersing layer of a decoder section of the phototransport neural network model based on the location data to produce a stylized photorealistic image comprising the contents of the photorealistic content image modified according to the photorealistic style image.

Figurenlistelist of figures

  • 1A veranschaulicht ein Blockdiagramm eines Photostiltransfer-Neuronalen-Netzwerkmodells gemäß einer Ausführungsform. 1A FIG. 12 illustrates a block diagram of a photo-style transfer neural network model according to one embodiment. FIG.
  • 1B veranschaulicht ein photorealistisches Stilbild, ein photorealistisches Inhaltsbild und ein stilisiertes photorealistisches Bild gemäß einer Ausführungsform. 1B illustrates a photorealistic style image, a photorealistic content image, and a stylized photorealistic image according to one embodiment.
  • 1C veranschaulicht ein Ablaufdiagramm eines Verfahrens zum Stilisieren eines photorealistischen Bildes gemäß einer Ausführungsform. 1C FIG. 12 illustrates a flowchart of a method of styling a photorealistic image according to one embodiment.
  • 1D veranschaulicht das stilisierte photorealistische Bild und ein geglättetes stilisiertes photorealistisches Bild gemäß einer Ausführungsform. 1D illustrates the stylized photorealistic image and a smoothed stylized photorealistic image according to one embodiment.
  • 1E veranschaulicht ein Blockdiagramm eines Photostiltransfersystems gemäß einer Ausführungsform. 1E FIG. 12 illustrates a block diagram of a photo-transfer system according to an embodiment. FIG.
  • 1F veranschaulicht ein Ablaufdiagramm eines Verfahrens zum Erzeugen eines geglätteten stilisierten photorealistischen Bildes gemäß einer Ausführungsform. 1F FIG. 12 illustrates a flowchart of a method for generating a smoothed stylized photorealistic image according to one embodiment.
  • 1G veranschaulicht ein Ablaufdiagramm eines anderen Verfahrens zum Erzeugen eines geglätteten stilisierten photorealistischen Bildes gemäß einer Ausführungsform. 1G FIG. 12 illustrates a flowchart of another method for generating a smoothed stylized photorealistic image according to one embodiment.
  • 2A veranschaulicht ein Blockdiagramm eines anderen Photostiltransfersystems gemäß einer Ausführungsform. 2A FIG. 12 illustrates a block diagram of another photo-transfer system according to an embodiment. FIG.
  • 2B veranschaulicht ein Ablaufdiagramm eines Verfahrens zum Erzeugen eines geglätteten stilisierten photorealistischen Bildes unter Verwendung des Photostiltransfersystems von 2A gemäß einer Ausführungsform. 2 B FIG. 12 illustrates a flowchart of a method of producing a smoothed stylized photorealistic image using the photo-resist transfer system of FIG 2A according to one embodiment.
  • 2C veranschaulicht jeweils ein Stilbild, ein Inhaltsbild und entsprechende Stilsegmentierungsdaten und Inhaltssegmentierungsdaten gemäß einer Ausführungsform. 2C Figure 11 illustrates a style image, a content image, and corresponding style segmentation data and content segmentation data, respectively, according to an embodiment.
  • 2D veranschaulicht ein Ablaufdiagramm eines Verfahrens zum Erzeugen eines geglätteten stilisierten photorealistischen Bildes unter Verwendung von Segmentierungsdaten gemäß einer Ausführungsform. 2D FIG. 12 illustrates a flow chart of a method of generating a smoothed stylized photorealistic image using segmentation data in accordance with one embodiment.
  • 3 veranschaulicht eine Parallelverarbeitungseinheit gemäß einer Ausführungsform. 3 illustrates a parallel processing unit according to an embodiment.
  • 4A veranschaulicht einen allgemeinen VerarbeitungsCluster innerhalb der Parallelverarbeitungseinheit von 3 gemäß einer Ausführungsform. 4A illustrates a general processing cluster within the Parallel processing unit of 3 according to one embodiment.
  • 4B veranschaulicht eine Speicher-Partitions-Einheit von 3 gemäß einer Ausführungsform. 4B illustrates a memory partition unit of 3 according to one embodiment.
  • 5A veranschaulicht den Streaming-Multiprozessor von 4A gemäß einer Ausführungsform. 5A illustrates the streaming multiprocessor of 4A according to one embodiment.
  • 5B ist ein Konzeptdiagramm eines Verarbeitungssystems, das unter Verwendung der PPU von 3 implementiert wird, gemäß einer Ausführungsform. 5B FIG. 4 is a conceptual diagram of a processing system using the PPU of FIG 3 is implemented, according to one embodiment.
  • 5C veranschaulicht ein beispielhaftes System, bei dem die verschiedene Architektur und/oder Funktionalität der verschiedenen vorherigen Ausführungsformen implementiert werden kann. 5C FIG. 12 illustrates an exemplary system in which the various architecture and / or functionality of the various previous embodiments may be implemented.

AUSFÜHRLICHE BESCHREIBUNGDETAILED DESCRIPTION

Die photorealistische Bildstilisierung betrifft das Transferieren des Stils eines Referenzphotos an ein Inhaltsphoto mit der Einschränkung, dass das stilisierte Photo photorealistisch bleiben sollte. Obwohl diverse photorealistische Bildstilisierungsverfahren existieren, neigen sie dazu, räumlich inkonsistente Stilisierungen mit bemerkenswerten Artefakten zu erzeugen.Photorealistic image stylization involves transferring the style of a reference photograph to a content photograph with the restriction that the stylized photograph should remain photorealistic. Although various photorealistic image stylization techniques exist, they tend to produce spatially inconsistent stylizations with notable artifacts.

Die photorealistische Bildstilisierung betrifft das Bild-zu-Bild-Übersetzungsproblem, wobei das Ziel ist, zu lernen, ein Bild von einer Domain in eine andere zu übersetzen. Die photorealistische Bildstilisierung erfordert jedoch keinen Trainingsdatensatz von Inhalts- und Stilbildern, um die Übersetzungsfunktion zu lernen. Die photorealistische Bildstilisierung kann als eine spezielle Art von Bild-zu-Bild-Übersetzung betrachtet werden. Die photorealistische Bildstilisierung kann nicht nur verwendet werden, um ein Photo in eine unterschiedliche Domain zu übersetzen (z.B. von Tages- in Nachtzeit), sondern ebenfalls den Stil (z.B. Ausmaß von Dunkelheit) eines spezifischen Referenzbildes an das Inhaltsbild zu transferieren.Photorealistic image styling concerns the picture-to-picture translation problem, the goal being to learn to translate an image from one domain to another. However, photorealistic image stylization does not require a training record of content and style images to learn the translation function. Photorealistic image stylization may be considered as a special type of image-to-image translation. Photorealistic image stylization not only can be used to translate a photo into a different domain (e.g., from daytime to nighttime), but also to transfer the style (e.g., extent of darkness) of a specific reference image to the content image.

In einer Ausführungsform umfasst die hier beschriebene photorealistische Bildstilisierungstechnik einen Stilisierungsschritt und einen Glättungsschritt. Der Stilisierungsschritt transferiert den Stil des Referenzphotos an das Inhaltsphoto und der Glättungsschritt gewährleistet räumlich konsistente Stilisierungen. Jeder der Schritte weist eine Lösung in geschlossener Form auf und kann effizient berechnet werden. Im Kontext der folgenden Beschreibung bedeutet eine Lösung in geschlossener Form, dass die Lösung in einer festen Anzahl von Operationen, einschließlich Faltungen, max-pooling, Aufhellung, usw., erhalten werden kann. Der Stilisierungsschritt basiert auf der Aufhellungs- und Farbgebungstransformation (WCT) und der Glättungsschritt basiert auf einem vielfältigen Rangordnungsalgorithmus. Der Stilisierungsschritt und der Glättungsschritt sind unabhängig und können jeweils mit anderen Glättungs- und Stilisierungstechniken verwendet werden. Die photorealistische Bildstilisierungstechnik erzeugt photorealistische stilisierte Bilder schneller als herkömmliche Techniken und während des Prüfens wurden die photorealistischen stilisierten Bilder von menschlichen Testpersonen im Vergleich mit photorealistischen Bildern, die unter Verwendung herkömmlichen Techniken erzeugt wurden, mehr bevorzugt.In one embodiment, the photorealistic image stylization technique described herein includes a stylization step and a smoothing step. The styling step transfers the style of the reference photo to the content photograph and the smoothing step ensures spatially consistent stylizations. Each of the steps has a solution in closed form and can be calculated efficiently. In the context of the following description, a closed-loop solution means that the solution can be obtained in a fixed number of operations, including convolutions, max-pooling, lightening, and so forth. The stylization step is based on the Brightening and Coloring Transformation (WCT), and the smoothing step is based on a multiple ranking algorithm. The stylization step and the smoothing step are independent and can each be used with other smoothing and styling techniques. The photorealistic image styling technique produces photorealistic stylized images faster than conventional techniques, and during testing, photorealistic stylized images of human subjects were more preferred than photorealistic images produced using conventional techniques.

1A veranschaulicht ein Blockdiagramm eines Photostiltransfer-Neuronalen-Netzwerkmodells 110 gemäß einer Ausführungsform. Das Photostiltransfer-Neuronal-Netzwerkmodell 110 umfasst zwei Codierer 165, zwei Merkmalsprojektionsmodule, PC und PS , und einen Decodierer 170. Die beiden Projektionsfunktionsmodule, PC und PS , werden zwischen dem Codierer 165 und Decodierer 170 eingesetzt. Obwohl das Photostiltransfer-Neuronale-Netzwerkmodell 110 im Kontext von Verarbeitungseinheiten beschrieben wird, kann einer oder mehrere der Codierer, Decodierer, PC und PS , von einem Programm, kundenspezifischen Schaltungen oder durch eine Kombination von kundenspezifischen Schaltungen und einem Programm durchgeführt werden. Beispielsweise kann das Photostiltransfer-Neuronale-Netzwerkmodell 110 von einer GPU (Graphikverarbeitungseinheit), einer CPU (zentrale Verarbeitungseinheit) oder einem beliebigen Prozessor implementiert werden, der imstande ist, Schichten eines Neuronalen-Netzwerks zu implementieren. In einer Ausführungsform ist die Parallelverarbeitungseinheit (PPU) 300 von 3 konfiguriert, um das Photostiltransfer-Neuronale-Netzwerkmodell 110 zu implementieren. Des Weiteren verstehen Fachleute, dass jedes System, das die Operationen des Photostiltransfer-Neuronalen-Netzwerkmodell 110 durchführt, innerhalb des Umfangs und Wesens von Ausführungsformen der vorliegenden Offenbarung ist. 1A illustrates a block diagram of a photo-style transfer neural network model 110 according to one embodiment. The photo-style transfer neuronal network model 110 includes two encoders 165 , two feature projection modules, P C and P S , and a decoder 170 , The two projection function modules, P C and P S , be between the encoder 165 and decoder 170 used. Although the photo-transfer neuronal network model 110 in the context of processing units, one or more of the encoders, decoders, P C and P S , be carried out by a program, custom circuits or by a combination of custom circuits and a program. For example, the photo-transfer-neuronal network model 110 can be implemented by a GPU (graphics processing unit), a CPU (central processing unit) or any processor capable of implementing layers of a neural network. In one embodiment, the parallel processing unit (PPU) is 300 from 3 configured to the Photostiltransfer neural network model 110 to implement. Furthermore, professionals understand that any system that performs the operations of the Photostiltransfer neural network model 110 is within the scope and spirit of embodiments of the present disclosure.

Das Photostiltransfer-Neuronale-Netzwerkmodell 110 empfängt ein photorealistisches Inhaltsbild Ic und ein photorealistisches Stilbild und erzeugt ein stilisiertes photorealistisches Bild Y, das den Inhalt des Inhaltsbild umfasst, das gemäß dem Stilbild modifiziert wird. Die Photostiltransfer-Algorithmus kann ausgedrückt werden als Y = F 1 ( I C ,  I S ) .

Figure DE102019101845A1_0001
The photostable transfer-neuronal network model 110 receives a photorealistic content image I c and a photorealistic style image, and generates a stylized photorealistic image Y comprising the content of the content image modified according to the style image. The photo-style transfer algorithm can be expressed as Y = F 1 ( I C . I S ) ,
Figure DE102019101845A1_0001

Die Projektionsfunktionsmodule, PC und PS , führen jeweils eine Projektion basierend auf Merkmalen (Parameter) durch, die von jeweiligen Codierern 165, nämlich HC und HS , empfangen werdenThe projection function modules, P C and P S , each perform a projection based on features (parameters) provided by respective encoders 165 , namely H C and H S to be received

Veranschaulichendere Information wird nun hinsichtlich verschiedener optionaler Architekturen und Merkmalen dargelegt, mit denen das vorhergehende Rahmenwerk gemäß den Wünschen des Benutzers implementiert werden kann. Es sei nachdrücklich bemerkt, dass die folgende Information für veranschaulichende Zwecke dargelegt wird und nicht in irgendeiner Art und Weise als beschränkend ausgelegt werden sollte. Jedes der folgenden Merkmale kann optional mit oder ohne den Ausschluss von anderen beschriebenen Merkmalen aufgenommen werden. More illustrative information will now be set forth with respect to various optional architectures and features with which the previous framework may be implemented according to the wishes of the user. It should be emphasized that the following information is presented for illustrative purposes and should not be construed as limiting in any way. Each of the following features may optionally be included with or without the exclusion of other described features.

1B veranschaulicht ein Stilbild, ein Inhaltsbild und ein stilisiertes photorealistisches Bild gemäß einer Ausführungsform. Das photorealistische Stilbild wird in den Codierer 165 eingegeben und das photorealistische Inhaltsbild Ic wird in den zweiten Codierer 165 eingegeben. Das photorealistische Stilbild und das photorealistische Inhaltsbild Ic werden von dem Photostiltransfer-Neuronalen-Netzwerkmodell 110 verarbeitet, um das stilisierte photorealistische Bild Y zu erzeugen. Das Cloud-Muster in dem photorealistische Inhaltsbild wird in dem stilisierten photorealistischen Bild beibehalten, während eine blaue Farbe des Himmels und die grüne Farbe der Landschaft in dem photorealistische Stilbild in dem stilisierten photorealistischen Bild erscheinen - die Farbe des Himmels und der Landschaftsbereiche wird im Vergleich mit dem photorealistischen Inhaltsbild geändert. Die Gestalt der Straße in dem stilisierten photorealistischen Bild ist konsistent mit der Straße in dem photorealistischen Inhaltsbild, während die Farbe geändert wird, um der Straße in dem photorealistischen Stilbild ähnlich zu sein. Zusätzlich zu dem Transferieren von Farbe kann das Photostiltransfer-Neuronale-Netzwerkmodell 110 ebenfalls konfiguriert sein, um Muster, die in dem photorealistischen Inhaltsbild enthalten sind, wie beispielsweise eine Wolke, Schnee, Regen und dergleichen, in dem stilisierten photorealistischen Bild zu synthetisieren, um mit dem Inhalt des photorealistischen Inhaltsbildes konsistent zu sein. 1B FIG. 12 illustrates a style image, a content image, and a stylized photorealistic image according to one embodiment. The photorealistic style image is in the encoder 165 entered and the photorealistic content image I c is in the second encoder 165 entered. The photorealistic style image and the photorealistic content image I c are from the Photostiltransfer neural network model 110 processed to the stylized photorealistic image Y to create. The cloud pattern in the photorealistic content image is retained in the stylized photorealistic image, while a blue color of the sky and the green color of the landscape appear in the photorealistic style image in the stylized photorealistic image - the color of the sky and landscape areas is compared with changed the photorealistic content image. The shape of the street in the stylized photorealistic image is consistent with the street in the photorealistic content image, while the color is changed to resemble the street in the photorealistic style image. In addition to transferring color, the photostrip-transfer neuronal network model 110 may also be configured to synthesize patterns contained in the photorealistic content image, such as a cloud, snow, rain, and the like, in the stylized photorealistic image to be consistent with the content of the photorealistic content image.

Die Stilisierung wird als ein Bildrekonstruktionsproblem mit Merkmalsprojektionen formuliert. Mit Rückbezug auf 1A bilden der Codierer 165 und der Decodierer 170 einen Auto-Codierer, der einen Codierer 165 umfasst, der mit dem Decodierer 170 (ohne den zweiten Codierer und Projektionsmodulen PC und PS ) zur allgemeinen Bildrekonstruktion direkt gekoppelt ist. In einer Ausführungsform implementiert der Codierer 165 ein vortrainiertes Neuronale-Faltungsnetzwerk VGG-19 (die Gewichte werden festgehalten) und der Decodierer 170 wird zum Rekonstruieren von Eingabebildern trainiert, die dem Codierer 165 bereitgestellt werden. In einer Ausführungsform ist der Decodierer 170 symmetrisch zu dem Codierer 165. In einer Ausführungsform wird der Decodierer 170 durch Minimieren der Summe des L2 Rekonstruktionsverlustes und Wahrnehmungsverlustes trainiert.Stylization is formulated as an image reconstruction problem with feature projections. With reference to 1A form the encoder 165 and the decoder 170 a car coder that has an encoder 165 includes that with the decoder 170 (without the second encoder and projection modules P C and P S ) is directly coupled for general image reconstruction. In one embodiment, the encoder implements 165 a pre-trained neural folding network VGG- 19 (the weights are recorded) and the decoder 170 is trained to reconstruct input images corresponding to the encoder 165 to be provided. In one embodiment, the decoder is 170 symmetric to the encoder 165 , In one embodiment, the decoder becomes 170 by minimizing the sum of the L 2 Reconstruction loss and loss of perception trained.

Sobald der Auto-Codierer trainiert ist, werden ein zweiter Codierer 165 und die Projektionsmodule Pc und Ps bei dem Netzengpass zwischen den Codierern 165 und dem Decodierer 170 eingesetzt, wie in 1A gezeigt, um eine Stilisierung unter Verwendung der Aufhellungs- und Farbgebungstransformation durchzuführen, die jeweils von den Projektionsmodulen, PC und PS , durchgeführt wird. Der zweite Codierer 165 ist konfiguriert, um die gleichen Gewichte wie der vortrainierte Codierer 165 zu verwenden. In einer Ausführungsform (nicht gezeigt) wird der zweite Codierer 165 weggelassen und ein einziger Codierer 165 verwendet, um IC zu verarbeiten und ist seriell anstatt parallel.Once the auto-coder is trained, become a second encoder 165 and the projection modules P c and P s at the network bottleneck between the encoders 165 and the decoder 170 used as in 1A shown to perform stylization using the whitening and coloring transformation, each from the projection modules, P C and P S , is carried out. The second encoder 165 is configured to have the same weights as the pre-trained encoder 165 to use. In one embodiment (not shown), the second encoder becomes 165 omitted and a single encoder 165 used to I C to process and is serial rather than parallel.

Die Schlüsselidee hinter der Aufhellungs- und Farbgebungstransformation ist, Merkmalskorrelationen des Inhaltsbildes mit jenen des Stilbildes über die beiden Projektionen direkt anzupassen. Im Einzelnen extrahiert(extrahieren) der(die) Codierer 165 (ε) zuerst die vektorisierten VGG-Merkmale für das photorealistische Inhaltsbild IC und das photorealistische Stilbild, um jeweils HC = ε(IC) und HS = ε(IS) zu erzeugen, und das Inhaltsmerkmal HC wird transformiert über H CS = P S P C H C

Figure DE102019101845A1_0002
wobei P C = E C Λ C 1 2 E C T  und P S = E S Λ S 1 2 E S T .
Figure DE102019101845A1_0003
Hier sind ΛC und ΛS jeweils die Diagonalmatrizen mit den Eigenwerten der Kovarianzmatrix H C H C T  und H S H S T .
Figure DE102019101845A1_0004
Die Matrizen EC und ES sind jeweils die entsprechenden orthonormalen Matrizen der Eigenvektoren. Nach der Transformation stimmen die Korrelationen von transformierten Merkmalen mit denen der Stilmerkmale, d.h., H C H CS T = H S H S T ,
Figure DE102019101845A1_0005
überein. Schließlich wird das stilisierte Bild durch direktes Zuführen der transformierten Merkmalsabbildung HCS in den Decodierer 170 ( D ) : Y = D ( H CS )
Figure DE102019101845A1_0006
erhalten.The key idea behind the whitening and coloring transformation is to directly adjust feature correlations of the content image with those of the style image across the two projections. Specifically, the encoder (s) extract (extract) 165 (ε) first the vectorized VGG features for the photorealistic content image I C and the photorealistic style image to respectively produce H C = ε (I C ) and H S = ε (I S ), and the content feature H C is transformed via H CS = P S P C H C
Figure DE102019101845A1_0002
in which P C = e C Λ C - 1 2 e C T and P S = e S Λ S - 1 2 e S T ,
Figure DE102019101845A1_0003
Here are Λ C and Λ S in each case the diagonal matrices with the eigenvalues of the covariance matrix H C H C T and H S H S T ,
Figure DE102019101845A1_0004
The matrices E C and E S are respectively the corresponding orthonormal matrices of the eigenvectors. After transformation, the correlations of transformed features are consistent with those of the style features, ie H C H CS T = H S H S T .
Figure DE102019101845A1_0005
match. Finally, the stylized image is rendered by directly feeding the transformed feature map H CS in the decoder 170 ( D ) : Y = D ( H CS )
Figure DE102019101845A1_0006
receive.

Eine herkömmliche Aufhellungs- und Farbgebungstransformation (WCT) bringt eine gute Leistung für die künstlerische Bildstilisierung. Die herkömmliche WCT erzeugt jedoch strukturelle Artefakte (z.B. Verzerrungen an Objektgrenzen) für photorealistische Bildstilisierung. Die WCT, als Transferieren bezeichnet, implementiert durch das Photostiltransfer-Neuronale-Netzwerkmodell 110, ist ausgestaltet, um die strukturellen Artefakte zu unterdrücken.A traditional whitening and coloring transformation (WCT) performs well for artistic picture stylization. However, conventional WCT generates structural artifacts (eg, object boundary distortion) for photorealistic image stylization. The WCT, referred to as transfer, implemented by the photostrip-transfer neuronal network model 110 , is designed to suppress structural artifacts.

Die Ausgestaltung des Photostiltransfer-Neuronalen-Netzwerkmodells 110 wird durch die Beobachtung motiviert, dass die Max-Pooling-Operation in einem Codiererabschnitt der herkömmlichen WCT räumliche Information in Merkmalsabbildungen verringert, die innerhalb des Codiererabschnitts verarbeitet werden. Der herkömmliche Decodiererabschnitt der herkömmlichen WCT verwendet Upsampling-Schichten, um die räumlichen Auflösungen der Merkmalsabbildungen innerhalb des Decodiererabschnitts zu vergrößern. Einfaches Upsampling von Merkmalsabbildungen in dem Decodiererabschnitt scheitert, ausführliche Strukturen des Eingabebildes wiederzugewinnen, die verloren gehen, wenn die Max-Pooling-Operation im Codiererabschnitt der herkömmlichen WCT durchgeführt wird.The design of the Photostile Transfer Neural Network Model 110 is motivated by the observation that the max-pooling operation in an encoder section of the conventional WCT reduces spatial information into feature maps that are processed within the encoder section. The conventional decoder section of the conventional WCT uses upsampling layers to increase the spatial resolutions of the feature maps within the decoder section. Simple upsampling of feature maps in the decoder section fails to recover detailed structures of the input image that are lost when the max-pooling operation is performed in the encoder section of the conventional WCT.

Daher wird, im Gegensatz zu der herkömmlichen WCT für die durch das Photostiltransfer-Neuronale-Netzwerkmodell 110 implementierte photoWCT, die verlorene räumliche Information von dem Codierer 165 an den Decodierer 170 als Ortsdaten weitergeleitet, um das Rekonstruieren der feinen Einzelheiten zu erleichtern. Jede Verarbeitungsschicht des Codierers 165 umfasst eine oder mehrere Faltungsschichten 105, eine Max-Pooling-Schicht 115 und eine Max-Pooling-Ortsschicht 118. In einer Ausführungsform werden lediglich die Ortsdaten für das photorealistische Inhaltsbild von dem Codierer 165 an den Decodierer 170 weitergeleitet und die Max-Pooling-Schichten 118 werden von dem zweiten Codierer 165 weggelassen. In einer Ausführungsform wird HC und HS von einer endgültigen Faltungsschicht 105 des/der Codierer 165 erzeugt. Jede Verarbeitungsschicht des Decodierers 170 umfasst eine oder mehrere Faltungsschichten 125 und eine Zerstreuungs-Schicht 120. In einer Ausführungsform wird HCS von einer ersten Faltungsschicht 125 des Decodierers 170 empfangen. Um räumliche Information zu bewahren, ersetzt die PhotoWCT, die durch das Photostiltransfer-Neuronale-Netzwerkmodell 110 implementiert wird, ebenfalls Upsampling-Schichten in der herkömmliche WCT mit den Zeurstreuungsschichten 120. Die PhotoWCT-Funktion wird formuliert als Y = F 1 ( I C , I S ) = D ¯ ( P S P C H C ) ,

Figure DE102019101845A1_0007
wobei D ¯
Figure DE102019101845A1_0008
der Decodierer 170 ist, der die Zerstreuungs-Schichten enthält 120 und für die Bildrekonstruktion trainiert ist.Therefore, in contrast to the conventional WCT for the by the photostriplex neuronal network model 110 implemented photoWCT, the lost spatial information from the encoder 165 to the decoder 170 forwarded as location data to facilitate reconstructing the fine details. Each processing layer of the encoder 165 comprises one or more folding layers 105 , a max-pooling layer 115 and a max pooling layer 118 , In one embodiment, only the location data for the photorealistic content image from the encoder 165 to the decoder 170 forwarded and the max-pooling layers 118 are from the second encoder 165 omitted. In one embodiment H C and H S from a final convolutional layer 105 of the encoder (s) 165 generated. Each processing layer of the decoder 170 comprises one or more folding layers 125 and a diverging layer 120 , In one embodiment H CS from a first convolutional layer 125 of the decoder 170 receive. To preserve spatial information, the PhotoWCT replaced by the Photostiltransfer neural network model 110 are also upsampled layers in the conventional WCT with the Zeur scattering layers 120 , The PhotoWCT function is formulated as Y = F 1 ( I C . I S ) = D ¯ ( P S P C H C ) .
Figure DE102019101845A1_0007
in which D ¯
Figure DE102019101845A1_0008
the decoder 170 is that contains the divergent layers 120 and trained for image reconstruction.

Die Zerstreuungs-Schichten 120 im Decodierer 170 werden zusammen mit den von den Max-Pooling-Ortsschichten 118 erzeugten Ortsdaten verwendet, um das stilisierte photorealistische Bild aufzubauen. In einer Ausführungsform sind die Ortsdaten eine Max-Pooling-Maske, welche aufzeichnet, wo das Maximum über jede Max-Pooling-Region in der entsprechenden Max-Pooling-Schicht 115 getragen wird. In einer Ausführungsform ist die Max-Pooling-Maske ein einziges Bit für jedes Merkmal, wobei ein Bit für den Maximalwert in jeder Max-Pooling-Region gesetzt wird.The divergent layers 120 in the decoder 170 be along with those from the max pooling layer 118 generated location data used to build the stylized photorealistic image. In one embodiment, the location data is a max-pooling mask that records where the maximum is above each max-pooling region in the corresponding max-pooling layer 115 will be carried. In one embodiment, the max pooling mask is a single bit for each feature, with one bit set for the maximum value in each max pooling region.

1C veranschaulicht ein Ablaufdiagramm eines Verfahrens 130 zum Stilisieren eines photorealistischen Bildes gemäß einer Ausführungsform. Obwohl das Verfahren 130 im Kontext einer Verarbeitungseinheit beschrieben wird, kann das Verfahren 130 ebenfalls von einem Programm,
kundenspezifischen Schaltungen oder von einer Kombination von kundenspezifischen Schaltungen und ein Programm durchgeführt werden. Beispielsweise kann das Verfahren 130 durch eine GPU (Graphikverarbeitungseinheit), eine CPU (zentrale Verarbeitungseinheit) oder einen beliebigen Prozessor ausgeführt werden, der imstande ist, ein Neuronales-Netzwerkmodell zu implementieren. Des Weiteren werden Fachleute verstehen, dass jedes System, welches das Verfahren 130 durchführt, innerhalb des Umfangs und Wesens von Ausführungsformen der vorliegenden Offenbarung ist.
1C illustrates a flowchart of a method 130 for styling a photorealistic image according to an embodiment. Although the procedure 130 in the context of a processing unit, the method may 130 also from a program,
customer-specific circuits or by a combination of custom circuits and a program. For example, the method 130 by a GPU (graphic processing unit), a CPU (central processing unit), or any processor capable of implementing a neural network model. Furthermore, those skilled in the art will understand that every system that uses the method 130 is within the scope and spirit of embodiments of the present disclosure.

Bei Schritt 135 verarbeitet eine Max-Pooling-Schicht 115 des Codierers 165 innerhalb des Photostiltransfer-Neuronalen-Netzwerkmodells 110 ein photorealistisches Inhaltsbild und ein photorealistisches Stilbild, um die Ortsdaten zu erzeugen, die einen Ort innerhalb einer Merkmalsabbildung eines Maximalwerts kennzeichnen, der durch die Max-Pooling-Schicht 115 ausgegeben wird. In einer Ausführungsform werden die Ortsdaten für jede Schicht in dem Codierer 165 einer entsprechenden Schicht in dem Decodierer 170 bereitgestellt, wie in 1A gezeigt.At step 135 processes a max pooling layer 115 of the encoder 165 within the photostable transfer neural network model 110 a photorealistic content image and a photorealistic style image to generate the location data that identifies a location within a feature map of a maximum value that is determined by the max-pooling layer 115 is issued. In one embodiment, the location data for each layer in the encoder 165 a corresponding layer in the decoder 170 provided as in 1A shown.

Bei Schritt 140 verarbeitet eine Zerstreuungs-Schicht 120 des Decodierers 170 des Photostiltransfer-Neuronalen-Netzwerkmodells 110 eine Ausgabe des Codierers 165, um das stilisierte photorealistische Bild Y zu erzeugen. Das stilisierte photorealistische Bild umfasst Inhalte von dem photorealistischen Inhaltsbild, das gemäß dem photorealistische Stilbild modifiziert wird. In einer Ausführungsform werden die Ortsdaten durch Max-Pooling-Ortsschichten 118 erzeugt, die der Max-Pooling-Schicht 115 entsprechen, und werden von der Zerstreuungs-Schicht 120 verwendet, um das stilisierte photorealistische Bild zu erzeugen. In einer Ausführungsform ist die Ausgabe des Codierers 165 mindestens eines von HC und HS . In einer Ausführungsform wird die Ausgabe des Codierers 165 weiterverarbeitet, um HCS dem Decodierer 170 bereitzustellen.At step 140 Processes a dispersion layer 120 of the decoder 170 of the photostable transfer neural network model 110 an output of the encoder 165 to the stylized photorealistic image Y to create. The stylized photorealistic image includes content from the photorealistic content image that is modified according to the photorealistic style image. In one embodiment, the location data is determined by max-pooling location layers 118 generated by the max-pooling layer 115 correspond, and are from the dispersal layer 120 used to create the stylized photorealistic image. In one embodiment, the output of the encoder is 165 at least one of H C and H S , In one embodiment, the output of the encoder 165 further processed to H CS the decoder 170 provide.

Bei einem gegebenen photorealistischen Stilbild Is transferiert das Stiltransfer-Neuronale-Netzwerkmodell 110 ( F 1 )

Figure DE102019101845A1_0009
den Stil an das photorealistische Inhaltsphoto IC , während strukturelle Artefakte in dem ausgegeben stilisierten photorealistischen Bild Y minimiert werden. In einer Ausführungsform wird der Stil unter Verwendung der photoWCT-Stilisierungstransformation transferiert. Obwohl Ic durch das Stiltransfer-Neuronale-Netzwerkmodell 110 originalgetreu stilisiert werden kann, erzeugt das Stiltransfer-Neuronale-Netzwerkmodell 110 manchmal inkonsistente Stilisierungen in semantisch ähnlichen Regionen. Das stilisierte photorealistische Bild in 1B kann weniger wie ein Photo aussehen, wobei semantisch ähnliche Regionen inkonsistent stilisiert werden. Eine photorealistische Glättungsfunktion F 2
Figure DE102019101845A1_0010
kann verwendet werden, um die Artefakte zu verringern oder zu beseitigen. In einer Ausführungsform führt eine zweistufige Abbildungsfunktion Stilisierung und Glättung durch: F 2 ( F 1 ( I C , I S ) , I C ) .
Figure DE102019101845A1_0011
Given a photorealistic style image Is, the style transfer neuronal network model transfers 110 ( F 1 )
Figure DE102019101845A1_0009
the style to the photorealistic content photo I C while minimizing structural artifacts in the output stylized photorealistic image Y. In one embodiment, the style is transferred using the photoWCT stylization transformation. Even though I c by the style transfer neuronal network model 110 true to style, generates the style transfer neural network model 110 sometimes inconsistent stylizations in semantically similar regions. The stylized photorealistic image in 1B may look less like a photo, with semantically similar regions becoming inconsistently stylized. A photorealistic smoothing function F 2
Figure DE102019101845A1_0010
can be used to reduce or eliminate the artifacts. In one embodiment, a two-step mapping function performs stylization and smoothing: F 2 ( F 1 ( I C . I S ) . I C ) ,
Figure DE102019101845A1_0011

In einer Ausführungsform können Pixelaffinitäten verwendet werden, um den Photorealismus während der Glättung des stilisierten photorealistischen Bildes zu verbessern. 1D veranschaulicht das stilisierte photorealistische Bild und ein geglättetes stilisiertes photorealistisches Bild gemäß einer Ausführungsform. Das geglättete stilisierte photorealistische Bild in 1D sieht mehr wie ein Photo als das stilisierte photorealistische Bild aus, weil semantisch ähnliche Regionen basierend auf Pixelaffinitäten für das photorealistische Inhaltsbild geglättet werden.In one embodiment, pixel affinities may be used to enhance photorealism during smoothing of the stylized photorealistic image. 1D illustrates the stylized photorealistic image and a smoothed stylized photorealistic image according to one embodiment. The smoothed stylized photorealistic image in 1D It looks more like a photo than the stylized photorealistic image because semantically similar regions are smoothed based on pixel affinities for the photorealistic content image.

1E veranschaulicht ein Blockdiagramm eines Photostiltransfersystems 100 gemäß einer Ausführungsform. Das Glättungsfunktionsmodul 145 ( F 2 )

Figure DE102019101845A1_0012
empfängt das stilisierte photorealistische Bild Y und das photorealistische Inhaltsbild und erzeugt ein geglättetes stilisiertes photorealistisches Bild. In einer Ausführungsform (wie gezeigt) wird das photorealistische Inhaltsbild von dem Glättungsfunktionsmodul 145 empfangen und wird verwendet, um die Pixelähnlichkeitsdaten zu erzeugen. In einer Ausführungsform empfängt das Glättungsfunktionsmodul 145 die Pixelähnlichkeitsdaten. In einer Ausführungsform sind die Pixelähnlichkeitsdaten eine Affinitätsmatix für das Inhaltsbild. 1E illustrates a block diagram of a photo-transfer system 100 according to one embodiment. The smoothing function module 145 ( F 2 )
Figure DE102019101845A1_0012
receives the stylized photorealistic image Y and the photorealistic content image, creating a smoothed stylized photorealistic image. In one embodiment (as shown), the photorealistic content image becomes the smoothing function module 145 is received and used to generate the pixel similarity data. In one embodiment, the smoothing function module receives 145 the pixel similarity data. In one embodiment, the pixel similarity data is an affinity matrix for the content image.

Die Glättungsoperation weist zwei Ziele auf. Erstens sollten Pixel mit ähnlichem Inhalt in einer lokalen Nachbarschaft auf ähnliche Weise stilisiert werden. Zweitens sollte die Ausgabe von dem stilisierten photorealistischen Bild, das von dem Stiltransfer-Neuronalen-Netzwerkmodell 110 erzeugt wird, nicht erheblich abweichen um die globalen Stilisierungswirkungen beizubehalten. In einer Ausführungsform können alle Pixel als Knoten in einer graphischen Darstellung dargestellt werden und eine Affinitätsmatix W = {wij} ∈ ℝN×N (N ist die Anzahl von Pixel) wird definiert, um Pixelähnlichkeiten zu beschreiben. Ein Glättungsterm und ein Anpassungsterm werden definiert, welche die beiden Ziele in dem folgenden Optimierungsproblem modellieren: argmin r  1/ 2 ( i , j = 1 N w ij r i d ii r j d jj 2 + λ i = 1 N r i y i 2 ) ,

Figure DE102019101845A1_0013
wobei yi die Pixelfarbe in dem stilisierten photorealistischen Bild Y und ri die Pixelfarbe in dem gewünschten geglätteten stilisierten photorealistischen Bild R ist. Die Variable dii = ∑j wij ist das Diagonalelement in der Gradmatrix D von W, d. h. , D = diag {d11 , d22 , ..., dNN } . Gleichung (5) gewährleistet, dass Pixelwerte in dem geglätteten stilisierten photorealistischen Bild Pixelwerten in dem stilisierten photorealistischen Bild Y ähneln (aufgrund des zweiten Terms, basierend auf Unterschieden zwischen ri und yi ), wobei die Ähnlichkeiten jedoch Pixeln in dem photorealistischen Inhaltsbild ähneln (aufgrund des ersten Terms basierend auf Pixelaffinitätswerten wij ).The smoothing operation has two goals. First, similarly populated pixels in a local neighborhood should be stylized in a similar manner. Second, the output of the stylized photorealistic image, that of the style transfer neural network model 110 does not differ significantly to maintain the global styling effects. In one embodiment, all pixels may be represented as nodes in a graphical representation, and an affinity matrix W = {w ij } ε ℝ N x N (N is the number of pixels) is defined to describe pixel similarities. A smoothing term and an adjustment term are defined, which model the two goals in the following optimization problem: argmin r 1/ 2 ( Σ i . j = 1 N w ij r i d ii - r j d jj 2 + λ Σ i = 1 N r i - y i 2 ) .
Figure DE102019101845A1_0013
in which y i the pixel color in the stylized photorealistic image Y and ri is the pixel color in the desired smoothed stylized photorealistic image R. The variable d ii = Σ j w ij is the diagonal element in the degree matrix D of W, ie, D = diag { 11 . d 22 , ..., d NN }. Equation (5) ensures that pixel values in the smoothed stylized photorealistic image are similar to pixel values in the stylized photorealistic image Y (due to the second term based on differences between i and y i However, the similarities are similar to pixels in the photorealistic content image (due to the first term based on pixel affinity values w ij ).

In Gleichung (5) steuert A den Ausgleich der beiden Terme. Ein kleineres A rendert glattere Ergebnisse, während ein größeres A Ergebnisse rendert, die orginalgetreuer zu den Abfragen sind (dem stilisierten photorealistischen Bild Y). Im Allgemeinen hilft ein Verringern von A, Artefakte zu entfernen und folglich Photorealismus zu verbessern. Wenn A zu klein ist, neigt das geglättete stilisierte photorealistische Bild jedoch dazu, übergeglättet zu sein. Um das optimale A zu finden, kann eine Gittersuche durchgeführt werden. In einer Ausführungsform kann die Ähnlichkeit zwischen Begrenzungskarten, die von stilisierten und ursprünglichen Inhaltsbildern extrahiert wurden, als ein Kriterium für die Gittersuche verwendet werden, da Objektgrenzen trotz der Stilisierung die gleichen bleiben sollten.In Equation (5), A controls the equalization of the two terms. A smaller A renders smoother results, while a larger A renders results that are more faithful to the queries (the stylized photorealistic image Y). In general, decreasing A helps to remove artifacts and thus improve photorealism. However, if A is too small, the smoothed stylized photorealistic image tends to be over-smoothed. To find the optimal A, a grid search can be performed. In one embodiment, the similarity between bound maps extracted from stylized and original content images may be used as a criteria for the mesh search, since object boundaries should remain the same despite stylization.

Die in Gleichung (5) gezeigte Formulierung wird durch Graphbasierte Rangordnungsalgorithmen motiviert. In den Rangordnungsalgorithmen ist Y eine binäre Eingabe, wobei jedes Element angibt, ob ein spezifisches Element eine Abfrage ist (yi = 1 falls yi eine Abfrage ist und yi = 0 andernfalls). Die optimale Lösung R ist die Rangordnungswerte aller Elemente basierend auf ihren paarweisen Affinitäten. Y kann als das stilisierte photorealistische Bild eingestellt werden und die optimale Lösung R ist die geglättete Version von Y basierend auf den paarweisen Pixelaffinitäten, was eine konsistente Stilisierung innerhalb semantisch ähnlicher Regionen unterstützt. Das obige Optimierungsproblem ist ein einfaches quadratisches Problem mit einer Lösung in geschlossener Form, die gegeben wird durch R * = ( 1 α ) ( I α S ) 1 Y ,

Figure DE102019101845A1_0014
wobei I die Identitätsmatrix, α = 1 1 + λ
Figure DE102019101845A1_0015
und S die normierte Laplace-Matrix ist, die von Ic , d.h., S = D 1 / 2 WD 1 / 2 N × N
Figure DE102019101845A1_0016
berechnet wird. Da der konstruierte Graph häufig spärlich verbunden ist (d.h., die meisten Elemente in W sind Null), kann die inverse Operation in Gleichung (6) effizient berechnet werden. Mit der Lösung in geschlossener Form kann der Glättungsschritt als eine Funktionsabbildung geschrieben werden, die gegeben wird durch: R * = F 2 ( Y , I C ) = ( 1 α ) ( I α S ) 1 Y .
Figure DE102019101845A1_0017
The formulation shown in equation (5) is motivated by graph-based ranking algorithms. In the ranking algorithms, Y is a binary input, where each element indicates whether a specific element is a query (y i = 1 if y i is a query and y i = 0 otherwise). The optimal solution R is the ranking values of all elements based on their pairwise affinities. Y can be set as the stylized photorealistic image, and the optimal solution R is the smoothed version of Y based on the pairwise pixel affinities, which supports consistent stylization within semantically similar regions. The above optimization problem is a simple quadratic problem with a closed-form solution given by R * = ( 1 - α ) ( I - α S ) - 1 Y .
Figure DE102019101845A1_0014
where I is the identity matrix, α = 1 1 + λ
Figure DE102019101845A1_0015
and S is the normalized Laplace matrix derived from I c , ie, S = D - 1 / 2 WD - 1 / 2 N × N
Figure DE102019101845A1_0016
is calculated. Since the constructed graph is often sparsely connected (ie, most elements in W are zero), the inverse operation in equation (6) can be calculated efficiently. With the solution in closed form, the smoothing step can be written as a function map given by: R * = F 2 ( Y . I C ) = ( 1 - α ) ( I - α S ) - 1 Y ,
Figure DE102019101845A1_0017

In einer Ausführungsform wird die Affinitätsmatix W unter Verwendung des photorealistischen Inhaltsbildes basierend auf einer Annahme eines 8-verbundenen Bildgraphen berechnet. Während verschiedene Auswahlmöglichkeiten von Affinitätsmetriken existieren, ist es populär, die Affinität (als GaussianAff bezeichnet) als w ij = e I i I j 2 σ 2

Figure DE102019101845A1_0018
zu definieren, wobei Ii , Ij die RGB-Werte von benachbarten Pixeln i,j sind und σ ein globaler skalierender Hyperparameter ist. In der Praxis ist es jedoch schwierig, den σ Wert für die Gaußsche Affinität zu bestimmen, die global eine gute Leistung bringt. Es führt häufig entweder zu Überglättung des gesamten stilisierten photorealistischen Bildes oder zum inkonsistenten Stilisieren des photorealistischen Bildes. In einer Ausführungsform wird, um Auswählen eines globalen skalierenden Hyperparameters zu vermeiden, eine Mattierungsaffinität (als MattingAff bezeichnet) verwendet, wobei die Affinität zwischen zwei Pixeln auf Mittelwerten und Varianzen von Pixeln in einem lokalen Fenster basiert. Die Mattierungsaffinität ist imstande, unterschiedliche Regionen simultan gut zu glätten.In one embodiment, the affinity matrix W is calculated using the photorealistic content image based on an assumption of an 8-connected image graph. While various choices of affinity metrics exist, it is popular to rate the affinity (referred to as GaussianAff) as w ij = e - I i - I j 2 σ 2
Figure DE102019101845A1_0018
to define, where I i . I j the RGB values of neighboring pixels are i, j and σ is a global scaling hyperparameter. In practice, however, it is difficult to determine the σ value for the Gaussian affinity that performs well globally. It often results in either over-smoothing the entire stylized photorealistic image or inconsistently styling the photorealistic image. In one embodiment, to avoid selecting a global scaling hyperparameter, a matting affinity (referred to as MattingAff) is used, where the affinity between two pixels is based on averages and variances of pixels in a local window. The matting affinity is capable of smoothing out different regions simultaneously well.

1F veranschaulicht ein Ablaufdiagramm eines Verfahrens 150 zum Erzeugen eines geglätteten stilisierten photorealistischen Bildes gemäß einer Ausführungsform. Obwohl das Verfahren 150 im Kontext einer Verarbeitungseinheit beschrieben wird, kann das Verfahren 150 ebenfalls durch ein Programm, kundenspezifische Schaltungen oder durch eine Kombination von kundenspezifischen Schaltungen und einem Programm durchgeführt werden. Beispielsweise kann das Verfahren 150 durch eine GPU (Graphikverarbeitungseinheit), eine CPU (zentrale Verarbeitungseinheit) oder einen beliebigen Prozessor ausgeführt werden, der imstande ist, ein Neuronales-Netzwerkmodell zu implementieren. Des Weiteren werden Fachleute verstehen, dass jedes System, welches das Verfahren 150 durchführt, innerhalb des Umfangs und Wesens von Ausführungsformen der vorliegenden Offenbarung ist. 1F illustrates a flowchart of a method 150 for producing a smoothed stylized photorealistic image according to an embodiment. Although the procedure 150 in the context of a processing unit, the method may 150 also be performed by a program, custom circuits or by a combination of custom circuits and a program. For example, the method 150 by a GPU (graphic processing unit), a CPU (central processing unit), or any processor capable of implementing a neural network model. Furthermore, those skilled in the art will understand that every system that uses the method 150 is within the scope and spirit of embodiments of the present disclosure.

Schritte 135 und 140 werden abgeschlossen, wie zuvor in Verbindung mit 1C beschrieben. Bei Schritt 155 verarbeitet das Glättungsfunktionsmodul 145 das stilisierte photorealistische Bild, das durch das Photostiltransfer-Neuronale-Netzwerkmodell 110 erzeugt wurde, gemäß Pixelähnlichkeitsdaten für das photorealistische Inhaltsbild, um ein geglättetes stilisiertes photorealistisches Bild zu erzeugen.steps 135 and 140 are completed as previously in conjunction with 1C described. At step 155 processes the smoothing function module 145 the stylized photorealistic image created by the photo-transfer-neuronal network model 110 according to pixel similarity data for the photorealistic content image, to produce a smoothed stylized photorealistic image.

Der Glättungsschritt

Figure DE102019101845A1_0019
kann verwendet werden, um strukturelle Artefakte in stilisierten photorealistischen Bildern zu entfernen, die unter Verwendung der herkömmlichen WCT erzeugt wurden. Das Anwenden des Glättungsschrittes
Figure DE102019101845A1_0019
auf stilisierte photorealistische Bilder, die unter Verwendung des Transferschritt-Glättungsschritts
Figure DE102019101845A1_0020
erzeugt wurden, erzeugt photorealistische Bilder höherer Qualität, weil das photorealistische Inhaltsbild und das herkömmliche WCT-stilisierte, photorealistische Bild aufgrund räumlicher Verzerrungen schwerwiegend fehlausgerichtet sind. Die Fehlausrichtungen können falsche Abfragen in Y für den Glättungsschritt einführen. Der Gebrauch der PhotoWCT, um Verzerrungen vor Glättung zu entfernen, führt zu besserem Photorealismus, während originalgetreue Stilisierung weiterhin beibehalten wird.The smoothing step
Figure DE102019101845A1_0019
can be used to remove structural artifacts in stylized photorealistic images created using conventional WCT. Applying the smoothing step
Figure DE102019101845A1_0019
on stylized photorealistic images using the transfer step smoothing step
Figure DE102019101845A1_0020
have generated higher quality photorealistic images because the photorealistic content image and the traditional WCT stylized photorealistic image are seriously misaligned due to spatial distortions. The misalignments may introduce false queries in Y for the smoothing step. Using PhotoWCT to remove distortion from smoothness results in better photorealism while preserving true-to-life stylization.

1G veranschaulicht ein Ablaufdiagramm eines anderen Verfahrens 160 zum Erzeugen eines geglätteten stilisierten photorealistischen Bildes gemäß einer Ausführungsform. Obwohl das Verfahren 160 im Kontext einer Verarbeitungseinheit beschrieben wird, kann das Verfahren.160 ebenfalls durch ein Programm, kundenspezifische Schaltungen oder durch eine Kombination von kundenspezifischen Schaltungen und einem Programm durchgeführt werden. Beispielsweise kann das Verfahren 160 durch eine GPU (Graphikverarbeitungseinheit), eine CPU (zentrale Verarbeitungseinheit) oder einen beliebigen Prozessor ausgeführt werden, der imstande ist, das Glättungsfunktionsmodul 145 zu implementieren. Des Weiteren werden Fachleute verstehen, dass jedes System, welches das Verfahren 160 durchführt, innerhalb des Umfangs und Wesens von Ausführungsformen der vorliegenden Offenbarung ist. 1G illustrates a flowchart of another method 160 for producing a smoothed stylized photorealistic image according to an embodiment. Although the procedure 160 in the context of a processing unit, the method 160 may also be performed by a program, custom circuits or by a combination of custom circuits and a program. For example, the method 160 by a GPU (graphics processing unit), a CPU (central processing unit), or any processor capable of providing the smoothing function module 145 to implement. Furthermore, those skilled in the art will understand that every system that uses the method 160 is within the scope and spirit of embodiments of the present disclosure.

Bei Schritt 165 empfängt das Glättungsfunktionsmodul 145 ein stilisiertes photorealistische Bild, das durch ein Photostiltransfer-Neuronales-Netzwerkmodell erzeugt wurde, wobei das stilisierte photorealistische Bild Inhalte eines photorealistischen Inhaltsbildes umfasst, das gemäß einem photorealistischen Stilbild modifiziert wird. In einer Ausführungsform ist das Photostiltransfer-Neuronale-Netzwerkmodell das Photostiltransfer-Neuronale-Netzwerkmodell 110, das konfiguriert ist, um die photoWCT zu implementieren. In einer Ausführungsform wird das stilisierte photorealistische Bild unter Verwendung der herkömmlichen WCT erzeugt, um das stilisiertes photorealistische Bild zu erzeugen.At step 165 receives the smoothing function module 145 a stylized photorealistic image created by a photo-transfer neuronal network model, the stylized photorealistic image comprising content of a photorealistic content image modified according to a photorealistic style image. In one embodiment, the photostrip-transfer neuronal network model is the photostrip-transfer neuronal network model 110 that is configured to implement the photoWCT. In one embodiment, the stylized photorealistic image is submerged Using the conventional WCT generated to create the stylized photorealistic image.

Bei Schritt 155 verarbeitet das Glättungsfunktionsmodul 145 das stilisierte photorealistische Bild gemäß Pixelähnlichkeitsdaten für das photorealistische Inhaltsbild, um ein geglättetes stilisiertes photorealistisches Bild zu erzeugen. In einer Ausführungsform umfassen die Pixelähnlichkeitsdaten Pixelaffinitäten, welche die Wahrscheinlichkeit von zwei benachbarten Pixeln messen, die zu dem gleichen Objekt gehören. In einer Ausführungsform kennzeichnen die Pixelähnlichkeitsdaten Pixel in dem stilisierten photorealistischen Bild, die in der Farbe mit benachbarten Pixeln konsistent sind. In einer Ausführungsform verarbeitet das Glättungsfunktionsmodul 145 das photorealistische Inhaltsbild, um die Pixelähnlichkeitsdaten zu erzeugen. In einer Ausführungsform empfängt das Glättungsfunktionsmodul 145 die Pixelähnlichkeitsdaten. In einer Ausführungsform ist die durch das Glättungsfunktionsmodul 145 implementierte Glättungsfunktion eine Lösung in geschlossener Form. In einer Ausführungsform löst das Glättungsfunktionsmodul 145 eine quadratische Funktion mit einer Lösung in geschlossener Form, um das geglättete stilisierte photorealistische Bild zu erzeugen.At step 155 processes the smoothing function module 145 the stylized photorealistic image according to pixel similarity data for the photorealistic content image to produce a smoothed stylized photorealistic image. In one embodiment, the pixel similarity data includes pixel affinities that measure the likelihood of two adjacent pixels that belong to the same object. In one embodiment, the pixel similarity data identifies pixels in the stylized photorealistic image that are consistent in color with neighboring pixels. In one embodiment, the smoothing function module processes 145 the photorealistic content image to produce the pixel similarity data. In one embodiment, the smoothing function module receives 145 the pixel similarity data. In one embodiment, this is by the smoothing function module 145 implemented smoothing function a solution in closed form. In one embodiment, the smoothing function module solves 145 a quadratic function with a closed-form solution to create the smoothed stylized photorealistic image.

2A veranschaulicht ein Blockdiagramm eines anderen Photostiltransfersystems 200 gemäß einer Ausführungsform. Das Photostiltransfersystem 200 ist ein mehrstufiges Stilisierungssystem, das mehrere Photostiltransfer-Neuronale-Netzwerkmodelle 110 umfasst, die jeweils Ortsschichten und Zerstreungsschichten umfassen und das Paar von Merkmalen transformiert (PC , PS ). Obwohl zwei Photostiltransfer-Neuronale-Netzwerkmodelle 110 in 2A gezeigt werden, können mehr als zwei Photostiltransfer-Neuronale-Netzwerkmodelle 110 der Reihe nach konfiguriert werden, um das stilisierte photorealistische Bild zu erzeugen. Ein einziges Glättungsfunktionsmodul 145 wird verwendet, um das endgültige stilisierte photorealistische Bild zu verarbeiten, das durch die mehreren Niveaus der Stilisierung erzeugt wurde, die durch die Folge von Photostiltransfer-Neuronalen-Netzwerkmodellen 110 implementiert wurde. In einer Ausführungsform kann jedes der Photostiltransfer-Neuronalen-Netzwerkmodelle 110 hinsichtlich der Anzahl von Schichten im Codierer 165 und/oder Decodierer 170 variieren. In einer Ausführungsform weist das zweite Photostiltransfer-Neuronale-Netzwerkmodell 110 eine niedrigere Merkmalsdarstellung im Vergleich mit dem ersten Photostiltransfer-Neuronalen-Netzwerkmodell 110 auf. 2A Fig. 12 illustrates a block diagram of another photo-transfer system 200 according to one embodiment. The photo-style transfer system 200 is a multi-level stylization system that utilizes multiple photostrip-transfer neuronal network models 110 comprising respectively local layers and stratification layers and transforming the pair of features ( P C . P S ). Although two photo-style transfer neuronal network models 110 in 2A can be shown more than two photo-type transfer neural network models 110 be sequentially configured to create the stylized photorealistic image. A single smoothing function module 145 is used to process the final stylized photorealistic image created by the multiple levels of stylization created by the sequence of photostrip-transfer neural network models 110 was implemented. In one embodiment, each of the photostenergy transfer neural network models 110 in terms of the number of layers in the encoder 165 and / or decoder 170 vary. In one embodiment, the second photostenergy-transfer neuronal network model 110 a lower feature representation compared to the first phototransport neural network model 110 on.

In einer Ausführungsform sind vier Photostiltransfer-Neuronale-Netzwerkmodelle 110 in Reihe gekoppelt, um das photorealistische Stilbild zu erzeugen, das durch das einzige Glättungsfunktionsmodul 145 geglättet wird. In einer Ausführungsform nimmt die Tiefe des Codierers 165 und Decodierers 170 innerhalb der vier Photostiltransfer-Neuronalen-Netzwerkmodelle 110 von dem ersten der vier Photostiltransfer-Neuronalen-Netzwerkmodelle 110 zu dem vierten der vier Photostiltransfer-Neuronalen-Netzwerkmodelle 110 ab. In einer Ausführungsform werden die vier Decodierer 170 zur Bildrekonstruktion getrennt trainiert und die vier Decodierer 170 nutzen die Gewichte nicht gemeinsam.In one embodiment, four photostrip transfer neuronal network models 110 coupled in series to create the photorealistic style image created by the single smoothing function module 145 is smoothed. In one embodiment, the depth of the encoder decreases 165 and decoder 170 within the four photo-transfer neuronal network models 110 from the first of the four photostenergy-transfer neural network models 110 to the fourth of the four photo-transfer neuronal network models 110 from. In one embodiment, the four decoders 170 trained separately for image reconstruction and the four decoders 170 do not use the weights together.

2B veranschaulicht ein Ablaufdiagramm eines Verfahrens 220 zum Erzeugen eines geglätteten stilisierten photorealistisches Bildes unter Verwendung des Photostiltransfersystems von 2A gemäß einer Ausführungsform. Obwohl das Verfahren 220 im Kontext einer Verarbeitungseinheit beschrieben wird, kann das Verfahren 220 ebenfalls durch ein Programm, kundenspezifische Schaltungen oder durch eine Kombination von kundenspezifischen Schaltungen und einem Programm durchgeführt werden. Beispielsweise kann das Verfahren 220 durch eine GPU (Graphikverarbeitungseinheit), eine CPU (zentrale Verarbeitungseinheit) oder einen beliebigen Prozessor ausgeführt werden, der imstande ist, ein Neuronales-Netzwerkmodell und eine Glättungsfunktion zu implementieren. Des Weiteren werden Fachleute verstehen, dass jedes System, welches das Verfahren 220 durchführt, innerhalb des Umfangs und Wesens von Ausführungsformen der vorliegenden Offenbarung ist. 2 B illustrates a flowchart of a method 220 for producing a smoothed stylized photorealistic image using the photo-resist transfer system of 2A according to one embodiment. Although the procedure 220 in the context of a processing unit, the method may 220 also be performed by a program, custom circuits or by a combination of custom circuits and a program. For example, the method 220 by a GPU (graphic processing unit), a CPU (central processing unit) or any processor capable of implementing a neural network model and a smoothing function. Furthermore, those skilled in the art will understand that every system that uses the method 220 is within the scope and spirit of embodiments of the present disclosure.

Schritte 135 und 140 werden abgeschlossen, wie zuvor in Verbindung mit 1C beschrieben. Das Photostiltransfersystem 200 bestimmt, ob ein anderes Stiltransferniveau das stilisierte photorealistische Bild verarbeiten sollte, und falls ja, werden Schritte 135 und 140 für ein anderes Photostiltransfer-Neuronales-Netzwerkmodell 110 wiederholt. Andernfalls verarbeitet bei Schritt 155 das Glättungsfunktionsmodul 145 das stilisierte photorealistische Bild, das durch das letzte Photostiltransfer-Neuronale-Netzwerkmodell 110 erzeugt wurde, gemäß Pixelähnlichkeitsdaten für das photorealistische Inhaltsbild, um ein geglättetes stilisiertes photorealistisches Bild zu erzeugen.steps 135 and 140 are completed as previously in conjunction with 1C described. The photo-style transfer system 200 determines whether another style transfer level should process the stylized photorealistic image, and if so, becomes steps 135 and 140 for another photo-transfer neuronal network model 110 repeated. Otherwise processed at step 155 the smoothing function module 145 the stylized photorealistic image created by the last photo-transfer neuronal network model 110 according to pixel similarity data for the photorealistic content image, to produce a smoothed stylized photorealistic image.

Das Photostiltransfer-Neuronale-Netzwerk 110 kann konfiguriert sein, um sich semantische Etikettkarten zu Nutze zu machen, um bessere Stilisierungsergebnisse zu erhalten, wenn semantische Etikettkarten für mindestens eines von dem photorealistischen Stilbild und dem photorealistischen Inhaltsbild verfügbar sind. In einer Ausführungsform wird, beim Durchführen der Stilisierung für jedes semantische Etikett, ein Paar von Projektionsmatrizen (PC und PS ) unter Verwendung der Merkmale von den Bildregionen mit dem gleichen Etikett jeweils in den photorealistischen Inhalts- und Stilphotos berechnet. Das Paar wird dann verwendet, um jede der Bildregionen getrennt zu stilisieren. Mit einer semantischen Etikettkarte kann ein Inhalts- und Stilabgleich genauer durchgeführt werden.The Photostile Transfer Neuronal Network 110 can be configured to take advantage of semantic tag cards to obtain better stylization results when semantic tag cards are available for at least one of the photorealistic style image and the photo-realistic content image. In one embodiment, when performing the stylization for each semantic tag, a pair of projection matrices ( P C and P S ) using the features from the image regions with the same label respectively in the photorealistic content and style photos. The pair is then used to stylize each of the image regions separately. With a semantic Label Card, a content and style comparison can be performed more accurately.

2C veranschaulicht ein photorealistisches Stilbild, ein photorealistisches Inhaltsbild und entsprechende Stilsegmentierungsdaten und Inhaltsegmentierungsdaten jeweils gemäß einer Ausführungsform. In einer Ausführungsform werden die Stil- und/oder Inhaltssegmentierungsdaten durch semantische Etikettkarten bereitgestellt. Das photorealistische Stilbild wird in eine erste Stilregion und eine zweite Stilregion segmentiert. Die erste Stilregion in den Stilsegmentierungsdaten kennzeichnet (d.h., ist etikettiert als) die Straße und die zweite Stilregion in den Stilsegmentierungsdaten kennzeichnet die Landschaft. Das photorealistische Inhaltsbild wird in eine erste Inhaltsregion und eine zweite Inhaltsregion segmentiert. Die erste Inhaltsregion in den Inhaltssegmentierungsdaten kennzeichnet die Straße und entspricht der ersten Stilregion. Die zweite Inhaltsregion in den Inhaltssegmentierungsdaten kennzeichnet die Landschaft und entspricht der zweiten Stilregion. Die Stil- und/oder Inhaltssegmentierungsdaten können zusätzliche Regionen, wie beispielsweise den Himmel, definieren. 2C 10 illustrates a photorealistic style image, a photorealistic content image, and corresponding style segmentation data and content segmentation data, respectively, according to one embodiment. In one embodiment, the style and / or content segmentation data is provided by semantic tag cards. The photorealistic style image is segmented into a first style region and a second style region. The first style region in the style segmentation data identifies (ie, is labeled as) the road and the second style region in the style segmentation data identifies the landscape. The photorealistic content image is segmented into a first content region and a second content region. The first content region in the content segmentation data identifies the road and corresponds to the first style region. The second content region in the content segmentation data identifies the landscape and corresponds to the second style region. The style and / or content segmentation data may define additional regions, such as the sky.

In einer Ausführungsform verarbeitet das Photostiltransfer-Neuronale-Netzwerkmodell 110 die erste Stilregion, die durch die Stilsegmentierungsdaten gekennzeichnet wird, und die entsprechende ersten Inhaltsregion der photorealistischen Inhaltsbilder, um eine erste Region des photorealistischen Stilbildes zu erzeugen. In einer Ausführungsform verarbeitet das Photostiltransfer-Neuronale-Netzwerkmodell 110 die erste Inhaltsregion, die durch die Inhaltsegmentierungsdaten gekennzeichnet wird, und eine entsprechende erste Stilregion des photorealistischen Stilbildes, um eine erste Region des photorealistischen Stilbildes zu erzeugen.In one embodiment, the photostrip transfer neuronal network model processes 110 the first style region characterized by the style segmentation data and the corresponding first content region of the photorealistic content images to produce a first region of the photorealistic style image. In one embodiment, the photostrip transfer neuronal network model processes 110 the first content region characterized by the content segmentation data and a corresponding first style region of the photorealistic style image to produce a first region of the photorealistic style image.

Genaue semantische Etikettkarten sind zum Erhalten guter Stilisierungsergebnisse nicht notwendig. Die semantische Etikettkarten werden lediglich zum Finden von übereinstimmenden Bereichen zwischen Inhalts- und Stilbildern verwendet. Die spezifische Klasseninformation wird nicht verwendet. Außerdem muss die semantische Etikettkarte nicht genau entlang Objektgrenzen gezeichnet werden. Der photorealistische Glättungsschritt, der Pixelaffinitäten einsetzt, um eine konsistente Stilisierung zu fördern, kann ungenaue Annotierungen unterbringen. Ein Lockern der Genauigkeit von Grenzen kann die Etikettierungsbelastung für Benutzer sehr verringern.Accurate semantic tag cards are not necessary for obtaining good stylization results. The semantic tag cards are used only to find matching areas between content and style images. The specific class information is not used. In addition, the semantic tag card does not need to be drawn exactly along object boundaries. The photorealistic smoothing step, which uses pixel affinities to promote consistent stylization, can accommodate inaccurate annotations. Relaxing the accuracy of boundaries can greatly reduce the tagging burden on users.

2D veranschaulicht ein Ablaufdiagramm eines Verfahrens 250 zum Erzeugen eines geglätteten stilisierten photorealistischen Bildes unter Verwendung von Segmentierungsdaten gemäß einer Ausführungsform. Obwohl das Verfahren 250 im Kontext einer Verarbeitungseinheit beschrieben wird, kann das Verfahren 250 ebenfalls durch ein Programm, kundenspezifische Schaltungen oder durch eine Kombination von kundenspezifischen Schaltungen und ein Programm durchgeführt werden. Beispielsweise kann das Verfahren 250 durch eine GPU (Graphikverarbeitungseinheit), eine CPU (zentrale Verarbeitungseinheit) oder einen beliebigen Prozessor ausgeführt werden, der imstande ist, ein Neuronales-Netzwerkmodell und eine Glättungsfunktion zu implementieren. Des Weiteren werden Fachleute verstehen, dass jedes System, welches das Verfahren 250 durchführt, innerhalb des Umfangs und Wesens von Ausführungsformen der vorliegenden Offenbarung ist. 2D illustrates a flowchart of a method 250 for generating a smoothed stylized photorealistic image using segmentation data according to one embodiment. Although the procedure 250 in the context of a processing unit, the method may 250 also be performed by a program, custom circuits or by a combination of custom circuits and a program. For example, the method 250 by a GPU (graphic processing unit), a CPU (central processing unit) or any processor capable of implementing a neural network model and a smoothing function. Furthermore, those skilled in the art will understand that every system that uses the method 250 is within the scope and spirit of embodiments of the present disclosure.

Bei Schritt 230 werden Segmentierungsdaten für mindestens eines von dem photorealistischen Stilbild und dem photorealistischen Inhaltsbild empfangen. In einer Ausführungsform umfassen die Segmentierungsdaten eine semantische Etikettkarte. Für eine erste Region des photorealistischen Inhalts- oder Stilbildes, das durch die Segmentierungsdaten gekennzeichnet wird, werden Schritte 135, 140 und 155 abgeschlossen, wie zuvor in Verbindung mit 1C und 1F beschrieben. Bei Schritt 270 bestimmt das Photostiltransfersystem 100 oder 200, ob eine andere, durch die Segmentierungsdaten definierte Region, verarbeitet werden sollte, und falls ja, werden Schritte 135, 140 und 155 für die Region wiederholt. Andernfalls ist die Erzeugung des geglätteten stilisierten photorealistischen Bildes abgeschlossen.At step 230 For example, segmentation data is received for at least one of the photorealistic style image and the photorealistic content image. In one embodiment, the segmentation data comprises a semantic tag card. For a first region of the photorealistic content or style image identified by the segmentation data, steps become 135 . 140 and 155 completed, as previously in conjunction with 1C and 1F described. At step 270 determines the photo-transfer system 100 or 200 whether any other region defined by the segmentation data should be processed, and if so, steps 135 . 140 and 155 repeated for the region. Otherwise, the creation of the smoothed stylized photorealistic image is complete.

Die photorealistische Bildstilisierungstechnik, die durch das Photostiltransfer-Neuronale-Netzwerkmodell 110 implementiert wird, erzeugt stilisierte photorealistische Bilder hoher Qualität, die mit dem photorealistischen Inhaltsbild konsistent sind. Das Bereitstellen von Ortsdaten (Max-Pooling-Masken), die von jeder Max-Pooling-Schicht des Codierers 165 erzeugt werden, an entsprechende Zerstreuungs-Schichten in dem Decodierer 170 gewährleistet, dass feine Einzelheiten des photorealistischen Inhaltsbilds beibehalten werden können. Die photorealistische photoWCT-Bildstilisierungstechnik weist eine Lösung in geschlossener Form auf und kann effizient berechnet werden. Die Glättungsfunktion verbessert den Photorealismus der stilisierten Bilder unter Verwendung von Pixelähnlichkeitsdaten und weist ebenfalls eine Lösung in geschlossener Form zur effizienten Berechnung auf. Die photorealistische Bildstilisierungstechnik und die Glättungsfunktion sind unabhängig und können jeweils mit anderen Glättungs- und Stilisierungstechniken verwendet werden.The photorealistic image styling technique used by the photostrip-transfer neuronal network model 110 is implemented produces high quality stylized photorealistic images that are consistent with the photorealistic content image. Providing location data (max-pooling masks) from each max-pooling layer of the encoder 165 can be generated to corresponding diffusion layers in the decoder 170 ensures that fine detail of the photorealistic content image can be maintained. The photorealistic photoWCT image sizing technique has a solution in closed form and can be calculated efficiently. The smoothing function improves the photorealism of the stylized images using pixel similarity data, and also has a closed-form solution for efficient computation. The photorealistic image styling technique and the smoothing function are independent and each can be used with other smoothing and stylization techniques.

ParallelverarbeitungsarchitekturParallel processing architecture

3 veranschaulicht eine Parallelverarbeitungseinheit (PPU) 300 gemäß einer Ausführungsform. In einer Ausführungsform ist die PPU 300 ein Multi-Threaded-Prozessor bzw. mehrsträngiger Prozessor, der auf einer oder mehreren integrierten Schaltungsvorrichtungen implementiert ist. Die PPU 300 ist eine Latenz-verbergende Architektur, die ausgestaltet ist, um eine große Anzahl von Threads bzw. Strängen parallel zu verarbeiten. Ein Thread bzw. Strang (d.h. ein Ausführungsthread) ist eine Instanziierung eines Satzes von Anweisungen, die konfiguriert sind, um von der PPU 300 ausgeführt zu werden. In einer Ausführungsform ist die PPU 300 eine Graphikverarbeitungseinheit (GPU), die konfiguriert ist, um eine Graphik-Rendering-Pipeline zur Verarbeitung von dreidimensionalen (3D) Graphikdaten zu implementieren, um zweidimensionale (2D) Bilddaten zur Anzeige auf einer Anzeigevorrichtung, wie beispielsweise einer Flüssigkristallanzeige(LCD)-Vorrichtung, zu erzeugen. In anderen Ausführungsformen kann die PPU 300 zum Durchführen von Allzweckberechnungen benutzt werden. Während ein beispielhafter paralleler Prozessor hier für veranschaulichende Zwecke bereitgestellt wird, sei nachdrücklich bemerkt, dass ein derartiger Prozessor lediglich für veranschaulichende Zwecke dargelegt wird und dass ein beliebiger Prozessor benutzt werden kann, um dasselbe zu ergänzen und/oder zu ersetzen. 3 illustrates a parallel processing unit (PPU) 300 according to one embodiment. In one embodiment, the PPU 300 a multi-threaded processor or multi-stranded Processor implemented on one or more integrated circuit devices. The PPU 300 is a latency-concealing architecture designed to process a large number of threads in parallel. A thread (ie, a thread of execution) is an instantiation of a set of instructions configured to by the PPU 300 to be executed. In one embodiment, the PPU 300 a graphics processing unit (GPU) configured to implement a graphics rendering pipeline for processing three-dimensional (3D) graphics data to display two-dimensional (2D) image data for display on a display device such as a liquid crystal display (LCD) device; to create. In other embodiments, the PPU 300 used for performing general purpose calculations. While an exemplary parallel processor is provided herein for illustrative purposes, it should be emphasized that such processor is presented for illustrative purposes only and that any processor may be used to supplement and / or replace the same.

Eine oder mehrere PPUs 300 können konfiguriert sein, um Tausende von HPC(High Performing Computing)-, Datenzentrum- und Maschinenlern-Anwendungen zu beschleunigen. Die PPU 300 kann konfiguriert sein, um zahlreiche Deep-Learning-Systeme und Anwendungen zu beschleunigen, die autonome Fahrzeugplattformen, Deep-Learning, hochgenaue Sprache, Bild- und Texterkennungssysteme, intelligente Videoanalyse, molekulare Simulationen, Wirkstoffentdeckung, Krankheitsdiagnose, Wettervorhersage, Analyse großer Datenmengen, Astronomie, Molekulardynamiksimulation, Finanzmodellierung, Robotertechnik, Fabrikautomation, Sprachübersetzung in Echtzeit, Online-Suchoptimierungen und personalisierte Benutzerempfehlungen und dergleichen umfassen.One or more PPUs 300 can be configured to accelerate thousands of High Performing Computing (HPC), data center, and machine learning applications. The PPU 300 can be configured to accelerate numerous deep-learning systems and applications including autonomous vehicle platforms, deep learning, high-accuracy speech, image and text recognition systems, intelligent video analysis, molecular simulations, drug discovery, disease diagnosis, weather forecasting, large data analytics, astronomy, Molecular dynamics simulation, financial modeling, robotics, factory automation, real-time language translation, online search optimizations and personalized user recommendations, and the like.

Wie in 3 gezeigt, umfasst die PPU 300 eine Eingabe/Ausgabe(E/A)-Einheit 305, eine Frontend-Einheit 315, eine Planereinheit 320, eine Arbeitsverteilungs-Einheit 325, einen Hub 330, eine Kreuzschiene (Xbar) 370, einen oder mehrere allgemeine Verarbeitungscluster (GPCs) 350 und eine oder mehrere Speicher-Partitions-Einheiten 380. Die PPU 300 kann mit einem Host-Prozessor oder anderen PPUs über einen Interconnect des Hochgeschwindigkeits-NVLink 310 verbunden sein. Die PPU 300 kann ebenfalls mit einem Host-Prozessor oder anderen peripheren Vorrichtungen über einen Interconnect 302 verbunden sein. In einer Ausführungsform kann der lokale Speicher eine Anzahl von Direktzugriffsspeicher(DRAM)-Vorrichtungen umfassen. Die DRAM-Vorrichtungen können als ein HBM(Speicher mit hoher Bandbreite)-Subsystem konfiguriert sein, wobei mehrere DRAM-Dies innerhalb 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 planner unit 320 , a work distribution unit 325 , a 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 a host processor or other PPUs via an interconnect of high-speed NVLink 310 be connected. The PPU 300 can also connect to a host processor or other peripheral devices via an interconnect 302 be connected. In one embodiment, the local memory may include a number of random access memory (DRAM) devices. The DRAM devices may be configured as an HBM (high bandwidth memory) subsystem with multiple DRAM dies stacked within each device.

Der Interconnect des NVLink 310 ermöglicht Systemen, eine oder mehrere PPUs 300 zu skalieren und zu umfassen, die mit einer oder mehreren CPUs kombiniert sind, unterstützt Cache-Kohärenz zwischen den PPUs 300 und CPUs sowie CPU-Mastering. Daten und/oder Befehle können mittels des NVLink 310 durch den Hub 330 an/von anderen Einheiten der PPU 300, wie beispielsweise eine oder mehrere Kopiermaschinen, einen Videocodierer, einen Videodecodierer, eine Leistungsverwaltungseinheit usw. (nicht explizit gezeigt) übertragen werden. Das NVLink 310 wird ausführlicher in Verbindung mit 5B beschrieben.The interconnect of NVLink 310 allows systems, one or more PPUs 300 To scale and include that are combined with one or more CPUs supports cache coherence between the PPUs 300 and CPUs as well as CPU mastering. Data and / or commands can be obtained by means of NVLink 310 through the hub 330 to / from other units of the PPU 300 , such as one or more copy machines, a video encoder, a video decoder, a power management unit, etc. (not explicitly shown). The NVLink 310 becomes more in connection with 5B described.

Die E/A-Einheit 305 ist konfiguriert, um Kommunikationen (d.h. Befehle, Daten usw.) von einem Host-Prozessor (nicht gezeigt) über den Interconnect 302 zu übertragen und zu empfangen. Die E/A-Einheit 305 kann mit dem Host-Prozessor direkt über den Interconnect 302 oder durch eine oder mehrere Zwischenvorrichtungen, wie beispielsweise eine Speicherbrücke, kommunizieren. In einer Ausführungsform kann die E/A-Einheit 305 mit einem oder mehreren anderen Prozessoren, wie beispielsweise eine oder mehrere der PPUs, über den Interconnect 302 kommunizieren. In einer Ausführungsformen implementiert die E/A-Einheit 305 eine PCIe(Peripheral Component Interconnect Express)-Schnittstelle für Kommunikationen über einen PCIe-Bus und der Interconnect 302 ist ein PCIe-Bus. In alternativen Ausführungsformen kann die E/A-Einheit 305 andere Typen von wohlbekannten Schnittstellen zum Kommunizieren mit externen Vorrichtungen umfassen.The I / O unit 305 is configured to communicate (ie, commands, data, etc.) from a host processor (not shown) via the interconnect 302 to transmit and receive. The I / O unit 305 can connect to the host processor directly through the interconnect 302 or communicate through one or more intermediate devices, such as a memory bridge. In one embodiment, the I / O unit 305 with one or more other processors, such as one or more of the PPUs, over the interconnect 302 communicate. In one embodiment, the I / O unit implements 305 a PCIe (Peripheral Component Interconnect Express) interface for communications over a PCIe bus and the interconnect 302 is a PCIe bus. In alternative embodiments, the I / O unit 305 other types of well known interfaces for communicating with external devices.

Die E/A-Einheit 305 decodiert Pakete, die über den Interconnect 302 empfangen wurden. In einer Ausführungsform stellen die Pakete Befehle dar, die konfiguriert sind, um die PPU 300 zu veranlassen, verschiedene Operationen durchzuführen. Die E/A-Einheit 305 überträgt die decodierten Befehle an verschiedene andere Einheiten der PPU 300, wie es die Befehle spezifizieren können. Beispielsweise können einige Befehle an die Frontend-Einheit 315 übertragen werden. Andere Befehle können an den Hub 330 oder andere Einheiten der PPU 300, wie beispielsweise eine oder mehrere Kopiermaschinen, einen Video-Codierer, einen Video-Decodierer, eine Leistungsverwaltungseinheit usw. (nicht explizit gezeigt) übertragen werden. Mit anderen Worten ist die E/A-Einheit 305 konfiguriert, um Kommunikationen zwischen und unter den verschiedenen logischen Einheiten der PPU 300 weiterzuleiten.The I / O unit 305 decodes packets over the interconnect 302 were 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 instructions to various other units of the PPU 300 as the commands can specify. For example, some commands can be sent to the frontend unit 315 be transmitted. Other commands can be sent to the hub 330 or other units of the PPU 300 , such as one or more copy machines, a video encoder, a video decoder, a power management unit, etc. (not explicitly shown). In other words, the I / O unit 305 configured to communicate between and among the various logical units of the PPU 300 forward.

In einer Ausführungsform codiert ein Programm, das von dem Host-Prozessor ausgeführt wird, einen Befehlsstrom in einem Puffer, welcher der PPU 300 Arbeitslasten zur Verarbeitung bereitstellt. Eine Arbeitslast kann mehrere Anweisungen und Daten umfassen, die von diesen Anweisungen zu verarbeiten sind. Der Puffer ist eine Region in einem Speicher, der von sowohl dem Host-Prozessor als auch der PPU 300 zugänglich ist (d.h. Lesen/Schreiben). Beispielsweise kann die Host-Schnittstelleneinheit 305 konfiguriert sein, um auf den Puffer in einem Systemspeicher, der mit dem Interconnect 302 verbunden ist, über Speicheranfragen, die über den Interconnect 302 übertragen werden, zuzugreifen. In einer Ausführungsform schreibt der Host-Prozessor den Befehlsstrom in den Puffer und überträgt dann einen Zeiger zu dem Start des Befehlsstroms an die PPU 300. Die Frontend-Einheit 315 empfängt Zeiger auf einen oder mehrere Befehlsströme. Die Frontend-Einheit 315 verwaltet den einen oder mehrere Ströme, liest Befehle von 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 a command stream in a buffer that the PPU 300 Provides workloads for processing. A workload can include multiple statements and data to be processed by these statements. The buffer is a region in memory owned by both the host processor and the PPU 300 is accessible (ie read / write). For example, the host interface unit 305 be configured to access the buffer in a system memory that is connected to the interconnect 302 connected via memory requests over the interconnect 302 be transmitted. In one embodiment, the host processor writes the instruction stream into the buffer and then transmits a pointer to the start 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 the one or more streams, reads commands from the streams, and forwards commands to the various units of the PPU 300 continue.

Die Frontend-Einheit 315 ist mit einer Planereinheit 320 gekoppelt, welche die verschiedenen GPCs 350 konfiguriert, um Aufgaben zu verarbeiten, die durch den einen oder mehrere Ströme definiert sind. Die Planereinheit 320 ist konfiguriert, um Zustandsinformation zu verfolgen, die verschiedene Aufgaben betrifft, die von der Planereinheit 320 verwaltet werden. Der Zustand kann angeben, welchem GPC 350 eine Aufgabe zugewiesen ist, ob die Aufgabe aktiv oder inaktiv ist, ob ein Prioritätsniveau der Aufgabe zugeordnet ist und so weiter. Die Planereinheit 320 verwaltet die Ausführung einer Mehrzahl von Aufgaben auf dem einen oder mehreren GPCs 350.The frontend unit 315 is with a planner unit 320 coupled to the various GPCs 350 configured to process tasks defined by the one or more streams. The planner unit 320 is configured to track state information concerning various tasks performed by the scheduler unit 320 to get managed. The state may indicate which GPC 350 a task is assigned, whether the task is active or inactive, whether a priority level is assigned to the task, and so on. The planner unit 320 manages the execution of a plurality of tasks on the one or more GPCs 350 ,

Die Planereinheit 320 ist mit einer Arbeitsverteilungs-Einheit 325 gekoppelt, die konfiguriert ist, um Aufgaben zur Ausführung auf den GPCs 350 zu versenden. Die Arbeitsverteilungs-Einheit 325 kann eine Anzahl von eingeplanten Aufgaben verfolgen, die von der Planereinheit 320 empfangen werden. In einer Ausführungsform verwaltet die Arbeitsverteilungs-Einheit 325 einen Pool für anhängige Aufgaben und einen Pool für aktive Aufgaben für jeden der GPCs 350. Der Pool für anhängige Aufgaben kann eine Anzahl von Schlitzen (z.B. 32 Schlitze) umfassen, die Aufgaben enthalten, die zugewiesen sind, um von einem bestimmten GPC 350 verarbeitet zu werden. Der Pool für aktive Aufgaben kann eine Anzahl von Schlitzen (z.B. 4 Schlitze) für Aufgaben umfassen, die von den GPCs 350 aktiv verarbeitet werden. Wenn ein GPC 350 die Ausführung einer Aufgabe abschließt, wird diese Aufgabe aus dem Pool für aktive Aufgaben für den GPC 350 geräumt und eine der anderen Aufgaben wird aus dem Pool für anhängige Aufgaben ausgewählt und zur Ausführung auf dem GPC 350 eingeplant. Wenn eine aktive Aufgabe auf dem GPC 350 inaktiv war, wie beispielsweise während darauf gewartet wird, dass eine Datenabhängigkeit behoben wird, dann kann die aktive Aufgabe aus dem GPC 350 geräumt und zu dem Pool für anhängige Aufgaben zurückgeführt werden, während eine weitere Aufgabe in dem Pool für anhängige Aufgaben ausgewählt und zur Ausführung auf dem GPC 350 eingeplant wird.The planner unit 320 is with a work distribution unit 325 coupled, which is configured to perform tasks on the GPCs 350 to send. The work distribution unit 325 can track a number of scheduled tasks performed by the scheduler unit 320 be received. In one embodiment, the work distribution unit manages 325 a pending task pool and an active task pool for each of the GPCs 350 , The pending task pool may include a number of slots (eg 32 slots) containing tasks assigned to a particular GPC 350 to be processed. The active task pool may include a number of slots (eg, 4 slots) for tasks performed by the GPCs 350 actively processed. If a GPC 350 completing the execution of a task, this task is taken from the active task pool for the GPC 350 vacated and one of the other tasks is selected from the pool for pending tasks and to run on the GPC 350 planned. If an active task on the GPC 350 was inactive, such as while waiting for a data dependency to be resolved, then the active task can be taken out of the GPC 350 vacated and returned to the pool for pending tasks, while another task is selected in the pool for pending tasks and to run on the GPC 350 is scheduled.

Die Arbeitsverteilungs-Einheit 325 kommuniziert mit dem einen oder mehreren GPCs 350 über eine Kreuzschiene bzw. XBar 370. Die XBar 370 ist ein Interconnect-Netzwerk, das viele der Einheiten der PPU 300 mit anderen Einheiten der PPU 300 koppelt. Beispielsweise kann die XBar 370 konfiguriert sein, um die Arbeitsverteilungs-Einheit 325 mit einem bestimmten GPC 350 zu koppeln. Obwohl nicht explizit gezeigt, kann eine oder mehrere andere Einheiten der PPU 300 ebenfalls mit der XBar 370 über den Hub 330 verbunden sein.The work distribution unit 325 communicates with the one or more GPCs 350 via a crossbar or XBar 370 , The XBar 370 is an interconnect 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 explicitly shown, one or more other units of PPU 300 also with the XBar 370 over the hub 330 be connected.

Die Aufgaben werden von der Planereinheit 320 verwaltet und an einen GPC 350 durch die Arbeitsverteilungs-Einheit 325 versandt. Der GPC 350 ist konfiguriert, um die Aufgabe zu verarbeiten und Ergebnisse zu erzeugen. Die Ergebnisse können von anderen Aufgaben innerhalb des GPC 350 verbraucht werden, an einen unterschiedlichen GPC 350 über die XBar 370 weitergeleitet oder im Speicher 304 gespeichert werden. Die Ergebnisse können in den Speicher 304 über die Speicher-Partitions-Einheiten 380 geschrieben werden, die eine Speicherschnittstelle zum Lesen und Schreiben von Daten in/von dem Speicher 304 implementieren. In einer Ausführungsform umfasst die PPU 300 eine Anzahl U von Speicher-Partitions-Einheiten 380, die gleich der Anzahl von getrennten und unterschiedlichen Speichervorrichtungen 304 ist, die mit der PPU 300 gekoppelt sind. Eine Speicher-Partitions-Einheit 380 wird nachstehend ausführlicher in Verbindung mit 4B beschrieben.The tasks are performed by the planner unit 320 managed and sent to a GPC 350 through the work distribution unit 325 shipped. The GPC 350 is configured to process the task and generate results. The results may differ from other tasks within the GPC 350 be consumed to a different GPC 350 over the XBar 370 forwarded or in memory 304 get saved. The results can be stored in memory 304 about the storage partition units 380 which is a memory interface for reading and writing data to / from the memory 304 to implement. In one embodiment, the PPU includes 300 a number U of storage partition units 380 equal to the number of separate and different storage devices 304 is that with the PPU 300 are coupled. A storage partition unit 380 will be discussed in more detail below 4B described.

In einer Ausführungsform führt ein Host-Prozessor einen Treiber-Kernel aus, der eine Anwendungsprogrammmier-Schnittstelle (API) implementiert, die einer oder mehreren Anwendungen ermöglicht, die auf dem Host-Prozessor ausgeführt werden, Operationen zur Ausführung auf der PPU 300 einzuplanen. In einer Ausführungsform werden mehrere Rechenanwendungen gleichzeitig von der PPU 300 ausgeführt und die PPU 300 stellt Isolierung, Dienstqualität (QoS) und unabhängige Adressräume für die mehreren Rechenanwendungen bereit. Eine Anwendung kann Anweisungen (d.h. API-Aufrufe) erzeugen, welche den Treiber-Kernel veranlassen, eine oder mehrere Aufgaben zur Ausführung durch die PPU 300 zu erzeugen. Der Treiberkernel gibt Aufgaben an einen oder mehrere Streams aus, die von der PPU 300 verarbeitet werden. Jede Aufgabe kann eine oder mehrere Gruppen von in Beziehung stehender Threads umfassen, die hier als ein Warp bezeichnet werden. In einer Ausführungsform umfasst ein Warp 32 in Beziehung stehende Threads, die parallel ausgeführt werden können. Kooperierende Threads können sich auf eine Mehrzahl von Threads beziehen, die Anweisungen umfassen, um die Aufgabe durchzuführen, und die Daten durch einen gemeinsam benutzten Speicher austauschen können. Threads und kooperierende Threads werden ausführlicher in Verbindung mit 5A beschrieben.In one embodiment, a host processor executes a driver kernel that implements an application programming interface (API) that enables one or more applications executing on the host processor to perform operations on the PPU 300 schedule. 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 spaces for the multiple computing applications. An application may generate instructions (ie, API calls) that cause the driver kernel to perform one or more tasks for execution by the PPU 300 to create. The driver kernel issues tasks to one or more streams that are sent by the PPU 300 are processed. Each task may include one or more groups of related threads, referred to herein as a warp. In one embodiment, a warp 32 related threads that can be executed in parallel. Cooperating threads can affect a plurality of threads which include instructions to perform the task, and to exchange the data by a shared memory. Threads and cooperating threads are discussed in more detail 5A described.

4A veranschaulicht einen GPC 350 der PPU 300 von 3 gemäß einer Ausführungsform. Wie in 4A gezeigt, umfasst jeder GPC 350 eine Anzahl von Hardwareeinheiten zur Verarbeitung von Aufgaben. In einer Ausführungsform umfasst jeder GPC 350 einen Pipeline-Manager 410, eine Vor-Raster-Operationen-Einheit (PROP) 415, eine Raster-Engine 425, eine Arbeitsverteilungs-Kreuzschiene (WDX) 480, eine Speicherverwaltungseinheit (MMU) 490 und einen oder mehrere Datenverarbeitungscluster (DPCs) 420. Es wird anerkannt, dass der GPC 350 von 4A andere Hardwareeinheiten anstelle von oder zusätzlich zu den in 4A gezeigten Einheiten umfassen kann. 4A illustrates a GPC 350 the PPU 300 from 3 according to one embodiment. As in 4A shown, everyone includes GPC 350 a number 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 Matrix (WDX) 480 , a storage management unit (MMU) 490 and one or more data processing clusters (DPCs) 420 , It is recognized that the GPC 350 from 4A other hardware units instead of or in addition to those in 4A may include units shown.

In einer Ausführungsform wird der Betrieb des GPC 350 durch den Pipeline-Manager 410 gesteuert. Der Pipeline-Manager 410 verwaltet die Konfiguration des einen oder mehrerer DPCs 420 zur Verarbeitung von Aufgaben, die dem GPC 350 zugeteilt sind. In einer Ausführungsform kann der Pipeline-Manager 410 mindestens einen des einen oder mehrerer DPCs 420 konfigurieren, um mindestens einen Abschnitt einer Graphik-Rendering-Pipeline zu implementieren. Beispielsweise kann ein DPC 420 konfiguriert sein, um ein Vertex-Shader-Programm auf dem programmierbaren Streaming-Multiprozessor (SM) 440 auszuführen. Der Pipeline-Manager 410 kann ebenfalls konfiguriert sein, um Pakete, die von der Arbeitsverteilungs-Einheit 325 empfangen werden, an die geeigneten logischen Einheiten innerhalb des GPC 350 weiterzuleiten. Beispielsweise können einige Pakete an Festfunktions-Hardwareeinheiten in der PROP 415 und/oder der Raster-Engine 425 weitergeleitet werden, während andere Pakete an die DPCs 420 zur Verarbeitung durch die Primitiven-Engine 435 oder den SM 440 weitergeleitet werden können. In einer Ausführungsform kann der Pipeline-Manager 410 mindestens einen oder mehrere DPCs konfigurieren, um ein Neuronal-Netzwerkmodell 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 processing tasks assigned to the GPC 350 allocated. In one embodiment, the pipeline manager 410 at least one of the one or more DPCs 420 configure to implement at least a portion of a graphics rendering pipeline. For example, a DPC 420 be configured to use a vertex shader program on the programmable streaming multiprocessor (SM) 440 perform. The pipeline manager 410 can also be configured to receive packets from the work distribution unit 325 to the appropriate logical units within the GPC 350 forward. For example, some packages may be attached to hard-function hardware units in the PROP 415 and / or 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 configure at least one or more DPCs to implement a neural network model and / or a compute pipeline.

Die PROP-Einheit 415 ist konfiguriert, um Daten, die von der Raster-Engine 425 und den DPCs 420 erzeugt werden, an eine Raster-Operationen-Einheit (ROP-Einheit) weiterzuleiten, die nachstehend ausführlicher beschrieben wird. Die PROP-Einheit 415 kann ebenfalls konfiguriert sein, um Optimierungen zur Farbenmischung durchzuführen, Pixeldaten zu organisieren, Adressenübersetzungen und dergleichen durchzuführen.The PROP unit 415 is configured to receive data from the raster engine 425 and the DPCs 420 to be forwarded to a raster operations unit (ROP unit), which will be described in more detail below. The PROP unit 415 may also be configured to perform color blending optimizations, organize pixel data, perform address translations, and the like.

Die Raster-Engine 425 umfasst eine Anzahl von Festfunktions-Hardwareeinheiten, die konfiguriert sind, um verschiedene Raster-Operationen durchzuführen. In einer Ausführungsform umfasst die Raster-Engine 425 eine Setup-Engine, eine Grobraster-Engine, eine Aussonderungs-Engine, eine Abschneide-Engine, eine Feinraster-Engine und eine Kachelverschmelzende Engine. Die Setup-Engine empfängt transformierte Vertices und erzeugt Ebenengleichungen, die den geometrischen Primitiven zugeordnet sind, die durch die Vertices definiert werden. Die Ebenengleichungen werden an die Grobraster-Engine übertragen, um Abdeckungsinformation (z.B. eine (x,y)-Abdeckungsmaske für eine Kachel) für die Primitive zu erzeugen. Die Ausgabe der Grobraster-Engine wird an die Aussonderungs-Engine übertragen, wo Fragmente, die der Primitiven zugeordnet sind, die einen z-Test nicht bestehen, ausgesondert und an eine Abschneide-Engine übertragen werden, wo Fragmente, die außerhalb eines Betrachtungsstumpfes liegen, abgeschnitten werden. Diejenigen Fragmente, welche die Abschneidung und Aussonderung überleben, können an eine Feinraster-Engine weitergeben werden, um Attribute für die Pixelfragmente basierend auf den Ebenengleichungen zu erzeugen, die durch die Setup-Engine erzeugt werden. Die Ausgabe der Raster-Engine 425 umfasst Fragmente, die beispielsweise von einem Fragment-Shader zu verarbeiten sind, der innerhalb eines DPC 420 implementiert ist.The raster engine 425 includes a number of hard-function hardware units configured to perform various raster operations. In one embodiment, the raster engine includes 425 a setup engine, a Grobraster engine, a Disposal Engine, a truncation engine, a fine grid engine, and a Tiling Engine. The setup engine receives transformed vertices and generates plane equations associated with the geometric primitives defined by the vertices. The plane equations are passed to the Grobraster engine to generate coverage information (eg, a (x, y) mask for a tile) for the primitives. The output of the coarse grid engine is transferred to the discard engine, where fragments associated with the primitives that do not pass a z-test are discarded and transferred to a clipping engine, where fragments that are out of viewing stub, be cut off. Those fragments that survive the clipping and discarding may be passed to a fine grid engine to generate attributes for the pixel fragments based on the plane equations generated by the setup engine. The output of the raster engine 425 includes fragments to be processed by, for example, a fragment shader within a DPC 420 is implemented.

Jeder DPC 420, der in dem GPC 350 umfasst ist, umfasst einen M-Pipe-Controller (MPC) 430, eine Primitiven-Engine 435 und einen oder mehrere SMs 440. Der MPC 430 steuert den Betrieb des DPC 420, wobei von dem Pipeline-Manager 410 empfangene Pakete an die geeigneten Einheiten im DPC 420 weiterleitet werden. Beispielsweise können einem Vertex zugeordnete Pakete an die Primitiven-Engine 435 weitergeleitet werden, die konfiguriert ist, um der Vertex zugeordnete Vertexattribute von dem Speicher 304 zu holen. Im Gegensatz dazu können einem Shader-Programm zugeordnete Pakete an den SM 440 übertragen werden.Every DPC 420 who is in the GPC 350 includes an 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 , where by the pipeline manager 410 received packets to the appropriate units in the DPC 420 be forwarded. For example, packets associated with a vertex may be sent to the primitive engine 435 which is configured to store vertex attributes associated with the vertex from the memory 304 pick up. In contrast, packets associated with a shader program can be sent to the SM 440 be transmitted.

Der SM 440 umfasst einen programmierbaren Streaming-Prozessor, der konfiguriert ist, um Aufgaben zu verarbeiten, die durch eine Anzahl von Threads dargestellt werden. Jeder SM 440 umfasst mehrere Threads (ist multi-threaded) und ist konfiguriert, um eine Mehrzahl von Threads (z.B. 32 Threads) von einer bestimmten Gruppe von Threads nebenläufig auszuführen. In einer Ausführungsform implementiert der SM 440 eine SIMD(Einzelne-Anweisung, Mehrere-Daten)-Architektur, wobei jeder Thread in einer Gruppe von Threads (d.h. einem Warp) konfiguriert ist, um einen unterschiedlichen Satz von Daten basierend auf dem gleichen Satz von Anweisungen zu verarbeiten. Alle Threads in der Gruppe von Threads führen die gleichen Anweisungen aus. In einer anderen Ausführungsform implementiert der SM 440 eine SIMT(Einzelne Anweisung, Mehrere Threads)-Architektur, wobei jeder Thread in einer Gruppe von Threads konfiguriert ist, um einen unterschiedlichen Satz von Daten basierend auf dem gleichen Satz von Anweisungen zu verarbeiten, wobei jedoch einzelnen Threads in der Gruppe von Threads ermöglicht wird, während der Ausführung zu divergieren. In einer Ausführungsform wird ein Programmzähler, ein Aufrufstapel und ein Ausführungszustand für jeden Warp beibehalten, was eine Nebenläufigkeit zwischen Warps und eine serielle Ausführung innerhalb Warps ermöglicht, wenn Threads innerhalb des Warp divergieren. In einer weiteren Ausführungsform wird ein Programmzähler, ein Aufrufstapel und ein Ausführungszustand für jeden einzelnen Thread beibehalten, was eine gleiche Nebenläufigkeit zwischen allen Threads, innerhalb und zwischen Warps ermöglicht. Wenn der Ausführungszustand für jeden einzelnen Thread beibehalten wird, können Threads, welche die gleichen Anweisungen ausführen, konvergiert und für maximale Effizienz parallel ausgeführt werden. Der SM 440 wird ausführlicher nachstehend in Verbindung mit 5A beschrieben.The SM 440 includes a programmable streaming processor configured to process tasks represented by a number of threads. Every SM 440 includes multiple threads (is multi-threaded) and is configured to concurrently execute a plurality of threads (eg, 32 threads) from a particular group of threads. In one embodiment, the SM implements 440 an SIMD (single-instruction, multi-data) architecture, where each thread in a group of threads (ie, a warp) is configured to process a different set of data based on the same set of instructions. All threads in the group of threads perform the same Instructions. In another embodiment, the SM implements 440 a SIMT (Single Instruction, Multiple Threads) architecture, where each thread in a group of threads is configured to process a different set of data based on the same set of instructions, but allowing individual threads in the group of threads to diverge during execution. In one embodiment, a program counter, a call stack, and an execution state are maintained for each warp, allowing 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 for equal concurrency between all threads, within and between warps. If the execution state is maintained for each thread, threads that execute the same instructions can be converged and executed in parallel for maximum efficiency. The SM 440 will be discussed in more detail below 5A described.

Die MMU 490 stellt eine Schnittstelle zwischen dem GPC 350 und der Speicher-Partitions-Einheit 380 bereit. Die MMU 490 kann eine Übersetzung von virtuellen Adressen in physische Adressen, einen Speicherschutz und eine Arbitrierung von Speicheranfragen bereitstellen. In einer Ausführungsform stellt die MMU 490 einen oder mehrere Adressenübersetzungspuffer (TLBs = translation lookaside buffers) zum Durchführen der Übersetzung von virtuellen Adressen in physische Adressen in dem Speicher 304 bereit.The MMU 490 provides an interface between the GPC 350 and the storage partition unit 380 ready. The MMU 490 can provide translation of virtual addresses into physical addresses, memory protection and arbitration of memory requests. In one embodiment, the MMU 490 one or more translation lookaside buffers (TLBs) for performing the translation of virtual addresses into physical addresses in the memory 304 ready.

4B veranschaulicht eine Speicher-Partitions-Einheit 380 der PPU 300 von 3 gemäß einer Ausführungsform. Wie in 4B gezeigt, umfasst die Speicher-Partitions-Einheit 380 eine Raster-Operationen(ROP)-Einheit 450, einen L2-Cache-Speicher 460 und eine Speicherschnittstelle 470. Die Speicherschnittstelle 470 ist mit dem Speicher 304 gekoppelt. Die Speicherschnittstelle 470 kann 32-, 64-, 128-, 1024-Bit-Datenbusse oder dergleichen für Hochgeschwindigkeits-Datentransfer implementieren. In einer Ausführungsform umfasst die PPU 300 U Speicherschnittstellen 470, eine Speicherschnittstelle 470 pro Paar von Speicher-Partitions-Einheiten 380, wobei jedes Paar von Speicher-Partitions-Einheiten 380 mit einer entsprechenden Speichervorrichtung 304 verbunden ist. Beispielsweise kann die PPU 300 mit bis zu Y Speichervorrichtungen 304, wie beispielsweise Speicherstapel mit hoher Bandbreite oder Graphikdoppeldatenraten, Version 5 SDRAM oder andere Typen von persistenter Speicherung verbunden sein. 4B illustrates a memory partition unit 380 the PPU 300 from 3 according to one embodiment. As in 4B shown includes the memory partition unit 380 a raster operations (ROP) unit 450 , an 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 transfer implement. In one embodiment, the PPU includes 300 U memory interfaces 470 , a storage interface 470 per pair of storage partition units 380 where each pair of memory partition units 380 with a corresponding storage device 304 connected is. For example, the PPU 300 with up to Y storage devices 304 , such as high-bandwidth memory stacks or graphics dual data rates, version 5 SDRAM or other types of persistent storage.

In einer Ausführungsform implementiert die Speicherschnittstelle 470 eine HBM2-Speicherschnittstelle und Y ist gleich einem halben U. In einer Ausführungsform sind die HBM2-Speicherstapel auf der gleichen physischen Packung wie die PPU 300 lokalisiert, die wesentliche Leistungs- und Flächeneinsparungen verglichen mit herkömmlichen GDDR5 SDRAM Systemen bereitstellt. In einer Ausführungsform umfasst jeder HBM2-Stapel vier Speicher-Dies und Y ist gleich 4, wobei der HBM2-Stapel zwei 128-Bit Kanäle pro Die für eine Gesamtzahl von 8 Kanälen und eine Datenbusbreite von 1024 Bit umfasst.In one embodiment, the memory interface implements 470 an HBM2 memory interface and Y equals half a U. In one embodiment, the HBM2 memory stacks are on the same physical package as the PPU 300 which provides significant performance and area savings compared to traditional GDDR5 SDRAM systems. In one embodiment, each HBM2 stack comprises four memory dies and Y is equal to 4, with the HBM2 stack being two 128 -Bit channels per die for a total of 8 channels and a data bus width of 1024 bits.

In einer Ausführungsform unterstützt der Speicher 304 Fehlerkorrekturcode (ECC) mit Einzelfehlerkorrektur und Doppelfehlerdetektion (SECDED), um Daten zu schützen. Der ECC stellt eine höhere Zuverlässigkeit für Rechenanwendungen bereit, die gegen Datenverfälschung empfindlich sind. Zuverlässigkeit ist besonders wichtig in großen Cluster-Rechenumgebungen, wo PPUs 300 sehr große Datensätze verarbeiten und/oder Anwendungen für längere Zeiträume ausführen.In one embodiment, the memory supports 304 Error Correction Code (ECC) with Single Error Correction and Double Error Detection (SECDED) to protect data. The ECC provides greater reliability for computing applications that are sensitive to data corruption. Reliability is especially important in large cluster computing environments where PPUs 300 process very large data sets and / or run applications for longer periods of time.

In einer Ausführungsform implementiert die PPU 300 eine Mehr-Ebenen-Speicherhierarchie. In einer Ausführungsform unterstützt die Speicher-Partitions-Einheit 380 einen vereinheitlichten Speicher, um einen einzigen vereinheitlichten virtuellen Adressraum für den Speicher der CPU und den Speicher der PPU 300 bereitzustellen, der Datenteilung zwischen virtuellen Speichersystemen ermöglicht. In einer Ausführungsform wird die Häufigkeit von Zugriffen durch eine PPU 300 auf einen Speicher, der auf anderen Prozessoren lokalisiert ist, verfolgt, um sicherzustellen, dass Speicherseiten in den physischen Speicher der PPU 300 bewegt werden, die häufiger auf die Seiten zugreift. In einer Ausführungsform unterstützt das NVLink 310 Adressenübersetzungsdienste, die der PPU 300 erlauben, auf Seitentabellen einer CPU direkt zuzugreifen und einen vollen Zugriff auf den CPU-Speicher durch die PPU 300 bereitstellen.In one embodiment, the PPU implements 300 a multi-level memory hierarchy. In one embodiment, the storage partition unit supports 380 a unified memory to a single unified virtual address space for the memory of the CPU and the memory of the PPU 300 to provide data sharing between virtual storage systems. In one embodiment, the frequency of accesses by a PPU 300 to a memory that is located on other processors, tracks to ensure that memory pages in the physical memory of the PPU 300 moving more frequently to the pages. In one embodiment, the NVLink supports 310 Address translation services provided by the PPU 300 allow access to page tables of a CPU directly and full access to the CPU memory through the PPU 300 provide.

In einer Ausführungsform transferieren 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 werden. Die Speicher-Partitions-Einheit 380 kann dann die Seitenfehler bedienen, wobei die Adressen in der Seitentabelle abgebildet werden, nachdem die Kopiermaschine den Transfer durchführen kann. In einem herkömmlichen System ist der Speicher für mehrere Kopiermaschinenoperationen zwischen mehreren Prozessoren gesperrt (d.h. nicht auslagerbar), was den verfügbaren Speicher wesentlich verringert. Mit Hardware-Seiten-Faulting können Adressen an die Kopiermaschinen weitergeleitet werden, ohne sich Sorgen zu machen, ob die Speicherseiten resident sind und das Kopierverfahren transparent ist.In one embodiment, copy machines transfer data between multiple PPUs 300 or between PPUs 300 and CPUs. The copy machines can generate page faults for addresses that are not mapped in the page tables. The storage partition unit 380 can then service the page faults, mapping the addresses in the page table after the copier can complete the transfer. In a conventional system, the memory is disabled (ie, not swappable) for multiple copy machine operations between multiple processors, which significantly reduces available memory. With hardware page faulting, addresses can be forwarded to the copy machines without worrying about whether the pages are resident and the copy process is transparent.

Daten von dem Speicher 304 oder einem anderen Systemspeicher können von der Speicher-Partitions-Einheit 380 geholt und in dem L2-Cache-Speicher 460 gespeichert werden, der Auf-Chip lokalisiert ist und zwischen den verschiedenen GPCs 350 gemeinsam benutzt wird. Wie gezeigt, umfasst jede Speicher-Partitions-Einheit 380 einen Bereich des L2-Cache-Speichers 460, der einer entsprechenden Speichervorrichtung 304 zugeordnet ist. Cache-Speicher niedrigerer Ebene können dann in verschiedenen Einheiten innerhalb der GPCs 350 implementiert werden. Beispielsweise kann jeder der SMs 440 einen L1-Cache-Speicher implementieren. Der L1-Cache-Speicher ist ein privater Speicher, der einem bestimmten SM 440 fest zugeordnet ist. Daten von dem L2-Cache-Speicher 460 können geholt und in jedem der L1-Cache-Speicher zur Verarbeitung in den Funktionseinheiten der SMs 440 gespeichert werden. Der L2-Cache-Speicher 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 memory partition unit 380 and in the L2 cache 460 stored on-chip and between the various GPCs 350 is shared. As shown, each memory partition unit includes 380 a section of the L2 cache 460 that of a corresponding storage device 304 assigned. Lower level caches may then be in different units within the GPCs 350 be implemented. For example, each of the SMs 440 implement an L1 cache. The L1 Cache memory is a private memory that belongs to a specific SM 440 is permanently assigned. Data from the L2 cache 460 can be fetched and stored in each of the L1 cache memory for processing in the functional units of the SMs 440 get saved. The L2 Cache memory 460 is with the memory interface 470 and the XBar 370 coupled.

Die ROP-Einheit 450 führt Graphik-Raster-Operationen durch, welche die Pixelfarbe betreffen, wie beispielsweise Farbenkomprimierung, Pixelmischung und dergleichen. Die ROP-Einheit 450 implementiert ebenfalls Tiefentesten in Verbindung mit der Raster-Engine 425, wobei eine Tiefe für einen Abtastort, der einem Pixelfragment zugeordnet ist, von der Aussonderungs-Engine der Raster-Engine 425 empfangen wird. Die Tiefe wird gegen eine entsprechende Tiefe in einem Tiefenpuffer für einen Abtastort geprüft, der dem Fragment zugeordnet ist. Wenn das Fragment den Tiefentest für den Abtastort besteht, dann aktualisiert die ROP-Einheit 450 den Tiefenpuffer und überträgt ein Ergebnis des Tiefentests an die Raster-Engine 425. Es wird anerkannt, dass sich die Anzahl von Speicher-Partitions-Einheiten 380 von der Anzahl von GPCs 350 unterscheiden kann, und daher kann jede ROP-Einheit 450 mit jedem der GPCs 350 gekoppelt werden. Die ROP-Einheit 450 verfolgt Pakete, die von den unterschiedlichen GPCs 350 empfangen werden, und bestimmt, zu welchem GPC 350 ein durch die ROP-Einheit 450 erzeugtes Ergebnis durch die Xbar 470 weitergeleitet wird. Obwohl die ROP-Einheit 450 innerhalb der Speicher-Partitions-Einheit 380 in 4B umfasst ist, kann die ROP-Einheit 450 außerhalb der Speicher-Partitions-Einheit 380 sein. Beispielsweise kann die ROP-Einheit 450 in dem GPC 350 oder einer anderen Einheit liegen.The ROP unit 450 performs graphics raster operations concerning pixel color, such as color compression, pixel blending, and the like. The ROP unit 450 also implements depth tests in conjunction with the raster engine 425 wherein a depth for a sample location associated with a pixel fragment is provided by the screening engine of the raster engine 425 Will be received. The depth is tested against a corresponding depth in a depth buffer for a sample location associated with the fragment. If the fragment passes the scan sample depth test, then the ROP unit updates 450 the depth buffer and transmits a result of the depth test to the raster engine 425 , It is recognized that the number of memory partition units 380 from the number of GPCs 350 can distinguish, and therefore, any ROP unit 450 with each of the GPCs 350 be coupled. The ROP unit 450 keeps track of packets coming from different GPCs 350 and determines to which GPC 350 one through the ROP unit 450 Result generated by the Xbar 470 is forwarded. Although the ROP unit 450 within the storage partition unit 380 in 4B includes, can the ROP unit 450 outside the storage partition unit 380 his. For example, the ROP unit 450 in the GPC 350 or another unit.

5A veranschaulicht den Streaming-Multiprozessor 440 von 4A gemäß einer Ausführungsform. Wie in 5A gezeigt, umfasst der SM 440 einen Anweisungs-Cache-Speicher 505, eine oder mehrere Planereinheiten 510, eine Registerdatei 520, einen oder mehrere Verarbeitungskerne 550, eine oder mehrere Spezialfunktionseinheiten (SFUs) 552, eine oder mehrere Lade/Speicher-Einheiten (LSUs) 554, ein Interconnect-Netzwerk 580 und einen gemeinsam benutzten L1-Cache-Speicher 570. 5A illustrates the streaming multiprocessor 440 from 4A according to one embodiment. As in 5A shown, the SM includes 440 an instruction cache 505 , one or more scheduler units 510 , a register file 520 , one or more processing cores 550 , one or more special function units (SFUs) 552 , one or more load / store units (LSUs) 554 , an interconnect network 580 and a shared L1 cache 570 ,

Wie oben beschrieben, versendet die Arbeitsverteilungs-Einheit 325 Aufgaben zur Ausführung auf den GPCs 350 der PPU 300. Die Aufgaben werden einem bestimmten DPC 420 innerhalb eines GPC 350 zugeteilt, und wenn die Aufgabe einem Shader-Programm zugeordnet ist, kann die Aufgabe einem SM 440 zugeteilt werden. Die Planereinheit 510 empfängt die Aufgaben von der Arbeitsverteilungs-Einheit 325 und verwaltet die Anweisungs-Planung (instruction scheduling) für einen oder mehrere Thread-Blöcke, die dem SM 440 zugewiesen sind. Die Planereinheit 510 plant Thread-Blöcke zur Ausführung als Warps von parallelen Threads, wobei jeder Thread-Block mindestens einem Warp zugeordnet ist. In einer Ausführungsform führt jeder Warp 32 Threads aus. Die Planereinheit 510 kann eine Mehrzahl von unterschiedlichen Thread-Blöcken verwalten, welche die Warps den unterschiedlichen Thread-Blöcken zuordnet und dann Anweisungen von der Mehrzahl von unterschiedlichen kooperativen Gruppen an die verschiedenen Funktionseinheiten (d.h. Kerne 550, SFUs 552 und LSUs 554) während jedes Taktzyklus versendet.As described above, the work distribution unit ships 325 Tasks to execute on the GPCs 350 the PPU 300 , The tasks become a specific DPC 420 within a GPC 350 and if the task is assigned to a shader program, the task may be assigned to an SM 440 be assigned. The planner unit 510 receives the tasks from the work distribution unit 325 and manages instruction scheduling for one or more thread blocks associated with the SM 440 are assigned. The planner unit 510 schedules thread blocks to execute as warps from parallel threads, with each thread block associated with at least one warp. In one embodiment, each warp performs 32 Threads off. The planner unit 510 may manage a plurality of different thread blocks, which associate the warps with the different thread blocks, and then assign instructions from the plurality of different cooperative groups to the different functional units (ie, cores 550 , SFUs 552 and LSUs 554 ) during each clock cycle.

Cooperative Groups ist ein Programmiermodell zum Organisieren von Gruppen von kommunizierenden Threads, die Entwicklern ermöglicht, die Granularität auszudrücken, bei der Threads kommunizieren, wobei der Ausdruck von reicheren, effizienten Parallelzerlegungen ermöglicht wird. Cooperative-Start-APIs unterstützen die Synchronisierung unter Thread-Blöcken für die Ausführung von parallelen Algorithmen. Herkömmliche Programmiermodelle stellen einen einzigen, einfachen Aufbau zum Synchronisieren von kooperierenden Threads bereit: eine Barriere über alle Threads eines Threadblocks (d.h. die Funktion syncthreads( )). Programmierer würden jedoch häufig gerne Gruppen von Threads bei kleineren als Thread-Block-Granularitäten definieren und innerhalb der definierten Gruppen synchronisieren, um größere Leistung, Gestaltungsflexibilität und Software-Wiederverwendung in der Form von kollektiven gruppenweiten Funktionsschnittstellen zu ermöglichen.Cooperative Groups is a programming model for organizing groups of communicating threads that enables developers to express the granularity at which threads communicate, allowing the expression of richer, more efficient, parallel decompositions. Cooperative launch APIs support synchronization among thread blocks for parallel algorithm execution. Traditional programming models provide a single, simple set up to synchronize cooperating threads: a barrier across all thread block threads (i.e., the syncthreads () function). However, programmers would often like to define groups of threads at smaller than thread block granularities and synchronize within the defined groups to allow for greater performance, design flexibility, and software reuse in the form of collective group-wide functional interfaces.

Cooperative Groups ermöglicht Programmierern, Gruppen von Threads explizit bei Sub-Block(d.h. so klein wie ein einziger Thread)- und Mehr-Block-Granularitäten zu definieren und kollektive Operationen, wie beispielsweise Synchronisierung, an den Threads in einer kooperativen Gruppe durchzuführen. Das Programmiermodell unterstützt eine saubere Zusammensetzung über Softwaregrenzen, so dass Bibliotheken und Hilfsfunktionen innerhalb ihres lokalen Kontexts sicher synchronisieren können, ohne Annahmen über Konvergenz machen zu müssen. Cooperative-Groups-Primitive ermöglichen neue Muster von kooperativer Parallelität, die Erzeuger-Verbraucher Parallelität, opportunistische Parallelität und globale Synchronisierung über ein gesamtes Gitter von Threadblöcken umfassen.Cooperative Groups allows programmers to explicitly define groups of threads at sub-block (ie, as small as a single thread) and multi-block granularities and perform collective operations, such as synchronization, on the threads in a cooperative set. The programming model supports clean composition across software boundaries so that libraries and helper functions can securely synchronize within their local context without having to make assumptions about convergence. Enable cooperative groups primitives new patterns of cooperative parallelism involving producer-consumer parallelism, opportunistic parallelism and global synchronization across an entire grid of thread blocks.

Eine Versandeinheit 515 ist konfiguriert, um Anweisungen an eine oder mehrere der Funktionseinheiten zu übertragen. In der Ausführungsform umfasst die Planereinheit 510 zwei Versandeinheiten 515, die ermöglichen, dass zwei unterschiedliche Anweisungen von dem gleichen Warp während jedes Taktzyklus versandt werden. In alternativen Ausführungsformen kann jede Planereinheit 510 eine einzige Versandeinheit 515 oder zusätzliche Versandeinheiten 515 umfassen.A shipping unit 515 is configured to transmit instructions to one or more of the functional units. In the embodiment, the scheduler unit comprises 510 two shipping units 515 that allow two different instructions to be dispatched from the same warp during each clock cycle. In alternative embodiments, each scheduler unit 510 a single shipping unit 515 or additional shipping units 515 include.

Jeder SM 440 umfasst eine Registerdatei 520, die einen Satz von Registern für die Funktionseinheiten des SM 440 bereitstellt. In einer Ausführungsform ist die Registerdatei 520 zwischen jeder der Funktionseinheiten aufgeteilt, so dass jeder Funktionseinheit ein zugehöriger Abschnitt der Registerdatei 520 zugeteilt ist. In einer anderen Ausführungsform ist die Registerdatei 520 zwischen den unterschiedlichen Warps aufgeteilt, die von dem SM 440 ausgeführt werden. Die Registerdatei 520 stellt temporäre Speicherung für Operanden bereit, die mit den Datenpfaden der Funktionseinheiten verbunden sind.Every SM 440 includes 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 between each of the functional units so that each functional unit is an associated section of the register file 520 allocated. In another embodiment, the register file is 520 split between the different warps coming from the SM 440 be executed. The register file 520 provides temporary storage for operands associated with the data paths of the functional units.

Jeder SM 440 umfasst L Verarbeitungskerne 450. In einer Ausführungsform umfasst der SM 440 eine große Anzahl (z.B., 128, usw.) von unterschiedlichen Verarbeitungskernen 450. Jeder Kern 450 kann eine vollständig in einer Pipeline angeordnete (fully-pipelined) Einfach-Präzisions-Verarbeitungseinheit umfassen, die eine Gleitkommaarithmetik-Logikeinheit und eine Ganzzahlarithmetik-Logikeinheit umfasst. In einer Ausführungsform implementieren die Gleitkommaarithmetik-Logikeinheiten den IEEE 754-3008 Standard für Gleitkommaarithmetik. In einer Ausführungsform umfassen die Kerne 550 64 Einfach-Präzisions-(32-Bit)-Gleitkommakerne, 64 Integer-Kerne, 32 Doppel-Präzisions-(64-Bit)-Gleitkommakerne und 8 Tensorkerne.Every SM 440 includes L processing cores 450 , In an embodiment, the SM comprises 440 a large number (eg, 128 , etc.) of different processing cores 450 , Every core 450 may comprise a fully pipelined single precision processing unit comprising a floating point arithmetic logic unit and an integer arithmetic logic unit. In one embodiment, the floating point arithmetic logic units implement the IEEE 754 - 3008 Standard for floating-point arithmetic. In one embodiment, the cores comprise 550 64 Single-precision (32-bit) floating point kernels, 64 integer cores, 32 dual-precision (64-bit) floating point cores, and 8 tensor cores.

Tensorkerne, die konfiguriert sind, um Matrix-Operationen durchzuführen, und in einer Ausführungsform ein oder mehrere Tensorkerne sind in den Kernen 550 umfasst. Insbesondere sind die Tensorkerne konfiguriert, um Deep-Learning-Matrix-Arithmetik, wie beispielsweise Faltungsoperationen für Neuronal-Netzwerktraining und Inferenzieren, durchzuführen. In einer Ausführungsform arbeitet jeder Tensorkern an einer 4x4 Matrix und führt eine Matrix-Multiplikations- und Akkumulations-Operation D=A×B+C durch, wobei A, B, C und D 4x4 Matrizen sind.Tensor cores configured to perform matrix operations, and in one embodiment, one or more tensor cores are in the cores 550 includes. In particular, the tensor cores are configured to perform deep learning matrix arithmetic, such as neuronal network training and inferencing convolution operations. In one embodiment, each tensor core operates on a 4x4 matrix and performs a matrix multiplication and accumulation operation D = A × B + C, where A, B, C, and D are 4x4 matrices.

In einer Ausführungsform sind die Matrix-Multiplikations-Eingaben A und B 16-Bit-Gleitkomma-Matrizen, während die Akkumulationsmatrizen C und D 16-Bit-Gleitkomma- oder 32-Bit-Gleitkomma-Matrizen sein können. Tensorkerne arbeiten an 16-Bit-Gleitkomma-Eingabedaten mit 32-Bit-Gleitkomma-Akkumulation. Die 16-Bit-Gleitkomma-Multiplikation erfordert 64 Operationen und ergibt ein Produkt voller Präzision, das dann unter Verwendung einer 32-Bit-Gleitkomma-Addition mit den anderen Zwischenprodukten für eine 4x4x4-Matrix-Multiplikation akkumuliert wird. In der Praxis werden Tensorkerne verwendet, um viel größere zweidimensionale oder höherdimensionale Matrixoperationen durchzuführen, die von diesen kleineren Elementen aufgebaut werden. Eine API, wie beispielsweise die CUDA 9 C++ API, stellt spezialisierte Matrix-Lade-, Matrix-Multiplikations- und Matrix-Akkumulations- und Matrix-Speicher-Operationen bereit, um Tensorkerne von einem CUDA-C++ Programm effizient zu verwenden. Bei der CUDA-Ebene nimmt das Warp-Schnittstellenniveau 16x16 große Matrizen an, die alle 32 Threads des Warp überspannen.In one embodiment, the matrix multiply inputs A and B are 16-bit floating point arrays, while the accumulation matrices C and D may be 16-bit floating point or 32-bit floating point arrays. Tensor cores operate on 16-bit floating point input data with 32-bit floating-point accumulation. The 16-bit floating-point multiplication requires 64 operations and yields a product of full precision, which is then accumulated using a 32-bit floating-point addition with the other intermediates for 4x4x4 matrix multiplication. In practice, tensor cores are used to perform much larger two-dimensional or higher-dimensional matrix operations built by these smaller elements. An API, such as the CUDA 9 C ++ API, provides specialized matrix load, matrix multiplication, and matrix accumulation and matrix memory operations to efficiently use tensor cores from a CUDA-C ++ program. At the CUDA level, the warp interface level assumes 16x16 large matrices spanning all 32 threads of the warp.

Jeder SM 440 umfasst ebenfalls M SFUs 552, die Sonderfunktionen durchführen (z.B. Attributauswertung, reziproke Quadratwurzel und dergleichen). In einer Ausführungsform können die SFUs 552 eine Baumtraversierungseinheit umfassen, die konfiguriert ist, um eine hierarchische Baumdatenstruktur zu durchlaufen. In einer Ausführungsform können die SFUs 552 eine Textureinheit umfassen, die konfiguriert ist, um Texturkarten-Filteroperationen durchzuführen. In einer Ausführungsform sind die Textureinheiten konfiguriert, um Texturkarten (z.B. eine 2D-Anordnung von Texeln) von dem Speicher 304 zu laden und die Texturkarten abzutasten, um abgetastete Texturwerte zum Gebrauch in Shader-Programmen zu erzeugen, die durch den SM 440 ausgeführt werden. In einer Ausführungsform werden die Texturkarten in dem gemeinsam benutzten Speicher/L1-Cache-Speicher 470 gespeichert. Die Textureinheiten implementieren Texturoperationen, wie beispielsweise Filteroperationen, unter Verwendung von Mip-Maps (d.h. Texturkarten von veränderlichem Detaillierungsgrad). In einer Ausführungsform umfasst 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 comprise a tree traversal unit configured to traverse a hierarchical tree data structure. In one embodiment, the SFUs 552 comprise a texture unit configured to perform texture map filtering operations. In one embodiment, the texture units are configured to include texture maps (eg, a 2D array of texels) from the memory 304 to load and scan the texture maps to produce sampled texture values for use in shader programs generated by the SM 440 be executed. In one embodiment, the texture maps in the shared memory / L1 cache 470 saved. The texture units implement texture operations, such as filter operations, using mip maps (ie, texture maps of varying degrees of detail). In one embodiment, each SM includes 340 two texture units.

Jeder SM 440 umfasst ebenfalls N LSUs 554, die Lade- und Speicheroperationen zwischen dem gemeinsam benutzten Speicher/L1-Cache-Speicher 570 und der Registerdatei 520 implementieren. Jeder SM 440 umfasst ein Interconnect-Netzwerk 580, das jede der Funktionseinheiten mit der Registerdatei 520 und die LSU 554 mit der Registerdatei 520, dem gemeinsam benutzten Speicher/ L1-Cache-Speicher 570 verbindet. In einer Ausführungsform ist das Interconnect-Netzwerk 580 eine Kreuzschiene, die konfiguriert sein kann, um irgendeine der Funktionseinheiten mit irgendeinem der Register in der Registerdatei 520 zu verbinden und die LSUs 554 mit der Registerdatei und Speicherorten im gemeinsam benutzten Speicher/L1-Cache-Speicher 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 an interconnect network 580 containing each of the functional units with the register file 520 and the LSU 554 with the register file 520 , the shared memory / L1 cache 570 combines. In one embodiment, the interconnect network is 580 a crossbar, which may be configured to any of the functional units with any of the registers in the register file 520 to connect and the LSUs 554 with the Register file and shared memory / L1 cache memory locations 570 connect to.

Der gemeinsam benutzte Speicher/L1-Cache-Speicher 570 ist eine Auf-Chip-Speicheranordnung, die Datenspeicherung und Kommunikation zwischen dem SM 440 und der Primitiven-Engine 435 und zwischen Threads in dem SM 440 ermöglicht. In einer Ausführungsform umfasst der gemeinsam benutzte Speicher/L1-Cache-Speicher 570 128KB von Speicherkapazität und ist in dem Pfad von dem SM 440 zu der Speicher-Partitions-Einheit 380. Der gemeinsam benutzte Speicher/L1-Cache-Speicher 570 kann verwendet werden, um Lese- und Schreibvorgänge zwischenzuspeichern. Einer oder mehrere der gemeinsam benutzten Speicher/L1-Cache-Speicher 570, L2-Cache-Speicher 460 und Speicher 304 sind Hintergrundspeicher.The shared memory / L1 cache 570 is an on-chip memory arrangement, data storage and communication between the SM 440 and the primitive engine 435 and between threads in the SM 440 allows. In one embodiment, the shared memory includes / L1 cache memory 570 128KB of storage capacity and is in the path of the SM 440 to the storage partition unit 380 , The shared memory / L1 cache 570 can be used to cache reads and writes. One or more of the shared memory / L1 caches 570 , L2 cache 460 and memory 304 are background storage.

Das Kombinieren eines Daten-Cache und gemeinsam benutzter Speicherfunktionalität in einem einzigen Speicherblock stellt die beste Gesamtleistung für beide Arten von Speicherzugriffen bereit. Die Kapazität ist als ein Cache von Programmen benutzbar, die den gemeinsam benutzten Speicher nicht verwenden. Wenn der gemeinsam benutzte Speicher beispielsweise konfiguriert ist, die Hälfte der Kapazität zu verwenden, können Textur- und Lade/Speicher-Operationen die verbleibende Kapazität verwenden. Integration innerhalb des gemeinsam benutzten Speichers/L1-Cache-Speicher 570 ermöglicht dem gemeinsam benutzten Speicher/L1-Cache-Speicher 570 als eine Leitung mit hohem Durchsatz zum Streamen von Daten zu arbeiten, während gleichzeitig eine höhere Bandbreite und ein latenzarmer Zugriff auf häufig wiederverwendete Daten bereitgestellt werden.Combining a data cache and shared memory functionality into a single block of memory provides the best overall performance for both types of memory accesses. The capacity is usable as a cache of programs that do not use the 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. Integration within shared memory / L1 cache 570 allows the shared memory / L1 cache memory 570 as a high throughput line to stream data while providing higher bandwidth and low latency access to frequently reused data.

Wenn für Allzweck-Parallelberechnung konfiguriert wird, kann im Vergleich mit der Graphikverarbeitung eine einfachere Konfiguration verwendet werden. Im Einzelnen werden die in 3 gezeigten Festfunktions-Graphikverarbeitungseinheiten umgangen, wobei ein viel einfacheres Programmiermodell erzeugt wird. In der Allzweck-Parallelberechnungs-Konfiguration werden Blöcke von Threads von der Arbeitsverteilungs-Einheit 325 direkt den DPCs 420 zugewiesen und verteilt. Die Threads in einem Block führen das gleiche Programm unter Verwendung einer eindeutigen Thread-ID in der Berechnung, um sicherzustellen, dass jeder Thread eindeutige Ergebnisse erzeugt, unter Verwendung des SM 440, um das Programm auszuführen und Berechnungen durchzuführen, eines gemeinsam benutzten Speicher/L1-Cache-Speichers 570, um zwischen Threads zu kommunizieren, und der LSU 554 aus, um globalen Speicher durch den gemeinsam benutzten Speicher/L1-Cache-Speicher 570 und die Speicher-Partitions-Einheit 380 zu lesen und zu beschreiben. Wenn für Allzweck-Parallelberechnung konfiguriert, kann der SM 440 ebenfalls Befehle schreiben, welche die Planereinheit 320 verwenden kann, um neue Arbeit auf den DPCs 420 zu starten.When configured for general-purpose parallel calculation, a simpler configuration can be used in comparison with graphic processing. In detail, the in 3 bypassed fixed-function graphics processing units, creating a much simpler programming model. In the general purpose parallel calculation configuration, blocks of threads are taken from the work distribution unit 325 directly to the DPCs 420 assigned and distributed. The threads in a block run the same program using a unique thread ID in the calculation to ensure that each thread produces unique results using the SM 440 To run the program and perform calculations on a shared memory / L1 cache 570 to communicate between threads and the LSU 554 off to global memory through the shared memory / L1 cache 570 and the storage partition unit 380 to read and describe. When configured for general purpose parallel computation, the SM can 440 also write commands that the planner unit 320 can use to new work on the DPCs 420 to start.

Die PPU 300 kann in einem Tischcomputer, einem Laptop-Computer, einem Tablet-Computer, einem Smartphone (z.B. einer drahtlosen handgehaltenen Vorrichtung), einem persönlichen digitalen Assistenten (PDA), einer Digitalkamera, einer handgehaltenen elektronischen Vorrichtung und dergleichen umfasst sein. In einer Ausführungsform ist die PPU 300 auf einem einzelnen Halbleitersubstrat verkörpert. In einer anderen Ausführungsform ist die PPU 300 in einem System-auf-Chip (SoC) zusammen mit einer oder mehreren anderen Vorrichtungen, wie beispielsweise zusätzlichen PPUs 300, dem Speicher 204, einem Rechner-mit-reduziertem-Befehlssatz(RISC)-CPU, einer Speicherverwaltungseinheit (MMU), einem Digital/Analog-Wandler (DAC) und dergleichen umfasst.The PPU 300 may be included in a desktop computer, a laptop computer, a tablet computer, a smartphone (eg, a wireless handheld device), a personal digital assistant (PDA), a digital camera, a handheld electronic device, and the like. In one embodiment, the PPU 300 embodied on a single semiconductor substrate. In another embodiment, the PPU 300 in a system-on-chip (SoC) along with one or more other devices, such as additional PPUs 300 the store 204 , a computer-reduced command set (RISC) CPU, a memory management unit (MMU), a digital-to-analog converter (DAC), and the like.

In einer Ausführungsform kann die PPU 300 auf einer Graphikkarte umfasst sein, die eine oder mehrere Speichervorrichtungen 304 umfasst. Die Graphikkarte kann konfiguriert sein, um sich mit einem PCIe-Schlitz auf einer Hauptplatine eines Tischcomputers schnittstellenmäßig zu verbinden. In noch einer anderen Ausführungsform kann die PPU 300 eine integrierte Graphikverarbeitungseinheit (iGPU) oder ein Parallelprozessor sein, der in dem Chipsatz der Hauptplatine umfasst ist.In one embodiment, the PPU 300 on a graphics card that includes one or more memory devices 304 includes. The graphics card may be configured to interface with a PCIe slot on a motherboard of a desktop computer. In yet 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 mehrere GPUs und CPUs werden in einer Vielfalt von Industrien verwendet, da Entwickler mehr Parallelität in Anwendungen, wie beispielsweise Rechnen für künstliches Intelligenz, freilegen und wirksam einsetzen. Hochleistungs-GPU-beschleunigte Systeme mit zehn bis vielen tausenden von Rechenknoten werden in Datenzentren, Forschungsanlagen und Supercomputern eingesetzt, um immer größere Probleme zu lösen. Da die Anzahl von Verarbeitungsvorrichtungen innerhalb der Hochleistungssysteme zunimmt, müssen die Kommunikations- und Datentransfermechanismen angepasst werden, um die erhöhte Bandbreite zu unterstützen.Systems with multiple GPUs and CPUs are used in a variety of industries as developers expose and leverage more parallelism in applications such as artificial intelligence computing. High-performance GPU-accelerated systems with tens to thousands of compute nodes are being used in data centers, research facilities, and supercomputers to solve ever-increasing problems. As the number of processing devices within the high performance systems increases, the communication and data transfer mechanisms must be adjusted to support the increased bandwidth.

5B ist ein Konzeptdiagramm eines Verarbeitungssystems 500, das unter Verwendung der PPU 300 von 3 implementiert wird, gemäß einer Ausführungsform. Das beispielhafte System 565 kann konfiguriert sein, um die jeweils in 1C, 1F, 1G, 2B und 2D gezeigten Verfahren 130, 150, 160, 220 und 250 zu implementieren. Das Verarbeitungssystem 500 umfasst eine CPU 530, einen Schalter 510 und jeweils mehrere PPUs 300 und jeweilige Speicher 304. Das NVLink 310 stellt Hochgeschwindigkeits-Kommunikationslinks zwischen jeder der PPUs 300 bereit. Obwohl eine bestimmte Anzahl von Verbindungen des NVLink 310 und des Interconnect 302 in 5B veranschaulicht werden, kann die Anzahl von Verbindungen zu jeder PPU und der CPU 530 variieren. Der Schalter 510 verbindet sich schnittstellenmäßig zwischen dem Interconnect 302 und der CPU 530. Die PPUs 300, Speicher 304 und NVLinks 310 können auf einer einzigen Halbleiterplattform gelegen sein, um ein Parallelverarbeitungsmodul 525 zu bilden. In einer Ausführungsform unterstützt der Schalter 510 zwei oder mehrere Protokolle, um sich schnittstellenmäßig zwischen verschiedenen Verbindungen und/oder Links zu verbinden. 5B is a conceptual diagram of a processing system 500 using the PPU 300 from 3 is implemented, according to one embodiment. The exemplary system 565 can be configured to work in each case 1C . 1F . 1G . 2 B and 2D shown method 130 . 150 . 160 . 220 and 250 to implement. The processing system 500 includes a CPU 530 , a switch 510 and in each case several PPUs 300 and respective memories 304 , The NVLink 310 provides high-speed communication links between each of the PPUs 300 ready. Although a certain number of connections of NVLink 310 and the interconnect 302 in 5B can be illustrated, the number of connections to each PPU and the CPU 530 vary. The desk 510 interfaces between the interconnect 302 and the CPU 530 , The PPUs 300 , Storage 304 and NVLinks 310 can be located on a single semiconductor platform to a parallel processing module 525 to build. In one embodiment, the switch supports 510 two or more protocols to interface between different connections and / or links.

In einer anderen Ausführungsform (nicht gezeigt) stellt das NVLink 310 ein oder mehrere Hochgeschwindigkeits-Kommunikationslinks zwischen jeder der PPUs 300 und der CPU 530 bereit und der Schalter 510 ist schnittstellenmäßig zwischen dem Interconnect 302 und jeder der PPUs 300 verbunden. Die PPUs 300, die Speicher 304 und der Interconnect 302 können auf einer einzigen Halbleiterplattform situiert sein, um ein Parallelverarbeitungsmodul 525 zu bilden. In noch einer anderen Ausführungsform (nicht gezeigt) stellt der Interconnect 302 ein oder mehrere Kommunikationslinks zwischen jeder der PPUs 300 und der CPU 530 bereit und der Schalter 510 ist schnittstellenmäßig zwischen jeder der PPUs 300 unter Verwendung des NVLink 310 verbunden, um ein oder mehrere Hochgeschwindigkeits-Kommunikationslinks zwischen den PPUs 300 bereitzustellen. In einer anderen Ausführungsform (nicht gezeigt) stellt das NVLink 310 ein oder mehrere Hochgeschwindigkeits-Kommunikationslinks zwischen den PPUs 300 und der CPU 530 durch den Schalter 510 bereit. In noch einer anderen Ausführungsform (nicht gezeigt) stellt der Interconnect 302 ein oder mehrere Hochgeschwindigkeits-Kommunikationslinks zwischen jeder der PPUs 300 direkt bereit. Ein oder mehrere der NVLink 310 Hochgeschwindigkeits-Kommunikationslinks können als ein physischer NVLink-Interconnect oder entweder als ein Auf-Chip- oder Auf-Die-Interconnect unter Verwendung des gleichen Protokolls wie das 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 is interfaced between the interconnect 302 and each of the PPUs 300 connected. The PPUs 300 , the memory 304 and the interconnect 302 may be located on a single semiconductor platform to a parallel processing module 525 to build. In yet another embodiment (not shown), the interconnect provides 302 one or more communication links between each of the PPUs 300 and the CPU 530 ready and the switch 510 is interfaced between each of the PPUs 300 using the NVLink 310 connected 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 through the switch 510 ready. In yet another embodiment (not shown), the interconnect provides 302 one or more high-speed communication links between each of the PPUs 300 ready to go. One or more of the NVLink 310 High-speed communication links may act as a physical NVLink interconnect or as either an on-chip or on-die interconnect using the same protocol as the NVLink 310 be implemented.

Im Kontext der vorliegenden Beschreibung kann sich eine einzige Halbleiterplattform auf eine einzelne unitäre Halbleiter-basierte integrierte Schaltung beziehen, die auf einem Die oder Chip angefertigt ist. Es sei bemerkt, dass sich der Begriff einzige Halbleiterplattform ebenfalls auf Mehr-Chip-Module mit erhöhter Konnektivität beziehen kann, die eine Auf-Chip-Operation simulieren und die wesentlichen Verbesserungen gegenüber der Benutzung einer herkömmlichen Busimplementierung vornehmen. Natürlich können die verschiedenen Schaltungen oder Vorrichtungen ebenfalls getrennt oder in verschiedenen Kombinationen von Halbleiterplattformen gemäß den Wünschen des Benutzers situiert sein. Alternativ kann das Parallelverarbeitungsmodul 525 als ein Leiterplattensubstrat implementiert sein und jede der PPUs 300 und/oder Speicher 304 können verpackte Vorrichtungen sein. In einer Ausführungsform sind die CPU 530, der Schalter 510 und das Parallelverarbeitungsmodul 525 auf einer einzigen Halbleiterplattform situiert.In the context of the present description, a single semiconductor platform may refer to a single unitary semiconductor-based integrated circuit fabricated on a die or chip. It should be understood that the term single semiconductor platform may also refer to multi-chip modules with increased connectivity that simulate on-chip operation and make the significant improvements over using a conventional bus implementation. Of course, the various circuits or devices may also be located separately or in various combinations of semiconductor platforms according to the desires 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 packaged devices. In one embodiment, the CPU 530 , the desk 510 and the parallel processing module 525 situated on a single semiconductor platform.

In einer Ausführungsform ist die Signalrate von jedem NVLink 310 20 bis 25 Gigabit/s und jede PPU 300 umfasst sechs NVLink 310 Schnittstellen (wie in 5B gezeigt, fünf NVLink 310 Schnittstellen sind für jede PPU 300 umfasst). Jedes NVLink 310 stellt eine Datentransferrate von 25 Gigabyte/s in jeder Richtung bereit, wobei sechs Verknüpfungen 300 Gigabyte/s bereitstellen. Die NVLinks 310 können exklusiv für PPU-zu-PPU Kommunikation, wie in 5B gezeigt, oder einer Kombination von PPU-zu-PPU und PPU-zu-CPU verwendet werden, wenn die CPU 530 ebenfalls eines oder mehrere NVLink 310 Schnittstellen umfasst.In one embodiment, the signal rate is from each NVLink 310 20 to 25 Gigabit / s and every PPU 300 includes six NVLinks 310 Interfaces (as in 5B shown five NVLink 310 Interfaces are for each PPU 300 comprises). Every NVLink 310 provides a data transfer rate of 25 gigabytes / s in each direction, with six links 300 Deploy gigabytes / s. The NVLinks 310 can be used exclusively for PPU-to-PPU communication, as in 5B shown, or a combination of PPU-to-PPU and PPU-to-CPU are used when the CPU 530 also one or more NVLinks 310 Interfaces includes.

In einer Ausführungsform ermöglicht das NVLink 310 einen direkten Lade/Speicher/atomaren Zugriff der CPU 530 auf jeden Speicher 304 der PPU 300. In einer Ausführungsform unterstützt das NVLink 310 Kohärenzoperationen, die ermöglichen, das von dem Speicher 304 gelesene Daten in der Cache-Hierarchie der CPU 530 gespeichert werden können, was die Cachezugriffslatenz für die CPU 530 verringert. In einer Ausführungsform umfasst das NVLink 310 Unterstützung für Address Translation Services (ATS), was der PPU 300 ermöglicht, auf Seitentabellen innerhalb der CPU 530 direkt zuzugreifen. Eines oder mehrere der NVLinks 310 können ebenfalls konfiguriert sein, um in einem Niedrigleistungsmodus zu arbeiten.In one embodiment, the NVLink allows 310 a direct load / memory / atomic access of the CPU 530 on every store 304 the PPU 300 , In one embodiment, the NVLink supports 310 Coherence operations that enable that from memory 304 read data in the cache hierarchy of the CPU 530 can be stored, which is the cache access latency for the CPU 530 reduced. In one embodiment, the NVLink includes 310 Support for Address Translation Services (ATS), what the PPU 300 allows on page tables within the CPU 530 directly access. One or more of the NVLinks 310 may also be configured to operate in a low power mode.

5C veranschaulicht ein beispielhaftes System 565, bei dem die verschiedene Architektur und/oder Funktionalität der verschiedenen vorherigen Ausführungsformen implementiert werden kann. Das beispielhafte System 565 kann konfiguriert sein, um die jeweils in 1C, 1F, 1G, 2B und 2D gezeigten Verfahren 130, 150, 160, 220 und 250 zu implementieren. 5C illustrates an exemplary system 565 in which the various architecture and / or functionality of the various previous embodiments may be implemented. The exemplary system 565 can be configured to work in each case 1C . 1F . 1G . 2 B and 2D shown method 130 . 150 . 160 . 220 and 250 to implement.

Wie gezeigt, wird ein System 565 bereitgestellt, das mindestens eine zentrale Verarbeitungseinheit 530 umfasst, die mit einem Kommunikationsbus 575 verbunden ist. Der Kommunikationsbus 575 kann unter Verwendung jedes geeigneten Protokolls, wie beispielsweise PCI (Peripheral Component Interconnect), PCI-Express, AGP (Accelerated Graphics Port), Hyper-Transport oder irgendeinem anderen Bus- oder Punkt-zu-Punkt-Kommunikationsprotokoll(en), implementiert sein. Das System 565 umfasst ebenfalls einen Hauptspeicher 540. Steuerlogik (Software) und Daten werden in dem Hauptspeicher 540 gespeichert, der die Form eines Direkt-Zugriffs-Speichers (RAM) annehmen kann.As shown, a system 565 provided, the at least one central processing unit 530 includes that with a communication bus 575 connected is. The communication bus 575 may be implemented using any suitable protocol, such as PCI (Peripheral Component Interconnect), PCI Express, Accelerated Graphics Port (AGP), Hyper-Transport, or any other bus or point-to-point communication protocol (s). The system 565 also includes a main memory 540 , control logic (Software) and data are stored in main memory 540 which may take the form of a random access memory (RAM).

Das System 565 umfasst ebenfalls Eingabevorrichtungen 560, das Parallelverarbeitungssystem 525 und Anzeigevorrichtungen 545, d.h. eine herkömmliche CRT (Kathodenstrahlröhre), eine LCD (Flüssigkristallanzeige), eine LED (lichtemittierende Diode), eine Plasmaanzeige oder dergleichen. Eine Benutzereingabe kann von den Eingabevorrichtungen 560, z.B. Tastatur, Maus, Berührfeld, Mikrophon und dergleichen empfangen werden. Jedes der vorhergehenden Module und/oder Vorrichtungen kann sogar auf einer einzigen Halbleiterplattform situiert sein, um das System 565 zu bilden. Alternativ können die verschiedenen Module ebenfalls getrennt oder in verschiedenen Kombinationen von Halbleiterplattformen gemäß den Wünschen des Benutzers situiert sein.The system 565 also includes input devices 560 , the parallel processing system 525 and display devices 545 That is, a conventional CRT (Cathode Ray Tube), an LCD (Liquid Crystal Display), an LED (Light Emitting Diode), a plasma display, or the like. User input may be from the input devices 560 , eg keyboard, mouse, touchpad, microphone and the like. Any of the foregoing modules and / or devices may even be located on a single semiconductor platform to the system 565 to build. Alternatively, the various modules may also be located separately or in different combinations of semiconductor platforms according to the desires of the user.

Ferner kann das System 565 mit einem Netzwerk (z.B. einem Telekommunikationsnetzwerk, Lokalbereichsnetzwerk (LAN), drahtlosen Netzwerk, Weitbereichsnetzwerk (WAN), wie beispielsweise dem Internet, Peer-zu-Peer-Netzwerk, Kabelnetzwerk oder dergleichen) durch eine Netzwerkschnittstelle 535 für Kommunikationszwecke gekoppelt sein.Furthermore, the system can 565 with a network (eg, a telecommunications network, local area network (LAN), wireless network, wide area network (WAN) such as the Internet, peer-to-peer network, cable network, or the like) through a network interface 535 be coupled for communication purposes.

Das System 565 kann ebenfalls einen Sekundärspeicher umfassen (nicht gezeigt). Der Sekundärspeicher 610 umfasst beispielsweise ein Festplattenlaufwerk und/oder ein entfernbares Speicherlaufwerk, das ein Diskettenlaufwerk darstellt, ein Magnetbandlaufwerk, ein Kompaktdisklaufwerk, ein DVD(digitale versatile disk)-Laufwerk, eine Aufzeichnungsvorrichtung und einen Universal-Serial-Bus-(USB)-Flash-Speicher. Das entfernbare Speicherlaufwerk liest von und/oder schreibt auf eine entfernbare Speichereinheit auf eine wohlbekannte Art und Weise.The system 565 may also include a secondary memory (not shown). The secondary storage 610 For example, a hard disk drive and / or a removable storage drive constituting a floppy disk drive includes a magnetic tape drive, a compact disk drive, a digital versatile disk (DVD) drive, a recording device, and a universal serial bus (USB) flash memory. The removable storage drive reads from and / or writes to a removable storage device in a well-known manner.

Computerprogramme oder Computersteuerlogik-Algorithmen können in dem Hauptspeicher 540 und/oder dem Sekundärspeicher gespeichert sein. Derartige Computerprogramme, wenn ausgeführt, ermöglichen dem System 565, verschiedene Funktionen durchzuführen. Der Speicher 540, die Speicherung, und/oder jede andere Speicherung sind mögliche Beispiele von computerlesbaren Medien.Computer programs or computer control logic algorithms may reside in main memory 540 and / or the secondary storage. Such computer programs, when executed, enable the system 565 to perform various functions. The memory 540 , storage, and / or any other storage are possible examples of computer-readable media.

Die Architektur und/oder Funktionalität der verschiedener vorherigen Figuren kann im Kontext eines allgemeinen Computersystems, eines Schaltungsplatinensystems, eines Unterhaltungszwecken fest zugeordneten Spielkonsolensystems, eines anwendungsspezifischen Systems und/oder jedem anderen gewünschten System implementiert sein. Beispielsweise kann das System 565 die Form eines Tischcomputers, eines Laptop-Computers, eines Tablet-Computers, von Servern, von Supercomputern, eines Smartphones (z.B. einer drahtlosen handgehaltenen Vorrichtung), eines persönlichen digitalen Assistenten (PDA), einer Digitalkamera, eines Fahrzeugs, einer am Kopf angebrachten Anzeige, einer handgehaltenen elektronischen Vorrichtung, eines mobilen Telefongeräts, eines Fernsehers, einer Arbeitsstation, einer Spielkonsole, eines eingebetteten Systems und/oder von jedem anderen Typ von Logik annehmen.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, an entertainment dedicated games console system, an application specific system, and / or any other desired system. For example, the system can 565 the form of a desktop computer, a laptop computer, a tablet computer, servers, supercomputers, a smartphone (eg, a wireless hand-held device), a personal digital assistant (PDA), a digital camera, a vehicle, a head-mounted display , a handheld electronic device, a mobile telephone, a television, a workstation, a game console, an embedded system, and / or any other type of logic.

Während verschiedene Ausführungsformen oben beschrieben wurden, sei zu verstehen, dass sie lediglich beispielhaft und nicht begrenzend präsentiert wurden. Somit sollte die Breite und der Umfang einer bevorzugten Ausführungsform nicht durch irgendeine der oben beschriebenen beispielhaften Ausführungsformen begrenzt werden, sondern sollte nur durch die folgenden Ansprüche und ihrer Äquivalente definiert werden.While various embodiments have been described above, it should be understood that they have been presented by way of example only and not limitation. Thus, 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 by the following claims and their equivalents.

Maschinenlernenmachine learning

Tiefe Neuronale-Netzwerke (DNNs), die auf Prozessoren entwickelt wurden, wie beispielsweise der PPU 300, wurden für diverse Verwendungsfälle, von selbstfahrenden Wagen bis schnellerer Wirkstoffentwicklung, von automatischer Bildbeschriftung in Online-Bilddatenbanken bis smarter Echtzeit-Sprachenübersetzung in Video-Chat-Anwendungen verwendet. Deep-Learning ist eine Technik, welche das Neuronale-Lernverfahren des menschlichen Gehirns modelliert, kontinuierlich lernt, kontinuierlich immer smarter wird und genauere Ergebnisse schneller im Laufe der Zeit liefert. Ein Kind wird anfangs von einem Erwachsenen unterrichtet, verschiedene Formen korrekt zu identifizieren und zu klassifizieren, um schließlich imstande zu sein, Formen ohne irgendeine Nachhilfe zu identifizieren. Auf ähnliche Weise muss ein Tiefen-Learning-System oder ein Neuronales-Lernsystem in Objekterkennung und Klassifizierung trainiert werden, damit es smarter und effizienter beim Identifizieren von Grundobjekten, verdeckten Objekte usw. wird, während ebenfalls Objekten Kontext zugewiesen wird.Deep neural networks (DNNs) developed on processors such as the PPU 300 , have been used for a variety of uses, from self-propelled cars to faster drug development, from automatic image capturing to online image databases to smart 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, continually becoming smarter, and delivering more accurate results faster over time. A child is initially taught by an adult to correctly identify and classify various forms to eventually be able to identify forms without any tutoring. Similarly, a depth learning system or a neural learning system must be trained in object recognition and classification to make it smarter and more efficient in identifying basic objects, obscured objects, etc. while also assigning context to objects.

Auf der einfachsten Ebene schauen Neuronen im menschlichen Gehirn auf verschiedene Eingaben, die empfangen werden, wobei Wichtigkeitsgrade jeder dieser Eingaben zugewiesen werden und eine Ausgabe an andere Neuronen weitergeleitet wird, um auf diese zu wirken. Ein künstliches Neuron oder ein Perzeptron ist das grundlegendste Modell eines Neuronalen-Netzwerks. In einem Beispiel kann ein Perzeptron eine oder mehrere Eingaben empfangen, die verschiedene Merkmale eines Objekts darstellen, die das Perzeptron trainiert wird, zu erkennen und zu klassifizieren, und jedem dieser Merkmale wird ein bestimmtes Gewicht basierend auf der Wichtigkeit des Merkmals beim Definieren der Gestalt eines Objekts zugewiesen.At the simplest level, neurons in the human brain look at various inputs being received, assigning importance levels to each of these inputs, and passing an output to other neurons to act upon them. 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 representing various features of an object that the perceptron is trained to recognize and classify, and each of these features will have a particular weight based on the importance of the feature in defining the shape of a feature Assigned to object.

Ein Modell eines tiefen Neuronalen-Netzwerks (DNN) umfasst mehrere Schichten von vielen verbundenen Knoten (z.B. Perzeptronen, Boltzmann-Maschinen, radiale Basisfunktionen, Faltungsschichten usw.), die mit enormen Mengen an Eingabedaten trainiert werden können, um komplexe Probleme mit hoher Genauigkeit schnell zu lösen. In einem Beispiel gliedert eine erste Schicht des DNN-Modells ein Eingabebild eines Automobils in verschiedene Abschnitte auf und sucht nach Grundmustern, wie beispielsweise Linien und Winkel. Die zweite Schicht setzt die Linien zusammen, um nach Mustern höherer Ebene, wie beispielsweise Rädern, Windschutzscheiben und Spiegeln, zu suchen. Die nächste Schicht kennzeichnet den Typ des Fahrzeugs und die letzten paar Schichten erzeugen ein Etikett für das Eingabebild, welches das Modell einer speziellen Automobilmarke kennzeichnet.A deep neural network (DNN) model includes multiple layers of many connected nodes (eg perceptrons, Boltzmann machines, radial basis functions, convolution layers, etc.) that can be trained with enormous amounts of input data to quickly solve complex problems with high accuracy to solve. In one example, a first layer of the DNN model breaks up an input image of an automobile into various sections and looks for basic patterns such as lines and angles. The second layer assembles the lines to search for higher level patterns such as wheels, windshields, and mirrors. The next layer identifies the type of vehicle and the last few layers create a label for the input image that identifies the model of a particular automotive brand.

Sobald das DNN trainiert ist, kann das DNN eingesetzt und verwendet werden, um Objekte oder Muster in einem als Inferenz bekannten Verfahren zu identifizieren und zu klassifizieren. Beispiele von Inferenz (der Prozess, durch den ein DNN nützliche Information von einer gegebenen Eingabe extrahiert) umfassen ein Identifizieren handgeschriebener Zahlen auf Schecks, die in Geldausgabe-Maschinen eingezahlt werden, ein Identifizieren von Bildern von Freunden in Photos, Liefern von Filmempfehlungen an über fünfzig Millionen Nutzern, Identifizieren und Klassifizieren unterschiedlicher Typen von Automobilen, Fußgängern und Straßengefahren in fahrerlosen Wagen oder Übersetzen von 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 method known as inference. Examples of inference (the process by which a DNN extracts useful information from a given input) include identifying handwritten numbers on checks deposited into cash dispensing machines, identifying pictures of friends in photos, delivering movie recommendations to over fifty Millions of users, identifying and classifying different types of automobiles, pedestrians and road hazards in driverless cars or translating human speech in real time.

Während des Trainings strömen Daten durch das DNN in einer Vorwärtspropagierungsphase, bis eine Vorhersage erzeugt wird, die ein Etikett angibt, das der Eingabe entspricht. Wenn das Neuronale-Netzwerk die Eingabe nicht korrekt kennzeichnet, dann werden Fehler zwischen dem korrekten Etikett und dem vorhergesagten Etikett analysiert und die Gewichte werden für jedes Merkmal während einer Rückwärtspropagierungsphase eingestellt, bis das DNN die Eingabe und andere Eingaben in einem Trainingsdatensatz korrekt kennzeichnet. Das Training komplexer Neuronaler-Netzwerke erfordert enorme Mengen an paralleler Rechenleistung, die Gleitkomma-Multiplikationen und Gleitkomma-Additionen umfassen, die von der PPU 300 unterstützt werden. Inferenzieren ist weniger rechenintensiv als Training, das ein Latenz-empfindliches Verfahren ist, wobei ein trainiertes Neuronales-Netzwerk auf neue Eingaben angewandt wird, die es zuvor nicht gesehen hat, um Bilder zu klassifizieren, Sprache zu übersetzen und im Allgemeinen neue Informationen abzuleiten.During training, data flows through the DNN in a forward propagation phase until a prediction is generated indicating a label corresponding to the input. If the neural network does not identify the input correctly, then errors between the correct label and the predicted label are analyzed and the weights are adjusted for each feature during a reverse propagation phase until the DNN correctly identifies the input and other inputs to a training data set. Complex neural network training requires enormous amounts of parallel computing power, including floating-point multiplication and floating-point additions by the PPU 300 get supported. Inferencing is less computationally intensive than training, which is a latency-sensitive method whereby a trained neural network is applied to new inputs that it has not previously seen to classify images, translate, and generally derive new information.

Neuronale-Netzwerke stützen sich sehr auf Matrixrechenoperationen und komplexe mehrschichtige Netzwerke erfordern enorme Mengen an Gleitkomma-Leistung und Bandbreite für sowohl Effizienz als auch Geschwindigkeit. Mit Tausenden von Verarbeitungskernen, die für Matrixrechenoperationen optimiert sind und liefern von zehn bis hunderten von TFLOPS von Leistung, ist die PPU 300 eine Rechenplattform, die imstande ist, Leistung zu liefern, die für tiefe Neuronale-Netzwerk-basierte künstliche Intelligenz und Maschinenlernanwendungen erforderlich ist.Neural networks rely heavily on matrix computing operations, and complex multi-layered networks require massive amounts of floating point performance and bandwidth for both efficiency and speed. With thousands of processing cores optimized for matrix arithmetic operations, delivering from ten to hundreds of TFLOPS of performance, the PPU is 300 a computing platform capable of delivering the performance required for deep neural network-based artificial intelligence and machine learning applications.

Claims (16)

Computerimplementiertes Verfahren, umfassend: Verarbeiten eines photorealistischen Inhaltsbildes und eines photorealistischen Stilbildes durch eine Max-Pooling-Schicht eines Codiererabschnitts eines Photostiltransfer-Neuronalen-Netzwerkmodells, um Ortsdaten zu erzeugen, die einen Ort innerhalb einer Merkmalsabbildung eines Maximalwerts kennzeichnen, der von der Max-Pooling-Schicht ausgegeben wird; und Verarbeiten einer Ausgabe des Codiererabschnitts von einer Zerstreuungs-Schicht eines Decodiererabschnitts des Photostiltransfer-Neuronalen-Netzwerkmodells basierend auf den Ortsdaten, um ein stilisiertes photorealistisches Bild zu erzeugen, das Inhalte von dem photorealistischen Inhaltsbild umfasst, das gemäß dem photorealistischen Stilbild modifiziert wird.Computer-implemented method comprising: Processing a photorealistic content image and a photorealistic style image by a max-pooling layer of a coder portion of a photo-transfer neuronal network model to generate location data indicating a location within a feature map of a maximum value output from the max-pooling layer; and Processing an output of the encoder section from a dispersing layer of a decoder section of the photo-transfer-neuronal network model based on the location data to produce a stylized photorealistic image comprising contents of the photorealistic content image modified according to the photorealistic style image. Computerimplementiertes Verfahren gemäß Anspruch 1, ferner umfassend ein Verarbeiten des stilisierten photorealistischen Bildes gemäß Pixelähnlichkeitsdaten für das photorealistische Inhaltsbild, um ein geglättetes stilisiertes photorealistisches Bild zu erzeugen.Computer-implemented method according to Claim 1 further comprising processing the stylized photorealistic image in accordance with pixel similarity data for the photorealistic content image to produce a smoothed stylized photorealistic image. Computerimplementiertes Verfahren gemäß Anspruch 2, wobei die Pixelähnlichkeitsdaten Pixel in dem stilisierten photorealistischen Bild kennzeichnen, die in der Farbe mit benachbarten Pixeln konsistent sind.Computer-implemented method according to Claim 2 wherein the pixel similarity data identifies pixels in the stylized photorealistic image that are consistent in color with neighboring pixels. Computerimplementiertes Verfahren gemäß Anspruch 2 oder 3, wobei eine quadratische Funktion mit einer Lösung in geschlossener Form gelöst wird, um das geglättete stilisierte photorealistische Bild zu erzeugen.Computer-implemented method according to Claim 2 or 3 solving a quadratic function with a solution in closed form to produce the smoothed stylized photorealistic image. Computerimplementiertes Verfahren gemäß einem der Ansprüche 2 bis 4, wobei die Pixelähnlichkeitsdaten Pixelaffinitätswerte umfassen.Computer-implemented method according to one of Claims 2 to 4 wherein the pixel similarity data comprises pixel affinity values. Computerimplementiertes Verfahren gemäß einem der vorhergehenden Ansprüche, ferner umfassend Verarbeiten des photorealistischen Stilbildes durch ein zweites Photostiltransfer-Neuronales-Netzwerkmodell, um ein verbessertes photorealistisches Stilbild zu erzeugen, wobei das zweite Photostiltransfer-Neuronale-Netzwerkmodell eine niedrigere Merkmalsdarstellung im Vergleich mit dem Photostiltransfer-Neuronalen-Netzwerkmodell aufweist.The computer-implemented method of any one of the preceding claims, further comprising processing the photorealistic style image by a second photo-transfer neuronal network model to produce an improved photorealistic style image, wherein the second photo-transfer-neuronal network model has a lower feature representation compared to the photo-transfer neuronal network model. Computerimplementiertes Verfahren gemäß einem der vorhergehenden Ansprüche, wobei das photorealistische Stilbild in eine erste Stilregion und eine zweite Stilregion segmentiert wird und das Photostiltransfer-Neuronale-Netzwerkmodell die erste Stilregion und eine entsprechende erste Inhaltsregion des photorealistischen Inhaltsbildes verarbeitet, um eine erste Region des photorealistischen Stilbildes zu erzeugen.The computer-implemented method of claim 1, wherein the photorealistic style image is segmented into a first style region and a second style region, and the photo-style transfer neural network model processes the first style region and a corresponding first content region of the photorealistic content image to include a first region of the photorealistic style image produce. Computerimplementiertes Verfahren gemäß einem der vorhergehenden Ansprüche, wobei das photorealistische Inhaltsbild in eine erste Inhaltsregion und eine zweite Inhaltsregion segmentiert wird und das Photostiltransfer-Neuronale-Netzwerkmodell die erste Inhaltsregion und eine entsprechende erste Stilregion des photorealistischen Stilbildes verarbeitet, um eine erste Region des photorealistische Stilbildes zu erzeugen.The computer-implemented method of claim 1, wherein the photorealistic content image is segmented into a first content region and a second content region, and the photorelief transfer neural network model processes the first content region and a corresponding first style region of the photorealistic style image to include a first region of the photorealistic style image produce. Computerimplementiertes Verfahren, umfassend: Empfangen eines stilisierten photorealistischen Bildes, das durch ein Photostiltransfer-Neuronales-Netzwerkmodell erzeugt wird, wobei das stilisierte photorealistische Bild Inhalte von einem photorealistischen Inhaltsbild umfasst, das gemäß einem photorealistischen Stilbild modifiziert wird; und Verarbeiten des stilisierten photorealistischen Bildes gemäß Pixelähnlichkeitsdaten für das photorealistische Inhaltsbild, um ein geglättetes stilisiertes photorealistisches Bild zu erzeugen.Computer-implemented method comprising: Receiving a stylized photorealistic image generated by a photo-transfer neuronal network model, the stylized photorealistic image comprising content from a photorealistic content image modified according to a photorealistic style image; and Processing the stylized photorealistic image according to pixel similarity data for the photorealistic content image to produce a smoothed stylized photorealistic image. Computerimplementiertes Verfahren gemäß Anspruch 9, wobei die Pixelähnlichkeitsdaten Pixelaffinitätswerte umfassen.Computer-implemented method according to Claim 9 wherein the pixel similarity data comprises pixel affinity values. Computerimplementiertes Verfahren gemäß Anspruch 9 oder 10, wobei das Photostiltransfer-Neuronale-Netzwerkmodell das stilisierte photorealistische Bild basierend auf Segmentierungsdaten für mindestens eines von dem photorealistischen Inhaltsbild und dem photorealistischen Stilbild erzeugt.Computer-implemented method according to Claim 9 or 10 wherein the photostenergy transfer neural network model generates the stylized photorealistic image based on segmentation data for at least one of the photorealistic content image and the photorealistic style image. System, umfassend ein Photostiltransfer-Neuronales-Netzwerkmodell mit einem Codiererabschnitt und einem Decodiererabschnitt, wobei der Codiererabschnitt konfiguriert ist, um: ein photorealistisches Inhaltsbild und ein photorealistisches Stilbild von einer Max-Pooling-Schicht des Codiererabschnitts zu verarbeiten, um Ortsdaten zu erzeugen, die einen Ort innerhalb einer Merkmalsabbildung eines Maximalwerts kennzeichnen, das von der Max-Pooling-Schicht ausgegeben wird; und eine Ausgabe des Codiererabschnitts durch eine Zerstreuungs-Schicht des Decodiererabschnitts basierend auf den Ortsdaten zu verarbeiten, um ein stilisiertes photorealistisches Bild zu erzeugen, das Inhalte von dem photorealistischen Inhaltsbild umfasst, das gemäß dem photorealistischen Stilbild modifiziert wird.A system comprising a photostenergy transfer neural network model having an encoder section and a decoder section, the encoder section configured to: process a photorealistic content image and a photorealistic style image from a max-pooling layer of the encoder section to produce location data identifying a location within a feature map of a maximum value output from the max-pooling layer; and process an output of the encoder section by a dispersing layer of the decoder section based on the location data to produce a stylized photorealistic image comprising content from the photorealistic content image modified according to the photorealistic style image. System gemäß Anspruch 12, ferner umfassend ein Glättungsfunktionsmodul, das konfiguriert ist, um das stilisierte photorealistische Bild gemäß Pixelähnlichkeitsdaten für das photorealistische Inhaltsbild zu verarbeiten, um ein geglättetes stilisiertes photorealistisches Bild zu erzeugen.System according to Claim 12 , further comprising a smoothing function module configured to process the stylized photorealistic image according to pixel similarity data for the photorealistic content image to produce a smoothed stylized photorealistic image. System gemäß Anspruch 12 oder 13, das ferner konfiguriert wird, um ein Verfahren auszuführen, wie in einem der Ansprüche 1 bis 8 erwähnt.System according to Claim 12 or 13 , which is further configured to perform a method as in any of Claims 1 to 8th mentioned. System gemäß einem der Ansprüche 12 bis 14, ferner umfassend ein zweites Photostiltransfer-Neuronales-Netzwerkmodell, das konfiguriert ist, um das photorealistische Stilbild zu verarbeiten, um ein verbessertes photorealistisches Stilbild zu erzeugen, wobei das zweite Photostiltransfer-Neuronale-Netzwerkmodell eine geringere Merkmalsdarstellung im Vergleich mit dem Photostiltransfer-Neuronalen-Netzwerkmodell aufweist.System according to one of Claims 12 to 14 , further comprising a second photo-transfer neuronal network model configured to process the photorealistic style image to produce an improved photorealistic style image, wherein the second photo-transfer-neuronal network model has less feature representation as compared with the photo-transfer neuronal network model having. Nichttransitorisches computerlesbares Speichermedium, das Anweisungen speichert, die, wenn von einer Verarbeitungseinheit ausgeführt, die Verarbeitungseinheit veranlassen, ein Verfahren auszuführen, wie in einem der Ansprüche 1 bis 8 erwähnt.A non-transitory computer-readable storage medium that stores instructions that, when executed by a processing unit, cause the processing unit to perform a method as in any of Claims 1 to 8th mentioned.
DE102019101845.5A 2018-02-02 2019-01-25 Photorealistic image stylization using a neural network model Active DE102019101845B4 (en)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201862625730P 2018-02-02 2018-02-02
US62/625,730 2018-02-02
US16/246,375 US10872399B2 (en) 2018-02-02 2019-01-11 Photorealistic image stylization using a neural network model
US16/246,375 2019-01-11

Publications (2)

Publication Number Publication Date
DE102019101845A1 true DE102019101845A1 (en) 2019-08-08
DE102019101845B4 DE102019101845B4 (en) 2023-08-10

Family

ID=67308507

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102019101845.5A Active DE102019101845B4 (en) 2018-02-02 2019-01-25 Photorealistic image stylization using a neural network model

Country Status (1)

Country Link
DE (1) DE102019101845B4 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111737983A (en) * 2020-06-22 2020-10-02 网易(杭州)网络有限公司 Text writing style processing method, device, equipment and storage medium
CN112669308A (en) * 2021-01-06 2021-04-16 携程旅游信息技术(上海)有限公司 Image generation method, system, device and storage medium based on style migration

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111737983A (en) * 2020-06-22 2020-10-02 网易(杭州)网络有限公司 Text writing style processing method, device, equipment and storage medium
CN111737983B (en) * 2020-06-22 2023-07-25 网易(杭州)网络有限公司 Text writing style processing method, device, equipment and storage medium
CN112669308A (en) * 2021-01-06 2021-04-16 携程旅游信息技术(上海)有限公司 Image generation method, system, device and storage medium based on style migration
CN112669308B (en) * 2021-01-06 2024-05-24 携程旅游信息技术(上海)有限公司 Image generation method, system, device and storage medium based on style migration

Also Published As

Publication number Publication date
DE102019101845B4 (en) 2023-08-10

Similar Documents

Publication Publication Date Title
US10984286B2 (en) Domain stylization using a neural network model
US10872399B2 (en) Photorealistic image stylization using a neural network model
DE102019102279A1 (en) Generation of synthetic images for training a neuronal network model
DE102018117813A1 (en) Timely data reconstruction with an external recurrent neural network
DE102018126670A1 (en) Progressive modification of generative adversative neural networks
DE102018108324A1 (en) System and method for estimating an optical flow
DE102018132069A1 (en) Equivariant landmark transformation for landmark localization
DE112020004702T5 (en) IMAGE GENERATION USING ONE OR MORE NEURAL NETWORKS
DE102019130702A1 (en) STYLE-BASED ARCHITECTURE FOR GENERATIVE NEURONAL NETWORKS
DE102018121282A1 (en) DIFFERENTIAL RENDERING PIPELINE FOR INVERSE GRAPHICS
DE102021119726A1 (en) THREE-DIMENSIONAL OBJECT RECONSTRUCTION FROM A VIDEO
DE102019106123A1 (en) Three-dimensional (3D) pose estimation from the side of a monocular camera
DE102017124573A1 (en) SYSTEMS AND METHOD FOR CRITING NEURONAL NETWORKS FOR AN OPERATIONAL EFFICIENT CONCLUSION
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
DE102019103310A1 (en) ESTIMATE FOR AN OPTIMAL OPERATING POINT FOR HARDWARE WORKING WITH A RESTRICTION ON THE SHARED PERFORMANCE / HEAT
DE102019102009A1 (en) REDUCING NOISE DURING RENDERING THROUGH PARALLEL PATH SPACE FILTERING USING HASHING
DE102019128750A1 (en) REDUCING THE LEVEL OF DETAILS OF A POLYGON NETWORK TO REDUCE THE COMPLEXITY OF A PICTURED GEOMETRY WITHIN A SCENE
DE102019130311A1 (en) TRANSPOSED WEAK MATRIX MULTIPLICATED WITH DENSE MATRIX FOR TRAINING NEURONAL NETWORKS
DE102021105249A1 (en) MICROTRAINING FOR ITERATIVE REFINEMENT OF A NEURAL NETWORK WITH FEW ADAPTATIONS
DE102018124211A1 (en) Learning-based camera pose estimation of images of an environment
DE102019134020A1 (en) DECOMPRESSION TECHNIQUES FOR THE PROCESSING OF COMPRESSED DATA SUITABLE FOR ARTIFICIAL NEURAL NETWORKS
DE102021121109A1 (en) RECOVERY OF THREE-DIMENSIONAL MODELS FROM TWO-DIMENSIONAL IMAGES
DE102019106996A1 (en) PRESENTING A NEURONAL NETWORK USING PATHS INSIDE THE NETWORK TO IMPROVE THE PERFORMANCE OF THE NEURONAL NETWORK
DE102019103319A1 (en) STOCHASTIC ROUNDING OF NUMBER VALUES
DE102018114799A1 (en) SEMINAR-LEANED LEARNING FOR ORIENTATION LOCALIZATION

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R083 Amendment of/additions to inventor(s)
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final