DE102022120595A1 - Durchführen von verdeckungs-bewusster globaler 3d-posen- und formschätzung von gelenkigen objekten - Google Patents

Durchführen von verdeckungs-bewusster globaler 3d-posen- und formschätzung von gelenkigen objekten Download PDF

Info

Publication number
DE102022120595A1
DE102022120595A1 DE102022120595.9A DE102022120595A DE102022120595A1 DE 102022120595 A1 DE102022120595 A1 DE 102022120595A1 DE 102022120595 A DE102022120595 A DE 102022120595A DE 102022120595 A1 DE102022120595 A1 DE 102022120595A1
Authority
DE
Germany
Prior art keywords
video
tracked
global
motion
objects
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
DE102022120595.9A
Other languages
English (en)
Inventor
Ye Yuan
Umar Iqbal
Pavlo Molchanov
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
Application filed by Nvidia Corp filed Critical Nvidia Corp
Publication of DE102022120595A1 publication Critical patent/DE102022120595A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T19/00Manipulating 3D models or images for computer graphics
    • G06T19/20Editing of 3D images, e.g. changing shapes or colours, aligning objects or positioning parts
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/50Image enhancement or restoration using two or more images, e.g. averaging or subtraction
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/60Image enhancement or restoration using machine learning, e.g. neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T5/00Image enhancement or restoration
    • G06T5/77Retouching; Inpainting; Scratch removal
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/0002Inspection of images, e.g. flaw detection
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/20Analysis of motion
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/10Image acquisition modality
    • G06T2207/10016Video; Image sequence
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20081Training; Learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20084Artificial neural networks [ANN]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/30Subject of image; Context of image processing
    • G06T2207/30241Trajectory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2219/00Indexing scheme for manipulating 3D models or images for computer graphics
    • G06T2219/20Indexing scheme for editing of 3D models
    • G06T2219/2016Rotation, translation, scaling

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Software Systems (AREA)
  • Computer Graphics (AREA)
  • Architecture (AREA)
  • Computer Hardware Design (AREA)
  • General Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Quality & Reliability (AREA)
  • Geometry (AREA)
  • Image Processing (AREA)

Abstract

Um genaue dreidimensionale (3D) Modelle für Objekte innerhalb eines Videos zu bestimmen, werden die Objekte zuerst identifiziert und innerhalb des Videos verfolgt und eine Pose und Form werden für diese verfolgten Objekte geschätzt. Eine Translation und globale Orientierung werden aus den verfolgten Objekte entfernt, um eine lokale Bewegung für die Objekte zu bestimmen, und eine Bewegungseinfüllung wird durchgeführt, um etwaige fehlende Abschnitte für das Objekt innerhalb des Videos einzufüllen. Eine globale Trajektorie wird dann für die Objekte innerhalb des Videos bestimmt und die eingefüllte Bewegung und globale Trajektorie werden dann verwendet, um die eingefüllte globale Bewegung für das Objekt innerhalb des Videos zu bestimmen. Dies ermöglicht die genaue anschauliche Darstellung jeweils Objekts als eine 3D-Posensequenz für dieses Modell, die Verdeckungen und globale Faktoren innerhalb des Videos berücksichtigt.

Description

  • GEBIET DER ERFINDUNG
  • Die vorstehende Erfindung betrifft die Videoanalyse und insbesondere das Bestimmen genauer dreidimensionaler (3D) Modelle von Objekten in einem Video.
  • HINTERGRUND
  • Die Wiederherstellung von feinkörnigen menschlichen 3D-Maschen aus monokularen Videos ist für das Verständnis menschlicher Verhaltensweisen und Wechselwirkungen wertvoll, welche die Eckpfeiler für zahlreiche Anwendungen einschließlich visueller oder augmentierter Realität, unterstütztes Wohnen, autonomes Fahren usw. Sein können. Viele von diesen Anwendungen verwenden dynamische Kameras, um menschliche Verhaltensweisen aufzunehmen, wobei sie jedoch ebenfalls die Schätzung menschlicher Bewegungen in globalen Koordinaten konsistent mit ihren Umgebungen erfordern. Beispielsweise benötigen Assistenzroboter und autonome Fahrzeuge ein ganzheitliches Verständnis menschlichen Verhaltens und Wechselwirkungen in der Welt, um ihre Aktionen sicher zu planen, sogar wenn sie sich bewegen. Es ist daher wünschenswert, globale menschliche Maschen aus monokularen Videos wiederherzustellen, die von dynamischen Kameras aufgenommen wurden, während Skalenambiguität und Verdeckungen berücksichtigt werden.
  • Figurenliste
    • 1 veranschaulicht ein Ablaufdiagramm eines Verfahrens zum Durchführen einer Verdeckungs-bewussten globalen 3D-Poseschätzung gemäß einer Ausführungsform.
    • 2 veranschaulicht eine Parallelverarbeitungseinheit gemäß einer Ausführungsform.
    • 3A veranschaulicht einen allgemeinen Verarbeitungscluster innerhalb der Parallelverarbeitungseinheit von 2 gemäß einer Ausführungsform.
    • 3B veranschaulicht eine Speicherpartitionseinheit der Parallelverarbeitungseinheit von 2 gemäß einer Ausführungsform.
    • 4A veranschaulicht den Streaming-Multi-Prozessor von 3A gemäß einer Ausführungsform.
    • 4B ist ein Konzeptdiagramm eines Verarbeitungssystems, das unter Verwendung der PPU von 2 implementiert wird, gemäß einer Ausführungsform.
    • 4C veranschaulicht ein beispielhaftes System, bei dem die verschiedene Architektur und/oder Funktionalität der verschiedenen vorherigen Ausführungsformen implementiert werden kann.
    • 5 veranschaulicht eine beispielhafte Verdeckungs-bewusste globale 3D-Objektposen- und -Formschätzungsumgebung, gemäß einer Ausführungsform.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Um genaue dreidimensionale (3D) Modelle für Objekte (wie beispielsweise gelenkige Objekte) innerhalb eines Videos zu bestimmen, werden die Objekte zuerst identifiziert und innerhalb des Videos verfolgt und eine Pose und Form werden für diese verfolgten Objekte geschätzt. Eine Translation und globale Orientierung werden aus den verfolgten Objekten entfernt, um lokale Bewegung für die Objekte zu bestimmen, und Bewegungseinfüllung wird durchgeführt, um jegliche fehlenden Abschnitte für das Objekt innerhalb des Videos einzufüllen. Eine globale Trajektorie wird dann für die Objekte innerhalb des Videos bestimmt und die eingefüllte Bewegung und globale Trajektorie werden dann verwendet, um eine eingefüllte globale Bewegung für das Objekt innerhalb des Videos zu bestimmen. Dies ermöglicht die genaue anschauliche Darstellung jedes Objekts als eine 3D-Posensequenz für dieses Modell, die Verdeckungen und globale Faktoren innerhalb des Videos berücksichtigt.
  • 1 veranschaulicht ein Ablaufdiagramm eines Verfahrens 100 zum Durchführen einer Verdeckungs-bewussten globalen 3D Posenschätzung gemäß einer Ausführungsform. Obwohl das Verfahren 100 im Kontext einer Verarbeitungseinheit beschrieben wird, kann das Verfahren 100 ebenfalls durch ein Programm, kundenspezifische Schaltungen, oder durch eine Kombination von kundenspezifische Schaltungen und einem Programm durchgeführt werden. Beispielsweise kann das Verfahren 100 durch eine GPU (Graphikverarbeitungseinheit), eine CPU (Zentralverarbeitungseinheit) oder einem beliebigen Verarbeitungselement ausgeführt werden. Des Weiteren werden Fachleute verstehen, dass jedes System, welches das Verfahren 100 durchführt, innerhalb des Umfangs und Wesens von Ausführungsformen der vorliegenden Erfindung ist.
  • Wie in Operation 102 gezeigt, werden ein oder mehrere Objekte innerhalb eines Videos identifiziert und verfolgt. In einer Ausführungsform kann das Video ein monokulares Video umfassen (z.B., ein oder mehrere Video-Quellen/Perspektiven einer einzigen Szene). In einer anderen Ausführungsform kann das Video mehrere Videoframes aus einer oder mehreren Kamerapositionen umfassen. In noch einer anderen Ausführungsform kann das Video durch ein oder mehrere Kameras innerhalb eines automatisierten Fahr-/Navigationssystems erzeugt werden.
  • Zusätzlich kann in einer Ausführungsform jedes Objekt innerhalb des Videos eine beliebige Entität innerhalb der Szene (z.B., eine Person, Fahrzeug, Tier usw.) umfassen. In einer anderen Ausführungsform kann ein Begrenzungskästchen um ein oder mehrere Objekte innerhalb jedes Frames des Videos platziert werden. In noch einer anderen Ausführungsform kann einem oder mehreren Objekten innerhalb des Videos eine Kennung zugewiesen werden. In noch einer anderen Ausführungsform können ein oder mehrere der Objekte gelenkige Objekte umfassen (z.B., Objekte mit zwei oder mehr Sektionen, die durch mindestens ein flexibles Gelenk usw. verbunden sind).
  • Ferner können in einer Ausführungsform Objekte, die aus der Szene in einem oder mehreren Frames entfernt wurden, erneut (mit einer zuvor zugewiesenen Kennung) identifiziert und (unter Verwendung eines Begrenzungskästchens und/oder seines Inhalts) verfolgt werden, wenn sie erneut innerhalb der Szene erscheinen. In einer anderen Ausführungsform können die Ergebnisse des Identifizierens und Verfolgens ein Video umfassen, wobei jedes Frame des Videos Begrenzungskästchen um jedes identifizierte Objekt und eine Kennung für jedes Objekt umfasst.
  • Ferner noch werden, wie in Operation 104 gezeigt, eine Pose und Form für ein oder mehrere verfolgte Objekte innerhalb des Videos geschätzt. In einer Ausführungsform können für jedes Frame innerhalb des Videos eine Pose und Form eines oder mehrerer identifizierter und verfolgter Objekte innerhalb des Frames bestimmt werden. In einer anderen Ausführungsform können innerhalb jedes Frames des Videos eine Pose und Form eines oder mehrerer Objekte innerhalb ihrer jeweiligen Begrenzungskästchen bestimmt werden.
  • Ebenfalls können in einer Ausführungsform die Pose und Form für das verfolgte Objekt für jedes Frame des Videos bestimmt werden. Dies kann zu einer Bestimmung der globalen Bewegung mit Bezug auf die Kamera für ein oder mehrere Objekte innerhalb des Videos führen.
  • Außerdem werden, wie in Operation 106 gezeigt, eine Translation und globale Orientierung aus einem oder mehreren verfolgten Objekte innerhalb des Videos entfernt. In einer Ausführungsform kann innerhalb jedes Frames des Videos eine Translation und globale Orientierung aus einem oder mehreren Objekten innerhalb jedes Begrenzungskästchens entfernt werden. In einer anderen Ausführungsform können ein oder mehrere mathematische Operatoren ein oder mehrere Gelenke und/oder Rotationinformation für ein oder mehrere verfolgte Objekte innerhalb der Szene einstellen. Dies kann zu einer Bestimmung der lokalen Bewegung für ein oder mehrere Objekte innerhalb ihres jeweiligen Begrenzungskästchens innerhalb des Videos führen (im Gegensatz zu der zuvor bestimmten globalen Bewegung für derartige Objekte).
  • Des Weiteren kann in einer Ausführungsform für jedes von einem oder mehrere verfolgten Objekten eine dreidimensionale (3D) Objektposen- und -Formsequenz für das verfolgte Objekt unter Benutzung der bestimmten lokalen Bewegung für das verfolgte Objekt innerhalb des Videos bestimmt werden.
  • Ferner noch wird, wie in Operation 108 gezeigt, eine Bewegungseinfüllung für eines oder mehrere der verfolgten Objekte innerhalb des Videos durchgeführt. In einer Ausführungsform können ein oder mehrere fehlende Abschnitte (z.B., fehlende Information) für ein oder mehrere verfolgte Objekte innerhalb eines oder mehrerer Frames des Videos existieren. Beispielsweise können sich diese fehlenden Abschnitte aus der Verdeckung des Objekts in einem oder mehreren Frames ergeben. In einem anderen Beispiel können sich diese fehlende Abschnitte aus der Trunkierung des Objekts in einem oder mehreren Frames ergeben. In noch einem anderen Beispiel können sich diese fehlenden Abschnitte daraus ergeben, dass sich das Objekt aus der Szene in ein oder mehrere Frames bewegt.
  • In einer Ausführungsform kann eine trainierte neuronale Netzwerkarchitektur ebenfalls ein oder mehrere fehlende Abschnitte für ein Objekt innerhalb eines Frames des Videos bestimmen. In einer anderen Ausführungsform können, wenn ein oder mehrere fehlende Abschnitte für ein Objekt innerhalb eines Begrenzungskästchens eines vorbestimmten Frames des Videos identifiziert werden, vorherige Posen- und Formdaten für das Objekt innerhalb vorheriger Begrenzungskästchen von vorherigen Frames des Videos identifiziert werden (z.B., Frames, die vor dem vorbestimmten Frame vorkommen, usw.).
  • Zusätzlich können in einer Ausführungsform die vorherigen Posen- und Formdaten für das Objekt in eine trainierte neuronale Netzwerkarchitektur eingegeben werden. In einer anderen Ausführungsform kann die trainierte neuronale Netzwerkarchitektur die Posen- und Formdaten für das Objekt innerhalb des vorbestimmten Frames des Videos vorhersagen. In noch einer anderen Ausführungsform können die vorhergesagten Posen- und Formdaten verwendet werden, um die fehlenden Abschnitte des Objekts innerhalb des vorbestimmten Frames des Videos einzufüllen. In noch einer anderen Ausführungsform können Ergebnisse des Durchführens der Bewegungseinfüllung eingefüllte lokalen Bewegung für ein oder mehrere Objekte innerhalb des Videos umfassen.
  • Ferner wird, wie in Operation 110 gezeigt, eine globale Trajektorie für ein oder mehrere verfolgte Objekte innerhalb des Videos vorhergesagt. In einer Ausführungsform können für jedes Objekt innerhalb des Videos mit eingefüllter lokaler Bewegung die eingefüllte lokale Bewegung verwendet werden, um eine globale Trajektorie für das Objekt innerhalb des Videos vorherzusagen. Beispielsweise kann die globale Trajektorie eine Translation und Orientierung des Objekts innerhalb eines globalen Koordinatensystems umfassen. Dies kann die globale Orientierung/Translation für ein verfolgtes Objekt zurückgewinnen (wobei derartige Information zuvor entfernt wurde).
  • Noch ferner wird, wie in Operation 112 gezeigt, für ein oder mehrere verfolgte Objekte innerhalb des Videos die eingefüllte Bewegung für das verfolgte Objekt mit der globalen Trajektorie für das verfolgte Objekt kombiniert, um die eingefüllte globale Bewegung für das verfolgte Objekt zu bestimmen. In einer Ausführungsform kann die eingefüllte globale Bewegung mit Bezug auf ein globales Koordinatensystem bestimmt werden. In einer anderen Ausführungsform kann die eingefüllte Bewegung die Ergebnisse des Durchführens einer Bewegungseinfüllung für das eine oder mehrere verfolgte Objekte innerhalb des Videos umfassen.
  • Ebenfalls können in einer Ausführungsform ein oder mehrere Kameraparameter (z.B., Kamerabewegung (Position und Orientierung) während des Aufzeichnens usw.) während der Bestimmung der eingefüllten globalen Bewegung berücksichtigt werden. In einer anderen Ausführungsform kann für jedes von einem oder mehreren verfolgten Objekte die 3D-Objekt-Posensequenz für dieses verfolgte Objekt unter Benutzung der eingefüllten globalen Bewegung für das verfolgte Objekt verfeinert werden. In noch einer anderen Ausführungsform kann die globale Trajektorie für das verfolgte Objekt weiter verfeinert werden, um sie konsistent mit Bildnachweisen innerhalb des Videos zu machen. Beispielsweise kann die globale Trajektorie unter Verwendung einer Optimierungsvorgabe verfeinert werden, während ebenfalls auf extrinsische Kameraparameter innerhalb des Videos optimiert wird.
  • Auf diese Weise kann eine 3D-Posensequenz für ein oder mehrere Objekte innerhalb eines Videos bestimmt werden, wobei jede 3D-Posensequenz keine fehlenden Abschnitte aufweist.
  • Dies kann eine Menge an Verarbeitung verringern, die notwendig ist, um diese Objekte innerhalb einer oder mehrerer Anwendungen (z.B., virtuelle Realität, Animation usw.) zu implementieren. Zusätzlich können die 3D-Darstellungen des einen oder mehrerer Objekte innerhalb eines globalen Koordinatensystems bestimmt werden, was ebenfalls eine Menge an Verarbeitung verringern kann, die notwendig ist, um diese Objekte innerhalb derartiger Anwendungen zu implementieren. Dies kann eine Leistung der Rechenhardware verbessern, welche die Anwendungen durchführt.
  • In noch einer anderen Ausführungsform kann die Sicherheitsbestimmung unter Benutzung einer Parallelverarbeitungseinheit (PPU), wie beispielsweise der in 2 veranschaulichten PPU 200, durchgeführt werden.
  • Veranschaulichendere Information wird nun hinsichtlich verschiedener optionaler Architekturen und Merkmale dargelegt, mit denen das vorhergehende Rahmenwerk gemäß den Wünschen des Benutzers implementiert werden kann. Es sei nachdrücklich bemerkt, dass die folgende Information für veranschaulichende Zwecke dargelegt wird und nicht in irgendeiner Art und Weise als beschränkend ausgelegt werden sollte. Jedes der folgenden Merkmale kann optional mit oder ohne den Ausschluss von anderen beschriebenen Merkmalen einbezogen werden.
  • Parallelverarbeitungsarchitektur
  • 2 veranschaulicht eine Parallelverarbeitungseinheit (PPU) 200 gemäß einer Ausführungsform. In einer Ausführungsform ist die PPU 200 ein Multi-Threaded-Prozessor bzw. mehrsträngiger Prozessor, der auf einer oder mehreren integrierten Schaltungsvorrichtungen implementiert ist. Die PPU 200 ist eine Latenz-verbergende Architektur, die ausgestaltet ist, um eine große Anzahl von Threads bzw. Strängen parallel zu verarbeiten. Ein Thread bzw. Strang (z.B. ein Ausführungsthread) ist eine Instanziierung eines Satzes von Anweisungen, die konfiguriert sind, um von der PPU 200 ausgeführt zu werden. In einer Ausführungsform ist die PPU 200 eine Graphikverarbeitungseinheit (GPU), die konfiguriert ist, um eine Graphik-Rendering-Pipeline zur Verarbeitung von dreidimensionalen (3D) Graphikdaten zu implementieren, um zweidimensionale (2D) Bilddaten zur Anzeige auf einer Anzeigevorrichtung, wie beispielsweise einer Flüssigkristallanzeige(LCD)-Vorrichtung, zu erzeugen. In anderen Ausführungsformen kann die PPU 200 zum Durchführen von Allzweckberechnungen benutzt werden. Während ein beispielhafter paralleler Prozessor hier für veranschaulichende Zwecke bereitgestellt wird, sei nachdrücklich bemerkt, dass ein derartiger Prozessor lediglich für veranschaulichende Zwecke dargelegt wird und dass ein beliebiger Prozessor benutzt werden kann, um dasselbe zu ergänzen und/oder zu ersetzen.
  • Eine oder mehrere PPUs 200 können konfiguriert sein, um Tausende von HPC(High Performing Computing)-, Datenzentrum- und Maschinenlern-Anwendungen zu beschleunigen. Die PPU 200 kann konfiguriert sein, um zahlreiche Deep-Learning-Systeme und Anwendungen zu beschleunigen, die autonome Fahrzeugplattformen, Deep-Learning, hochgenaue Sprache, Bild- und Texterkennungssysteme, intelligente Videoanalyse, molekulare Simulationen, Wirkstoffentdeckung, Krankheitsdiagnose, Wettervorhersage, Analyse großer Datenmengen, Astronomie, Molekulardynamiksimulation, Finanzmodellierung, Robotertechnik, Fabrikautomation, Sprachübersetzung in Echtzeit, Online-Suchoptimierungen und personalisierte Benutzerempfehlungen und dergleichen umfassen.
  • Wie in 2 gezeigt, umfasst die PPU 200 eine Eingabe/Ausgabe(E/A)-Einheit 205, eine Frontend-Einheit 215, eine Planereinheit 220, eine Arbeitsverteilungs-Einheit 225, einen Hub 230, eine Kreuzschiene (Xbar) 270, einen oder mehrere allgemeine Verarbeitungscluster (GPCs) 250 und eine oder mehrere Speicherpartitionseinheiten 280. Die PPU 200 kann mit einem Host-Prozessor oder anderen PPUs 200 über eine Zwischenverbindung des Hochgeschwindigkeits-NVLink 210 verbunden sein. Die PPU 200 kann ebenfalls mit einem Host-Prozessor oder anderen peripheren Vorrichtungen über eine Zwischenverbindung 202 verbunden sein. Die PPU 200 kann ebenfalls mit einem lokalen Speicher verbunden sein, der eine Anzahl von Speichervorrichtungen umfasst. In einer Ausführungsform kann der lokale Speicher eine Anzahl von Direktzugriffsspeicher(DRAM)-Vorrichtungen umfassen. Die DRAM-Vorrichtungen können als ein HBM(Speicher mit hoher Bandbreite)-Subsystem konfiguriert sein, wobei mehrere DRAM-Dies innerhalb jeder Vorrichtung gestapelt sind.
  • Die Zwischenverbindung des NVLink 210 ermöglicht Systemen, eine oder mehrere PPUs 200 zu skalieren und zu umfassen, die mit einer oder mehreren CPUs kombiniert sind, unterstützt Cache-Kohärenz zwischen den PPUs 200 und CPUs sowie CPU-Mastering. Daten und/oder Befehle können mittels des NVLink 210 durch den Hub 230 an/von anderen Einheiten der PPU 200, wie beispielsweise eine oder mehrere Kopiermaschinen, einen Videocodierer, einen Videodecodierer, eine Leistungsverwaltungseinheit usw. (nicht explizit gezeigt) übertragen werden. Das NVLink 210 wird ausführlicher in Verbindung mit 3B beschrieben.
  • Die E/A-Einheit 205 ist konfiguriert, um Kommunikationen (z.B. Befehle, Daten usw.) von einem Host-Prozessor (nicht gezeigt) über die Zwischenverbindung 202 zu übertragen und zu empfangen. Die E/A-Einheit 205 kann mit dem Host-Prozessor direkt über die Zwischenverbindung 202 oder durch eine oder mehrere Zwischenvorrichtungen, wie beispielsweise eine Speicherbrücke, kommunizieren. In einer Ausführungsform kann die E/A-Einheit 205 mit einem oder mehreren anderen Prozessoren, wie beispielsweise eine oder mehrere der PPUs 200, über die Zwischenverbindung 202 kommunizieren. In einer Ausführungsformen implementiert die E/A-Einheit 205 eine PCIe(Peripheral Component Zwischenverbindung Express)-Schnittstelle für Kommunikationen über einen PCIe-Bus und die Zwischenverbindung 202 ist ein PCIe-Bus. In alternativen Ausführungsformen kann die E/A-Einheit 205 andere Typen von wohlbekannten Schnittstellen zum Kommunizieren mit externen Vorrichtungen umfassen.
  • Die E/A-Einheit 205 decodiert Pakete, die über die Zwischenverbindung 202 empfangen wurden. In einer Ausführungsform stellen die Pakete Befehle dar, die konfiguriert sind, um die PPU 200 zu veranlassen, verschiedene Operationen durchzuführen. Die E/A-Einheit 205 überträgt die decodierten Befehle an verschiedene andere Einheiten der PPU 200, wie es die Befehle spezifizieren können. Beispielsweise können einige Befehle an die Frontend-Einheit 215 übertragen werden. Andere Befehle können an den Hub 230 oder andere Einheiten der PPU 200, wie beispielsweise eine oder mehrere Kopiermaschinen, einen Video-Codierer, einen Video-Decodierer, eine Leistungsverwaltungseinheit usw. (nicht explizit gezeigt) übertragen werden. Mit anderen Worten ist die E/A-Einheit 205 konfiguriert, um Kommunikationen zwischen und unter den verschiedenen logischen Einheiten der PPU 200 weiterzuleiten.
  • In einer Ausführungsform codiert ein Programm, das von dem Host-Prozessor ausgeführt wird, einen Befehlsstrom in einem Puffer, welcher der PPU 200 Arbeitslasten zur Verarbeitung bereitstellt. Eine Arbeitslast kann mehrere Anweisungen und Daten umfassen, die von diesen Anweisungen zu verarbeiten sind. Der Puffer ist ein Bereich in einem Speicher, der von sowohl dem Host-Prozessor als auch der PPU 200 zugänglich ist (z.B. Lesen/Schreiben). Beispielsweise kann die E/A-Einheit 205 konfiguriert sein, um auf den Puffer in einem Systemspeicher, der mit der Zwischenverbindung 202 verbunden ist, über Speicheranfragen, die über die Zwischenverbindung 202 übertragen werden, zuzugreifen. In einer Ausführungsform schreibt der Host-Prozessor den Befehlsstrom in den Puffer und überträgt dann einen Zeiger zu dem Start des Befehlsstroms an die PPU 200. Die Frontend-Einheit 215 empfängt Zeiger auf einen oder mehrere Befehlsströme. Die Frontend-Einheit 215 verwaltet den einen oder mehrere Ströme, liest Befehle von den Strömen und leitet Befehle an die verschiedenen Einheiten der PPU 200 weiter.
  • Die Frontend-Einheit 215 ist mit einer Planereinheit 220 gekoppelt, welche die verschiedenen GPCs 250 konfiguriert, um Aufgaben zu verarbeiten, die durch den einen oder mehrere Ströme definiert sind. Die Planereinheit 220 ist konfiguriert, um Zustandsinformation zu verfolgen, die verschiedene Aufgaben betrifft, die von der Planereinheit 220 verwaltet werden. Der Zustand kann angeben, welchem GPC 250 eine Aufgabe zugewiesen ist, ob die Aufgabe aktiv oder inaktiv ist, ob ein Prioritätsniveau der Aufgabe zugeordnet ist und so weiter. Die Planereinheit 220 verwaltet die Ausführung einer Mehrzahl von Aufgaben auf dem einen oder mehreren GPCs 250.
  • Die Planereinheit 220 ist mit einer Arbeitsverteilungs-Einheit 225 gekoppelt, die konfiguriert ist, um Aufgaben zur Ausführung auf den GPCs 250 zu versenden. Die Arbeitsverteilungs-Einheit 225 kann eine Anzahl von eingeplanten Aufgaben verfolgen, die von der Planereinheit 220 empfangen werden. In einer Ausführungsform verwaltet die Arbeitsverteilungs-Einheit 225 einen Pool für anhängige Aufgaben und einen Pool für aktive Aufgaben für jeden der GPCs 250. Der Pool für anhängige Aufgaben kann eine Anzahl von Schlitzen (z.B. 32 Schlitze) umfassen, die Aufgaben enthalten, die zugewiesen sind, um von einem bestimmten GPC 250 verarbeitet zu werden. Der Pool für aktive Aufgaben kann eine Anzahl von Schlitzen (z.B. 4 Schlitze) für Aufgaben umfassen, die von den GPCs 250 aktiv verarbeitet werden. Wenn ein GPC 250 die Ausführung einer Aufgabe abschließt, wird diese Aufgabe aus dem Pool für aktive Aufgaben für den GPC 250 geräumt und eine der anderen Aufgaben wird aus dem Pool für anhängige Aufgaben ausgewählt und zur Ausführung auf dem GPC 250 eingeplant. Wenn eine aktive Aufgabe auf dem GPC 250 inaktiv war, wie beispielsweise während darauf gewartet wird, dass eine Datenabhängigkeit behoben wird, dann kann die aktive Aufgabe aus dem GPC 250 geräumt und zu dem Pool für anhängige Aufgaben zurückgeführt werden, während eine weitere Aufgabe in dem Pool für anhängige Aufgaben ausgewählt und zur Ausführung auf dem GPC 250 eingeplant wird.
  • Die Arbeitsverteilungs-Einheit 225 kommuniziert mit dem einen oder mehreren GPCs 250 über eine Kreuzschiene bzw. XBar 270. Die XBar 270 ist ein Zwischenverbindungs-Netzwerk, das viele der Einheiten der PPU 200 mit anderen Einheiten der PPU 200 koppelt. Beispielsweise kann die XBar 270 konfiguriert sein, um die Arbeitsverteilungs-Einheit 225 mit einem bestimmten GPC 250 zu koppeln. Obwohl nicht explizit gezeigt, kann eine oder mehrere andere Einheiten der PPU 200 ebenfalls mit der XBar 270 über den Hub 230 verbunden sein.
  • Die Aufgaben werden von der Planereinheit 220 verwaltet und an einen GPC 250 von der Arbeitsverteilungs-Einheit 225 versandt. Der GPC 250 ist konfiguriert, um die Aufgabe zu verarbeiten und Ergebnisse zu erzeugen. Die Ergebnisse können von anderen Aufgaben innerhalb des GPC 250 verbraucht werden, an einen unterschiedlichen GPC 250 über die XBar 270 weitergeleitet oder im Speicher 204 gespeichert werden. Die Ergebnisse können in den Speicher 204 über die Speicherpartitionseinheiten 280 geschrieben werden, die eine Speicherschnittstelle zum Lesen und Schreiben von Daten in/aus dem Speicher 204 implementieren. Die Ergebnisse können an eine andere PPU 200 oder CPU über den NVLink 210 übertragen werden. In einer Ausführungsform umfasst die PPU 200 eine Anzahl U von Speicherpartitionseinheiten 280, die gleich der Anzahl von getrennten und unterschiedlichen Speichervorrichtungen des Speichers 204 ist, die mit der PPU 200 gekoppelt sind. Eine Speicherpartitionseinheit 280 wird nachstehend ausführlicher in Verbindung mit 3B beschrieben.
  • In einer Ausführungsform führt ein Host-Prozessor einen Treiber-Kernel aus, der eine API implementiert, die einer oder mehreren Anwendungen ermöglicht, die auf dem Host-Prozessor ausgeführt werden, Operationen zur Ausführung auf der PPU 200 einzuplanen. In einer Ausführungsform werden mehrere Rechenanwendungen gleichzeitig von der PPU 200 ausgeführt und die PPU 200 stellt Isolierung, Dienstqualität (QoS) und unabhängige Adressräume für die mehreren Rechenanwendungen bereit. Eine Anwendung kann Anweisungen (z.B. API-Aufrufe) erzeugen, welche den Treiber-Kernel veranlassen, eine oder mehrere Aufgaben zur Ausführung durch die PPU 200 zu erzeugen. Der Treiberkernel gibt Aufgaben an einen oder mehrere Streams aus, die von der PPU 200 verarbeitet werden. Jede Aufgabe kann eine oder mehrere Gruppen von in Beziehung stehender Threads umfassen, die hier als ein Warp bezeichnet werden. In einer Ausführungsform umfasst ein Warp 32 in Beziehung stehende Threads, die parallel ausgeführt werden können. Kooperierende Threads können sich auf eine Mehrzahl von Threads beziehen, die Anweisungen umfassen, um die Aufgabe durchzuführen, und die Daten durch einen gemeinsam benutzten Speicher austauschen können. Threads und kooperierende Threads werden ausführlicher in Verbindung mit 4A beschrieben.
  • 3A veranschaulicht einen GPC 250 der PPU 200 von 2 gemäß einer Ausführungsform. Wie in 3A gezeigt, umfasst jeder GPC 250 eine Anzahl von Hardwareeinheiten zur Verarbeitung von Aufgaben. In einer Ausführungsform umfasst jeder GPC 250 einen Pipeline-Manager 310, eine Vor-Raster-Operationen-Einheit (PROP) 315, eine Raster-Engine 325, eine Arbeitsverteilungs-Kreuzschiene (WDX) 380, eine Speicherverwaltungseinheit (MMU) 390 und einen oder mehrere Datenverarbeitungscluster (DPCs) 320. Es wird anerkannt, dass der GPC 250 von 4A andere Hardwareeinheiten anstelle von oder zusätzlich zu den in 4A gezeigten Einheiten umfassen kann.
  • In einer Ausführungsform wird der Betrieb des GPC 250 durch den Pipeline-Manager 310 gesteuert. Der Pipeline-Manager 310 verwaltet die Konfiguration des einen oder mehrerer DPCs 320 zur Verarbeitung von Aufgaben, die dem GPC 250 zugeteilt sind. In einer Ausführungsform kann der Pipeline-Manager 310 mindestens einen des einen oder mehrerer DPCs 320 konfigurieren, um mindestens einen Abschnitt einer Graphik-Rendering-Pipeline zu implementieren. Beispielsweise kann ein DPC 320 konfiguriert sein, um ein Vertex-Shader-Programm auf dem programmierbaren Streaming-Multiprozessor (SM) 340 auszuführen. Der Pipeline-Manager 310 kann ebenfalls konfiguriert sein, um Pakete, die von der Arbeitsverteilungs-Einheit 225 empfangen werden, an die geeigneten logischen Einheiten innerhalb des GPC 250 weiterzuleiten. Beispielsweise können einige Pakete an Festfunktions-Hardwareeinheiten in der PROP 315 und/oder der Raster-Engine 325 weitergeleitet werden, während andere Pakete an die DPCs 320 zur Verarbeitung durch die Primitiven-Engine 335 oder den SM 340 weitergeleitet werden können. In einer Ausführungsform kann der Pipeline-Manager 310 mindestens einen der einen oder mehreren DPCs 320 konfigurieren, um ein Neuronal-Netzwerkmodell und/oder eine Rechen-Pipeline zu implementieren.
  • Die PROP-Einheit 315 ist konfiguriert, um Daten, die von der Raster-Engine 325 und den DPCs 320 erzeugt werden, an eine Raster-Operationen-Einheit (ROP-Einheit) in der Speicherpartitionseinheit 280 weiterzuleiten, die nachstehend ausführlicher in Verbindung mit 3B beschrieben wird. Die PROP-Einheit 315 kann ebenfalls konfiguriert sein, um Optimierungen zur Farbenmischung durchzuführen, Pixeldaten zu organisieren, Adressenübersetzungen und dergleichen durchzuführen.
  • Die Raster-Engine 325 umfasst eine Anzahl von Festfunktions-Hardwareeinheiten, die konfiguriert sind, um verschiedene Raster-Operationen durchzuführen. In einer Ausführungsform umfasst die Raster-Engine 325 eine Setup-Engine, eine Grobraster-Engine, eine Aussonderungs-Engine, eine Abschneide-Engine, eine Feinraster-Engine und eine Kachelverschmelzende Engine. Die Setup-Engine empfängt transformierte Vertices und erzeugt Ebenengleichungen, die den geometrischen Primitiven zugeordnet sind, die durch die Vertices definiert werden. Die Ebenengleichungen werden an die Grobraster-Engine übertragen, um Abdeckungsinformation (z.B. eine (x,y)-Abdeckungsmaske für eine Kachel) für die Primitive zu erzeugen. Die Ausgabe der Grobraster-Engine wird an die Aussonderungs-Engine übertragen, wo Fragmente, die der Primitiven zugeordnet sind, die einen z-Test nicht bestehen, ausgesondert und an eine Abschneide-Engine übertragen werden, wo Fragmente, die außerhalb eines Betrachtungsstumpfes liegen, abgeschnitten werden. Diejenigen Fragmente, welche die Abschneidung und Aussonderung überleben, können an eine Feinraster-Engine weitergeben werden, um Attribute für die Pixelfragmente basierend auf den Ebenengleichungen zu erzeugen, die durch die Setup-Engine erzeugt werden. Die Ausgabe der Raster-Engine 325 umfasst Fragmente, die beispielsweise von einem Fragment-Shader zu verarbeiten sind, der innerhalb eines DPC 320 implementiert ist.
  • Jeder DPC 320, der in dem GPC 250 umfasst ist, umfasst einen M-Pipe-Controller (MPC) 330, eine Primitiven-Engine 335 und einen oder mehrere SMs 340. Der MPC 330 steuert den Betrieb des DPC 320, wobei von dem Pipeline-Manager 310 empfangene Pakete an die geeigneten Einheiten im DPC 320 weiterleitet werden. Beispielsweise können einem Vertex zugeordnete Pakete an die Primitiven-Engine 335 weitergeleitet werden, die konfiguriert ist, um der Vertex zugeordnete Vertexattribute von dem Speicher 204 zu holen. Im Gegensatz dazu können einem Shader-Programm zugeordnete Pakete an den SM 340 übertragen werden.
  • Der SM 340 umfasst einen programmierbaren Streaming-Prozessor, der konfiguriert ist, um Aufgaben zu verarbeiten, die durch eine Anzahl von Threads dargestellt werden. Jeder SM 340 umfasst mehrere Threads (ist multi-threaded) und ist konfiguriert, um eine Mehrzahl von Threads (z.B. 32 Threads) von einer bestimmten Gruppe von Threads nebenläufig auszuführen. In einer Ausführungsform implementiert der SM 340 eine SIMD(Einzelne-Anweisung, Mehrere-Daten)-Architektur, wobei jeder Thread in einer Gruppe von Threads (z.B. einem Warp) konfiguriert ist, um einen unterschiedlichen Satz von Daten basierend auf dem gleichen Satz von Anweisungen zu verarbeiten. Alle Threads in der Gruppe von Threads führen die gleichen Anweisungen aus. In einer anderen Ausführungsform implementiert der SM 340 eine SIMT(Einzelne Anweisung, Mehrere Threads)-Architektur, wobei jeder Thread in einer Gruppe von Threads konfiguriert ist, um einen unterschiedlichen Satz von Daten basierend auf dem gleichen Satz von Anweisungen zu verarbeiten, wobei jedoch einzelnen Threads in der Gruppe von Threads ermöglicht wird, während der Ausführung zu divergieren. In einer Ausführungsform wird ein Programmzähler, ein Aufrufstapel und ein Ausführungszustand für jeden Warp beibehalten, was eine Nebenläufigkeit zwischen Warps und eine serielle Ausführung innerhalb Warps ermöglicht, wenn Threads innerhalb des Warp divergieren. In einer weiteren Ausführungsform wird ein Programmzähler, ein Aufrufstapel und ein Ausführungszustand für jeden einzelnen Thread beibehalten, was eine gleiche Nebenläufigkeit zwischen allen Threads, innerhalb und zwischen Warps ermöglicht. Wenn der Ausführungszustand für jeden einzelnen Thread beibehalten wird, können Threads, welche die gleichen Anweisungen ausführen, konvergiert und für maximale Effizienz parallel ausgeführt werden. Der SM 340 wird ausführlicher nachstehend in Verbindung mit 4A beschrieben.
  • Die MMU 390 stellt eine Schnittstelle zwischen dem GPC 250 und der Speicherpartitionseinheit 280 bereit. Die MMU 390 kann eine Übersetzung von virtuellen Adressen in physische Adressen, einen Speicherschutz und eine Arbitrierung von Speicheranfragen bereitstellen. In einer Ausführungsform stellt die MMU 390 einen oder mehrere Adressenübersetzungspuffer (Translation Lookaside Buffers; TLBs) zum Durchführen der Übersetzung von virtuellen Adressen in physische Adressen in dem Speicher 204 bereit.
  • 3B veranschaulicht eine Speicherpartitionseinheit 280 der PPU 200 von 2 gemäß einer Ausführungsform. Wie in 3B gezeigt, umfasst die Speicherpartitionseinheit 280 eine Raster-Operationen(ROP)-Einheit 350, einen L2-Cache-Speicher 360 und eine Speicherschnittstelle 370. Die Speicherschnittstelle 370 ist mit dem Speicher 204 gekoppelt. Die Speicherschnittstelle 370 kann 32-, 64-, 128-, 1024-Bit-Datenbusse oder dergleichen für Hochgeschwindigkeits-Datentransfer implementieren. In einer Ausführungsform umfasst die PPU 200 U Speicherschnittstellen 370, eine Speicherschnittstelle 370 pro Paar von Speicherpartitionseinheiten 280, wobei jedes Paar von Speicherpartitionseinheiten 280 mit einer entsprechenden Speichervorrichtung des Speichers 204 verbunden ist. Beispielsweise kann die PPU 200 mit bis zu Y Speichervorrichtungen 204, wie beispielsweise einem Speicherstapel mit hoher Bandbreite oder Graphikdoppeldatenraten, Version 5 SDRAM oder anderen Arten einer persistenten Speicherung verbunden sein.
  • In einer Ausführungsform implementiert die Speicherschnittstelle 370 eine HBM2-Speicherschnittstelle und Y ist gleich einem halben U. In einer Ausführungsform sind die HBM2-Speicherstapel auf der gleichen physischen Packung wie die PPU 200 lokalisiert, die wesentliche Leistungs- und Flächeneinsparungen verglichen mit herkömmlichen GDDR5 SDRAM Systemen bereitstellt. In einer Ausführungsform umfasst jeder HBM2-Stapel vier Speicher-Dies und Y ist gleich 4, wobei der HBM2-Stapel zwei 128-Bit Kanäle pro Die für eine Gesamtzahl von 8 Kanälen und eine Datenbusbreite von 1024 Bit umfasst.
  • In einer Ausführungsform unterstützt der Speicher 204 Fehlerkorrekturcode (ECC) mit Einzelfehlerkorrektur und Doppelfehlerdetektion (SECDED), um Daten zu schützen. Der ECC stellt eine höhere Zuverlässigkeit für Rechenanwendungen bereit, die gegen Datenverfälschung empfindlich sind. Zuverlässigkeit ist besonders wichtig in großen Cluster-Rechenumgebungen, wo PPUs 200 sehr große Datensätze verarbeiten und/oder Anwendungen für längere Zeiträume ausführen.
  • In einer Ausführungsform implementiert die PPU 200 eine Mehr-Ebenen-Speicherhierarchie. In einer Ausführungsform unterstützt die Speicherpartitionseinheit 280 einen vereinheitlichten Speicher, um einen einzigen vereinheitlichten virtuellen Adressraum für den Speicher der CPU und den Speicher der PPU 200 bereitzustellen, der Datenteilung zwischen virtuellen Speichersystemen ermöglicht. In einer Ausführungsform wird die Häufigkeit von Zugriffen durch eine PPU 200 auf einen Speicher, der auf anderen Prozessoren lokalisiert ist, verfolgt, um sicherzustellen, dass Speicherseiten in den physischen Speicher der PPU 200 bewegt werden, die häufiger auf die Seiten zugreift. In einer Ausführungsform unterstützt das NVLink 210 Adressenübersetzungsdienste, die der PPU 200 erlauben, auf Seitentabellen einer CPU direkt zuzugreifen und einen vollen Zugriff auf den CPU-Speicher durch die PPU 200 bereitstellen.
  • In einer Ausführungsform transferieren Kopiermaschinen Daten zwischen mehreren PPUs 200 oder zwischen PPUs 200 und CPUs. Die Kopiermaschinen können Seitenfehler für Adressen erzeugen, die nicht in den Seitentabellen abgebildet werden. Die Speicherpartitionseinheit 280 kann dann die Seitenfehler bedienen, wobei die Adressen in der Seitentabelle abgebildet werden, nachdem die Kopiermaschine den Transfer durchführen kann. In einem herkömmlichen System ist der Speicher für mehrere Kopiermaschinenoperationen zwischen mehreren Prozessoren gesperrt (z.B. nicht auslagerbar), was den verfügbaren Speicher wesentlich verringert. Mit Hardware-Seiten-Faulting können Adressen an die Kopiermaschinen weitergeleitet werden, ohne sich Sorgen zu machen, ob die Speicherseiten resident sind und das Kopierverfahren transparent ist.
  • Daten von dem Speicher 204 oder einem anderen Systemspeicher können von der Speicherpartitionseinheit 280 geholt und in dem L2-Cache-Speicher 360 gespeichert werden, der Auf-Chip lokalisiert ist und zwischen den verschiedenen GPCs 250 gemeinsam benutzt wird. Wie gezeigt, umfasst jede Speicherpartitionseinheit 280 einen Bereich des L2-Cache-Speichers 360, der einer entsprechenden Speichervorrichtung 204 zugeordnet ist. Cache-Speicher niedrigerer Ebene können dann in verschiedenen Einheiten innerhalb der GPCs 250 implementiert werden. Beispielsweise kann jeder der SMs 340 einen L1-Cache-Speicher implementieren. Der L1-Cache-Speicher ist ein privater Speicher, der einem bestimmten SM 340 fest zugeordnet ist. Daten von dem L2-Cache-Speicher 360 können geholt und in jedem der L1-Cache-Speicher zur Verarbeitung in den Funktionseinheiten der SMs 340 gespeichert werden. Der L2-Cache-Speicher 360 ist mit der Speicherschnittstelle 370 und der XBar 270 gekoppelt.
  • Die ROP-Einheit 350 führt Graphik-Raster-Operationen durch, welche die Pixelfarbe betreffen, wie beispielsweise Farbenkomprimierung, Pixelmischung und dergleichen. Die ROP-Einheit 350 implementiert ebenfalls Tiefentesten in Verbindung mit der Raster-Engine 325, wobei eine Tiefe für einen Abtastort, der einem Pixelfragment zugeordnet ist, von der Aussonderungs-Engine der Raster-Engine 325 empfangen wird. Die Tiefe wird gegen eine entsprechende Tiefe in einem Tiefenpuffer für einen Abtastort geprüft, der dem Fragment zugeordnet ist. Wenn das Fragment den Tiefentest für den Abtastort besteht, dann aktualisiert die ROP-Einheit 350 den Tiefenpuffer und überträgt ein Ergebnis des Tiefentests an die Raster-Engine 325. Es wird anerkannt, dass sich die Anzahl von Speicherpartitionseinheiten 280 von der Anzahl von GPCs 250 unterscheiden kann, und daher kann jede ROP-Einheit 350 mit jedem der GPCs 250 gekoppelt werden. Die ROP-Einheit 350 verfolgt Pakete, die von den unterschiedlichen GPCs 250 empfangen werden, und bestimmt, zu welchem GPC 250 ein durch die ROP-Einheit 350 erzeugtes Ergebnis durch die Xbar 370 weitergeleitet wird. Obwohl die ROP-Einheit innerhalb der Speicherpartitionseinheit 280 in 3B umfasst ist, kann die ROP-Einheit 350 außerhalb der Speicherpartitionseinheit 280 sein. Beispielsweise kann die ROP-Einheit 350 in der GPC oder einer anderen Einheit liegen.
  • 4A veranschaulicht den Streaming-Multiprozessor 340 von 3A gemäß einer Ausführungsform. Wie in 4A gezeigt, umfasst der SM 340 einen Anweisungs-Cache-Speicher 405, eine oder mehrere Planereinheiten 410(K), eine Registerdatei 420, einen oder mehrere Verarbeitungskerne 450, eine oder mehrere Spezialfunktionseinheiten (SFUs) 452, eine oder mehrere Lade/Speicher-Einheiten (LSUs) 454, ein Zwischenverbindungs-Netzwerk 480 und einen gemeinsam benutzten L1-Cache-Speicher 470.
  • Wie oben beschrieben, versendet die Arbeitsverteilungs-Einheit 225 Aufgaben zur Ausführung auf den GPCs 250 der PPU 200. Die Aufgaben werden einem bestimmten DPC 320 innerhalb eines GPC 250 zugeteilt, und wenn die Aufgabe einem Shader-Programm zugeordnet ist, kann die Aufgabe einem SM 340 zugeteilt werden. Die Planereinheit 410(K) empfängt die Aufgaben von der Arbeitsverteilungs-Einheit 225 und verwaltet die Anweisungs-Planung (instruction scheduling) für einen oder mehrere Thread-Blöcke, die dem SM 340 zugewiesen sind. Die Planereinheit 410(K) plant Thread-Blöcke zur Ausführung als Warps von parallelen Threads, wobei jeder Thread-Block mindestens einem Warp zugeordnet ist. In einer Ausführungsform führt jeder Warp 32 Threads aus. Die Planereinheit 410(K) kann eine Mehrzahl von unterschiedlichen Thread-Blöcken verwalten, welche die Warps den unterschiedlichen Thread-Blöcken zuordnet und dann Anweisungen von der Mehrzahl von unterschiedlichen kooperativen Gruppen an die verschiedenen Funktionseinheiten (z.B. Kerne 450, SFUs 452 und LSUs 454) während jedes Taktzyklus versendet.
  • Cooperative Groups ist ein Programmiermodell zum Organisieren von Gruppen von kommunizierenden Threads, das Entwicklern ermöglicht, die Granularität auszudrücken, bei der Threads kommunizieren, wobei der Ausdruck von reicheren, effizienten Parallelzerlegungen ermöglicht wird. Cooperative-Start-APIs unterstützen die Synchronisierung unter Thread-Blöcken für die Ausführung von parallelen Algorithmen. Herkömmliche Programmiermodelle stellen einen einzigen, einfachen Aufbau zum Synchronisieren von kooperierenden Threads bereit: eine Barriere über alle Threads eines Threadblocks (z.B. die Funktion syncthreads( )). Programmierer würden jedoch häufig gerne Gruppen von Threads bei kleineren als Thread-Block-Granularitäten definieren und innerhalb der definierten Gruppen synchronisieren, um größere Leistung, Gestaltungsflexibilität und Software-Wiederverwendung in der Form von kollektiven gruppenweiten Funktionsschnittstellen zu ermöglichen.
  • Cooperative Groups ermöglicht Programmierern, Gruppen von Threads explizit bei Sub-Block(z.B. so klein wie ein einziger Thread)- und Mehr-Block-Granularitäten zu definieren und kollektive Operationen, wie beispielsweise Synchronisierung, an den Threads in einer kooperativen Gruppe durchzuführen. Das Programmiermodell unterstützt eine saubere Zusammensetzung über Softwaregrenzen, so dass Bibliotheken und Hilfsfunktionen innerhalb ihres lokalen Kontexts sicher synchronisieren können, ohne Annahmen über Konvergenz machen zu müssen. Cooperative-Groups-Primitiven ermöglichen neue Muster von kooperativer Parallelität, die Erzeuger-Verbraucher Parallelität, opportunistische Parallelität und globale Synchronisierung über ein gesamtes Gitter von Threadblöcken umfassen.
  • Eine Versandeinheit 415 ist konfiguriert, um Anweisungen an eine oder mehrere der Funktionseinheiten zu übertragen. In der Ausführungsform umfasst die Planereinheit 410(K) zwei Versandeinheiten 415, die ermöglichen, dass zwei unterschiedliche Anweisungen von dem gleichen Warp während jedes Taktzyklus versandt werden. In alternativen Ausführungsformen kann jede Planereinheit 410(K) eine einzige Versandeinheit 415 oder zusätzliche Versandeinheiten 415 umfassen.
  • Jeder SM 340 umfasst eine Registerdatei 420, die einen Satz von Registern für die Funktionseinheiten des SM 340 bereitstellt. In einer Ausführungsform ist die Registerdatei 420 zwischen jeder der Funktionseinheiten aufgeteilt, so dass jeder Funktionseinheit ein zugehöriger Abschnitt der Registerdatei 420 zugeteilt ist. In einer anderen Ausführungsform ist die Registerdatei 420 zwischen den unterschiedlichen Warps aufgeteilt, die von dem SM 340 ausgeführt werden. Die Registerdatei 420 stellt temporäre Speicherung für Operanden bereit, die mit den Datenpfaden der Funktionseinheiten verbunden sind.
  • Jeder SM 340 umfasst L Verarbeitungskerne 450. In einer Ausführungsform umfasst der SM 340 eine große Anzahl (z.B. 128, usw.) von unterschiedlichen Verarbeitungskernen 450. Jeder Kern 450 kann eine vollständig in einer Pipeline angeordnete (fully-pipelined) Einfach-Präzisions-Verarbeitungseinheit umfassen, die eine Gleitkommaarithmetik-Logikeinheit und eine Ganzzahlarithmetik-Logikeinheit umfasst. In einer Ausführungsform implementieren die Gleitkommaarithmetik-Logikeinheiten den IEEE 754-2008 Standard für Gleitkommaarithmetik. In einer Ausführungsform umfassen die Kerne 450 64 Einfach-Präzisions-(32-Bit)-Gleitkommakerne, 64 Integer-Kerne, 32 Doppel-Präzisions-(64-Bit)-Gleitkommakerne und 8 Tensorkerne.
  • Tensorkerne, die konfiguriert sind, um Matrix-Operationen, und in einer Ausführungsform ein oder mehrere Tensorkerne durchzuführen, sind in den Kernen 450 umfasst. Insbesondere sind die Tensorkerne konfiguriert, um Deep-Learning-Matrix-Arithmetik, wie beispielsweise Faltungsoperationen für Neuronal-Netzwerktraining und Inferenzieren, durchzuführen. In einer Ausführungsform arbeitet jeder Tensorkern an einer 4x4 Matrix und führt eine Matrix-Multiplikations- und Akkumulations-Operation D=A×B+C durch, wobei A, B, C und D 4x4 Matrizen sind.
  • In einer Ausführungsform sind die Matrix-Multiplikations-Eingaben A und B 16-Bit-Gleitkomma-Matrizen, während die Akkumulationsmatrizen C und D 16-Bit-Gleitkomma- oder 32-Bit-Gleitkomma-Matrizen sein können. Tensorkerne arbeiten an 16-Bit-Gleitkomma-Eingabedaten mit 32-Bit-Gleitkomma-Akkumulation. Die 16-Bit-Gleitkomma-Multiplikation erfordert 64 Operationen und ergibt ein Produkt voller Präzision, das dann unter Verwendung einer 32-Bit-Gleitkomma-Addition mit den anderen Zwischenprodukten für eine 4x4x4-Matrix-Multiplikation akkumuliert wird. In der Praxis werden Tensorkerne verwendet, um viel größere zweidimensionale oder höherdimensionale Matrixoperationen durchzuführen, die von diesen kleineren Elementen aufgebaut werden. Eine API, wie beispielsweise die CUDA 9 C++ API, stellt spezialisierte Matrix-Lade-, Matrix-Multiplikations- und Matrix-Akkumulations- und Matrix-Speicher-Operationen bereit, um Tensorkerne von einem CUDA-C++ Programm effizient zu verwenden. Auf der CUDA-Ebene nimmt das Warp-Schnittstellenniveau 16x16 große Matrizen an, die alle 32 Threads des Warp überspannen.
  • Jeder SM 340 umfasst ebenfalls M SFUs 452, die Sonderfunktionen durchführen (z.B. Attributauswertung, reziproke Quadratwurzel und dergleichen). In einer Ausführungsform können die SFUs 452 eine Baumtraversierungseinheit umfassen, die konfiguriert ist, um eine hierarchische Baumdatenstruktur zu durchlaufen. In einer Ausführungsform können die SFUs 452 eine Textureinheit umfassen, die konfiguriert ist, um Texturkarten-Filteroperationen durchzuführen. In einer Ausführungsform sind die Textureinheiten konfiguriert, um Texturkarten (z.B. eine 2D-Anordnung von Texeln) von dem Speicher 204 zu laden und die Texturkarten abzutasten, um abgetastete Texturwerte zum Gebrauch in Shader-Programmen zu erzeugen, die von dem SM 340 ausgeführt werden. In einer Ausführungsform werden die Texturkarten in dem gemeinsam benutzten Speicher/L1-Cache-Speicher 370 gespeichert. Die Textureinheiten implementieren Texturoperationen, wie beispielsweise Filteroperationen, unter Verwendung von Mip-Maps (z.B. Texturkarten von veränderlichem Detaillierungsgrad). In einer Ausführungsform umfasst jeder SM 240 zwei Textureinheiten.
  • Jeder SM 340 umfasst ebenfalls N LSUs 454, die Lade- und Speicheroperationen zwischen dem gemeinsam benutzten Speicher/L1-Cache-Speicher 470 und der Registerdatei 420 implementieren. Jeder SM 340 umfasst ein Zwischenverbindungs-Netzwerk 480, das jede der Funktionseinheiten mit der Registerdatei 420 und die LSU 454 mit der Registerdatei 420, dem gemeinsam benutzten Speicher/ L1-Cache-Speicher 470 verbindet. In einer Ausführungsform ist das Zwischenverbindungs-Netzwerk 480 eine Kreuzschiene, die konfiguriert sein kann, um irgendeine der Funktionseinheiten mit irgendeinem der Register in der Registerdatei 420 zu verbinden und die LSUs 454 mit der Registerdatei und Speicherorten im gemeinsam benutzten Speicher/L1-Cache-Speicher 470 zu verbinden.
  • Der gemeinsam benutzte Speicher/L1-Cache-Speicher 470 ist eine Auf-Chip-Speicheranordnung, die Datenspeicherung und Kommunikation zwischen dem SM 340 und der Primitiven-Engine 335 und zwischen Threads in dem SM 340 ermöglicht. In einer Ausführungsform umfasst der gemeinsam benutzte Speicher/L1-Cache-Speicher 470 128KB von Speicherkapazität und ist in dem Pfad von dem SM 340 zu der Speicherpartitionseinheit 280.
  • Der gemeinsam benutzte Speicher/L1-Cache-Speicher 470 kann verwendet werden, um Lese- und Schreibvorgänge zwischenzuspeichern. Einer oder mehrere der gemeinsam benutzten Speicher/L1-Cache-Speicher 470, L2-Cache-Speicher 360 und Speicher 204 sind Hintergrundspeicher.
  • Das Kombinieren eines Daten-Cache und gemeinsam benutzter Speicherfunktionalität in einem einzigen Speicherblock stellt die beste Gesamtleistung für beide Arten von Speicherzugriffen bereit. Die Kapazität ist als ein Cache von Programmen benutzbar, die den gemeinsam benutzten Speicher nicht verwenden. Wenn der gemeinsam benutzte Speicher beispielsweise konfiguriert ist, die Hälfte der Kapazität zu verwenden, können Textur- und Lade/Speicher-Operationen die verbleibende Kapazität verwenden. Integration innerhalb des gemeinsam benutzten Speichers/L1-Cache-Speicher 470 ermöglicht dem gemeinsam benutzten Speicher/L1-Cache-Speicher 470 als eine Leitung mit hohem Durchsatz zum Streamen von Daten zu arbeiten, während gleichzeitig eine höhere Bandbreite und ein latenzarmer Zugriff auf häufig wiederverwendete Daten bereitgestellt werden.
  • Wenn für Allzweck-Parallelberechnung konfiguriert, kann im Vergleich mit der Graphikverarbeitung eine einfachere Konfiguration verwendet werden. Im Einzelnen werden die in 2 gezeigten Festfunktions-Graphikverarbeitungseinheiten umgangen, wobei ein viel einfacheres Programmiermodell erzeugt wird. In der Allzweck-Parallelberechnungs-Konfiguration werden Blöcke von Threads von der Arbeitsverteilungs-Einheit 225 direkt den DPCs 320 zugewiesen und verteilt. Die Threads in einem Block führen das gleiche Programm unter Verwendung einer eindeutigen Thread-ID in der Berechnung, um sicherzustellen, dass jeder Thread eindeutige Ergebnisse erzeugt, unter Verwendung des SM 340, um das Programm auszuführen und Berechnungen durchzuführen, eines gemeinsam benutzten Speicher/L1-Cache-Speichers 470, um zwischen Threads zu kommunizieren, und der LSU 454 aus, um globalen Speicher durch den gemeinsam benutzten Speicher/L1-Cache-Speicher 470 und die Speicherpartitionseinheit 280 zu lesen und zu beschreiben. Wenn für Allzweck-Parallelberechnung konfiguriert, kann der SM 340 ebenfalls Befehle schreiben, welche die Planereinheit 220 verwenden kann, um neue Arbeit auf den DPCs 320 zu starten.
  • Die PPU 200 kann in einem Tischcomputer, einem Laptop-Computer, einem Tablet-Computer, einem Smartphone (z.B. einer drahtlosen handgehaltenen Vorrichtung), einem persönlichen digitalen Assistenten (PDA), einer Digitalkamera, einer handgehaltenen elektronischen Vorrichtung und dergleichen umfasst sein. In einer Ausführungsform ist die PPU 200 auf einem einzelnen Halbleitersubstrat verkörpert. In einer anderen Ausführungsform ist die PPU 200 in einem System-auf-Chip (SoC) zusammen mit einer oder mehreren anderen Vorrichtungen, wie beispielsweise zusätzlichen PPUs 200, dem Speicher 204, einem Rechner-mit-reduziertem-Befehlssatz(RISC)-CPU, einer Speicherverwaltungseinheit (MMU), einem Digital/Analog-Wandler (DAC) und dergleichen umfasst.
  • In einer Ausführungsform kann die PPU 200 auf einer Graphikkarte umfasst sein, die eine oder mehrere Speichervorrichtungen 204 umfasst. Die Graphikkarte kann konfiguriert sein, um sich mit einem PCIe-Schlitz auf einer Hauptplatine eines Tischcomputers schnittstellenmäßig zu verbinden. In noch einer anderen Ausführungsform kann die PPU 200 eine integrierte Graphikverarbeitungseinheit (iGPU) oder ein Parallelprozessor sein, der in dem Chipsatz der Hauptplatine umfasst ist.
  • Beispielhaftes Rechensystem
  • Systeme mit mehrere GPUs und CPUs werden in einer Vielfalt von Industrien verwendet, sowie Entwickler mehr Parallelität in Anwendungen, wie beispielsweise Rechnen für künstliches Intelligenz, freilegen und wirksam einsetzen. Hochleistungs-GPU-beschleunigte Systeme mit zehn bis vielen tausenden von Rechenknoten werden in Datenzentren, Forschungsanlagen und Supercomputern eingesetzt, um immer größere Probleme zu lösen. Sowie die Anzahl von Verarbeitungsvorrichtungen innerhalb der Hochleistungssysteme zunimmt, müssen die Kommunikations- und Datentransfermechanismen angepasst werden, um die erhöhte Bandbreite zu unterstützen.
  • 4B ist ein Konzeptdiagramm eines Verarbeitungssystems 400, das unter Verwendung der PPU 200 von 2 implementiert wird, gemäß einer Ausführungsform. Das beispielhafte System 465 kann konfiguriert sein, um das in 1 gezeigte Verfahren 100 zu implementieren. Das Verarbeitungssystem 400 umfasst eine CPU 430, einen Schalter 410 und mehrere PPUs 200 und jeweilige Speicher 204. Das NVLink 210 stellt Hochgeschwindigkeits-Kommunikationsverbindungen zwischen jeder der PPUs 200 bereit. Obwohl eine bestimmte Anzahl von Verbindungen von NV-Links 210 und von Zwischenverbindungen 202 in 4B veranschaulicht sind, kann die Anzahl mit jeder PPU 200 und der CPU 430 variieren. Der Schalter 410 ist schnittstellenmäßig zwischen der Zwischenverbindung 202 und der CPU 430 verbunden. Die PPUs 200, die Speicher 204 und die NVLinks 210 können auf einer einzigen Halbleiterplattform situiert sein, um ein Parallelverarbeitungsmodul 425 zu bilden. In einer Ausführungsform unterstützt der Schalter 410 zwei oder mehrere Protokolle, um sich schnittstellenmäßig zwischen verschiedenen Verbindungen und/oder Links zu verbinden.
  • In einer anderen Ausführungsform (nicht gezeigt) stellt das NVLink 210 ein oder mehrere Hochgeschwindigkeits-Kommunikationslinks zwischen jeder der PPUs 200 und der CPU 430 bereit und der Schalter 410 ist schnittstellenmäßig zwischen der Zwischenverbindung 202 und jeder der PPUs 200 verbunden. Die PPUs 200, die Speicher 204 und die Zwischenverbindung 202 können auf einer einzigen Halbleiterplattform situiert sein, um ein Parallelverarbeitungsmodul 425 zu bilden. In noch einer anderen Ausführungsform (nicht gezeigt) stellt die Zwischenverbindung eine oder mehrere Kommunikationslinks zwischen jeder der PPUs 200 und der CPU 430 bereit, und der Schalter 410 ist schnittstellenmäßig zwischen jeder der PPUs 200 unter Verwendung des NVLink 210 verbunden, um ein oder mehrere Hochgeschwindigkeits-Kommunikationslinks zwischen den PPUs 200 bereitzustellen. In einer anderen Ausführungsform (nicht gezeigt) stellt das NVLink 210 ein oder mehrere Hochgeschwindigkeits-Kommunikationslinks zwischen den PPUs 200 und der CPU 430 durch den Schalter 410 bereit. In noch einer anderen Ausführungsform (nicht gezeigt) stellt die Zwischenverbindung 202 eine oder mehrere Hochgeschwindigkeits-Kommunikationslinks zwischen jeder der PPUs 200 direkt bereit. Ein oder mehrere NVLink 210 Hochgeschwindigkeits-Kommunikationslinks können als eine NVLink-Zwischenverbindung oder entweder als eine Auf-Chip- oder Auf-Die-Zwischenverbindung unter Verwendung des gleichen Protokolls wie das NVLink 210 implementiert werden.
  • Im Kontext der vorliegenden Beschreibung kann sich eine einzige Halbleiterplattform auf eine einzelne unitäre Halbleiter-basierte integrierte Schaltung beziehen, die auf einem Die oder Chip angefertigt ist. Es sei bemerkt, dass sich der Begriff einzige Halbleiterplattform ebenfalls auf Mehr-Chip-Module mit erhöhter Konnektivität beziehen kann, die eine Auf-Chip-Operation simulieren und die wesentliche Verbesserungen gegenüber der Benutzung einer herkömmlichen Busimplementierung vornehmen. Natürlich können die verschiedenen Schaltungen oder Vorrichtungen ebenfalls getrennt oder in verschiedenen Kombinationen von Halbleiterplattformen gemäß den Wünschen des Benutzers gelegen sein. Alternativ kann das Parallelverarbeitungsmodul 425 als ein Leiterplattensubstrat implementiert sein und jede der PPUs 200 und/oder Speicher 304 können verpackte Vorrichtungen sein. In einer Ausführungsform sind die CPU 430, der Schalter 410 und das Parallelverarbeitungsmodul 425 auf einer einzigen Halbleiterplattform gelegen.
  • In einer Ausführungsform ist die Signalrate von jedem NVLink 210 20 bis 25 Gigabit/s und jede PPU 200 umfasst sechs NVLink 210 Schnittstellen (wie in 4B gezeigt, sind fünf NVLink 210 Schnittstellen für jede PPU 200 umfasst). Jedes NVLink 210 stellt eine Datentransferrate von 25 Gigabyte/s in jeder Richtung bereit, wobei sechs Verknüpfungen 300 Gigabyte/s bereitstellen. Die NVLinks 210 können exklusiv für PPU-zu-PPU Kommunikation, wie in 4B gezeigt, oder einer Kombination von PPU-zu-PPU und PPU-zu-CPU verwendet werden, wenn die CPU 430 ebenfalls eines oder mehrere NVLink 210 Schnittstellen umfasst.
  • In einer Ausführungsform ermöglicht das NVLink 210 einen direkten Lade/Speicher/atomaren Zugriff der CPU 430 auf jeden Speicher 204 der PPU 200. In einer Ausführungsform unterstützt das NVLink 210 Kohärenzoperationen, die ermöglichen, das von dem Speicher 204 gelesene Daten in der Cache-Hierarchie der CPU 430 gespeichert werden können, was die Cachezugriffslatenz für die CPU 430 verringert. In einer Ausführungsform umfasst das NVLink 210 Unterstützung für Address Translation Services (ATS), was der PPU 200 ermöglicht, auf Seitentabellen innerhalb der CPU 430 direkt zuzugreifen. Eines oder mehrere der NVLinks 210 können ebenfalls konfiguriert sein, um in einem Niedrigleistungsmodus zu arbeiten.
  • 4C veranschaulicht ein beispielhaftes System 465, bei dem die verschiedene Architektur und/oder Funktionalität der verschiedenen vorherigen Ausführungsformen implementiert werden kann. Das beispielhafte System 465 kann konfiguriert sein, um das in 1 gezeigte Verfahren 100 zu implementieren.
  • Wie gezeigt, wird ein System 465 bereitgestellt, das mindestens eine zentrale Verarbeitungseinheit 430 umfasst, die mit einem Kommunikationsbus 475 verbunden ist. Der Kommunikationsbus 475 kann unter Verwendung jedes geeigneten Protokolls, wie beispielsweise PCI (Peripheral Component Interconnect), PCI-Express, AGP (Accelerated Graphics Port), Hyper-Transport oder irgendeinem(irgendwelchen) anderen Bus- oder Punkt-zu-Punkt-Kommunikationsprotokoll(en) implementiert sein. Das System 465 umfasst ebenfalls einen Hauptspeicher 440. Steuerlogik (Software) und Daten werden in dem Hauptspeicher 440 gespeichert, der die Form eines Direkt-Zugriffs-Speichers (RAM) annehmen kann.
  • Das System 465 umfasst ebenfalls Eingabevorrichtungen 460, das Parallelverarbeitungssystem 425 und Anzeigevorrichtungen 445, z.B. eine herkömmliche CRT (Kathodenstrahlröhre), eine LCD (Flüssigkristallanzeige), eine LED (lichtemittierende Diode), eine Plasmaanzeige oder dergleichen. Eine Benutzereingabe kann von den Eingabevorrichtungen 460, z.B. Tastatur, Maus, Berührfeld, Mikrophon und dergleichen, empfangen werden. Jedes der vorhergehenden Module und/oder Vorrichtungen kann sogar auf einer einzigen Halbleiterplattform gelegen sein, um das System 465 zu bilden. Alternativ können die verschiedenen Module ebenfalls getrennt oder in verschiedenen Kombinationen von Halbleiterplattformen gemäß den Wünschen des Benutzers gelegen sein.
  • Ferner kann das System 465 mit einem Netzwerk (z.B. einem Telekommunikationsnetzwerk, Lokalbereichsnetzwerk (LAN), drahtlosen Netzwerk, Weitbereichsnetzwerk (WAN), wie beispielsweise dem Internet, Peer-zu-Peer-Netzwerk, Kabelnetzwerk oder dergleichen) durch eine Netzwerkschnittstelle 435 für Kommunikationszwecke gekoppelt sein.
  • Das System 465 kann ebenfalls einen Sekundärspeicher umfassen (nicht gezeigt). Der Sekundärspeicher umfasst beispielsweise ein Festplattenlaufwerk und/oder ein entfernbares Speicherlaufwerk, das ein Diskettenlaufwerk darstellt, ein Magnetbandlaufwerk, ein Kompaktdisklaufwerk, ein digitale versatile Disk-(DVD)-Laufwerk, eine Aufzeichnungsvorrichtung und einen Universal-Serial-Bus-(USB)-Flash-Speicher. Das entfernbare Speicherlaufwerk liest von und/oder schreibt auf eine entfernbare Speichereinheit auf eine wohlbekannte Art und Weise.
  • Computerprogramme oder Computersteuerlogik-Algorithmen können in dem Hauptspeicher 440 und/oder dem Sekundärspeicher gespeichert sein. Derartige Computerprogramme, wenn ausgeführt, ermöglichen dem System 465, verschiedene Funktionen durchzuführen. Der Speicher 440, die Speicherung, und/oder jede andere Speicherung sind mögliche Beispiele von computerlesbaren Medien.
  • Die Architektur und/oder Funktionalität der verschiedener vorherigen Figuren kann im Kontext eines allgemeinen Computersystems, eines Platinensystems, eines Unterhaltungszwecken fest zugeordneten Spielkonsolensystems, eines anwendungsspezifischen Systems und/oder jedem anderen gewünschten System implementiert sein. Beispielsweise kann das System 465 die Form eines Tischcomputers, eines Laptop-Computers, eines Tablet-Computers, von Servern, von Supercomputern, eines Smartphones (z.B. einer drahtlosen handgehaltenen Vorrichtung), eines persönlichen digitalen Assistenten (PDA), einer Digitalkamera, eines Fahrzeugs, einer am Kopf angebrachten Anzeige, einer handgehaltenen elektronischen Vorrichtung, eines mobilen Telefongeräts, eines Fernsehers, einer Arbeitsstation, von Spielkonsolen, eines eingebetteten Systems und/oder von jedem anderen Typ von Logik annehmen.
  • Während verschiedene Ausführungsformen oben beschrieben wurden, sei zu verstehen, dass sie lediglich beispielhaft und nicht begrenzend präsentiert wurden. Somit sollte die Breite und der Umfang einer bevorzugten Ausführungsform nicht durch irgendeine der oben beschriebenen beispielhaften Ausführungsformen begrenzt werden, sondern sollte nur durch die folgenden Ansprüche und ihrer Äquivalente definiert werden.
  • Maschinenlernen
  • Tiefe neuronale Netzwerke (DNNs), die auf Prozessoren entwickelt wurden, wie beispielsweise der PPU 200, wurden für diverse Verwendungsfälle, von selbstfahrenden Wagen bis schnellerer Wirkstoffentwicklung, von automatischer Bildbeschriftung in Online-Bilddatenbanken bis smarter Echtzeit-Sprachenübersetzung in Video-Chat-Anwendungen verwendet. Deep-Learning ist eine Technik, welche den Neuronal-Lernverfahren des menschlichen Gehirns modelliert, die kontinuierlich lernt, kontinuierlich immer smarter wird und genauere Ergebnisse mit der Zeit schneller liefert. Ein Kind wird anfangs von einem Erwachsenen unterrichtet, verschiedene Formen korrekt zu identifizieren und zu klassifizieren, um schließlich imstande zu sein, Formen ohne irgendeine Nachhilfe zu identifizieren. Auf ähnliche Weise muss ein Tiefen-Learning-System oder ein Neuronal-Lernsystem in Objekterkennung und Klassifizierung trainiert werden, damit es smarter und effizienter beim Identifizieren von Grundobjekten, verdeckten Objekte usw. wird, während ebenfalls Objekten Kontext zugewiesen wird. Beispielsweise wird ein Neuronal-Lernsystem zur Orientierungspunkt-Lokalisierung und/oder Attributklassifizierung trainiert
  • Auf der einfachsten Ebene schauen Neuronen im menschlichen Gehirn auf verschiedene Eingaben, die empfangen werden, wobei Wichtigkeitsgrade jeder dieser Eingaben zugewiesen werden und eine Ausgabe an andere Neuronen weitergeleitet wird, um auf diese zu wirken. Ein künstliches Neuron oder ein Perzeptron ist das grundlegendste Modell eines Neuronal-Netzwerks. In einem Beispiel kann ein Perzeptron eine oder mehrere Eingaben empfangen, die verschiedene Merkmale eines Objekts darstellen, die das Perzeptron trainiert wird, zu erkennen und zu klassifizieren, und jedem dieser Merkmale wird ein bestimmtes Gewicht basierend auf der Wichtigkeit des Merkmals beim Definieren der Gestalt eines Objekts zugewiesen.
  • Ein Modell eines tiefen neuronalen Netzwerks (DNN) umfasst mehrere Schichten von vielen verbundenen Perzeptronen (z.B. Knoten), die mit enormen Mengen an Eingabedaten trainiert werden können, um komplexe Probleme mit hoher Genauigkeit schnell zu lösen. In einem Beispiel gliedert eine erste Schicht des DNN-Modells ein Eingabebild eines Automobils in verschiedene Abschnitte auf und sucht nach Grundmustern, wie beispielsweise Linien und Winkel. Die zweite Schicht setzt die Linien zusammen, um nach Mustern höherer Ebene, wie beispielsweise Rädern, Windschutzscheiben und Spiegeln, zu suchen. Die nächste Schicht kennzeichnet den Typ des Fahrzeugs und die letzten paar Schichten erzeugen ein Etikett für das Eingabebild, welches das Modell einer speziellen Automobilmarke kennzeichnet.
  • Sobald das DNN trainiert ist, kann das DNN eingesetzt und verwendet werden, um Objekte oder Muster in einem als Inferenz bekannten Verfahren zu identifizieren und zu klassifizieren. Beispiele von Inferenz (der Prozess, durch den ein DNN nützliche Information von einer gegebenen Eingabe extrahiert) umfassen ein Identifizieren handgeschriebener Zahlen auf Schecks, die in Geldausgabe-Maschinen eingezahlt werden, ein Identifizieren von Bildern von Freunden in Photos, Liefern von Filmempfehlungen an über fünfzig Millionen Nutzer, Identifizieren und Klassifizieren unterschiedlicher Typen von Automobilen, Fußgängern und Straßengefahren in fahrerlosen Wagen oder Übersetzen von menschlicher Sprache in Echtzeit.
  • Während des Trainings strömen Daten durch das DNN in einer Vorwärtspropagierungsphase, bis eine Vorhersage erzeugt wird, die ein Etikett angibt, das der Eingabe entspricht. Wenn das neuronales Netzwerk die Eingabe nicht korrekt kennzeichnet, dann werden Fehler zwischen dem korrekten Etikett und dem vorhergesagten Etikett analysiert und die Gewichte werden für jedes Merkmal während einer Rückwärtspropagierungsphase eingestellt, bis das DNN die Eingabe und andere Eingaben in einem Trainingsdatensatz korrekt kennzeichnet. Das Training komplexer neuronaler Netzwerke erfordert enorme Mengen an paralleler Rechenleistung, die Gleitkomma-Multiplikationen und Gleitkomma-Additionen umfassen, die von der PPU 200 unterstützt werden. Inferenzieren ist weniger rechenintensiv als Training, das ein Latenz-empfindliches Verfahren ist, wo ein trainiertes neuronales Netzwerk auf neue Eingaben angewandt wird, die es zuvor nicht gesehen hat, um Bilder zu klassifizieren, Sprache zu übersetzen und im Allgemeinen neue Informationen abzuleiten.
  • Neuronale Netzwerke stützen sich sehr auf Matrixrechenoperationen und komplexe mehrschichtige Netzwerke erfordern enorme Mengen an Gleitkomma-Leistung und Bandbreite für sowohl Effizienz als auch Geschwindigkeit. Mit Tausenden von Verarbeitungskernen, die für Matrixrechenoperationen optimiert sind und einige zehn bis hunderte von TFLOPS von Leistung liefern, ist die PPU 200 eine Rechenplattform, die imstande ist, Leistung zu liefern, die für tiefe Neuronal-Netzwerk-basierte künstliche Intelligenz und Maschinenlernanwendungen erforderlich ist.
  • Beispielhafte Umgebung
  • 5 veranschaulicht eine beispielhafte Verdeckungs-bewusste globale 3D-Objekt-Posen- und -Formschätzungsumgebung 500 gemäß einer beispielhaften Ausführungsform. Wie gezeigt, wird ein Video 502 in einen Objektverfolger und Reidentifizierer 504 eingegeben, der ein Begrenzungskästchen um jedes Objekt platziert, um innerhalb jedes Frames des Videos verfolgt zu werden, eine Kennung jedem verfolgten Objekt innerhalb des Videos zuweist und Objekte erneut identifiziert, die aus einem oder mehreren Frames in dem Video entfernt werden und die in späteren Frames des Videos erneut erscheinen.
  • Zusätzlich Ergebnisse, die durch den Objektverfolger und Reidentifizierer 504 erzeugt werden (z.B., Video mit Begrenzungskästchen um jedes identifizierte Objekt und eine Kennung für jedes Objekt), können in einen Posen- und Formschätzer 506 eingegeben werden. In einer Ausführungsform kann der Posen- und Formschätzer 506 eine Pose und Form für jedes identifizierte und verfolgte Objekt innerhalb jedes Frames des Videos bestimmen. In einer Ausführungsform kann die Pose und Form als eine triangulierte Masche dargestellt werden.
  • Ferner kann in einer Ausführungsform innerhalb des Posen- und Formschätzers 506,eine Translation und globale Orientierung aus jedem verfolgten Objekt innerhalb des Videos entfernt werden. Beispielsweise kann innerhalb jedes Frames des Videos eine Translation und globale Orientierung aus einem oder mehreren Objekte innerhalb jedes Begrenzungskästchens entfernt werden. Dies kann zu einer Bestimmung der lokalen Bewegung für ein oder mehrere Objekte innerhalb ihres jeweiligen Begrenzungskästchens innerhalb des Videos führen (im Gegensatz zu der zuvor bestimmten globalen Bewegung für derartige Objekte).
  • Ferner noch können Ergebnisse, die durch den Posen- und Formschätzer 506 erzeugt werden (z.B., eine Bestimmung der lokalen Bewegung für jedes Objekt innerhalb seines jeweiligen Begrenzungskästchens innerhalb des Videos), in einen Bewegungseinfüller 508 eingegeben werden. In einer Ausführungsform kann der Bewegungseinfüller 508 alle fehlenden Abschnitte für alle verfolgten Objekte innerhalb des Videos unter Benutzung vorheriger Posen- und Formdaten für das verfolgte Objekte als Eingabe in ein trainiertes neuronales Netzwerk identifizieren und einfüllen,.
  • Ebenfalls können Ergebnisse, die durch den Bewegungseinfüller 508 erzeugt werden (z.B., die eingefüllte lokale Bewegung für alle Objekte innerhalb ihres jeweiligen Begrenzungskästchens innerhalb des Videos), in einen Trajektorienprädiktor 510 eingegeben werden. In einer Ausführungsform kann für jedes Objekt der Bewegungseinfüller 508 die eingefüllte lokale Bewegung für dieses Objekt verwenden, um eine globale Trajektorie (z.B., eine 3D-Position und -Orientierung mit Bezug auf eine Kamera bei jedem Videoframe) für das Objekt innerhalb des Videos vorherzusagen.
  • Außerdem können Ergebnisse, die durch den Trajektorienprädiktor 510 erzeugt werden (z.B., eine globale Trajektorie für jedes Objekt innerhalb ihres jeweiligen Begrenzungskästchens innerhalb des Videos) in einen globalen Optimierer 512 zusammen mit der eingefüllten lokalen Bewegung für alle Objekte innerhalb ihrer jeweiligen Begrenzungskästchen innerhalb des Videos eingegeben werden. Unter Benutzung dieser Eingaben kann der globale Optimierer 512 die eingefüllte globale Bewegung für jedes Objekt mit Bezug auf ein globales Koordinatensystem bestimmen und kann eine dreidimensionale (3D) Posensequenz (z.B., eine Sequenz von 3D-Maschen) 514 für jedes Objekt unter Benutzung der eingefüllten globalen Bewegung für derartige Objekt innerhalb des Videos 502 bestimmen.
  • Auf diese Weise kann die Verdeckungs-bewusste globale 3D-Objekt-Posenschätzungsumgebung 500 ein 3D-Modell und Posensequenz für jedes Objekt innerhalb eines Videos bestimmen, wobei jedes 3D-Modell und jede Posensequenz innerhalb eines globalen Koordinatensystems dargestellt wird und keine fehlenden Abschnitte aufweist.
  • Globale Verdeckungs-bewusste Menschliche Maschenwiederherstellung mit Dynamischen Kameras
  • In einer Ausführungsform wird eine Vorgehensweise für 3D globale menschliche Maschenwiederherstellung aus monokularen Videos bereitgestellt, die mit dynamischen Kameras aufgezeichnet wurden. Diese Vorgehensweise ist robust für schwere und langfristige Verdeckungen und verfolgt menschliche Körper, sogar wenn sie außerhalb des Sichtfelds der Kamera gehen. Um dies zu erreichen, wird ein tiefer generativer Bewegungseinfüller bereitgestellt, der autoregressiv die Körperbewegungen von verdeckten Menschen basierend auf sichtbaren Bewegungen einfüllt. Außerdem rekonstruiert diese Vorgehensweise im Gegensatz zu vorherigen Arbeiten zusätzlich menschliche Maschen in konsistenten globalen Koordinaten sogar mit dynamischen Kameras. Da die gemeinsame Rekonstruktion von menschlichen Bewegungen und Kameraposen unterbestimmt ist, wird ein globaler Trajektorienprädiktor bereitgestellt, der globale menschliche Trajektorien basierend auf lokalen Körperbewegungen erzeugt. Unter Verwendung der vorhergesagten Trajektorien als Anker, präsentieren wir ein globales Optimierungs-Framework, das die vorhergesagten Trajektorien verfeinert und die Kameraposen optimiert, um mit den Videonachweisen, wie beispielsweise 2D-Schlüsselpunkten, übereinzustimmen.
  • Diese Aufgabe ist aus zwei Hauptgründen in hohem Maße eine Herausforderung. Erstens machen es dynamische Kameras schwierig, menschlichen Bewegungen in konsistenten globalen Koordinaten zu schätzen. Existierende Wiederherstellungsverfahren für menschliche Maschen schätzen menschliche Maschen in den Kamerakoordinaten oder sogar in den wurzelrelativen Koordinaten. Folglich können sie lediglich globale menschliche Maschen aus dynamischen Kameras durch Verwenden von SLAM wiederherstellen, um Kameraposen zu schätzen. SLAM kann jedoch häufig scheitern für in freier Wildbahn aufgenommener Videos aufgrund sich bewegender und dynamischer Objekte. Es weist ebenfalls das Problem von Skalenambiguität auf, was häufig zu Kameraposen führt, die mit den menschlichen Bewegungen inkonsistent sind. Zweitens enthalten Videos, die von dynamischen Kameras aufgenommen werden, häufig schwere und langfristige Verdeckungen von Menschen, die durch verpasste Erkennungen, vollständige Verdeckung durch Objekte und andere Leute, oder dadurch, dass die Person außerhalb des Sichtfelds (Field of View; FoV) der Kamera geht, verursacht werden können. Diese Verdeckungen stellen ernste Herausforderungen für standardmäßige menschliche Maschenwiederherstellungsverfahren dar, die sich auf Erkennungen oder sichtbare Teile stützen, um menschliche Maschen zu schätzen. Existierende Verfahren können lediglich teilweise Verdeckungen einer Person ansprechen und scheitern, schwere Verdeckungen zu handhaben, wenn die Person für einen verlängerten Zeitraum vollständig unsichtbar ist.
  • Um die obigen Herausforderungen anzugehen, wird die globale Verdeckungs-bewusste menschliche Maschenwiederherstellung (Global Occlusion-Aware Human Mesh Recovery; GLAMR) bereitgestellt, die schwere Verdeckungen handhaben und menschliche Maschen in konsistenten globalen Koordinaten schätzen kann - sogar für Videos, die mit dynamischen Kameras aufgezeichnet wurden. Zuerst wird eine Schätzung der Form und Posensequenzen (Bewegungen) von sichtbaren Leuten in den Kamerakoordinaten vorgenommen. Multiobjektverfolgung und Reidentifikation stellen Verdeckungsinformationen bereit und die Bewegung von verdeckten Frames wird nicht geschätzt. Um potentiell schwere Verdeckungen anzugehen, wird ein tiefer generativer Bewegungseinfüller verwendet, der autoregressiv die lokalen Körperbewegungen von verdeckten Leuten basierend auf sichtbaren Bewegungen einfüllt. Der Bewegungseinfüller setzt menschliche Dynamik wirksam ein, die aus einer Bewegungsdatenbank gelernt wurde. Als nächstes kann, um globale Bewegungen zu erhalten, ein globaler Trajektorienvorhersager verwendet werden, der globale menschliche Trajektorien basierend auf lokalen Körperbewegungen erzeugen kann. Er wird durch die Beobachtung motiviert, dass die globale Wurzeltrajektorie einer Person mit den lokalen Körperbewegungen stark korreliert ist. Schließlich kann unter Verwendung der vorhergesagten Trajektorien als Anker, um den Lösungsraum zu beschränken, ein globales Optimierungs-Framework die globalen Bewegungen und Kameraposen gemeinsam optimieren, um mit den Videonachweisen, wie beispielsweise 2D-Schlüsselpunkten, übereinzustimmen.
  • Auf diese Weise werden langfristige Verdeckungen angesprochen und globale 3D menschliche Pose und Form werden aus Videos geschätzt, die von dynamischen Kameras aufgenommen wurden. Zusätzlich füllt ein generativer Transformer-basierte Bewegungseinfüller autoregressiv langfristige fehlende Bewegungen autoregressiv ein. Ferner wird ein Verfahren bereitgestellt, um globale menschliche Trajektorien aus lokalen Körperbewegungen zu erzeugen und die erzeugten Trajektorien als Anker zu verwenden, um globale Bewegung und Kameraoptimierung einzugrenzen.
  • Die Eingabe in das Framework ist ein Video I = (I1, ... , IT) mit T Frames, das von einer dynamischen Kamera aufgenommen wird, d.h., die Kameraposen können jedes Frames ändern. Unser Ziel ist, die globale Bewegung (Posensequenz) { Q i } i = 1 N
    Figure DE102022120595A1_0001
    der N Leute in dem Video in einem konsistenten globalen Koordinatensystem zu schätzen. Die globale Bewegung Qi = (Ti, Ri, Θi, Bi) für Person i besteht aus den Wurzeltranslationen T i = ( τ s i i , , τ e i i ) ,
    Figure DE102022120595A1_0002
    Wurzelrotationen R i = ( γ s i i , , γ e i i )
    Figure DE102022120595A1_0003
    sowie auch der Körperbewegung Θ i = ( θ s i i , , θ e i i )
    Figure DE102022120595A1_0004
    und Formen B i = ( β s i i , , β e i i ) ,
    Figure DE102022120595A1_0005
    wobei sich die Bewegung von dem ersten Frame si zu dem letzten Frame ein erstreckt, wenn die Person i in dem Video relevant ist. Insbesondere entspricht jede Körperpose θ T I 23 × 3
    Figure DE102022120595A1_0006
    und Form β T I 10
    Figure DE102022120595A1_0007
    den Posenparametern (gemeinsame Rotationen ausschließlich der Wurzelrotation) und Formparametern des SMPL-Modells. Unter Verwendung der Wurzeltranslation τ ∈ ℝ3 und (Achsenwinkel) Rotation γ ∈ ℝ3 stellt SMPL eine menschliche Körpermasche mit einer linearen Funktion S(τ , γ, θ, β) dar, die eine globale Pose q = (τ, γ, θ, β) in eine gelenkige triangulierte Masche Φ ∈ ℝK×3 mit K = 6980 Vertices abbildet. Die globale Maschensequenz für jede Person kann aus ihrer globalen Bewegung Qi via SMPL wiederhergestellt werden.
  • Ein beispielhaftes Framework besteht aus vier Stufen. In Stufe I werden Algorithmen der Multiobjektverfolgung (MOT) und Reidentifikation verwendet, um die Begrenzungskästchensequenz von jeder Person zu erhalten, die in ein menschliches Maschen-Wiederherstellungsverfahren eingegeben wird (z.B., KAMA oder SPEC), um die Bewegung Q̃i jeder Person (einschließlich Translation) in den Kamerakoordinaten zu extrahieren. Die Bewegung Q̃i kann aufgrund verschiedener Verdeckungen (z.B., Verdeckung, verpasste Erkennung, außerhalb FoV gehen) unvollständig sein, wobei Begrenzungskästchen von MOT für einige Frames fehlen. In Stufe II kann ein generativer Bewegungseinfüller die Verdeckungen in der geschätzten Körperbewegung Θ̃i ansprechen und Verdeckungs-freie Körperbewegung Θ̂i erzeugen. In Stufe III verwendet ein globaler Trajektorienprädiktor die eingefüllte Körperbewegung Θ̂i, um die globale Trajektorie (Wurzeltranslationen und Rotationen) von jeder Person zu erzeugen und ihre globale Bewegung Q̂i zu erhalten. In Stufe IV werden die globalen Trajektorien aller Leute und die Kameraparameter gemeinsam optimiert, um globale Bewegungen Θ̌i konsistent mit den Videonachweisen zu erzeugen.
  • Generativer Bewegungseinfüller Die Aufgabe des generativen Bewegungseinfüllers M ist, die verdeckte Körperbewegung Θ̃i jeder Person auszufüllen, um eine Verdeckungs-freie Körperbewegung Θ̂i zu erzeugen. Hier wird der Bewegungseinfüller M nicht verwendet, um andere Komponenten in der geschätzten Bewegung Θ̂i, d.h., Wurzeltrajektorie (T̃i,R̃i) und Formen B̃i einzufüllen. Dies liegt daran, dass es schwierig ist, die Wurzeltrajektorie (T̃i,R̃i) unter Verwendung gelernter menschlicher Dynamik einzufüllen, da sie sich in den Kamerakoordinaten und nicht als ein konsistentes Koordinatensystem aufgrund der dynamischen Kamera befindet. In einer Ausführungsform kann der vorgeschlagene globale Trajektorienprädiktor verwendet werden, um eine Verdeckungs-freie globale Trajektorie (Tî,R̂i), aus der eingefüllten Körperbewegung Θ̂i zu erzeugen. Die Trajektorie (T̃ii) von dem Posenschätzer wird nicht verworfen und wird in der globalen Optimierung verwendet. Für die Formen kann eine lineare Interpolation verwendet werden, um Verdeckungs-freie Formen B̂i zu erzeugen, da die Form einer Person im gesamten Video in der Nähe einer Konstante bleiben sollte.
  • Bei einer gegebenen allgemeinen verdeckten menschlichen Körperbewegung Θ̃ = (θ̃1,..., θ̃h) von h Frames und ihrer Sichtbarkeitsmaske V = (V1, ... , Vh) als Eingabe, gibt der Bewegungseinfüller M eine vollständige Verdeckungs-freie Bewegung Θ̂ = (θ̂̂1,..., θ̂h) aus. Die Sichtbarkeitsmaske V codiert die Sichtbarkeit der verdeckten Bewegung Θ̂, wobei Vt = 1, wenn die Körperpose θ̃t in Frame t sichtbar ist, und Vt = 0 andernfalls. Da die menschliche Pose für verdeckte Frames hoch ungewiss und stochastisch sein kann, kann der Bewegungseinfüller M unter Verwendung des konditionalen Variations-Autocodierers (CVAE) formuliert werden: Θ ^ = M ( Θ ˜ , V , z ) ,
    Figure DE102022120595A1_0008
    wobei der Bewegungseinfüller M dem CVAE-Decodierer entspricht und z ein Gaußscher latenter Code ist. Unterschiedliche Verdeckungs-freie Bewegungen Θ̂ können durch Variieren von z erhalten werden.
  • Autoregressive Bewegungseinfüllung
  • Um sicherzustellen, dass der Bewegungseinfüller M viel längere Testbewegungen als die Trainingsbewegungen handhaben kann, kann ein autoregressiver Bewegungseinfüllungsprozess zur Testzeit verwendet werden. Ein Schiebefenster von h Frames kann verwendet werden, wobei angenommen wird, das die ersten hc Frames der Bewegung bereits Verdeckungs-frei eingefüllt sind und als Kontext dienen, und die letzten h1 Frames als Vorausschau verwendet werden. Die Vorausschau ist für den Bewegungseinfüller nützlich, da sie sichtbare Posen enthalten kann, welche das Beenden der Bewegung leiten und die Erzeugung von diskontinuierlichen Bewegungen vermeiden kann. Bei Ausschluss der Kontext- und Vorausschau-Frames werden lediglich die mittleren ho = h - hc - h1 Frames der Bewegung eingefüllt. Die Bewegung wird iterativ unter Verwendung des Schiebefensters eingefüllt und das Fenster wird um ho Frames mit jedem Schritt vorgerückt.
  • Netzwerk des Bewegungseinfüllers
  • Die Gesamtnetzwerkauslegung des CVAE-basierten Bewegungseinfüllers setzt eine Transformer-basierte seq2seq-Architektur ein, die aus drei Teilen besteht: (1) einem Kontextnetzwerk, das einen Transformer-Codierer verwendet, um die sichtbaren Posen aus der verdeckten Bewegung Θ̃ in eine Kontextsequenz zu codieren, die als die Bedingung für andere Netzwerke dient; (2) einem Decodierernetzwerk, das den latenten Code z und die Kontextsequenz verwendet, um eine Verdeckungs-freie Bewegung Θ̂ via einem Transformer-Decodierer und einem mehrlagigen Perzeptron (MLP) zu erzeugen; und (3) apriori und aposteriori Netzwerken, welche die apriori und aposteriori Verteilungen für den latenten Code z erzeugen.
  • Bei den Transformer-basierten Netzwerken ersetzt eine zeitbasierte Codierung die Position in der ursprünglichen Positionscodierung mit dem Zeitindex. Im Gegensatz zu vorherigen CNN-basierten Verfahren, erfordert der Transformer-basierte Bewegungseinfüller kein Polstern von fehlenden Frames, sondern beschränkt stattdessen seine Aufmerksamkeit auf sichtbare Frames, um eine wirksame zeitliche Modellierung zu erreichen.
  • Training
  • Der Bewegungseinfüller M wird unter Verwendung eines großen Bewegungserfassungsdatensatzes (z.B., AMASS usw.) trainiert.
  • Um verdeckte Bewegungen Θ̃ für etwaige GT-Trainingsbewegung Θ̃j von h Frames zu synthetisieren, werden Hocc aufeinanderfolgende Frames der Bewegung zufällig verdeckt, wobei Hocc gleichmäßig aus [H1b, Hub] abgetastet wird. Es sei bemerkt, dass die ersten hc Frames nicht verdeckt sind und als Kontext reserviert werden. Ein Standard-CVAE-Ziel kann verwendet werden, um den Bewegungseinfüller M zu trainieren: L M = t = 1 h θ ˜ t θ ˜ ' t 2 2 + L KL z ,
    Figure DE102022120595A1_0009
    wobei L KL z
    Figure DE102022120595A1_0010
    die KL-Divergenz zwischen den Priori- und Posteriori-Verteilungen des latenten CVAE-Codes z ist.
  • Globaler Trajektorienprädiktor
  • Nachdem die Verdeckungs-freie Körperbewegung Θ̂i für jede Person unter Verwendung des Bewegungseinfüllers erhalten wird, bleibt immer noch ein Hauptproblem: die geschätzte Trajektorie (T̃i,R̃ί) der Person ist immer noch verdeckt und nicht in einem konsistenten globalen Koordinatensystem. Um dieses Problem anzugehen, kann ein globaler Trajektorienprädiktor T gelernt werden, der eine Verdeckungs-freie globale Trajektorie (T̂i,R̂ί) einer Person aus der lokalen Körperbewegung Θ̂i erzeugt.
  • Bei einer allgemeinen Verdeckungs-freien Körperbewegung Θ = (θ1, ... , θm) als Eingabe, gibt der Trajektorienprädiktor T seine entsprechende globale Trajektorie (T ,R) einschließlich der Wurzeltranslationen T = (τ1, ... ,τm) und Rotationen R = (γ1,...,γm) aus. Um eine etwaige potentielle Ambiguität in der globalen Trajektorie anzusprechen, wird der globale Trajektorienprädiktor ebenfalls unter Verwendung des CVAE formuliert: Ψ = T ( Θ , v ) ,
    Figure DE102022120595A1_0011
    ( T , R ) = EgoToGlobal ( Ψ ) ,
    Figure DE102022120595A1_0012
    wobei der globalen Trajektorienprädiktor T dem CVAE-Decodierer und v dem latenten Code für den CVAE entspricht. In Gleichung (3) ist die sofortige Ausgabe des globalen Trajektorienprädiktor T eine egozentrische Trajektorie Ψ = (ψ1, ... ,ψm), die durch Ausgestaltung in eine globale Trajektorie (T ,R) unter Verwendung einer Konvertierungsfunktion EgoToGlobale konvertiert werden kann.
  • Egozentrische Trajektoriendarstellung
  • Die egozentrische Trajektorie Ψ ist lediglich eine alternative Darstellung der globalen Trajektorie (T, R). Sie konvertiert die globale Trajektorie in relative lokale Differenzen und stellt Rotationen und Translationen in den Heading-Koordinaten dar (y-Achse ausgerichtet mit dem Heading, d.h., die der Person zugewandten Richtung). Auf diese Weise ist die egozentrische Trajektoriendarstellung invariant von der absoluten xy-Translation und Heading. Sie ist für die Vorhersage von langen Trajektorien geeigneter, da das Netzwerk lediglich die lokale Trajektorienänderung von jedem Frame anstatt des potentiell großen globalen Trajektorienversatzes ausgeben muss.
  • Die Konversion von der globalen Trajektorie in die egozentrische Trajektorie wird durch eine andere Funktion gegeben: Ψ = GlobalToEgo(T, R), welche die Umkehrung der Funktion EgoToGlobal ist. Insbesondere wird die egozentrische Traj ektorie ψt = (δxt, δyt, zt, δϕt, ηt) zum Zeitpunkt t berechnet als: ( δ x t , δ y t ) = ToHeading ( τ t x y , , τ t 1 x y ) ,
    Figure DE102022120595A1_0013
    z t = τ t z ,   δ ϕ t = γ t ϕ γ t 1 ϕ ,
    Figure DE102022120595A1_0014
    η t = ToHeading ( γ t ) ,
    Figure DE102022120595A1_0015
    wobei τ t x y
    Figure DE102022120595A1_0016
    die xy-Komponente der Translation τt ist, τ t z
    Figure DE102022120595A1_0017
    die zKomponente (Höhe) von τt ist, γ t ϕ
    Figure DE102022120595A1_0018
    der Heading-Winkel der Rotation γt und ToHeading eine Funktion ist, die Translationen oder Rotationen in die Heading-Koordinaten konvertiert, durch welche die Heading γ t ϕ
    Figure DE102022120595A1_0019
    definiert wird. Als eine Ausnahme werden (δx0, δy0) und δϕ0 verwendet, um die anfängliche xy-Translation τ 0 x y
    Figure DE102022120595A1_0020
    and Heading τ 0 ϕ
    Figure DE102022120595A1_0021
    zu speichern. Diese Anfangswerte werden auf den GT während des Trainings und beliebige Werte während der Inferenz eingestellt (weil die Trajektorie aus beliebiger Position und Heading starten kann). Der umgekehrte Prozess von Gleichungen (5)-(7) definiert die umgekehrte Konvertierung EgoToGlobale, die in Gleichung (4) verwendet wird, welche die egozentrische Trajektorie von jedem Frame akkumuliert, um die globale Trajektorie zu erhalten. Um Potentialdriften in der Trajektorie zu korrigieren, kann die globale Trajektorie jeder Person optimiert werden, um mit dem Videonachweis übereinzustimmen, welche ebenfalls die anfängliche Position und Heading (δx0, δy0, δϕ0) der Trajektorie löst.
  • Netzwerk und Training
  • Der Trajektorienprädiktor adoptiert eine ähnliche Netzwerkausgestaltung wie der Bewegungseinfüller mit einem Hauptunterschied: LSTMs können für die zeitliche Modellierung anstatt von Transformern verwendet werden, da die Ausgabe von jedem Frame die lokale Trajektorienänderung in der egozentrischen Trajektoriendarstellung ist, die hauptsächlich von der Körperbewegung von nahe gelegenen Frames abhängt und keine weitreichende zeitliche Modellierung erfordert. Die egozentrische Trajektorie und die Verwendung von LSTMs anstatt von Transformern sind für eine genaue Trajektorienvorhersage nützlich. Ein CVAE-Ziel kann verwendet werden, um den Trajektorienprädiktor T zu trainieren: L T = t = 1 m ( τ t τ t ' 2 2 + γ t γ t ' α 2 ) + L KL v ,
    Figure DE102022120595A1_0022
    wobei τ t '  and  γ t '
    Figure DE102022120595A1_0023
    die GT-Translation und Rotation bezeichnen, ⊝ die relative Rotation berechnet, || · ||a den Rotationswinkel berechnet und L KL v
    Figure DE102022120595A1_0024
    die KL-Divergenz zwischen den apriori und aposteriori Verteilungen des latenten CVAE-Codes v ist. AMASS kann verwendet werden, um den Trajektorienprädiktor T zu trainieren.
  • Globale Optimierung
  • Nach Verwendung des generativen Bewegungseinfüllers und globalen Trajektorienprädiktors, wird eine Verdeckungs-freie globale Bewegung Q̂i = (T̂i, R̂i, Θ̂i, B̂i) wird für jede Person in dem Video erhalten. Der globale Trajektorienprädiktor erzeugt jedoch Trajektorien für jede Person unabhängig, was mit den Videonachweisen nicht konsistent sein kann. Um dies anzusprechen, optimiert ein globaler Optimierungsprozess die globalen Trajektorien aller Leute und die extrinsischen Kameraparameter gemeinsam, um mit den Videonachweisen übereinzustimmen, wie beispielsweise 2D-Schlüsselpunkten. Die finale Ausgabe der globalen Optimierung und des Frameworks ist Q̌i = (Ťi, Ři, Θ̌i, B̌i), wobei (Θ̌i,B̌i) = (Θ̂i,B̂i), d.h., die Verdeckungs-freie Körperbewegung und Formen, direkt aus den vorherigen Stufen verwendet werden.
  • Optimierungsvariablen
  • Der erste Satz von Variablen, der zu optimieren ist, ist die egozentrische Darstellung { Ψ i } i = 1 N
    Figure DE102022120595A1_0025
    der globalen Trajektorien { ( T i , R i ) } i = 1 N .
    Figure DE102022120595A1_0026
    Die egozentrische Darstellung wird verwendet, da sie Korrekturen der Translation und Heading bei einem Frame erlaubt, um sie zu allen zukünftigen Frames auszubreiten. Der zweite Satz von Optimierungsvariablen sind die extrinsischen Kameraparameter C = (C1, ... , CT), wobei Ct ∈ ℝ4×4 die Kamera-extrinsische Matrix bei Frame t des Videos ist.
  • Energiefunktion
  • Die Energiefunktion, die wir anstreben, wird definiert als E ( { Ψ i } i = 1 N , C ) = λ 2 D E 2 D + λ traj E traj   + λ reg E reg + λ cam E cam + λ pen E pen ,
    Figure DE102022120595A1_0027
    wobei fünf Energieterms mit ihren entsprechenden Koeffizienten λ2D, λtraj, λreg, λcam und λpen verwendet werden. Der ersten Ausdruck E2D misst die Fehler zwischen der 2DProjektion x t i
    Figure DE102022120595A1_0028
    der optimierten 3D-Schlüsselpunkte x t i J × 3
    Figure DE102022120595A1_0029
    der geschätzten 2D-Schlüsselpunkte x ˜ t i
    Figure DE102022120595A1_0030
    von einem Schlüsselpunktdetektor: E 2 D = 1 N T J i = 1 N t = 1 T V t i x t i x ˜ t i F 2 ,
    Figure DE102022120595A1_0031
    x t i = Π ( X t i , C t , K ) ,   X t i = J ( τ t i , γ t i , θ t i , β t i ) ,
    Figure DE102022120595A1_0032
    wobei V t i
    Figure DE102022120595A1_0033
    die Sichtbarkeit einer Person i bei Frame t ist, Π die Kameraprojektion mit extrinsischen Ct ist und die approximierte Intrinsik K und X t i
    Figure DE102022120595A1_0034
    unter Verwendung des gemeinsamen Regressors
    Figure DE102022120595A1_0035
    des SMPL aus der optimierten globalen Pose q t i = ( τ t i , γ t i , θ t i , β t i ) Q i
    Figure DE102022120595A1_0036
    berechnet wird. Der zweite Ausdruck Etraj misst die Differenz zwischen der optimierten globalen Trajektorie (Ťi,i), die in den Kamerakoordinaten betrachtet wird, und der Trajektorie (T̃i, R̃i) , die von dem Posenschätzer (z.B., KAMA) in Stufe I ausgegeben wird: E traj = 1 N T i = 1 N t = 1 T V t i ( Γ ( γ t i , C   t ) γ ˜ t i a 2   + w t Γ ( τ t i , C   t ) τ ˜ t i 2 2 ) ,
    Figure DE102022120595A1_0037
    wobei die Funktion Γ(·, Ct) die globale Rotation γ t i
    Figure DE102022120595A1_0038
    oder Translation τ t i
    Figure DE102022120595A1_0039
    in die durch Ct definierten Kamerakoordinaten transformiert, und wt ein Gewichtungsfaktor für den Translationsausdruck ist.
  • Der dritte Ausdruck Ereg reguliert die egozentrische Trajektorie Ψ̌i, um nahe der Ausgabe Ψ̂i des Trajektorienprädiktors zu bleiben: E reg = 1 N T i = 1 N t = 1 T w ψ ( ψ t i ψ ^ t i ) 2 2 ,
    Figure DE102022120595A1_0040
    wobei ° das elementweise Produkt bezeichnet und wψ, ein Gewichtungsvektor für jedes Element innerhalb der egozentrischen Trajektorie ist. Als eine Ausnahme werde die anfängliche xy-Position und Heading ( δ x 0 i , δ y 0 i , δ ϕ 0 i )
    Figure DE102022120595A1_0041
    jeder Person nicht regularisiert, da sie von dem Video gefolgert werden müssen.
  • Der vierte Ausdruck Ecam misst die Glattheit des Kameraparameters C und die Aufrichtung der Kamera: E cam = 1 T t = 1 T ( C   t y , C Y )   + 1 T 1 t = 1 T 1 C   t + 1 γ C   t γ a 2 + C   t + 1 τ C   t τ 2 2 ,
    Figure DE102022120595A1_0042
    Wobei 〈·, 〉 das Skalarprodukt bezeichnet, C t y
    Figure DE102022120595A1_0043
    der +y Vektor der Kamera Ct und Y die globale Aufwärtsrichtung ist. C t γ
    Figure DE102022120595A1_0044
    und C t τ
    Figure DE102022120595A1_0045
    bezeichnen die Rotation und Translation der Kamera Ct.
  • Der finale Ausdruck Epen ist ein vorzeichenbehaftete Distanzfeld(SDF)-basierte Penetrationsverlust zwischen Personen.
  • Eine Vorgehensweise wird bereitgestellt, menschliche 3D-Maschen in konsistenten globalen Koordinaten aus Videos wiederherzustellen, die von einer dynamischen Kamera aufgenommen wurden. Um dies zu erreichen, spricht ein neuartiger Transformer-basierter generativer Bewegungseinfüller schwere Verdeckungen an, die häufig mit dynamischen Kameras kommen. Um Ambiguität in der gemeinsame Rekonstruktion von globalen menschlichen Bewegungen und Kameraposen aufzulösen, werden globale menschliche Trajektorien aus ihren lokalen Körperbewegungen vorhergesagt. Schließlich verfeinert ein globales Optimierungs-Framework die vorhergesagten Trajektorien und verwendet sie als Anker zur Kameraoptimierung.
  • Obwohl vorstehend verschiedene Ausführungsformen beschrieben wurden, sind diese nur als Beispiele und nicht als Beschränkung zu verstehen. Somit sind Umfang und Gültigkeitsbereich einer bevorzugten Ausführungsform nicht durch eine der oben beschriebenen beispielhaften Ausführungsformen begrenzt, sondern nur in Übereinstimmung mit den nachfolgenden Ansprüchen und deren Äquivalenten zu definieren.
  • Die Offenbarung kann im allgemeinen Kontext von Computercode oder maschinell verwendbaren Anweisungen beschrieben werden, einschließlich computerausführbarer Anweisungen, wie zum Beispiel Programmmodule, welche von einem Computer oder einer anderen Maschine, wie zum Beispiel einem persönlichen Datenassistenten oder einem anderen Handgerät, ausgeführt werden. Generell beziehen sich Programmmodule, einschließlich Routinen, Programme, Objekte, Komponenten, Datenstrukturen usw., auf Codes, welche bestimmte Aufgaben ausführen oder bestimmte abstrakte Datentypen implementieren. Die Erfindung kann in einer Vielzahl von Systemkonfigurationen, einschließlich Handheld-Geräten, Unterhaltungselektronik, Allzweckcomputern, spezielleren Datenverarbeitungsgeräten usw., praktisch eingesetzt werden. Die Erfindung kann auch in verteilten Computerumgebungen betrieben werden, in denen Aufgaben durch ferngesteuerte Geräte, welche über ein Kommunikationsnetz verbunden sind, ausgeführt werden.
  • Wie hier verwendet, sollte eine Rezitation von „und/oder“ mit Bezug auf zwei oder mehr Elemente so interpretiert werden, dass sie nur ein Element oder eine Kombination von Elementen bedeuten. Zum Beispiel kann „Element A, Element B und/oder Element C“ nur Element A, nur Element B, nur Element C, Element A und Element B, Element A und Element C, Element B und Element C oder Elemente A, B und C umfassen. Zudem kann „zumindest/mindestens eines von Element A oder Element B“ mindestens eines von Element A, mindestens eines von Element B oder mindestens eines von Element A und mindestens eines von Element B umfassen. Ferner kann „zumindest/mindestens eines der Elemente A und B“ mindestens eines von Element A, mindestens eines von Element B oder mindestens eines von Element A und mindestens eines von Element B umfassen.
  • Der Gegenstand der vorliegenden Erfindung wird hier mit einer Genauigkeit beschrieben, um gesetzlich festgelegte Anforderungen zu erfüllen. Die Beschreibung selbst soll jedoch den Umfang dieser Erfindung nicht einschränken. Vielmehr haben die Erfinder in Betracht gezogen, dass der beanspruchte Gegenstand auch auf andere Weise verkörpert werden könnte, um verschiedene Schritte oder Kombinationen von Schritten, die den in diesem Dokument beschriebenen ähnlich sind, in Verbindung mit anderen gegenwärtigen oder zukünftigen Technologien zu umfassen. Obwohl die Termini „Schritt“ und/oder „Block“ hier verwendet werden können, um verschiedene Elemente der angewandten Verfahren zu bezeichnen, sollten die Termini nicht so interpretiert werden, dass sie eine bestimmte Reihenfolge unter oder zwischen den verschiedenen hier offenbarten Schritten implizieren, es sei denn, die Reihenfolge der einzelnen Schritte ist ausdrücklich beschrieben.

Claims (20)

  1. Verfahren, umfassend bei einer Vorrichtung: Durchführen einer Bewegungseinfüllung für ein oder mehrere verfolgte Objekte innerhalb eines Videos; Vorhersagen einer globalen Trajektorie für jeweils das eine oder mehrere verfolgte Objekte innerhalb des Videos; und für das eine oder mehrere verfolgte Objekte innerhalb des Videos die eingefüllte Bewegung für das verfolgte Objekt mit der globalen Trajektorie für das verfolgte Objekt kombinieren, um eine eingefüllte globale Bewegung für das verfolgte Objekt zu bestimmen.
  2. Verfahren gemäß Anspruch 1, wobei das Video monokular ist.
  3. Verfahren gemäß Anspruch 1 oder 2, wobei das eine oder mehrere verfolgte Objekte jeweils ein oder mehrere fehlende Abschnitte aufweisen, die sich aus der Verdeckung der verfolgten Objekte in einem oder mehreren Frames des Videos ergeben.
  4. Verfahren gemäß einem vorangehenden Anspruch, wobei das eine oder mehrere verfolgte Objekte jeweils ein oder mehrere fehlende Abschnitte aufweisen, die sich aus der Trunkierung der verfolgten Objekte in einem oder mehreren Frames des Videos ergeben.
  5. Verfahren gemäß einem vorangehenden Anspruch, wobei das eine oder mehrere verfolgte Objekte jeweils ein oder mehrere fehlende Abschnitte aufweisen, die sich daraus ergeben, dass sich das Objekt aus einer Szene in ein oder mehrere Frames des Videos bewegt.
  6. Verfahren gemäß einem vorangehenden Anspruch, wobei als Antwort auf das Identifizieren eines oder mehrerer fehlender Abschnitte für eines der verfolgten Objekte innerhalb eines vorbestimmten Frames des Videos vorherige Posen- und Formdaten für das verfolgte Objekt innerhalb vorheriger Frames des Videos identifiziert werden.
  7. Verfahren gemäß Anspruch 6, wobei die vorherigen Posen- und Formdaten für das verfolgte Objekt in eine trainierte neuronale Netzwerkarchitektur eingegeben werden, wobei die trainierte neuronale Netzwerkarchitektur Posen- und Formdaten für das Objekt innerhalb des vorbestimmten Frames des Videos vorhersagt und die vorhergesagten Posen- und Formdaten verwendet, um die fehlenden Abschnitte für das verfolgte Objekt innerhalb des vorbestimmten Frames des Videos einzufüllen.
  8. Verfahren gemäß einem vorangehenden Anspruch, wobei eine Translation und globale Orientierung von dem einen oder mehreren verfolgten Objekten innerhalb des Videos vor dem Durchführen der Bewegungseinfüllung entfernt wird.
  9. Verfahren gemäß Anspruch 8, wobei nachdem die Bewegungseinfüllung für jeweils des einen oder mehreren verfolgten Objekten innerhalb des Videos durchgeführt wird, eine globale Trajektorie für jeweils des einen oder mehreren verfolgten Objekten vorhergesagt wird, unter Verwendung eingefüllte lokalen Bewegung für jeweils des einen oder mehreren verfolgten Objekte.
  10. Verfahren gemäß einem vorangehenden Anspruch, wobei die eingefüllte globale Bewegung mit Bezug auf ein globales Koordinatensystem bestimmt wird.
  11. Verfahren gemäß einem vorangehenden Anspruch, wobei ein oder mehrere Kameraparameter während der Bestimmung der eingefüllten globalen Bewegung berücksichtigt werden.
  12. System, umfassend: einen Hardwareprozessor einer Vorrichtung, der konfiguriert ist, um: eine Bewegungseinfüllung für ein oder mehrere verfolgte Objekte innerhalb eines Videos durchzuführen; eine globale Trajektorie für jeweils das eine oder mehrere verfolgte Objekte innerhalb des Videos vorherzusagen; und für das eine oder mehrere verfolgte Objekte innerhalb des Videos die eingefüllte Bewegung für das verfolgte Objekt mit globaler Trajektorie für das verfolgte Objekt zu kombinieren, um die eingefüllte globale Bewegung für das verfolgte Objekt zu bestimmen.
  13. System gemäß Anspruch 12, wobei das Video monokular ist.
  14. System gemäß Anspruch 12 oder 13, wobei das eine oder mehrere verfolgte Objekte jeweils einen oder mehrere fehlende Abschnitte aufweisen, die sich aus der Verdeckung der verfolgten Objekte in einem oder mehreren Frames des Videos ergeben.
  15. System gemäß einem der Ansprüche 12 bis 14, wobei das eine oder mehrere verfolgte Objekte jeweils ein oder mehrere fehlende Abschnitte aufweisen, die sich aus der Trunkierung der verfolgten Objekte in einem oder mehreren Frames des Videos ergeben.
  16. System gemäß einem der Ansprüche 12 bis 15, wobei das eine oder mehrere verfolgte Objekte jeweils ein oder mehrere fehlende Abschnitte aufweisen, die sich daraus ergeben, dass sich das Objekt aus einer Szene in ein oder mehrere Frames des Videos bewegt.
  17. System gemäß einem der Ansprüche 12 bis 16, wobei als Antwort auf das Identifizieren eines oder mehrerer fehlender Abschnitte für eines der verfolgten Objekte innerhalb eines vorbestimmtes Frames des Videos vorherige Posen- und Formdaten für das verfolgte Objekt innerhalb vorheriger Frames des Videos identifiziert werden.
  18. System gemäß Anspruch 17, wobei die vorherigen Posen- und Formdaten für das verfolgte Objekt in eine trainierte neuronale Netzwerkarchitektur eingegeben werden, wobei die trainierte neuronale Netzwerkarchitektur Posen- und Formdaten für das Objekt innerhalb des vorbestimmten Frames des Videos vorhersagt und die vorhergesagten Posen- und Formdaten verwendet, um die fehlenden Abschnitte für das verfolgte Objekt innerhalb des vorbestimmten Frames des Videos einzufüllen.
  19. Nichttransitorisches computerlesbares Speicherungsmedium, das Anweisungen speichert, die, wenn durch einen Prozessor einer Vorrichtung ausgeführt, den Prozessor veranlassen, die Vorrichtung zu veranlassen: eine Bewegungseinfüllung für ein oder mehrere verfolgte Objekte innerhalb eines Videos durchzuführen; eine globale Trajektorie für jeweils des einen oder mehreren verfolgten Objekten innerhalb des Videos vorherzusagen; und für das eine oder mehrere verfolgte Objekte innerhalb des Videos die eingefüllte Bewegung für das verfolgte Objekt mit der globalen Trajektorie für das verfolgte Objekt kombinieren, um die eingefüllte globale Bewegung für das verfolgte Objekt zu bestimmen.
  20. Computerlesbares Speicherungsmedium gemäß Anspruch 19, wobei: als Antwort auf das Identifizieren eines oder mehrerer fehlender Abschnitte für eines der verfolgten Objekte innerhalb eines vorbestimmte Frames des Videos vorherige Posen- und Formdaten für das verfolgte Objekt innerhalb vorheriger Frames des Videos identifiziert werden, und die vorherigen Posen- und Formdaten für das verfolgte Objekt in eine trainierte neuronale Netzwerkarchitektur eigegeben werden, wobei die trainierte neuronale Netzwerkarchitektur Posen- und Formdaten für das Objekt innerhalb des vorbestimmten Frames des Videos vorhersagt und die vorhergesagten Posen- und Formdaten verwendet, um die fehlenden Abschnitte für das verfolgte Objekt innerhalb des vorbestimmten Frames des Videos einzufüllen.
DE102022120595.9A 2021-08-30 2022-08-16 Durchführen von verdeckungs-bewusster globaler 3d-posen- und formschätzung von gelenkigen objekten Pending DE102022120595A1 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202163238696P 2021-08-30 2021-08-30
US63/238,696 2021-08-30
US17/584,213 US20230070514A1 (en) 2021-08-30 2022-01-25 Performing occlusion-aware global 3d pose and shape estimation of articulated objects
US17/584,213 2022-01-25

Publications (1)

Publication Number Publication Date
DE102022120595A1 true DE102022120595A1 (de) 2023-03-02

Family

ID=85175536

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102022120595.9A Pending DE102022120595A1 (de) 2021-08-30 2022-08-16 Durchführen von verdeckungs-bewusster globaler 3d-posen- und formschätzung von gelenkigen objekten

Country Status (3)

Country Link
US (1) US20230070514A1 (de)
CN (1) CN115731607A (de)
DE (1) DE102022120595A1 (de)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117496091B (zh) * 2023-12-28 2024-03-15 西南石油大学 一种基于局部纹理的单视图三维重建方法

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10198624B2 (en) * 2016-02-18 2019-02-05 Pinscreen, Inc. Segmentation-guided real-time facial performance capture
US20190130583A1 (en) * 2017-10-30 2019-05-02 Qualcomm Incorporated Still and slow object tracking in a hybrid video analytics system
US11045705B2 (en) * 2019-03-19 2021-06-29 NEX Team Inc. Methods and systems for 3D ball trajectory reconstruction
US11315274B2 (en) * 2019-09-20 2022-04-26 Google Llc Depth determination for images captured with a moving camera and representing moving features
US11074438B2 (en) * 2019-10-01 2021-07-27 Toyota Research Institute, Inc. Disentangling human dynamics for pedestrian locomotion forecasting with noisy supervision
WO2021097126A1 (en) * 2019-11-12 2021-05-20 Geomagical Labs, Inc. Method and system for scene image modification

Also Published As

Publication number Publication date
CN115731607A (zh) 2023-03-03
US20230070514A1 (en) 2023-03-09

Similar Documents

Publication Publication Date Title
DE102019102279A1 (de) Erzeugung von synthetischen Bildern zum Trainieren eines Neuronal-Netzwerkmodells
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
DE102019130889A1 (de) Schätzung der tiefe eines mit einer monokularen rgb-kamera aufgenommenen videodatenstroms
DE102019106123A1 (de) Dreidimensionale (3D) Posenschätzung von Seiten einer monokularen Kamera
DE102018132069A1 (de) Äquivariante Orientierungspunkt-Transformation für Orientierungspunkt-Lokalisierung
DE102021119726A1 (de) Dreidimensionale objektrekonstruktion aus einem video
DE102018121282A1 (de) Differenzierbare rendering-pipeline für inverse graphik
DE102018130924A1 (de) Systeme und Verfahren zur dynamischen Gesichtsanalyse mittels eines rekurrenten neuronalen Netzes
DE102018009315A1 (de) Verfahren tiefgehenden Lernens zum Trennen von Reflexions- und Übertragungsbildern, die an einer halbreflektierenden Oberfläche in einem Computerbild einer Realweltszene sichtbar sind
DE102019102009A1 (de) Reduzierung des rauschens während des renderings durch parallele path-space-filterung unter verwendung von hashing
DE102019103310A1 (de) Schätzer for einen optimalen betriebspunkt für hardware, die unter einer beschränkung der gemeinsam genutzten leistung/wärme arbeitet
DE102018124211A1 (de) Lernbasierte Kameraposenschätzung von Bildern einer Umgebung
DE102021105249A1 (de) Mikrotraining zur iterativen verfeinerung eines neuronalen netzes mit wenigen anpassungen
DE102018116552A1 (de) Sakkadische umleitung zur fortbewegung von virtueller realität
DE102018108314A1 (de) Durchführen einer autonomen Pfadnavigation unter Verwendung tiefer neuronaler Netzwerke
DE102022100360A1 (de) Framework für maschinelles lernen angewandt bei einer halbüberwachten einstellung, um instanzenverfolgung in einer sequenz von bildframes durchzuführen
DE102021121109A1 (de) Wiederherstellung dreidimensionaler modelle aus zweidimensionalen bildern
DE102020121601A1 (de) Persistenter Notizblockspeicher zum Datenaustausch zwischen Programmen
DE102018114799A1 (de) Halbüberwachtes lernen zur orientierungspunktlokalisierung
DE102019106996A1 (de) Darstellen eines neuronalen netzwerks unter verwendung von pfaden innerhalb des netzwerks zum verbessern der leistung des neuronalen netzwerks
DE102019134020A1 (de) Dekompprimierungstechniken zur verarbeitung komprimierter daten, die für künstliche neuronale netzwerke geeignet sind
DE102022121509A1 (de) Einzelbild-inversrendering
DE112019001978T5 (de) Verbesserung des realismus von szenen mit wasseroberflächen beim rendern

Legal Events

Date Code Title Description
R012 Request for examination validly filed