DE102018117813A1 - Zeitlich stabile Datenrekonstruktion mit einem externen rekurrenten neuronalen Netzwerk - Google Patents

Zeitlich stabile Datenrekonstruktion mit einem externen rekurrenten neuronalen Netzwerk Download PDF

Info

Publication number
DE102018117813A1
DE102018117813A1 DE102018117813.1A DE102018117813A DE102018117813A1 DE 102018117813 A1 DE102018117813 A1 DE 102018117813A1 DE 102018117813 A DE102018117813 A DE 102018117813A DE 102018117813 A1 DE102018117813 A1 DE 102018117813A1
Authority
DE
Germany
Prior art keywords
data frame
input data
neural network
network model
reconstructed
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102018117813.1A
Other languages
English (en)
Inventor
Marco Salvi
Anjul Patney
Aaron Eliot Lefohn
Donald Lee Brittain
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
Application filed by Nvidia Corp filed Critical Nvidia Corp
Publication of DE102018117813A1 publication Critical patent/DE102018117813A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • G06T5/70
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/002Image coding using neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/044Recurrent networks, e.g. Hopfield networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • G06T3/16
    • G06T5/60
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20081Training; Learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20084Artificial neural networks [ANN]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20172Image enhancement details
    • G06T2207/20182Noise reduction or smoothing in the temporal domain; Spatio-temporal filtering

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Evolutionary Computation (AREA)
  • Artificial Intelligence (AREA)
  • General Health & Medical Sciences (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Biophysics (AREA)
  • Biomedical Technology (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Computational Linguistics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Health & Medical Sciences (AREA)
  • Multimedia (AREA)
  • Image Processing (AREA)

Abstract

Ein Verfahren, ein computerlesbares Medium und ein System werden zur zeitlichen stabilen Datenrekonstruktion offenbart. Eine Sequenz von Eingangsdaten, die Artefakte umfasst, wird empfangen. Ein erster Eingangsdatenrahmen wird unter Verwendung von Schichten eines neuronalen Netzwerkmodells verarbeitet, um einen externen Zustand zu erzeugen, der einen rekonstruierten ersten Datenrahmen umfasst, der den ersten Eingangsdatenrahmen ohne Artefakte approximiert. Ein verborgener Zustand, der während des Verarbeitens der ersten Eingangsdaten erzeugt wird, wird nicht als eine Eingabe in die Schicht bereitgestellt, um zweite Eingangsdaten zu verarbeiten. Der externe Zustand wird unter Verwendung von Differenzdaten verformt, die Änderungen zwischen Eingangsdatenrahmen entsprechen, um einen verformten externen Zustand zu erzeugen, der mit dem zweiten Eingangsdatenrahmen enger ausgerichtet ist. Der zweite Eingangsdatenrahmen wird basierend auf dem verformten externen Zustand unter Verwendung der Schichten des neuronalen Netzwerkmodells verarbeitet, um einen rekonstruierten zweiten Datenrahmen zu erzeugen, der den zweiten Datenrahmen ohne Artefakte approximiert.

Description

  • GEBIET DER ERFINDUNG
  • Die vorliegende Erfindung betrifft eine Datenrekonstruktion und insbesondere eine zeitlich stabile Datenrekonstruktion unter Verwendung eines neuronalen Netzwerks.
  • HINTERGRUND
  • Eine Bildrekonstruktion wird verwendet, um Artefakte von Eingangsbildern zu entfernen. Beispiele von Artefakten umfassen fehlende Pixeldaten, Aliasing, Rauschen und niedrige Auflösung. Als Beispiel ist Anti-Aliasing ein seit langem bestehendes Problem bei der synthetischen Bildsynthese. Vorfilterungstechniken sind übliche Anti-Aliasing-Lösungen für Texturkarten, wobei jedoch praktische Vorfilterungslösungen für Sichtbarkeit und Beleuchtungsprobleme ungelöst bleiben. Auf Anti-Aliasing wird beim Offline-Rendering als Teil des allgemeinen Monte-Carlo-Abtastprozesses und daher durch Erhöhen der Anzahl von Abtastungen pro Pixel in Kombination mit aufwändigen Entrauschungsalgorithmen eingegangen. Im Gegensatz dazu kann sich Echtzeit-Rendering nicht die Zeit leisten, zusätzliche Abtastungen pro Pixel zu berechnen, und stützt sich somit auf angenäherte Lösungen basierend auf räumlich-zeitlichen Bildrekonstruktionsfiltern, die auf eine Abtastung pro Pixelbildern angewendet werden. Algorithmen, wie beispielsweise zeitliches Anti-Aliasing (TAA = temporal anti-aliasing), verringern sehr den Umfang an Aliasing, wobei jedoch ebenfalls zu beanstandende Artefakte eingeführt werden, wie beispielsweise Überverwischung, Geisterbilder und Flimmern. Es gibt einen Bedarf, sich diesen Angelegenheiten und/oder anderen Angelegenheiten zu widmen, die dem Stand der Technik zugeordnet sind.
  • ZUSAMMENFASSUNG
  • Ein Verfahren, ein computerlesbares Medium und ein System werden zur zeitlichen stabilen Datenrekonstruktion offenbart. Eine Sequenz von Eingangsdaten, die Artefakte umfassen, wird empfangen. Die Sequenz umfasst einen ersten Eingangsdatenrahmen und einen zweiten Eingangsdatenrahmen. Der erste Eingangsdatenrahmen wird unter Verwendung von Schichten eines neuronalen Netzwerkmodells verarbeitet, um einen externen Zustand zu erzeugen, der einen rekonstruierten ersten Datenrahmen umfasst, der den ersten Eingangsdatenrahmen ohne Artefakte approximiert, wobei ein verborgener Zustand, der durch eine der Schichten während des Verarbeitens des ersten Eingangsdatenrahmens erzeugt wird, nicht als eine Eingabe in die erste der Schichten bereitgestellt wird, um den zweiten Eingangsdatenrahmen zu verarbeiten. Der externe Zustand wird unter Verwendung von Differenzdaten verformt, die Änderungen zwischen dem ersten Eingangsdatenrahmen und dem zweiten Eingangsdatenrahmen entsprechen, um einen verformten externen Zustand zu erzeugen. Der zweite Eingangsdatenrahmen wird basierend auf dem verformten externen Zustand unter Verwendung der Schichten des neuronalen Netzwerkmodells verarbeitet, um einen rekonstruierten zweiten Datenrahmen zu erzeugen, der den zweiten Datenrahmen ohne Artefakte approximiert.
  • Figurenliste
    • 1A veranschaulicht ein Blockdiagramm eines verformten externen rekurrenten neuronalen Netzwerks gemäß einer Ausführungsform.
    • 1B veranschaulicht ein Ablaufdiagramm eines Verfahrens zur zeitlichen stabilen Datenwiederherstellung gemäß einer Ausführungsform.
    • 1C veranschaulicht ein anderes Ablaufdiagramm des Verfahrens zur zeitlichen stabilen Datenwiederherstellung gemäß einer Ausführungsform.
    • 2A veranschaulicht ein Blockdiagramm des neuronalen Codierer/Decodierer-Netzwerkmodells von 1A gemäß einer Ausführungsform.
    • 2B veranschaulicht ein Diagramm einer rekurrenten neuronalen Netzwerkschicht des Standes der Technik.
    • 2C veranschaulicht ein Diagramm von neuronalen Netzwerkschichten ohne Rekursion des verborgenen Zustands gemäß einer Ausführungsform.
    • 2D veranschaulicht ein Blockdiagramm eines anderen verformten externen rekurrenten neuronalen Netzwerks gemäß einer Ausführungsform.
    • 2E veranschaulicht ein Ablaufdiagramm eines Verfahrens zum Trainieren der verformten externen rekurrenten neuronalen Netzwerke von 1A und 2D zur stabilen Datenwiederherstellung gemäß einer Ausführungsform.
    • 3 veranschaulicht eine Parallelverarbeitungseinheit gemäß einer Ausführungsform.
    • 4A veranschaulicht einen allgemeinen Verarbeitungscluster innerhalb der Parallelverarbeitungseinheit von 3 gemäß einer Ausführungsform.
    • 4B veranschaulicht eine Speicherpartitionseinheit der Parallelverarbeitungseinheit von 3 gemäß einer Ausführungsform.
    • 5A veranschaulicht den Streaming-Multiprozessor von 4A gemäß einer Ausführungsform.
    • 5B ist ein Konzeptdiagramm eines Verarbeitungssystems, das unter Verwendung der PPU von 3 implementiert wird, gemäß einer Ausführungsform.
    • 5C veranschaulicht ein beispielhaftes System, bei dem die verschiedene Architektur und/oder Funktionalität der verschiedenen vorherigen Ausführungsformen implementiert werden kann.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Eine neuronale Netzwerkstruktur, nämlich ein verformtes externes rekurrentes neuronales Netzwerk, kann zum Rekonstruieren von Daten verwendet werden. Das verformte externe rekurrente neuronale Netzwerk kann angewendet werden, um Bilddaten und Nicht-Bilddaten zu rekonstruieren, wie beispielsweise Audiodaten, durch Tiefensensoren (z.B., Lidar, Radar und dergleichen) erfasste Daten, durch Temperatursensoren erfasste Daten, Dichtedaten (z.B., medizinische Bildgebung und geologische Bildgebung) und dergleichen. Das verformte externe rekurrente neuronale Netzwerk ist nicht an jeder Schicht rekurrent und weist einen vorwärtsgekoppelten Fluss auf - wobei lediglich der externe Zustand verformt wird, der durch die letzte Schicht ausgegeben wird. Im Gegensatz dazu wird in einem herkömmlichen rekurrenten neuronalen Netzwerk der bei jeder Schicht erzeugte verborgene Zustand als eine Rückkopplungseingabe in die erzeugende Schicht bereitgestellt. Das verformte externe rekurrente neuronale Netzwerk wird Ende-zu-Ende trainiert, um die Fehler zwischen Paaren von aliasierten und anti-aliasierten (kantengeglätteten) Bildern zu minimieren. Während eines überwachten Trainings lernt das verformte externe rekurrente neuronale Netzwerk, aliasierte Bildmerkmale zu identifizieren und die unerwünschten Artefakte (z.B., aliasierte Bildmerkmale) adaptiv zu entfernen (d.h., auszufiltern) und/oder Bereiche mit fehlender und inkorrekter Information zu modifizieren. Nachdem es trainiert wurde, kann das verformte externe rekurrente neuronale Netzwerk eingesetzt werden, um Daten zu rekonstruieren.
  • 1A veranschaulicht ein Blockdiagramm eines verformten externen rekurrenten neuronalen Netzwerks 100 gemäß einer Ausführungsform. Das verformte externe rekurrente neuronale Netzwerk umfasst ein neuronales Codierer/Decodierer-Netzwerkmodell 110, eine zeitliche Verformungsfunktion 115 und eine Kombiniererfunktion 120. Obwohl das verformte externe rekurrente neuronale Netzwerk 100 im Kontext von Verarbeitungseinheiten beschrieben wird, können ein oder mehrere des neuronalen Codierer/Decodierer-Netzwerkmodells 110, der zeitlichen Verformungsfunktion 115 und der Kombiniererfunktion 120 durch ein Programm, kundenspezifische Schaltungen oder durch eine Kombination von kundenspezifischen Schaltungen und eines Programms durchgeführt werden. Beispielsweise kann das neuronale Codierer/Decodierer-Netzwerkmodell 110 durch eine GPU (Graphikverarbeitungseinheit), eine CPU (zentrale Verarbeitungseinheit) oder einen beliebigen Prozessor implementiert werden, der imstande ist, Schichten eines neuronalen Netzwerks zu implementieren. Des Weiteren werden Fachleute verstehen, dass jedes System, das die Operationen des verformten externen rekurrenten neuronalen Netzwerks 100 durchführt, innerhalb des Umfangs und Wesens von Ausführungsformen der vorliegenden Erfindung ist.
  • Das neuronale Codierer/Decodierer-Netzwerkmodell 110 empfängt Eingangsdaten zum Zeitpunkt t und den verformten externen Zustand von der vorherigen Iteration, d.h. zum Zeitpunkt t-1. Die Eingangsdaten umfassen Artefakte, die während des Rekonstruktionsprozesses entfernt werden, um Ausgangsdaten zu erzeugen, welche die Eingangsdaten ohne die Artefakte approximieren. Der verformte externe Zustand vom Zeitpunkt t-1 umfasst verformte rekonstruierte Daten vom Zeitpunkt t-1.
  • Das neuronale Codierer/Decodierer-Netzwerkmodell 110 verarbeitet die Eingangsdaten und den verformten externen Zustand unter Verwendung von mehreren Schichten, um mindestens einen Filterkern zu erzeugen. In einer Ausführungsform ist der mindestens eine Filterkern eine Sammlung von Filterkernen, die unterschiedlichen räumlichen Bereichen entsprechen. Die Kombiniererfunktion 120 empfängt den mindestens einen Filterkern, die Eingangsdaten vom Zeitpunkt t und die verformten rekonstruierten Daten vom Zeitpunkt t-1. Die Kombiniererfunktion 120 wendet mindestens einen ersten Abschnitt des mindestens einen Filterkerns auf die rekonstruierten Daten an, um gefilterte erste Eingangsdaten zu erzeugen. Die Kombiniererfunktion 120 wendet mindestens einen zweiten Abschnitt des mindestens einen Filterkerns auf die Eingangsdaten an, um gefilterte zweite Eingangsdaten zu erzeugen.
  • In einer Ausführungsform entsprechen die gefilterten ersten Eingangsdaten einem Abschnitt der Eingangsdaten vom Zeitpunkt t-1 ohne Artefakte und die gefilterten zweiten Eingangsdaten entsprechen einem Abschnitt der Eingangsdaten vom Zeitpunkt t. Die Kombiniererfunktion 120 summiert dann die gefilterten ersten Eingangsdaten und die gefilterten zweiten Eingangsdaten, um mindestens einen Abschnitt des externen Zustands zum Zeitpunkt t zu erzeugen. Der externe Zustand zum Zeitpunkt t umfasst einen Abschnitt der rekonstruierten Eingangsdaten zum Zeitpunkt t-1. In einer Ausführungsform wird der mindestens eine Filterkern auf unterschiedliche Abschnitte der rekonstruierten Daten und der Eingangsdaten angewendet, um residuale Abschnitte des externen Zustands zu erzeugen.
  • Die zeitliche Verformungsfunktion 115 empfängt ebenfalls per Datum Differenzen (Differenzdaten), die den Eingangsdaten zum Zeitpunkt t und dem externen Zustand vom Zeitpunkt t-1 entsprechen. Man bemerke, dass, wenn die Eingangsdaten Bilddaten sind, die per Datum Differenzen Bewegungsflussvektoren oder Bewegungsvektoren sein können. Die zeitliche Verformungsfunktion 115 verformt den externen Zustand basierend auf den per Datum Differenzen, um den verformten externen Zustand zum Zeitpunkt t-1 zu erzeugen. Das Verformen richtet den externen Zustand vom Zeitpunkt t-1 mit den Eingangsdaten zum Zeitpunkt t aus. Im Kontext der folgenden Beschreibung umfasst der externe Zustand den verborgenen Zustand von lediglich der letzten Schicht des neuronalen Codierer/Decodierer-Netzwerkmodells 110 und rekonstruierte Daten, welche die Eingangsdaten ohne Artefakte approximieren. Der durch die letzte Schicht erzeugte verborgene Zustand kann implizit Information von vorherigen Eingangsdatenrahmen umfassen, die in den verborgenen Zustand für jeden Zeitschritt aufgenommen wird. In einer Ausführungsform umfasst der externe Zustand Merkmale der Eingangsdaten, die durch das neuronale Codierer/Decodierer-Netzwerkmodell 110 extrahiert werden. In einer Ausführungsform empfängt das neuronale Codierer/Decodierer-Netzwerkmodell 110 den verformten externen Zustand, der rekonstruierte Daten umfasst, vom Zeitpunkt t-1 und die Kombiniererfunktion 120 empfängt die rekonstruierten Daten vom Zeitpunkt t-1.
  • Weitere veranschaulichende Information wird nun hinsichtlich verschiedener optionaler Architekturen und Merkmale 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.
  • Wenn das verformte externe rekurrente neuronale Netzwerk 100 verwendet wird, um anti-aliasierte (kantengeglättete) Bilder zu erzeugen, umfassen die Eingangsbilder Aliasing-Artefakte und der externe Zustand umfasst ein rekonstruiertes Bild, das antialialisiert (kantengeglättet) ist. Wie in 1A gezeigt, wird der externe Zustand durch die zeitliche Verformungsfunktion 115 gemäß Differenzdaten verformt, um einen verformten externen Zustand zu erzeugen, der ein verarbeitetes verformtes rekonstruiertes Bild für ein erstes Bild (Zeitpunkt t-1) in einer Sequenz umfasst. Das Verformen richtet den externen Zustand mit einem nächsten aliasierten Eingangsbild (Zeitpunkt t) in der Sequenz aus. Das nächste aliasierte Eingangsbild und der verformte externe Zustand werden durch das neuronale Codierer/Decodierer-Netzwerkmodell 110 verarbeitet, um einen zweiten externen Zustand zu erzeugen, der ein rekonstruiertes zweites Bild umfasst, welches das nächste aliasierte Eingangsbild (Zeitpunkt t) in der Sequenz ohne Artefakte approximiert (d.h., das anti-aliasierte nächste Bild).
  • In einer Ausführungsform umfasst der externe Zustand die rekonstruierte Eingabe für lediglich ein Bild (das letzte verarbeitete Bild). Durch Anwenden des verformten externen rekurrenten neuronalen Netzwerks 100 über eine Bildsequenz für jeweils ein Bild, gibt das neuronale Netzwerkmodell eine Sequenz von zeitlich stabilen rekonstruierten Bildern für jeweils ein Bild aus. In einer Ausführungsform trägt der externe Zustand Information über ein oder mehrere vorherige Bilder. Das neuronale Codierer/Decodierer-Netzwerkmodell 110 wird trainiert, um räumlich variante Filterkerne unter Verwendung von überwachten Lerntechniken vorherzusagen, um Parameter (z.B., Gewichtungen und Vorspannungswerte) zu lernen, die Bildqualität und zeitliche Stabilität maximieren. In einer Ausführungsform berechnet das neuronale Codierer/Decodierer-Netzwerkmodell 110 ein dynamisches Pro-Pixel-Kernfilter und die Kombiniererfunktion 120 legt den Filterkern auf das Eingangsbild und das rekonstruierte vorherige Bild an.
  • Das verformte externe rekurrente neuronale Netzwerk 100 erreicht eine zeitlich stabile Anti-Aliasing hoher Qualität durch Integrieren von Information von aktuellen und früheren Rahmen. Um eine zeitliche Wiederverwendung zu maximieren, verformt die zeitliche Verformungsfunktion 115 frühere rekonstruierte Bilddaten unter Verwendung der Pro-Pixel-Bewegungsvektoren. Um eine Wiederverwendung zu erreichen, ohne sich den Speicher- und Leistungsmehraufwand von herkömmlichen rekurrenten neuronalen Netzwerke zuzuziehen, verwendet das verformte externe rekurrente neuronale Netzwerk 100 keinen zusätzlichen Speicher während des Inferenzierens und nimmt keine Verlangsamung im Vergleich mit einem vorwärtsgekoppelten neuronalen Netzwerk auf sich.
  • In einer Ausführungsform wird eine Sequenz von einer Abtastung pro Pixel von zeitlich instabilen Bildern in eine zeitlich stabile Bildsequenz umgewandelt, die in der Qualität gleich 16 (oder einem anderen Wert größer als 1) Abtastungenpro-Pixel-Bildern äquivalent ist. Beim Durchführen der Anti-Aliasing leidet die ausgegebene Bildsequenz nicht unter den überverwischenden, geisterbildenden, flimmernden Artefakten von aktuellen Lösungen und das verformte externe rekurrente neuronale Netzwerk 100 erzeugt eine zeitlich stabile Bildsequenz in Echtzeit. Die Rekonstruktionsleistung des verformten externen rekurrenten neuronalen Netzwerks 100 ist von der Bildgröße abhängig und von der Szenenkomplexität unabhängig.
  • 1B veranschaulicht ein Ablaufdiagramm eines Verfahrens 130 zur zeitlichen stabilen Datenwiederherstellung gemäß einer Ausführungsform. Obwohl das Verfahren 130 im Kontext einer Verarbeitungseinheit beschrieben wird, kann das Verfahren 130 ebenfalls durch ein Programm, kundenspezifische Schaltungen oder durch eine 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, das verformte externe rekurrente neuronale Netzwerk 100 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 Erfindung ist.
  • Bei Schritt 135 wird eine Sequenz von Eingangsdaten, die Artefakte umfassen, von dem verformten externen rekurrenten neuronalen Netzwerk 100 empfangen. Die Sequenz umfasst einen ersten Eingangsdatenrahmen und einen zweiten Eingangsdatenrahmen. Im Kontext der folgenden Beschreibung kann ein Eingangsdatenrahmen Bilddaten oder andere Datentypen umfassen.
  • Bei Schritt 140 wird der erste Eingangsdatenrahmen unter Verwendung von Schichten eines neuronalen Netzwerkmodells verarbeitet, um einen externen Zustand zu erzeugen, der einen rekonstruierten ersten Datenrahmen umfasst, der den ersten Eingangsdatenrahmen ohne Artefakte approximiert. In einer Ausführungsform wird der erste Eingangsdatenrahmen durch Schichten des neuronalen Codierer/Decodierer-Netzwerkmodells 110 verarbeitet. Ein verborgener Zustand, der durch eine bestimmte Schicht der Schichten während des Verarbeitens der ersten Eingangsdatenrahmen erzeugt wird, wird nicht als eine Eingabe in die bestimmte Schicht der Schichten bereitgestellt, um den zweiten Eingangsdatenrahmen zu verarbeiten. Mit anderen Worten nimmt jede der Schichten keine Rückkopplungsverbindung auf, um einen verborgenen Zustand zu verwenden, der für einen vorherigen Rahmen erzeugt wurde, um Ausgaben und/oder einen verborgenen Zustand für den aktuellen Rahmen zu erzeugen.
  • Bei Schritt 145 wird der externe Zustand durch die zeitliche Verformungsfunktion 115 unter Verwendung von Differenzdaten verformt, die Änderungen zwischen dem ersten Eingangsdatenrahmen und dem zweiten Eingangsdatenrahmen entsprechen (z.B., optischer Fluss, Bewegungsvektoren oder dergleichen), um einen verformten externen Zustand zu erzeugen. Das Verformen des externen Zustands verankert einzelne Eigenschaften oder Merkmale mit Regionen innerhalb des Datenrahmens. Der verformte externe Zustand ermöglicht eine verbesserte zeitliche Verfolgung durch Integrieren von Information, die sich ändernden Merkmalen über mehreren Rahmen in einer Sequenz zugeordnet ist, wobei zeitlich stabilere rekonstruierte Daten höherer Qualität erzeugt werden. Bei Schritt 150 wird der zweite Eingangsdatenrahmen basierend auf dem verformten externen Zustand unter Verwendung der Schichten des neuronalen Netzwerkmodells verarbeitet, um einen rekonstruierten zweiten Datenrahmen zu erzeugen, der den zweiten Eingangsdatenrahmen ohne Artefakte approximiert.
  • Das neuronale Codierer/Decodierer-Netzwerkmodell 110 wird unter Verwendung von Trainingsdatensätzen trainiert, die Sequenzen von Datenrahmen und Zwischenrahmen-per-Datum Differenzen umfassen, um Kerne vorherzusagen, die zeitlich stabile Sequenzen von rekonstruierten Datenrahmen erzeugen. Bedeutenderweise kann, wenn eingesetzt, das verformte externe rekurrente neuronale Netzwerk 100 eine Rekonstruktion in Echtzeit durchführen, um beispielsweise mit Bildrendering oder Bilderfassung Schritt zu halten.
  • In einer Ausführungsform sind die Parameter (z.B., Gewichtungen und Vorspannungen) des neuronalen Codierer/Decodierer-Netzwerkmodells 110, die während des Trainings bestimmt werden, zur Inferenzzeit unveränderbar und können sich nicht bestimmten Datenregionen innerhalb jedes Rahmens anpassen. In einer anderen Ausführungsform können die Parameter des neuronalen Codierer/Decodierer-Netzwerkmodells 110, die während des Trainings bestimmt werden, während des Inferenzierens modifiziert oder berechnet werden. Kernvorhersagende Netzwerke (KPNs = kernel-predicting networks) ermöglichen einem neuronalen Netzwerkmodell, adaptive räumlichvariierende Kerne durch Training des neuronalen Netzwerkmodells gekoppelt mit einem Filtermodul, wie beispielsweise der Kombiniererfunktion 120, zu erzeugen. Wie in 1A gezeigt, kann ein Kern-vorhersagender Autocodierer durch Zuführen der Ausgabe der räumlich-variierenden Kerne durch das neuronale Codierer/Decodierer-Netzwerkmodell 110 in die Kombiniererfunktion 120 aufgebaut werden. Im Gegensatz zu herkömmlichen KPNs sind Bildsequenzen, die durch das verformte externe rekurrente neuronale Netzwerk 100 erzeugt werden, zeitlich stabil, und die räumlich-variierenden Kerne, die von dem neuronalen Codierer/Decodierer-Netzwerkmodells 110 ausgegeben werden, sind zeitlich stabil.
  • In einer Ausführungsform werden der verformte externe Zustand und der verarbeitete zweite Eingangsdatenrahmen durch das neuronalen Codierer/Decodierer-Netzwerkmodell 110 verarbeitet, um räumlich variierende Filterkerne zu erzeugen. Wenn die Sequenz von Eingangsdaten eine Bildsequenz ist, wendet die Kombiniererfunktion 120 einen ersten Filterkern auf Pixel des rekonstruierten ersten Datenrahmens (vom Zeitpunkt t-1) an und wendet einen zweiten Filterkern auf Pixel des verarbeitete zweiten Eingangsdatenrahmens (vom Zeitpunkt t) an. Die gefilterten Pixel werden kombiniert (d.h., summiert), um einen externen Zustand zu erzeugen, der Pixel der rekonstruierten zweiten Datenrahmens umfasst.
  • In einer Ausführungsform berechnet die Kombiniererfunktion 120 die Farbe eines rekonstruierten Pixels p durch Durchführen des Skalarprodukts der räumlich-variierenden, Kern-vorhergesagten Gewichtungen Ap gegen ein 5×5 Pixelflicken der Eingabe x um p: y ^ p = A p , N 5 × 5 p ( x ) .
    Figure DE102018117813A1_0001
  • Während ein größeres adaptives Filter die Bildqualität verbessern könnte, kann ein 5x5-Kern verwendet werden, um einen guten Ausgleich zwischen Rechenkosten und Rekonstruktionsqualität bereitzustellen, insbesondere weil Aliasing-Artefakte dazu neigen, in kleinem Maßstab aufzutreten. In einer Ausführungsform wird eine räumlich variierende Kern-vorhergesagten Gewichtung von dem 5x5-Rahmenkernfilter Ap entfernt, um sicherzustellen, dass die Ausgabe des neuronalen Codierer/Decodierer-Netzwerkmodell 110 32 Kanäle aufweist. Eine Verlangsamung der Verarbeitung kann auf bestimmten Hardware-Plattformen durch Abrunden der Ausgangskanäle der letzten Faltungsschicht von 34 auf 32 vermieden werden.
  • 1C veranschaulicht ein Ablaufdiagramm des Verfahrens 160 zur zeitlichen stabilen Datenwiederherstellung 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 einem beliebigen Prozessor ausgeführt werden, der imstande ist, das verformte externe rekurrente neuronale Netzwerk 100 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 Erfindung ist.
  • Das Verfahren 160 umfasst Schritte 135, 145 und 150 von dem Verfahren 130. Bei Schritt 135 wird eine Sequenz von Eingangsdaten, die Artefakte umfasst, von dem verformten externen rekurrenten neuronalen Netzwerk 100 empfangen. Die Sequenz umfasst einen ersten Eingangsdatenrahmen und einen zweiten Eingangsdatenrahmen. Im Kontext der folgenden Beschreibung kann ein Eingangsdatenrahmen Bilddaten oder andere Datentypen umfassen.
  • Der Schritt 140 des Verfahrens 130 kann Schritte 142, 144, 146 und 148 umfassen. Bei Schritt 142 wird der erste Eingangsdatenrahmen und der verformte externe Zustand für einen vorherigen Datenrahmen unter Verwendung von Schichten des neuronalen Codierer/Decodierer-Netzwerkmodells 110 verarbeitet, um räumlich variierende Kerne zu erzeugen. Der verformte externe Zustand umfasst einen rekonstruierten vorherigen Datenrahmen, der den vorherigen Eingangsdatenrahmen ohne Artefakte approximiert. Ein verborgener Zustand, der durch jede der Schichten während des Verarbeitens des rekonstruierten vorherigen Datenrahmens erzeugt wird, und der erste Eingangsdatenrahmen wird nicht als eine Eingabe in die Schicht bereitgestellt, welche den verborgenen Zustand erzeugt, um den zweiten Eingangsdatenrahmen zu verarbeiten. In einer Ausführungsform umfassen die räumlich variierenden Kerne einen ersten Filterkern und einen zweiten Filterkern.
  • Bei Schritt 144 wendet die Kombiniererfunktion 120 den ersten Filterkern auf den verformten rekonstruierten vorherigen Datenrahmen an, um einen gefilterten Abschnitt des rekonstruierten vorherigen Datenrahmens zu erzeugen. Bei Schritt 146 wendet die Kombiniererfunktion 120 den zweiten Filterkern auf den ersten Eingangsdatenrahmen an, um einen gefilterten Abschnitt des ersten Eingangsdatenrahmen zu erzeugen. Schritte 144 und 146 können wiederholt werden, um zusätzliche gefilterte Abschnitte des rekonstruierten vorherigen Datenrahmens und zusätzliche gefilterte Abschnitte der ersten Eingangsdatenrahmen zu erzeugen.
  • Bei Schritt 148 erzeugt die Kombiniererfunktion 120 den rekonstruierten ersten Datenrahmen durch Summieren des gefilterten Abschnitts des rekonstruierten vorherigen Datenrahmens und des gefilterten Abschnitts des ersten Eingangsdatenrahmens. Der Schritt 148 kann wiederholt werden, um die zusätzlichen gefilterten Abschnitte der verformten rekonstruierten vorherigen Datenrahmen und die zusätzlichen gefilterten Abschnitte des ersten Eingangsdatenrahmens zu summieren. Die Schritte 145 und 150 werden abgeschlossen, wie zuvor beschrieben.
  • Um das neuronale Codierer/Decodierer-Netzwerkmodell 110 am besten zu verstehen, ist eine Überprüfung einer Implementierung unter Verwendung eines neuronalen Faltungsnetzwerks (CNN) lehrreich. Ein CNN stapelt Faltungsschichten, die mittels stochastischen Gradientenabstiegs (SGD = stochastic gradient descent) trainiert werden. Jede Faltungsschicht C n × n l
    Figure DE102018117813A1_0002
    wendet eine Faltung W1 über eine n × n-Region der vorherigen Schichtaktivierung a1-1 an und versetzt das Ergebnis mittels eines Vorspannungsvektors b1 gefolgt von einer nichtlinearen Funktion σ: a l = C n × n l ( a l 1 ) = σ ( W l a l 1 + b l ) .
    Figure DE102018117813A1_0003
  • Komplexe CNNs stapeln Dutzende von Schichten und erzeugen sehr tiefe Datendarstellungen von Hunderten von Merkmalskanälen per Datum. Um Ergebnisse des Standes der Technik zu erreichen, sind erhebliche Rechenressourcen erforderlich, was das Fehlen von tiefen neuronalen Netzwerken (DNN) beim Echtzeitrendering teilweise erklärt. Die kürzliche Einführung von GPU-Tensorkernen, welche die Matrixmultiplikation gemischter Präzision beschleunigen, ermöglicht die Verwendung von DNNs zur Echtzeitverarbeiten.
  • Faltungsautocodierer sind eine Klasse von tiefen neuronalen Netzwerken, die Ende-zu-Ende Abbildungen zwischen Bildern lernen. Ein erster Codiererblock extrahiert eine fortschreitend komprimierte Darstellung der Eingabe x durch eine Sequenz von Faltungsschichten gefolgt von einem Poolbildungsoperator Pm×m, der durch Berechnen der größten Aktivierung in einer m × m-Region abwärtsabtastet. Der Poolbildungsoperator kann Max-Poolbildung, Durchschnitts-Poolbildung oder andere Poolbildungstypen implementieren. Beginnend mit e0 = x können nachfolgende Codiererstufen berechnet werden als: e i + 1 = P m × m ( C n × n ( C n × n ( e i ) ) ) .
    Figure DE102018117813A1_0004
  • Die letzte Codiererstufe erzeugt eine latent variable Darstellung der Eingabe, die durch eine Folge von Decodiererstufen entkomprimiert wird: d i + 1 = U k × k ( C n × n ( C n × n ( d i ) ) ) ,
    Figure DE102018117813A1_0005
    wobei Uk×k ein k×k Aufwärtsabtastoperator ist. Schließlich wird das Ausgangsbild berechnet als: y ^ = ( C n × n ( C n × n ( d 0 ) ) ) .
    Figure DE102018117813A1_0006
  • Daher kann Anti-Aliasing als ein Bildrekonstruktionsproblem modelliert werden und ein Faltungsautocodierer kann als ein Startpunkt verwendet werden, um das neuronale Codierer/Decodierer-Netzwerkmodell 110 zu entwickeln.
  • 2A veranschaulicht ein Blockdiagramm des neuronalen Codierer/Decodierer-Netzwerkmodells 110 von 1A gemäß einer Ausführungsform. In einer Ausführungsform verwendet jede Stufe des Codiererabschnitts des neuronalen Codierer/Decodierer-Netzwerkmodells 110 eine Faltungsschicht und eine Poolbildungsschicht. In einer Ausführungsform werden 3x3-Faltungen in dem neuronalen Codierer/Decodierer-Netzwerkmodell 110 verwendet. In einer Ausführungsform sind die Faltungsschichten des Codiererabschnitts gleich NxN, jeweils gefolgt von einer 2x2-Max-Poolbildungsschicht, wobei N=32, 64, 96, 128, 160 und 160 in einer vorwärtsgekoppelten Sequenz mit der Ausgabe von jeder Max-Poolbildungsschicht sind, die in jede Faltungsschicht eingegeben wird. In einer Ausführungsform werden „strided“ Faltungen anstatt von Poolbildung verwendet. In einer Ausführungsform verwendet jede Stufe des Decodiererabschnitts des neuronalen Codierer/Decodierer-Netzwerkmodells 110 eine nächste Aufwärtsabtastschicht gefolgt von zwei Faltungsschichten. In einer Ausführungsform sind ein Paar von Faltungsschichten des Decodiererabschnitts gleich NxN, wobei jeweils eine nächste 2x2-Aufwärtsabtastschicht vorangeht, wobei N=160, 128, 96, 64 und 32 in einer vorwärtsgekoppelten Sequenz, wobei die Ausgabe jeder Aufwärtsabtastschicht in jedes Faltungsschichtpaar eingegeben wird. In einer Ausführungsform wird die Ausgabe jeder Codiererstufe in die entsprechende Decodiererstufe über eine residuale Übersprungsverbindung propagiert und mit der Ausgabe einer Aufwärtsabtastschicht akkumuliert. Die residualen Übersprungsverbindungen verbessern die Rekonstruktionsqualität und können ein schnelleres Training von tiefen Faltungsnetzwerken durch Verbessern der Rückpropagierung von Gradienten ermöglichen.
  • In einer Ausführungsform benutzt das neuronale Codierer/Decodierer-Netzwerkmodell 110 spezialisierte Tensorkerne innerhalb einer GPU, wie beispielsweise die Tensorkerne innerhalb der in 3 gezeigten PPU 300. Um Nutzen aus den Tensorkernen zu ziehen, werden 16-Bit-Tensoren und Gewichtungen verwendet. In einer Ausführungsform sind die langsamsten Schichten eines neuronalen Codierer/Decodierer-Netzwerkmodells 110 die äußersten Schichten mit hoher Auflösung. Die Kosten einer 3x3-Faltungsschicht bei 1080 Pixelauflösung variiert mit den Eingabe- und Ausgabekanalzahlen. Insbesondere tritt eine geringe Variation auf, wenn sich die Ausgabekanalzahl von 8 in 64 ändert, wobei jedoch eine erhebliche Verlangsamung bei 40 Eingangskanälen stattfindet. Somit wird, um die Leistung zu maximieren, in einer Ausführungsform die Anzahl von Eingangskanälen für Faltungsschichten auf 32 beschränkt. In einer Ausführungsform wird, wenn die CUDA API verwendet wird, um Matrixoperationen an den Tensorkernen zu implementieren, jede nächsten Aufwärtsabtastschicht mit der folgenden residualen Übersprungsverbindung verschmolzen, so dass beide Operationen innerhalb des gleichen CUDA-Kerns stattfinden.
  • Das Definieren spezifischer Schicht- und Kanalzahlen ist zum Erreichen hoher Bildqualität und zeitlicher Stabilitätsleistung eines neuronalen Codierer/Decodierer-Netzwerkmodells nicht so relevant, weil Echtzeitleistungseinschränkungen meistens diktieren, wie viele Schichten bei höherer Auflösung verwendet werden können. Die externe Rekursion und Verformungsmerkmale des neuronalen Codierer/Decodierer-Netzwerkmodells 110 sind wichtiger, um eine hohe Bildqualität und eine zeitliche Stabilität zu erreichen.
  • Ein Faltungsautocodierer ist ein zustandsloses vorwärtsgekoppeltes neuronales Netzwerk, das sich an keine Information von vergangenen Rahmen erinnert. Des Weiteren kann ein herkömmlicher Autocodierer keine zeitlich kohärente Darstellung der Eingangsdaten lernen, wenn er lediglich an einem einzige Bildpaar trainiert wird (jedes Bildpaar umfasst ein Bild mit Artefakten und ein „Bodenwahrheits(ground truth)“-Bild ohne die Artefakte). Ein Speisen der neuronalen Netzwerksequenzen mit mehreren Rahmen fügt Rechen- und Speichermehraufwand hinzu, die ohne Weiteres eine optimierende Inferenzleistung für Echtzeit-Rendering-Anwendungen verhindern können.
  • 2B veranschaulicht ein Diagramm einer rekurrenten neuronalen Netzwerkschicht 205 des Standes der Technik. Neurone oder Knoten (durch Kreise dargestellt) in einer ersten rekurrenten Faltungsschicht erzeugen Ausgaben an Neuronen oder Knoten einer zweiten Faltungsschicht. Die rekurrente Faltungsschicht ist eine zustandsbehaftete Maschine, die lernen kann, wie vergangene Information zu verwenden ist, die durch die rekurrente Faltungsschicht erzeugt und im verborgenen Zustand hi-1 gespeichert wird, um eine neue Eingabe xi zu verarbeiten, während der verborgene Zustand hi erzeugt wird. RNN-Schichten verarbeiten beliebig lange Sequenzen von Eingaben, wie beispielsweise Bildsequenzen, und sind natürliche Kandidaten für eine zeitlich stabile Bildrekonstruktion. Der verborgene Zustand, der von der ersten rekurrente Faltungsschicht während der Verarbeitung eines ersten Rahmens erzeugt wird, wird gespeichert und als eine Eingabe in die erste rekurrente Faltungsschicht bereitgestellt, um einen zweiten Rahmen zu verarbeiten.
  • 2C veranschaulicht ein Diagramm von Schichten einer externen neuronalen Netzwerkschicht 220 ohne verborgene Zustandsrekursion gemäß einer Ausführungsform. Anstatt den verborgenen Zustand zu empfangen, der durch die erste Faltungsschicht während des Verarbeitens eines vorherigen Rahmens erzeugt wird, empfängt die erste Faltungsschicht den verformten externen Zustand, der durch das neuronale Codierer/Decodierer-Netzwerkmodell 110 während des Verarbeitens eines vorherigen Rahmens erzeugt wird. Das neuronale Codierer/Decodierer-Netzwerkmodell 110 arbeitet als eine einzige rekurrente Schicht.
  • Der verformte externe Zustand, der durch das neuronale Codierer/Decodierer-Netzwerkmodell 110, die Kombiniererfunktion 120 und die zeitliche Verformungsfunktion 115 erzeugt wird, wirkt als der verborgene Zustand für das neuronale Codierer/Decodierer-Netzwerkmodell 110 und wird als Eingabe zusammen mit dem nächsten Datenrahmen verwendet. Die externe Rekursionskonfiguration weist vier wesentliche Vorteile auf. Erstens kann das neuronale Codierer/Decodierer-Netzwerkmodell 110 mit Datenrahmensequenzen trainiert werden, die dem neuronalen Codierer/Decodierer-Netzwerkmodell 110 ermöglichen, Ergebnisse hoher Qualität sowie auch zeitlich kohärente Ergebnisse auszugeben. Zweitens wird der externe Zustand nur auf einige Megabyte pro Datenrahmen reduziert. Drittens sind die zusätzlichen Kosten, um den externen Zustand zu verarbeiten, so gut wie Null auf modernen GPUs. Schließlich wirkt zur Inferenzzeit das neuronale Codierer/Decodierer-Netzwerkmodell 110 wie ein nicht-rekurrentes neuronales Netzwerk, das die Verwendung von einfacheren Schichtmodellen ermöglicht, da kein interner Zustand gespeichert oder aktualisiert wird.
  • Die alleinige Verwendung einer externen Wiederholung ist jedoch unzureichend, um zeitlich kohärente Ergebnisse zu gewährleisten. Die Max-Poolbildungsschichten innerhalb des neuronalen Codierer/Decodierer-Netzwerkmodells 110 zwingen wirksam das Lernen von Translationsinvarianz von Datenmerkmalen innerhalb der Rahmen. Obwohl zur Klassifizierung nützlich, verringert die Translationsinvarianz die Fähigkeit eines neuronalen Netzwerks, Entsprechungen zwischen Merkmalen von aktuellen und früheren Datenrahmen genau zu identifizieren, was die zeitliche Wiederverwendung entlang Kanten (wo die zeitliche Wiederverwendung am Wichtigsten ist) verschlechtert.
  • Daher werden Bewegungsdaten verwendet, wie beispielsweise Pro-Pixel-Bewegungsvektoren, die durch moderne Echtzeitanwendungen oder andere Quellen erzeugt werden, wie beispielsweise durch optische Flussanalyse, um den externen Zustand zu verformen. In einer Ausführungsform wird der externe Zustand mit einem Reprojektionsfilter θ verformt, um den externen Zustand zum Zeitpunkt t-1 mit dem aktuellen Datenrahmen zum Zeitpunkt t auszurichten. In einer Ausführungsform ist das Reprojektionsfilter ein bilinearer, bikubischer oder ein beliebiger anderer Filtertyp. Wenn das verformte externe rekurrente neuronale Netzwerk 100 verwendet wird, um Anti-Aliasing durchzuführen, richtet das Verformen Pixel von früheren Bildrahmen auf die gleichen Oberflächen in dem aktuellen Bildrahmen aus, wobei Bereichsbeschränkungen entfernt werden, die durch ein Empfangsfeld des neuronalen Codierer/Decodierer-Netzwerkmodells 110 auferlegt werden, und kleinen Kernen ermöglicht wird, Entsprechungen mit früheren Bildrahmen zu finden. Am Anfang jeder Trainingsiteration werden Differenzdaten für den Eingangsdatenrahmen von der zeitlichen Verformungsfunktion 115 verwendet, um Pixel von dem vorherigen rekonstruierten Datenrahmen unter Verwendung von bilinearem Filtern zu holen, um die geholten Ergebnisse zu glätten. Das Stützen auf Differenzdaten ermöglicht ein effizientes Suchen, um Entsprechungen zwischen Merkmalen zu identifizieren. Der verformte (d.h., reprojizierte) externe Zustand koinzidiert mit dem letzten aliasierten (kantengeglätteten) Bild. Das Verformen ist jedoch nicht auf Anti-Aliasing beschränkt und findet auf jeden verborgenen Zustand Anwendung, der Darstellungen höheren Niveaus von Bildern oder andere Daten enthält.
  • Weil der externe Zustand und der aktuelle Datenrahmen ausgerichtet sind, wird das neuronale Codierer/Decodierer-Netzwerkmodell 110 expliziert trainiert, um räumlich zeitliche Filter zu erzeugen, welche die zuvor rekonstruierten Datenrahmen mit dem aktuellen Datenrahmen integrieren, während neue Abtastungen „halluziniert“ werden. Gleichung (1) wird modifiziert, um einen zweiten 3x3-Pixelkern B zu umfassen, der durch das neuronale Codierer/Decodierer-Netzwerkmodell 110 erzeugt wird, der auf den verformten verborgenen Zustand θ(h) wirkt: y ^ p = A p , N 5 × 5 p ( x ) + B p , N 3 × 3 p ( θ ( h ) ) .
    Figure DE102018117813A1_0007
  • Eine kleinere Pixelbasisfläche wird im Kern B verwendet, weil es weniger wahrscheinlich ist, dass gespeicherte Bildmerkmale im verborgenen Zustand Aliasing-Artefakte enthalten, und der kleinere Kern ermöglicht eine schnellere Leistung. In einer Ausführungsform wird eine räumlichvariierende Kern-vorhergesagten Gewichtung von jedem der (5x5)-Pixelkernen Ap und dem (3×3)-Pixelkernen B entfernt, um sicherzustellen, dass die Ausgabe des neuronalen Codierer/Decodierer-Netzwerkmodells 110 Ausgabe 32 Kanäle aufweist.
  • Das verformte externe rekurrente neuronale Netzwerk 100, das durch Gleichung (1) und Gleichung (2) angesteuert wird, liefert einen erheblich niedrigeren räumlichen und zeitlichen Fehler, wobei die rekonstruierte Datenqualität und die zeitliche Stabilität verbessert wird. Die Vorgehensweise in Gleichung (2) diktiert kein bestimmtes Integrationsverfahren, sondern lässt das neuronale Codierer/Decodierer-Netzwerkmodell 110 lernen, wie die einzelnen Abtastungen am besten zu akkumulieren und zurückzuweisen sind.
  • 2D veranschaulicht ein Blockdiagramm eines anderen verformten externen rekurrenten neuronalen Netzwerks 200 gemäß einer Ausführungsform. Das verformte externe rekurrente neuronale Netzwerk 200 umfasst ein neuronales Codierer/Decodierer-Netzwerkmodell 210, die zeitliche Verformungsfunktion 115 und eine Parametereinstelleinheit 215. Obwohl das verformte externe rekurrente neuronale Netzwerk 200 im Kontext von Verarbeitungseinheiten beschrieben wird, kann ein oder mehrere von dem neuronalen Codierer/Decodierer-Netzwerkmodell 210 und der zeitlichen Verformungsfunktion 115 durch ein Programm, kundenspezifische Schaltungen oder durch eine Kombination von kundenspezifischen Schaltungen und ein Programm durchgeführt werden. Beispielsweise kann das neuronale Codierer/Decodierer-Netzwerkmodell 210 durch eine GPU (Graphikverarbeitungseinheit), eine CPU (zentrale Verarbeitungseinheit) oder einen beliebigen Prozessor implementiert werden, der imstande ist, Schichten eines neuronalen Netzwerks zu implementieren. Des Weiteren werden Fachleute verstehen, dass jedes System, das die Operationen des verformten externen rekurrenten neuronalen Netzwerks 200 durchführt, innerhalb des Umfangs und Wesens von Ausführungsformen der vorliegenden Erfindung ist.
  • Anstatt räumlich variierende Filterkernen zu erzeugen, wie es von dem neuronalen Codierer/Decodierer-Netzwerkmodell 110 getan wird, erzeugt das neuronale Codierer/Decodierer-Netzwerkmodell 210 die rekonstruierten Daten direkt. Der externe Zustand umfasst die rekonstruierten Daten. Das verformte externe rekurrente neuronale Netzwerk 200 kann verwendet werden, um die rekonstruierten Daten direkt ohne Zwischenerzeugung von Kernfiltern zu erzeugen.
  • Die Parametereinstelleinheit 215 empfängt den Trainingsdatensatz, der Sequenzen von Ausgabe- und Zieldatenrahmenpaaren umfasst. Die Parametereinstelleinheit 215 empfängt die rekonstruierten Daten und den Zieldatenrahmen und stellt Parameter des neuronalen Codierer/Decodierer-Netzwerkmodells 210 basierend auf Fehlern zwischen den rekonstruierten Daten und den Zieldatenrahmen ein. Nachdem das Training abgeschlossen ist, werden die Parameter festgelegt und das neuronale Codierer/Decodierer-Netzwerkmodell 210 kann eingesetzt werden, um eine Datenrekonstruktion durchzuführen. Nachdem Training kommt der Einsatz der Parametereinstelleinheit 215 und der zeitlichen Verformungsfunktion 115 nicht mehr zum Einsatz. Obwohl in 1A nicht gezeigt, kann die Parametereinstelleinheit 215 ebenfalls während des Trainings des neuronalen Codierer/Decodierer-Netzwerkmodells 110 verwendet werden.
  • Das Ziel für die verformten externen rekurrenten neuronalen Netzwerke 100 und 200 ist, rekonstruierte Daten ŷ zu erzeugen, die mit der Referenzlösung y so eng wie möglich übereinstimmen. Mit anderen Worten ist das Ziel, den Vektor aller Faltungsparameter (z.B., Gewichtungen und Vorspannungen) der neuronalen Codierer/Decodierer-Netzwerkmodelle 110 oder 210 zu finden, der die Fehler oder Verlustfunktion an den Trainingsdaten minimiert, ohne sie überanzupassen. Weil die Wahl der Verlustfunktion das Ergebnis des Trainingsprozesses erheblich ändern kann, kann die Verlustfunktion variieren.
  • Der mittlere quadratische Fehler, ebenfalls als L2-Verlust bekannt, ist ein häufig verwendeter pixelweiser Verlust: L p = 1 3 y ^ y 2 2
    Figure DE102018117813A1_0008
    wobei Gleichung (3) jedoch bekannt ist, verschwommene Ergebnisse zu erzeugen, wenn sie mit Faltungsautocodierern verwendet wird. Als eine Alternative zu dem L2-Verlust kann jede Metrik verwendet werden, die sich monoton null annähert, wenn sich die Rekonstruktion Bodenwahrheit annähert.
  • Wahrnehmungsverluste sind eine kürzlich eingeführte Klasse von Verlustfunktionen basierend auf Merkmalen hohen Niveaus, die von vortrainierten Faltungsnetzwerken zur Bildklassifizierung extrahiert wurden. Obwohl noch nicht vollständig verstanden, geben die Wahrnehmungsverluste visuell ansprechende Ergebnisse. Zuerst werden die Merkmale hohen Niveaus ϕj erhalten, die von der Eingabe in alle Poolbildungsschichten eines vortrainierten neuronalen Netzwerks extrahiert wurden. Zweitens werden die L2-Verluste berechnet, die durch die Anzahl von Merkmalskanälen cj von jeder Schicht normiert wurden, gefolgt von einem nächsten Aufwärtsabtastoperator Uj, um alle Terme bei der gleichen räumlichen Auflösung auszugleichen. Schließlich wird eine Mittelwertbildung über alle Schichten durchgeführt: L ϕ = 1 l j = 1 l U j ( 1 c j ϕ j ( y ^ ) ϕ j ( y ) 2 2 )
    Figure DE102018117813A1_0009
  • Die pixelweisen Verluste und Wahrnehmungsverluste werden ebenfalls nach der Gewichtung der pixelweisen Verluste und Wahrnehmungsverluste kombiniert, um ihre Beiträge grob auszugleichen: L p , ϕ = w p L p + w ϕ L ϕ ,
    Figure DE102018117813A1_0010
    wobei wp = 2 ·10-4 und wϕ= 10-6. L2-basierte zeitliche Terme werden für sowohl r die pixelweisen Verluste als auch die Wahrnehmungsverluste eingeführt: p t = 1 3 t ( y ^ y ) 2 2
    Figure DE102018117813A1_0011
    ϕ t = 1 l j = 1 l j ( 1 c j t ( ϕ j ( y ^ ) ϕ j ( y ) ) 2 2 )
    Figure DE102018117813A1_0012
    und Gleichungen (6) und (7) werden verwendet, um die Gleichung (5) zu verstärken: L p , ϕ = w p ( L p + L p t ) + w ϕ ( L ϕ + L ϕ t )
    Figure DE102018117813A1_0013
  • Schließlich werden räumliche Gradiententerme analog zu Gleichungen 6 und 7, die nachweislich die Schärfe in Videointerpolationsaufgaben ebenfalls einbezogen: L p , ϕ t = w p ( L p + L p t ) + w ϕ ( L ϕ + L ϕ t )
    Figure DE102018117813A1_0014
  • In einer Ausführungsform kann, um das Training zu stabilisieren und die Konvergenz sicherzustellen, die Norm von Gradienten auf 0,001 beschnitten werden. In einer Ausführungsform wird eine tanh-Aktivierung in der letzten Faltungsschicht des neuronalen Codierer/Decodierer-Netzwerkmodells 110 oder 210 verwendet, um Verlustkonvergenz zu verbessern.
  • 2E veranschaulicht ein Ablaufdiagramm eines Verfahrens 250 zum Trainieren der verformten externen rekurrenten neuronalen Netzwerke 100 und 200 zur stabilen Datenwiederherstellung 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 einem 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, das verformte externe rekurrente neuronale Netzwerk 100 oder 200 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 Erfindung ist.
  • Das Verfahren 250 umfasst Schritte 135, 140, 145 und 150 von dem Verfahren 130. Bei Schritt 135 wird eine Sequenz von Eingangsdaten von einem Trainingsdatensatz von dem verformten externen rekurrenten neuronalen Netzwerk 100 oder 200 empfangen. Der Trainingsdatensatz umfasst Sequenzen von Eingangsdaten, die Artefakte und entsprechende Sequenzen von Sollausgangsdaten ohne Artefakte umfassen. Die Leistung des verformten externen rekurrenten neuronalen Netzwerks 100 oder 200 wird verbessert, wenn der Trainingsdatensatz die Typen von Artefakten umfasst, die in den Sequenzen von Eingangsdaten existieren, die wiederherzustellen sind, wenn das verformte externe rekurrente neuronale Netzwerk 100 oder 200 eingesetzt wird. Während des Trainings kann die Auflösung des externen Zustands, insbesondere des externen Zustands, der nicht die rekonstruierten Daten ist, verändert werden.
  • Bei Schritt 255 bestimmt die Parametereinstelleinheit 215, ob das Training abgeschlossen ist. Eine Verlustfunktion kann durch die Parametereinstelleinheit 215 berechnet werden, um Abstände (d.h., Differenzen oder Gradienten) zwischen den Sollausgangsdaten und den rekonstruierten Daten zu messen. Das neuronale Codierer/Decodierer-Netzwerkmodell 110 oder 210 wird als ausreichend trainiert erachtet, wenn die rekonstruierten Daten, die für die Eingangsdaten des Trainingsdatensatzes erzeugt wurden, mit den Sollausgangsdaten übereinstimmen oder eine Schwellenwertgenauigkeit für den Trainingsdatensatz erreicht wird.
  • Wenn das Training bei Schritt 255 nicht abgeschlossen ist, dann stellt die Parametereinstelleinheit 215 bei Schritt 260 die Parameter basierend auf Differenzen zwischen dem Sollausgangsdatenrahmen und dem Ausgabe Datenrahmens ein, bevor zu Schritt 135 zurückgekehrt wird, um zusätzliche Sequenzen zu verarbeiten. Die Parametereinstelleinheit 215 ist konfiguriert, um die Parameterwerte einzustellen, um Differenzen zwischen den Sollausgangsdaten und den rekonstruierten Daten zu verringern. Wenn das Training bei Schritt 265 abgeschlossen ist, dann wird das neuronale Codierer/Decodierer-Netzwerkmodell 110 oder 210 eingesetzt, um Sequenzen von Datenrahmen zu rekonstruieren.
  • Die verformten externen rekurrenten neuronalen Netzwerke 100 und 200 werden mit drei wesentlichen Zielen ausgestaltet: Anti-Aliasing-Bildqualität, zeitliche Stabilität und Echtzeitleistung. Um die Ziele zu erreichen, wird eine Wiederholung benutzt, um zu helfen, die resultierende zeitliche Stabilität zu verbessern und Effizienz sicherzustellen. Im Gegensatz zu herkömmlichen Autocodierern wird die Wiederholung jedoch externalisiert, so dass die vorherige Ausgabe eine zusätzliche Eingabe in das neuronale Codierer/Decodierer-Netzwerkmodell 110 oder 210 ist. Schließlich wird eine zeitliche Verformung angewendet, um die vergangene Ausgabe mit dem aktuellen Rahmen auszurichten, wobei die Fähigkeit des neuronalen Codierer/Decodierer-Netzwerkmodells 110 oder 210 erheblich verbessert wird, vergangene Information zu verwenden.
  • Die relative visuelle Qualität der Bildsequenzen, die von den verformten externen rekurrenten neuronalen Netzwerken 100 und 200 ausgegeben werden, ist wesentlich besser als Echtzeitalternativen und nähert sich der Qualität von überabgetasteten Bildsequenzen an. Um die hohe Qualität und die zeitlich hochstabilen Ergebnisse zu erzeugen, ist lediglich eine einzige Abtastung pro Pixelfarbe für Eingangsbildrahmen zusammen mit Bewegungsvektoren erforderlich. Im Gegensatz dazu werden für Supersample-Anti-Aliasing-Techniken mindestens 16 Abtastungen pro Pixelfarbe für jedes Pixel benötigt, um Ausgangsbildrahmen ähnlicher Qualität zu erzeugen.
  • Die Verwendung einer externen Wiederholung mit zeitlicher Verformung erzeugt durchgängig eine bessere statische Bildqualität und kantengeglättete Bildsequenzen, die zeitlich stabiler sind. Außerdem leiden die ausgegebenen Bildsequenzen ebenfalls nicht unter verschwommenen oder geisterbildenden Artefakten, was eine häufige Beschwerde gegen herkömmliche Anti-Aliasing-Techniken ist. Zusammenfassend sind verformte externe rekurrente neuronale Netzwerke 100 und 200 imstande, Anti-Aliasing mit qualitativ hohen Ergebnissen und ohne irgendwelche zusätzlichen Artefakte durchzuführen. Wenn die neuronalen Codierer/Decodierer-Netzwerkmodelle 110 und 210 Ende-zu-Ende trainiert werden, um den Abstand L2 zwischen Paaren von aliasierten und kantengeglätteten Bildern zu minimieren, lernen die neuronalen Codierer/Decodierer-Netzwerkmodelle 110 und 210, aliasierte Bildmerkmale zu identifizieren und die aliasierten Bildmerkmale adaptiv auszufiltern (d.h., die aliasierten Bildmerkmalen zu entfernen).
  • Parallelverarbeitungsarchitektur
  • 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.
  • 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.
  • 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 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.
  • 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.
  • 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.
  • 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 VideoCodierer, 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.
  • 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 ein Bereich 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 310 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.
  • 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.
  • 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.
  • Die Arbeitsverteilungs-Einheit 325 kommuniziert mit dem einen oder mehreren GPCs 350 über eine Kreuzschiene bzw. XBar 370. Die XBar 370 ist ein Zwischenverbindungs-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.
  • Die Aufgaben werden von der Planereinheit 320 verwaltet und an einen GPC 350 von der 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 Partitions-Einheiten 380 geschrieben werden, die eine Speicherschnittstelle zum Lesen und Schreiben von Daten in/von dem Speicher 304 implementieren. Die Ergebnisse können an eine andere PPU 304 oder CPU über den NVLink 310übertragen werden. In einer Ausführungsform umfasst die PPU 300 eine Anzahl U von Partitions-Einheiten 380, die gleich der Anzahl von getrennten und unterschiedlichen Speichervorrichtungen 304 ist, die mit der PPU 300 gekoppelt sind. Eine Partitions-Einheit 380 wird nachstehend ausführlicher in Verbindung mit 4B beschrieben.
  • 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.
  • 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.
  • 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 der einen oder mehreren DPCs 420 konfigurieren, um ein neuronales Netzwerkmodell und/oder eine Rechen-Pipeline zu implementieren.
  • 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) in der Partitions-Einheit 380 weiterzuleiten, die nachstehend ausführlicher in Verbindung mit 4B 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.
  • 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 Kachel-verschmelzende 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.
  • 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.
  • 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.
  • Die MMU 490 stellt eine Schnittstelle zwischen dem GPC 350 und der 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.
  • 4B veranschaulicht eine Speicher-Partitions-Einheit 380 der PPU 300 von 3 gemäß einer Ausführungsform. Wie in 4B gezeigt, umfasst die 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 Partitions-Einheiten 380, wobei jedes Paar von 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 anderen Arten von persistem Speicher verbunden sein.
  • 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 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 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 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.
  • Daten von dem Speicher 304 oder einem anderen Systemspeicher können von der Speiche-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.
  • 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 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 innerhalb der Speicherpartitionseinheit 380 in 4B umfasst ist, kann die ROP-Einheit 450 außerhalb der Speicherpartitionseinheit 380 sein. Beispielsweise kann die ROP-Einheit 450 in der GPC oder einer anderen Einheit liegen.
  • 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 Zwischenverbindungs-Netzwerk 580 und einen gemeinsam benutzten L1-Cache-Speicher 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.
  • Cooperative Groups ist ein Programmiermodell zum Organisieren von Gruppen von kommunizierenden Threads, das 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 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-Primitiven 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.
  • 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.
  • 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.
  • 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 (fullypipelined) 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.
  • Tensorkerne, die konfiguriert sind, um Matrix-Operationen, und in einer Ausführungsform ein oder mehrere Tensorkerne durchzuführen, sind in den Kernen 550 umfasst. Insbesondere sind die Tensorkerne konfiguriert, um Deep-Learning-Matrix-Arithmetik, wie beispielsweise Faltungsoperationen für neuronales 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.
  • 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-SpeicherOperationen bereit, um Tensorkerne von einem CUDA-C++ Programm effizient zu verwenden. Auf der CUDA-Ebene nimmt das Warp-Schnittstellenniveau 16x16 große Matrizen an, die alle 32 Threads des Warp überspannen.
  • 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 von dem 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.
  • 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 Zwischenverbindungs-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 Zwischenverbindungs-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.
  • 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 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.
  • 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.
  • Wenn für Allzweck-Parallelberechnung konfiguriert, 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. 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.
  • 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.
  • Beispielhaftes Rechensystem
  • Systeme mit mehrere GPUs und CPUs werden in einer Vielfalt von Industrien verwendet, sowie 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. Sowie die Anzahl von Verarbeitungsvorrichtungen innerhalb der Hochleistungssysteme zunimmt, müssen die Kommunikations- und Datentransfermechanismen angepasst werden, um die erhöhte Bandbreite zu unterstützen.
  • 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 das in 1A gezeigte Verfahren 100, das in 2A gezeigte Verfahren 200 oder das in 2D gezeigte Verfahren 240 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-Kommunikationsverbindungen zwischen jeder der PPUs 300 bereit. Obwohl eine bestimmte Anzahl von NV-Link 350 und Interconnect 302 Verbindungen in 5B veranschaulicht sind, kann die Anzahl an jeder PPU 300 und der CPU 530 variieren. Der Schalter 510 ist schnittstellenmäßig zwischen dem Interconnect 302 und der CPU 530 verbunden. Die PPUs 300, die Speicher 304 und die NVLinks 310 können auf einer einzigen Halbleiterplattform situiert sein, um ein Parallelverarbeitungsmodul 525 zu bilden. In einer Ausführungsform unterstützt der Schalter 50 zwei oder mehrere Protokolle, um sich schnittstellenmäßig zwischen verschiedenen Verbindungen und/oder Links zu verbinden.
  • 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 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 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 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 NVLink 310 Hochgeschwindigkeits-Kommunikationslinks können als ein NVLink-Interconnect oder entweder als ein Auf-Chip- oder Auf-Die-Interconnect unter Verwendung des gleichen Protokolls wie das NVLink 310 implementiert werden.
  • 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 wesentliche 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 gelegen 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 gelegen.
  • 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, sind fünf NVLink 310 Schnittstellen 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 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.
  • 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 das in 1A gezeigte Verfahren 100, das in 2A gezeigte Verfahren 200 oder das in 2D gezeigte Verfahren 240 zu implementieren.
  • 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(irgendwelchen) 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.
  • 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 gelegen 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 gelegen sein.
  • 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.
  • 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 digitale versatile Disk-(DVD)-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.
  • 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.
  • Die Architektur und/oder Funktionalität der verschiedener vorherigen Figuren kann im Kontext eines allgemeinen Computersystems, eines Platinensystems, 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, von Spielkonsolen, eines eingebetteten Systems und/oder von jedem anderen Typ von Logik annehmen.
  • 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.
  • Maschinenlernen
  • 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, die kontinuierlich lernt, kontinuierlich immer smarter wird und genauere Ergebnisse mit der Zeit schneller 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.
    Beispielsweise wird ein neuronales Lernsystem zur Orientierungspunkt-Lokalisierung und/oder Attributklassifizierung trainiert
  • 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.
  • Ein Modell eines tiefen neuronalen Netzwerks (DNN) umfasst mehrere Schichten von vielen verbundenen Perzeptronen (z.B. Knoten), 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 DLL-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.
  • 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 Nutzer, Identifizieren und Klassifizieren unterschiedlicher Typen von Automobilen, Fußgängern und Straßengefahren in fahrerlosen Wagen oder Übersetzen von menschlicher Sprache in Echtzeit.
  • 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, wo 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.
  • 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 einige zehn bis hunderte von TFLOPS von Leistung liefern, 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.

Claims (13)

  1. Computerimplementiertes Verfahren, umfassend: Empfangen einer Sequenz von Eingangsdaten, die Artefakte umfassen, wobei die Sequenz einen ersten Eingangsdatenrahmen und einen zweiten Eingangsdatenrahmen umfasst; Verarbeiten des ersten Eingangsdatenrahmens unter Verwendung von Schichten eines neuronalen Netzwerkmodells, um einen externen Zustand zu erzeugen, der einen rekonstruierten ersten Datenrahmen umfasst, der den ersten Eingangsdatenrahmen ohne Artefakte approximiert, und ein verborgener Zustand, der durch eine erste der Schichten während der Verarbeitung der ersten Eingangsdaten erzeugt wird, wird nicht als eine Eingabe in die erste der Schichten bereitgestellt, um die zweiten Eingangsdaten zu verarbeiten; Verformen des externen Zustands unter Verwendung von Differenzdaten, die Änderungen zwischen dem ersten Eingangsdatenrahmen und dem zweiten Eingangsdatenrahmen entsprechen, um einen verformten externen Zustand zu erzeugen; und Verarbeiten, basierend auf dem verformten externen Zustand, des zweiten Eingangsdatenrahmens unter Verwendung der Schichten der neuronalen Netzwerkmodelle, um einen rekonstruierten zweiten Datenrahmen zu erzeugen, der den zweiten Datenrahmen ohne Artefakte approximiert.
  2. Computerimplementiertes Verfahren gemäß Anspruch 1, wobei der verformte externe Zustand einen verformten rekonstruierten ersten Datenrahmen umfasst und das Verarbeiten des zweiten Eingangsdatenrahmens ein Verarbeiten des zweiten Eingangsdatenrahmens und des verformten externen Zustands durch das neuronale Netzwerkmodell umfasst, um räumlich variierende Filterkerne zu erzeugen.
  3. Computerimplementiertes Verfahren gemäß Anspruch 2, wobei die räumlich variierenden Filterkerne einen ersten Filterkern und einen zweiten Filterkern umfassen.
  4. Computerimplementiertes Verfahren gemäß Anspruch 3, wobei das Verarbeiten umfasst: Anwenden des ersten Filterkerns auf den rekonstruierten ersten Datenrahmen, um einen gefilterten Abschnitt des verformten rekonstruierten ersten Datenrahmens zu erzeugen; Anwenden des zweiten Filterkerns auf den zweiten Eingangsdatenrahmen, um einen gefilterten Abschnitt des zweiten Eingangsdatenrahmens zu erzeugen; und Summieren des gefilterten Abschnitts des zweiten Eingangsdatenrahmens und des gefilterten Abschnitts des verformten rekonstruierten ersten Datenrahmens, um einen Abschnitt des rekonstruierten zweiten Datenrahmens zu erzeugen.
  5. Computerimplementiertes Verfahren gemäß einem der vorangehenden Ansprüche, wobei das Verarbeiten des zweiten Eingangsdatenrahmens unter Verwendung der Schichten des neuronalen Netzwerkmodells einen zweiten externen Zustand erzeugt, der den rekonstruierten zweiten Datenrahmen umfasst.
  6. Computerimplementiertes Verfahren gemäß einem der vorangehenden Ansprüche, wobei eine Ausgabe jeder Schicht des neuronalen Netzwerkmodells in eine nachfolgende Schicht des ersten neuronalen Netzwerkmodells eingegeben wird.
  7. Computerimplementiertes Verfahren gemäß Anspruch 6, wobei eine Ausgabe einer ersten Schicht des neuronalen Netzwerkmodells in eine letzte Schicht des neuronalen Netzwerkmodells eingegeben wird, wobei eine residuale Übersprungsverbindung gebildet wird.
  8. Computerimplementiertes Verfahren gemäß einem der vorangehenden Ansprüche, wobei die Eingangsdaten Bilddaten und die Differenzdaten Bewegungsdaten sind.
  9. Computerimplementiertes Verfahren gemäß einem der vorangehenden Ansprüche, ferner umfassend ein Einstellen von Parametern des neuronalen Netzwerkmodells basierend auf Differenzen zwischen dem rekonstruierten ersten Datenrahmen und einem Zieldatenrahmen, der den Eingangsdaten entspricht.
  10. Computerimplementiertes Verfahren gemäß einem der vorangehenden Ansprüche, wobei eine Auflösung des externen Zustands während des Trainings des neuronalen Netzwerkmodells eingestellt wird.
  11. System, umfassend: eine Verarbeitungseinheit, die konfiguriert ist, um: eine Sequenz von Eingangsdaten zu empfangen, die Artefakte umfassen, wobei die Sequenz einen ersten Eingangsdatenrahmen und einen zweiten Eingangsdatenrahmen umfasst; den ersten Eingangsdatenrahmen unter Verwendung von Schichten eines neuronalen Netzwerkmodells zu verarbeiten, um einen externen Zustand zu erzeugen, der einen rekonstruierten ersten Datenrahmen umfasst, der den ersten Eingangsdatenrahmen ohne Artefakte approximiert, wobei der verborgene Zustand, der eine erste Schicht der Schichten während des Verarbeitens der ersten Eingangsdaten erzeugt wird, nicht als eine Eingabe in die erste Schicht der Schichten bereitgestellt wird, um die zweiten Eingangsdaten zu erzeugen; Verformen des externen Zustands unter Verwendung von Differenzdaten, die Änderungen zwischen dem ersten Eingangsdatenrahmen und dem zweiten Eingangsdatenrahmen entsprechen, um einen verformten externen Zustand zu erzeugen; und basierend auf dem verformten externen Zustand, den zweiten Eingangsdatenrahmen unter Verwendung der Schichten des neuronalen Netzwerkmodell zu verarbeiten, um einen rekonstruierten zweiten Datenrahmen zu erzeugen, der den zweiten Datenrahmen ohne Artefakte approximiert.
  12. System gemäß Anspruch 11, das ferner konfiguriert wird, um ein Verfahren auszuführen, wie in einem der Ansprüche 2 bis 10 erwähnt.
  13. Nichttransitorisches computerlesbares Speichermedium, das Anweisungen speichert, welche, wenn durch eine Verarbeitungseinheit ausgeführt, die Verarbeitungseinheit veranlassen, ein Verfahren auszuführen, wie in einem der Ansprüchen 1 bis 10 erwähnt.
DE102018117813.1A 2017-07-27 2018-07-24 Zeitlich stabile Datenrekonstruktion mit einem externen rekurrenten neuronalen Netzwerk Pending DE102018117813A1 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201762537800P 2017-07-27 2017-07-27
US62/537,800 2017-07-27
US16/041,502 US20190035113A1 (en) 2017-07-27 2018-07-20 Temporally stable data reconstruction with an external recurrent neural network
US16/041,502 2018-07-20

Publications (1)

Publication Number Publication Date
DE102018117813A1 true DE102018117813A1 (de) 2019-01-31

Family

ID=65003961

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102018117813.1A Pending DE102018117813A1 (de) 2017-07-27 2018-07-24 Zeitlich stabile Datenrekonstruktion mit einem externen rekurrenten neuronalen Netzwerk

Country Status (2)

Country Link
US (2) US20190035113A1 (de)
DE (1) DE102018117813A1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023072866A1 (de) * 2021-10-29 2023-05-04 Siemens Aktiengesellschaft Verfahren zum konfigurieren und steuern eines elektrischen konverters sowie konvertersteuerung und konverter

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018033137A1 (zh) * 2016-08-19 2018-02-22 北京市商汤科技开发有限公司 在视频图像中展示业务对象的方法、装置和电子设备
US10748062B2 (en) 2016-12-15 2020-08-18 WaveOne Inc. Deep learning based adaptive arithmetic coding and codelength regularization
WO2018116248A1 (en) * 2016-12-21 2018-06-28 Innereye Ltd. System and method for iterative classification using neurophysiological signals
US10339443B1 (en) * 2017-02-24 2019-07-02 Gopro, Inc. Systems and methods for processing convolutional neural network operations using textures
US10540574B2 (en) * 2017-12-07 2020-01-21 Shanghai Cambricon Information Technology Co., Ltd Image compression method and related device
US11328210B2 (en) 2017-12-29 2022-05-10 Micron Technology, Inc. Self-learning in distributed architecture for enhancing artificial neural network
US11967127B2 (en) * 2018-04-18 2024-04-23 Sony Interactive Entertainment Inc. Context embedding for capturing image dynamics
US10522038B2 (en) 2018-04-19 2019-12-31 Micron Technology, Inc. Systems and methods for automatically warning nearby vehicles of potential hazards
KR102025113B1 (ko) * 2018-08-27 2019-09-25 영남대학교 산학협력단 LiDAR를 이용한 이미지 생성 방법 및 이를 위한 장치
US11164067B2 (en) * 2018-08-29 2021-11-02 Arizona Board Of Regents On Behalf Of Arizona State University Systems, methods, and apparatuses for implementing a multi-resolution neural network for use with imaging intensive applications including medical imaging
US20220012898A1 (en) * 2018-11-20 2022-01-13 Deepmind Technologies Limited Neural network systems for decomposing video data into layered representations
US11410475B2 (en) 2019-01-31 2022-08-09 Micron Technology, Inc. Autonomous vehicle data recorders
US11373466B2 (en) 2019-01-31 2022-06-28 Micron Technology, Inc. Data recorders of autonomous vehicles
US11356466B2 (en) * 2019-03-07 2022-06-07 Microsoft Technology Licensing, Llc Reconstructing network activity from sampled network data using archetypal analysis
WO2020191925A1 (en) * 2019-03-26 2020-10-01 Huawei Technologies Co., Ltd. Multiple named wait stations
US11057634B2 (en) * 2019-05-15 2021-07-06 Disney Enterprises, Inc. Content adaptive optimization for neural data compression
US11067786B2 (en) * 2019-06-07 2021-07-20 Leica Microsystems Inc. Artifact regulation methods in deep model training for image transformation
CN112233212A (zh) * 2019-06-28 2021-01-15 微软技术许可有限责任公司 人像编辑与合成
US11392796B2 (en) * 2019-08-20 2022-07-19 Micron Technology, Inc. Feature dictionary for bandwidth enhancement
US11755884B2 (en) 2019-08-20 2023-09-12 Micron Technology, Inc. Distributed machine learning with privacy protection
US11636334B2 (en) * 2019-08-20 2023-04-25 Micron Technology, Inc. Machine learning with feature obfuscation
US11501787B2 (en) * 2019-08-22 2022-11-15 Google Llc Self-supervised audio representation learning for mobile devices
WO2021041082A1 (en) * 2019-08-23 2021-03-04 Nantcell, Inc. Performing segmentation based on tensor inputs
KR20210051242A (ko) * 2019-10-30 2021-05-10 삼성전자주식회사 멀티 렌즈 영상 복원 장치 및 방법
KR20210066653A (ko) 2019-11-28 2021-06-07 삼성전자주식회사 전자 장치 및 그 제어 방법
US11657255B2 (en) 2020-02-21 2023-05-23 Adobe Inc. Controlling a neural network through intermediate latent spaces
CN113850749A (zh) * 2020-06-09 2021-12-28 英业达科技有限公司 训练缺陷侦测器的方法
US20220028037A1 (en) * 2020-07-21 2022-01-27 Nvidia Corporation Image generation using one or more neural networks
US20220053010A1 (en) * 2020-08-13 2022-02-17 Tweenznet Ltd. System and method for determining a communication anomaly in at least one network
US11216916B1 (en) * 2020-10-09 2022-01-04 Nvidia Corporation History clamping for denoising dynamic ray-traced scenes using temporal accumulation
US11562734B2 (en) * 2021-01-04 2023-01-24 Kwai Inc. Systems and methods for automatic speech recognition based on graphics processing units

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2023072866A1 (de) * 2021-10-29 2023-05-04 Siemens Aktiengesellschaft Verfahren zum konfigurieren und steuern eines elektrischen konverters sowie konvertersteuerung und konverter

Also Published As

Publication number Publication date
US20190035113A1 (en) 2019-01-31
US20230410375A1 (en) 2023-12-21

Similar Documents

Publication Publication Date Title
DE102018117813A1 (de) Zeitlich stabile Datenrekonstruktion mit einem externen rekurrenten neuronalen Netzwerk
DE102018108324A1 (de) System und Verfahren zur Schätzung eines optischen Flusses
DE102018126670A1 (de) Fortschreitende Modifizierung von generativen adversativen neuronalen Netzen
DE102019130889A1 (de) Schätzung der tiefe eines mit einer monokularen rgb-kamera aufgenommenen videodatenstroms
DE102019102279A1 (de) Erzeugung von synthetischen Bildern zum Trainieren eines Neuronal-Netzwerkmodells
DE102018132069A1 (de) Äquivariante Orientierungspunkt-Transformation für Orientierungspunkt-Lokalisierung
DE102018121282A1 (de) Differenzierbare rendering-pipeline für inverse graphik
DE102017124573A1 (de) Systeme und verfahren zum beschneiden von neuronalen netzen für eine betriebsmitteleffiziente folgerung
DE102019106123A1 (de) Dreidimensionale (3D) Posenschätzung von Seiten einer monokularen Kamera
DE102018130924A1 (de) Systeme und Verfahren zur dynamischen Gesichtsanalyse mittels eines rekurrenten neuronalen Netzes
DE102021119726A1 (de) Dreidimensionale objektrekonstruktion aus einem video
DE102019102009A1 (de) Reduzierung des rauschens während des renderings durch parallele path-space-filterung unter verwendung von hashing
DE102018009315A1 (de) Verfahren tiefgehenden Lernens zum Trennen von Reflexions- und Übertragungsbildern, die an einer halbreflektierenden Oberfläche in einem Computerbild einer Realweltszene sichtbar sind
DE102019103310A1 (de) Schätzer for einen optimalen betriebspunkt für hardware, die unter einer beschränkung der gemeinsam genutzten leistung/wärme arbeitet
DE102019130311A1 (de) Transponierte schwachbesetzte matrix multipliziert mit dichtbesetzter matrix für ein training neuronaler netzwerke
DE102019128750A1 (de) Reduzierung des detailgrades eines polygonnetzes, um eine komplexität einer bildlich wiedergegebenen geometrie innerhalb einer szene zu verringern
DE102021105249A1 (de) Mikrotraining zur iterativen verfeinerung eines neuronalen netzes mit wenigen anpassungen
DE102018124211A1 (de) Lernbasierte Kameraposenschätzung von Bildern einer Umgebung
DE102018114799A1 (de) Halbüberwachtes lernen zur orientierungspunktlokalisierung
DE102021121109A1 (de) Wiederherstellung dreidimensionaler modelle aus zweidimensionalen bildern
DE102019106996A1 (de) Darstellen eines neuronalen netzwerks unter verwendung von pfaden innerhalb des netzwerks zum verbessern der leistung des neuronalen netzwerks
DE102019134020A1 (de) Dekompprimierungstechniken zur verarbeitung komprimierter daten, die für künstliche neuronale netzwerke geeignet sind
DE102020121601A1 (de) Persistenter Notizblockspeicher zum Datenaustausch zwischen Programmen
DE102019103319A1 (de) Stochastisches runden von zahlenwerten
DE102022121509A1 (de) Einzelbild-inversrendering

Legal Events

Date Code Title Description
R012 Request for examination validly filed