DE102019106123A1 - Dreidimensionale (3D) Posenschätzung von Seiten einer monokularen Kamera - Google Patents

Dreidimensionale (3D) Posenschätzung von Seiten einer monokularen Kamera Download PDF

Info

Publication number
DE102019106123A1
DE102019106123A1 DE102019106123.7A DE102019106123A DE102019106123A1 DE 102019106123 A1 DE102019106123 A1 DE 102019106123A1 DE 102019106123 A DE102019106123 A DE 102019106123A DE 102019106123 A1 DE102019106123 A1 DE 102019106123A1
Authority
DE
Germany
Prior art keywords
latent
pose
depth
implemented method
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102019106123.7A
Other languages
English (en)
Inventor
Umar Iqbal
Pavlo Molchanov
Thomas Michael Breuel
Jan Kautz
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nvidia Corp
Original Assignee
Nvidia Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US16/290,643 external-priority patent/US10929654B2/en
Application filed by Nvidia Corp filed Critical Nvidia Corp
Publication of DE102019106123A1 publication Critical patent/DE102019106123A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G01MEASURING; TESTING
    • G01BMEASURING LENGTH, THICKNESS OR SIMILAR LINEAR DIMENSIONS; MEASURING ANGLES; MEASURING AREAS; MEASURING IRREGULARITIES OF SURFACES OR CONTOURS
    • G01B11/00Measuring arrangements characterised by the use of optical techniques
    • G01B11/22Measuring arrangements characterised by the use of optical techniques for measuring depth
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/50Depth or shape recovery
    • G06T7/536Depth or shape recovery from perspective effects, e.g. by using vanishing points
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/70Determining position or orientation of objects or cameras
    • G06T7/73Determining position or orientation of objects or cameras using feature-based methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20084Artificial neural networks [ANN]

Landscapes

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

Abstract

Ein Schätzen einer dreidimensionalen (3D) Pose eines Objekts, wie beispielsweise einer Hand oder eines Körpers (Mensch, Tier, Roboter usw.), aus einem 2D-Bild ist für Mensch-Computer-Interaktion notwendig. Eine Handpose kann durch einen Satz von Punkten im 3D-Raum, den sogenannten Schlüsselpunkten, repräsentiert werden. Zwei Koordinaten (x, y) repräsentieren eine räumliche Verschiebung und eine dritte Koordinate repräsentiert eine Tiefe jedes Punkts in Bezug auf die Kamera dar. Eine monokulare Kamera wird dazu verwendet, ein Bild der 3D-Pose aufzunehmen, erfasst aber keine Tiefendaten. Eine neuronale Netzwerkarchitektur ist dazu konfiguriert, einen Tiefenwert für jeden Schlüsselpunkt in dem aufgenommenen Bild zu erzeugen, selbst wenn Teile der Pose verborgen sind oder die Orientierung des Objekts nicht eindeutig ist. Die Erzeugung der Tiefenwerte ermöglicht die Schätzung der 3D-Pose des Objekts.

Description

  • TECHNISCHES GEBIET
  • Die Erfindung bezieht sich auf eine Posenschätzung und genauer auf ein Schätzen einer 3D-Pose eines Objekts unter Verwendung eines neuronalen Netzwerks.
  • HINTERGRUND
  • Das Schätzen einer 3D-Pose eines Objekts, wie beispielsweise einer Hand oder eines Körpers (Mensch, Tier, Roboter usw.), aus einem 2D-Bild ist für Mensch-Computer-Interaktion nützlich. Die Handpose kann durch einen festen Satz von Punkten in einem 3D-Raum, in der Regel Verbindungen, die als Orientierungspunkte bzw. Landmarks oder Schlüsselpunkte bzw. Keypoints bezeichnet werden, repräsentiert werden. Ein genaues Schätzen der 3D-Pose ist aufgrund der großen Mengen an Variationen im Erscheinungsbild, Eigenverdeckungen und Komplexität artikulierter Handposen eine schwierige Aufgabe. Die 3D-Handposenschätzung verschärft die Schwierigkeiten noch weiter, weil auch eine Tiefe jedes der Hand-Schlüsselpunkte geschätzt werden muss.
  • Herkömmliche Techniken zum Bestimmen der Positionen der Orientierungspunkte einer Hand im 3D-Raum beinhalten eines oder mehrere von Mehrbildkamerasystemen, Tiefensensoren und Farbmarkierungen/Handschuhen. Jede der herkömmlichen Techniken erfordert eine eingeschränkte Umgebung und/oder spezielle Ausrüstung. Ferner stellen Umweltbedingungen wie beispielsweise Sonnenlicht, Okklusionen und die Komplexität nicht starrer Handposen Herausforderungen für die Erkennung und Bestimmung von Orientierungspunkten dar. Es besteht eine Notwendigkeit, diese Fragen und/oder andere Fragen, die mit dem Stand der Technik verbunden sind, zu behandeln.
  • KURZBESCHREIBUNG
  • Ein Schätzen einer dreidimensionalen (3D) Pose eines Objekts aus einem 2D-Bild kann durch Tiefenlernen realisiert werden. Eine Handpose wird durch einen Satz von Punkten im 3D-Raum, den sogenannten Schlüsselpunkten, repräsentiert. Zwei Koordinaten (x, y) repräsentieren eine räumliche Verschiebung in dem 2D-Bild und eine dritte Koordinate repräsentiert die Tiefe jedes Punktes in Bezug auf die Kamera. Eine monokulare Kamera kann dazu verwendet werden, ein Bild der 3D-Pose aufzunehmen, erfasst aber keine Tiefendaten. Eine neuronale Netzwerkarchitektur lernt, einen Tiefenwert für jeden Schlüsselpunkt in dem aufgenommenen Bild zu erzeugen, auch wenn Teile der Pose verdeckt sind oder die Ausrichtung des Objekts mehrdeutig ist. Die Erzeugung der Tiefenwerte ermöglicht eine Schätzung der 3D-Pose des Objekts.
  • Ein Verfahren, ein computerlesbares Medium und ein System werden offenbart zum Schätzen einer 3D-Pose eines Objekts. Das System empfängt Positionen von Schlüsselpunkten für ein 3D-Objekt, wobei jede Position Pixelkoordinaten und einen normierten Tiefenwert beinhaltet, wobei die Pixelkoordinaten Pixeln innerhalb eines zweidimensionalen (2D) Bilds des 3D-Objekts entsprechen, wobei das 2D-Bild mit Kameraeigenschaften verknüpft ist. Das System berechnet eine maßstabsnormierte bzw. maßstabsgetreue 3D-Pose des 3D-Objekts basierend auf den Positionen und den Kameraeigenschaften und erzeugt in Übereinstimmung mit einem Skalierungsfaktor eine absolute 3D-Pose des 3D-Objekts aus der maßstabsnormierten 3D-Pose.
  • Ein Verfahren, ein computerlesbares Medium und ein System werden offenbart zum Schätzen einer 2,5D-Pose eines Schlüsselpunkts aus einem 2D-Bild unter Verwendung eines neuronalen Netzwerkmodells. Das neuronale Netzwerkmodell verarbeitet ein 2D-Bild eines 3D-Objekts in Übereinstimmung mit einem Satz von Parametern, um latente Tiefendaten zu erzeugen, die dem dem 3D-Objekt zugeordneten Schlüsselpunkt entsprechen. Latente Pixelkoordinatendaten, die dem Schlüsselpunkt entsprechen, werden erhalten und das System berechnet, basierend auf den latenten Tiefendaten und den latenten Pixelkoordinatendaten, einen Tiefenwert für den Schlüsselpunkt. Das System wandelt die latenten Pixelkoordinatendaten in eine Pixelkoordinatenposition für den Schlüsselpunkt um.
  • Figurenliste
    • 1A veranschaulicht ein Blockdiagramm eines 3D-Posen-Rekonstruktionssystems gemäß einem Ausführungsbeispiel.
    • 1B veranschaulicht ein konzeptionelles Diagramm einer skalierten Pose gemäß einem Ausführungsbeispiel.
    • 1C veranschaulicht ein konzeptionelles Tiefendiagramm für eine skalierungs- und translationsinvariante 2,5D-Darstellung gemäß einem Ausführungsbeispiel.
    • 1D veranschaulicht ein Ablaufdiagramm eines Verfahrens zum Rekonstruieren einer 3D-Pose aus 2,5D-Schlüsselpunktpositionen gemäß einem Ausführungsbeispiel.
    • 2A veranschaulicht ein Blockdiagramm eines 2,5D-Schlüsselpunkt-Schätzsystems gemäß einem Ausführungsbeispiel.
    • 2B veranschaulicht ein Ablaufdiagramm eines Verfahrens zum Schätzen von 2,5D-Schlüsselpunkten aus einem Bild gemäß einem Ausführungsbeispiel.
    • 2C veranschaulicht ein Blockdiagramm eines anderen 2,5D-Schlüsselpunkt-Schätzsystems gemäß einem Ausführungsbeispiel.
    • 2D veranschaulicht ein Blockdiagramm einer Trainingskonfiguration für das 2,5D-Schlüsselpunkt-Schätzsystem gemäß einem Ausführungsbeispiel.
    • 3 veranschaulicht eine Parallelverarbeitungseinheit gemäß einem Ausführungsbeispiel.
    • 4A veranschaulicht einen allgemeinen Verarbeitungscluster innerhalb der Parallelverarbeitungseinheit von 3 gemäß einem Ausführungsbeispiel.
    • 4B veranschaulicht eine Speicherpartitionseinheit der Parallelverarbeitungseinheit von 3 gemäß einem Ausführungsbeispiel.
    • 5A veranschaulicht den Streaming-Multiprozessor von 4A gemäß einem Ausführungsbeispiel.
    • 5B ist ein konzeptionelles Diagramm eines Verarbeitungssystems, das unter Verwendung der PPU von 3 implementiert wird, gemäß einem Ausführungsbeispiel.
    • 5C veranschaulicht ein beispielhaftes System, in dem die unterschiedliche Architektur und/oder Funktionalität der verschiedenen vorangehenden Ausführungsbeispiele implementiert sein werden kann.
    • 6 ist ein konzeptionelles Diagramm einer Grafikverarbeitungspipeline, die von der PPU von 3 implementiert wird, gemäß einem Ausführungsbeispiel.
  • DETAILLIERTE BESCHREIBUNG
  • Ein auf einem tiefen neuronalen Netzwerk basiertes System wird zum Schätzen einer 3D-Pose eines Objekts aus einem von einer monokularen Kamera aufgenommenen Bild beschrieben. Im Kontext der folgenden Beschreibung kann das Objekt ein beliebiges Objekt sein, das durch ein strukturelles Skelettmodell, einschließlich einer menschlichen Hand, eines ganzen menschlichen Körpers, eines Roboters oder dergleichen, repräsentiert wird. Im Kontext der folgenden Beschreibung ist ein strukturelles Skelettmodell eine Sammlung von Schlüsselpunkten oder Eckpunkten und/oder Kanten/Linien, die die Schlüsselpunkte oder Eckpunkte, die strukturelle Komponenten des Skeletts eines Objekts darstellen, wie beispielsweise die Knochen in einer Hand, verbinden.
  • Das Schätzen der 3D-Pose aus einem Bild des von einer monokularen Kamera aufgenommenen Objekts ist aufgrund von Skalen- und Tiefenmehrdeutigkeiten ein Schlechtpositionierungsproblem. Der Versuch, die 3D-Pose unter Verwendung herkömmlicher Techniken zu schätzen, funktioniert möglicherweise überhaupt nicht oder kann zu einer Überanpassung an eine sehr spezifische Umgebung und Personen führen.
  • Das Schätzen der 3D-Pose erfolgt daher durch Zerlegen des Problems in zwei Teilprobleme, die beide ohne Mehrdeutigkeiten gelöst werden können. Zuerst wird eine 2,5D-Posen-Darstellung aus dem Bild geschätzt, und dann wird die 3D-Pose aus der 2,5D-Posen-Darstellung rekonstruiert. In einem Ausführungsbeispiel lernt ein neuronales Netzwerkmodell, eine 2,5D-Posen-Darstellung zu erzeugen. Die 2,5D-Darstellung ist maßstabs- und translationsinvariant und kann aus RGB-Bildern geschätzt werden. Die 2,5D-Posen-Darstellung beinhaltet 2D-Koordinaten der Objekt-Schlüsselpunkte in dem Eingangsbild und eine maßstabsnormierte Tiefe für jeden Schlüsselpunkt. In einem Ausführungsbeispiel werden 3D-Koordinaten von Objekt-Schlüsselpunkten relativ zu der Kameraposition geschätzt. Wichtig ist, dass eine Maßstabsnormierung der Tiefenwerte derart erfolgt, dass eine der Komponenten (z.B. ein Knochen) des strukturellen Skelettmodells des Objekts im 3D-Raum eine feste Länge hat. Eine solche eingeschränkte Normierung ermöglicht eine direkte Rekonstruktion der maßstabsnormierten absoluten 3D-Pose.
  • 1A veranschaulicht ein Blockdiagramm eines 3D-Posen-Rekostruktionssystems 100 gemäß einem Ausführungsbeispiel. Das 3D-Posen-Rekostruktionssystem 100 besteht aus einer 3D-Posen-Rekostruktionseinheit 110 und einer Skalierungseinheit 120. Die 3D-Posen-Rekostruktionseinheit 110 empfängt die 2,5D-Posen-Darstellung, die als 2,5D-Schlüsselpunkt-Positionen kodiert ist. In einem Ausführungsbeispiel werden die 2,5D-Schlüsselpunkt-Positionen unter Verwendung eines neuronalen Netzwerkmodells, wie beispielsweise das in 2A bzw. 2C gezeigte neuronale Netzwerkmodell 210 oder 212, erzeugt. Die 2,5D-Schlüsselpunkt-Positionen ( P ^ k 2.5 D )
    Figure DE102019106123A1_0001
    beinhalten drei Komponenten für jeden Schlüsselpunkt, nämlich Pixelkoordinaten (xk, yk) und maßstabsnormierte Tiefenwerte ( Z ^ k r ) ,
    Figure DE102019106123A1_0002
    worin k der Schlüsselpunkt ist und r ein Wurzel- oder Referenzschlüsselpunkt ist.
  • In einem Ausführungsbeispiel werden die Tiefenwerte relativ zu einem Referenzschlüsselpunkt bestimmt. In einem Ausführungsbeispiel, in dem die 3D-Posen-Rekostruktionseinheit 110 zum Schätzen der Pose einer Hand konfiguriert ist, befindet sich beispielsweise der Referenzschlüsselpunkt auf der Handfläche. Der Referenzschlüsselpunkt kann in Abhängigkeit von dem Skelettmodell des Objekts als ein beliebiger Schlüsselpunkt gewählt werden. Wichtig ist, dass die Tiefenwerte in Übereinstimmung mit einem Maßstab des 3D-Objekts normiert werden. Die 2,5D-Schlüsselpunkt-Positionen sind übersetzungs- und skalierungsinvariant. In einem Ausführungsbeispiel werden dann, wenn das Objekt eine Hand ist, die Tiefenwerte basierend auf einem Maßstabs- bzw. Skalierungsfaktor normiert, der gleich einem Abstand zwischen dem ersten Gelenk des Zeigefingers und der Handfläche entspricht. Der Skalierungsfaktor kann eine beliebige Abstandsfunktion des Skelettmodells des 3D-Objekts sein, die während Artikulationen konstant bleibt.
  • Die 3D-Posen-Rekostruktionseinheit 110 berechnet die normierte 3D-Pose basierend auf den 2,5D-Schlüsselpunkt-Positionen und intrinsischen Parametern der monokularen Kamera entsprechend dem aufgenommenen Bild des Objekts. In einem Ausführungsbeispiel bietet die 3D-Posen-Rekostruktionseinheit 110 eine exakte Lösung, um die absolute 3D-Pose bis zu einem Skalierungsfaktor zu erhalten. Die vollständige absolute 3D-Pose kann durch Kenntnis der gemessenen Länge der Komponente des strukturellen Skelettmodells des Objekts oder unter Verwendung einer Optimierung unter der Annahme einer vorangehenden Komponentenlängenverteilung wiederhergestellt werden. In Anbetracht der normierten 3D-Pose P berechnet die Skalierungseinheit 120 die absolute 3D-Pose P unter Verwendung des Skalierungsfaktors. Im Gegensatz zu herkömmlichen Techniken ist die Referenz-3D-Position des Wurzelgelenks nicht erforderlich, um die absolute 3D-Pose zu berechnen. In einem Ausführungsbeispiel wird, anstelle einen globalen Maßstab des Objekts zu erfordern, der globale Maßstab des Objekts approximiert.
  • Obwohl das 3D-Posen-Rekostruktionssystem 100 im Kontext von Verarbeitungseinheiten beschrieben wird, kann eine oder mehrere der Einheiten, einschließlich einer oder beider der 3D-Posen-Rekostruktionseinheit 110 und der Skalierungseinheit 120, als Programm, als eine benutzerdefinierte Schaltung oder durch eine Kombination aus einer benutzerdefinierter Schaltung und einem Programm implementiert sein. Beispielsweise kann die 3D-Posen-Rekonstruktionseinheit 110 und/oder die Skalierungseinheit 120 durch eine GPU (Grafikverarbeitungseinheit), eine CPU (Zentralverarbeitungseinheit) oder einen beliebigen Prozessor implementiert sein, der die Betriebsabläufe der 3D-Posen-Rekonstruktionseinheit 110 und/oder der Skalierungseinheit 120 ausführen kann. Ferner versteht sich für den Fachmann, dass jedes System, das die Betriebsabläufe des 3D-Posen-Rekonstruktionssystems 100 durchführt, innerhalb des Schutzumfangs und Rahmens der Ausführungsbeispiele der Erfindung liegt.
  • Nachstehend werden weitere veranschaulichende Informationen zu verschiedenen optionalen Architekturen und Funktionen gegeben, mit welchen das vorgenannte Rahmenwerk nach den Wünschen des Benutzers implementiert werden kann. Es sei ausdrücklich darauf hingewiesen, dass die folgenden Informationen zur Veranschaulichung gegeben werden und nicht als einschränkend auszulegen sind. Ein beliebiges der folgenden Merkmale kann optional mit oder ohne Ausnahme anderer beschriebener Merkmale einbezogen werden.
  • Obwohl die nachstehende Beschreibung ein Beispiel einer Hand als Objekt verwendet, für welches die Pose geschätzt wird, können die Techniken auf andere 3D-Objekte angewendet werden. Bei einem gegebenen RGB-Bild I einer Hand ist das Ziel, die 2D- und 3D-Positionen von K Schlüsselpunkten der Hand zu schätzen. Die 2D-Handpose ist definiert als p = {pk}k∈K, und die 3D-Pose ist definiert als P = {Pk}k∈K worin pk = (xk, yk) ∈ ℝ2 die 2D-Pixelkoordinaten des Schlüsselpunkts k in Bild I repräsentiert und Pk = (Xk, Yk, Zk) ∈ ℝ3 die Position des Schlüsselpunkts in dem 3D-Kamera-Koordinatenrahmen, gemessen in Millimetern, bezeichnet. Die Z-Achse entspricht der optischen Achse. In Anbetracht der intrinsischen Kameraparameter K
    Figure DE102019106123A1_0003
    kann die Beziehung zwischen der 3D-Position Pk und der entsprechenden 2D-Projektion pk unter einer perspektivischen Projektion wie folgt beschrieben werden: Z k ( x k y k 1 ) = K ( X k Y k Z k 1 ) = K ( X k Y k Z Wurzel + Z k r 1 )  k 1 , K
    Figure DE102019106123A1_0004
    worin k ∈ 1, ... K, ZWurzel die Tiefe des Wurzel-Schlüsselpunkts ist und Z k r = Z k Z Wurzel
    Figure DE102019106123A1_0005
    der Tiefe des k-ten Schlüsselpunkts relativ zu dem Wurzelschlüsselpunkt entspricht. In einem Ausführungsbeispiel wird die Handfläche als der Wurzelschlüsselpunkt verwendet. Bei einem gegebenen Bild I wird eine Funktion F
    Figure DE102019106123A1_0006
    benötigt derart, dass F : I P ,
    Figure DE102019106123A1_0007
    und kann die geschätzte 3D-Handpose P mit den Kameraparametern K
    Figure DE102019106123A1_0008
    auf 2D projiziert werden.
  • Die Vorhersage der absoluten 3D-Handpose in Kamerakoordinaten ist jedoch aufgrund irreversibler Geometrie- und Maßstabs- bzw. Skalenmehrdeutigkeiten nicht möglich. Beispiele einer irreversiblen Geometriemehrdeutigkeit sind eine Hand, die horizontal relativ zu der Kamera positioniert ist und ähnlich erscheint, wenn die Handfläche näher an der Kamera ist, wobei die Finger direkt von der Kamera weg zeigen, wie die Hand erscheint, wenn die Finger direkt zu der Kamera hin zeigen und die Handfläche am weitesten von der Kamera entfernt ist. Beispiele für Maßstabs- bzw. Skalierungsmehrdeutigkeiten resultieren aus der Unfähigkeit, ein großes Objekt, das weit von der Kamera entfernt ist, von einem kleinen Objekt, das sich in der Nähe der Kamera befindet, zu unterscheiden. Daher wird eine 2,5D-Posen-Darstellung gewählt, die aus einem 2D-Bild wiederhergestellt werden kann und eine Lösung zum Wiederherstellen der 3D-Pose aus der 2,5D-Darstellung bereitstellt. Die 2,5D-Pose ist definiert als P k 2.5 D = { P k 2.5 D } k K ,
    Figure DE102019106123A1_0009
    worin P k 2.5 D = ( x k ,  y k ,  Z k r ) .
    Figure DE102019106123A1_0010
    Die Koordinaten xk und yk sind die Bildpunktkoordinaten des k-ten Schlüsselpunkts und Z k r
    Figure DE102019106123A1_0011
    ist die metrische Tiefe des k-ten Schlüsselpunkts relativ zu dem Wurzelschlüsselpunkt. Die Koordinaten P k 2.5 D = ( x k ,  y k ,  Z k r )
    Figure DE102019106123A1_0012
    umfassen die 2,5D-Schlüsselpunkt-Positionen, die von der 3D-Posen-Rekonstruktionseinheit 110 empfangen werden. Wichtig ist, dass die 2,5D-Schlüsselpunkt-Positionen translationsinvariant sind.
  • Um die Maßstabs- bzw. Skalierungs-Mehrdeutigkeiten zu beseitigen, wird die 3D-Pose wie folgt maßstabsnormiert: P ^ = C s P
    Figure DE102019106123A1_0013
    worin s = ∥Pn - Pübergeordnet(n)2 für jede 3D-Pose unabhängig berechnet wird. Dies resultiert in einer normalisierten 3D-Pose P ^
    Figure DE102019106123A1_0014
    mit einem konstanten Abstand C zwischen einem bestimmten Paar von Schlüsselpunkten (n, übergeordnet(n)). Anschließend wird die normierte 2,5D-Darstellung für Schlüsselpunkt k zu P ^ k 2.5 D = ( x k ,  y k ,   Z ^ k r )
    Figure DE102019106123A1_0015
    welches sowohl maßstabs- als auch translationsinvariant ist. Es wird angemerkt, dass sich die 2D-Pose durch die Normierung bzw. Normalisierung nicht ändert, da die Projektion der 3D-Pose gleich bleibt. Eine solche normierte 2,5D-Darstellung hat mehrere Vorteile: Bildinformationen können effektiv genutzt werden; eine dichte pixelweise Vorhersage ist möglich; mehrere Quellen von Trainingsdaten können für Multitasking-Lernen durch ein neuronales Netzwerkmodell verwendet werden; und schließlich kann ein Ansatz zur Wiederherstellung der absoluten 3D-Pose P bis hin zu einem Skalierungsfaktor verwendet werden. Genauer gesagt, kann das 3D-Posen-Rekostruktionssystem 100 dazu verwendet werden, die 3D-Pose aus der normierten 2,5D-Darstellung der Pose zu rekonstruieren.
  • 1B veranschaulicht ein konzeptionelles Diagramm einer skalierten Pose in Übereinstimmung mit einem Ausführungsbeispiel. In einem Ausführungsbeispiel bezieht sich eine skalierte Pose auf eine skalierte normierte Pose 105 einer Hand mit einer Länge C für einen Knochen zwischen einem Paar von Schlüsselpunkten n und m. Die maßstabsnormierte Pose 105 wird durch 2,5D-Schlüsselpunkt-Positionen definiert, die, wenn sie von der 3D-Pose-Rekonstruktionseinheit 110 verarbeitet werden, eine maßstabsnormierte 3D-Pose P erzeugen. Die Skalierungseinheit 120 skaliert dann die maßstabsnormierte 3D-Pose P in Übereinstimmung mit dem in Gleichung (2) definierten Skalierungsfaktor, um den Objektmaßstab wiederherzustellen, wodurch sie die absolute 3D-Pose P wiederherstellt. Wie in 1B gezeigt ist, ist die wiederhergestellte absolute 3D-Pose 112 größer im Vergleich zu der maßstabsnormierten 3D-Pose 105 für das gleiche Objekt, so dass S > C. Demgegenüber ist die wiederhergestellte absolute 3D-Pose 114 kleiner im Vergleich zu der maßstabsnormierten 3D-Pose 105 für das gleiche Objekt, so dass S < C. In einem Ausführungsbeispiel ist die wiederhergestellte absolute 3D-Pose die gleiche wie die maßstabsnormierte 3D-Pose 105.
  • Wie in Verbindung mit 2A beschrieben ist, kann ein 2,5D-Schlüsselpunkt-Schätzsystem 200 die normierte 2,5D-Darstellung der Pose bei einem Eingangsbild unter Verwendung eines neuronalen Netzwerkmodells schätzen. Demgegenüber basieren konventionelle Techniken auf datengetriebenen Ansätzen, die die Größe der Hand für alle spezifischen Blickpunkte lernen und unter Verallgemeinerung zu unsichtbaren Subjekten leiden. Die Normierung bzw. Normalisierung des Maßstabs unter Verwendung der maßstabsnormierten 2,5D-Darstellung verbessert die Genauigkeit des neuronalen Netzwerkmodells und ermöglicht eine Verallgemeinerung zu Posen, die nicht in einem Trainingsdatensatz enthalten waren.
  • 1C veranschaulicht ein konzeptionelles Diagramm 125 der Tiefe für die 2,5D-Darstellung gemäß einem Ausführungsbeispiel. Bei einer gegebenen 2,5D-Pose P ^ 2.5 D = F ( I )
    Figure DE102019106123A1_0016
    wird die Tiefe ẐWurzel des Wurzelschlüsselpunkts relativ zu der Kameraposition benötigt, um die maßstabsnormierte 3D-Pose P unter Verwendung von Gleichung (1) zu rekonstruieren. Während es viele mögliche 3D-Posen gibt, die dieselbe 2D-Projektion 126 haben können, gibt es angesichts der 2,5D-Pose und intrinsischer Kameraparameter für eine monokulare Kamera 127 eine eindeutige 3D-Pose 128, die ( X ^ n X ^ m ) 2 + ( Y ^ n Y ^ m ) 2 + ( Z ^ n Z ^ m ) 2 = C 2 ,
    Figure DE102019106123A1_0017
    erfüllt, worin (n, m = übergeordnet(n)) das Paar von Schlüsselpunkten ist, die für die Normierung in Gleichung (2) verwendet werden. Gleichung (3) kann in Bezug auf die 2D-Projektionen (xn, yn) und (xm, ym) wie folgt wie folgt neu geschrieben werden: ( x n Z ^ n x m Z ^ m ) 2 + ( y n Z ^ n y m Z ^ m ) 2 + ( Z ^ n Z ^ m ) 2 = C 2
    Figure DE102019106123A1_0018
    Anschließend ergibt ein Ersetzen von Ẑn und Ẑm durch ( Z ^ Wurzel + Z ^ n r ) 2
    Figure DE102019106123A1_0019
    und ( Z ^ Wurzel + Z ^ m r ) :
    Figure DE102019106123A1_0020
    ( x n ( Z ^ W u r z e l + Z ^ n r ) x m ( Z ^ W u r z e l + Z ^ m r ) ) 2 + ( y n ( Z ^ W u r z e l + Z ^ n r ) y m ( Z ^ W u r z e l + Z ^ n r ) ) 2 + ( ( Z ^ Wurzel + Z ^ n r ) ( Z ^ Wurzel + Z ^ m r ) ) 2 = C 2 .
    Figure DE102019106123A1_0021
  • Angesichts der 2,5D-Koordinaten beider Schlüsselpunkte n und m ist ẐWurzel die einzige Unbekannte in Gleichung (5). Die Vereinfachung der Gleichung (5) führt ferner zu einer quadratischen Gleichung mit den folgenden Koeffizienten a = ( x n x m ) 2 + ( y n y m ) 2 b = Z ^ n r ( x n 2 + y n 2 x n x m y n y m ) + Z ^ m r ( x m 2 + y m 2 x n x m y n y m )
    Figure DE102019106123A1_0022
    c = ( x n Z ^ n r x m Z ^ m r ) 2 + ( y n Z ^ n r y m Z ^ m r ) 2 + ( Z ^ n r Z ^ m r ) 2 C 2
    Figure DE102019106123A1_0023
    Das Ergebnis sind zwei Werte für die unbekannte Variable ẐWurzel, eine vor der Kamera und eine hinter der Kamera. Die Lösung vor der Kamera wird gewählt, Z ^ Wurzel = 0.5 ( b + b 2 4 ac ) a
    Figure DE102019106123A1_0024
  • Angesichts des Wertes von ẐWurzel, P̂2,5D und der intrinsischen Kameraparameter K
    Figure DE102019106123A1_0025
    kann die normierte 3D-Pose durch Rückprojizieren der 2D-Pose p unter Verwendung von Gleichung (1) rekonstruiert werden. In einem Ausführungsbeispiel ist C = 1 und wird der Abstand zwischen dem ersten Gelenk (Metacarpophalangeal - MCP) des Zeigefingers und der Handfläche (Wurzel) dazu verwendet, den Skalierungsfaktor s zu berechnen. In einem Ausführungsbeispiel sind das erste Gelenk des Zeigefingers und die Wurzel als die Schlüsselpunkte n und m definiert, weil diese Schlüsselpunkte in Bezug auf die 2D-Posen-Schätzung am stabilsten sind.
  • Die maßstabsnormierte 3D-Pose P der Hand wird von der 3D-Posen-Rekonstruktionseinheit 110 wiederhergestellt, und um die absolute 3D-Pose P wiederherzustellen, muss der globale Maßstab der Hand bekannt sein. In vielen Szenarien kann der globale Maßstab der Hand a priori bekannt sein, falls er aber nicht verfügbar ist, kann der Maßstab s geschätzt werden durch s ^ = argmin s   Σ k ,l ε ( s P ^ k P ^ l μ kl ) 2 ,
    Figure DE102019106123A1_0026
    worin µkl die mittlere Länge des Knochens zwischen den Schlüsselpunkten k und / in den Trainingsdaten ist und Ɛ die kinematische Struktur der Hand definiert.
  • 1D veranschaulicht ein Ablaufdiagramm eines Verfahrens 150 zum Rekonstruieren einer 3D-Pose aus 2,5D-Schlüsselpunktpositionen in Übereinstimmung mit einem Ausführungsbeispiel. Obwohl das Verfahren 150 im Kontext einer Verarbeitungseinheit beschrieben wird, kann das Verfahren 150 auch durch ein Programm, eine benutzerdefinierte Schaltung oder durch eine Kombination aus einer benutzerdefinierten Schaltung und einem Programm durchgeführt werden. Beispielsweise kann das Verfahren 150 von einer GPU (Grafikverarbeitungseinheit), einer CPU (Zentralverarbeitungseinheit) oder einem beliebigen Prozessor ausgeführt werden, der in der Lage ist, die Betriebsabläufe der 3D-Posen-Rekonstruktionseinheit 110 und/oder der Skalierungseinheit 120 durchzuführen. Ferner versteht sich für den Fachmann, dass jedes System, das das Verfahren 150 durchführt, innerhalb des Schutzumfangs und des Rahmens der Ausführungsbeispiele der Erfindung liegt.
  • Bei Schritt 155 werden Positionen von Schlüsselpunkten für ein 3D-Objekt empfangen. In einem Ausführungsbeispiel werden die Positionen in einer normierten 2,SD-Darstellung bereitgestellt. Jede Position enthält Pixelkoordinaten und einen normierten Tiefenwert. ( x k ,  y k ,   Z ^ k r ) ,
    Figure DE102019106123A1_0027
    wobei die Pixelkoordinaten Pixeln innerhalb eines 2D-Bilds des 3D-Objekts entsprechen, das Kameraparametern (Attributen) zugeordnet ist, und die normierten Tiefenwerte normierten relativen Tiefenwerten jedes einen der Schlüsselpunkte in Bezug auf einen Referenzschlüsselpunkt entsprechen. In einem Ausführungsbeispiel ist der Referenzschlüsselpunkt die Wurzel und werden die normierten relativen Tiefenwerte für jeden Schlüsselpunkt k als Z k r = Z k Z Wurzel
    Figure DE102019106123A1_0028
    berechnet.
  • Bei Schritt 160 berechnet die 3D-Posen-Rekostruktionseinheit 110 eine Tiefe des Referenzschlüsselpunktes in Bezug auf eine Kamera, ẐWurzel, basierend auf den Positionen und den Kameraparametern. Bei Schritt 165 berechnet die 3D-Posen-Rekostruktionseinheit 110 eine maßstabsgetreue normierte 3D-Pose des 3D-Objekts basierend auf den Positionen, der Tiefe des Referenzschlüsselpunkts und den Kameraparametern. In einem Ausführungsbeispiel werden die normierten Tiefenwerte in Bezug auf den Referenzschlüsselpunkt berechnet. In einem Ausführungsbeispiel wird die maßstabsgetreue normierte 3D-Pose basierend auf der Tiefe des Referenzschlüsselpunkts berechnet, der aus den Positionen berechnet wird. In einem Ausführungsbeispiel sind die normierten Tiefenwerte invariant für Änderungen eines Maßstabs und/oder der Translation des 3D-Objekts.
  • Bei Schritt 170 wird aus der maßstabsnormierten 3D-Pose in Übereinstimmung mit einem Skalierungsfaktor s eine absolute 3D-Pose P des 3D-Objekts erzeugt. In einem Ausführungsbeispiel wird der Skalierungsfaktor geschätzt und entspricht einer Komponente des 3D-Objekts. In einem Ausführungsbeispiel wird der Skalierungsfaktor gemessen und entspricht einer Komponente des 3D-Objekts. In einem Ausführungsbeispiel ist die Komponente eine Länge zwischen zwei Eckpunkten oder Schlüsselpunkten in dem 3D-Objekt. In einem Ausführungsbeispiel ist die Komponente eine Länge, die einem Element (z.B. einer Linie, einer Kurve, usw.) des 3D-Objekts zugeordnet ist. Zusammenfassend lässt sich sagen, dass die 2,5D-Schlüsselpunkt-Positionen verarbeitet werden, um eine maßstabsnormierte 3D-Pose des Objekts zu rekonstruieren. In einem Ausführungsbeispiel wird die maßstabsnormierte 3D-Pose berechnet, indem die 2D-Pose unter Verwendung der Kameraparameter und einer berechneten Tiefe des Referenzschlüsselpunkts rückprojiziert wird. Die maßstabsnormierte 3D-Pose wird dann unter Verwendung des gemessenen oder geschätzten Skalierungsfaktors in eine absolute 3D-Pose umgewandelt.
  • Eine neuronale Netzwerkarchitektur kann dazu verwendet werden, die 2,5D-Pose eines Objekts aus einem Bild des Objekts zu schätzen. In einem Ausführungsbeispiel wird die 2,5D-Position für jeden Schlüsselpunkt über latente Pixelkoordinatendaten und latente Tiefendaten erzeugt, die von einem neuronalen Netzwerkmodell erzeugt werden. Ein Trainingsdatensatz für das Modell des neuronalen Netzwerks beinhaltet Referenz-(x,y)-Pixelkoordinatendaten, die (x,y) Positionen annotieren, und kann darüber hinaus Referenztiefendaten, die Tiefenwerte für jeden Schlüsselpunkt eines Eingangsbilds annotieren, beinhalten. In einem Ausführungsbeispiel werden berechnete Fehler zwischen den Referenzdaten und den vom System erzeugten 2,5D-Schlüsselpunkt-Daten durch die Schichten des neuronalen Netzwerkmodells zurückpropagiert, um Parameter zu aktualisieren, die zum Erzeugen der latenten Pixelkoordinatendaten und/oder der latenten Tiefendaten verwendet werden.
  • Konventionell werden zwei Hauptlernparadigmen dazu verwendet, neuronale Netzwerke für die Posenschätzung zu trainieren, nämlich Heatmap- bzw. Wärmekarten-Regression und holistische bzw. ganzheitliche Posenregression. Die Wärmekarten-Regression ist ein Standardansatz zur 2D-Posen-Schätzung, da die Schlüsselpunkte über pixelweise Vorhersagen in dem Bild genau lokalisiert werden können. Die Erzeugung volumetrischer Wärmekarten für die 3D-Posen-Schätzung resultiert jedoch in einem sehr hohen Rechenaufwand. Daher ist die ganzheitliche Regression ein Standardansatz für die 3D-Posen-Schätzung, aber die ganzheitliche Regression leidet unter einer genauen 2D-Schlüsselpunkt-Lokalisierung. Da für die 2,5D-Posen-Darstellung sowohl die 2D-Pose (x,y) als auch Tiefenwerte vorhergesagt werden müssen, wurde eine neue Wärmekarten-Darstellung entwickelt, die als 2,5D-Wärmekarten bezeichnet wird. Für die 2,5D-Wärmekarten werden 2D-Wärmekarten zur 2D-Schlüsselpunkt-Lokalisierung und eine Tiefenkarte zur Tiefenvorhersage für jeden Schlüsselpunkt erstellt. Wichtig ist, dass die 2,5D-Wärmekarten nicht manuell erstellt werden müssen, sondern in einer latenten Weise gelernt werden können. Um sicherzustellen, dass die 2,5D-Wärmekarten mit dem neuronalen Netzwerkmodell gelernt werden können, werden die 2,5D-Wärmekarten in einer differenzierbaren Weise in 2,5D-Koordinaten umgewandelt. In einem Ausführungsbeispiel wandelt eine softargmax-Operation die 2,5D-Wärmekarten in 2,5D-Koordinaten um. Die resultierenden 2,5D-Wärmekarten sind kompakt, invariant gegenüber Maßstab bzw, Skalierung und Translation, und haben das Potenzial, Schlüsselpunkte mit Subpixelgenauigkeit zu lokalisieren.
  • 2A veranschaulicht ein Blockdiagramm eines 2,5D-Schlüsselpunkt-Schätzsystems 200 gemäß einem Ausführungsbeispiel. Das 2,5D-Schlüsselpunkt-Schätzsystem 200 beinhaltet ein neuronales Netzwerkmodell 210, eine Pro-Schlüsselpunkt-Tiefenberechnungseinheit 220 und ein Soft-Argmax 215. Das neuronale Netzwerkmodell 210 empfängt ein Eingangsbild eines 3D-Objekts und erzeugt latente Tiefendaten für jeden zugeordneten Schlüsselpunkt des 3D-Objekts in dem Eingangsbild. In einem Ausführungsbeispiel sind die latenten Tiefendaten Tiefenkarten, und wird für jeden Schlüsselpunkt eine Tiefenkarte erstellt. Latente Pixelkoordinatendaten für jeden Schlüsselpunkt werden auch von dem 2,5D-Schlüsselpunkt-Schätzsystem 200 empfangen. In einem Ausführungsbeispiel sind die latenten Pixelkoordinatendaten für einen bestimmten Schlüsselpunkt eine Wahrscheinlichkeit für den Schlüsselpunkt an jeder Bildstelle (Pixel). In einem Ausführungsbeispiel sind die latenten Pixelkoordinatendaten für einen bestimmten Schlüsselpunkt eine 2D-Wahrscheinlichkeitsdichtefunktion im Pixelraum.
  • Das Soft-Argmax 215 wandelt die latenten Pixelkoordinatendaten in die 2,5D-Schlüsselpunkt-(x,y)-Koordinatendaten p um. In einem Ausführungsbeispiel erzeugt das neuronale Netzwerkmodell 210 latente 2D-Wärmekarten (in 2A nicht gezeigt), die in Wahrscheinlichkeitsschätzungen (z.B. Wahrscheinlichkeitskarten) für die Schlüsselpunkte umgewandelt werden, um die latenten Pixelkoordinatendaten H2D zu erzeugen. In einem Ausführungsbeispiel ist das neuronale Netzwerkmodell 210 ein faltendes neuronales Netzwerk (Convolutional Neural Network; CNN). In einem Ausführungsbeispiel ist das neuronale Netzwerkmodell 210 ein neuronales Encoder-Decoder-Netzwerk mit Sprungverbindungen.
  • Die latenten Pixelkoordinaten der Daten H2D zur Schlüsselpunkt-Lokalisierung und Tiefenkarten H r für Tiefenvorhersagen bieten eine kompakte Wärmekarten-Darstellung, die als 2,5D-Wärmekarten bezeichnet wird. Während die 2D-Wärmekarte H k 2 D
    Figure DE102019106123A1_0029
    die Wahrscheinlichkeit des k-ten Schlüsselpunkts an jeder Pixelposition repräsentiert, stellt die Tiefenkarte H k z ^ r
    Figure DE102019106123A1_0030
    die maßstabsnormierte und wurzelrelative Tiefenvorhersage für die entsprechenden Pixel bereit. Die Darstellung von Tiefenkarten ist invariant gegenüber Maßstab bzw. Skalierung und bleibt über ähnliche Posen hinweg konsistent, so dass es daher für das neuronale Netzwerkmodell 210 wesentlich einfacher ist, zu lernen, die latenten Tiefen zu generieren. Das neuronale Netzwerkmodell 210 bietet einen K-Kanal-Ausgang für Tiefenkarten H r bereit, wobei K die Anzahl von Schlüsselpunkten ist.
  • Die latenten Tiefendaten und die latenten Pixelkoordinatendaten für Schlüsselpunkte in dem Eingangsbild werden von einer Pro-Schlüsselpunkt-Tiefenberechnungseinheit 220 verarbeitet, um Tiefendaten 2 als einen Teil der maßstabsnormierten 2,SD-Darstellung P k 2.5 D
    Figure DE102019106123A1_0031
    zu generieren, die die 2,5D-Schlüsselpunkt-Positionen definieren. In einem Ausführungsbeispiel multipliziert die Pro-Schlüsselpunkt-Tiefenberechnungseinheit 220 die latenten Tiefendaten mit den latenten Pixelkoordinatendaten, um die Tiefendaten für jeden Schlüsselpunkt zu erzeugen. In einem Ausführungsbeispiel führt die Pro-Schlüsselpunkt-Tiefenberechnungseinheit 220 eine elementweise Multiplikation durch, um die Tiefendaten für jeden Schlüsselpunkt zu erzeugen. In einem Ausführungsbeispiel werden die Tiefendaten für jeden Schlüsselpunkt als eine Tiefenkarte dargestellt. In einem Ausführungsbeispiel summiert die Pro-Schlüsselpunkt-Tiefenberechnungseinheit 220 die Tiefendaten für jeden Schlüsselpunkt, um die normierten Tiefenwerte Ẑr zu berechnen. In einem Ausführungsbeispiel führt die Pro-Schlüsselpunkt-Tiefenberechnungseinheit 220 Operationen durch, die vollständig differenzierbar sind. Die endgültige 3D-Pose kann dann durch das 3D-Posen-Rekonstruktionssysystem 100 unter Verwendung der maßstabsnormierten 2,5D-Darstellung der von dem 2,5D-Schlüsselpunkt-Schätzsystem 200 ausgegebenen Schlüsselpunkte geschätzt werden.
  • Wichtig ist, dass p und/oder 2 in Übereinstimmung mit einem Maßstab des Objekts zum Trainieren des neuronalen Netzwerkmodells 210 normiert werden. In einem Ausführungsbeispiel werden dann, wenn das Objekt eine Hand ist, die Tiefendaten basierend auf einem Skalierungsfaktor normiert, der gleich einem Abstand zwischen dem ersten Gelenk des Zeigefingers und der Handfläche ist. In ähnlicher Weise werden in einem Ausführungsbeispiel die Koordinaten des Schlüsselpunkts (x, y) basierend auf dem Skalierungsfaktor normiert. Der Skalierungsfaktor kann jede beliebige Abstandsfunktion des Skelettmodells eines Objekts sein, die während Artikulationen konstant oder nahezu konstant bleibt. In einem Ausführungsbeispiel werden die Tiefendaten relativ zu einem Referenzschlüsselpunkt bestimmt. In einem Ausführungsbeispiel befindet sich der Referenzschlüsselpunkt auf der Handfläche. Der Referenzschlüsselpunkt kann in Abhängigkeit von dem Skelettmodell des Objekts als ein beliebiger Schlüsselpunkt gewählt werden.
  • Obwohl das 2,5D-Schlüsselpunkt-Schätzsystem 200 im Kontext von Verarbeitungseinheiten beschrieben wird, können eine oder mehrere der Einheiten, das neuronale Netzwerkmodell 210, die Pro-Schlüsselpunkt-Tiefenberechnungseinheit 220 und das Soft-Argmax 215 als ein Programm, eine benutzerdefinierte Schaltung oder durch eine Kombination aus einer benutzerdefinierten Schaltung und einem Programm implementiert sein. Beispielsweise kann das neuronale Netzwerkmodell 210 durch eine GPU (Grafikverarbeitungseinheit), einer CPU (Zentralverarbeitungseinheit) oder einem beliebigen Prozessor implementiert werden, der die Funktionen des neuronalen Netzwerkmodells 210 ausführen kann. Darüber versteht sich für den Fachmann, dass jedes System, das die Betriebsabläufe des 2,5D-Schlüsselpunkt-Schätzsystems 200 durchführt, innerhalb des Schutzumfangs und des Rahmens der Ausführungsbeispiele der Erfindung liegt.
  • 2B veranschaulicht ein Ablaufdiagramm eines Verfahrens 225 zum Schätzen von 2,5D-Schlüsselpunkten aus einem Bild gemäß einem Ausführungsbeispiel. Obwohl das Verfahren 225 im Kontext einer Verarbeitungseinheit beschrieben wird, kann das Verfahren 150 auch durch ein Programm, eine benutzerdefinierte Schaltung oder durch eine Kombination aus einer benutzerdefinierten Schaltung und einem Programm durchgeführt werden. Beispielsweise kann das Verfahren 225 von einer GPU (Grafikverarbeitungseinheit), einer CPU (Zentralverarbeitungseinheit) oder einem beliebigen Prozessor ausgeführt werden, der die Betriebsabläufe des 2,5D-Schlüsselpunkt-Schätzsystems 200 ausführen kann. Darüber versteht sich für den Fachmann, dass jedes System, das das Verfahren 225 durchführt, innerhalb des Schutzumfangs und des Rahmens der Ausführungsbeispiele der Erfindung liegt.
  • Bei Schritt 230 verarbeitet das neuronale Netzwerkmodell 210 ein 2D-Eingangsbild eines 3D-Objekts durch das neuronale Netzwerkmodell 210 in Übereinstimmung mit einem Satz von Parametern, um latente Tiefendaten zu erzeugen, die den dem 3D-Objekt zugeordneten Schlüsselpunkten entsprechen. Die Parameter werden während des Trainings des neuronalen Netzwerkmodells 210 gelernt. In einem Ausführungsbeispiel hat das Eingangsbild die Abmessungen hxwx3, wobei 3 die Anzahl von Farbkanälen (z.B. rot, grün, blau) ist, die zur Darstellung des Eingangsbilds verwendet werden. In einem Ausführungsbeispiel sind die latenten Tiefendaten latente Tiefenkarten der Abmessungen hxwxK. Mit anderen Worten hat jeder Schlüsselpunkt eine entsprechende latente Tiefenkarte.
  • Bei Schritt 235 werden die latenten Pixelkoordinatendaten, die den Schlüsselpunkten entsprechen, durch das 2,5D-Schlüsselpunkt-Schätzsystem 200 erhalten. In einem Ausführungsbeispiel werden die latenten Pixelkoordinatendaten durch das neuronale Netzwerkmodell 210 erzeugt. In einem Ausführungsbeispiel sind die latenten Pixelkoordinatendaten Wahrscheinlichkeitskarten, die basierend auf latenten 2D-Wärmekarten der Abmessungen h×w×K berechnet wurden.
  • Bei Schritt 240 berechnet die Pro-Schlüsselpunkt-Tiefenberechnungseinheit 220 basierend auf den latenten Tiefendaten und den latenten Pixelkoordinatendaten einen Tiefenwert für jeden der Schlüsselpunkte. In einem Ausführungsbeispiel sind die Tiefenwerte normierte Tiefenwerte, die relativ zu einem Referenzschlüsselpunkt berechnet werden. In einem Ausführungsbeispiel sind die Tiefenwerte invariant gegenüber Änderungen in einem Maßstab und/oder einer Translation des 3D-Objekts. Bei Schritt 245 wandelt das Soft-Argmax 215 die latenten Pixelkoordinatendaten für jeden einen der Schlüsselpunkte in Pixelkoordinatenpositionen um.
  • 2C veranschaulicht ein Blockdiagramm eines anderen 2,5D-Schlüsselpunkt-Schätzsystems 250 gemäß einem Ausführungsbeispiel. Das 2,5D-Schlüsselpunkt-Schätzsystem 250 beinhaltet ein neuronales Netzwerkmodell 212, eine Softmax-Normierung 205, die Pro-Schlüsselpunkt-Tiefenberechnungseinheit 220 und das Soft-Argmax 215. Bei einem gegebenen Eingangsbild eines 3D-Objekts erzeugt das neuronale Netzwerkmodell 212 latente Tiefendaten und latente Pixeldaten für jeden der Schlüsselpunkte. In einem Ausführungsbeispiel umfassen die latenten Tiefen-daten und die latenten Pixeldaten latente 2,5D-Wärmekarten, die die latenten 2D-Wärmekarten H*2D und die latenten Tiefenkarten H* enthalten. In einem Ausführungsbeispiel stellt das neuronale Netzwerkmodell 212 eine 2K-Kanalausgabe mit K Kanälen für jede 2D-Positions-Wärmekarte H2D und K Kanälen für jede Tiefenkarte H r bereit.
  • Die Softmax-Normierung 205 wandelt die latenten Pixeldaten in die latenten Pixelkoordinaten um. In einem Ausführungsbeispiel werden latente 2D-Wärmekarten unter Verwendung der Softmax-Normalisierung in latente Pixelkoordinatendaten, nämlich Wahrscheinlichkeitskarten H2D , umgewandelt. Das Soft-Argmax 215 wandelt die latenten Pixelkoordinatendaten in die Pixelkoordinatenpositionen, nämlich die 2,5D-Schlüsselpunkt-(x, y)-Koordinatendaten p (2D-Pose) um.
  • Die latenten Tiefendaten H* und die latenten Pixelkoordinaten-Daten H2D für das Eingangsbild werden von der Pro-Schlüsselpunkt-Tiefenberechnungseinheit 220 verarbeitet, um Tiefendaten Z zu erzeugen. Eine Tiefenkarteneinheit 222 führt eine elementweise Multiplikation zwischen den latenten Tiefendaten (latenten Tiefenkarten H*) und den latenten Pixelkoordinatendaten H2D durch, um die Tiefendaten H für jeden Schlüsselpunkt zu erzeugen. In einem Ausführungsbeispiel ist die Summierungseinheit 224 dazu konfiguriert, für jeden Schlüsselpunkt ein Hadamard-Produkt aus den latenten Tiefendaten und den latenten Pixelkoordinatendaten zu summieren, um die normierten Tiefenwerte Ẑr zu berechnen. In einem Ausführungsbeispiel führt die Pro-Schlüsselpunkt-Tiefenberechnungseinheit 220 Operationen durch, die vollständig differenzierbar sind. Es wird angemerkt, dass die Berechnung sowohl der Schlüsselpunkt-(x, y)-Daten (z.B. der 2D-Pose) als auch des entsprechenden Tiefenwerts vollständig differenzierbar ist. Somit kann jedes der neuronalen Netzwerkmodelle 210 und 212 durchgängig trainiert werden, um die latente 2,5D-Wärmekarten-Darstellung zu erzeugen.
  • Die neuronalen Netzwerkmodelle 210 und 212 können unter Verwendung der skalierten normalisierten 2,5D-Darstellung gemeinsam mit 2D- und/oder 3D-Schlüsselpunkten trainiert werden, die auf einem einzelnen Bild (oder verschiedenen Bildern) gekennzeichnet sind. Für das Training kann die maßstabsnormierte 2,5D-Darstellung aus dem Bildausschnitt (Bildbereich innerhalb eines definierten Begrenzungsrahmens) geschätzt werden. Die Verwendung des Soft-Argmax 215 zur 2D-Koordinatenregression ermöglicht es dem neuronalen Netzwerkmodell 210 und/oder 212, die Vorhersage von 2D-Wärmekarten implizit zu lernen, ohne die 2D-Wärmekarten einzuschränken, und ermöglicht die Subpixelgenauigkeit.
  • Im Gegensatz zu den bisherigen Techniken erfordert das Training der neuronalen Netzwerkmodelle 210 und 212 keine händisch erstellten Soll-Wärmekarten für die 2D-Koordinatenregression, sondern implizit gelernte latente 2,5D-Wärmekarten, die von dem neuronalen Netzwerkmodell 212 ausgegeben werden, werden innerhalb des 2,5D-Schlüsselpunkt-Schätzsystems 250 differenzierbar in die maßstabsnormierten 2,5D-Koordinaten umgewandelt. Im Gegensatz zu neuronalen Netzwerkmodellen, die nur mit einem Eingangsbild und 2D-Koordinaten oder 3D-Koordinaten trainiert werden können, aber nicht, wenn beide Datenquellen gemischt sind, können die neuronalen Netzwerkmodelle 210 und 212 mit 2D-Koordinaten und 3D-Koordinaten gleichzeitig und ohne jegliche Einschränkungen trainiert werden.
  • Das 3D-Posen-Rekonstruktionssystem 100 berechnet die von der Kamera vorgegebenen Eigenparameter (z.B. Kameraattribute) und den Skalierungsfaktor der 3D-Pose. Die 2,5D-Schlüsselpunkt-Schätzsysteme 200 und 250 lernen, die maßstabsnormierte 2,5D-Pose unabhängig von dem Maßstab des Objekts und/oder des Standpunkts zu schätzen. Herkömmliche Techniken zur Schätzung von 3D-Posen basieren auf datengetriebenen Ansätzen, die den Maßstab des bestimmten 3D-Objekts für alle bestimmten Blick- bzw. Standpunkte lernen und unter Verallgemeinerungen zu nicht sichtbaren Subjekten leiden.
  • 2D veranschaulicht ein Blockdiagramm einer Trainingskonfiguration für ein 2,5D-Schlüsselpunkt-Schätzsystem 200 oder 250 gemäß einem Ausführungsbeispiel. Die Trainingskonfiguration beinhaltet das 2,5D Schlüsselpunkt-Schätzsystem 200 oder 250, eine Parameteraktualisierungseinheit 270 und Verlustfunktionen 260 und 265. Ein Trainingsdatensatz beinhaltet Eingangsbilder, die entweder mit 2D-Posen-Annotationen (x, y) oder 3D-Posen-Annotationen (x, y, Tiefe) gekoppelt sind. Während des Trainings wird jedes Eingangsbild durch das 2,5D-Schlüsselpunkt-Schätzsystem 200 oder 250 verarbeitet, um die 2,5D-Pose zu erzeugen, die durch die 2D-Pose p und die wurzelrelative Tiefe Ẑr repräsentiert wird. Die Verlustfunktion 260 wertet eine Funktion zum Vergleichen der geschätzten 2D-Pose (die Pixelkoordinatenposition) und einer Referenz-2D-Pose für jeden Schlüsselpunkt in dem Eingangsbild aus und gibt Verlustdaten an die Parameteraktualisierungseinheit 270 aus. Die Verlustfunktion 265 wertet eine Funktion zum Vergleichen der geschätzten Tiefe und einer Referenztiefe für jeden Schlüsselpunkt in dem Eingangsbild aus und gibt Verlustdaten an die der Parameteraktualisierungseinheit 270 aus. Die Parameteraktualisierungseinheit 270 aktualisiert basierend auf den Verlustdaten die Parameter, die von dem 2,5D-Schlüsselpunkt-Schätzsystem 200 oder 250 dazu verwendet werden, das Eingangsbild zu verarbeiten, um Unterschiede zwischen der geschätzten 2D-Pose und dem geschätzten Tiefenwert für jeden Schlüsselpunkt bzw. der Referenz-2D-Pose und der Referenztiefe zu reduzieren. In einem Ausführungsbeispiel rückpropagiert die Parameteraktualisierungseinheit 270 die Verlustdaten durch eine oder mehrere Schichten des neuronalen Netzwerks 210 oder 212, um aktualisierte Parameter für jede Schicht zu berechnen.
  • Um die 2,5D-Pose P̂2.5D aus einem RGB-Bild eines 3D-Objekts zurückzubilden, wird die Funktion F
    Figure DE102019106123A1_0032
    durch das neuronale Netzwerkmodell 210 oder 212 gelernt. Das neuronale Netzwerkmodell 210 oder 212 wird unter Verwendung einer Verlustfunktion L
    Figure DE102019106123A1_0033
    trainiert, die aus zwei Teilen L x y  und  L Z ^ r
    Figure DE102019106123A1_0034
    besteht, die jeweils für die Regression der 2D-Pose und der wurzelrelativen Tiefen für die Schlüsselpunkte des 3D-Objekts verantwortlich sind. Die Verlustfunktion 260 kann die Verlustfunktion L x y
    Figure DE102019106123A1_0035
    berechnen, und die Verlustfunktion 265 kann die Verlustfunktion L Z ^ r
    Figure DE102019106123A1_0036
    berechnen. Formal kann der Verlust wie folgt beschrieben werden: L ( P ^ 2.5 D ) = L xy ( p , p gt ) + α L Z ^ r ( Z ^ r , Z ^ r ,gt )
    Figure DE102019106123A1_0037
    worin Z ^ r = { Z ^ k r } r K  und  Z ^ r ,gt = { Z ^ k r ,gt } r K
    Figure DE102019106123A1_0038
    sind und sich gt auf Referenzanmerkungen bezieht. Die Verlustfunktion hat den Vorteil, dass mehrere Trainingsquellen genutzt werden können, d.h. In-the-Wild-Bilder mit nur 2D-Posen-Annotationen und eingeschränkte oder synthetische Bilder mit genauen 3D-Posen-Annotationen. Während L x y
    Figure DE102019106123A1_0039
    für alle Trainingsmuster gilt, wird L Z ^ r
    Figure DE102019106123A1_0040
    nur dann erzwungen, wenn die 3D-Posen-Annotationen verfügbar sind, und wird andernfalls L Z ^ r
    Figure DE102019106123A1_0041
    nicht berücksichtigt.
  • Im Gegensatz zu ganzheitlichen Regressionsverfahren haben Wärmekarten den Vorteil einer höheren Ausgabeauflösung, die bei der genauen Lokalisierung der Schlüsselpunkte hilft. Wärmekarten werden jedoch kaum für die 3D-Posen-Schätzung verwendet, weil eine volumetrische 3D-Wärmekarten-Darstellung zu hohen Rechen- und Speicherkosten führt. Daher wird die kompakte 2,5D-Wärmekarten-Darstellung von den 2,5D Schlüsselpunkt-Schätzsystemen 200 und 250 und dem 3D Posen-Rekonstruktionssystem 100 verwendet. Demzufolge können die neuronalen Netzwerkmodelle 210 und 212 unter Verwendung einer direkten 2,5D-Wärmekarten-Regression trainiert werden.
  • Wie vorangehend erklärt wurde, besteht die kompakte 2,5D-Wärmekarten-Darstellung aus 2D-Wärmekarten H2D zur Schlüsselpunktlokalisierung und Tiefenkarten H r für Tiefenvorhersagen. Während die 2D-Wärmekarte H k 2 D
    Figure DE102019106123A1_0042
    die Wahrscheinlichkeit des k-ten Schlüsselpunktes an jeder Pixelposition repräsentiert, stellt die Tiefenkarte H k z ^ r
    Figure DE102019106123A1_0043
    die maßstabsnormierte und wurzelrelative Tiefenvorhersage für die entsprechenden Pixel bereit. Das neuronale Netzwerkmodell 210 stellt eine 2K-Kanal-Ausgabe mit K Kanälen für 2D-Lokalisierungs-Wärmekarten H2D und K Kanälen für Tiefenkarten H r bereit Die Soll-Wärmekarte H k 2 D , g t
    Figure DE102019106123A1_0044
    für den k-ten Schlüsselpunkt ist definiert als H k 2D ,gt ( p ) = exp ( p p k gt σ 2 ) , p Ω
    Figure DE102019106123A1_0045
    worin p k g t
    Figure DE102019106123A1_0046
    die Referenzposition des k-ten Schlüsselpunkts ist, σ die Standardabweichung der Wärmekarten kontrolliert und Ω der Satz aller Pixelpositionen in dem Eingangsbild I ist. Da die Referenztiefenkarten nicht verfügbar sind, werden die Referenztiefenkarten definiert durch H k z ^ r = Z ^ k r ,gt H k 2D ,gt
    Figure DE102019106123A1_0047
    worin Z ^ k r , g t
    Figure DE102019106123A1_0048
    der normierte wurzelrelative Referenztiefenwert des k-ten ist und der entsprechende Tiefenwert als das Pixel mit der maximalen Wahrscheinlichkeit p k = argmax p H k 2 D ( p )
    Figure DE102019106123A1_0049
    erhalten wird und der entsprechende Tiefenwert erhalten wird als Z ^ k r = H k z ^ r ( p k )
    Figure DE102019106123A1_0050
  • Die in dem vorangehenden Abschnitt beschriebene 2,5D-Wärmekarten-Darstellung ist wohl nicht die optimalste Darstellung. Erstens sind die Referenz-Wärmekarten händisch erstellt und sind nicht ideal, d.h. σ bleibt für alle Schlüsselpunkte fest und kann aufgrund der Indifferenzierbarkeit der Gleichung (12) nicht gelernt werden. Im Idealfall sollten die 2,5D-Wärmekarten für jeden Schlüsselpunkt eines 3D-Objekts, wie z.B. eine Hand, angepasst werden, z.B. sollten Wärmekarten für Fingerspitzen sehr spitz und für die Handfläche relativ breit sein. Zweitens ist die Gauß'sche Verteilung eine natürliche Wahl für die 2D-Schlüsselpunkt-Lokalisierung, aber nicht sehr intuitiv für die Tiefenvorhersage, d.h. die Tiefe bleibt über die gesamte Handfläche in etwa gleich, wird aber als Gauß'sches Formen modelliert. Diese Probleme können durch die Verwendung einer latenten Darstellung von 2,5D-Wärmekarten gemildert bzw. umgangen werden, d.h. die neuronalen Netzwerkmodelle 210 und 212 lernen die optimale Darstellung, indem sie eine Verlustfunktion differenzierbar minimieren.
  • Zu diesem Zweck wird die 2K-Kanalausgabe der neuronalen Netzwerkmodelle 210 und 212 als latente Variable H k * 2 D  und  H k * z ^ r
    Figure DE102019106123A1_0051
    für 2D-Wärmekarten bzw. Tiefenkarten betrachtet. Dann wird in einem Ausführungsbeispiel eine räumliche Softmax-Normalisierung durch die Softmax-Normalisierung 205 auf die 2D-Wärmekarte H k * 2 D
    Figure DE102019106123A1_0052
    jedes Schlüsselpunkts k angewendet, um jede der 2D-Wärmekarten in eine Wahrscheinlichkeitskarte H k 2 D ( p ) = exp ( β k H k *2D ( p ) ) p ' Ω exp ( β k H k *2D ( p' ) )
    Figure DE102019106123A1_0053
    umzuwandeln, worin Ω der Satz aller Pixelpositionen in der Eingangs-2D-Wärmekarte H k * 2 D
    Figure DE102019106123A1_0054
    ist und βk der lernbare Parameter ist, der die Verteilung der Ausgangs-Wärmekarten H2D kontrolliert. Schließlich wird in einem Ausführungsbeispiel die 2D-Schlüsselpunkt-Position des k-ten Schlüsselpunkts durch das Soft-Argmax 215 als der gewichtete Durchschnitt der 2D-Pixelkoordinaten berechnet, p k = p Ω H k 2D ( p ) p
    Figure DE102019106123A1_0055
    während in einem Ausführungsbeispiel der entsprechende Tiefenwert durch die Pro-Schlüsselpunkt-Tiefenberechnungseinheit 220 als die Summation des Hadamard-Produkts von H k 2 D ( p )  und  H k * z ^ r ( p )
    Figure DE102019106123A1_0056
    wie folgt erhalten wird: Z ^ k r = p Ω H k 2D ( p ) H k * z ^ r ( p )
    Figure DE102019106123A1_0057
  • Im Gegensatz zu den Wärmekarten mit fester Standardabweichung kann die Verteilung der latenten Wärmekarten für jeden Schlüsselpunkt durch Lernen des Parameters βk angepasst werden, während die Tiefenkarten ebenfalls implizit und ohne Ad-hoc-Designentscheidungen gelernt werden. In einem Ausführungsbeispiel ist die Parameteraktualisierungseinheit 270 dazu konfiguriert, den Parametersatz anzupassen, um eine Verteilung der latenten Pixelkoordinatendaten zu steuern bzw. kontrollieren.
  • Die 2,5D-Schlüsselpunkt-Schätzsysteme 200 und 250 ermöglichen es, die räumliche Eingangsauflösung beizubehalten, und Schlüsselpunkte des 3D-Objekts können mit Subpixelgenauigkeit lokalisiert werden. Die 2,5D-Schlüsselpunkt-Schätzsysteme 200 und 250 sind vollständig differenzierbar und die 2,5D-Posen-Darstellung ist kompakt. Außerdem ist die 2,5D-Posen-Darstellung translations- und maßstabsinvariant und bietet gleichzeitig eine hohe räumliche Ausgangsauflösung. Außerdem benötigen die 2,5D-Schlüsselpunkt-Schätzsysteme 200 und 250 im Gegensatz zu herkömmlichen Techniken keine händisch erstellten Soll-Wärmekarten, die für ein bestimmtes Problem suboptimal sein können. Stattdessen lernen die 2,5D-Schlüsselpunkt-Schätzsysteme 200 und 250 implizit eine latente 2,5D-Wärmekarten-Darstellung und wandeln die 2,5D-Wärmekarten-Darstellung differenzierbar in 2,5D-Koordinaten um.
  • Schließlich wird angemerkt, dass bei gegebenen 2,5D-Koordinaten die 3D-Pose durch das 3D-Posen-Rekostruktionssystem 100 wiederhergestellt werden kann. Herkömmliche Techniken zur Schätzung einer 3D-Pose machen entweder sehr starke Annahmen, wie beispielsweise dass die Referenzposition der Wurzel und die globale Größe der Hand in 3D bekannt sind, oder greifen auf eine Näherungslösung zurück. Herkömmliche Techniken versuchen, die absolute Tiefe aus den beschnittenen und skalierten Bildbereichen direkt zu regressieren, welches eine sehr mehrdeutige Aufgabe ist. Demgegenüber werden bei dem 3D-Posen-Rekostruktionssystem 100 weder Annahmen getroffen, noch versucht das 3D-Posen-Rekostruktionssystem 100, eine mehrdeutige Aufgabe zu lösen. Stattdessen kann die maßstabs- und translationsinvariante 2,5D-Posen-Darstellung leicht unter Verwendung der neuronalen Netzwerkmodelle 210 und/oder 212 erhalten werden, und stellt dann das 3D-Posen-Rekonstruktionssystem 100 eine exakte Lösung bereit, um die absolute 3D-Pose bis zu einem Skalierungsfaktor zu erhalten, während es gleichzeitig nur den globalen Maßstab bzw. die Größe des Objekts approximiert.
  • Parallelverarbeitungsarchitektur
  • 3 veranschaulicht eine Parallelverarbeitungseinheit (PPU) 300 gemäß einem Ausführungsbeispiel. In einem Ausführungsbeispiel ist die PPU 300 ein Multithread-Prozessor, der auf einer oder mehreren integrierten Schaltungsvorrichtungen implementiert ist. Die PPU 300 ist eine latenzverbergende Architektur, die entwickelt wurde, um eine große Anzahl von Threads parallel zu verarbeiten. Ein Thread (d.h. ein Thread der Ausführung) ist eine Instanziierung eines Satzes von Anweisungen, die dazu konfiguriert sind, von der PPU 300 ausgeführt zu werden. In einem Ausführungsbeispiel ist die PPU 300 eine Grafikverarbeitungseinheit (GPU), die dazu konfiguriert ist, eine Grafik-Rendering-Pipeline zum Verarbeiten von dreidimensionalen (3D) Grafikdaten zu implementieren, um zweidimensionale (2D) Bilddaten zur Anzeige auf einer Anzeigevorrichtung, wie beispielsweise einer Flüssigkristallanzeigevorrichtung (LCD), zu erzeugen. In anderen Ausführungsbeispielen kann die PPU 300 zum Durchführen von Universalberechnungen verwendet werden. Obwohl hierin ein beispielhafter Parallelprozessor zu veranschaulichenden Zwecken bereitgestellt ist, ist dringend darauf hinzuweisen, dass dieser Prozessor nur zu veranschaulichenden Zwecken beschrieben wird und jeder Prozessor als Ergänzung und/oder Ersatz für denselben verwendet werden kann.
  • Eine oder mehrere PPUs 300 können dazu konfiguriert sein, Tausende von High Performance Computing (HPC), Rechenzentren und Anwendungen maschinellen Lernens zu beschleunigen. Die PPU 300 kann dazu konfiguriert sein, zahlreiche Systeme und Anwendungen für Deep Learning zu beschleunigen, darunter autonome Fahrzeugplattformen, Deep Learning, hochpräzise Sprach-, Bild- und Texterkennungssysteme, intelligente Videoanalytik, molekulare Simulationen, Medikamentenentdeckung, Krankheitsdiagnose, Wettervorhersage, Big Data Analytik, Astronomie, Molekulardynamiksimulation, Finanzmodellierung, Robotik, Fabrikautomatisierung, Echtzeit-Sprachübersetzung, Online-Suchoptimierung und personalisierte Benutzerempfehlungen und dergleichen.
  • Wie in 3 gezeigt ist, beinhaltet die PPU 300 eine Eingabe/Ausgabe- bzw. Input/Output (I/O)-Einheit 305, eine Frontend-Einheit 315, eine Scheduler-Einheit 320, eine Arbeitsverteilungseinheit 325, einen Verteiler bzw. Hub 330, eine Kreuz- bzw. Querschiene (Crossbar; Xbar) 370, einen oder mehrere Universalverarbeitungscluster bzw. General Processing Cluster (GPC) 350 und eine oder mehrere Speicherpartitionseinheiten 380. Die PPU 300 kann über eine oder mehrere schnelle NVLink 310-Zwischenverbindungen mit einem Host-Prozessor oder anderen PPUs 300 verbunden sein. Die PPU 300 kann über eine Zwischenverbindung 302 mit einem Host-Prozessor oder anderen Peripheriegeräten verbunden sein. Die PPU 300 kann darüber hinaus mit einem lokalen Speicher verbunden sein, der eine Anzahl von Speichervorrichtungen 304 umfasst. In einem Ausführungsbeispiel kann der lokale Speicher eine Anzahl von dynamischen DRAM (Dynamic Random Access Memory)-Vorrichtungen umfassen. Die DRAM-Vorrichtungen können als ein HBM (High-Bandwidth Memory)-Subsystem konfiguriert sein, wobei mehrere DRAM-Dies in jeder Vorrichtung gestapelt sind.
  • Die NVLink 310-Verbindung ermöglicht es Systemen, zu skalieren und eine oder mehrere PPUs 300 kombiniert mit einer oder mehreren CPUs zu beinhalten, unterstützt Cache-Kohärenz zwischen den PPUs 300 und CPUs und CPU-Mastering. Daten und/oder Befehle können von dem NVLink 310 über den Hub 330 zu/von anderen Einheiten der PPU 300, wie z.B. einer oder mehreren Kopiermaschinen, einem Video-Encoder, einem Video-Decoder, einer Leistungsverwaltungseinheit usw. (nicht explizit gezeigt) übertragen werden. Der NVLink 310 wird in Verbindung mit 5B näher beschrieben.
  • Die I/O-Einheit 305 ist dazu konfiguriert, Kommunikationen (d.h. Befehle, Daten usw.) von einem Host-Prozessor (nicht gezeigt) über die Zwischenverbindung 302 zu senden und zu empfangen. Die I/O-Einheit 305 kann mit dem Host-Prozessor direkt über die Zwischenverbindung 302 oder über eine oder mehrere Zwischenvorrichtungen, wie beispielsweise eine Speicherbrücke, kommunizieren. In einem Ausführungsbeispiel kann die I/O-Einheit 305 mit einem oder mehreren anderen Prozessoren, wie beispielsweise einer oder mehreren der PPUs 300, über die Zwischenverbindung kommunizieren. In einem Ausführungsbeispiel implementiert die I/O-Einheit 305 eine Peripheral Component Interconnect Express (PCIe)-Schnittstelle für Kommunikationen über einen PCIe-Bus und ist die Zwischenverbindung 302 ein PCIe-Bus. In alternativen Ausführungsbeispielen kann die I/O-Einheit 305 andere Arten von gut bekannten Schnittstellen zur Kommunikation mit externen Vorrichtungen implementieren.
  • Die I/O-Einheit 305 dekodiert Pakete, die über die Zwischenverbindung 302 empfangen wurden. In einem Ausführungsbeispiel repräsentieren die Pakete Befehle, die dazu konfiguriert sind, die PPU 300 zu veranlassen, verschiedene Operationen durchzuführen. Die I/O-Einheit 305 überträgt die dekodierten Befehle an verschiedene andere Einheiten der PPU 300, wie in den Befehlen angegeben. Beispielsweise können einige Befehle an die Frontend-Einheit 315 übertragen werden. Andere Befehle können an den Hub 330 oder andere Einheiten der PPU 300, wie z.B. eine oder mehrere Kopiermaschinen, ein Video-Encoder, ein Video-Decoder, eine Energie- bzw. Leistungsverwaltungseinheit usw. (nicht explizit gezeigt) übertragen werden. Mit anderen Worten ist die I/O-Einheit 305 dazu konfiguriert, Kommunikationen zwischen und unter den verschiedenen logischen Einheiten der PPU 300 zu routen.
  • In einem Ausführungsbeispiel kodiert ein von dem Host-Prozessor ausgeführtes Programm einen Befehlsstrom in einem Puffer, der Arbeitslasten für die PPU 300 zur Verarbeitung bereitstellt. Eine Arbeitslast kann eine Reihe von Anweisungen und von diesen Anweisungen zu verarbeitende Daten umfassen. Der Puffer ist eine Region in einem Speicher, auf den sowohl von dem Host-Prozessor als auch von der PPU 300 zugegriffen (d.h. lesend/schreibend) werden kann. Beispielsweise kann die I/O-Einheit 305 dazu konfiguriert sein, auf den Puffer in einem mit der Zwischenverbindung 302 verbundenen Systemspeicher über Speicheranforderungen zuzugreifen, die über die Zwischenverbindung 302 übertragen werden. In einem Ausführungsbeispiel schreibt der Host-Prozessor den Befehlsstrom in den Puffer und überträgt dann einen Zeiger auf den Beginn 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 die mehreren Ströme bzw. Streams, wobei sie Befehle aus den Streams liest und Befehle an die verschiedenen Einheiten der PPU 300 weiterleitet.
  • Die Frontend-Einheit 315 ist mit einer Scheduler-Einheit 320 gekoppelt, die die verschiedenen GPCs 350 dazu konfiguriert, Aufgaben zu verarbeiten, die durch den einen oder die mehreren Streams definiert sind. Die Scheduler-Einheit 320 ist dazu konfiguriert, Zustandsinformationen mit Bezug zu den verschiedenen Aufgaben nachzuverfolgen, die von der Scheduler-Einheit 320 verwaltet werden. Der Zustand kann anzeigen, welchem GPC 350 eine Aufgabe zugeordnet ist, ob die Aufgabe aktiv oder inaktiv ist, eine der Aufgabe zugeordnete Prioritätsstufe, und so weiter. Die Scheduler-Einheit 320 verwaltet die Ausführung einer Vielzahl von Aufgaben auf dem einen oder den mehreren GPCs 350.
  • Die Scheduler-Einheit 320 ist mit einer Arbeitsverteilungseinheit 325 gekoppelt, die dazu konfiguriert ist, Aufgaben zur Ausführung auf den GPCs 350 zu verteilen. Die Arbeitsverteilungseinheit 325 kann eine Anzahl von zugeteilten bzw. geplanten Aufgaben nachverfolgen, die von der Scheduler-Einheit 320 empfangen wurden. In einem Ausführungsbeispiel verwaltet die Arbeitsverteilungseinheit 325 für jeden der GPCs 350 einen Pool offener Aufgaben und einen Pool aktiver Aufgaben. Der Pool offener Aufgaben kann eine Anzahl von Slots (z.B. 32 Slots) umfassen, die Aufgaben enthalten, die zugewiesen von einem bestimmten GPC 350 zu verarbeiten sind. Der Pool aktiver Aufgaben kann eine Anzahl von Slots (z.B. 4 Slots) für Aufgaben umfassen, die von den GPCs 350 aktiv verarbeitet werden. Wenn ein GPC 350 die Ausführung einer Aufgabe beendet, wird diese Aufgabe aus dem Pool aktiver Aufgaben für den GPC 350 entnommen, und wird eine der anderen Aufgaben aus dem Pool offener Aufgaben ausgewählt und zur Ausführung auf dem GPC 350 eingeplant. Falls eine aktive Aufgabe auf dem GPC 350 im Leerlauf war, wie beispielsweise während des Wartens auf die Auflösung einer Datenabhängigkeit, kann die aktive Aufgabe aus dem GPC 350 entnommen und in den Pool offener Aufgaben zurückgeführt werden, während eine andere Aufgabe in dem Pool offener Aufgaben ausgewählt und zur Ausführung auf dem GPC 350 eingeplant wird.
  • Die Arbeitsverteilungseinheit 325 kommuniziert über die XBar 370 mit dem einen oder den mehreren GPCs 350. Die XBar 370 ist ein Zwischenverbindungsnetzwerk, das viele der Einheiten der PPU 300 mit anderen Einheiten der PPU 300 koppelt. Beispielsweise kann die XBar 370 dazu konfiguriert sein, die Arbeitsverteilungseinheit 325 mit einem bestimmten GPC 350 zu koppeln. Obwohl nicht explizit gezeigt, können eine oder mehrere andere Einheiten der PPU 300 ebenfalls über einen Hub 330 mit der XBar 370 verbunden sein.
  • Die Aufgaben werden von der Scheduler-Einheit 320 verwaltet und von der Arbeitsverteilungseinheit 325 an einen GPC 350 gesendet. Der GPC 350 ist dazu konfiguriert, die Aufgabe zu verarbeiten und Ergebnisse zu generieren. Die Ergebnisse können von anderen Aufgaben innerhalb des GPCs 350 übernommen, über die XBar 370 an einen anderen GPC 350 weitergeleitet oder in dem Speicher 304 gespeichert werden. Die Ergebnisse können über die Speicherpartitionseinheiten 380, welche eine Speicherschnittstelle zum Lesen und Schreiben von Daten in/aus dem Speicher 304 implementieren, in den Speicher 304 geschrieben werden. Die Ergebnisse können über den NVLink 310 an eine andere PPU 304 oder eine CPU übertragen werden. In einem Ausführungsbeispiel beinhaltet die PPU 300 eine Anzahl U von Speicherpartitionseinheiten 380, die gleich der Anzahl von separaten und unterschiedlichen Speichervorrichtungen 304 ist, die mit der PPU 300 gekoppelt sind. Eine Speicherpartitionseinheit 380 wird nachstehend in Verbindung mit 4B näher beschrieben.
  • In einem Ausführungsbeispiel führt ein Host-Prozessor einen Treiberkern aus, der eine Anwendungsprogrammierschnittstelle (API) implementiert, die es einer oder mehreren auf dem Host-Prozessor ausgeführten Anwendungen ermöglicht, Operationen zur Ausführung auf der PPU 300 zu planen. In einem Ausführungsbeispiel werden mehrere Rechenanwendungen gleichzeitig von der PPU 300 ausgeführt und stellt die PPU 300 Isolation, Quality of Service (QoS) und unabhängige Adressräume für die mehreren Rechenanwendungen bereit. Eine Anwendung kann Anweisungen (z.B. API-Aufrufe) erzeugen, die den Treiberkern veranlassen, eine oder mehrere Aufgaben zur Ausführung durch die PPU 300 zu erzeugen. Der Treiberkern gibt Aufgaben an einen oder mehrere Streams aus, die von der PPU 300 verarbeitet werden. Jede Aufgabe kann eine oder mehrere Gruppen verwandter Threads umfassen, die hierin als ein Warp bezeichnet werden. In einem, Ausführungsbeispiel umfasst ein Warp 32 verwandte Threads, die parallel ausgeführt werden können. Kooperierende Threads können sich auf eine Vielzahl von Threads einschließlich Anweisungen zum Durchführen der Aufgabe, und die Daten über gemeinsam genutzten Speicher austauschen können, beziehen. Threads und kooperierende Threads werden in Verbindung mit 5A näher beschrieben.
  • 4A veranschaulicht einen GPC 350 der PPU 300 von 3 gemäß einem Ausführungsbeispiel. Wie in 4A gezeigt ist, beinhaltet jeder GPC 350 eine Anzahl von Hardwareeinheiten zum Verarbeiten von Aufgaben. In einem Ausführungsbeispiel beinhaltet jeder GPC 350 einen Pipeline-Verwalter bzw. Pipeline-Manager 410, eine Vorrasteroperationseinheit bzw. Pre-Raster Operations Unit (PROP) 415, eine Rastermaschine bzw. Raster-Engine 425, eine Arbeitsverteilungsquerschiene bzw. Work Distribution Crossbar (WDX) 480, eine Speicherverwaltungseinheit bzw. Memory Management Unit (MMU) 490 und einen oder mehrere Datenverarbeitungscluster bzw. Data Processing Cluster (DPC) 420. Es versteht sich, dass der GPC 350 von 4A anstelle oder zusätzlich zu den in 4A gezeigten Einheiten andere Hardwareeinheiten beinhalten kann.
  • In einem Ausführungsbeispiel wird der Betriebsablauf des GPCs 350 durch den Pipeline-Manager 410 gesteuert. Der Pipeline-Manager 410 verwaltet die Konfiguration eines oder mehrerer DPC 420 zum Verarbeiten von Aufgaben, die dem GPC 350 zugeordnet sind. In einem Ausführungsbeispiel kann der Pipeline-Manager 410 zumindest einen der einen oder mehreren DPCs 420 dazu konfigurieren, zumindest einen Teil einer Grafik-Rendering-Pipeline zu implementieren. Beispielsweise kann ein DPC 420 dazu konfiguriert sein, ein Vertex-Shader-Programm auf dem programmierbaren Streaming-Multiprozessor (SM) 440 auszuführen. Der Pipeline-Manager 410 kann darüber hinaus dazu konfiguriert sein, von der Arbeitsverteilungseinheit 325 empfangene Pakete an die geeigneten logischen Einheiten innerhalb des GPCs 350 weiterzuleiten. Beispielsweise können einige Pakete an Hardwareeinheiten mit fester Funktion in der PROP 415 und/oder in der Raster-Engine 425 weitergeleitet werden, während andere Pakete an die DPC 420 zur Verarbeitung durch die Stammfunktionen-Maschine bzw. Stammfunktionen-Engine 435 oder den SM 440 weitergeleitet werden können. In einem Ausführungsbeispiel kann der Pipeline-Manager 410 zumindest einen oder mehrere der DPC 420 dazu konfigurieren, ein neuronales Netzwerkmodell und/oder eine Rechen-Pipeline zu implementieren.
  • Die PROP-Einheit 415 ist dazu konfiguriert, von der Raster-Engine 425 und den DPCs 420 erzeugte Daten an eine Rasterbetriebsablaufeinheit bzw. Raster Operations (ROP)-Einheit die in Verbindung mit 4B näher beschrieben wird, weiterzuleiten. Die PROP-Einheit 415 kann darüber hinaus dazu konfiguriert sein, Optimierungen zur Farbmischung durchzuführen, Pixeldaten zu organisieren, Adressübersetzungen durchzuführen und dergleichen.
  • Die Raster-Engine 425 beinhaltet eine Reihe von Hardwareeinheiten mit fester Funktion, die dazu konfiguriert sind, verschiedene Rasteroperationen durchzuführen. In einem Ausführungsbeispiel beinhaltet die Raster-Engine 425 eine Setup-Engine, eine Grobraster-Engine, eine Entnahme-Engine, eine Clipping-Engine, eine Feinraster-Engine und eine Kachelvereinigungs- bzw. Kachel-Koaleszenz-Engine. Die Setup-Engine empfängt transformierte Eckpunkte bzw. Vertices und erzeugt Ebenengleichungen, die der durch die Eckpunkte definierten geometrischen Stammfunktion zugeordnet sind. Die Ebenengleichungen werden an die Grobraster-Engine übertragen, um Abdeckungsinformationen (z.B. eine x, y-Abdeckungsmaske für eine Kachel) für die Stammfunktion zu erzeugen. Die Ausgabe der Grobraster-Engine wird an die Entnahme-Engine übertragen, an der der Stammfunktion zugeordnete Fragmente, die einen z-Test nicht bestehen, entnommen bzw. aussortiert werden, und an eine Clipping-Engine übertragen, an der Fragmente, die außerhalb eines Betrachtungskegels liegen, abgeschnitten werden. Die Fragmente, die das Abschneiden und das Aussortieren überleben, können an die Feinraster-Engine übergeben werden, um Attribute für die Pixelfragmente auf der Grundlage der von der Setup-Engine erzeugten Ebenengleichungen zu erzeugen. Die Ausgabe der Raster-Engine 425 umfasst Fragmente, die beispielsweise von einem in einem DPC 420 implementierten Fragment-Shader zu verarbeiten sind.
  • Jeder in dem GPC 350 enthaltene DPC 420 beinhaltet einen M-Pipe-Controller (MPC) 430, eine Stammfunktions-Engine 435 und einen oder mehrere SMs 440. Der MPC 430 steuert den Betriebsablauf des DPC 420 und routet die von dem Pipeline-Manager 410 empfangenen Pakete an die geeigneten Einheiten in dem DPC 420. Beispielsweise können Pakete, die einem Eckpunkt zugeordnet sind, an die Stammfunktions-Engine 435 geroutet werden, die dazu konfiguriert ist, dem Eckpunkt zugeordnete Eckpunktattribute aus dem Speicher 304 zu holen. Demgegenüber können Pakete, die einem Shader-Programm zugeordnet sind, an den SM 440 übertragen werden.
  • Der SM 440 umfasst einen programmierbaren Streaming-Prozessor, der dazu konfiguriert ist, Aufgaben zu verarbeiten, die durch eine Reihe von Threads repräsentiert werden. Jeder SM 440 ist multi-threaded und dazu konfiguriert, eine Vielzahl von Threads (z.B. 32 Threads) aus einer bestimmten Gruppe von Threads gleichzeitig auszuführen. In einem Ausführungsbeispiel implementiert der SM 440 eine SIMD (Single-Instruction, Multiple-Data)-Architektur, bei der jeder Thread in einer Gruppe von Threads (d.h. einem Warp) dazu konfiguriert ist, einen anderen Datensatz auf der Grundlage desselben Befehlssatzes zu verarbeiten. Alle Threads in der Gruppe von Threads führen dieselben Anweisungen aus. In einem anderen Ausführungsbeispiel implementiert der SM 440 eine SIMT (Single-Instruction, Multiple Thread)-Architektur, bei der jeder Thread in einer Gruppe von Threads dazu konfiguriert ist, einen anderen Datensatz auf der Grundlage desselben Befehlssatzes zu verarbeiten, wobei jedoch einzelne Threads in der Gruppe von Threads während der Ausführung divergieren dürfen. In einem Ausführungsbeispiel werden für jeden Warp ein Programmzähler, ein Aufrufstapel und ein Ausführungszustand beibehalten, wodurch die Gleichzeitigkeit zwischen Warps und eine serielle Ausführung innerhalb von Warps ermöglicht wird, wenn Threads innerhalb des Warps divergieren. In einem anderen Ausführungsbeispiel werden für jeden einzelnen Thread ein Programmzähler, ein Aufrufstapel und ein Ausführungszustand beibehalten, wodurch eine gleiche Gleichzeitigkeit zwischen allen Threads, innerhalb und zwischen Warps, ermöglicht wird. Wenn der Ausführungszustand für jeden einzelnen Thread beibehalten wird, können Threads, die dieselben Anweisungen ausführen, konvergiert und parallel ausgeführt werden, um eine maximale Effizienz zu erreichen. Der SM 440 wird nachstehend in Verbindung mit 5A näher beschrieben.
  • Die MMU 490 stellt eine Schnittstelle zwischen dem GPC 350 und der Speicherpartitionseinheit 380 bereit. Die MMU 490 kann eine Übersetzung von virtuellen Adressen in physikalische Adressen, einen Speicherschutz und eine Arbitrierung von Speicheranforderungen bereitstellen. In einem Ausführungsbeispiel stellt die MMU 490 einen oder mehrere Translation Lookaside Buffer (TLBs) bereit zum Durchführen einer Übersetzung von virtuellen Adressen in physikalische Adressen in dem Speicher 304.
  • 4B veranschaulicht eine Speicherpartitionseinheit 380 der PPU 300 von 3 gemäß einem Ausführungsbeispiel. Wie in 4B dargestellt ist, beinhaltet die Speicherpartitionseinheit 380 eine Raster Operations (ROP)-Einheit 450, einen Level-2 (L2)-Cache 460 und eine Speicherschnittstelle 470. Die Speicherschnittstelle 470 ist mit dem Speicher 304 gekoppelt. Die Speicherschnittstelle 470 kann 32, 64, 128, 1024-Bit-Datenbusse oder dergleichen für eine Hochgeschwindigkeits-Datenübertragung implementieren. In einem Ausführungsbeispiel beinhaltet die PPU 300 U-Speicherschnittstellen 470, eine Speicherschnittstelle 470 pro Paar von Speicherpartitionseinheiten 380, wobei jedes Paar von Speicherpartitionseinheiten 380 mit einer entsprechenden Speichervorrichtung 304 verbunden ist. Beispielsweise kann die PPU 300 mit bis zu Y Speichervorrichtungen 304 verbunden sein, wie beispielsweise Speicherstapeln mit hoher Bandbreite oder synchronem dynamischen Grafik-Direktzugriffsspeicher mit doppelter Datenrate, Version 5, oder anderen Arten von persistenten Speichern.
  • In einem Ausführungsbeispiel implementiert die Speicherschnittstelle 470 eine HBM2-Speicherschnittstelle und entspricht Y der Hälfte von U. In einem Ausführungsbeispiel befinden sich die HBM2-Speicherstapel in demselben physikalischen Gehäuse wie die PPU 300, wodurch im Vergleich zu herkömmlichen GDDR5-SDRAM-Systemen erheblichen Strom- und Flächeneinsparungen bereitgestellt werden. In einem Ausführungsbeispiel beinhaltet jeder HBM2-Stapel vier Speicherchips und ist Y gleich 4, wobei der HBM2-Stapel zwei 128-Bit-Kanäle pro Chip für insgesamt 8 Kanäle und eine Datenbusbreite von 1024 Bit beinhaltet.
  • In einem Ausführungsbeispiel unterstützt der Speicher 304 Single-Error Correcting Double-Error Detecting (SECDED) Error Correction Code (ECC) zum Schutz der Daten. ECC bietet eine höhere Zuverlässigkeit für Rechenanwendungen, die gegenüber Datenkorruption empfindlich reagieren. Zuverlässigkeit ist besonders wichtig in großen Cluster-Rechenumgebungen, in denen PPUs 300 sehr große Datensätze verarbeiten und/oder Anwendungen über längere Zeitspannen hinweg betreiben.
  • In einem Ausführungsbeispiel implementiert die PPU 300 eine mehrstufige Speicher-hierarchie. In einem Ausführungsbeispiel unterstützt die Speicherpartitionseinheit 380 einen vereinigten Speicher, um einen einzigen vereinigten virtuellen Adressraum für CPU- und PPU 300-Speicher bereitzustellen, der ein Teilen von Daten zwischen virtuellen Speichersystemen ermöglicht. In einem Ausführungsbeispiel wird die Häufigkeit von Zugriffen einer PPU 300 auf Speicher, der sich auf anderen Prozessoren befindet, nachverfolgt, um sicherzustellen, dass Speicherseiten in den physikalischen Speicher der PPU 300 verschoben werden, die häufiger auf die Seiten zugreift. In einem Ausführungsbeispiel unterstützt der NVLink 310 Adressübersetzungsdienste, die es der PPU 300 ermöglichen, direkt auf die Seitentabellen einer CPU zuzugreifen, und vollen Zugriff auf CPU-Speicher durch die PPU 300 bereitstellen.
  • In einem Ausführungsbeispiel übertragen Kopier-Engines Daten zwischen mehreren PPUs 300 oder zwischen PPUs 300 und CPUs. Die Kopier-Engines können Seitenfehler für Adressen, die nicht in den Seitentabellen abgebildet sind, erzeugen. Die Speicherpartitionseinheit 380 kann dann die Seitenfehler beheben, wobei sie die Adressen in die Seitentabelle abbildet, woraufhin die Kopier-Engine die Übertragung durchführen kann. In einem herkömmlichen System ist der Speicher für mehrfache Kopier-Engine-Operationen zwischen mehreren Prozessoren verankert (d.h. nicht auslagerbar), welches den verfügbaren Speicher erheblich reduziert. Mit Hardware-Seitenfehlerverwerfung können Adressen an die Kopier-Engines weitergegeben werden, ohne besorgt sein zu müssen, ob die Speicherseiten resident sind, und ist der Kopierprozess transparent.
  • Daten aus dem Speicher 304 oder anderem Systemspeicher können von der Speicherpartitionierungseinheit 380 abgerufen und in dem L2-Cache 460 gespeichert werden, welcher sich auf dem Chip befindet und von den verschiedenen GPCs 350 gemeinsam genutzt wird. Wie gezeigt ist, beinhaltet jede Speicherpartitionseinheit 380 einen Teil des L2-Cache 460, der einer entsprechenden Speichervor-richtung 304 zugeordnet ist. Untergeordnete Caches können dann in verschiedenen Einheiten innerhalb der GPCs 350 implementiert sein. So kann beispielsweise jeder der SMs 440 einen Level One (L1)-Cache implementieren. Der L1-Cache ist ein privater Speicher, der für einen bestimmten SM 440 dediziert ist. Daten aus dem L2-Cache 460 können abgerufen und in jedem der LI-Caches zur Verarbeitung in den Funktionseinheiten des SMs 440 gespeichert werden. Der L2-Cache 460 ist mit der Speicherschnittstelle 470 und der XBar 370 gekoppelt.
  • Die ROP-Einheit 450 führt Grafikrasteroperationen mit Bezug zu Pixelfarben durch, wie z.B. eine Farbkompression, ein Pixelblending und dergleichen. Die ROP-Einheit 450 implementiert darüber hinaus Tiefenprüfungen in Verbindung mit der Raster-Engine 425, wobei sie eine Tiefe für einen Probenort empfängt, der einem Pixelfragment aus der Entnahme-Engine der Raster-Engine 425 zugeordnet ist. Die Tiefe wird gegen eine entsprechende Tiefe in einem Tiefenpuffer für einen dem Fragment zugeordneten Probenort getestet. Wenn das Fragment den Tiefentest für den Probenort besteht, aktualisiert die ROP-Einheit 450 den Tiefenpuffer und überträgt ein Ergebnis des Tiefentests an die Raster-Engine 425. Es versteht sich, dass die Anzahl von Speicherpartitionseinheiten 380 von der Anzahl der GPCs 350 verschieden sein kann und daher jede ROP-Einheit 450 mit jedem der GPCs 350 gekoppelt sein kann. Die ROP-Einheit 450 verfolgt die von den verschiedenen GPCs 350 empfangenen Pakete nach und ermittelt den GPC 350, zu dem ein von der ROP-Einheit 450 erzeugtes Ergebnis über die Xbar 370 geroutet wird. Obwohl die ROP-Einheit 450 in 4B innerhalb der Speicherpartitionseinheit 380 enthalten ist, kann in einem anderen Ausführungsbeispiel die ROP-Einheit 450 außerhalb der Speicherpartitionseinheit 380 sein. Beispielsweise kann sich die ROP-Einheit 450 in dem GPC 350 oder in einer anderen Einheit befinden.
  • 5A veranschaulicht den Streaming-Multiprozessor 440 von 4A gemäß einem Ausführungsbeispiel. Wie in 5A gezeigt ist, beinhaltet der SM 440 einen Anweisungs-Cache 505, eine oder mehrere Scheduler-Einheiten 510, eine Registerdatei 520, einen oder mehrere Verarbeitungskerne 550, eine oder mehrere Spezialfunktionseinheiten (SFUs) 552, eine oder mehrere Lade-/Speicher-Einheiten (LSUs) 554, ein Zwischenverbindungsnetzwerk 580 und einen gemeinsam genutzten Speicher bzw. Shared Memory/L1-Cache 570.
  • Wie vorstehend beschrieben wurde, versendet die Arbeitsverteilungseinheit 325 Aufgaben zur Ausführung auf den GPCs 350 der PPU 300. Die Aufgaben sind einem bestimmten DPC 420 innerhalb eines GPCs 350 zugeordnet, und, wenn die Aufgabe einem Shader-Programm zugeordnet ist, kann die Aufgabe einem SM 440 zugeordnet sein. Die Scheduler-Einheit 510 empfängt die Aufgaben von der Arbeitsverteilungseinheit 325 und verwaltet die Anweisungsplanung für einen oder mehrere der dem SM 440 zugeordneten Thread-Blöcke. Die Scheduler-Einheit 510 plant Thread-Blöcke zur Ausführung als Warps paralleler Threads, wobei jedem Thread-Block zumindest ein Warp zugeordnet ist. In einem Ausführungsbeispiel führt jeder Warp 32 Threads aus. Die Scheduler-Einheit 510 kann eine Vielzahl verschiedener Thread-Blöcke verwalten, wobei sie die Warps den verschiedenen Thread-Blöcken zuordnet und dann während jedes Taktzyklus Anweisungen von der Vielzahl von verschiedenen kooperativen Gruppen an die verschiedenen Funktionseinheiten (d.h. Kerne 550, SFUs 552 und LSUs 554) sendet.
  • Cooperative Groups bzw. kooperative Gruppen ist ein Programmiermodell zum Organisieren von Gruppen kommunizierender Threads, das es Entwicklern ermöglicht, die Granularität auszudrücken, mit welcher Threads kommunizieren, wodurch der Ausdruck reichhaltigerer, effizienterer paralleler Zerlegungen ermöglicht wird. Kooperative Start-APIs unterstützen die Synchronisation zwischen Thread-Blöcken zur Ausführung paralleler Algorithmen. Herkömmliche Programmiermodelle stellen ein einziges, einfaches Konstrukt zur Synchronisation kooperierender Threads bereit: eine Barriere über alle Threads eines Thread-Blocks (d.h. die Funktion syncthreads()). Programmierer möchten jedoch oftmals Gruppen von Threads definieren, die kleiner als die Granularität von Threads sind, und innerhalb der definierten Gruppen synchronisieren, um mehr Leistung, Designflexibilität und Wiederverwendbarkeit von Software in Form von gemeinsamen gruppenweiten Funktionsschnittstellen zu ermöglichen.
  • Cooperative Groups ermöglicht es Programmierern, Gruppen von Threads explizit bei Subblock (d.h. so klein wie ein einzelner Thread)- und Multiblock-Granularitäten zu definieren und kollektive Operationen wie beispielsweise die Synchronisation auf den Threads in einer kooperativen Gruppe durchzuführen. Das Programmiermodell unterstützt eine saubere Zusammensetzung über Softwaregrenzen hinweg, so dass Bibliotheken und Utility-Funktionen in ihrem lokalen Kontext sicher synchronisieren können, ohne Annahmen über Konvergenz treffen zu müssen. Stammfunktionen kooperativer Gruppen ermöglichen neue Muster kooperativer Parallelität, einschließlich von Erzeuger-Verbraucher-Parallelität, opportunistischer Parallelität und globaler Synchronisation über ein ganzes Netz von Thread-Blöcken hinweg.
  • Eine Sendeeinheit 515 ist dazu konfiguriert, Anweisungen an eine oder mehrere der Funktionseinheiten zu senden. In dem Ausführungsbeispiel beinhaltet die Scheduler-Einheit 510 zwei Sendeeinheiten 515, die es ermöglichen, während jedes Taktzyklus zwei verschiedene Anweisungen desselben Warps zu versenden. In alternativen Ausführungsbeispielen kann jede Scheduler-Einheit 510 eine einzelne Sendeeinheit 515 oder zusätzliche Sendeeinheiten 515 beinhalten.
  • Jeder SM 440 beinhaltet eine Registerdatei 520, die einen Satz von Registern für die Funktionseinheiten des SMs 440 bereitstellt. In einem Ausführungsbeispiel ist die Registerdatei 520 zwischen jeder der Funktionseinheiten aufgeteilt, so dass jeder Funktionseinheit ein dedizierter Teil der Registerdatei 520 zugeordnet ist. In einem anderen Ausführungsbeispiel ist die Registerdatei 520 zwischen den verschiedenen Warps aufgeteilt, die von dem SM 440 ausgeführt werden. Die Registerdatei 520 stellt einen Zwischenspeicher für Operanden, die mit den Datenpfaden der Funktionseinheiten verbunden sind, bereit.
  • Jeder SM 440 umfasst L Verarbeitungskerne 550. In einem Ausführungsbeispiel beinhaltet der SM 440 eine große Anzahl (z.B. 128, usw.) verschiedener Verarbeitungskerne 550. Jeder Kern 550 kann eine vollpipelinierte, einfachgenaue, doppelgenaue und/oder gemischtgenaue Verarbeitungseinheit beinhalten, die eine Gleitkomma-Rechenlogikeinheit und eine Ganzzahl-Rechenlogikeinheit beinhaltet. In einem Ausführungsbeispiel implementieren die Gleitkomma-Rechenlogikeinheiten den Standard IEEE 754-2008 für Gleitkommaarithmetik. In einem Ausführungs-beispiel beinhalten die Kerne 550 64 einfachgenaue (32-Bit) GleitkommaKerne, 64 Ganzzahlkerne, 32 doppelgenaue (64-Bit) Gleitkommakerne und 8 Tensorkerne.
  • Tensorkerne, sind dazu konfiguriert, Matrixoperationen durchzuführen, und in einem Ausführungsbeispiel sind ein oder mehrere Tensorkerne in den Kernen 550 enthalten. Insbesondere sind die Tensorkerne dazu konfiguriert, tief lernende Matrixarithmetik durchzuführen, wie z.B. Faltungsoperationen für das Training und die Inferenzierung neuronaler Netzwerke. In einem Ausführungsbeispiel arbeitet jeder Tensorkern auf einer 4x4-Matrix und führt eine Matrixmultiplikation- und Akkumulationsoperation D=A×B+C durch, worin A, B, C und D 4x4-Matrizen sind.
  • In einem Ausführungsbeispiel sind die Matrixmultiplikationseingänge A und B 16-Bit Fließkomma-Matrizen, während die Akkumulationsmatrizen C und D 16-Bit Fließkomma- oder 32-Bit Fließkomma-Matrizen sein können. Tensorkerne arbeiten mit 16-Bit Gleitkomma-Eingangsdaten mit 32-Bit Gleitkommaakkumulation. Die 16-Bit-Fließkomma-Multiplikation erfordert 64 Operationen und resultiert in einem hochpräzisen Produkt, das dann unter Verwendung der 32-Bit-Fließkommaaddition mit den anderen Zwischenprodukten für eine 4x4x4-Matrix-Multiplikation akkumuliert wird. In der Praxis werden Tensorkerne verwendet, um viel größere zweidimensionale oder höher dimensionale Matrixoperationen durchzuführen, die sich aus diesen kleineren Elementen zusammensetzen. Eine API, wie beispielsweise die CUDA 9 C++ API, stellt spezielle Matrixlasten, Matrixmultiplikationen und -akkumulationen sowie Matrixspeicheroperationen zur Verfügung, um Tensorkerne aus einem CUDA C++-Programm heraus effizient zu nutzen. Auf der CUDA-Ebene geht das Warp-Level-Interface von Matrizen der Größe 16×16 aus, die alle 32 Threads des Warps umspannen.
  • Jeder SM 440 umfasst auch M SFUs 552, die spezielle Funktionen (z.B. Attributbewertung, reziproke Quadratwurzel und dergleichen) durchführen. In einem Ausführungsbeispiel können die SFUs 552 eine Baumdurchlaufeinheit beinhalten, die dazu konfiguriert ist, eine hierarchische Baumdatenstruktur zu durchlaufen. In einem Ausführungsbeispiel können die SFUs 552 eine Textureinheit beinhalten, die dazu konfiguriert ist, Texturkartenfilteroperationen durchzuführen. In einem Ausführungsbeispiel sind die Textureinheiten dazu konfiguriert, Texturkarten (z.B. ein 2D-Array von Texeln) aus dem Speicher 304 zu laden und die Texturkarten abzutasten, um abgetastete Texturwerte zur Verwendung in Shader-Programmen zu erzeugen, die von dem SM 440 ausgeführt werden. In einem Ausführungsbeispiel werden die Texturkarten in dem gemeinsam genutzten Speicher/L1-Cache 470 gespeichert. Die Textureinheiten implementieren Texturoperationen wie z.B. Filteroperationen mit Hilfe von Mip-Maps (d.h. Texturkarten mit variierendem Detaillierungsgrad). In einem Ausführungsbeispiel beinhaltet jeder SM 340 zwei Textureinheiten.
  • Jeder SM 440 umfasst darüber hinaus N LSUs 554, die Lade- und Speicheroperationen zwischen dem gemeinsam genutzten Speicher/L1-Cache 570 und der Registerdatei 520 implementieren. Jeder SM 440 beinhaltet ein Zwischenverbindungsnetzwerk 580, das jede der Funktionseinheiten mit der Registerdatei 520 und die LSU 554 mit der Registerdatei 520 und dem gemeinsam genutzten Speicher/L1 Cache 570 verbindet. In einem Ausführungsbeispiel ist das Zwischenverbindungsnetzwerk 580 eine Kreuz- bzw. Querschiene (Crossbar), die dazu konfiguriert sein kann, eine beliebige der Funktions-einheiten mit einem beliebigen der Register in der Registerdatei 520 zu verbinden und die LSUs 554 mit der Registerdatei und Speicherplätzen in dem gemeinsam genutzten Speicher/L1-Cache 570 zu verbinden.
  • Der gemeinsam genutzte Speicher/Ll Cache 570 ist eine Anordnung von Speichern auf dem Chip bzw. ein On-Chip-Speicher, das bzw. der eine Datenspeicherung und Kommunikation zwischen dem SM 440 und der Stammfunktions-Engine 435 sowie zwischen Threads in dem SM 440 ermöglicht. In einem Ausführungsbeispiel umfasst der gemeinsam genutzte Speicher/L1-Cache 570 128KB Speicherkapazität und liegt in dem Pfad von dem SM 440 zu der Speicherpartitionseinheit 380. Der gemeinsam genutzte Speicher/L1-Cache 570 kann dazu verwendet werden, Lesevorgänge und Schreibvorgänge zwischenzuspeichern. Einer oder mehrere des gemeinsam genutzten Speichers/L1-Cache 570, des L2-Cache 460 und des Speichers 304 sind Backup-Speicher.
  • Ein Kombinieren von Daten-Cache- und Shared Memory-Funktionalität zu einem einzigen Speicherblock stellt die beste Gesamtleistung für beide Arten von Speicherzugriffen bereit. Die Kapazität ist als ein Zwischenspeicher bzw. Cache für Programme nutzbar, die keinen gemeinsam genutzten Speicher verwenden. Wenn beispielsweise ein gemeinsam genutzter Speicher so konfiguriert ist, dass er die Hälfte der Kapazität verwendet, können Textur- und Lade-/Speicher-Operationen die verbleibende Kapazität nutzen. Die Integration innerhalb des gemeinsam genutzten Speichers/L1-Caches 570 ermöglicht es dem gemeinsam genutzten Speicher/L1-Cache 570, als eine Hochdurchsatzleitung zum Streamen von Daten zu arbeiten und gleichzeitig einen Zugriff auf häufig wiederverwendete Daten mit hoher Bandbreite und geringer Latenz zu ermöglichen.
  • Bei einer Konfiguration für universelle parallele Berechnungen kann eine im Vergleich mit Grafikverarbeitung einfachere Konfiguration verwendet werden. Insbesondere werden die in 3 gezeigten Grafikverarbeitungseinheiten mit fester Funktion umgangen, wodurch ein wesentlich einfacheres Programmiermodell entsteht. In der Konfiguration für universelle parallele Berechnung weist die Arbeitsverteilungseinheit 325 Thread-Blöcke direkt den DPCs 420 zu und verteilt sie. Die Threads in einem Block führen dasselbe Programm aus, wobei eine eindeutige Thread-ID in der Berechnung verwendet wird, um sicherzustellen, dass jeder Thread eindeutige Ergebnisse erzeugt, und wobei der SM 440 verwendet wird, um das Programm auszuführen und Berechnungen durchzuführen, der gemeinsam genutzte Speicher/L1-Cache 570 verwendet wird, um zwischen Threads zu kommunizieren, und die LSU 554 verwendet wird, um den globalen Speicher über den gemeinsam genutzten Speicher/L1-Cache 570 und die Speicherpartitionseinheit 380 zu lesen und zu beschreiben. Bei der Konfiguration für universelle parallele Berechnungen kann der SM 440 ebenfalls Befehle schreiben, die die Scheduler-Einheit 320 dazu verwenden kann, neue Arbeit an den DPCs 420 zu starten.
  • Die PPU 300 kann in einem Desktop-Computer, einem Laptop-Computer, einem Tablet-Computer, Servern, Supercomputern, einem Smartphone (z.B. einem drahtlosen, tragbaren Gerät), einem Personal Digital Assistant (PDA), einer Digitalkamera, einem Fahrzeug, einem Kopfbildschirm, einer tragbaren elektronischen Vorrichtung und dergleichen integriert sein. In einem Ausführungsbeispiel ist die PPU 300 auf einem einzelnen Halbleitersubstrat ausgeführt. In einem anderen Ausführungsbeispiel ist die PPU 300 zusammen mit einer oder mehreren anderen Vorrichtungen, wie beispielsweise zusätzlichen PPUs 300, dem Speicher 204, einer CPU mit reduziertem Befehlssatz (RISC), einer Speicherverwaltungseinheit (MMU), einem Digital-Analog-Wandler (DAC) und dergleichen, in einem System auf einem Chip (SoC) enthalten.
  • In einem Ausführungsbeispiel kann die PPU 300 auf einer Grafikkarte enthalten sein, die eine oder mehrere Speichervorrichtungen 304 beinhaltet. Die Grafikkarte kann so konfiguriert sein, dass sie mit einem PCIe-Steckplatz auf einem Motherboard eines Desktop-Computers verbunden ist. In einem nochmals anderen Ausführungsbeispiel kann die PPU 300 eine integrierte Grafikverarbeitungseinheit (iGPU) oder ein paralleler Prozessor sein, der in dem Chipsatz des Motherboards enthalten ist.
  • Beispielhaftes Rechensystem
  • Systeme mit mehreren GPUs und CPUs werden in einer Vielzahl von Branchen eingesetzt, da Entwickler mehr Parallelität in Anwendungen wie künstlicher Intelligenz bereitstellen und nutzen. Leistungsstarke GPU-beschleunigte Systeme mit zehn bis vielen tausend Rechenknoten werden in Rechenzentren, Forschungseinrichtungen und Supercomputern eingesetzt, um immer größere Probleme zu lösen. Mit steigender Anzahl von Verarbeitungseinrichtungen innerhalb der Hochleistungssysteme müssen die Kommunikations- und Datenübertragungsmechanismen skalieren, um die größere Bandbreite zu unterstützen.
  • 5B ist ein konzeptionelles Diagramm eines unter Verwendung der PPU 300 von 3 implementierten Verarbeitungssystems 500, gemäß einem Ausführungsbeispiel. Das beispielhafte System 560 kann dazu konfiguriert sein, das in 1D dargestellte Verfahren 150 und das in 2B gezeigte Verfahren 225 zu implementieren. Das Verarbeitungssystem 500 beinhaltet eine CPU 530, einen Switch 510 und jeweils mehrere PPUs 300 und entsprechende Speicher 304. Der NVLink 310 stellt Hochgeschwindigkeits-Kommunikationsverbindungen zwischen jeder der PPUs 300 bereit. Obwohl eine bestimmte Anzahl von NVLink 310- und Interconnect 302-Verbindungen in 5B dargestellt ist, kann die Anzahl der Verbindungen zu jeder PPU 300 und der CPU 530 variieren. Der Switch 510 verbindet zwischen der Zwischenverbindung 302 und der CPU 530. Die PPUs 300, die Speicher 304 und die NVLinks 310 können auf einer einzigen Halbleiterplattform liegen, um ein Parallelverarbeitungsmodul 525 zu bilden. In einem Ausführungsbeispiel unterstützt der Switch 510 zwei oder mehr Protokolle, um zwischen verschiedenen unterschiedlichen Verbindungen und/oder Verknüpfungen zu verbinden.
  • In einem anderen Ausführungsbeispiel (nicht gezeigt) stellt der NVLink 310 eine oder mehrere Hochgeschwindigkeits-Kommunikationsverbindungen zwischen jeder der PPUs 300 und der CPU 530 bereit und verbindet der Switch 510 zwischen der Zwischenverbindung 302 und jeder der PPUs 300. Die PPUs 300, die Speicher 304 und die Zwischenverbindung 302 können auf einer einzigen Halbleiterplattform angeordnet sein, um ein Parallelverarbeitungsmodul 525 zu bilden. In einem nochmals weiteren Ausführungsbeispiel (nicht gezeigt) stellt die Zwischenverbindung 302 eine oder mehrere Kommunikationsverbindungen zwischen jeder der PPUs 300 und der CPU 530 bereit, und verbindet der Switch 510 zwischen jeder der PPUs 300 unter Verwendung des NVLinks 310, um eine oder mehrere Hochgeschwindigkeits-Kommunikationsverbindungen zwischen den PPUs 300 bereitzustellen. In einem weiteren Ausführungsbeispiel (nicht gezeigt) stellt der NVLink 310 eine oder mehrere Hochgeschwindigkeits-Kommunikationsverbindungen zwischen den PPUs 300 und der CPU 530 über den Switch 510 bereit. In einem nochmals anderen Ausführungsbeispiel (nicht gezeigt) stellt die Zwischenverbindung 302 eine oder mehrere Kommunikationsverbindungen zwischen jeder der PPUs 300 direkt zur Verfügung. Eine oder mehrere der NVLink 310-Hochgeschwindigkeits-Kommunikationsverbindungen können als physikalische NVLink-Zwischenverbindung oder als entweder eine On-Chip- oder eine On-Die-Zwischenverbindung unter Verwendung desselben Protokolls wie das des NVLink 310 implementiert sein.
  • Im Kontext der vorliegenden Beschreibung kann sich eine einzelne Halbleiterplattform auf eine einzige einheitliche halbleiterbasierte integrierte Schaltung beziehen, die auf einem Die oder einem Chip hergestellt ist. Es wird angemerkt, dass sich der Begriff einzelne Halbleiterplattform auch auf Multichip-Module mit erhöhter Konnektivität, die einen On-Chip-Betriebsablauf simulieren und wesentliche Verbesserungen gegenüber der Nutzung einer herkömmlichen Busimplementierung bereitstellen, beziehen kann. Natürlich können die verschiedenen Schaltungen oder Vorrichtungen auch einzeln oder in verschiedenen Kombinationen von Halbleiterplattformen nach den Wünschen des Benutzers angeordnet sein. Alternativ kann das Parallelverarbeitungsmodul 525 als ein Leiterplattensubstrat implementiert sein, und kann jede der PPUs 300 und/oder jeder der Speicher 304 eine gepackte Vorrichtung sein. In einem Ausführungsbeispiel befinden sich die CPU 530, der Switch 510 und das Parallelverarbeitungsmodul 525 auf einer einzigen Halbleiterplattform.
  • In einem Ausführungsbeispiel beträgt die Signalübertragungsrate jedes NVLinks 310 20 bis 25 Gigabit/Sekunde und beinhaltet jede PPU 300 sechs NVLink 310-Schnittstellen (wie in 5B dargestellt, sind fünf NVLink 310-Schnittstellen für jede PPU 300 enthalten). Jeder NVLink 310 stellt eine Datenübertragungsrate von 25 Gigabyte/Sekunde in jede Richtung bereit, wobei sechs Links 300 Gigabyte/Sekunde liefern. Die NVLinks 310 können ausschließlich für die PPU-zu-PPU-Kommunikation, wie in 5B gezeigt, oder für eine Kombination aus PPU-zu-PPU und PPU-zu-CPU verwendet werden, wenn die CPU 530 ebenfalls eine oder mehrere NVLink 310-Schnittstellen beinhaltet.
  • In einem Ausführungsbeispiel ermöglicht der NVLink 310 den direkten Lade-/ Speicher-/Kernzugriff von der CPU 530 auf den Speicher 304 jeder PPU 300. In einem Ausführungsbeispiel unterstützt der NVLink 310 Kohärenzoperationen, so dass aus den Speichern 304 gelesene Daten in der Cache-Hierarchie der CPU 530 gespeichert werden können, wodurch die Cache-Zugriffslatenz für die CPU 530 reduziert wird. In einem Ausführungsbeispiel beinhaltet der NVLink 310 die Unterstützung von Address Translation Services (ATS), so dass die PPU 300 direkt auf Seitentabellen innerhalb der CPU 530 zugreifen kann. Einer oder mehrere der NVLinks 310 können auch für den Betrieb in einem Energiesparmodus konfiguriert sein.
  • 5C veranschaulicht ein beispielhaftes System 565, in welchem die unterschiedliche Architektur und/oder Funktionalität der verschiedenen vorangehenden Ausführungsbeispiele implementiert sein kann. Das beispielhafte System 565 kann dazu konfiguriert sein, das in 1D gezeigte Verfahren 150 und das in 2B gezeigte Verfahren 225 zu implementieren.
  • Wie gezeigt ist, wird ein System 565 bereitgestellt, das zumindest eine Zentralverarbeitungseinheit 530 beinhaltet, die mit einem Kommunikationsbus 575 verbunden ist. Der Kommunikationsbus 575 kann unter Verwendung jedes geeigneten Protokolls, wie z.B. PCI (Peripheral Component Interconnect), PCI-Express, AGP (Accelerated Graphics Port), HyperTransport oder einem beliebigen anderen Bus- oder Punkt-zu-Punkt Kommunikationsprotokoll(en), implementiert sein. Das System 565 beinhaltet darüber hinaus einen Hauptspeicher 540. Steuerlogik (Software) und die Daten werden in dem Hauptspeicher 540 gespeichert, welcher als Direktzugriffsspeicher (RAM) ausgeführt sein kann.
  • Das System 565 beinhaltet darüber hinaus Eingabevorrichtungen 560, das Parallelverarbeitungssystem 525 und Anzeigevorrichtungen 545, d.h. eine herkömmliche CRT (Kathodenstrahlröhre), LCD (Flüssigkristallanzeige), LED (Leuchtdiode), Plasmaanzeige oder dergleichen. Benutzereingaben können von den Eingabegeräten 560, z.B. Tastatur, Maus, Touchpad, Mikrofon und dergleichen, empfangen werden. Jede(s) der vorgenannten Module und/oder Vorrichtungen kann sich sogar auf einer einzigen Halbleiterplattform befinden, um das System 565 zu bilden. Alternativ können die verschiedenen Module auch einzeln oder in verschiedenen Kombinationen von Halbleiterplattformen nach den Wünschen des Anwenders angeordnet sein.
  • Ferner kann das System 565 über eine Netzwerkschnittstelle 535 zu Kommunikationszwecken mit einem Netzwerk (z.B. einem Telekommunikationsnetzwerk, einem Local Area Network (LAN), einem drahtlosen Netzwerk, einem Wide Area Network (WAN) wie beispielsweise dem Internet, einem Peer-to-Peer-Netzwerk, einem Kabelnetzwerk oder dergleichen) gekoppelt sein.
  • Das System 565 kann darüber hinaus einen Sekundärspeicher (nicht gezeigt) beinhalten. Der Sekundärspeicher 610 beinhaltet beispielsweise ein Festplattenlaufwerk und/oder ein Wechselspeicherlaufwerk, das ein Diskettenlaufwerk, ein Magnetbandlaufwerk, ein Compact-Disc-Laufwerk, ein Digital Versatile Disc (DVD)-Laufwerk, ein Aufzeichnungsgerät oder einen universeller serieller Bus-(USB)-Flashspeicher darstellt. Das Wechselspeicherlaufwerk liest und/oder schreibt in bekannter Weise von einer/auf eine Wechselspeichereinheit.
  • Computerprogramme, oder Logikalgorithmen der Computersteuerung, können in dem Hauptspeicher 540 und/oder in dem Sekundärspeicher gespeichert werden. Wenn sie ausgeführt werden, ermöglichen es solche Computerprogramme dem System 565, verschiedene Funktionen durchzuführen. Der Speicher 540, der Speicher und/oder jeder andere Speicher sind mögliche Beispiele von computerlesbaren Medien.
  • Die Architektur und/oder Funktionalität der verschiedenen vorangehenden Figuren kann im Kontext eines universellen Computersystems, eines Platinensystems, eines Spielkonsolensystems, das für Unterhaltungszwecke dediziert ist, eines anwendungsspezifischen Systems und/oder eines beliebigen anderen gewünschten Systems implementiert werden. Das System 565 kann beispielsweise die Form eines Desktop-Computers, eines Laptops, eines Tablet-Computers, von Servern, Supercomputern, eines Smartphones (z.B. eines drahtlosen, tragbaren Geräts), eines persönlichen digitalen Assistenten (PDA), einer Digitalkamera, eines Fahrzeugs, einer kopfmontierten Anzeige, einer tragbaren elektronischen Vorrichtung, einer mobilen Telefonvorrichtung, eines Fernsehers, einer Workstation, von Spielkonsolen, eines eingebetteten Systems und/oder einer beliebigen anderen Art von Logik annehmen.
  • Während vorstehend verschiedene Ausführungsbeispiele beschrieben wurden, versteht sich, dass diese lediglich beispielhaft und nicht als beschränkend dargestellt wurden. Daher ist die Breite und der Schutzumfang eines bevorzugten Ausführungsbeispiels nicht durch eines der vorstehend beschriebenen beispielhaften Ausführungsbeispiele zu beschränken, sondern nur in Übereinstimmung mit den nachfolgenden Ansprüchen und deren Äquivalenten zu definieren.
  • Maschinelles Lernen
  • Tiefe neuronale Netzwerke bzw. Deep Neural Networks (DNNs), die auf Prozessoren wie beispielsweise der PPU 300 entwickelt wurden, wurden für verschiedene Anwendungsfälle eingesetzt, von selbstfahrenden Autos bis hin zu schnellerer Medikamentenentwicklung, von der automatischen Bildüberschrift in Online-Bilddatenbanken bis hin zur intelligenten Echtzeit-Sprachübersetzung in Video-Chat-Anwendungen. Deep Learning ist eine Technik, die den neuronalen Lernprozess des menschlichen Gehirns modelliert, kontinuierlich lernt, kontinuierlich intelligenter wird und im Laufe der Zeit schnellere und genauere Ergebnisse liefert. Ein Kind wird zunächst von einem Erwachsenen gelehrt, verschiedene Formen richtig zu identifizieren und zu klassifizieren, um schließlich ohne Coaching Formen identifizieren zu können. Ebenso muss ein tief lernendes oder neuronal lernendes System in der Objekterkennung und - klassifizierung trainiert werden, damit es intelligenter und effizienter grundlegende Objekte, verdeckte Objekte usw. identifizieren und gleichzeitig den Objekten Kontext zuweisen kann.
  • Auf der einfachsten Ebene betrachten Neuronen im menschlichen Gehirn verschiedene Inputs bzw. Eingaben, die empfangen werden, werden jedem dieser Inputs Wichtigkeitsstufen zugewiesen, und wird ein Output bzw. eine Ausgabe an andere Neuronen weitergeleitet, um darauf zu reagieren. Ein künstliches Neuron oder Perzeptron ist das grundlegendste Modell eines neuronalen Netzwerks. In einem Beispiel kann ein Perzeptron eine oder mehrere Eingaben empfangen, die verschiedene Merkmale eines Objekts darstellen, für die das Perzeptron trainiert wird, um sie zu erkennen und zu klassifizieren, und wird jedem dieser Merkmale ein bestimmtes Gewicht zugewiesen, das auf der Bedeutung dieses Merkmals für die Definition der Form eines Objekts basiert.
  • Ein Deep Neural Network (DNN)-Modell beinhaltet mehrere Schichten vieler verbundener Perzeptrons (beispielsweise Knoten), die mit enormen Mengen von Eingangsdaten trainiert werden können, um komplexe Probleme mit hoher Genauigkeit schnell zu lösen. In einem Beispiel zerlegt eine erste Schicht des DNN-Modells ein Eingangsbild eines Autos in verschiedene Abschnitte und sucht nach Grundmustern wie beispielsweise Linien und Winkeln. Die zweite Schicht setzt die Linien zusammen, um nach Mustern höherer Ebene wie beispielsweise Rädern, Windschutzscheiben und Spiegeln zu suchen. Die nächste Schicht identifiziert den Fahrzeugtyp, und die letzten paar Schichten erzeugen ein Label für das Eingangsbild, das das Modell einer bestimmten Automobilmarke identifiziert.
  • Sobald das DNN trainiert ist, kann das DNN eingesetzt und dazu verwendet werden, Objekte oder Muster in einem Prozess, der als Inferenz bzw. Schlussfolgerung bekannt ist, zu identifizieren und zu klassifizieren. Beispiele für Schlussfolgerungen (der Prozess, durch welchen ein DNN nützliche Informationen aus einer gegebenen Eingabe extrahiert) beinhalten das Identifizieren von handschriftlichen Zahlen auf Schecks, die in Geldautomaten hinterlegt werden, das Identifizieren von Bildern von Freunden auf Fotos, das Liefern von Filmempfehlungen an über fünfzig Millionen Benutzer, das Identifizieren und Klassifizieren verschiedener Arten von Automobilen, Fußgängern und Straßengefahren in fahrerlosen Autos oder das Übersetzen menschlicher Sprache in Echtzeit.
  • Während des Trainings fließen Daten in einer Vorwärtspropagationsphase durch das DNN, bis eine Vorhersage erstellt wird, die ein dem Input entsprechendes Label angibt. Wenn das neuronale Netzwerk die Eingabe nicht korrekt kennzeichnet, werden Fehler zwischen der korrekten Bezeichnung und der vorhergesagten Kennzeichnung analysiert und werden die Gewichte für jedes Merkmal während einer Rückwärtspropagationsphase angepasst, bis das DNN die Eingabe und andere Eingaben in einem Trainingsdatensatz korrekt kennzeichnet. Das Training komplexer neuronaler Netze erfordert enorme Mengen an paralleler Rechenleistung, einschließlich von Gleitkomma-Multiplikationen und Additionen, die von der PPU 300 unterstützt werden. Die Inferenzierung ist weniger rechenintensiv als das Training, da es sich um einen latenzsensitiven Prozess handelt, bei dem ein trainiertes neuronales Netzwerk auf neue Eingaben, die es bisher noch nicht gegeben hat, angewendet wird, um Bilder zu klassifizieren, Sprache zu übersetzen und generell neue Informationen abzuleiten.
  • Neuronale Netzwerke sind stark auf Matrix-Mathematik-Operationen angewiesen, und komplexe mehrschichtige Netzwerke erfordern enorme Mengen an Gleitkommaleistung und Bandbreite für sowohl Effizienz als auch Geschwindigkeit. Mit Tausenden von Rechenkernen, die für Matrix-Mathematik-Operationen optimiert sind und mehrere Zehn bis Hunderte von TFLOPS an Leistung liefern, ist die PPU 300 eine Rechenplattform, die in der Lage ist, die Leistung zu liefern, die für auf tiefen neuronalen Netzwerken basierende künstliche Intelligenz und Anwendungen des maschinellen Lernens erforderlich ist.

Claims (22)

  1. Computerimplementiertes Verfahren, umfassend: Empfangen von Positionen von Schlüsselpunkten für ein dreidimensionales (3D)-Objekt, wobei jede Position Pixelkoordinaten und einen normierten Tiefenwert beinhaltet, wobei die Pixelkoordinaten Pixeln innerhalb eines zweidimensionalen (2D)-Bilds des 3D-Objekts entsprechen, wobei das 2D-Bild Kameraeigenschaften zugeordnet ist und die normierten Tiefenwerte normierten relativen Tiefenwerten von jedem einen der Schlüsselpunkte in Bezug auf einen Referenzschlüsselpunkt entsprechen; Berechnen einer Tiefe des Referenzschlüsselpunkts in Bezug auf eine Kamera durch eine 3D-Rekonstruktionseinheit basierend auf den Positionen und den Kameraeigenschaften; Berechnen einer maßstabsnormierten 3D-Pose des 3D-Objekts basierend auf den Positionen, der Tiefe des Referenzschlüsselpunkts und den Kameraattributen; und Erzeugen einer absoluten 3D-Pose des 3D-Objekts aus der maßstabsnormierten 3D-Pose in Übereinstimmung mit einem Skalierungsfaktor.
  2. Computerimplementiertes Verfahren nach Anspruch 1, wobei der Skalierungsfaktor geschätzt wird und einer Komponente des 3D-Objekts entspricht.
  3. Computerimplementiertes Verfahren nach Anspruch 1 oder 2, wobei der Skalierungsfaktor gemessen wird und einer Komponente des 3D-Objekts entspricht.
  4. Computerimplementiertes Verfahren nach einem der vorangehenden Ansprüche, wobei die normierten Tiefenwerte relativ zu einem Referenzschlüsselpunkt berechnet werden.
  5. Computerimplementiertes Verfahren nach Anspruch 4, wobei das Berechnen der maßstabsnormierten 3D-Pose auf einer Tiefe des Referenzschlüsselpunkts basiert, die unter Verwendung der Positionen berechnet wird.
  6. Computerimplementiertes Verfahren nach einem der vorangehenden Ansprüche, wobei die normierten Tiefenwerte invariant für Änderungen in einem Maßstab des 3D-Objekts sind.
  7. Computerimplementiertes Verfahren nach einem der vorangehenden Ansprüche, wobei die normierten Tiefenwerte invariant für Änderungen in einer Translation des 3D-Objekts sind.
  8. Computerimplementiertes Verfahren, umfassend: Verarbeiten eines zweidimensionalen (2D) Eingangsbilds eines dreidimensionalen (3D) Objekts durch ein neuronales Netzwerkmodell in Übereinstimmung mit einem Satz von Parametern, um latente Tiefendaten zu erzeugen, die einem dem 3D-Objekt zugeordneten Schlüsselpunkt entsprechen; Erhalten von latenten Pixelkoordinatendaten, die dem Schlüsselpunkt entsprechen; Berechnen eines Tiefenwerts für den Schlüsselpunkt basierend auf den latenten Tiefendaten und den latenten Pixelkoordinatendaten; und Umwandeln der latenten Pixelkoordinatendaten in eine Pixelkoordinatenposition für den Schlüsselpunkt.
  9. Computerimplementiertes Verfahren nach Anspruch 8, wobei der Tiefenwert ein normierter Tiefenwert ist, der relativ zu einem Referenzschlüsselpunkt berechnet wird.
  10. Computerimplementiertes Verfahren nach Anspruch 8 oder 9, wobei der Tiefenwert invariant ist für Änderungen in einem Maßstab des 3D-Objekts.
  11. Computerimplementiertes Verfahren nach einem der Ansprüche 8 bis 10, wobei der Tiefenwert invariant ist für Änderungen in einer Translation des 3D-Objekts.
  12. Computerimplementiertes Verfahren nach einem der Ansprüche 8 bis 11, ferner umfassend, wenn das neuronale Netzwerkmodell trainiert wird, ein Aktualisieren des Parametersatzes, um Unterschiede zwischen latenten Tiefendaten, die vom dem neuronalen Netzwerkmodell erzeugt werden, und latenten Tiefendaten, die den Referenztiefenwerten von Schlüsselpunkten in einem Trainingsdatensatz entsprechen, zu verringern.
  13. Computerimplementiertes Verfahren nach einem der Ansprüche 8 bis 12, wobei die Verarbeitung des 2D-Eingangsbilds des 3D-Objekts durch das neuronale Netzwerkmodell ferner umfasst: Erzeugen einer latenten 2D-Wärmekarte für den Schlüsselpunkt; und Umwandeln der latenten 2D-Wärmekarte in die latenten Pixelkoordinaten.
  14. Computerimplementiertes Verfahren nach Anspruch 12, ferner umfassend, wenn das neuronale Netzwerkmodells trainiert wird, ein Aktualisieren des Parametersatzes, um Unterschiede zwischen der latenten 2D-Wärmekarte, die von dem neuronalen Netzwerkmodell erzeugt wird, und einer latenten 2D-Wärmekarte, die den Koordinatenpositionen von Schlüsselpunkten in einem Trainingsdatensatz entspricht, zu verringern.
  15. Computerimplementiertes Verfahren nach einem der Ansprüche 8 bis 14, wobei das Berechnen für jeden Schlüsselpunkt ein Summieren eines Hadamard-Produkts der latenten Tiefendaten und der latenten Pixelkoordinatendaten umfasst.
  16. Computerimplementiertes Verfahren nach einem der Ansprüche 8 bis 15, wobei die latenten Pixelkoordinatendaten eine Wahrscheinlichkeitskarte sind, die aus einer latenten 2D-Wärmekarte erzeugt wird.
  17. Computerimplementiertes Verfahren nach einem der Ansprüche 8 bis 16, wobei eine Funktion, die zum Umwandeln der latenten Pixelkoordinatendaten in die Pixelkoordinatenposition verwendet wird, vollständig differenzierbar ist.
  18. Computerimplementiertes Verfahren nach einem der Ansprüche 8 bis 17, wobei eine Funktion, die zum Berechnen des Tiefenwerts für den Schlüsselpunkt verwendet wird, vollständig differenzierbar ist.
  19. Computerimplementiertes Verfahren nach einem der Ansprüche 8 bis 18, ferner umfassend ein Anpassen des Parametersatzes zum Steuern einer Verteilung der latenten Pixelkoordinatendaten.
  20. System, umfassend: ein neuronales Netzwerk, das dazu konfiguriert ist, ein zweidimensionales (2D) Eingangsbild eines dreidimensionalen (3D) Objekts in Übereinstimmung mit einem Satz von Parametern zu verarbeiten, um latente Tiefendaten zu erzeugen, die einem dem 3D-Objekt zugeordneten Schlüsselpunkt entsprechen; und eine Tiefenberechnungseinheit, die konfiguriert ist zum: Erhalten von latenten Pixelkoordinatendaten, die dem Schlüsselpunkt entsprechen; Berechnen eines Tiefenwerts für den Schlüsselpunkt basierend auf den latenten Tiefendaten und den latenten Pixelkoordinatendaten; und Umwandeln der latenten Pixelkoordinatendaten in eine Pixelkoordinatenposition für den Schlüsselpunkt.
  21. System nach Anspruch 20, das ferner dazu konfiguriert ist, ein Verfahren nach einem der Ansprüche 1 bis 19 durchzuführen.
  22. Nichtflüchtige, computerlesbare Medien, die Computeranweisungen speichern, die dann, wenn sie von einem oder mehreren Prozessoren ausgeführt werden, den einen oder die mehreren Prozessoren veranlassen, die Schritte eines Verfahrens gemäß nach der Ansprüche 1 bis 19 ausführen.
DE102019106123.7A 2018-03-12 2019-03-11 Dreidimensionale (3D) Posenschätzung von Seiten einer monokularen Kamera Pending DE102019106123A1 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201862641510P 2018-03-12 2018-03-12
US62/641,510 2018-03-12
US16/290,643 2019-03-01
US16/290,643 US10929654B2 (en) 2018-03-12 2019-03-01 Three-dimensional (3D) pose estimation from a monocular camera

Publications (1)

Publication Number Publication Date
DE102019106123A1 true DE102019106123A1 (de) 2019-09-12

Family

ID=67701863

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102019106123.7A Pending DE102019106123A1 (de) 2018-03-12 2019-03-11 Dreidimensionale (3D) Posenschätzung von Seiten einer monokularen Kamera

Country Status (1)

Country Link
DE (1) DE102019106123A1 (de)

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110827342A (zh) * 2019-10-21 2020-02-21 中国科学院自动化研究所 三维人体模型重建方法及存储设备、控制设备
CN111160375A (zh) * 2019-12-31 2020-05-15 北京奇艺世纪科技有限公司 三维关键点预测及深度学习模型训练方法、装置及设备
CN111222459A (zh) * 2020-01-06 2020-06-02 上海交通大学 一种视角无关的视频三维人体姿态识别方法
CN111666917A (zh) * 2020-06-19 2020-09-15 北京市商汤科技开发有限公司 姿态检测及视频处理方法、装置、电子设备和存储介质
CN111753643A (zh) * 2020-05-09 2020-10-09 北京迈格威科技有限公司 人物姿态识别方法、装置、计算机设备和存储介质
CN112308962A (zh) * 2020-11-05 2021-02-02 山东产研信息与人工智能融合研究院有限公司 以实体目标为最小单元的实景模型构建方法及装置
CN112419388A (zh) * 2020-11-24 2021-02-26 深圳市商汤科技有限公司 深度检测方法、装置、电子设备和计算机可读存储介质
CN112784810A (zh) * 2021-02-08 2021-05-11 风变科技(深圳)有限公司 手势识别方法、装置、计算机设备和存储介质
CN112819875A (zh) * 2021-02-03 2021-05-18 苏州挚途科技有限公司 单目深度估计的方法、装置及电子设备
CN112906675A (zh) * 2021-04-27 2021-06-04 南京大学 一种固定场景中的无监督人体关键点检测方法及系统
CN113095129A (zh) * 2021-03-01 2021-07-09 北京迈格威科技有限公司 姿态估计模型训练方法、姿态估计方法、装置和电子设备
CN113628322A (zh) * 2021-07-26 2021-11-09 阿里巴巴(中国)有限公司 图像处理、ar显示与直播方法、设备及存储介质
CN113822097A (zh) * 2020-06-18 2021-12-21 北京达佳互联信息技术有限公司 单视角人体姿态识别方法、装置、电子设备和存储介质
CN115171149A (zh) * 2022-06-09 2022-10-11 广州紫为云科技有限公司 基于单目rgb图像回归的实时人体2d/3d骨骼关键点识别方法

Cited By (24)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110827342A (zh) * 2019-10-21 2020-02-21 中国科学院自动化研究所 三维人体模型重建方法及存储设备、控制设备
CN111160375A (zh) * 2019-12-31 2020-05-15 北京奇艺世纪科技有限公司 三维关键点预测及深度学习模型训练方法、装置及设备
CN111160375B (zh) * 2019-12-31 2024-01-23 北京奇艺世纪科技有限公司 三维关键点预测及深度学习模型训练方法、装置及设备
CN111222459A (zh) * 2020-01-06 2020-06-02 上海交通大学 一种视角无关的视频三维人体姿态识别方法
CN111222459B (zh) * 2020-01-06 2023-05-12 上海交通大学 一种视角无关的视频三维人体姿态识别方法
CN111753643A (zh) * 2020-05-09 2020-10-09 北京迈格威科技有限公司 人物姿态识别方法、装置、计算机设备和存储介质
CN111753643B (zh) * 2020-05-09 2024-05-14 北京迈格威科技有限公司 人物姿态识别方法、装置、计算机设备和存储介质
CN113822097A (zh) * 2020-06-18 2021-12-21 北京达佳互联信息技术有限公司 单视角人体姿态识别方法、装置、电子设备和存储介质
CN113822097B (zh) * 2020-06-18 2024-01-26 北京达佳互联信息技术有限公司 单视角人体姿态识别方法、装置、电子设备和存储介质
CN111666917A (zh) * 2020-06-19 2020-09-15 北京市商汤科技开发有限公司 姿态检测及视频处理方法、装置、电子设备和存储介质
CN112308962A (zh) * 2020-11-05 2021-02-02 山东产研信息与人工智能融合研究院有限公司 以实体目标为最小单元的实景模型构建方法及装置
CN112308962B (zh) * 2020-11-05 2023-10-17 山东产研信息与人工智能融合研究院有限公司 以实体目标为最小单元的实景模型构建方法及装置
CN112419388A (zh) * 2020-11-24 2021-02-26 深圳市商汤科技有限公司 深度检测方法、装置、电子设备和计算机可读存储介质
CN112819875B (zh) * 2021-02-03 2023-12-19 苏州挚途科技有限公司 单目深度估计的方法、装置及电子设备
CN112819875A (zh) * 2021-02-03 2021-05-18 苏州挚途科技有限公司 单目深度估计的方法、装置及电子设备
CN112784810A (zh) * 2021-02-08 2021-05-11 风变科技(深圳)有限公司 手势识别方法、装置、计算机设备和存储介质
CN113095129A (zh) * 2021-03-01 2021-07-09 北京迈格威科技有限公司 姿态估计模型训练方法、姿态估计方法、装置和电子设备
CN113095129B (zh) * 2021-03-01 2024-04-26 北京迈格威科技有限公司 姿态估计模型训练方法、姿态估计方法、装置和电子设备
CN112906675A (zh) * 2021-04-27 2021-06-04 南京大学 一种固定场景中的无监督人体关键点检测方法及系统
CN112906675B (zh) * 2021-04-27 2024-03-22 南京大学 一种固定场景中的无监督人体关键点检测方法及系统
CN113628322A (zh) * 2021-07-26 2021-11-09 阿里巴巴(中国)有限公司 图像处理、ar显示与直播方法、设备及存储介质
CN113628322B (zh) * 2021-07-26 2023-12-05 阿里巴巴(中国)有限公司 图像处理、ar显示与直播方法、设备及存储介质
CN115171149A (zh) * 2022-06-09 2022-10-11 广州紫为云科技有限公司 基于单目rgb图像回归的实时人体2d/3d骨骼关键点识别方法
CN115171149B (zh) * 2022-06-09 2023-12-05 广州紫为云科技有限公司 基于单目rgb图像回归的实时人体2d/3d骨骼关键点识别方法

Similar Documents

Publication Publication Date Title
DE102019106123A1 (de) Dreidimensionale (3D) Posenschätzung von Seiten einer monokularen Kamera
US10872399B2 (en) Photorealistic image stylization using a neural network model
DE102018132069A1 (de) Äquivariante Orientierungspunkt-Transformation für Orientierungspunkt-Lokalisierung
DE102018117813A1 (de) Zeitlich stabile Datenrekonstruktion mit einem externen rekurrenten neuronalen Netzwerk
DE102018126670A1 (de) Fortschreitende Modifizierung von generativen adversativen neuronalen Netzen
DE102018108324A1 (de) System und Verfahren zur Schätzung eines optischen Flusses
DE102019102279A1 (de) Erzeugung von synthetischen Bildern zum Trainieren eines Neuronal-Netzwerkmodells
DE102021119726A1 (de) Dreidimensionale objektrekonstruktion aus einem video
DE102019130889A1 (de) Schätzung der tiefe eines mit einer monokularen rgb-kamera aufgenommenen videodatenstroms
DE102018121282A1 (de) Differenzierbare rendering-pipeline für inverse graphik
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
DE102018124211A1 (de) Lernbasierte Kameraposenschätzung von Bildern einer Umgebung
DE102019128750A1 (de) Reduzierung des detailgrades eines polygonnetzes, um eine komplexität einer bildlich wiedergegebenen geometrie innerhalb einer szene zu verringern
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
DE102022100360A1 (de) Framework für maschinelles lernen angewandt bei einer halbüberwachten einstellung, um instanzenverfolgung in einer sequenz von bildframes durchzuführen
DE102019103319A1 (de) Stochastisches runden von zahlenwerten
DE102021205690A1 (de) Trainieren neuronaler Netze mit begrenzten Daten unter Verwendung invertierbarer Augmentationsoperatoren
DE102022121509A1 (de) Einzelbild-inversrendering
DE102022118651A1 (de) Mehrfachauflösung-hash-codierung für neuronale netzwerke
DE102022113244A1 (de) Gemeinsame Form- und Erscheinungsbildoptimierung durch Topologieabtastung

Legal Events

Date Code Title Description
R012 Request for examination validly filed