DE102021130031A1 - Erscheinungsbildgesteuerte automatische dreidimensionale modellierung - Google Patents

Erscheinungsbildgesteuerte automatische dreidimensionale modellierung Download PDF

Info

Publication number
DE102021130031A1
DE102021130031A1 DE102021130031.2A DE102021130031A DE102021130031A1 DE 102021130031 A1 DE102021130031 A1 DE 102021130031A1 DE 102021130031 A DE102021130031 A DE 102021130031A DE 102021130031 A1 DE102021130031 A1 DE 102021130031A1
Authority
DE
Germany
Prior art keywords
model
images
computer
data
implemented method
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
DE102021130031.2A
Other languages
English (en)
Inventor
Carl Jakob Munkberg
Jon Niklas Theodor Hasselgren
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 DE102021130031A1 publication Critical patent/DE102021130031A1/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
    • G06T1/00General purpose image data processing
    • G06T1/20Processor architectures; Processor configuration, e.g. pipelining
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T13/00Animation
    • G06T13/203D [Three Dimensional] animation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/10Geometric effects
    • G06T15/20Perspective computation
    • G06T15/205Image-based rendering
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/50Depth or shape recovery
    • G06T7/55Depth or shape recovery from multiple images
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2200/00Indexing scheme for image data processing or generation, in general
    • G06T2200/12Indexing scheme for image data processing or generation, in general involving antialiasing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2210/00Indexing scheme for image generation or computer graphics
    • G06T2210/36Level of detail
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2215/00Indexing scheme for image rendering
    • G06T2215/16Using real world measurements to influence rendering
    • 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/2021Shape modification
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02TCLIMATE CHANGE MITIGATION TECHNOLOGIES RELATED TO TRANSPORTATION
    • Y02T10/00Road transport of goods or passengers
    • Y02T10/10Internal combustion engine [ICE] based vehicles
    • Y02T10/40Engine management systems

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Graphics (AREA)
  • Computer Hardware Design (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Architecture (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Computing Systems (AREA)
  • Geometry (AREA)
  • Image Generation (AREA)

Abstract

Eine erscheinungsbildgesteuerte automatische dreidimensionale (3D) Modellierung ermöglicht die Optimierung eines 3D-Modells, das die Form und das Erscheinungsbild einer bestimmten 3D-Szene oder Objekts aufweist. Dreiecksgitter und Shading-Modelle können beruhend auf Referenzbildern des Referenz-3D-Modells gemeinsam optimiert werden, um dem Erscheinungsbild eines Referenz-3D-Modells zu entsprechen. Im Vergleich zum Referenz-3D-Modell ist das optimierte 3D-Modell ein 3D-Modell mit niedrigerer Auflösung, das in kürzerer Zeit gerendert werden kann. Genauer gesagt kann das optimierte 3D-Modell im Vergleich zum Referenz-3D-Modell weniger geometrische Primitive aufweisen. Im Gegensatz zum herkömmlichen inversen Rendering oder Analyse-durch-Synthese-Modellierungswerkzeugen werden die Darstellungen der Form und des Erscheinungsbilds des 3D-Modells automatisch erzeugt, die, wenn gerendert, mit den Referenzbildern übereinstimmen. Die erscheinungsbildgesteuerte automatische 3D-Modellierung weist eine Reihe von Anwendungen auf, die eine erscheinungsbilderhaltende Vereinfachung extrem komplexer Assets, die Konvertierung zwischen unterschiedlichen Rendering-Systemen und sogar die Konvertierung zwischen unterschiedlichen geometrischen Szenendarstellungen umfassen.

Description

  • BACKGROUND
  • Das Synthetisieren von Bildern von Objekten mit komplexen Formen und Erscheinungsbildern ist ein zentrales Ziel in der Computergrafik. Das Problem kann in das Auswählen geeigneter Darstellungen für die Form und das Erscheinungsbild der Objekte, die Modellierung einer dreidimensionalen (3D) Szene gemäß den gewählten Darstellungen und schließlich das effiziente Rendering der Szene aufgegliedert werden. Das Erzeugen eines Modells der Form und des Erscheinungsbilds für eine bestimmte 3D-Szene ist grundsätzlich ein inverses Problem: Suchen einer Darstellung, die, wenn gerendert, zu einem zweidimensionalen (2D) Bild führt, das wie gewünscht erscheint. Über mehrere Iterationen wird inverses Rendering verwendet, um eine Form, eine Beleuchtung und Materialeigenschaften eines 3D-Modells beruhend auf 2D-Bildern iterativ zurückzugewinnen. Inverses Rendering ist anspruchsvoll, da die Operationen, die zum Rendem des 3D-Modells verwendet werden, um die 2D-Bilder zu erzeugen, nicht einfach umgekehrt ausgeführt werden können, um das 3D-Modell aus den 2D-Bildern zu erzeugen. Daher drehen herkömmliche Modellierungswerkzeuge das Problem um: Anstatt den Benutzer mit Mitteln zu versehen, das gewünschte Bild zu spezifizieren, stellen herkömmliche Modellierungswerkzeuge Werkzeuge zum Editieren der Szenendarstellung bereit, wobei sie es dem Modellierer überlassen, die Szenendarstellung manuell iterativ zu modifizieren, um sein Ziel zu erreichen. Es besteht ein Bedarf, diese Probleme und/oder andere mit dem Stand der Technik verbundene Probleme anzugehen.
  • ZUSAMMENFASSUNG
  • Ausführungsformen der vorliegenden Offenbarung betreffen eine erscheinungsbildgesteuerte automatische dreidimensionale (3D) Modellierung. Es werden Systeme und Verfahren offenbart, die eine Optimierung eines 3D-Modells ermöglichen, das die Form und das Erscheinungsbild einer bestimmten 3D-Szene oder Objekts aufweist. In einer Ausführungsform werden Dreiecksgitter und Shading-Modelle gemeinsam optimiert, um mit dem Erscheinungsbild von Referenz-3D-Modellen beruhend auf Referenzbildern der Referenz-3D-Modelle übereinzustimmen. Im Vergleich zum Referenz-3D-Modell ist das optimierte 3D-Modell ein 3D-Modell mit niedrigerer Auflösung, das in kürzerer Zeit gerendert werden kann. Genauer gesagt kann das optimierte 3D-Modell im Vergleich zum Referenz-3D-Modell weniger geometrische Primitive enthalten. Die erscheinungsbildgesteuerte automatische 3D-Modellierung weist eine Reihe von Anwendungen auf, die eine erscheinungsbilderhaltende Vereinfachung extrem komplexer Assets, eine Konvertierung zwischen unterschiedlichen Rendering-Systemen, und sogar die Konvertierung zwischen unterschiedlichen geometrischen Szenendarstellungen umfassen.
  • Im Gegensatz zu den herkömmlichen inversen Rendering- oder Analyse-durch-Synthese-Modellierungswerkzeugen werden die Darstellungen der Form und des Erscheinungsbilds des 3D-Modells automatisch erzeugt, die, wenn gerendert, mit den Referenzbildern übereinstimmen. Mit anderen Worten muss der Modellierer die Szenendarstellung nicht iterativ manuell modifizieren, um ein 3D-Modell zu optimieren. In einer Ausführungsform beruht die Formoptimierung des 3D-Modells auf einer Verformung eines vorhandenen Dreiecksgitters, wobei sie sich auf mehrere Referenzbilder stützt, um eine Rekonstruktion mit höherer Qualität zu ermöglichen, die Materialien in der Darstellung enthält. Im Gegensatz zu Ansätzen, die ein neuronales Netz trainieren, um ein 3D-Modell mit höherer Auflösung in ein 3D-Modell mit niedrigerer Auflösung umzuwandeln, wird die Darstellung beruhend auf Bildraumdifferenzen direkt erzeugt.
  • Es werden ein Verfahren, ein computerlesbares Medium und ein System zur erscheinungsbildgesteuerten automatischen 3D-Modellierung offenbart. Ein Anfangs-3D-Modell wird verarbeitet, um einen Satz von Bildern für Umgebungsbedingungen zu erzeugen, die die Kameraposition und/oder die Lichtposition spezifizieren. Ein Referenz-3D-Modell wird gerendert, um einen Satz von Referenzbildern für die Umgebungsbedingungen zu erzeugen, und beruhend auf dem Satz der Bilder und dem Satz der Referenzbilder werden Bildraumverluste berechnet. Parameter des Anfangs-3D-Modells werden gemäß den Bildraumverlusten aktualisiert, um ein 3D-Modell mit reduzierter Auflösung zu erzeugen, das im Vergleich zu einer Auflösung des Referenz-3D-Modells eine niedrigere Auflösung aufweist.
  • Figurenliste
  • Die vorliegenden Systeme und Verfahren zur erscheinungsbildgesteuerten automatischen 3D-Modellierung werden unten unter Bezugnahme auf beigefügten Zeichnungsfiguren im Detail beschrieben. Es zeigen:
    • 1A stellt ein konzeptionelles Diagramm eines erscheinungsbildgesteuerten automatischen 3D-Modellierungssystems gemäß einer Ausführungsform dar.
    • 1B stellt ein Flussdiagramm eines Verfahrens zur erscheinungsbildgesteuerten automatischen 3D-Modellierung dar, das zur Verwendung beim Implementieren einiger Ausführungsformen der vorliegenden Offenbarung geeignet ist.
    • 1C stellt ein Diagramm eines anderen erscheinungsbildgesteuerten automatischen 3D-Modellierungssystems dar, das zur Verwendung beim Implementieren einiger Ausführungsformen der vorliegenden Offenbarung geeignet ist.
    • 2A stellt ein konzeptionelles Diagramm eines Normalenvektor- und Displacement-Mapping für ein 3D-Modell gemäß einer Ausführungsform dar.
    • 2B stellt ein konzeptionelles Diagramm eines Normalenvektors und eines neuen Beleuchtungsszenarios für ein 3D-Modell gemäß einer Ausführungsform dar.
    • 2C stellt ein konzeptionelles Diagramm einer Erscheinungsbild-Vorfilterung für ein 3D-Modell gemäß einer Ausführungsform dar.
    • 2D stellt ein konzeptionelles Diagramm einer Vereinfachung der Aggregatgeometrie für ein 3D-Modell gemäß einer Ausführungsform dar.
    • 3 stellt ein Blockdiagramm der in den 1A und 1C gezeigten Rendering-Pipeline dar, die zur Verwendung beim Implementieren einiger Ausführungsformen der vorliegenden Offenbarung geeignet ist.
    • 4 stellt eine beispielhafte Parallelverarbeitungseinheit dar, die zur Verwendung beim Implementieren einiger Ausführungsformen der vorliegenden Offenbarung geeignet ist.
    • 5A ist ein konzeptionelles Diagramm eines unter Verwendung der PPU der 4 implementierten Verarbeitungssystems, das zur Verwendung beim Implementieren einiger Ausführungsformen der vorliegenden Offenbarung geeignet ist.
    • 5B stellt ein exemplarisches System dar, in dem die verschiedene Architektur und/oder Funktionalität der verschiedenen vorhergehenden Ausführungsformen implementiert werden kann.
    • 5C stellt Komponenten eines exemplarischen Systems, das verwendet werden kann, um maschinelles Lernen zu trainieren und zu nutzen, in mindestens einer Ausführungsform dar.
    • 6A ist ein konzeptionelles Diagramm einer durch die PPU der 4 implementierten Grafikverarbeitungspipeline, die zur Verwendung beim Implementieren einiger Ausführungsformen der vorliegenden Offenbarung geeignet ist.
    • 6B stellt ein exemplarisches Spiel-Streaming-System dar, das zur Verwendung beim Implementieren einiger Ausführungsformen der vorliegenden Offenbarung geeignet ist.
  • DETAILLIERTE BESCHREIBUNG
  • Es werden Systeme und Verfahren offenbart, die eine erscheinungsbildgesteuerte automatische 3D-Modellierung betreffen. Das optimierte (vereinfachte) 3D-Modell wird erzeugt, wobei mit einem Anfangs-3D-Modell (z.B. einer Kugel oder einer Version mit reduzierter Auflösung des Referenz-3D-Modells) begonnen wird, und Parameter des Anfangs-3D-Modells werden aktualisiert, um das optimierte 3D-Modell zu erzeugen. Das Anfangs-3D-Modell ist eine Anfangsschätzung zum Beginnen eines Optimierungsprozesses, um das optimierte oder 3D-Modell mit reduzierter Auflösung zu erzeugen. Die Parameter werden beruhend auf Bildraumverlusten (z.B. Pixeldifferenzen) zwischen gerenderten Bildern des Anfangs-3D-Modells und des Referenz-3D-Modells aktualisiert.
  • Ein differenzierbarer Renderer und nichtlineare Optimierungsalgorithmen werden verwendet, um das optimierte 3D-Modell durch Minimieren von Bildraumdifferenzen zu entwickeln, die beruhend auf Bildern des 3D-Modells und Bildern eines Referenz-3D-Modells berechnet werden, die in ähnlichen Betrachtungs- und Beleuchtungsbedingungen gerendert werden. Der Erfolg wird daran gemessen, ob gerenderte Bilder des 3D-Modells im Vergleich zu den gerenderten Bildern des Referenz-3D-Modells visuell identisch oder nahezu identisch sind. Da die einzigen Signale, die die Optimierung antreiben, Unterschiede der gerenderten Bilder sind, ist der Ansatz sehr allgemein und vielseitig: er unterstützt leicht viele unterschiedliche Forward-Rendering-Modelle wie Normal-Mapping, räumlich variierende bidirektionale Reflexionsgradverteilungsfunktionen (BRDFs), Displacement-Mapping und dergleichen. Eine Überwachung nur durch Bilder ist ebenfalls ein Schlüssel zur einfachen Konvertierung zwischen Rendering-Systemen und Szenendarstellungen.
  • In einer Ausführungsform werden die erzeugten 3D-Modelle als Dreiecksgitter mit als Texturen codierten Materialien dargestellt, um sicherzustellen, dass die 3D-Modelle auf moderner Grafikhardware effizient rendern und z.B. von hardwarebeschleunigter Rasterung, Raytracing und gefiltertem Textur-Lookups profitieren. Die automatisch erzeugten 3D-Modelle können zur Gitterdezimierung durch gemeinsame Vereinfachung der Form und des Erscheinungsbilds, optimierte Detaillierungsgrad-Erzeugung für ein reduziertes Aliasing, nahtlose Gitterfilterung, Approximationen der Aggregatgeometrie, gemeinsame Optimierung von Form- und Skinning-Gewichte, um eine reduzierte Geometrie zur Animation zu erzeugen, Konvertierung zwischen Formdarstellungen und Konvertierung zwischen Rendering-Systemen verwendet werden.
  • Da die erscheinungsbildgesteuerte Modellierungstechnik auf inversem Rendering und nichtlinearer Optimierung beruht, lässt sie sich leicht über verschiedene Systeme verallgemeinern, während sie eine gemeinsame Optimierung aller Aspekte der Darstellung ermöglicht, die das endgültige Erscheinungsbild des optimierten 3D-Modells beeinflussen. Insbesondere wird in einer Ausführungsform die Suche nach der Form und dem Erscheinungsbild des 3D-Modells angetrieben, indem gleichzeitig Bildraumfehler und die Form und das Erscheinungsbild optimiert werden. Daher kann sich jede Stufe des Forward-Rendering-Modells (z.B. Geometrie, Shading, Normal-Maps, Displacement-Maps, Transparenz und dergleichen) auf die Effekte spezialisieren, die die bestimmte Stufe am besten erzielt, wobei „verhandelt wird“, wie das gewünschte Ergebnis gemeinsam zu erreichen ist. Als Beispiel findet eine natürliche Arbeitsteilung zwischen der Geometrie (Gitter) und einer Normal-Map statt: ein geometrisches Detail darf sich zwischen den Darstellungen bewegen, indem z.B. durch ein Gitter lokal geglättet wird und ein geometrisches Detail in die Normal-Map oder andere Parameter eines physikalisch basierten Shading-Modells eingebrannt wird.
  • 1A stellt ein konzeptionelles Diagramm eines erscheinungsbildgesteuerten automatischen 3D-Modellierungssystems 150 gemäß einer Ausführungsform dar. Eine Darstellung eines Anfangs-3D-Modells 105 kann eine Geometrie enthalten, die durch Orte von Vertices in 3D-Raum, die ein Gitter (z.B. eine Kugel oder andere geometrische Form) bilden, und Parameter 106 definiert ist. In einer Ausführungsform ist das Gitter durch andere Typen von Primitiven oder Darstellungen definiert. Das Anfangs-3D-Modell 105 wird angepasst, um ein 3D-Modell 110 mit reduzierter Auflösung zu erzeugen. Das 3D-Modell 110 mit reduzierter Auflösung ist im Vergleich zu einem Referenz-3D-Modell hinsichtlich der Komplexität und/oder der geometrischen Auflösung (z.B. Anzahl der Primitiven und/oder Vertices) reduziert. In einer Ausführungsform ist die Anzahl der Primitiven, die das 3D-Modell 110 mit reduzierter Auflösung definieren, gleich oder größer als die Anzahl der Primitiven, die das Anfangs-3D-Modell 105 definieren.
  • Die Parameter 106 des Anfangs-3D-Modells 105 und die Parameter 116 des (optimierten) 3D-Modells 110 mit reduzierter Auflösung können Materialien entsprechen, die durch eine räumlich variierende BRDF definiert sind. Die Parameter 106 und 116 können Normalenvektor-Maps, Displacement-Maps, Textur-Maps, Skinning-Gewichten und dergleichen entsprechen. Genauer gesagt können die Textur-Maps Beleuchtungs- und Materialeigenschaften definieren. Eine Anfangs-Oberflächentextur für das Anfangs-3D-Modell 105 kann eine konstante oder randomisierte Farbe sein, und die Farben jedes Texels in der Anfangs-Oberflächentextur werden beruhend auf Bildraumdifferenzen angepasst, um eine Textur für das 3D-Modell 110 mit reduzierter Auflösung zu erzeugen.
  • Die Umgebungsbedingungen 108 definieren Kamera- und Lichtpositionen, die durch eine Rendering-Pipeline 100 zur Erzeugung jedes Bilds der Bilder 112 verwendet werden. Die Rendering-Pipeline 100 rendert das Anfangs-3D-Modell 105 gemäß der Umgebungsbedingungen 108, um eines oder mehrere der Bilder 112 zu erzeugen. In einer Ausführungsform ist das Anfangs-3D-Modell 105 eine Basismodell, das verformt wird, um ein spezifisches 3D-Modell zu erzeugen, das jedem der 2D-Bilder in den Bildern 112 entspricht. Referenzbilder 124 werden durch Rendering eines Referenz-3D-Modells gemäß der Umgebungsbedingungen 108 erzeugt. In einer Ausführungsform weisen die Referenzbilder 124 eine Video- oder Animationssequenz des Referenz-3D-Modells während der Bewegung und/oder Verformung auf. Wie in 1A gezeigt, enthalten die Bilder 112 eine Darstellung 115 des gerenderten 3D-Modells, und die Referenzbilder 124 enthalten ein gerendertes Referenz-3D-Modell 125. Während das Anfangs-3D-Modell 105 dem Referenz-3D-Modell nicht sehr ähnlich sein kann, ist das 3D-Modell 110 mit reduzierter Auflösung nach erfolgreicher Optimierung dem Referenz-3D-Modell sehr ähnlich.
  • In einer Ausführungsform ist die Rendering-Pipeline 100 ein differenzierbarer Renderer, und eine oder mehrere Operationen des differenzierbaren Renderers werden unter Verwendung irgendeiner Kombination einer Grafikverarbeitungseinheit- (GPU) Grafikpipeline, von GPU-Allzweckrechenkernen oder auf einer Zentraleinheit (CPU) ausgeführt. Der differenzierbare Renderer ermöglicht Operationen wie das Rastern einer großen Anzahl von Dreiecken, eine Attributinterpolation, gefilterte Textur-Lookups sowie benutzerprogrammierbare Shading- und Geometrieverarbeitung, alles in hohen Auflösungen. Im Gegensatz zu herkömmlichen Rendering-Pipelines sind die durch die Rendering-Pipeline 100 ausgeführten Operationen differenzierbar, und Bildraumverluste 122 können durch die Rendering-Pipeline 100 rückwärts fortgepflanzt werden, um das 3D-Modell 110 mit reduzierter Auflösung iterativ anzupassen. In einigen Ausführungsformen können Rendering-Operationen Rasterung, Raytracing und Path Tracing aufweisen.
  • Ein Bildraumverlusteinheit 120 verarbeitet die Referenzbilder 124 und die Bilder 112, um die Bildraumverluste 122 zu erzeugen. Entsprechende Bilder aus den Bildern 112 und den Referenzbildern 124 für jede bestimmte Umgebungskonfiguration 108 werden verglichen, um die Bildraumverluste 122 zu berechnen. Das Anfangs-3D-Modell 105 wird beruhend auf den Bildraumverlusten 122 angepasst, um das 3D-Modell 110 mit reduzierter Auflösung zu erzeugen. Das 3D-Modell 110 mit reduzierter Auflösung kann weiter verfeinert werden, bis die Bildraumverluste 122 auf einen Zielwert reduziert worden sind. In einer Ausführungsform weist das 3D-Modell 110 mit reduzierter Auflösung ein Gitter auf, das im Vergleich zum Anfangs-3D-Modell 105 eine höhere Auflösung (z.B. mehr Dreiecke) aufweist, jedoch ist die Auflösung des Referenz-3D-Modells im Vergleich zum 3D-Modell 110 mit reduzierter Auflösung eine noch höhere Auflösung. Als Reaktion auf die Bildraumverluste 122 kann das 3D-Modell 110 mit reduzierter Auflösung während der Optimierung weiter tesselliert werden, um die Bildraumverluste 122 zu reduzieren. Wie in 1A gezeigt, wird das 3D-Modell 110 mit reduzierter Auflösung für das bestimmte Beispiel durch 3k Dreiecksprimitive dargestellt, die durch Vertexpositionen und Normalenvektoren definiert sind. Im Gegensatz dazu wird das Referenz-3D-Modell durch 735k Dreiecksprimitive dargestellt. In einer Ausführungsform ist ein Normalenvektor mit jedem Vertex verknüpft, und der Normalenvektor ist senkrecht zu einer Oberfläche des Dreiecksprimitivs am Vertex.
  • Ein schattierter Abschnitt des im 3D-Modell 110 mit reduzierter Auflösung gezeigten Schädels stellt die Tangentenraum-Normalenvektoren dar, die als eine Textur gespeichert sind. Die Normal-Map für das 3D-Modell 110 mit reduzierter Auflösung kann eine viel höhere Auflösung im Vergleich zu der Anzahl der Vertices des 3D-Modells 110 mit reduzierter Auflösung aufweisen, so dass für jedes Dreieck viele unterschiedliche Normalenvektoren aus der Textur über der Oberfläche des Dreiecks gelesen werden können. Die Verwendung einer höheren Auflösung für die Parameter ist ein Schlüsselfaktor für die Erzeugung einer Version mit reduzierter Auflösung eines Referenz-3D-Modells mit vielen Dreiecken. Beispielsweise werden geometrische Details des Gitters in die Normal-Map-Textur eingebrannt (z.B. codiert).
  • Das Ziel des erscheinungsbildgesteuerten automatischen 3D-Modellierungssystems 150 ist es, das 3D-Modell 110 mit reduzierter Auflösung zu erzeugen, das, wenn es gemäß den Umgebungsbedingungen 108 gerendert wird, einen Satz gerenderter Bilder 112 erzeugt, die den Referenzbildern 124 weitestgehend entsprechen. Im Unterschied zu herkömmlichen Modellierungssystemen, die eine Ziel haben, das Referenz-3D-Modell genau zu rekonstruieren, erzeugt das erscheinungsbildgesteuerte automatische 3D-Modellierungssystem 150 das 3D-Modell 110 mit reduzierter Auflösung, das gerendert werden kann, um Bilder zu erzeugen, die weitestgehend Bildern des Referenz-3D-Modells entsprechen. Mit anderen Worten werden die gerenderten Bilder verarbeitet, um die Geometrie zu bestimmen und fein abzustimmen, die das 3D-Modell definiert, und es besteht keine Notwendigkeit, die Darstellung des 3D-Modells 110 mit reduzierter Auflösung mit dem Referenz-3D-Modell zu vergleichen. Tatsächlich kann sich die Darstellung des Referenz-3D-Modells im Vergleich zur Darstellung des 3D-Modells 110 mit reduzierter Auflösung ziemlich unterscheiden.
  • Im Gegensatz zu Algorithmen wie Multi-View Stereo, die mit einer kleinen Anzahl von Referenzbildern auskommen müssen, ist die erscheinungsbildgesteuerte automatische 3D-Modellierung für Anwendungen gut geeignet, bei denen es möglich ist, programmatisch Referenzansichten einer Zielszene unter beliebigen, steuerbaren Betrachtungs- und Beleuchtungsbedingungen zu synthetisieren. Die durch die Bildraumverlusteinheit 122 verwendete Zielfunktion beruht auf visuellen Differenzen, und eine gradientenbasierte Optimierung kann durch differenzierbares Rendering in der Rendering-Pipeline 100 wirksam eingesetzt werden.
  • Es werden nun anschaulichere Informationen in Bezug auf verschiedene optionale Architekturen und Merkmale dargelegt, mit denen der vorhergehende Rahmen für die Wünsche des Benutzers implementiert werden kann. Es sollte dringend beachtet werden, dass die folgenden Informationen zu Veranschaulichungszwecken angegeben werden und in keiner Weise als einschränkend ausgelegt werden sollten. Irgendeines der folgenden Merkmale kann optional mit oder ohne Ausschluss anderer beschriebener Merkmale enthalten sein.
  • 1B stellt ein Flussdiagramm eines Verfahrens 130 zur erscheinungsbildgesteuerten automatischen 3D-Modellierung dar, das zur Verwendung beim Implementieren einiger Ausführungsformen der vorliegenden Offenbarung geeignet ist. Jeder Block des hierin beschriebenen Verfahrens 130 weist einen Rechenprozess auf, der unter Verwendung irgendeiner Kombination von Hardware, Firmware und/oder Software ausgeführt werden kann. Beispielsweise können verschiedene Funktionen durch einen Prozessor ausgeführt werden, der im Speicher gespeicherte Anweisungen ausführt. Das Verfahren kann auch als computerverwendbare Anweisungen ausgeführt werden, die auf Computerspeichermedien gespeichert sind. Das Verfahren kann durch eine eigenständige Anwendung, einen Dienst oder gehosteten Dienst (eigenständig oder in Kombination mit einem anderen gehosteten Dienst), oder ein Plug-In in ein anderes Produkt bereitgestellt werden, um nur einige zu nennen. Außerdem wird das Verfahren 130 beispielhaft in Bezug auf das erscheinungsbildgesteuerte automatische 3D-Modellierungssystem 150 der 1A beschrieben. Jedoch kann dieses Verfahren zusätzlich oder alternativ durch irgendein System, oder irgendeine Kombination von Systemen ausgeführt werden, einschließlich, jedoch nicht beschränkt auf die hierin beschriebenen. Darüber hinaus werden Durchschnittsfachleute verstehen, dass jedes System, das das Verfahren 130 ausführt, innerhalb des Rahmens und Geistes der Ausführungsformen der vorliegenden Offenbarung liegt.
  • Bei Schritt 135 wird ein Anfangs-3D-Modell verarbeitet, um einen Satz von Bildern für Umgebungsbedingungen zu erzeugen, die die Kameraposition und/oder die Lichtposition spezifizieren. In einer Ausführungsform ist das Anfangs-3D-Modell das Anfangs-3D-Modell 105, das durch die Rendering-Pipeline 100 verarbeitet wird. In einer Ausführungsform weist das Anfangs-3D-Modell eine Kugel auf. In einer Ausführungsform ist das Anfangs-3D-Modell eine latente Darstellung, die unbeobachtet ist und aus Bildraumdifferenzen abgeleitet wird. In einer Ausführungsform weist die latente Darstellung ein Dreiecksgitter und einen Satz von Texturen auf, die räumlich variierendes Material aus einem physikalisch basierten Shading-Modell beschreiben.
  • In einer Ausführungsform erzeugt eine Rendering-Pipeline den Satz der Bilder. In einer Ausführungsform ist die Rendering-Pipeline ein differenzierbarer Renderer, und Bildraumverluste werden durch die Rendering-Pipeline rückwärts fortgepflanzt, um die Parameter zu aktualisieren. In einer Ausführungsform weisen die Parameter Vertexorte und/oder Oberflächen-Normalenvektoren und/oder Materialien und/oder eine Displacement-Map und/oder Skinning-Gewichte und/oder eine Textur-Map auf. In einer Ausführungsform weist die Rendering-Pipeline eine Abfolge von Gitteroperationen, einen Rasterizer und eine Deferred Shading-Stufe auf. In einer Ausführungsform führt die Rendering-Pipeline eine analytische Antialiasing-Operation aus, die schattierte Pixelwerte beruhend auf einer geometrischen Abdeckung bestimmt, nachdem eine Rasterung, Sichtbarkeitsprüfung und Textur-Mapping ausgeführt wurden.
  • Bei Schritt 140 wird ein Referenz-3D-Modell gerendert, um einen Satz von Referenzbildern für die Umgebungsbedingungen zu erzeugen. In einer Ausführungsform wird das Referenz-3D-Modell durch eine zweite Rendering-Pipeline gerendert, die im Vergleich zur Rendering-Pipeline eine andere Struktur aufweist. In einer Ausführungsform weist das Anfangs-3D-Modell eine dezimierte Version des Referenz-3D-Modells auf. In einer Ausführungsform werden die Referenzbilder einem Antialiasing unterzogen und das Anfangs-3D-Modell wird durch die Rendering-Pipeline im Vergleich zur Anzahl der Abtastwerte, die verwendet werden, um die Referenzbilder zu rendern, unter Verwendung weniger Abtastwerte pro Pixel verarbeitet, um den Satz der Bilder zu erzeugen. In einer Ausführungsform weist der Satz der Referenzbilder eine Animationssequenz auf und die Parameter weisen Skinning-Gewichte auf.
  • Bei Schritt 145 werden beruhend auf dem Satz der Bilder und dem Satz der Referenzbilder Bildraumverluste berechnet. In einer Ausführungsform werden die Bildraumverluste durch die Bildraumverlusteinheit 120 berechnet. In einer Ausführungsform weisen der Satz der Bilder und der Satz der Referenzbilder jeweils mindestens ein Bild auf. In einer Ausführungsform werden die Bildraumverluste durch die Rendering-Pipeline rückwärts fortgepflanzt, um das Anfangs-3D-Modell zu aktualisieren und die visuelle Ähnlichkeit zwischen den Sätzen der Bilder und der Referenzbilder zu verbessern. In einer Ausführungsform werden die Bildraumverluste als Gradienten rückwärts fortgepflanzt, die den Effekt anzeigen, den eine Bewegung von Gittervertexpositionen und das Anpassen von anderen Parametern auf den Satz der Bilder aufweist. Operationen, die durch die Rendering-Pipeline ausgeführt werden, um den Satz der Bilder zu erzeugen, sind differenzierbar, so dass die Gradienten zur Rückwärtsfortpflanzung berechnet werden können.
  • In einer Ausführungsform werden die Bildraumverluste unter Verwendung eines stochastischen Gradientenabstiegs berechnet. In einer Ausführungsform werden ein Bild aus dem Satz der Bilder und ein entsprechendes Bild aus dem Satz der Referenzbilder für jede der Umgebungsbedingungen verglichen, um die Bildraumverluste zu berechnen. In einer Ausführungsform weisen die Umgebungsbedingungen zufällige Kamera- und Lichtpositionen auf. In einer Ausführungsform ist das Licht eine einzelne Punktlichtquelle ähnlich zu einem virtueller Photogoniometer.
  • Bei Schritt 155 werden Parameter des Anfangs-3D-Modells gemäß den Bildraumverlusten aktualisiert, um ein 3D-Modell mit reduzierter Auflösung zu erzeugen, das im Vergleich zu einer Auflösung des Referenz-3D-Modells eine niedrigere Auflösung aufweist. In einer Ausführungsform werden gleichzeitig Korrekturen für die Parameter erzeugt, um die Parameter zu aktualisieren. In einer Ausführungsform weist das 3D-Modell mit reduzierter Auflösung eine erste geometrische Darstellung auf, und das Referenz-3D-Modell weist eine zweite geometrische Darstellung auf, die sich von der ersten geometrischen Darstellung unterscheidet. Das 3D-Modell mit reduzierter Auflösung weist eine optimierte Darstellung des Referenz-3D-Modells auf, das das Referenz-3D-Modell für Spiele oder andere Echtzeitanwendungen ersetzen kann.
  • Der Schritt 135 kann wiederholt werden, aber anstatt das Anfangs-3D-Modell zu verarbeiten, wird das 3D-Modell mit reduzierter Auflösung verarbeitet, um mindestens ein zusätzliches Bild zu erzeugen. Die Schritte 140 und 145 können für das mindestens eine zusätzliche Bild und mindestens ein zusätzliches Referenzbild wiederholt werden. Schließlich kann Schritt 155 wiederholt werden, aber anstatt die Parameter des Anfangs-3D-Modells zu aktualisieren, werden die Parameter des 3D-Modells mit reduzierter Auflösung aktualisiert, um das 3D-Modell mit reduzierter Auflösung über eine oder mehrere Iterationen zu optimieren.
  • 1C stellt ein Diagramm eines anderen erscheinungsbildgesteuerten automatischen 3D-Modellierungssystems dar, das zur Verwendung beim Implementieren einiger Ausführungsformen der vorliegenden Offenbarung geeignet ist. Zusätzlich zur Rendering-Pipeline 100 und der Bildraumverlusteinheit 120 aus dem erscheinungsbildgesteuerten automatischen 3D-Modellierungssystem 150 weist das System auch eine Rendering-Pipeline 160 auf. In einer Ausführungsform ist ein Anfangs-3D-Modell 165 eine Kugel, die gemäß Bildraumverlusten 174 aktualisiert wird, um ein 3D-Modell 170 mit reduzierter Auflösung zu erzeugen. Wie in 1C gezeigt, kann das 3D-Modell 170 mit reduzierter Auflösung gemäß den Bildraumverlusten 174 iterativ aktualisiert werden, um das 3D-Modell 170 mit reduzierter Auflösung zu optimieren, das, wenn es gerendert wird, Bilder 172 erzeugt, die den Referenzbildern 176 eines Referenz-3D-Modells 175 stärker ähneln.
  • Die verwendete Rendering-Pipeline 160, um das Referenz-3D-Modell 175 zu verarbeiten und die Referenzbilder 176 zu erzeugen, kann im Vergleich zur Rendering-Pipeline 100 dieselbe sein oder sich von ihr unterscheiden. In einer Ausführungsform ist die Rendering-Pipeline 100 differenzierbar und kann aus der 3D-Geometrie in einem Vorwärts-Verarbeitungsdurchlauf Bilder erzeugen und kann auch in einem Rückwärts-Verarbeitungsdurchlauf die 3D-Geometrie aktualisieren. Die Rendering-Operationen können Rasterung, Raytracing und Path Tracing enthalten. Im Gegensatz dazu kann die Rendering-Pipeline 160 eine oder mehrere Operationen ausführen, die nicht differenzierbar sind. Jedoch erzeugen beide Rendering-Pipelines 100 und 160 die Bilder 172 und die Referenzbilder 176 gemäß denselben Umgebungsbedingungen 178. In einer Ausführungsform rendert weder die Rendering-Pipeline 100 noch die Rendering-Pipeline 160 Schatten oder andere globale Effekte. Man beachte, dass Effekte, die in den Referenzbildern 176 sichtbar sind, Aktualisierungen des 3D-Modells 170 mit reduzierter Auflösung beeinflussen werden. Wenn beispielsweise die Referenzbilder 176 mit eingeschalteter Umgebungsverdeckung oder Path Tracing gerendert werden, werden die resultierenden Effekte in Materialparameter des 3D-Modells 170 mit reduzierter Auflösung codiert werden. Daher kann die Geometrie des 3D-Modells 170 mit reduzierter Auflösung die Geometrie des Referenz-3D-Modells 175 unabhängig davon einigermaßen approximieren, ob die Rendering-Pipeline 100 die Umgebungsverdeckung und/oder Path Tracing eingeschaltet hat.
  • Die Rendering-Pipeline 160 kann als Blackbox betrachtet werden, da die einzigen Informationen, die von der Rendering-Pipeline 160 und dem 3D-Modell 170 mit reduzierter Auflösung übermittelt werden, die Referenzbilder sind, die durch die Bildraumverlusteinheit 120 verwendet werden, um den Bilddomänenverlust zu berechnen. Daher kann sich die Geometriedarstellung, die das 3D-Modell 170 mit reduzierter Auflösung und das Referenz-3D-Modell 175 definiert, unterscheiden. Beispielsweise kann das Referenz-3D-Modell 175 als ein vorzeichenbehaftetes Distanzfeld dargestellt werden, während das Anfangs-3D-Modell 165 und das 3D-Modell 170 mit reduzierter Auflösung als Dreiecksgitter dargestellt werden. Die unterschiedlichen Parameter für das 3D-Modell 170 mit reduzierter Auflösung werden gemeinsam optimiert, wobei eine Kooperation zwischen unterschiedlichen Parametertypen ermöglicht wird, die die Form und das Erscheinungsbild beeinflussen (z.B. Vertexorte und Normal- und Displacement-Maps und/oder Tessellierung und Texturen).
  • Die Bildraumverlusteinheit 120 berechnet die Bildraumverluste 174 für die Bilder 172 und Referenzbilder 176. In einer Ausführungsform bezeichnet θ die Parameter der Darstellung des reduzierte 3D-Modells (z.B. Gittervertexpositionen und räumlich variierende Materialparameter). Die gerenderten Bilder 172 Iθ(c,l) sind eine Funktion von θ, der Kamera, c, und des Lichts, l. Die Referenz Rendering-Pipeline 160 ist eine andere Funktion Iref(c,l), die durch die Kamera und das Licht parametrisiert ist. Eine Bildraumverlust Funktion L vorausgesetzt, wird das empirische Risiko argmin θ E c , l [ L ( I θ ) ( c , l ) ) , ( I r e f ( c , l ) ) ]
    Figure DE102021130031A1_0001
    unter Verwendung eines stochastischen Gradientenabstiegs beruhend auf Gradienten bezüglich der Parameter, ∂L/∂d, minimiert, die durch differenzierbares Rendering erhalten werden.
  • In einer Ausführungsform kann ein Laplace-Regularisierer als zusätzlicher Verlustterm verwendet werden, um gut geformte Gitter zu unterstützen, wobei die Vertexpositionen des optimierten 3D-Modells 170 mit reduzierter Auflösung verwendet werden. Insbesondere wenn Gradienten groß sind, kann der Laplace-Regularisierer verwendet werden, um die Gitteroberfläche intakt zu halten. Ein einheitlich gewichtetes Differential δi des Vertex vi ist gegeben durch δ i = v i 1 | N i | j N i v j ,
    Figure DE102021130031A1_0002
    wobei Ni die Ein-Ring-Nachbarschaft des Vertex vi ist. In einer Ausführungsform ist ein Laplace-Regularisierer-Term gegeben durch L δ = 1 n i = 1 n δ i δ i ' 2 ,
    Figure DE102021130031A1_0003
    wobei δ i ' = 0
    Figure DE102021130031A1_0004
    das gleichmäßig gewichtete Differential des Eingangsgitters ist (d.h. des Anfangs-3D-Modells 165). Wenn das Eingangsgitter eine schlechte Approximation ist, z.B. eine Kugel, kann ein absoluter Regularisierer verwendet werden, mit δ i ' = 0
    Figure DE102021130031A1_0005
    In einer Ausführungsform ist die kombinierte Zielfunktion: L opt = L image + λ t L δ
    Figure DE102021130031A1_0006
    wobei λt das Regularisierungsgewicht ist, das von der gegenwärtigen Optimierungsiteration t abhängt. λt kann während der Optimierung gemäß λt = (λt-1 - λmin) · 10-kt + λmin allmählich reduziert werden. In einer Ausführungsform ist k=10-6, und λmin wird als 2% des Anfangs-Gewichts, λ0 gewählt. Der einheitliche Laplace-Regularisierer hängt von der Tessellierung ab, wohingegen der Bilddomänenverlust dies nicht tut. Folglich sollte der Bildraumverlust gegen den Laplace-Verlust abgewogen werden, wenn die Gitter eine beträchtlich variierende Anzahl an Primitiven aufweisen. Das Anfangs-Gewicht, λ0, kann entweder durch den Benutzer oder durch eine einfache Heuristik angegeben werden. Beispielsweise kann der Laplace-Fehler zu Beginn der Optimierung bewertet werden, und als λ0 = 0.25 Limage /Lδ gesetzt werden.
  • Bei der nichtlinearen Optimierung können gute Anfangsschätzungen eine dramatische Auswirkung auf die Geschwindigkeit der Konvergenz und schließlich die Qualität des resultierenden 3D-Modells 170 mit reduzierter Auflösung haben. Wenn ein hochauflösendes Gitter des Referenz-3D-Modells 175 verfügbar ist, können Gitterdezimierungswerkzeuge verwendet werden, um das Anfangs-3D-Modell 165 zu erzeugen. In einigen Fällen, z.B. beim Einbrennen von Laubwerk als Billboard Clouds (wie in 2D gezeigt), kann vorheriges Domänenwissen verwendet werden, um explizit ein geeignetes Anfangs-Gitter anzugeben. Wenn man jedoch von einer tessellierten Kugel ausgeht, wie in den 1A und 1C gezeigt, führt dies häufig zu überraschend guten Ergebnissen. Entsprechend können, falls verfügbar, Textur-Maps aus einer Referenzszene oder das Referenz-3D-Modell 175 als eine Anfangs-Schätzung für Materialparameter verwendet werden. In einer Ausführungsform werden zufällig initialisierte Textur-Maps für das Anfangs-3D-Modell 165 verwendet.
  • Das erscheinungsbildgesteuerte automatische 3D-Modellierungssystem 150 kann für viele Zwecke verwendet werden, einschließlich, jedoch nicht beschränkt auf, der gemeinsamen Vereinfachung der Form und des Erscheinungsbilds, der Vorfilterung der Form und des Erscheinungsbilds, um Aliasing zu reduzieren, der geometrischen Vereinfachung der Animation eines geskinnten Charakters, der Approximation der Aggregatgeometrie und der 3D-Gitterextraktion aus impliziten Oberflächen. Die Vereinfachung komplexer Referenz-3D-Modelle (z.B. Assets) mit minimalem Verlust an visueller Genauigkeit ist eine unkomplizierte Anwendung. Wie in Verbindung mit den 2A, 2B und 2C weiter beschrieben, demonstrieren drei Varianten der Modellvereinfachung eine gemeinsame Optimierung über unterschiedlichen Kombinationen der Form und des Erscheinungsbilds: Normal-Map-Einbrennen, gemeinsame Vereinfachung, die auch das Oberflächenreflexionsvermögen berücksichtigt, und die Approximation komplexer Gitter mit Displacement-Maps, die auf eine grobe Basisdomäne angewendet werden.
  • Als Anfangsbeispiel kann das Anfangs-3D-Modell 105 eine Kugel mit 3k Dreiecken aufweisen, und die Form und eine Tangentenraum-Normal-Map kann optimiert werden, um das in 1A gezeigte 3D-Modell 110 mit reduzierter Auflösung zu erzeugen, das ein sehr detailliertes Referenzgitter mit 735k Dreiecken approximiert. Neben den Normalenvektoren ist das Material für das 3D-Modell 110 mit reduzierter Auflösung ansonsten als diffuses einheitliches Grau festgelegt. Während einige hochfrequente Details aus dem Schädel in der gerenderten 3D-Modelldarstellung 115 fehlen, ist das Ergebnis dennoch ermutigend, wenn man bedenkt, dass der Optimierungsprozess vollständig automatisch sein kann und keine direkten Informationen über das Referenzmodell verwendet.
  • Zusätzlich zu Normal-Maps ist das Displacement-Mapping eine zunehmend populäre Technik zum Darstellen komplexer Formen in Echtzeitumgebungen. Das Displacement-Mapping erreicht eine kompakte Darstellung durch Tessellierung eines groben Basisgitters in einem Durchlauf und Verschiebung der resultierenden Vertices in der Richtung des Normalenvektors der interpolierten Oberfläche um Beträge, die aus einer Displacement-Map-Textur gelesen werden. Das erscheinungsbildgesteuerte automatische 3D-Modellierungssystem 150 ermöglicht die Verwendung von Displacement-Maps zur Approximation der Geometrie durch einfaches Implementieren der Tessellierungs- und Verschiebungsschritte in der Vorwärtsverarbeitung, die durch die Rendering-Pipeline 100 ausgeführt wird.
  • 2A stellt ein konzeptionelles Diagramm eines Normalenvektor- und Displacement-Mapping für ein 3D-Modell gemäß einer Ausführungsform dar. In einer Ausführungsform optimiert das erscheinungsbildgesteuerte automatische 3D-Modellierungssystem 150 gemeinsam ein Basisgitter, eine Displacement-Map und Normal-Map eines Anfangs-3D-Modells 205, um dem Erscheinungsbild eines Referenz-3D-Modell 225 mit 370k Dreiecken eines Tänzers zu entsprechen. Das Tänzermodell wurde freundlicherweise vom Smithsonian® 3D Digitization project zur Verfügung gestellt. Das Anfangs-3D-Modell 205 mit 1k Dreiecken ist ein aus dem Referenz-3D-Modell 225 erzeugtes dezimiertes Gitter. Das Tänzermodell stellt ein komplexes Optimierungsproblem dar, und das Anfangs-3D-Modell 205 liefert ein grob tesselliertes Basisgitter mit einer Verschiebung, die auf die Normalenrichtung beschränkt ist. Dennoch entspricht das Erscheinungsbild sowohl eines 3D-Modell 210 mit reduzierter Auflösung mit 64k Dreiecken, das eine Displacement-Map ohne eine Normal-Map aufweist, als auch eines 3D-Modells 215 mit reduzierter Auflösung mit 64k Dreiecken, das eine Displacement-Map mit einer Normal-Map aufweist, weitestgehend dem Referenz-3D-Modell 225. Interessanterweise werden einige kleine Details in einen Einsatzabschnitt 227 des Referenz-3D-Modells 225 in die Normal-Map des 3D-Modells 215 mit reduzierter Auflösung eingebrannt, obwohl die kleinen Details leicht durch Verschiebung dargestellt werden könnten. Ein Abschnitt des gerenderten Anfangs-3D-Modells 205, der dem Einsatz 227 entspricht, wird in 220 gezeigt. Ein Abschnitt des 3D-Modells mit reduzierter Auflösung 210 (Verschiebung ohne Normalen), der dem Einsatz 227 entspricht, wird in 222 gezeigt. Ein Abschnitt des 3D-Modells mit reduzierter Auflösung 215 (Verschiebung mit Normalen), der dem Einsatz 227 entspricht, wird in 224 gezeigt.
  • Das 3D-Modell 215 mit reduzierter Auflösung wird durch gemeinsames Optimieren der Vor-Tessellierungsform des Anfangs-3D-Modells 205, der Normal-Map und der Displacement-Map erhalten. Die Optimierung ergibt eine natürliche „Arbeitsteilung“ zwischen den Darstellungen: das Anfangs-3D-Modell 205 ist ein Basisgitter, das die Gesamtform modelliert, die Displacement-Map modelliert Details im mittleren Maßstab, und das feinste Detail, das durch die verschobene Oberfläche nicht darstellbar ist, wird durch die Normal-Map erfasst. Während die in 2A gezeigten 3D-Modelle 210 und 215 mit reduzierter Auflösung für einen einzelnen, festen Tessellierungsgrad erzeugt werden, kann eine dynamische Tessellierung für eine Detaillierungsgradauswahl verwendet werden. Außerdem kann ein verschiebungsabgebildetes Gitter optimiert werden, um unter mehreren Tessellierungsgraden gut auszusehen.
  • Ein Großteil der Schwierigkeiten bei der Erscheinungsbilderfassung rührt von dem Wunsch her, den Erfassungsaufwand für den Benutzer zu begrenzen. Eine erschöpfende Messung des Erscheinungsbilds in der realen Welt unter allen Beleuchtungs- und Betrachtungsrichtungen ist für die meisten Zwecke unerschwinglich. Im Gegensatz dazu kann das Referenz-3D-Modell 225 in so vielen Betrachtungs- und Beleuchtungsbedingungen wie nötig gerendert werden, um die 3D-Modelle 210 und 215 mit reduzierter Auflösung zu erzeugen. Die Rechenkomplexität wird daher reduziert, und es ist eine direkte durchgehende Optimierung über die Materialparameter und Vertexpositionen unter Verwendung des visuellen Ähnlichkeitsverlusts möglich. In einer Ausführungsform erzeugt das erscheinungsbildgesteuerte automatische 3D-Modellierungssystem 150 die 3D-Modelle 210 und 215 mit reduzierter Auflösung, die Dreiecksgitter und Materialien aufweisen, die in Echtzeit durch eine Standard-3D-Engine gerendert werden können.
  • Die Erscheinungsbilderfassung kann als Suchen eines digitalen Assets (z.B. eine räumlich variierende BRDF-Map und ein Gitter) formuliert werden, deren Renderings visuell einem Objekt in der realen Welt entsprechen. Erscheinungsbilderfassung ist konzeptionell ähnlich zur erscheinungsbildgesteuerten automatischen 3D-Modellierung, mit der Ausnahme, dass zur erscheinungsbildgesteuerten automatischen 3D-Modellierung die Referenz-3D-Modelle andere digitale Assets sein können.
  • 2B stellt ein konzeptionelles Diagramm eines Normalenvektors und neuen Beleuchtungsszenarios für ein 3D-Modell gemäß einer Ausführungsform dar. Im Vergleich zum Referenz-3D-Modell 225 des Tänzers in 1B wird ein Referenz-3D-Modell 245 mit einem einheitlichen, stark spekularen Goldmaterial gerendert. Ein physikalisch basiertes Shading-Modell mit einem diffusen Strahlungskeule und einer isotropen spekularen Strahlungskeule, wie es üblicherweise in modernen Spiel-Engines verwendet wird, kann durch die Rendering-Pipeline 100 implementiert werden. Gemeinsame Vereinfachung der Form und des Erscheinungsbilds können verwendet werden, um ein 3D-Modell 240 mit reduzierter Auflösung des Referenz-3D-Modells 245 zu erzeugen. Das Anfangs-3D-Modell 235 weist 1k Dreiecke auf, und das Referenz-3D-Modell 245 weist 370k Dreiecke auf. Das 3D-Modell 240 mit reduzierter Auflösung weist 1k Dreiecke auf - nur 0,3% der Dreiecke, die im Referenz-3D-Modell 245 enthalten sind. Das Modell 240 mit reduzierter Auflösung wird in einem neuen Beleuchtungsszenario gerendert, das demonstriert, dass die während der Optimierung erlernten Materialien sich auf neue Beleuchtungsbedingungen verallgemeinern, die nicht während der Optimierung verwendet wurden.
  • Im Gegensatz zu dem in 2A gezeigten 3D-Modell 240 mit reduzierter Auflösung, das eine räumlich einheitliche BRDF aufweist, ist das 3D-Modell 240 mit reduzierter Auflösung mit einer Normal-Map und einer räumlich variierenden BRDF (SVBRDF) ausgestattet. Wie durch Parameter für den Kopf des Tänzers gezeigt: das Gitter 230, die diffuse Map 232, die spekulare Map 234 und die Normalenvektoren 236, geometrische Details, die im 3D-Modell 240 mit reduzierter Auflösung nicht vorhanden sind, werden in den verschiedenen räumlich variierenden Materialparametern approximiert. Die Form und das Erscheinungsbild können unter zufälligen Ansichten und Punktlichtrichtungen gemeinsam optimiert werden. Obwohl ein einzelnes Punktlicht während der Optimierung verwendet wird, verallgemeinert sich das resultierende 3D-Modell 240 mit reduzierter Auflösung auf die neuen Beleuchtungsbedingungen. Mit anderen Worten verallgemeinert sich das resultierende 3D-Modell 240 mit reduzierter Auflösung auf unterschiedliche Umgebungsbedingungen. Da die erscheinungsbildgesteuerte automatische 3D-Modellierung beruhend auf visuellen Differenzen optimiert, entspricht die Silhouette des 3D-Modells mit reduzierter Auflösung 240 weitestgehend der wirklichen Silhouette des Referenz-3D-Modells 245, es werden genaue Normalenvektoren berechnet, und das schattierte Erscheinungsbild des Referenz-3D-Modells 240 wird erfasst.
  • In einer Ausführungsform kann eine automatische Bereinigung von durch andere Anwendungen ausgeführten erfolglosen Gitterdezimierungs-Operationen unter Verwendung des erscheinungsbildgesteuerten automatischen 3D-Modellierungssystems 150 ausgeführt werden. Beispielsweise können Artefakte in einem dezimierten Gitter eines Referenz-3D-Modells wie ein vermindertes Volumen, losgelöste geometrische Elemente, falsche Texturierung und eine selbstschneidende Geometrie korrigiert werden. Das dezimierte Gitter wird als ein Anfangs-3D-Modell verwendet, Bilder des Anfangs-3D-Modells und des 3D-Modells mit reduzierter Auflösung werden gerendert und mit gerenderten Bildern des Referenz-3D-Modells verglichen, um eine Version des dezimierten Gitters zu erzeugen, die im Vergleich zum dezimierten Gitter weniger Artefakte aufweist.
  • Wie vorhergehend beschrieben, ist es ein Ziel, getreue Darstellungen von komplexen Assets (z.B. 3D-Referenzmodelle) mit reduzierter Auflösung (z.B. Dreieckszahlen) zu erzeugen. Ein damit eng verwandtes Ziel ist es, effizient renderbare Approximationen an ursprüngliche Assets zu finden, die aufgrund ihrer Komplexität einen wesentlichen Betrag an Supersampling erfordern, um aliasfreie Bilder zu erzeugen. Im Kontext der folgenden Beschreibung wird eine gemeinsame Vorfilterung der Form und des Erscheinungsbilds verwendet, um auf einen Prozess zum Erzeugen solcher effizient renderbaren Approximationen von Referenz-3D-Modellen zurückzukommen. 3D-Modelle mit reduzierter Auflösung, die unter Verwendung einer gemeinsamen Vorfilterung der Form und des Erscheinungsbilds erzeugt werden, weisen die Eigenschaft auf, dass sie, wenn sie mit nur einem Abtastwert pro Pixel (1 spp) gerendert werden, das Erscheinungsbild von Assets reproduzieren, die möglicherweise Hunderte von Abtastwerten pro Pixel für eine aliasfreie Reproduktion erfordern. Während der Optimierung wird für die gerenderten Bilder typischerweise eine kleinere Zielbildauflösung spezifiziert, und die Referenzbilder sollten mit genügend Supersampling gerendert werden, um das Nichtvorhandensein von Aliasing sicherzustellen. In einer Ausführungsform weist das durch die Rendering-Pipeline 100 verwendete Shading-Modell eine diffuse Strahlungskeule und eine spekulare Strahlungskeule auf, und die Gitterform und die Materialparameter werden während der Optimierung so angepasst, dass die gerenderten Bilder stark überabgetasteten Referenzbildern entsprechen.
  • 2C stellt ein konzeptionelles Diagramm einer Erscheinungsbild-Vorfilterung für ein 3D-Modell gemäß einer Ausführungsform dar. Die Referenz-3D-Modelle 242 und 252 und 3D-Modelle 244 und 254 mit reduzierter Auflösung werden unter Verwendung von 1 spp gerendert. Zum Vergleich werden die Referenz-3D-Modelle 246 und 256 unter Verwendung 256 spp gerendert. Die Form und das Erscheinungsbild können für eine oder mehrere spezifische Rendering-Auflösungen gemeinsam vorgefiltert werden. Das 3D-Modell 244 mit reduzierter Auflösung wird für eine Bildauflösung von 64x64 Pixeln beruhend auf Referenzbildern des Referenz-3D-Modells 246 optimiert. Das 3D-Modell 254 mit reduzierter Auflösung wird für eine Auflösung von 512x512 Pixeln beruhend auf Referenzbildern des Referenz-3D-Modells 256 optimiert. Die Vorfilterung kann im erscheinungsbildgesteuerten automatischen 3D-Modellierungssystem 150 durch Aktualisieren der Rendering-Pipeline erreicht werden, die für das Referenz-3D-Modell 160 verwendet wird, um Referenzbilder unter Verwendung von mehreren Abtastwerten und Antialiasing zu rendern.
  • Das 3D-Modell 244 mit reduzierter Auflösung, das für die niedrigere Auflösung von 64x64 Pixeln vorgefiltert ist, weist, wie man erwarten würde, im Vergleich zum 3D-Modell 254 mit reduzierter Auflösung erheblich glattere Normalenvektoren auf, die zusammen mit der Specular Map zum Effekt der Durchschnittsbildung beitragen, der dem Supersampling inhärent ist. Entsprechend ist im Vergleich zum 3D-Modell 254 mit reduzierter Auflösung das 3D-Modell 244 mit reduzierter Auflösung geometrisch geglättet. Wenn sie mit der beabsichtigten Auflösung gerendert werden, entsprechen die 3D-Modelle 244 und 254 mit reduzierter Auflösung dem Erscheinungsbild der jeweiligen Referenz-3D-Modelle 242 und 252 gut, ohne offensichtliches Aliasing. Das Erscheinungsbild der überabgeasteten Referenz-3D-Modelle 245 und 256, die mit 256 spp gerendert werden, wird durch die jeweiligen 3D-Modelle 244 und 254 mit reduzierter Auflösung erreicht, obwohl die 3D-Modelle 244 und 254 mit reduzierter Auflösung unter Verwendung von 1 spp gerendert werden. Folglich können die 3D-Modelle 244 und 254 mit reduzierter Auflösung verwendet werden, um im Vergleich zu den einem Antialiasing unterzogenen Referenz-3D-Modellen 246 und 256 Bilder zu einem Bruchteil der Rendering-Kosten zu erzeugen.
  • Um ein geeignetes Maß an Vorfilterung bei unterschiedlichen Rendering-Auflösungen (d.h. Rendering-Abständen) zu erhalten, reicht es nicht aus, nur für eine Auflösung zu optimieren. Für Materialien ist es leicht, für mehrere Auflösungen zu optimieren, indem jede Mip-Map-Ebene separat unter Verwendung von Parametern pro Mip-Map-Ebene in einem Satz von Parametern für die Materialien behandelt wird. Solche auflösungsspezifischen Materialdarstellungen können durch vorhandene trilineare Textur-Lookup-Mechanismen zum automatischen Interpolieren zwischen Ebenen verwendet werden. Obwohl eine lineare Interpolation zwischen Materialparametern im Allgemeinen nicht korrekt ist, wird der Optimierungsprozess eine Darstellung finden, die unter der Voraussetzung, dass trilineare Texturabrufe verwendet werden, den Referenzbildern so gut wie möglich entspricht. Für die Geometrie können mehrere Sätze von Vertexpositionen gespeichert werden, und es kann mindestens ein bestimmter Satz von Vertexpositionen beruhend auf dem Abstand zum Gitter, der durchschnittlichen projizierten Kantenlänge oder einer ähnlichen Heuristik ausgewählt werden. Wie beim Mip-Mapping kann eine lineare Interpolation zwischen Ebenen verwendet werden, um Popping-Artefakte zu beseitigen.
  • Die Vorfilterungstechnik hat den Vorteil, dass keine Änderungen für eine typische Spiel-Engine erforderlich sind, um die Modelle mit reduzierter Auflösung zu rendem, und es gibt keinen Laufzeit-Overhead. Der Ansatz ist flexibel, da jede Zieloberflächen- und Materialdarstellung des Referenz-3D-Modells in einer vereinheitlichten Weise behandelt wird: es wird nur das endgültige visuelle Erscheinungsbild beobachtet, und es spielt keine Rolle, welche Kombination aus z.B. Parametern der Gitterform, der Verschiebung, der Normale und des Materials die gerenderten Bilder erzeugte.
  • Wenn das Referenz-3D-Modell seine Position oder Form im Laufe der Zeit ändert, wie beispielsweise in einer Animation, kann ein animiertes und gegliedertes 3D-Modell mit reduzierter Auflösung erzeugt werden. In einer Ausführungsform können die Parameter Vertexpositionen, Skinning-Gewichte, Normal-Maps und Materialeigenschaften enthalten, die sich im Laufe der Zeit ändern. Ein hochauflösendes Referenz-3D-Modell vorausgesetzt, das durch Skeletal Subspace Deformation (SSD) animiert wird, kann genauer gesagt eine Optimierung über Bind-Pose-Vertexpositionen, Normalenvektoren, SVBRDF und Skinning-Gewichte (Bone-Vertex-Bindungen) eines Anfangs-3D-Modells in einem Versuch ausgeführt werden, das Erscheinungsbild der Referenzanimation nachzubilden. Im Gegensatz zum Vereinfachen des Referenz-3D-Modells (z.B. Charakter) nur in der Bind Pose (T-Pose), ist die erscheinungsbildgesteuerte automatische 3D-Modellierung vierversprechend, in der Lage zu sein, Kompromisse auszuhandeln, um den Fehler gleichmäßig unter den Frames zu verteilen, indem die Geometrie, Skinning-Gewichte und Materialien entsprechend angepasst werden.
  • Wenn SSD verwendet wird, werden im Vergleich zu anderen Anwendungen transformierte Vertexpositionen unter Verwendung der Skinning-Gewichte gemischt, eine einfache lineare Operation. In einer Ausführungsform wird eine Annahme gemacht, dass zeitveränderliche Bone-Transformationen bekannt sind und daher während der Optimierung als Konstanten behandelt werden. In einer Ausführungsform wird eine erscheinungsbildgesteuerte, durchgängige gemeinsame Optimierung sowohl von Bone-Transformationen als auch Skinning-Gewichten zusammen mit Geometrie- und Materialparametern durch das erscheinungsbildgesteuerte automatische 3D-Modellierungssystem 150 ausgeführt.
  • In einer anderen Anwendung kann die Form und das Erscheinungsbild der detaillierten 3D-Szenen enthaltenen Aggregatgeometrie durch das erscheinungsbildgesteuerte automatische 3D-Modellierungssystem 150 approximiert werden. Eine stochastische Aggregatgeometrie, wie Laubwerk, ist besonders schwer zu vereinfachen: da das Gesamterscheinungsbild aus der kombinierten Wirkung vieler kleiner, nicht zusammenhängender Komponenten hervorgeht, sind Techniken wie die Netzdezimierung uneffektiv. Eine herkömmliche Vereinfachungstechnik entfernt zufällig eine Teilmenge der geometrischen Elemente und ändert die restlichen Elemente beruhend auf einem bekannten Szenengraph, um das Gesamterscheinungsbild einer Szene zu bewahren. Anstatt stochastisch den prozeduralen Szenengraph zu beschneiden, wie dies durch die herkömmliche Vereinfachung geschieht, ersetzt die erscheinungsbildgesteuerte automatische 3D-Modellierung die komplexen Geometrien durch eine einfache texturierte Geometrie, die einfach ist (z.B. Vierecke). Die einfache Geometrie stellt das Anfangs-3D-Modell bereit, und die Materialparameter, Form und die Transparenz können beruhend auf visuellen Verlust der gerenderten Bilder gemeinsam optimiert werden.
  • 2D stellt ein konzeptionelles Diagramm einer Vereinfachung der Aggregatgeometrie für ein 3D-Modell gemäß einer Ausführungsform dar. Das Laubwerk wird mit einer Low-poly-Proxy-Geometrie und Texturen approximiert. Die Referenz-3D-Modellgeometrie, die verwendet wird, um das gerenderte Referenz-3D-Modell 246 zu erzeugen, weist komplexe Formen für das Laubwerk auf, wohingegen die Geometrie 242 des Anfangs-3D-Modells einfache Vierecke aufweist, die nur einen Bruchteil (3,66%) der Dreieckszahl (256 Vierecke oder 512 Dreiecke) im Vergleich zur Referenz-3D-Modellgeometrie (14k Dreiecke) verwenden. Wie in 2D gezeigt, werden die Vierecke für die Geometrie 246 des Anfangs-3D-Modells in 3D angeordnet.
  • In einer Ausführungsform wird das gerenderte reduzierte 3D-Modell 244 durch Optimieren der Geometrie 242 des Anfangs-3D-Modells und der zugehörigen Parameter, einschließlich einer gelernten Textur 248, unter Verwendung differenzierbarer Operationen erzeugt, die durch die Rendering-Pipeline 100 implementiert werden. Während der Optimierung werden Vertexpositionen der Geometrie 242 des Anfangs-3D-Modells angepasst, und Materialwerte werden ebenfalls angepasst, um die gelernte Textur 248 zu optimieren. In einer Ausführungsform wird die quadrierte L2 als die Zielfunktion durch die Bildraumverlusteinheit 120 verwendet. Verglichen mit der gerenderten Referenz-3D-Modellgeometrie 246 wird das Erscheinungsbild der Szene durch das gerenderte reduzierte 3D-Modell 244 genau approximiert. Zusätzlich zu Farben enthalten die Texturen Alphawerte, die die reduzierte 3D-Modellgeometrie effektiv formen, indem sie Anteile der Geometrie transparent machen. Zusätzlich zur Geometrie enthält das Referenz-3D-Modell auch räumlich variierende Materialien und Texturen mit Alphawerten.
  • 3 stellt ein Blockdiagramm der in den 1A und 1C gezeigten Rendering-Pipeline 100 dar, die zur Verwendung beim Implementieren einiger Ausführungsformen der vorliegenden Offenbarung geeignet ist. Es versteht sich, dass diese und andere hierin beschriebene Anordnungen nur als Beispiele dargelegt werden. Andere Anordnungen und Elemente (z.B. Maschinen, Schnittstellen, Funktionen, Reihenfolgen, Gruppierungen von Funktionen, usw.) können zusätzlich oder anstelle der gezeigten verwendet werden, und einige Elemente können ganz weggelassen werden. Ferner sind viele der hierin beschriebenen Elemente funktionale Einheiten, die als diskrete oder verteilte Komponenten oder in Verbindung mit anderen Komponenten und in jeder geeigneten Kombination und an jeder geeigneten Stelle implementiert werden können. Verschiedene Funktionen, die hierin so beschrieben werden, dass sie durch Einheiten ausgeführt werden, können durch Hardware, Firmware und/oder Software ausgeführt werden. Beispielsweise können verschiedene Funktionen durch einen Prozessor ausgeführt werden, der in einem Speicher gespeicherte Anweisungen ausführt. Darüber hinaus werden Durchschnittsfachleute verstehen, dass irgendein System, das die Operationen der Rendering-Pipeline 100 für das erscheinungsbildgesteuerte automatische 3D-Modellierungssystem 150 ausführt, innerhalb des Rahmens und des Geistes der Ausführungsformen der vorliegenden Offenbarung liegt.
  • Die Rendering-Pipeline 100 optimiert das 3D-Modell 110 mit reduzierter Auflösung. In einer Ausführungsform wird eine Anfangs-Schätzung für das 3D-Modell 110 mit reduzierter Auflösung, wie das Anfangs-3D-Modell 105, gemäß den Bildraumverlusten 122 verarbeitet und aktualisiert, um das 3D-Modell 110 mit reduzierter Auflösung zu erzeugen. Das 3D-Modell 110 mit reduzierter Auflösung kann gemäß den Bildraumverlusten 122 iterativ aktualisiert werden.
  • Die Rendering-Pipeline 100 weist mehrere Verarbeitungseinheiten auf, die eine Tangentenraum-Konstruktionseinheit 300, eine Animations- und Skinning-Einheit 310, eine Displacement-Mapping-Einheit 320, einen differenzierbarer Rasterizer 330 und eine Deferred Shading-Einheit 340 umfassen. In einer anderen Ausführungsform können eine oder mehrere der Verarbeitungseinheiten innerhalb der Rendering-Pipeline 100 weggelassen werden oder eine oder mehrere zusätzliche Einheiten enthalten sein. In einer Ausführungsform weist die Rendering-Pipeline 100 modulare, konfigurierbare und programmierbare Verarbeitungseinheiten auf, um eine einfache Konstruktion möglicherweise komplexer kundenspezifischer Rendering-Pipelines zu ermöglichen. Jede der Verarbeitungseinheiten führt differenzierbare Operationen aus. Eine oder mehrere der Verarbeitungseinheiten führen Operationen aus, die die verschiedenen Parameter des Anfangs -und des 3D-Modells mit reduzierter Auflösung betreffen, wie Vertexpositionen, Normal- (Vektor) Maps, Displacement-Maps, Textur-Maps, Skinning-Gewichte und dergleichen.
  • Um Tangentenraum-Normal-Maps beim Verformen der Geometrie zu optimieren, muss ein Tangentenframe differenzierbar sein und dynamisch aktualisiert werden, um jede Änderung der Vertexposition widerzuspiegeln. In einer Ausführungsform berechnet die Tangentenraum-Konstruktionseinheit 300 glatte Vertexnormalen und leitet Tangenten- und Bitangentenvektoren aus den Vertexpositionen und Texturkoordinaten ab. Die Verwendung von aus dem Gitter abgeleiteten glatten Normalen ist nicht zwangsläufig eine Einschränkung, da Falten oder andere scharfe Merkmale durch die Normal-Map behandelt werden können.
  • Skinning kann durch das Optimieren von Skinning-Gewichten und/oder einer Bone-Transformationsmatrix des animierten Gitters unterstützt werden. Ein differenzierbarer Skinning-Operator wird durch die Animations- und Skinning-Einheit 310 berechnet gemäß: v i s = b B w i b M b v i
    Figure DE102021130031A1_0007
    wobei B der Satz der Bones ist, Mb die Bone-Transformationsmatrix für den gegenwärtigen Frame ist, und wib das Skinning-Gewicht des den Bone b beeinflussenden Vertex vi ist.
  • Gewichte werden typischerweise unter Verwendung einer dünn besetzten indizierten Darstellung gespeichert, jedoch kann der ganz dichte Skinning-Operator implementiert werden, um jede Vertex-Bone-Verknüpfung während der Optimierung zu unterstützen.
  • Für das Displacement-Mapping ist die Darstellung des Anfangs-3D-Modells 105 ein grobes Basisgitter und skalare Displacement-Map. Das Gitter wird unterteilt, und die Displacement-Map verwendet, um die tessellierten Vertices entlang der interpolierten Normalenrichtung zu verschieben. Die Geometrie kann unter Verwendung einer Kantenmittelpunkt-Unterteilung tesselliert werden, wobei jedes Dreieck in vier neue Dreiecke durch Einsetzen eines neuen Vertex entlang jeder Kante geteilt wird. In einer Ausführungsform wird die Tessellierungsoperation differenzierbar gemacht, indem ein konstanter Tessellierungsfaktor gewählt wird und die Topologie des tessellierten Gitters vor der Optimierung vorberechnet wird. Die Position jedes durch die Tessellierung erzeugten Vertex wird bei jeder Iteration neu berechnet, um sicherzustellen, dass die Gradienten korrekt fortgepflanzt werden.
  • In einer Ausführungsform verschiebt die Displacement-Mapping-Einheit 320 jedes Vertex gemäß v i d = v i + tex2d ( t i ) n i ,
    Figure DE102021130031A1_0008
    wobei vi die ursprüngliche tessellierte Vertexposition ist, ni die interpolierte Normale ist, tex2d eine Textur-Lookupoperation ist und ti die Texturkoordinate ist. Jede der Tangentenraum-Konstruktionseinheit 300, Animations- und Skinning-Einheit 310 und Displacement-Mapping-Einheit 320 arbeitet an einem durch Vertices definierten Gitter.
  • Der differenzierbare Rasterizer 330 wandelt die Gittergeometrie und Parameter in Attribute zur Interpolation um, und die Deferred Shading-Einheit 340 berechnet eine endgültige Farbe für jedes Pixel der Bilder 122 durch Durchführen von Interpolations-, Textur-Lookup- und/oder Antialiasing-Operationen.
  • Die Rendering-Pipeline 100 empfängt Bildraumverluste 122, die in einer Ausführungsform anzeigen, wie die Farbe jedes Pixels der Bilder 122 den Verlust beeinflusst. In einer Ausführungsform berechnet die Rückwärtsfortpflanzung durch jede Verarbeitungseinheit in der Rendering-Pipeline 100 Gradienten, die an die nachgelagerte Verarbeitungseinheit ausgegeben werden. Bei der Rückwärtsfortpflanzung der Gradienten durch die Rendering-Pipeline 100 ist der Gradient der Ausgabe für jeden Berechnungsschritt bekannt (d.h. wie Änderungen der Ausgabewerte jedes Berechnungsschritts den Verlust beeinflussen werden), so dass die Gradienten der Eingaben in den Berechnungsschritt bestimmt werden können (d.h. wie Änderungen der Eingabewerte jedes Berechnungsschritts den Verlust beeinflussen werden).
  • Nachdem die Bildraumverluste 122 durch die gesamte Rendering-Pipeline 100 rückwärts fortgepflanzt worden sind, ist es möglich zu quantifizieren, wie das Ändern des Anfangs-3D-Modells 105 und des 3D-Modells 110 mit reduzierter Auflösung die Bildraumverluste 122 beeinflusst, und die Parameter können in der Richtung angepasst werden, die die Bildraumverluste 122 reduzieren sollte. Die Gradienten, die während der Rückwärtsfortpflanzung berechnet werden, zeigen den Effekt an, den das Bewegen der Vertexpositionen und das Anpassen anderer Parameter auf die Bilder 112 aufweist. Die Rendering-Pipeline 100 stellt Aktualisierungen bereit und passt das 3D-Modell 110 mit reduzierter Auflösung an, um die Bildraumverluste 122 zu reduzieren.
  • Das erscheinungsbildgesteuerte automatische 3D-Modellierungssystem 150 ermöglicht die Optimierung eines 3D-Modells, das die Form und das Erscheinungsbild einer bestimmten 3D-Szene oder Objekts für einzelne Frames oder eine Animation aufweist. Im Vergleich zu einem Referenz-3D-Modell ist das optimierte 3D-Modell (mit reduzierter Auflösung) ein 3D-Modell mit niedrigerer Auflösung, das in kürzerer Zeit gerendert werden kann. Genauer gesagt kann das optimierte 3D-Modell im Vergleich zum Referenz-3D-Modell weniger geometrische Primitive aufweisen. Das optimierte 3D-Modell kann verwendet werden, um die Leistung eines Spiels oder einer anderen Echtzeit Anwendung zu verbessern, die durch die Rendering-Geschwindigkeit begrenzt ist. Die Optimierung des 3D-Modells kann verwendet werden, um eine Vorfilterung der Form und des Erscheinungsbilds durchzuführen, um die Bildqualität zu verbessern. Genauer gesagt kann die gemeinsame Vorfilterung der Form und des Erscheinungsbilds verwendet werden, um aliasfreie Bilder selbst beim Rendering unter Verwendung von nur einem Abtastwert pro Pixel zu erzeugen. Das erscheinungsbildgesteuerte automatische 3D-Modellierungssystem 150 kann auch verwendet werden, um zwischen unterschiedlichen Modelldarstellungen umzuwandeln. Echtzeit- und/oder Produktions-Rendering-Anwendungen (z.B. Spielfilm, Architekturvisualisierung usw.) können von der verbesserten Bildqualität profitieren.
  • Parallelverarbeitungsarchitektur
  • 4 stellt eine Parallelverarbeitungseinheit (PPU) 400 gemäß einer Ausführungsform dar. Die PPU 400 kann verwendet werden, um das erscheinungsbildgesteuerte automatische 3D-Modellierungssystem 150 zu implementieren. Die PPU 400 kann verwendet werden, um eine oder mehrere der Rendering-Pipeline 100, der Bildraumverlusteinheit 120 oder der Rendering-Pipeline 160 zu implementieren. In einer Ausführungsform kann ein Prozessor wie die PPU 400 konfiguriert sein, ein neuronales Netzwerkmodell zu implementieren. Das neuronale Netzwerkmodell kann als Softwareanweisungen implementiert sein, die durch den Prozessor ausgeführt werden, oder in einer anderen Ausführungsformen kann der Prozessor eine Matrix von Hardwareelementen aufweisen, die konfiguriert sind, einen Satz von Eingaben (z.B. elektrische Signale, die Werte repräsentieren) zu verarbeiten, um einen Satz von Ausgaben zu erzeugen, die Aktivierungen des neuronalen Netzwerkmodells repräsentieren können. In noch anderen Ausführungsformen kann das neuronale Netzwerkmodell als eine Kombination von Softwareanweisungen und einer Verarbeitung implementiert sein, die durch eine Matrix von Hardwareelementen ausgeführt wird. Das Implementieren des neuronalen Netzwerkmodells kann das Bestimmen eines Satzes von Parametern für das neuronale Netzwerkmodell durch z.B. ein überwachtes oder unüberwachtes Training des neuronalen Netzwerkmodells sowie oder alternativ das Durchführen einer Inferenz unter Verwendung des Satzes der Parameter aufweisen, um neue Sätze von Eingaben zu verarbeiten.
  • In einer Ausführungsform ist die PPU 400 ein multithreadingfähiger Prozessor, der auf einer oder mehreren integrierten Schaltungsvorrichtungen implementiert ist. Die PPU 400 ist eine Latenzverdeckungsarchitektur, die dazu bestimmt ist, viele Threads parallel zu verarbeiten. Ein Thread (z.B. ein Ausführungsthread) ist eine Instanziierung eines Satzes von Anweisungen, die konfiguriert sind, durch die PPU 400 ausgeführt zu werden. In einer Ausführungsform ist die PPU 400 eine Grafikverarbeitungseinheit (GPU), die konfiguriert ist, eine Grafik-Rendering-Pipeline zur Verarbeitung dreidimensionaler (3D) Grafikdaten zu implementieren, um zweidimensionale (2D) Bilddaten zur Anzeige auf einer Anzeigevorrichtung zu erzeugen. In einer anderen Ausführungsformen kann die PPU 400 zur Durchführung von Allzweckberechnungen verwendet werden. Während hierin ein exemplarischer Parallelprozessor zu Veranschaulichungszwecken bereitgestellt wird, sollte dringend beachtet werden, dass ein solcher Prozessor nur zu Veranschaulichungszwecken dargelegt wird, und dass irgendein Prozessor als dessen Ergänzung und/oder Ersatz eingesetzt werden kann.
  • Eine oder mehrere PPUs 400 können konfiguriert sein, Tausende von Hochleistungsrechen- (HPC), Datenzentrums-, Cloud-Computing- und maschinelle Lemanwendungen zu beschleunigen. Die PPU 400 kann konfiguriert sein, zahlreiche Deep-Learning-Systeme und -Anwendungen für autonome Fahrzeuge, Simulation, Computergrafik wie Ray- oder Path-Tracing, Deep-Learning, hochpräzise Sprach-, Bild- und Texterkennungssysteme, intelligente Videoanalyse, molekulare Simulationen, Wirkstoffentdeckung, Krankheitsdiagnose, Wettervorhersage, Big-Data-Analytik, Astronomie, Molekulardynamiksimulation, Finanzmodellierung, Robotik, Fabrikautomatisierung, Echtzeit-Sprachübersetzung, Online-Suchoptimierungen, und personalisierte Benutzerempfehlungen, und dergleichen zu beschleunigen.
  • Wie in 4 gezeigt, weist die PPU 400 eine Eingabe/Ausgabe-(I/O)-Einheit 405, eine Front-End-Einheit 415, eine Scheduler-Einheit 420, eine Arbeitsverteilungseinheit 425, einen Hub 430, eine Kreuzschiene (Xbar) 470, einen oder mehrere allgemeine Verarbeitungscluster (GPCs) 450 und eine oder mehrere Speicherpartitionseinheiten 480 auf. Die PPU 400 kann mit einem Host-Prozessor oder andere PPUs 400 über einen oder mehrere Hochgeschwindigkeits-NVLink 410 -Zusammenschaltungen verbunden sein. Die PPU 400 kann mit einem Host-Prozessor oder anderen Peripherievorrichtungen über eine Zusammenschaltung 402 verbunden sein. Die PPU 400 kann auch mit eine lokalen Speicher 404 verbunden sein, der eine Anzahl von Speichervorrichtungen aufweist. In einer Ausführungsform kann der lokale Speicher eine Anzahl von dynamischen Direktzugriffsspeicher- (DRAM) Vorrichtungen aufweisen. Die DRAM-Vorrichtungen können als ein Speicher- Subsystem mit hoher Bandbreite (HBM) mit mehreren DRAM-Chips konfiguriert sein, die in jeder Vorrichtung gestapelt sind.
  • Die Zusammenschaltung des NVLink 410 ermöglicht es Systemen, zu skalieren und eine oder mehrere PPUs 400 zu enthalten, die mit einer oder mehreren CPUs kombiniert sind, und unterstützt Cache-Kohärenz zwischen den PPUs 400 und CPUs und CPU-Mastering. Daten und/oder Befehle können durch den NVLink 410 durch den Hub 430 zu/von anderen Einheiten der PPU 400 wie eine oder mehrere Copy-Engines, einen Videocodierer, einen Videodecodierer, eine Energieverwaltungseinheit, usw. übertragen werden (die nicht ausdrücklich gezeigt werden). Der NVLink 410 wird in Verbindung mit 5B ausführlicher beschrieben.
  • Die I/O-Einheit 405 ist konfiguriert, Kommunikationen (z.B. Befehle, Daten, usw.) von einem (nicht gezeigten) Host-Prozessor über die Zusammenschaltung 402 zu senden und zu empfangen. Die I/O-Einheit 405 kann mit dem Host-Prozessor direkt über die Zusammenschaltung 402 oder durch eine oder mehrere Zwischenvorrichtungen wie eine Speicherbrücke kommunizieren. In einer Ausführungsform kann die I/O-Einheit 405 mit einem oder mehreren anderen Prozessoren, wie einer oder mehreren PPUs 400 über die Zusammenschaltung 402 kommunizieren. In einer Ausführungsform implementiert die I/O-Einheit 405 eine Peripheral Component Interconnect Express (PCIe) Schnittstelle für Kommunikationen über einen PCIe-Bus, und die Zusammenschaltung 402 ist ein PCIe-Bus. In alternativen Ausführungsformen kann die I/O-Einheit 405 andere Typen wohlbekannter Schnittstellen zum Kommunizieren mit externen Vorrichtungen implementieren.
  • Die I/O-Einheit 405 dekodiert über die Zusammenschaltung 402 empfangene Pakete. In einer Ausführungsform repräsentieren die Pakete Befehle, die konfiguriert sind, die PPU 400 zu veranlassen, verschiedene Operationen auszuführen. Die I/O-Einheit 405 überträgt die dekodierten Befehle an verschiedene andere Einheiten der PPU 400, wie es die Befehle angeben können. Beispielsweise können einige Befehle an die Front-End-Einheit 415 gesendet werden. Andere Befehle können an den Hub 430 oder andere Einheiten der PPU 400 gesendet werden, wie eine oder mehrere Copy-Engines, einen Videocodierer, einen Videodecodierer, eine Energieverwaltungseinheit usw. (die nicht ausdrücklich gezeigt werden). Mit anderen Worten ist die I/O-Einheit 405 konfiguriert, Kommunikationen zwischen und unter den verschiedenen logischen Einheiten der PPU 400 zu leiten.
  • In einer Ausführungsform codiert ein durch den Host-Prozessor ausgeführtes Programm einen Befehlsstrom in einem Puffer, der der PPU 400 Arbeitslasten zur Verarbeitung bereitstellt. Eine Arbeitslast kann mehrere Anweisungen und Daten aufweisen, die durch diese Anweisungen verarbeitet werden sollen. Die Puffer ist ein Bereich in einem Speicher, der sowohl durch den Host-Prozessor als auch die PPU 400 ansprechbar ist (z.B. lesen/schreiben). Beispielsweise kann die I/O-Einheit 405 konfiguriert sein, auf den Puffer in einem Systemspeicher, der mit der Zusammenschaltung 402 verbunden ist, über Speicherabfragen zuzugreifen, die über die Zusammenschaltung 402 gesendet werden. In einer Ausführungsform schreibt der Host-Prozessor den Befehlsstrom in den Puffer und überträgt dann einen Zeiger auf den Start des Befehlsstroms an die PPU 400. Die Front-End-Einheit 415 empfängt Zeiger auf einen oder mehrere Befehlsströmen. Die Front-End-Einheit 415 verwaltet den einen oder die mehreren Ströme, wobei sie Befehle aus den Strömen liest und Befehle an die verschiedenen Einheiten der PPU 400 weiterleitet.
  • Die Front-End-Einheit 415 ist mit einer Scheduler-Einheit 420 gekoppelt, die die verschiedenen GPCs 450 konfiguriert, Aufgaben zu verarbeiten, die durch den einen oder die mehreren Ströme definiert werden. Die Scheduler-Einheit 420 ist konfiguriert, Statusinformationen zu verfolgen, die die verschiedenen Aufgaben betreffen, die durch die Scheduler-Einheit 420 verwaltet werden. Der Status kann anzeigen, welchem GPC 450 eine Aufgabe zugewiesen ist, ob die Aufgabe aktiv oder inaktiv ist, eine mit der Aufgabe verknüpfte Prioritätsstufe und so weiter. Die Scheduler-Einheit 420 verwaltet die Ausführung mehrere Aufgaben auf dem einen oder den mehreren GPCs 450.
  • Die Scheduler-Einheit 420 ist mit einer Arbeitsverteilungseinheit 425 gekoppelt, die konfiguriert ist, Aufgaben zur Ausführung auf den GPCs 450 zu verteilen. Die Arbeitsverteilungseinheit 425 kann eine Anzahl geplanter Aufgaben verfolgen, die von der Scheduler-Einheit 420 empfangen werden. In einer Ausführungsform verwaltet die Arbeitsverteilungseinheit 425 einen Pool anstehender Aufgaben und einen Pool aktiver Aufgaben für jeden der GPCs 450. Wenn ein GPC 450 die Ausführung einer Aufgabe beendet, wird die Aufgabe aus dem Pool aktiver Aufgaben für den GPC 450 herausgeworfen und eine der anderen Aufgaben aus dem Pool anstehender Aufgaben wird ausgewählt und für die Ausführung am dem GPC 450 geplant. Wenn sich eine aktive Aufgabe aus dem GPC 450 im Leerlauf befunden hat, wie während des Wartens auf die Auflösung einer Datenabhängigkeit, dann kann die aktive Aufgabe aus dem GPC 450 herausgeworfen werden und in den Pool anstehender Aufgaben zurückgeschickt werden, während eine andere Aufgabe im Pool anstehender Aufgaben zur Ausführung auf dem GPC 450 ausgewählt und geplant wird.
  • In einer Ausführungsform führt ein Host-Prozessor einen Treiberkernel aus, der eine Anwendungsprogrammierschnittstelle (API) implementiert, die es einer oder mehreren auf dem Host-Prozessor ausgeführten Anwendungen ermöglicht, Operationen zur Ausführung auf der PPU 400 zu planen. In einer Ausführungsform werden mehrere Rechenanwendungen gleichzeitig durch die PPU 400 ausgeführt, und die PPU 400 stellt eine Isolation, Dienstgüte (QoS) und unabhängige Adressräume für die mehreren Rechenanwendungen bereit. Eine Anwendung kann Anweisungen (z.B. API-Aufrufe) erzeugen, die den Treiberkernel veranlassen, eine oder mehrere Aufgaben zur Ausführung durch die PPU 400 zu erzeugen. Der Treiberkemel gibt Aufgaben an einen oder mehrere Ströme aus, die durch die PPU 400 verarbeitet werden. Jede Aufgabe kann eine oder mehrere Gruppen verwandter Threads aufweisen, die hierin als ein Warp bezeichnet werden. In einer Ausführungsform weist ein Warp 32 verwandte Threads auf, die parallel ausgeführt werden können. Kooperierende Threads können sich auf mehrere Threads beziehen, die Anweisungen enthalten, um die Aufgabe auszuführen, und die Daten durch einen gemeinsam genutzten Speicher austauschen können. Die Aufgaben können einer oder mehreren Verarbeitungseinheiten innerhalb eines GPC 450 zugewiesen werden, und Anweisungen werden zur Ausführung durch mindestens einen Warp geplant.
  • Die Arbeitsverteilungseinheit 425 kommuniziert mit dem einen oder mehrere GPCs 450 über eine XBar 470. Die XBar 470 ist ein Verbindungsnetzwerk, das viele der Einheiten der PPU 400 mit anderen Einheiten der PPU 400 koppelt. Beispielsweise kann die XBar 470 konfiguriert sein, die Arbeitsverteilungseinheit 425 mit einem bestimmten GPC 450 zu koppeln. Obwohl dies nicht deutlich gezeigt wird, können eine oder mehrere andere Einheiten der PPU 400 ebenfalls mit der XBar 470 über den Hub 430 verbunden sein.
  • Die Aufgaben werden durch die Scheduler-Einheit 420 verwaltet und an einen GPC 450 durch die Arbeitsverteilungseinheit 425 verteilt. Der GPC 450 ist konfiguriert, die Aufgabe zu verarbeiten und Ergebnisse zu erzeugen. Die Ergebnisse können durch andere Aufgaben innerhalb des GPC 450 verbraucht, zu einem anderen GPC 450 über die XBar 470 geleitet werden oder im Speicher 404 gespeichert werden. Die Ergebnisse können in den Speicher 404 über die Speicherpartitionseinheiten 480 geschrieben werden, die eine Speicherschnittstelle zum Lesen und Schreiben von Daten aus/in den Speicher 404 implementieren. Die Ergebnisse können an eine andere PPU 400 oder CPU über den NVLink 410 übertragen werden. In einer Ausführungsform weist die PPU 400 eine Anzahl U Speicherpartitionseinheiten 480 auf, die gleich der Anzahl getrennter und unterschiedlicher Speichervorrichtungen des Speichers 404 ist, die mit der PPU 400 gekoppelt sind. Jeder GPC 450 kann eine Speicherverwaltungseinheit aufweisen, um eine Übersetzung virtueller Adressen in physikalische Adressen, Speicherschutz und eine Arbitration von Speicherabfragen bereitzustellen. In einer Ausführungsform stellt die Speicherverwaltungseinheit einen oder mehrere Adressenübersetzungspuffer (TLBs) zur Durchführung der Übersetzung virtueller Adressen in physikalische Adressen im Speicher 404 bereit.
  • In einer Ausführungsform weist die Speicherpartitionseinheit 480 eine Rasteroperations- (ROP) Einheit, einen Level-2- (L2) Cache und eine Speicherschnittstelle auf, die mit dem Speicher 404 gekoppelt ist. Die Speicherschnittstelle kann Datenbusse mit 32, 64, 128, 1024 Bit oder dergleichen zur Hochgeschwindigkeits-Datenübertragung implementieren. Die PPU 400 kann mit bis zu Y Speichervorrichtungen verbunden sein, wie einen Stapelspeicher mit hoher Bandbreite oder einem synchronen dynamischen Grafik-Direktzugriffsspeicher mit doppelter Datenrate, Version 5, oder anderen persistenten Speichertypen. In einer Ausführungsform implementiert die Speicherschnittstelle eine HBM2-Speicherschnittstelle und Y ist gleich der Hälfte von U. In einer Ausführungsform sind die HBM2-Stapelspeicher auf demselben physikalischen Gehäuse wie die PPU 400 angeordnet, wobei im Vergleich zu herkömmlichen GDDR5-SDRAM-Systemen wesentliche Energie- und Flächeneinsparungen bereitgestellt werden. In einer Ausführungsform weist jeder HBM2-Stapel vier Speicherchips auf, und Y ist gleich 4, wobei jeder HBM2-Stapel zwei 128-Bit-Kanäle pro Die für insgesamt 8 Kanäle und eine Datenbusbreite von 1024 Bits aufweist.
  • In einer Ausführungsform unterstützt der Speicher 404 einen Einzelbitfehlerkorrektur-Doppelbitfehlererkennungs- (SECDED) Fehlerkorrekturcode (ECC), um Daten zu schützen. ECC stellt eine höhere Zuverlässigkeit für Rechenanwendungen bereit, die empfindlich auf Datenbeschädigungen reagieren. Zuverlässigkeit ist besonders wichtig in großen Cluster-Rechenumgebungen, in denen die PPUs 400 sehr große Datensätze verarbeiten und/oder Anwendungen über ausgedehnte Zeiträume ausführen.
  • In einer Ausführungsform implementiert die PPU 400 eine mehrstufige Speicherhierarchie. In einer Ausführungsform unterstützt die Speicherpartitionseinheit 480 einen vereinheitlichten Speicher, um einen einzelnen vereinheitlichten virtuellen Adressraum für den Speicher der CPU und der PPU 400 bereitzustellen, wodurch die gemeinsame Nutzung von Daten zwischen virtuellen Speichersystemen ermöglicht wird. In einer Ausführungsform wird die Häufigkeit von Zugriffen durch eine PPU 400 auf Speicher, der sich auf anderen Prozessoren befindet, verfolgt, um sicherzustellen, dass Speicherseiten in den physikalischen Speicher der PPU 400 bewegt werden, die häufiger auf die Seiten zugreift. In einer Ausführungsform unterstützt der NVLink 410 Adressübersetzungsdienste, die es der PPU 400 ermöglichen, direkt auf Seitentabellen einer CPU zuzugreifen, und einen vollständigen Zugriff auf den CPU-Speicher durch die PPU 400 bereitstellen.
  • In einer Ausführungsform übertragen Copy-Engines Daten zwischen mehreren PPUs 400 oder zwischen PPUs 400 und CPUs. Die Copy-Engines können Seitenfehler für Adressen erzeugen, die nicht in die Seitentabellen abgebildet sind. die Speicherpartitionseinheit 480 kann dann die Seitenfehler bedienen, wobei sie die Adressen in die Seitentabelle abbildet, wonach die Copy-Engine die Übertragung durchführen kann. In einem herkömmlichen System ist Speicher für mehrere Copy-Engine-Operationen zwischen mehrere Prozessoren angeheftet (z.B. nichtauslagerbar), wobei der verfügbare Speicher wesentlich reduziert wird. Mit einer Hardware-Seitenfehlerbehandlung können Adressen an die Copy-Engines weitergegeben werden, ohne sich Sorgen machen zu müssen, ob die Speicherseiten resident sind, und der Kopierprozess ist transparent.
  • Daten aus dem Speicher 404 oder einem anderen Systemspeicher können durch die Speicherpartitionseinheit 480 abgerufen und im L2-Cache 460 gespeichert werden, der sich auf dem Chip befindet und von den verschiedenen GPCs 450 gemeinsam genutzt wird. Wie gezeigt, weist jede Speicherpartitionseinheit 480 einen Abschnitt des L2-Cache auf, der mit einem entsprechenden Speicher 404 verknüpft ist. Caches niedrigerer Level können dann in verschiedenen Einheiten innerhalb der GPCs 450 implementiert werden. Beispielsweise kann jede der Verarbeitungseinheiten innerhalb eines GPC 450 einen Level-1 (L1) Cache implementieren. Der L1-Cache ist ein privater Speicher, der einer bestimmten Verarbeitungseinheit zugeordnet ist. Der L2-Cache 460 ist mit der Speicherschnittstelle 470 und der XBar 470 gekoppelt, und Daten aus dem L2-Cache können abgerufen und in jedem der L1-Caches zur Verarbeitung gespeichert werden.
  • In einer Ausführungsform implementieren die Verarbeitungseinheiten innerhalb jeder GPC 450 eine SIMD- (Single-Instruction, Multiple-Data) Architektur, wobei jeder Thread in einer Gruppe von Threads (z.B. einem Warp) konfiguriert ist, beruhend auf demselben Satz von Anweisungen einen anderen Satz von Daten zu verarbeiten. Alle Threads in der Gruppe der Threads führen dieselben Anweisungen aus. In einer anderen Ausführungsform implementiert die Verarbeitungseinheit eine SIMT (Single-Instruction, Multiple Thread) Architektur, wobei jeder Thread in einer Gruppe von Threads konfiguriert ist, beruhend auf demselben Satz von Anweisungen einen anderen Satz von Daten zu verarbeiten, wobei jedoch einzelne Threads in der Gruppe der Threads während der Ausführung divergieren dürfen. In einer Ausführungsform werden ein Programmzähler, ein Aufrufstapel und ein Ausführungszustand für jeden Warp unterhalten, was eine Gleichzeitigkeit zwischen Warps und eine serielle Ausführung innerhalb von Warps ermöglicht, wenn Threads innerhalb des Warps divergieren. In einer anderen Ausführungsform werden ein Programmzähler, ein Aufrufstapel und ein Ausführungszustand für jeden einzelnen Thread unterhalten, was eine Gleichzeitigkeit zwischen allen Threads innerhalb und zwischen Warps ermöglicht. Wenn der Ausführungszustand für jeden einzelnen Thread unterhalten wird, können Threads, die dieselben Anweisungen ausführen, konvergiert und für maximale Effizienz parallel ausgeführt werden.
  • Kooperative Gruppen ist ein Programmiermodell zum Organisieren von Gruppen von kommunizierenden Threads, das es Entwicklern ermöglicht, die Granularität auszudrücken, mit der Threads kommunizieren, was den Ausdruck reichhaltigerer, effizienterer paralleler Dekompositionen ermöglicht. Kooperative Start-APIs unterstützen die Synchronisation zwischen Thread-Blöcken für die Ausführung paralleler Algorithmen. Herkömmliche Programmiermodelle stellen ein einzelnes, einfaches Konstrukt zum Synchronisieren kooperierender Threads bereit: eine Barriere über alle Threads eines Threadblocks: (z.B. die syncthreads( )-Funktion). Programmierer möchten jedoch häufig Gruppen von Threads mit kleineren als Thread-Blockgranularitäten definieren und innerhalb der definierten Gruppen synchronisieren, um eine höhere Leistung, Designflexibilität und Software-Wiederverwendung in Form von kollektiven gruppenweiten Funktionsschnittstellen zu ermöglichen.
  • Kooperative Gruppen ermöglichen es Programmierern, Gruppen von Threads explizit an Subblock- (z. B. so klein wie ein einzelner Thread) und Multiblock-Granularitäten zu definieren und kollektive Operationen wie die Synchronisation an den Threads in einer kooperativen Gruppe durchzuführen. Das Programmiermodell unterstützt eine saubere Komposition über Softwaregrenzen hinweg, so dass sich Bibliotheken und Dienstprogrammfunktionen innerhalb ihres lokalen Kontexts sicher synchronisieren können, ohne Annahmen über Konvergenz treffen zu müssen. Primitive kooperativer Gruppen ermöglichen neue Muster kooperativer Parallelität, einschließlich Erzeuger-Verbraucher-Parallelität, opportunistischer Parallelität und globaler Synchronisation über ein ganzes Raster von Thread-Blöcken.
  • Jede Verarbeitungseinheit weist eine große Anzahl (z.B. 128 usw.) von unterschiedlichen Verarbeitungskernen (z.B. Funktionseinheiten) auf, die vollständig über eine Pipeline verbunden, mit einfacher Genauigkeit, doppelter Genauigkeit und/oder gemischter Genauigkeit sein können und eine Gleitkomma-Arithmetik-Logik-Einheit und eine Ganzzahl-Arithmetik-Logik-Einheit aufweisen können. In einer Ausführungsform implementieren die Gleitkomma-Arithmetik-Logikeinheiten den IEEE 754-2008-Standard für Gleitkomma-Arithmetik. In einer Ausführungsform weisen die Kerne 64 Gleitkommakeme mit einfacher Genauigkeit (32 Bit), 64 Ganzzahlkerne, 32 Gleitkommakeme mit doppelter Genauigkeit (64 Bit) und 8 Tensorkerne auf.
  • Tensorkerne sind konfiguriert, Matrixoperationen durchzuführen. Insbesondere sind die Tensorkerne konfiguriert, eine Deep-Learning-Matrixarithmetik durchzuführen, wie GEMM (Matrix-Matrix-Multiplikation) für Faltungsoperationen während des Trainings eines neuronalen Netzwerks und der Inferenz. In einer Ausführungsform arbeitet jeder Tensorkern an einer 4x4-Matrix und führt eine Matrixmultiplikations- und -Akkumulationsoperation D=A×B+C aus, wobei A, B, C, und D 4x4-Matrizen sind.
  • In einer Ausführungsform können die Matrixmultiplikationseingaben A und B Ganzzahl-, Festkomma- oder Gleitkomma-Matrizen sein, während die Akkumulationsmatrizen C und D Ganzzahl-, Festkomma- oder Gleitkomma-Matrizen mit gleichen oder größeren Bitbreiten sein können. In einer Ausführungsform arbeiten Tensorkerne an Ein-, Vier- oder Acht-Bit-Ganzzahl-Eingangsdaten mit 32-Bit-Ganzzahl-Akkumulation. Die 8-Bit-Ganzzahl-Matrixmultiplikation erfordert 1024 Operationen und führt zu einem Produkt mit voller Genauigkeit, das dann unter Verwendung einer 32-Bit-Ganzzahladdition mit den anderen Zwischenprodukten für eine 8x8x16-Matrixmultiplikation akkumuliert wird. In einer Ausführungsform arbeiten Tensorkerne an 16-Bit-Gleitkomma-Eingangsdaten mit 32-Bit-Gleitkomma-Akkumulation. Die 16-Bit-Gleitkommamultiplikation erfordert 64 Operationen und führt zu einem Produkt mit voller Genauigkeit, das dann unter Verwendung einer 32-Bit-Gleitkommaaddition mit den anderen Zwischenprodukten für eine 4x4x4-Matrixmultiplikation akkumuliert wird. In der Praxis werden Tensorkerne verwendet, um viel größere zweidimensionale oder höherdimensionale Matrixoperationen durchzuführen, die aus diesen kleineren Elementen aufgebaut sind. Eine API, wie die CUDA 9 C++ API, weist spezialisierte Matrixlade-, Matrixmultiplizier- und -Akkumulations- und Matrixspeicheroperationen auf, um effizient Tensor-Kerne aus einem CUDA-C++-Programm zu verwenden. Auf der CUDA-Ebene setzt die Schnittstelle auf Warp-Ebene Matrizen der Größe 16x16 voraus, die sich über alle 32 Threads des Warps erstrecken.
  • Jede Verarbeitungseinheit kann auch M spezielle Funktionseinheiten (SFUs) aufweisen, die spezielle Funktionen ausführen (z.B. Attributbewertung, reziproke Quadratwurzel und dergleichen). In einer Ausführungsform können die SFUs eine Baum-Traversierungseinheit aufweisen, die konfiguriert ist, eine hierarchische Baumdatenstruktur zu traversieren. In einer Ausführungsform können die SFUs eine Textureinheit aufweisen, die konfiguriert ist, Textur-Map-Filteroperationen durchzuführen. In einer Ausführungsform sind die Textureinheiten konfiguriert, Textur-Maps (z.B. eine 2D-Anordnung von Texeln) aus dem Speicher 404 zu laden und die Textur-Maps abzutasten, um abgetastete Texturwerte zur Verwendung in Shader-Programmen zu erzeugen, die durch die Verarbeitungseinheit ausgeführt werden. In einer Ausführungsform werden die Textur-Maps einem gemeinsam genutzten Speicher gespeichert, der einen L1-Cache kann aufweisen oder enthalten kann. Die Textureinheiten implementieren Texturoperationen wie Filteroperationen unter Verwendung von Mip-Maps (z.B. Textur-Maps variierender Detaillierungsgrade). In einer Ausführungsform weist jede Verarbeitungseinheit zwei Textureinheiten auf.
  • Jede Verarbeitungseinheit weist außerdem N Lade-/Speichereinheiten (LSUs) auf, die Lade- und Speicheroperationen zwischen dem gemeinsam genutzten Speicher und der Registerdatei implementieren. Jede Verarbeitungseinheit weist ein Zusammenschaltungsnetzwerk auf, das jeden der Kerne mit der Registerdatei und die LSU mit der Registerdatei, dem gemeinsam genutzten Speicher verbindet. In einer Ausführungsform ist das Verbindungsnetzwerk eine Kreuzschiene, die konfiguriert sein kann, jeden der Kerne mit irgendeinem der Register in der Registerdatei zu verbinden und die LSUs mit der Registerdatei und Speicherstellen im gemeinsam genutzten Speicher zu verbinden.
  • Der gemeinsam genutzten Speicher ist eine Speicheranordnung innerhalb des Chips, die eine Datenspeicherung und Kommunikation zwischen den Verarbeitungseinheiten und zwischen Threads innerhalb einer Verarbeitungseinheit ermöglicht. In einer Ausführungsform weist der gemeinsam genutzte Speicher 128 KB Speicherkapazität auf und befindet sich auf dem Pfad von jeder der Verarbeitungseinheiten zur Speicherpartitionseinheit 480. Der gemeinsam genutzte Speicher kann verwendet werden, um Lese- und Schreibvorgänge zwischenzuspeichern. Einer oder mehrere des gemeinsam genutzten Speichers, L1-Cache, L2-Cache und Speichers 404 sind Unterstützungsspeicher.
  • Das Kombinieren der Datencache- und gemeinsam genutzten Speicher-Funktionalität in einem einzigen Speicherblock liefert die beste Gesamtleistung für beide Arten von Speicherzugriffen. Die Kapazität ist durch Programme als ein Cache nutzbar, die keinen gemeinsam genutzten Speicher verwenden. Wenn beispielsweise der gemeinsam genutzte Speicher konfiguriert ist, die Hälfte der Kapazität zu verwenden, können Textur- und Lade-/Speicheroperationen die restliche Kapazität verwenden. Die Integration in den gemeinsam genutzten Speicher ermöglicht es dem gemeinsam genutzten Speicher, als Hochdurchsatzkanal zum Streamen von Daten zu dienen, während gleichzeitig ein Zugriff mit hoher Bandbreite und geringer Latenz auf häufig wiederverwendete Daten bereitgestellt wird.
  • Wenn sie für eine Allzweck-Parallelberechnung konfiguriert ist, kann im Vergleich zur Grafikverarbeitung eine einfachere Konfiguration verwendet werden. Insbesondere werden Grafikverarbeitungseinheiten mit fester Funktion umgangen, was ein viel einfacheres Programmiermodell erzeugt. In der Allzweck-Parallelberechnungskonfiguration weist die Arbeitsverteilungseinheit 425 Blöcke von Threads direkt den Verarbeitungseinheiten innerhalb der GPCs 450 zu und verteilt sie an diese. Threads führen dasselbe Programm aus, wobei sie eine eindeutige Thread-ID in der Berechnung verwenden, um sicherzustellen, dass jeder Thread eindeutige Ergebnisse erzeugt, wobei sie die Verarbeitungseinheit(en) verwenden, um das Programm auszuführen und Berechnungen durchzuführen, den gemeinsam genutzten Speicher verwenden, um zwischen Threads zu kommunizieren, und die LSU verwenden, um einen globalen Speicher durch den gemeinsam genutzten Speicher und die Speicherpartitionseinheit 480 zu lesen und zu schreiben. Wenn sie zur Allzweck-Parallelberechnung konfiguriert sind, können die Verarbeitungseinheiten auch Befehle schreiben, die die Scheduler-Einheit 420 verwenden kann, um eine neue Arbeit auf den Verarbeitungseinheiten zu starten.
  • Die PPUs 400 kann jeweils einen oder mehrere Verarbeitungskerne und/oder Komponenten davon enthalten und/oder konfiguriert sein, deren Funktionen auszuführen, wie Tensorkerne (TCs), Tensor-Verarbeitungseinheiten (TPUs), Pixel Visual Cores (PVCs), Raytracing (RT) Kerne, Vision Verarbeitung Units (VPUs), Grafikverarbeitungscluster (GPCs), Texturverarbeitungscluster (TPCs), Streaming-Multiprozessoren (SMs), Baum-Traversierungseinheiten (TTUs), Beschleuniger für künstliche Intelligenz (AIAs), Deep Learning-Beschleuniger (DLAs), arithmetisch-logische Einheiten (ALUs), Anwendungsspezifische integrierte Schaltungen (ASICs), Gleitkomma-Einheiten (FPUs), Eingabe/Ausgabe (I/O) Elemente, Peripheral Component Interconnect (PCI) oder Peripheral Component Interconnect express (PCIe) Elemente und/oder dergleichen.
  • Die PPU 400 kann in einem Tischcomputer, einem Laptop, einem Tablet-Computer, Servern, Supercomputern, einem Smartphone (z.B. einer drahtlosen, tragbaren Vorrichtung), einem persönlichen digitalen Assistenten (PDA), einer Digitalkamera, einem Fahrzeug, einer am Kopf angebrachten Anzeige, einem tragbaren elektronischen Gerät und dergleichen enthalten sein. In einer Ausführungsform ist die PPU 400 auf einem einzigen Halbleitersubstrat ausgeführt. In einer anderen Ausführungsform ist die PPU 400 in einem System-on-a-Chip (SoC) zusammen mit einer oder mehreren anderen Vorrichtungen wie zusätzlichen PPUs 400, dem Speicher 404, einer CPU mit reduziertem Befehlssatz (RISC), einer Speicherverwaltungseinheit (MMU), einem Digital-Analog-Wandler (DAC) und dergleichen enthalten.
  • In einer Ausführungsform kann die PPU 400 auf einer Grafikkarte enthalten sein, die eine oder mehrere Speichervorrichtungen enthält. Die Grafikkarte kann konfiguriert sein, mit einem PCIe-Slot auf einer Hauptplatine eines Tischcomputers zu koppeln. In noch einer anderen Ausführungsform kann die PPU 400 eine integrierte Grafikverarbeitungseinheit (iGPU) oder ein Parallelprozessor sein, der im Chipsatz der Hauptplatine enthalten ist. In noch einer anderen Ausführungsform kann die PPU 400 in rekonfigurierbarer Hardware realisiert werden. In noch einer anderen Ausführungsform können Teile der PPU 400 in rekonfigurierbarer Hardware realisiert werden.
  • Exemplarisches Rechensystem
  • Systeme mit mehreren GPUs und CPUs werden in einer Vielfalt von Branchen verwendet, da Entwickler mehr Parallelität in Anwendungen, wie Rechnen mit künstlicher Intelligenz herausstellen und sich zu Nutze machen. GPU-beschleunigte Hochleistungssysteme mit Dutzenden bis zu vielen Tausend Rechenknoten werden in Datenzentren, Forschungseinrichtungen und Supercomputern eingesetzt, um immer größere Probleme zu lösen. Da die Anzahl der Verarbeitungsvorrichtungen innerhalb der Hochleistungssysteme zunimmt, müssen die Kommunikations- und Datenübertragungsmechanismen skaliert werden, um die erhöhte Bandbreite zu unterstützen.
  • 5A ist ein konzeptionelles Diagramm eines Verarbeitungssystems 500, das unter Verwendung der PPU 400 der 4 implementiert ist, gemäß einer Ausführungsform. Das exemplarische System 565 kann konfiguriert sein, das erscheinungsbildgesteuerte automatische 3D-Modellierungssystem 150 und/oder das in 1B gezeigte Verfahren 130 zu implementieren. Das Verarbeitungssystem 500 weist eine CPU 530, einen Switch 510 und mehrere PPUs 400 und jeweilige Speicher 404 auf.
  • Der NVLink 410 stellt Hochgeschwindigkeits-Kommunikationsverbindungen zwischen jeder der PPUs 400 bereit. Obwohl eine bestimmte Anzahl von NVLink- 410 und Zusammenschaltungs- 402 Verbindungen in 5B dargestellt sind, kann die Anzahl der Verbindungen mit jeder PPU 400 und der CPU 530 variieren. Der Switch 510 bildet eine Schnittstelle zwischen der Zusammenschaltung 402 und der CPU 530. Die PPUs 400, die Speicher 404 und die NVLinks 410 können auf einer einzigen Halbleiterplattform angeordnet sein, um ein Parallelverarbeitungsmodul 525 zu bilden. In einer Ausführungsform unterstützt der Switch 510 zwei oder mehrere Protokolle, um zwischen vielen unterschiedlichen Verbindungen und/oder Links zu koppeln.
  • In einer anderen (nicht gezeigten) Ausführungsform stellt der NVLink 410 eine oder mehrere Hochgeschwindigkeits-Kommunikationsverbindungen zwischen jeder der PPUs 400 und der CPU 530 bereit, und der Switch 510 bildet eine Schnittstelle zwischen der Zusammenschaltung 402 und jeder der PPUs 400. Die PPUs 400, die Speicher 404 und die Zusammenschaltung 402 können auf einer einzigen Halbleiterplattform angeordnet sein, um ein Parallelverarbeitungsmodul 525 zu bilden. In noch einer anderen (nicht gezeigten) Ausführungsform stellt die Zusammenschaltung 402 eine oder mehrere Kommunikationsverbindungen zwischen jeder der PPUs 400 und der CPU 530 bereit und der Switch 510 bildet eine Schnittstelle zwischen jeder der PPUs 400 unter Verwendung des NVLink 410, um eine oder mehrere Hochgeschwindigkeits-Kommunikationsverbindungen zwischen den PPUs 400 bereitzustellen. In einer anderen (nicht gezeigten) Ausführungsform stellt der NVLink 410 eine oder mehrere Hochgeschwindigkeits-Kommunikationsverbindungen zwischen den PPUs 400 und der CPU 530 durch den Switch 510 bereit. In noch einer anderen (nicht gezeigten) Ausführungsform stellt die Zusammenschaltung 402 direkt eine oder mehrere Kommunikationsverbindungen zwischen jeder der PPUs 400 bereit. Eine oder mehrere der Hochgeschwindigkeits-Kommunikationsverbindungen des NVLink 410 können als ein physikalische NVLink-Zusammenschaltung oder entweder eine On-Chip- oder On-Die-Zusammenschaltung unter Verwendung desselben Protokolls wie der NVLink 410 implementiert sein.
  • Im Kontext der vorliegenden Beschreibung kann sich eine einzige Halbleiterplattform auf eine einzige einheitliche integrierte Schaltung auf Halbleiterbasis beziehen, die auf einem Die oder Chip hergestellt ist. Es sollte beachtet werden, dass sich der Begriff einzige Halbleiterplattform auch auf Mehrchipmodule mit erhöhter Konnektivität beziehen kann, die eine Operation auf dem Chip simulieren und wesentliche Verbesserungen gegenüber der Verwendung einer herkömmlichen Bus-Implementierung bewirken. Natürlich können die verschiedenen Schaltungen oder Vorrichtungen auch getrennt oder in verschiedenen Kombinationen von Halbleiterplattformen nach den Wünschen des Benutzers angeordnet sein. Alternativ kann das Parallelverarbeitungsmodul 525 als Leiterplattensubstrat implementiert sein und jede der PPUs 400 und/oder der Speicher 404 kann eine Vorrichtung im Gehäuse sein. In einer Ausführungsform sind die CPU 530, der Switch 510 und das Parallelverarbeitungsmodul 525 auf einer einzigen Halbleiterplattform angeordnet.
  • In einer Ausführungsform beträgt die Signalisierungsrate jedes NVLink 410 20 bis 25 Gigabit/Sekunde, und jede PPU 400 weist sechs NVLink- 410 Schnittstellen auf (wie in 5A gezeigt, sind fünf NVLink- 410 Schnittstellen für jede PPU 400 enthalten). Jeder NVLink 410 stellt eine Datenübertragungsrate von 25 Gigabyte/Sekunde in jeder Richtung bereit, wobei sechs Verbindungen 400 Gigabyte/Sekunde bereitstellen. Die NVLinks 410 können ausschließlich für die PPU-zu-PPU-Kommunikation verwendet werden, wie in 5A gezeigt, oder eine Kombination von PPU-zu-PPU und PPU-zu-CPU, wenn die CPU 530 530 auch eine oder mehrere NVLink- 410 Schnittstellen aufweist.
  • In einer Ausführungsform ermöglicht der NVLink 410 einen direkten Lade-/Speicher-/atomaren Zugriff von der CPU 530 auf jeden Speicher 404 der PPU 400. In einer Ausführungsform unterstützt der NVLink 410 Kohärenzoperationen, die es ermöglichen, dass aus den Speichern 404 ausgelesene Daten in der Cache-Hierarchie der CPU 530 gespeichert werden, wobei die Cache-Zugriffslatenz für die CPU 530 reduziert wird. In einer Ausführungsform weist der NVLink 410 eine Unterstützung für Adressübersetzungsdienste (ATS) auf, die es der PPU 400 ermöglichen, direkt auf Seitentabellen innerhalb der CPU 530 zuzugreifen. Einer oder mehrere der NVLinks 410 können auch konfiguriert sein, in einem Modus mit niedriger Leistung zu arbeiten.
  • 5B stellt ein exemplarisches System 565 dar, in dem die verschiedene Architektur und/oder Funktionalität der verschiedenartigen vorhergehenden Ausführungsformen implementiert werden kann. Das exemplarische System 565 kann konfiguriert sein, das erscheinungsbildgesteuerte automatische 3D-Modellierungssystem 150 und/oder das in 1B gezeigte Verfahren 130 zu implementieren.
  • Wie gezeigt, wird ein System 565 bereitgestellt, das mindestens eine Zentraleinheit 530 aufweist, die mit einem Kommunikationsbus 575 verbunden ist. Der Kommunikationsbus 575 kann direkt oder indirekt eine oder mehrere der folgenden Vorrichtungen koppeln: Hauptspeicher 540, Netzwerk-Schnittstelle 535, CPU(s) 530, Anzeigevorrichtung(en) 545, Eingabevorrichtung(en) 560, den Switch 510 und das Parallelverarbeitungssystem 525. Der Kommunikationsbus 575 kann unter Verwendung eines beliebigen geeigneten Protokolls implementiert werden und kann eine oder mehrere Verbindungen oder Busse repräsentieren, wie einen Adressbus, einen Datenbus, einen Steuerbus oder eine Kombination davon. Der Kommunikationsbus 575 kann einen oder mehrere Bus- oder Verbindungstypen aufweisen, wie einen Industry Standard Architecture (ISA) Bus, einen Extended Industry Standard Architecture (EISA) Bus, eine Video Electronics Standards Association (VESA) Bus, einen Peripheral Component Interconnect (PCI) Bus, eine Peripheral Component Interconnect express (PCIe) Bus, HyperTransport und/oder eine andere Art von Bus oder Verbindung. In einigen Ausführungsformen gibt es direkte Verbindungen zwischen Komponenten. Als Beispiel können die CPU(s) 530 direkt mit dem Hauptspeicher 540 verbunden sein. Ferner können die CPU(s) 530 direkt mit dem Parallelverarbeitungssystem 525 verbunden sein. Wo es eine direkte oder Punkt-zu-Punkt-Verbindung zwischen Komponenten gibt, kann der Kommunikationsbus 575 eine PCIe-Verbindung aufweisen, um die Verbindung auszuführen. In diesen Beispielen muss kein PCI-Bus im System 565 enthalten sein.
  • Obwohl die verschiedenen Blöcke der 5C so gezeigt werden, dass sie über den Kommunikationsbus 575 mit Leitungen verbunden sind, wird nicht beabsichtigt, dass dies einschränkend ist, und dient nur der Klarheit. Beispielsweise kann in einigen Ausführungsformen eine Präsentationskomponente, wie die Anzeigevorrichtung(en) 545, als eine I/O-Komponente betrachtet werden, wie die Eingabevorrichtung(en) 560 (wenn z.B. die Anzeige ein Berührungsbildschirm ist). Als weiteres Beispiel können die CPU(s) 530 und/oder das Parallelverarbeitungssystem 525 einen Speicher enthalten (z.B. kann der Hauptspeicher 540 für eine Speichervorrichtung zusätzlich zum Parallelverarbeitungssystem 525, der CPUs 530 und/oder anderen Komponenten repräsentativ sein). Mit anderen Worten ist die Rechenvorrichtung der 5C lediglich veranschaulichend. Es wird kein Unterschied zwischen solchen Kategorien wie „Workstation“, „Server“, „Laptop“, „Desktop“, „Tablet“, „Client-Vorrichtung“, „Mobilvorrichtung“, „tragbare Vorrichtung“, „Spielekonsole“ „elektronische Steuereinheit (ECU)“, „virtuelles Realitätssystem“ und/oder anderen Vorrichtungs- oder Systemtypen gemacht, da alle als innerhalb des Rahmens der Rechenvorrichtung der 5C erwogen werden.
  • Das System 565 weist auch einen Hauptspeicher 540 auf. Es werden eine Steuerlogik (Software) und Daten im Hauptspeicher 540 gespeichert, der die Form einer Vielfalt von computerlesbaren Medien annehmen kann. Die computerlesbaren Medien können beliebige verfügbare Medien sein, auf die durch das System 565 zugegriffen werden kann. Die computerlesbaren Medien können sowohl flüchtige als auch nichtflüchtige Medien, und entfernbare und nicht entfernbare Medien aufweisen. Als Beispiel und nicht als Einschränkung können die computerlesbaren Medien Computerspeichermedien und Kommunikationsmedien aufweisen.
  • Die Computerspeichermedien können sowohl flüchtige als auch nichtflüchtige Medien und/oder entfernbare und nicht entfernbare Medien aufweisen, die in irgendeinem Verfahren oder einer Technologie zum Speichern von Informationen implementiert sind, wie computerlesbare Anweisungen, Datenstrukturen, Programmmodule und/oder andere Datentypen. Beispielsweise kann der Hauptspeicher 540 computerlesbare Anweisungen speichern (die z.B. ein oder mehrere Programme und/oder ein oder mehrere Programmelemente repräsentieren), wie ein Betriebssystem. Computerspeichermedien können ein RAM, ROM, EEPROM, Flash-Speicher oder eine andere Speichertechnologie, CD-ROM, Digital Versatile Disks (DVD) oder einen anderen optischen Plattenspeicher, Magnetkassetten, ein Magnetband, einen Magnetplattenspeicher oder andere magnetische Speichervorrichtungen, oder irgendein anderes Medium aufweisen, das verwendet werden kann, um die gewünschten Informationen zu speichern und auf das durch das System 565 zugegriffen werden kann, sind jedoch nicht darauf beschränkt. Wie sie hierin verwendet werden, weisen Computerspeichermedien keine Signale als solche auf.
  • Die Computerspeichermedien können computerlesbare Anweisungen, Datenstrukturen, Programmmodule und/oder andere Datentypen in einem modulierten Datensignal wie etwa einer Trägerwelle oder einem anderen Transportmechanismus enthalten und umfassen beliebige Informationsliefermedien. Der Begriff „moduliertes Datensignal“ kann sich auf ein Signal beziehen, bei dem eine oder mehrere seiner Eigenschaften in einer solchen Weise eingestellt oder geändert wurden, dass Informationen in dem Signal codiert werden. Beispielsweise und nicht einschränkend können die Computerspeichermedien drahtgebundene Medien enthalten, wie ein drahtgebundenes Netzwerk oder eine drahtgebundene Direktverbindung, und drahtlose Medien, wie akustische, HF-, Infrarot- und andere drahtlose Medien. Kombinationen der oben genannten sollten ebenfalls innerhalb des Rahmens computerlesbarer Medien enthalten sein.
  • Wenn sie ausgeführt werden, ermöglichen Computerprogramme es dem System 565, verschiedene Funktionen auszuführen. Die CPU(s) 530 können konfiguriert sein, mindestens einige der computerlesbaren Anweisungen auszuführen, um eine oder mehrere Komponenten des Systems 565 zu steuern, eines oder mehrere der hierin beschriebenen Verfahren und/oder Prozesse auszuführen. Die CPU(s) 530 können jeweils einen oder mehrere Kerne (z.B. ein, zwei, vier, acht, achtundzwanzig, zweiundsiebzig usw.) enthalten, die in der Lage sind, eine Vielzahl von Software-Threads gleichzeitig zu handhaben. Die CPU(s) 530 können jeden Typ Prozessor aufweisen und können unterschiedliche Typen von Prozessoren aufweisen, abhängig vom Typ des implementierten Systems 565 (z.B. Prozessoren mit weniger Kernen für mobile Vorrichtungen und Prozessoren mit mehr Kernen für Server). Beispielsweise kann abhängig vom Typ des Systems 565 der Prozessor ein Advanced RISC Machines (ARM) Prozessor, der unter Verwendung von Reduced Instruction Set Computing (RISC) implementiert ist, oder ein x86-Prozessor sein, der unter Verwendung von Complex Instruction Set Computing (CISC) implementiert ist. Das System 565 kann eine oder mehrere CPUs 530 zusätzlich zu einem oder mehreren Mikroprozessoren oder ergänzenden Coprozessoren, wie mathematischen Coprozessoren aufweisen.
  • Zusätzlich zur oder alternativ zur (zu den) CPU(s) 530 kann das Parallelverarbeitungsmodul 525 konfiguriert sein, mindestens einige der computerlesbaren Anweisungen auszuführen, um eine oder mehrere Komponenten des Systems 565 zu steuern, eines oder mehrere der hierin beschriebenen Verfahren und/oder Prozesse auszuführen. Das Parallelverarbeitungsmodul 525 kann durch das System 565 verwendet werden, um Grafiken (z.B. 3D-Grafiken) zu rendern oder Allzweckberechnungen durchzuführen. Beispielsweise kann das Parallelverarbeitungsmodul 525 für Allzweckberechnungen auf GPUs (GPGPU) verwendet werden. In Ausführungsformen können die CPU(s) 530 und/oder das Parallelverarbeitungsmodul 525 diskret oder gemeinsam eine beliebige Kombination der Verfahren, Prozesse und/oder Teile davon ausführen.
  • Das System 565 weist außerdem eine oder mehrere Vorrichtungen 560, das Parallelverarbeitungssystem 525 und eine oder mehrere Anzeigevorrichtungen 545 auf. Die Anzeigevorrichtungen 545 können eine Anzeige (z.B. einen Monitor, einen Berührungsbildschirm, einen Fernsehbildschirm, eine Blickfeldanzeige (HUD), andere Anzeigetypen oder eine Kombination davon), Lautsprecher und/oder andere Präsentationskomponenten aufweisen. Die Anzeigevorrichtungen 545 können Daten von anderen Komponenten (z.B. dem Parallelverarbeitungssystem 525, der (den) CPU(s) 530 usw.) empfangen und die Daten (z.B. als ein Bild, Video, Ton, usw.) ausgeben.
  • Die Netzwerkschnittstelle 535 kann es dem System 565 ermöglichen, logisch mit anderen Vorrichtungen einschließlich Eingabevorrichtungen 560, den Anzeigevorrichtungen 545 und/oder andere Komponenten gekoppelt zu werden, von denen einige in das System 565 eingebaut (z.B. darin integriert) sein können. Veranschaulichende Eingabevorrichtungen 560 weisen ein Mikrofon, eine Maus, eine Tastatur, einen Joystick, ein Gamepad, einen Gamecontroller, eine Satellitenschüssel, einen Scanner, einen Drucker, eine drahtlose Vorrichtung usw. auf. Die Eingabevorrichtungen 560 können eine natürliche Benutzerschnittstelle (NUI) bereitstellen, die Luftgesten, die Stimme oder andere durch einen Benutzer erzeugte physiologische Eingaben verarbeitet. In einigen Fällen können Eingaben zur weiteren Verarbeitung an ein geeignetes Netzwerkelement übertragen werden. Eine NUI kann eine beliebige Kombination aus Spracherkennung, Eingabestifterkennung, Gesichtserkennung, biometrischer Erkennung, Gestenerkennung sowohl auf dem Bildschirm als auch benachbart zum Bildschirm, Luftgesten, Kopf- und Augenverfolgung und Berührungserkennung (wie unten ausführlicher beschrieben) implementieren, die mit einer Anzeige des Systems 565 verknüpft sind. Das System 565 kann Tiefenkameras, wie stereoskopische Kamerasysteme, Infrarotkamerasysteme, RGB-Kamerasysteme, Berührungsbildschirm-Technologie und deren Kombination zur Gestenerfassung und -Erkennung aufweisen. Außerdem kann das System 565 Beschleunigungsmesser oder Gyroskope (z.B. als Teil einer Trägheitsmesseinheit (IMU)) aufweisen, die eine Bewegungserfassung ermöglichen. In einigen Beispielen kann die Ausgabe der Beschleunigungsmesser oder Gyroskope durch das System 565 verwendet werden, um eine immersive erweiterte Realität oder virtuelle Realität zu rendern.
  • Ferner kann das System 565 durch eine Netzwerkschnittstelle 535 für Kommunikationszwecke mit einem Netzwerk (z.B. einem Telekommunikationsnetzwerk, einem lokalen Netzwerk (LAN), einem drahtlosen Netzwerk, Weitverkehrsnetzwerk (WAN) wie dem Internet, einem Peer-to-Peer-Netzwerk, einem Kabelnetzwerk oder dergleichen) gekoppelt sein. Das System 565 kann in einem verteilten Netzwerk und/oder einer Cloud-Computing-Umgebung enthalten sein.
  • Die Netzwerkschnittstelle 535 kann einen oder mehrere Empfänger, Sender und/oder Transceiver aufweisen, die es dem System 565 ermöglichen, mit anderen Rechenvorrichtungen über ein elektronisches Kommunikationsnetzwerk, einschließlich drahtgebundener und/oder drahtloser Kommunikation zu kommunizieren. Die Netzwerkschnittstelle 535 kann Komponenten und eine Funktionalität aufweisen, um eine Kommunikation über irgendeines einer Anzahl unterschiedlicher Netzwerke zu ermöglichen, wie drahtlose Netzwerke (z.B. Wi-Fi, Z-Wave, Bluetooth, Bluetooth LE, ZigBee usw.), drahtgebundene Netzwerke (z.B. Kommunikation über Ethernet oder InfiniBand), Niedrigenergie-Weitverkehrsnetzwerke (z.B. LoRaWAN, SigFox, usw.) und/oder das Internet.
  • Das System 565 kann auch einen (nicht gezeigten) sekundären Speicher aufweisen. Der sekundäre Speicher weist beispielsweise ein Festplattenlaufwerk und/oder ein Wechselspeicherlaufwerk auf, das ein Diskettenlaufwerk, ein Magnetbandlaufwerk, ein Compact Disk-Laufwerk, ein Digital Versatile Disk (DVD) Laufwerk, eine Aufzeichnungsvorrichtung, Universal Serial Bus (USB) Flash-Speicher repräsentiert. Das Wechselspeicherlaufwerk liest von und/oder schreibt auf eine Wechselspeichereinheit in einer wohlbekannten Weise. Das System 565 kann auch eine fest verdrahtete Stromversorgung, eine Batteriestromversorgung oder eine (nicht gezeigte) Kombination davon aufweisen. Die Stromversorgung kann Strom an das System 565 liefern, um den Betrieb der Komponenten des Systems 565 zu ermöglichen.
  • Jedes der vorhergehenden Module und/oder jede der Vorrichtungen kann sich sogar auf einer einzigen Halbleiterplattform befinden, um das System 565 zu bilden. Alternativ können sich die verschiedenen Module gemäß den Wünschen des Benutzers auch getrennt oder in verschiedenen Kombinationen von Halbleiterplattformen befinden. Während oben verschiedene Ausführungsformen beschrieben worden sind, versteht es sich, dass sie nur beispielhaft und nicht einschränkend präsentiert wurden. Folglich sollten die Breite und der Umfang einer bevorzugten Ausführungsform nicht durch irgendeine der oben beschriebenen exemplarischen Ausführungsformen beschränkt sein, sondern sollten nur gemäß den folgenden Ansprüchen und deren Äquivalenten definiert werden.
  • Beispielnetzwerkumgebungen
  • Netzwerkumgebungen, die zur Verwendung beim Implementieren von Ausführungsformen der Offenbarung geeignet sind, können eine oder mehrere Client-Vorrichtungen, Server, Network Attached Storage (NAS), andere Backend-Vorrichtungen, und/oder andere Vorrichtungstypen aufweisen. Die Client-Vorrichtungen, Server, und/oder andere Vorrichtungstypen (z.B. jede Vorrichtung) können auf einer oder mehreren Instanzen des Verarbeitungssystems 500 der 5A und/oder des exemplarischen Systems 565 der 5B implementiert sein - z.B. kann jede Vorrichtung ähnliche Komponenten, Merkmale und/oder eine ähnliche Funktionalität des Verarbeitungssystems 500 und/oder des exemplarischen Systems 565 aufweisen.
  • Komponenten einer Netzwerkumgebung können über ein oder mehrere Netzwerke miteinander kommunizieren, die drahtgebunden, drahtlos oder beides sein können. Das Netzwerk kann mehrere Netzwerke oder ein Netzwerk von Netzwerken enthalten. Beispielsweise kann das Netzwerk ein oder mehrere Weitverkehrsnetzwerke (WANs), ein oder mehrere lokale Netzwerke (LANs), ein oder mehrere öffentliche Netzwerke wie das Internet und/oder ein öffentliches Fernsprechwählnetz (PSTN) und/oder ein oder mehrere private Netzwerke aufweisen. Wenn das Netzwerk ein drahtloses Telekommunikationsnetzwerk aufweist, können Komponenten wie eine Basisstation, ein Kommunikationsmast oder sogar Zugangspunkte (sowie andere Komponenten) eine drahtlose Konnektivität bereitstellen.
  • Kompatible Netzwerkumgebungen können eine oder mehrere Peer-to-Peer-Netzwerkumgebungen - wobei in diesem Fall kein in einer Netzwerkumgebung enthalten sein kann - und eine oder mehrere Client-Server-Netzwerkumgebungen aufweisen - wobei in diesem Fall ein oder mehrere Server in einer Netzwerkumgebung enthalten sein können. In Peer-to-Peer-Netzwerkumgebungen kann die hierin in Bezug auf einen oder mehrere Server beschriebene Funktionalität auf irgendeiner Anzahl von Client-Vorrichtungen implementiert sein.
  • In mindestens einer Ausführungsform kann eine Netzwerkumgebung eine oder mehrere Cloud-basierte Netzwerkumgebungen, eine verteilte Rechenumgebung, eine Kombination davon usw. enthalten. Eine Cloud-basierte Netzwerkumgebung kann eine Framework-Schicht, einen Job-Scheduler, einen Ressourcenmanager und ein verteiltes Dateisystem aufweisen, die auf einem oder mehreren Servern implementiert sind, die einen oder mehrere Kern-Netzwerkserver und/oder Edge-Server aufweisen können. Eine Framework-Schicht kann ein Framework aufweisen, um Software einer Softwareschicht und/oder eine oder mehrere Anwendungen einer Anwendungsschicht zu unterstützen. Die Software oder Anwendung(en) können jeweils webbasierte Dienstsoftware oder Anwendungen umfassen. In Ausführungsformen können eine oder mehrere der Client-Vorrichtungen die webbasierte Dienstsoftware oder Anwendungen verwenden (indem sie z.B. auf die Dienstsoftware und/oder Anwendungen über eine oder mehrere Anwendungsprogrammierschnittstellen (APIs) zugreifen). Die Framework-Schicht kann eine Art eines freien und quelloffenen Software-Webanwendungs-Framework sein, wie das, das ein verteiltes Dateisystem zur Datenverarbeitung im großen Maßstab verwendet (z.B. „Big Data“).
  • Eine Cloud-basierte Netzwerkumgebung kann Cloud-Computing und/oder einen Cloud-Speicher bereitstellen, die irgendeine Kombination der hierin beschriebenen Rechen- und/oder Datenspeicher-Funktionen (oder einen oder mehrere Anteile davon) ausführt. Irgendeine dieser verschiedenen Funktionen kann über mehrere Orte von zentralen oder Kernservern verteilt werden (z.B. von einem oder mehreren Rechenzentren, die über einen Staat, eine Region, ein Land, den Globus usw. verteilt sein können). Wenn eine Verbindung zu einem Benutzer (z.B. einer Client-Vorrichtung) relativ nahe bei einem oder mehreren Edge-Servern ist, können ein oder mehrere Kernserver mindestens einen Anteil der Funktionalität dem oder den Edge-Servern zuordnen. Eine Cloud-basierte Netzwerkumgebung kann privat (z.B. auf eine einzelne Organisation beschränkt), kann öffentlich sein (z.B. für viele Organisationen verfügbar sein), und/oder eine Kombination davon sein (z.B. eine hybride Cloud-Umgebung).
  • Die Client-Vorrichtung(en) können mindestens einige der Komponenten, Merkmale und der Funktionalität des beispielhaften Verarbeitungssystems 500 der 5B und/oder des exemplarischen System 565 der 5C aufweisen. Als Beispiel und nicht einschränkend kann eine Client-Vorrichtung als Personal-Computer (PC), Laptop-Computer, mobile Vorrichtung, Smartphone, Tablet-Computer, Smartwatch, tragbarer Computer, persönlicher digitaler Assistent (PDA), MP3-Player, Virtual-Reality-Headset, Global Positioning System (GPS) oder - Vorrichtung, Videoplayer, Videokamera, Überwachungsvorrichtung oder -system, Fahrzeug, Boot, Luftschiff, virtuelle Maschine, Drohne, Roboter, tragbare Kommunikationsvorrichtung, Krankenhausvorrichtung, Spielvorrichtung oder -system, Unterhaltungssystem, Fahrzeugcomputersystem, eingebettete Systemsteuereinheit, Fernbedienung, Haushaltsgerät, Unterhaltungselektronikgerät, Workstation, Edge-Vorrichtung, irgendeine Kombination dieser beschriebenen Vorrichtungen oder irgendeine andere geeignete Vorrichtung ausgeführt sein.
  • Maschinelles Lernen
  • Auf Prozessoren wie der PPU 400 entwickelte tiefe neuronale Netzwerke (DNNs) wurden für verschiedene Anwendungsfälle verwendet, von selbstfahrenden Autos bis hin zu schnellerer Arzneimittelentwicklung, von automatischer Bildbeschriftung in Online-Bilddatenbanken bis hin zu intelligenter Echtzeit-Sprachübersetzung in Video-Chat-Anwendungen. Deep Learning ist eine Technik, die den neuronalen Lernprozess des menschlichen Gehirns modelliert, kontinuierlich lernt, immer intelligenter wird und im Laufe der Zeit immer schneller genauere Ergebnisse liefert. Ein Kind wird zunächst von einem Erwachsenen gelehrt, verschiedene Formen richtig zu identifizieren und zu klassifizieren, wobei es schließlich ohne jede Betreuung in der Lage ist, Formen zu identifizieren. Entsprechend muss ein Deep-Learning- oder neuronales Lernsystem in der Objekterkennung und -klassifizierung trainiert werden, damit es intelligenter und effizienter bei der Identifizierung von grundlegenden Objekten, verdeckten Objekten usw. wird und gleichzeitig Objekten einen Kontext zuweist.
  • Auf der einfachsten Ebene sehen sich Neuronen im menschlichen Gehirn verschiedene Eingaben an, die empfangen werden, jeder dieser Eingaben werden Wichtigkeitsstufen zugeordnet, und die Ausgabe wird an andere Neuronen übermittelt, um entsprechend zu handeln. Ein künstliches Neuron oder Perzeptron ist das grundlegendste Modell eines neuronalen Netzwerks. In einem Beispiel kann ein Perzeptron eine oder mehrere Eingaben empfangen, die verschiedene Merkmale eines Objekts repräsentieren, für dessen Erkennung und Klassifizierung das Perzeptron trainiert wird, und jedem dieser Merkmale wird beruhend auf der Bedeutung dieses Merkmals beim Definieren der Form eines Objekts eine bestimmte Gewichtung zugewiesen.
  • Ein Modell eines tiefen neuronalen Netzwerks (DNN) enthält mehrere Schichten vieler verbundener Knoten (z. B. Perzeptronen, Boltzmann-Maschinen, radiale Basisfunktionen, Faltungsschichten usw.), die mit enormen Mengen an Eingabedaten trainiert werden können, um schnell komplexe Probleme mit hoher Genauigkeit 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 Linien und Winkeln. Die zweite Schicht fügt die Linien zusammen, um nach übergeordneten Mustern wie Räder, Windschutzscheiben und Spiegel zu suchen. Die nächste Schicht identifiziert den Fahrzeugtyp und die letzten paar Schichten erzeugen eine Kennzeichnung für das Eingabebild, die das Modell einer bestimmten Automobilmarke identifiziert.
  • Sobald das DNN trainiert ist, kann das DNN eingesetzt und verwendet werden, um Objekte oder Muster in einem Prozess zu identifizieren und zu klassifizieren, der als Inferenz bekannt ist. Beispiele für Inferenz (der Prozess, durch den ein DNN nützliche Informationen aus einer gegebenen Eingabe extrahiert) enthalten das Identifizieren handschriftlicher Nummern auf Schecks, die in Geldautomaten eingezahlt werden, das Identifizieren von Bildern von Freunden auf Fotos, das Liefern von Filmempfehlungen an über fünfzig Millionen Benutzer, das Identifizieren und Klassifizieren verschiedener Typen von Autos, Fußgängern und Gefahren auf der Straße in fahrerlosen Autos oder die Übersetzung menschlicher Sprache in Echtzeit.
  • Während des Trainings fließen Daten durch das DNN in einer Vorwärtsfortpflanzungsphase, bis eine Vorhersage erzeugt wird, die eine Kennzeichnung anzeigt, die der Eingabe entspricht. Wenn das neuronale Netz die Eingabe nicht korrekt kennzeichnet, dann werden Abweichungen zwischen der korrekten Kennzeichnung und der vorhergesagten Kennzeichnung analysiert und die Gewichte werden für jedes Merkmal während einer Rückwärtsfortpflanzungsphase angepasst, bis das DNN die Eingabe und andere Eingaben in einem Trainingsdatensatz korrekt kennzeichnet. Das Training komplexer neuronaler Netze erfordert enorme Mengen an paralleler Rechenleistung, einschließlich Gleitkomma-Multiplikationen und -Additionen, die von der PPU 400 unterstützt werden. Inferenzieren ist weniger rechenintensiv als Training, wobei es ein latenzempfindlicher Prozess ist, in dem ein trainiertes neuronales Netzwerk auf neue Eingaben angewendet wird, die es zuvor nicht gesehen hat, um Bilder zu klassifizieren, Emotionen zu erfassen, Empfehlungen zu identifizieren, Sprache zu erkennen und zu übersetzen und allgemein neue Informationen zu inferenzieren.
  • Neuronale Netzwerke setzen stark auf mathematische Matrixoperationen, und komplexe mehrschichtige Netzwerke erfordern sowohl für ihre Effizienz als auch Geschwindigkeit enorme Mengen an Gleitkommaleistung und Bandbreite. Mit Tausenden von Verarbeitungskernen, die für mathematische Matrixoperationen optimiert sind und dutzende bis hunderte TFLOPS Leistung liefern, ist die PPU 400 eine Rechenplattform, die imstande ist, die erforderliche Leistung für auf tiefen neuronalen Netzwerken basierende künstliche Intelligenz und Anwendungen für maschinelles Lernen zu liefern.
  • Darüber hinaus können Bilder, die unter Anwendung einer oder mehrerer der hierin offenbarten Techniken erzeugt werden, verwendet werden, um DNNs zu trainieren, zu testen oder zu zertifizieren, die zum Erkennen von Objekten und Umgebungen in der realen Welt verwendet werden. Solche Bilder können Szenen von Straßen, Fabriken, Gebäuden, städtischen Schauplätzen, ländlichen Schauplätzen, Menschen, Tieren und irgendeinem anderen physikalischen Objekt oder Schauplatz in der realen Welt enthalten. Solche Bilder können verwendet werden, um DNNs zu trainieren, zu testen oder zu zertifizieren, die in Maschinen oder Robotern eingesetzt werden, um physikalische Objekte in der realen Welt zu manipulieren, zu handhaben oder zu modifizieren. Darüber hinaus können solche Bilder verwendet werden, um DNNs zu trainieren, zu testen oder zu zertifizieren, die in autonomen Fahrzeugen eingesetzt werden, um die Fahrzeuge durch die reale Welt zu navigieren und zu bewegen. Außerdem können Bilder, die unter Anwendung einer oder mehrerer der hierin offenbarten Techniken erzeugt werden, verwendet werden, um Benutzern solcher Maschinen, Roboter und Fahrzeuge Informationen zu übermitteln.
  • 5C stellt Komponenten eines exemplarischen Systems 555, das verwendet werden kann, um maschinelles Lernen zu trainieren und zu nutzen, gemäß mindestens einer Ausführungsform dar. Wie erläutert wird, können verschiedene Komponenten durch verschiedene Kombinationen von Rechenvorrichtungen und Ressourcen oder ein einzelnes Rechensystem bereitgestellt werden, das unter der Kontrolle einer einzelnen Einheit oder mehrere Einheiten stehen kann. Ferner können Aspekte durch unterschiedliche Einheiten ausgelöst, initiiert oder angefordert werden. In mindestens einer Ausführungsform könnte das Training eines neuronalen Netzwerks durch einen Anbieter angewiesen werden, der mit einer Anbieterumgebung 506 verknüpft ist, während in mindestens einer Ausführungsform das Training durch einen Kunden oder einen anderen Benutzer angefordert werden könnte, der durch eine Client-Vorrichtung 502 oder andere solche Ressource Zugriff auf eine Anbieterumgebung hat. In mindestens einer Ausführungsform können Trainingsdaten (oder Daten, die durch ein trainiertes neuronales Netzwerk analysiert werden sollen) durch einen Anbieter, einen Benutzer oder einen fremden Inhaltsanbieter 524 bereitgestellt werden. In mindestens einer Ausführungsform kann die Client-Vorrichtung 502 ein Fahrzeug oder Objekt sein, das beispielsweise im Namen eines Benutzers navigiert werden soll, das Anforderungen senden und/oder Anweisungen empfangen kann, die die Navigation einer Vorrichtung unterstützen.
  • In mindestens einer Ausführungsform können Anforderungen über mindestens ein Netzwerk 504 gesendet werden, um durch eine Anbieterumgebung 506 empfangen zu werden. In mindestens einer Ausführungsform kann eine Client-Vorrichtung irgendeine geeignete elektronische und/oder Rechenvorrichtung sein, die es einem Benutzer ermöglicht, solche Anforderungen zu erzeugen und zu senden, wie, aber nicht beschränkt auf Tischcomputer, Notebook-Computer, Computerserver, Smartphones, Tablet-Computer, Spielkonsolen (tragbar oder anderweitig), Computerprozessoren, Rechenlogik und Set-Top-Boxen. Netzwerk(e) 504 können irgendein geeignetes Netzwerk zum Senden einer Anforderung oder anderer solcher Daten sein, die das Internet, ein Intranet, ein Ethernet, ein Mobilfunknetzwerk, ein lokales Netzwerk (LAN), ein Weitverkehrsnetzwerk (WAN), eine Personal Area Network (PAN), ein Ad-hoc-Netzwerk mit direkten drahtlosen Verbindungen zwischen Peers und so weiter aufweisen können.
  • In mindestens einer Ausführungsform können Anforderungen an einer Schnittstellenschicht 508 empfangen werden, die in diesem Beispiel Daten zu einem Trainings- und Inferenzmanager 532 weiterleiten kann. Der Trainings- und Inferenzmanager 532 kann ein System oder Dienst sein, der Hardware und Software zum Verwalten von Anforderungen und zum Bedienen entsprechender Daten oder Inhalte aufweist. In mindestens einer Ausführungsform kann der Trainings- und Inferenzmanager 532 eine Anforderung empfangen, ein neuronales Netzwerk zu trainieren, und kann Daten für eine Anforderung an ein Trainingsmodul 512 liefern. In mindestens einer Ausführungsform kann das Trainingsmodul 512 ein geeignetes Modell oder neuronales Netzwerk auswählen, das verwendet werden soll, wenn es nicht durch die Anforderung spezifiziert ist, und kann ein Modell unter Verwendung relevanter Trainingsdaten trainieren. In mindestens einer Ausführungsform können die Trainingsdaten ein Stapel von Daten sein, die in einem Trainingsdaten-Repository 514 gespeichert sind, von der Client-Vorrichtung 502 empfangen oder von einem Fremdanbieter 524 erhalten werden. In mindestens einer Ausführungsform kann das Trainingsmodul 512 für Trainingsdaten verantwortlich sein. Ein neuronales Netzwerk kann irgendein geeignetes Netzwerk sein, wie ein rekurrentes neuronales Netzwerk (RNN) oder konvolutionelles neuronales Netzwerk (CNN). Sobald ein neuronales Netzwerk trainiert und erfolgreich bewertet ist, kann ein trainiertes neuronales Netzwerk beispielsweise in einem Modell-Repository 516 gespeichert werden, das unterschiedliche Modelle oder Netzwerke für Benutzer, Anwendungen oder Dienste usw. speichern kann. In mindestens einer Ausführungsform kann es mehrere Modelle für eine einzelne Anwendung oder Einheit geben, die beruhend auf einer Anzahl unterschiedlicher Faktoren genutzt werden können.
  • In mindestens einer Ausführungsform kann zu einem nachfolgenden Zeitpunkt eine Anforderung von einer Client-Vorrichtung 502 (oder einer anderen solchen Vorrichtung) nach Inhalten (z.B. Pfadbestimmungen) oder Daten empfangen werden, die mindestens teilweise durch ein trainiertes neuronales Netzwerk bestimmt oder beeinflusst werden. Diese Anforderung kann beispielsweise Eingabedaten enthalten, die unter Verwendung eines neuronalen Netzwerks verarbeitet werden sollen, um eine oder mehrere Inferenzen oder andere Ausgabewerte, Klassifizierungen oder Vorhersagen zu erhalten, oder für mindestens eine Ausführungsform können Eingabedaten durch die Schnittstellenschicht 508 empfangen werden und zum Inferenzmodul 518 geleitet werden, obwohl ebenso ein anderes System oder ein anderer Dienst verwendet werden kann. In mindestens einer Ausführungsform kann das Inferenzmodul 518 ein geeignetes trainiertes Netzwerk, wie ein trainiertes tiefes neuronales Netzwerk (DNN) wie hierin erläutert aus dem Modell-Repository 516 erhalten, wenn es nicht schon lokal im Inferenzmodul 518 gespeichert ist. Das Inferenzmodul 518 kann Daten als Eingabe in ein trainiertes Netzwerk bereitstellen, das dann eine oder mehrere Inferenzen als Ausgabe erzeugt. Diese können beispielsweise eine Klassifizierung einer Instanz von Eingabedaten enthalten. In mindestens einer Ausführungsform können Inferenzen dann an die Client-Vorrichtung 502 zur Anzeige oder eine andere Kommunikation mit einem Benutzer gesendet werden. In mindestens einer Ausführungsform können auch Kontextdaten für einen Benutzer in einem Benutzerkontextdaten-Repository 522 gespeichert werden, das Daten über einen Benutzer enthalten kann, die als Eingabe in ein Netzwerk beim Erzeugen von Inferenzen oder zum Bestimmen von Daten zur Rückgabe an einen Benutzer nach dem Erhalten von Instanzen nützlich sein können. In mindestens einer Ausführungsform können relevante Daten, die mindestens einige der Eingabe- oder Inferenzdaten enthalten können, auch in einer lokalen Datenbank 534 zur Verarbeitung zukünftiger Anforderungen gespeichert werden. In mindestens einer Ausführungsform kann ein Benutzer Account-Informationen oder andere Informationen verwenden, um auf Ressourcen oder eine Funktionalität einer Anbieterumgebung zuzugreifen. In mindestens einer Ausführungsform können, falls zulässig und verfügbar, auch Benutzerdaten gesammelt und verwendet werden, um Modelle weiter zu trainieren, um genauere Inferenzen für zukünftige Anforderungen bereitzustellen. In mindestens einer Ausführungsform können Anforderungen durch eine Benutzerschnittstelle zu einer maschinellen Lernanwendung 526 empfangen werden, die auf der Client-Vorrichtung 502 ausgeführt wird, und durch eine selbe Schnittstelle Ergebnisse angezeigt werden. Eine Client-Vorrichtung kann Ressourcen wie einen Prozessor 528 und Speicher 562 zum Erzeugen einer Anforderung und von Verarbeitungsergebnissen oder einer Antwort sowie mindestens ein Datenspeicherelement 552 zum Speichern von Daten für die maschinelle Lernanwendung 526 aufweisen.
  • In mindestens einer Ausführungsform wird ein Prozessor 528 (oder ein Prozessor des Trainingsmoduls 512 oder Inferenzmoduls 518) eine Zentraleinheit (CPU) sein. Wie erwähnt können jedoch Ressourcen in solchen Umgebungen für mindestens bestimmte Arten von Anforderungen GPUs verwenden, um Daten zu verarbeiten. Mit Tausenden von Kernen sind GPUs, wie die PPU 300 dazu bestimmt, erhebliche parallele Arbeitslasten zu handhaben, und sind daher beim Deep-Learning zum Training neuronaler Netzwerke und Erzeugen von Vorhersagen populär geworden. Während die Verwendung von GPUs für Offline-Builds ein schnelleres Training größerer und komplexerer Modelle ermöglicht hat, bedeutet die Offline-Erzeugung von Vorhersagen, dass entweder Eingabemerkmale zur Anforderungszeit nicht verwendet werden können oder Vorhersagen für alle Permutationen von Merkmalen erzeugt und in einer Nachschlagetabelle gespeichert werden müssen, um Echtzeitanforderungen zu bedienen. Wenn ein Deep-Learning-Framework einen CPU-Modus unterstützt und ein Modell klein und einfach genug ist, um eine Vorwärtskopplung auf einer CPU mit vernünftiger Latenz durchzuführen, dann könnte ein Dienst auf einer CPU-Instanz ein Modell hosten. In diesem Fall kann das Training offline auf einer GPU und die Inferenz in Echtzeit auf einer CPU durchgeführt werden. Wenn ein CPU-Ansatz nicht praktikabel ist, dann kann ein Dienst auf einer GPU-Instanz ausgeführt werden. Da GPUs jedoch andere Leistungs- und Kosteneigenschaften als CPUs aufweisen, kann es das Ausführen eines Dienstes, der einen Laufzeitalgorithmus auf eine GPU auslagert, erfordern, dass er anders als eine CPU-basierter Dienst gestaltet ist.
  • In mindestens einer Ausführungsform können Videodaten von der Client-Vorrichtung 502 zur Verbesserung in der Anbieterumgebung 506 bereitgestellt werden. In mindestens einer Ausführungsform können Videodaten zur Verbesserung auf der Client-Vorrichtung 502 verarbeitet werden. In mindestens einer Ausführungsform können Videodaten von einem Fremdinhaltsanbieter 524 gestreamt und durch den Fremdinhaltsanbieter 524, die Anbieterumgebung 506 oder die Client-Vorrichtung 502 verbessert werden. In mindestens einer Ausführungsform können Videodaten von der Client-Vorrichtung 502 zur Verwendung als Trainingsdaten in der Anbieterumgebung 506 bereitgestellt werden.
  • In mindestens einer Ausführungsform kann überwachtes und/oder unüberwachtes Training durch die Client-Vorrichtung 502 und/oder die Anbieterumgebung 506 ausgeführt werden. In mindestens einer Ausführungsform wird ein Satz von Trainingsdaten 514 (z.B. klassifizierte oder gekennzeichnete Daten) als Eingabe bereitgestellt, um als Trainingsdaten zu dienen. In mindestens einer Ausführungsform können Trainingsdaten Instanzen von mindestens einem Objekttyp, für den ein neuronales Netz trainiert werden soll, sowie Informationen enthalten, die diesen Objekttyp identifizieren. In mindestens einer Ausführungsform könnten die Trainingsdaten einen Satz von Bildern enthalten, die jeweils eine Darstellung eines Objekttyps enthalten, wobei jedes Bild auch eine Kennzeichnung, Metadaten, eine Klassifikation oder eine andere Information enthält oder damit verbunden ist, die einen Objekttyp identifiziert, der in einem jeweiligen Bild dargestellt wird. Es können ebenso verschiedene andere Arten von Daten als Trainingsdaten verwendet werden, die die Textdaten, Audiodaten, Videodaten und so weiter enthalten können. In mindestens einer Ausführungsform werden Trainingsdaten 514 als Trainingseingabe in ein Trainingsmodul 512 bereitgestellt. In mindestens einer Ausführungsform kann das Trainingsmodul 512 ein System oder ein Dienst sein, das oder der Hardware und Software aufweist, wie eine oder mehrere Rechenvorrichtungen, die eine Trainingsanwendung zum Training eines neuronalen Netzwerks (oder eines anderen Modells oder Algorithmus usw.) ausführen. In mindestens einer Ausführungsform empfängt das Trainingsmodul 512 eine Anweisung oder Anforderung, die einen Modelltyp angibt, der zum Training verwendet werden soll, in mindestens einer Ausführungsform kann ein Modell irgendein geeignetes statistisches Modell, Netzwerk oder Algorithmus sein, das für solche Zwecke nützlich ist, das ein künstliches neuronales Netzwerk, einen Deep-Learning-Algorithmus, einen lernenden Klassifikator, ein Bayes-Netzwerk und so weiter aufweisen kann. In mindestens einer Ausführungsform kann das Trainingsmodul 512 ein Anfangs-Modell oder anderes untrainiertes Modell aus einem geeigneten Repository 516 auswählen und Trainingsdaten 514 verwenden, um ein Modell zu trainieren, wodurch ein trainiertes Modell (z.B. trainiertes tiefes neuronales Netzwerk) erzeugt wird, das verwendet werden kann, um ähnliche Arten von Daten zu klassifizieren oder andere solche Inferenzen zu erzeugen. In mindestens einer Ausführungsform, in der keine Trainingsdaten verwendet werden, kann immer noch ein geeignetes Anfangs-Modell zum Training an Eingabedaten pro Trainingsmodul 512 ausgewählt werden.
  • In mindestens einer Ausführungsform kann ein Modell in einer Reihe von unterschiedlichen Arten trainiert werden, die teilweise von einem ausgewählten Modelltyp abhängen können. In mindestens einer Ausführungsform kann ein maschineller Lernalgorithmus mit einem Satz von Trainingsdaten vorgesehen werden, wobei ein Modell ein Modellartefakt ist, das durch einen Trainingsprozess erzeugt wird. In mindestens einer Ausführungsform enthält jede Instanz von Trainingsdaten eine richtige Antwort (z.B. eine Klassifizierung), die als Ziel oder Zielattribut bezeichnet werden kann. In mindestens einer Ausführungsform findet ein Lemalgorithmus Muster in Trainingsdaten, die Eingabedatenattribute auf ein Ziel abbilden, eine vorherzusagende Antwort, und es wird ein maschinelles Lernmodell ausgegeben, das diese Muster erfasst. In mindestens einer Ausführungsform kann dann ein maschinelles Lernmodell verwendet werden, um Vorhersagen über neue Daten zu erhalten, für die kein Ziel angegeben ist.
  • In mindestens einer Ausführungsform kann der Trainings- und Inferenzmanager 532 aus einem Satz maschineller Lernmodelle auswählen, die binäre Klassifizierung, Mehrklassenklassifizierung, generative und Regressionsmodelle enthalten. In mindestens einer Ausführungsform kann ein zu verwendender Modelltyp mindestens teilweise von einem Typ des Ziels abhängen, das vorhergesagt werden soll.
  • Grafikverarbeitungspipeline
  • In einer Ausführungsform weist die PPU 400 eine Grafikverarbeitungseinheit (GPU) auf. Die PPU 400 ist konfiguriert, Befehle zu empfangen, die Shader-Programme zum Verarbeiten von Grafikdaten spezifizieren. Grafikdaten können als ein Satz von Primitiven wie Punkte, Linien, Dreiecke, Vierecke, Dreiecksstreifen und dergleichen definiert werden. Typischerweise enthält ein Primitiv Daten, die eine Anzahl von Vertices für das Primitiv (z.B. in einem Modellraum-Koordinatensystem) sowie Attribute spezifizieren, die mit jedem Vertex des Primitivs verbunden sind. Die PPU 400 kann konfiguriert sein, die Grafikprimitive zu verarbeiten, um einen Frame-Puffer zu erzeugen (z.B. Pixeldaten für jedes der Pixel der Anzeige).
  • Eine Anwendung schreibt Modelldaten für eine Szene (z.B. eine Sammlung von Vertices und Attributen) in einen Speicher wie einen Systemspeicher oder Speicher 404. Die Modelldaten definieren jedes der Objekte, die auf einer Anzeige sichtbar sein können. Die Anwendung führt dann einen API-Aufruf an den Treiberkernel aus, der anfordert, dass die Modelldaten gerendert und angezeigt werden. Der Treiberkernel liest die Modelldaten und schreibt Befehle in den einen oder die mehreren Ströme, Operationen auszuführen, um die Modelldaten zu verarbeiten. Die Befehle können unterschiedliche Shader-Programme referenzieren, die auf den Verarbeitungseinheiten innerhalb der PPU 400 implementiert werden sollen, einschließlich eines Vertex-Shaders und/oder Hull-Shaders und/oder Domain-Shaders und/oder Geometrie-Shaders und/oder Pixel-Shaders. Beispielsweise können eine oder mehrere der Verarbeitungseinheiten konfiguriert sein, ein Vertex-Shader-Programm auszuführen, das eine Anzahl von Vertices verarbeitet, die durch die Modelldaten definiert sind. In einer Ausführungsform können die unterschiedlichen Verarbeitungseinheiten konfiguriert sein, unterschiedlichen Shader-Programme gleichzeitig auszuführen. Beispielsweise kann eine erste Teilmenge der Verarbeitungseinheiten konfiguriert sein, ein Vertex-Shader-Programm auszuführen, während eine zweite Teilmenge der Verarbeitungseinheiten konfiguriert sein kann, ein Pixel-Shader-Programm auszuführen. Die erste Teilmenge der Verarbeitungseinheiten verarbeitet Vertex-Daten, um verarbeitete Vertex-Daten zu erzeugen, und schreibt die verarbeiteten Vertex-Daten in den L2-Cache 460 und/oder den Speicher 404. Nachdem die verarbeiteten Vertex-Daten gerastert (z.B. von dreidimensionalen Daten in zweidimensionale Daten im Bildschirmraum transformiert) worden sind, um Fragmentdaten zu erzeugen, führt die zweite Teilmenge der Verarbeitungseinheiten einen Pixel-Shader aus, um verarbeitete Fragmentdaten zu erzeugen, die dann mit anderen verarbeiteten Fragmentdaten gemischt und in den Frame-Puffer im Speicher 404 geschrieben werden. Das Vertex-Shader-Programm und Pixel-Shader-Programm können gleichzeitig ausgeführt werden, wobei sie unterschiedliche Daten aus derselben Szene in einer Pipeline-Weise verarbeiten, bis alle Modelldaten für die Szene in den Frame-Puffer gerendert worden sind. Dann werden die Inhalte des Frame-Puffers an einen Anzeigecontroller zur Anzeige auf einer Anzeigevorrichtung übertragen.
  • 6A ist ein konzeptionelles Diagramm einer Grafikverarbeitungspipeline 600, die durch die PPU 400 der 4 implementiert wird, gemäß einer Ausführungsform. Die Grafikverarbeitungspipeline 600 ist ein abstraktes Flussdiagramm der Verarbeitungsschritte, die implementiert werden, um computergenerierte 2D-Bilder aus 3D-Geometriedaten zu erzeugen. Wie wohlbekannt ist, können Pipeline-Architekturen Operationen mit langer Latenz effizienter durchführen, indem sie die Operation in mehrere Stufen aufteilen, wobei der Ausgang jeder Stufe mit dem Eingang der nächsten nachfolgenden Stufe gekoppelt ist. Folglich empfängt die Grafikverarbeitungspipeline 600 Eingabedaten 601, die von einer Stufe zur nächsten Stufe der Grafikverarbeitungspipeline 600 übertragen werden, um Ausgabedaten 602 zu erzeugen. In einer Ausführungsform kann die Grafikverarbeitungspipeline 600 eine Grafikverarbeitungspipeline repräsentieren, die durch die OpenGL® API definiert ist. Als Option kann die Grafikverarbeitungspipeline 600 im Kontext der Funktionalität und Architektur der vorhergehenden Figuren und/oder irgendeiner der nachfolgenden Figur(en) implementiert werden.
  • Wie in 6A gezeigt, weist die Grafikverarbeitungspipeline 600 eine Pipelinearchitektur auf, die eine Anzahl von Stufen enthält. Die Stufen enthalten, sind aber nicht beschränkt auf, eine Daten-Assemblierungsstufe 610, eine Vertex-Shading-Stufe 620, eine Primitiv-Assemblierungsstufe 630, eine Geometrie-Shading-Stufe 640, eine Darstellungsfeld-Skalierungs-, Auslese- und Beschneidungs- (VSCC) Stufe 650, eine Rasterungsstufe 660, eine Fragment-Shading-Stufe 670 und eine Rasteroperationsstufe 680. In einer Ausführungsform weisen die Eingabedaten 601 Befehle auf, die die Verarbeitungseinheiten konfigurieren, die Stufen der Grafikverarbeitungspipeline 600 und geometrischen Primitiven (z.B. Punkte, Linien, Dreiecke, Vierecke, Dreiecksstreifen oder Fächer usw.) zu implementieren, die durch die Stufen verarbeitet werden sollen. Die Ausgangsdaten 602 können Pixeldaten (z.B. Farbdaten), die in einen Frame-Puffer kopiert werden, oder eine andere einer Oberflächendatenstruktur in einem Speicher aufweisen.
  • Die Daten-Assemblierungsstufe 610 empfängt die Eingabedaten 601, die Vertex-Daten für Oberflächen höherer Ordnung, Primitive oder dergleichen spezifizieren. Die Daten-Assemblierungsstufe 610 sammelt die Vertex-Daten in einem Zwischenspeicher oder einer Warteschlange, indem z.B. ein Befehl vom Host-Prozessor empfangen wird, der einen Zeiger auf einen Puffer im Speicher enthält, und die Vertex-Daten aus dem Puffer gelesen werden. Die Vertex-Daten werden dann zur Verarbeitung an die Vertex-Shading-Stufe 620 übertragen.
  • Die Vertex-Shading-Stufe 620 verarbeitet Vertex-Daten, indem sie einen Satz von Operationen (z.B. einen Vertex-Shader oder ein Programm) einmal für jeden der Vertices durchführt. Vertices können z.B. als ein 4-Koordinaten-Vektor (z.B. <x, y, z, w>) spezifiziert werden, der mit einem oder mehreren Vertex-Attributen (z.B. Farbe, Texturkoordinaten, Oberflächennormale usw.) verbunden ist. Die Vertex-Shading-Stufe 620 kann einzelne Vertex-Attribute wie Position, Farbe, Texturkoordinaten und dergleichen manipulieren. Mit anderen Worten führt die Vertex-Shading-Stufe 620 Operationen an den Vertex-Koordinaten oder anderen Vertex-Attributen aus, die mit einem Vertex verknüpft sind. Solche Operationen beinhalten für gewöhnlich Beleuchtungsoperationen (z.B. Modifizieren von Farbattributen für eine Vertex) und Transformationsoperationen (z.B. Modifizieren von Farbattributen für einen Vertex). Beispielsweise können Vertices unter Verwendung von Koordinaten in einem Objekt-Koordinatenraum spezifiziert werden, die durch Multiplizieren der Koordinaten mit einer Matrix transformiert werden, die die Koordinaten aus dem Objekt-Koordinatenraum in einen Weltraum oder eine normierten Vorrichtungskoordinaten- (NCD) Raum übersetzt. Die Vertex-Shading-Stufe 620 erzeugt transformierte Vertex-Daten, die zur Primitiv-Assemblierungsstufe 630 übertragen werden.
  • Die Primitiv-Assemblierungsstufe 630 sammelt Vertices, die durch die Vertex-Shading-Stufe 620 ausgegeben werden, und gruppiert die Vertices in geometrische Primitive zur Verarbeitung durch die Geometrie-Shading-Stufe 640. Beispielsweise kann die Primitiv-Assemblierungsstufe 630 konfiguriert sein, alle drei aufeinanderfolgenden Vertices als ein geometrisches Primitiv (z.B. ein Dreieck) zur Übertragung zur Geometrie-Shading-Stufe 640 zu gruppieren. In einigen Ausführungsformen können spezifische Vertices für aufeinanderfolgende geometrische Primitive wiederverwendet werden (z.B. können sich zwei aufeinanderfolgende Dreiecke in einem Dreiecksstreifen zwei Vertices teilen). Die Primitiv-Assemblierungsstufe 630 überträgt geometrische Primitive (z.B. eine Sammlung verknüpfter Vertices) an die Geometrie-Shading-Stufe 640.
  • Die Geometrie-Shading-Stufe 640 verarbeitet geometrische Primitive, indem sie einen Satz von Operationen (z.B. einen Geometrie-Shader oder Programm) an den geometrischen Primitiven durchführt. Tessellierungsoperationen können ein oder mehrere geometrische Primitive aus jedem geometrischen Primitiv erzeugen. Mit anderen Worten kann die Geometrie-Shading-Stufe 640 jedes geometrische Primitiv in ein feineres Gitter von zwei oder mehr geometrischen Primitiven zur Verarbeitung durch den Rest der Grafikverarbeitungspipeline 600 unterteilen. Die Geometrie-Shading-Stufe 640 überträgt geometrische Primitive an die Darstellungsfeld-SCC-Stufe 650.
  • In einer Ausführungsform kann die Grafikverarbeitungspipeline 600 innerhalb eines Streaming-Multiprozessors arbeiten, und die Vertex-Shading-Stufe 620, die Primitiv-Assemblierungsstufe 630, die Geometrie-Shading-Stufe 640, die Fragment-Shading-Stufe 670, und/oder Hardware/Software, die damit verbunden sind, können sequentiell Verarbeitungsoperationen durchführen. Sobald die sequentiellen Verarbeitungsoperationen abgeschlossen sind, kann in einer Ausführungsform die Darstellungsfeld-SCC-Stufe 650 die Daten nutzen. In einer Ausführungsform können Primitiv-Daten, die durch eine oder mehrere der Stufen in der Grafikverarbeitungspipeline 600 verarbeitet werden, in einen Cache (z.B. L1-Cache, einen Vertex-Cache usw.) geschrieben werden. In diesem Fall kann in einer Ausführungsform die Darstellungsfeld-SCC-Stufe 650 auf die Daten im Cache zugreifen. In einer Ausführungsform sind die Darstellungsfeld-SCC-Stufe 650 und die Rasterungsstufe 660 als Schaltungen mit fester Funktion implementiert.
  • Die Darstellungsfeld-SCC-Stufe 650 führt eine Darstellungsfeld-Skalierung, -Auslese und -Beschneidung der geometrischen Primitiven durch. Jede Oberfläche, die gerendert wird, ist mit einer abstrakten Kameraposition verbunden. Die Kameraposition repräsentiert einen Ort eines Betrachters, der die Szene betrachtet, und definiert einen Betrachtungsstumpf, der die Objekte der Szene einschließt. Der Betrachtungsstumpf kann eine Betrachtungsebene, eine hintere Ebene, und vier Beschneidungsebenen aufweisen. Irgendein geometrisches Primitiv, das sich vollständig außerhalb des Betrachtungsstumpfes befindet, kann ausgelesen (z.B. verworfen) werden, da das geometrische Primitiv nicht zur endgültig gerenderten Szene beitragen wird. Irgendein geometrisches Primitiv, das sich teilweise innerhalb des Betrachtungsstumpfes und teilweise außerhalb des Betrachtungsstumpfes befindet, kann beschnitten werden (z.B. in ein neues geometrisches Primitiv transformiert werden, das innerhalb des Betrachtungsstumpfes eingeschlossen ist. Außerdem können geometrische Primitive jeweils beruhend auf einer Tiefe des Betrachtungsstumpfes skaliert werden. Alle potentiell sichtbaren geometrischen Primitive werden dann an die Rasterungsstufe 660 übertragen.
  • Die Rasterungsstufe 660 wandelt die geometrischen 3D-Primitive in 2D-Fragmente um (die z.B. zur Anzeige usw. verwendet werden können). Die Rasterungsstufe 660 kann konfiguriert sein, die Vertices der geometrischen Primitive zu verwenden, um einen Satz von Ebenengleichungen aufzustellen, aus denen verschiedene Attribute interpoliert werden können. Die Rasterungsstufe 660 kann auch eine Abdeckmaske für mehrere Pixel berechnen, die anzeigen, ob ein oder mehrere Abtastorte für das Pixel das geometrische Primitiv schneiden. In einer Ausführungsform kann auch eine z-Prüfung ausgeführt werden, um festzustellen, ob das geometrische Primitiv durch andere geometrische Primitive verdeckt wird, die schon gerastert worden sind. Die Rasterungsstufe 660 erzeugt Fragmentdaten (z.B. interpolierte Vertex-Attribute, die mit einem bestimmten Abtastort für jedes verdeckte Pixel verknüpft sind), die an die Fragment-Shading-Stufe 670 übertragen werden.
  • Die Fragment-Shading-Stufe 670 verarbeitet Fragmentdaten, indem sie einen Satz von Operationen (z.B. einen Fragment-Shader oder ein Programm) an jedem der Fragmente durchführt. Die Fragment-Shading-Stufe 670 kann Pixeldaten (z.B. Farbwerte) für das Fragment erzeugen, indem sie z.B. Beleuchtungsoperationen durchführt oder Textur-Maps unter Verwendung interpolierter Texturkoordinaten für das Fragment abtastet. Die Fragment-Shading-Stufe 670 erzeugt Pixeldaten, die an die Rasteroperationsstufe 680 übertragen werden.
  • Die Rasteroperationsstufe 680 kann verschiedene Operationen an den Pixeldaten durchführen, wie beispielsweise das Durchführen von Alphatests, Schablonentests und das Mischen der Pixeldaten mit anderen Pixeldaten, die anderen Fragmenten entsprechen, die mit dem Pixel verknüpft sind. Wenn die Rasteroperationsstufe 680 die Verarbeitung der Pixeldaten (z.B. der Ausgangsdaten 602) beendet hat, können die Pixeldaten in ein Renderziel wie einen Frame-Puffer, einen Farbpuffer oder dergleichen geschrieben werden.
  • Es wird erkannt werden, dass eine oder mehrere zusätzliche Stufen in der Grafikverarbeitungspipeline 600 zusätzlich zu oder anstelle von einer oder mehreren der oben beschriebenen Stufen enthalten sein können. Verschiedene Implementierungen der abstrakten Grafikverarbeitungspipeline können unterschiedliche Stufen implementieren. Darüber hinaus können eine oder mehrere der oben beschriebenen Stufen in einigen Ausführungsformen (wie die Geometrie-Shading-Stufe 640) aus der Grafikverarbeitungspipeline ausgeschlossen werden. Andere Arten von Grafikverarbeitungspipelines werden so betrachtet, dass sie sich im Rahmen der vorliegenden Offenbarung befinden. Darüber hinaus kann irgendeine der Stufen der Grafikverarbeitungspipeline 600 durch eine oder mehrere zweckbestimmte Hardwareeinheiten innerhalb eines Grafikprozessors wie der PPU 400 implementiert werden. Andere Stufen der Grafikverarbeitungspipeline 600 können durch programmierbare Hardwareeinheiten wie der Verarbeitungseinheit innerhalb die PPU 400 implementiert werden.
  • Die Grafikverarbeitungspipeline 600 kann über eine Anwendung implementiert werden, die durch einen Host-Prozessor, wie einer CPU, ausgeführt wird. In einer Ausführungsform kann ein Gerätetreiber eine Anwendungsprogrammierschnittstelle (API) implementieren, die verschiedene Funktionen definiert, die von einer Anwendung genutzt werden können, um Grafikdaten zur Anzeige zu erzeugen. Der Gerätetreiber ist ein Softwareprogramm, das mehrere Anweisungen enthält, die den Betrieb der PPU 400 steuern. Die API stellt eine Abstraktion für einen Programmierer bereit, die es einem Programmierer ermöglicht, spezialisierte Grafikhardware wie die PPU 400 zu verwenden, um die Grafikdaten zu erzeugen, ohne dass es erforderlich ist, dass der Programmierer den spezifischen Befehlssatz für die PPU 400 nutzt. Die Anwendung kann einen API-Aufruf enthalten, der zum Gerätetreiber für die PPU 400 geleitet wird. Der Gerätetreiber interpretiert den API-Aufruf und führt verschiedene Operationen durch, um auf den API-Aufruf zu reagieren. In einigen Fällen kann der Gerätetreiber Operationen ausführen, indem er Anweisungen auf der CPU ausführt. In anderen Fällen kann der Gerätetreiber mindestens teilweise Operationen durchführen, indem er Operationen auf der PPU 400 unter Nutzung einer Eingabe-/Ausgabeschnittstelle zwischen der CPU und der PPU 400 startet. In einer Ausführungsform ist der Gerätetreiber konfiguriert, die Grafikverarbeitungspipeline 600 unter Nutzung der Hardware der PPU 400 zu implementieren.
  • Es können verschiedene Programme innerhalb der PPU 400 ausgeführt werden, um die verschiedenen Stufen der Grafikverarbeitungspipeline 600 zu implementieren. Beispielsweise kann der Gerätetreiber einen Kernel auf der PPU 400 starten, um die Vertex-Shading-Stufe 620 auf einer Verarbeitungseinheit (oder mehreren Verarbeitungseinheiten) auszuführen. Der Gerätetreiber (oder der durch die PPU 400 ausgeführte Anfangs-Kernel) kann auch andere Kernel auf der PPU 400 starten, um andere Stufen der Grafikverarbeitungspipeline 600, wie die Geometrie-Shading-Stufe 640 und die Fragment-Shading-Stufe 670 auszuführen. Außerdem können einige der Stufen der Grafikverarbeitungspipeline 600 auf einer festen Hardwareeinheit wie einem Rasterizer oder einem Datenassembler implementiert sein, der innerhalb die PPU 400 implementiert ist. Es wird erkannt werden, dass Ergebnisse von einem Kernel durch eine oder mehrere dazwischenliegende Hardwareeinheiten mit fester Funktion verarbeitet werden können, bevor sie durch einen nachfolgenden Kernel auf einer Verarbeitungseinheit verarbeitet werden.
  • Bilder, die unter Anwendung einer oder mehrerer der hierin offenbarten Techniken erzeugt wurden, können auf einem Monitor oder einer anderen Anzeigevorrichtung angezeigt werden. In einigen Ausführungsformen kann die Anzeigevorrichtung direkt mit dem System oder den Prozessor gekoppelt sein, der die Bilder erzeugt oder rendert. In anderen Ausführungsformen kann die Anzeigevorrichtung indirekt mit dem System oder Prozessor gekoppelt sein, wie über ein Netzwerk. Beispiele für solche Netzwerke enthalten das Internet, mobile Telekommunikationsnetzwerke, ein WIFI- Netzwerk sowie irgendein anderes drahtgebundenes und/oder drahtloses Netzwerksystem. Wenn die Anzeigevorrichtung indirekt gekoppelt ist, können die durch das System oder den Prozessor erzeugten Bilder über das Netzwerk zur Anzeigevorrichtung gestreamt werden. Ein solches Streaming ermöglicht es beispielsweise, dass Videospiele oder andere Anwendungen, die Bilder rendern, auf einem Server, einem Datenzentrum oder in einer Cloud-basierten Rechenumgebung ausgeführt werden und die gerenderten Bilder auf eine oder mehrere Benutzervorrichtungen (wie einen Computer, eine Videospielkonsole, ein Smartphone, eine andere mobile Vorrichtung, usw.) übertragen und angezeigt werden, die physikalisch vom Server oder Datenzentrum getrennt sind. Folglich können die hierin offenbarten Techniken angewendet werden, um die Bilder zu verbessern, die gestreamt werden, und Dienste zu verbessern, die Bilder streamen, wie NVIDIA GeForce Now (GFN), Google Stadia, und dergleichen.
  • Beispielhaftes Spiel-Streaming-System
  • 6B ist ein beispielhaftes Systemdiagramm für eine Spiel-Streaming-System 605 gemäß einiger Ausführungsformen der vorliegenden Offenbarung. 6B enthält einen oder mehrere Spielserver 603 (die ähnliche Komponenten, Merkmale und/oder eine ähnliche Funktionalität wie das beispielhafte Verarbeitungssystem 500 der 5A und/oder das exemplarische System 565 der 5B enthalten können), Client-Vorrichtung(en) 604 (die ähnliche Komponenten, Merkmale und/oder eine ähnliche Funktionalität wie das beispielhafte Verarbeitungssystem 500 der 5A und/oder das exemplarische System 565 der 5B enthalten können), und Netzwerk(e) 606 (die ähnlich zu dem/den hierin beschriebenen Netzwerk(en) sein können). In einigen Ausführungsformen der vorliegenden Offenbarung kann das System 605 implementiert sein.
  • Im System 605 kann/können die Client-Vorrichtung(en) 604 für eine Spielsitzung nur Eingabedaten als Reaktion auf Eingaben in die Eingabevorrichtung(en) empfangen, die Eingabedaten an den/die Spielserver 603 senden, codierte Anzeigedaten vom/von den Spielserver(n) 603 empfangen und die Anzeigedaten auf der Anzeige 624 anzeigen. Dabei wird die rechenintensivere Berechnung und Verarbeitung auf den/die Spielserver 603 ausgelagert (z.B. wird Rendering - insbesondere Ray- oder Path-Tracing - für die grafische Ausgabe der Spielsitzung durch die GPU(s) des/der Spielserver 603 ausgeführt). Mit anderen Worten wird die Spielsitzung von dem/den Spielserver(n) 603 zu der/den Client-Vorrichtung(en) 604 gestreamt, wodurch die Anforderungen, der Client-Vorrichtung(en) 604 für die Grafikverarbeitung und das Rendering reduziert werden.
  • Beispielsweise kann in Bezug auf eine Instanziierung einer Spielsitzung eine Client-Vorrichtung 604 einen Frame der Spielsitzung der Anzeige 624 beruhend auf dem Empfang von Anzeigedaten von dem/den Spielserver(n) 603 anzeigen. Die Client-Vorrichtung 604 kann eine Eingabe in eine der Eingabevorrichtung(en) empfangen und als Reaktion Eingabedaten erzeugen. Die Client-Vorrichtung 604 kann die Eingabedaten über die Kommunikationsschnittstelle 621 und über das/die Netzwerk(e) 606 (z.B. das Internet) an den/die Spielserver 603 senden, und der/die Spielserver 603 können die Eingabedaten über die Kommunikationsschnittstelle 618 empfangen. Die CPU(s) kann/können die Eingabedaten empfangen, die Eingabedaten verarbeiten, und Daten an die GPU(s) senden, die die GPU(s) veranlassen, ein Rendering der Spielsitzung zu erzeugen. Beispielsweise können die Eingabedaten für eine Bewegung eines Charakters des Benutzers in einem Spiel, das Abfeuern einer Waffe, das Nachladen, das Passspiels eines Balls, das Wenden eines Fahrzeugs usw. repräsentativ sein. Die Rendering-Komponente 612 kann die Spielsitzung rendern (z.B. repräsentativ für das Ergebnis der Eingabedaten) und die Rendering-Erfassungskomponente 614 kann das Rendering der Spielsitzung als Anzeigedaten erfassen (z.B. als Bilddaten, die den gerenderten Frame der Spielsitzung erfassen). Das Rendering der Spielsitzung kann strahlen- oder wegverfolgte Beleuchtungs- und/oder Schatteneffekte enthalten, die unter Verwendung eines oder mehrere Parallelverarbeitungseinheiten- wie GPUs, die ferner die Verwendung von einem oder mehreren zweckbestimmter Hardwarebeschleunigern oder Verarbeitungskernen einsetzen können, um Ray- oder Path-Tracing-Techniken durchzuführen - des/der Spielserver 603 berechnet werden. Der Codierer 616 kann dann die Anzeigedaten codieren, um codierte Anzeigedaten zu erzeugen, und die codierten Anzeigedaten können über das/die Netzwerk(e) 606 über die Kommunikationsschnittstelle 618 zur Client-Vorrichtung 604 gesendet werden. Die Client-Vorrichtung 604 kann die codierten Anzeigedaten über die Kommunikationsschnittstelle 621 empfangen und der Decoder 622 kann die codierten Anzeigedaten decodieren, um die Anzeigedaten zu erzeugen. Die Client-Vorrichtung 604 kann dann die Anzeigedaten über die Anzeige 624 anzeigen.
  • Es ist zu beachten, dass die hierin beschriebenen Techniken in ausführbaren Anweisungen ausgeführt sein können, die in einem computerlesbaren Medium zur Verwendung durch oder in Verbindung mit einer prozessorbasierten Anweisungsausführungsmaschine, - System, -Vorrichtung oder -Gerät gespeichert sind. Es wird durch Fachleute erkannt werden, dass für einige Ausführungsformen verschiedene Typen von computerlesbaren Medien zum Speichern von Daten enthalten sein können. Wie hierin verwendet, weist ein „computerlesbares Medium“ eines oder mehrere irgendwelcher geeigneter Medien zum Speichern der ausführbaren Anweisungen eines Computerprogramms auf, so dass die Anweisungsausführungsmaschine, - System, -Vorrichtung oder -Gerät die Anweisungen vom computerlesbaren Medium lesen (oder abrufen) und die Anweisungen zum Ausführen der beschriebenen Ausführungsformen ausführen kann. Geeignete Speicherformate weisen eines oder mehreres eines elektronischen, magnetischen, optischen und elektromagnetischen Formats auf. Eine nicht vollständige Liste herkömmlicher exemplarischer computerlesbarer Medien weist auf: eine tragbare Computerdiskette; einen Direktzugriffsspeicher (RAM); einen Nur-Lese-Speicher (ROM); einen löschbaren programmierbaren Nur-Lese-Speicher (EPROM); eine Flash-Speichervorrichtung; und optische Speichervorrichtungen, einschließlich einer tragbaren Compact Disc (CD), einer tragbaren digitalen Videodisc (DVD) und dergleichen.
  • Es versteht sich, dass die in den beigefügten Figuren dargestellte Anordnung von Komponenten zu Veranschaulichungszwecken dient und andere Anordnungen möglich sind. Beispielsweise können eines oder mehrere der hierin beschriebenen Elemente ganz oder teilweise als elektronische Hardwarekomponente realisiert werden. Andere Elemente können in Software, Hardware oder eine Kombination aus Software und Hardware implementiert sein. Darüber hinaus können einige oder alle dieser anderen Elemente kombiniert werden, einige können ganz weggelassen werden und zusätzliche Komponenten können hinzugefügt werden, während die hierin beschriebene Funktionalität immer noch erreicht wird. Folglich kann der hierin beschriebene Gegenstand in vielen verschiedenen Variationen ausgeführt werden, und alle diese Variationen werden so betrachtet, dass sie sich innerhalb des Schutzumfangs der Ansprüche befinden.
  • Um ein Verständnis des hierin beschriebenen Gegenstands zu erleichtern, werden viele Aspekte in Form von Handlungsabfolgen beschrieben. Es wird durch Fachleute erkannt werden, dass die verschiedenen Aktionen durch spezialisierte Schaltungen oder Schaltungsbauteile, durch Programmanweisungen, die durch einen oder mehrere Prozessoren ausgeführt werden, oder durch eine Kombination von beiden ausgeführt werden können. Die Beschreibung hierin irgendeiner Abfolge von Aktionen ist nicht dazu bestimmt zu bedeuten, dass die spezifische Reihenfolge, die zum Ausführen dieser Abfolge beschrieben wird, befolgt werden muss. Alle hierin beschriebenen Verfahren können in irgendeiner geeigneten Reihenfolge durchgeführt werden, sofern hierin nicht anders angegeben oder anderweitig durch den Kontext eindeutig widersprochen wird.
  • Die Verwendung der Begriffe „ein“, „eine“ und „einer“ und „der, die, das“ und ähnlicher Verweise im Kontext der Beschreibung des Gegenstands (insbesondere im Kontext der folgenden Ansprüche) sind so auszulegen, dass sie sowohl den Singular als auch den der Plural abdecken, sofern hierin nicht anders angegeben oder anderweitig durch den Kontext eindeutig widersprochen wird. Die Verwendung des Begriffs „mindestens ein“ gefolgt von einer Liste mit einem oder mehreren Elementen (beispielsweise „mindestens eine von A und B“) ist so auszulegen, dass er ein Element, das aus den aufgeführten Elementen (A oder B) ausgewählt ist, oder irgendeine Kombination von zwei oder mehreren der aufgeführten Elemente (A und B) bedeutet, sofern hierin nicht anders angegeben oder anderweitig durch den Kontext eindeutig widersprochen wird. Darüber hinaus dient die vorhergehende Beschreibung nur zum Zweck der Veranschaulichung und nicht zum Zweck der Einschränkung, da der angestrebte Schutzumfang durch die Ansprüche, die nachstehend dargelegt werden, zusammen mit irgendwelchen Äquivalenten davon definiert wird. Die Verwendung sämtlicher hierin bereitgestellten Beispiele oder einer exemplarischen Formulierung (z.B. „wie“), ist lediglich dazu bestimmt, den Gegenstand besser zu veranschaulichen und stellt keine Einschränkung des Umfangs des Gegenstands dar, sofern nicht anders beansprucht. Die Verwendung des Ausdrucks „beruhend auf“ und anderer ähnlicher Formulierungen, die eine Bedingung für die Herbeiführung eines Ergebnisses angeben, sowohl in den Ansprüchen als auch in der schriftlichen Beschreibung, ist nicht dazu bestimmt, irgendwelche andere Bedingungen auszuschließen, die dieses Ergebnis herbeiführen. Keine Formulierung in der Beschreibung sollte so ausgelegt werden, dass sie irgendein nicht beanspruchtes Element als wesentlich für die Anwendung der beanspruchten Erfindung angibt.

Claims (22)

  1. Computerimplementiertes Verfahren zum Optimieren eines dreidimensionalen, 3D, Referenzmodells, das aufweist: Verarbeiten eines Anfangs-3D-Modells, um einen Satz von Bildern für Umgebungsbedingungen zu erzeugen, die die Kameraposition und/oder die Lichtposition spezifizieren; Rendem des Referenz-3D-Modells, um einen Satz von Referenzbildern für die Umgebungsbedingungen zu erzeugen; Berechnen von Bildraumverlusten beruhend auf einem Satz von Bildern und dem Satz der Referenzbilder; und Aktualisieren von Parametern des Anfangs-3D-Modells gemäß den Bildraumverlusten, um ein 3D-Modell mit reduzierter Auflösung zu erzeugen, das im Vergleich zu einer Auflösung des Referenz-3D-Modells eine niedrigere Auflösung aufweist.
  2. Computerimplementiertes Verfahren nach Anspruch 1, wobei die Parameter Vertex-Orte und Oberflächen-Normalenvektoren aufweisen.
  3. Computerimplementiertes Verfahren nach Anspruch 1 oder 2, wobei eine Rendering-Pipeline, die das Anfangs-3D-Modell verarbeitet, um den Satz der Bilder zu erzeugen, ein differenzierbarer Renderer ist und die Bildraumverluste durch die Rendering-Pipeline rückwärts fortgepflanzt werden, um die Parameter zu aktualisieren.
  4. Computerimplementiertes Verfahren nach Anspruch 3, wobei das Referenz-3D-Modell durch eine zweite Rendering-Pipeline gerendert wird, die im Vergleich zur Rendering-Pipeline eine andere Struktur aufweist.
  5. Computerimplementiertes Verfahren nach einem der vorhergehenden Ansprüche, wobei die Parameter Materialien aufweisen.
  6. Computerimplementiertes Verfahren nach einem der vorhergehenden Ansprüche, wobei die Parameter eine Displacement-Map aufweisen.
  7. Computerimplementiertes Verfahren nach einem der vorhergehenden Ansprüche, wobei die Parameter eine Normal-Map und eine Displacement-Map aufweisen und die Korrekturen für die Normal-Map und die Displacement-Map gleichzeitig erzeugt werden, um die Parameter zu aktualisieren.
  8. Computerimplementiertes Verfahren nach einem der vorhergehenden Ansprüche, wobei das reduzierte 3D-Modell eine erste geometrische Darstellung aufweist und das Referenz-3D-Modell eine zweite geometrische Darstellung aufweist, die sich von der ersten geometrischen Darstellung unterscheidet.
  9. Computerimplementiertes Verfahren nach einem der vorhergehenden Ansprüche, wobei das Anfangs-3D-Modell eine Kugel aufweist.
  10. Computerimplementiertes Verfahren nach einem der vorhergehenden Ansprüche, wobei das Anfangs-3D-Modell ein reduziertes 3D-Modell aufweist, das aus dem Referenz-3D-Modell erzeugt wird.
  11. Computerimplementiertes Verfahren nach einem der vorhergehenden Ansprüche, wobei der Satz der Referenzbilder unter Verwendung einer ersten Anzahl von Abtastwerten pro Pixel gerendert wird und einem Antialiasing unterzogen wird, und das Anfangs-3D-Modell unter Verwendung einer zweiten Anzahl von Abtastwerten pro Pixel erzeugt wird, die kleiner als die erste Anzahl ist, um den Satz der Bilder zu erzeugen.
  12. Computerimplementiertes Verfahren nach einem der vorhergehenden Ansprüche, wobei der Satz der Referenzbilder eine Animationssequenz aufweist und die Parameter Skinning-Gewichte aufweisen.
  13. Computerimplementiertes Verfahren nach einem der vorhergehenden Ansprüche, wobei der Satz der Referenzbilder eine Animationssequenz aufweist und die Parameter Bone-Transformationen aufweisen.
  14. Computerimplementiertes Verfahren nach einem der vorhergehenden Ansprüche, wobei mindestens einer der Schritte des Verarbeitens, des Renderns, Berechnens und Aktualisierens innerhalb eine Cloud-Computing-Umgebung ausgeführt wird.
  15. Computerimplementiertes Verfahren nach einem der vorhergehenden Ansprüche, wobei mindestens einer der Schritte des Verarbeitens, des Renderns, Berechnens und Aktualisierens auf einem Server oder in einem Datenzentrum ausgeführt wird, um den Satz der Bilder zu erzeugen, und das 3D-Modell mit reduzierter Auflösung zu einer Benutzervorrichtung gestreamt wird.
  16. Computerimplementiertes Verfahren nach einem der vorhergehenden Ansprüche, wobei mindestens einer der Schritte des Verarbeitens, des Renderns, Berechnens und Aktualisierens zum Trainieren, Testen oder Zertifizieren eines neuronalen Netzwerks ausgeführt wird, das in einer Maschine, einem Roboter oder einem autonomen Fahrzeug eingesetzt wird.
  17. Computerimplementiertes Verfahren nach einem der vorhergehenden Ansprüche, wobei mindestens einer der Schritte des Verarbeitens, des Renderns, Berechnens und Aktualisierens auf einer virtuellen Maschine ausgeführt wird, die einen Abschnitt einer Grafikverarbeitungseinheit aufweist.
  18. System, das aufweist: einen Prozessor, der ein dreidimensionales (3D) Referenzmodell optimiert durch: Verarbeiten eines Anfangs-3D-Modells, um einen Satz von Bildern für Umgebungsbedingungen zu erzeugen, die die Kameraposition und/oder die Lichtposition spezifizieren; Rendem des Referenz-3D-Modells, um einen Satz von Referenzbildern für die Umgebungsbedingungen zu erzeugen; Berechnen von Bildraumverlusten beruhend auf einem Satz von Bildern und dem Satz der Referenzbilder; und Aktualisieren von Parametern des Anfangs-3D-Modells gemäß den Bildraumverlusten, um ein 3D-Modell mit reduzierter Auflösung zu erzeugen, das im Vergleich zu einer Auflösung des Referenz-3D-Modells eine niedrigere Auflösung aufweist.
  19. System nach Anspruch 18, wobei eine Rendering-Pipeline, die das Anfangs-3D-Modell verarbeitet, um den Satz der Bilder zu erzeugen, ein differenzierbarer Renderer ist und die Bildraumverluste durch die Rendering-Pipeline rückwärts fortgepflanzt werden, um die Parameter zu aktualisieren.
  20. System nach Anspruch 18 oder 19, wobei der Prozessor das dreidimensionale, 3D, Referenzmodell durch Ausführen eines computerimplementierten Verfahrens nach einem der Ansprüche 1 bis 17 optimiert.
  21. Nichtflüchtiges computerlesbares Medium, das Computeranweisungen zum Optimieren eines dreidimensionalen (3D) Referenzmodells speichert, die, wenn sie durch einen oder mehrere Prozessoren ausgeführt werden, den einen oder die mehreren Prozessoren veranlassen, die Schritte auszuführen: Verarbeiten eines Anfangs-3D-Modells, um einen Satz von Bildern für Umgebungsbedingungen zu erzeugen, die die Kameraposition und/oder die Lichtposition spezifizieren; Berechnen von Pixeldifferenzen beruhend auf dem Bild und einem Referenzbild; Rendem des Referenz-3D-Modells, um einen Satz von Referenzbildern für die Umgebungsbedingungen zu erzeugen; Berechnen von Bildraumverlusten beruhend auf einem Satz von Bildern und dem Satz der Referenzbilder; und Aktualisieren von Parametern des Anfangs-3D-Modells gemäß den Bildraumverlusten, um ein 3D-Modell mit reduzierter Auflösung zu erzeugen, das im Vergleich zu einer Auflösung des Referenz-3D-Modells eine niedrigere Auflösung aufweist.
  22. Nichtflüchtiges computerlesbares Medium nach Anspruch 21, wobei die Computeranweisungen, wenn sie durch einen oder mehrere Prozessoren ausgeführt werden, den einen oder die mehreren Prozessoren veranlassen, die Schritte eines Verfahrens nach einem der Ansprüche 1 bis 17 auszuführen.
DE102021130031.2A 2020-11-20 2021-11-17 Erscheinungsbildgesteuerte automatische dreidimensionale modellierung Pending DE102021130031A1 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202063116294P 2020-11-20 2020-11-20
US63/116,294 2020-11-20
US17/194,477 2021-03-08
US17/194,477 US11450077B2 (en) 2020-11-20 2021-03-08 Appearance-driven automatic three-dimensional modeling

Publications (1)

Publication Number Publication Date
DE102021130031A1 true DE102021130031A1 (de) 2022-05-25

Family

ID=81453136

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102021130031.2A Pending DE102021130031A1 (de) 2020-11-20 2021-11-17 Erscheinungsbildgesteuerte automatische dreidimensionale modellierung

Country Status (2)

Country Link
US (2) US11450077B2 (de)
DE (1) DE102021130031A1 (de)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20230036982A1 (en) * 2021-07-30 2023-02-02 Cisco Technology, Inc. Three-dimensional visualization of wi-fi signal propagation based on building plan with implicit geometry
US20240046551A1 (en) * 2022-08-03 2024-02-08 Yoom.Com Ltd Generating geometry and texture for volumetric video from 2d images with a limited viewpoint
CN116206035B (zh) * 2023-01-12 2023-12-01 北京百度网讯科技有限公司 人脸重建方法、装置、电子设备以及存储介质
CN117830489B (zh) * 2024-03-05 2024-05-03 浙江小牛哥科技有限公司 智能室内设计图像渲染系统

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6747651B1 (en) * 1998-07-18 2004-06-08 National University Of Singapore System and method for creating bounding volume hierarchies utilizing model simplification
US7523411B2 (en) * 2000-08-22 2009-04-21 Bruce Carlin Network-linked interactive three-dimensional composition and display of saleable objects in situ in viewer-selected scenes for purposes of object promotion and procurement, and generation of object advertisements
US6950104B1 (en) * 2000-08-30 2005-09-27 Microsoft Corporation Methods and systems for animating facial features, and methods and systems for expression transformation
US6850872B1 (en) * 2000-08-30 2005-02-01 Microsoft Corporation Facial image processing methods and systems
US6771261B2 (en) * 2001-08-30 2004-08-03 Intel Corporation Error metric for mesh simplification processing
US7212664B2 (en) * 2003-08-07 2007-05-01 Mitsubishi Electric Research Laboratories, Inc. Constructing heads from 3D models and 2D silhouettes
US7646384B2 (en) * 2005-03-31 2010-01-12 Siemens Product Lifecycle Management Software Inc. System and method to determine a simplified representation of a model
US7605820B1 (en) * 2005-09-15 2009-10-20 Nvidia Corporation Creating texture data outside of a chart boundary
US20080266287A1 (en) * 2007-04-25 2008-10-30 Nvidia Corporation Decompression of vertex data using a geometry shader
CA2714562C (en) * 2008-01-31 2017-11-28 University Of Southern California Practical modeling and acquisition of layered facial reflectance
US20130046511A1 (en) * 2011-08-15 2013-02-21 Honeywell International Inc. Method, apparatus and computer program product for simplifying a representative of a computer-aided design model
US9041711B1 (en) * 2012-05-08 2015-05-26 Google Inc. Generating reduced resolution textured model from higher resolution model
US10565747B2 (en) * 2017-09-06 2020-02-18 Nvidia Corporation Differentiable rendering pipeline for inverse graphics
US10235797B1 (en) * 2017-11-27 2019-03-19 Lowe's Companies, Inc. Inverse rendering of visual material properties
US10818038B2 (en) * 2018-09-10 2020-10-27 Disney Enterprises, Inc. Techniques for capturing dynamic appearance of skin

Also Published As

Publication number Publication date
US11450077B2 (en) 2022-09-20
US11615602B2 (en) 2023-03-28
US20220392179A1 (en) 2022-12-08
US20220165040A1 (en) 2022-05-26

Similar Documents

Publication Publication Date Title
DE102019103059B4 (de) Hieb- und stichfester Strahl-Dreieck-Schnittpunkt
DE102021119726A1 (de) Dreidimensionale objektrekonstruktion aus einem video
DE102019101873A1 (de) Abfragespezifische Verhaltensmodifizierung von Baumtraversierung
DE102019102279A1 (de) Erzeugung von synthetischen Bildern zum Trainieren eines Neuronal-Netzwerkmodells
US20190355103A1 (en) Guided hallucination for missing image content using a neural network
DE102019103058A1 (de) Verfahren für fortgesetzte begrenzungsvolumenhierarchietraversierung auf schnittpunkte ohne shader-intervention
DE102019102821A1 (de) Verfahren zur behandlung von ungeordneten opak- und alphastrahl/primitiv-schnittpunkten
DE102019103326A1 (de) Robuste, effiziente multiprozessor-koprozessor-schnittstelle
DE102019130889A1 (de) Schätzung der tiefe eines mit einer monokularen rgb-kamera aufgenommenen videodatenstroms
DE102018121282A1 (de) Differenzierbare rendering-pipeline für inverse graphik
DE102018009315A1 (de) Verfahren tiefgehenden Lernens zum Trennen von Reflexions- und Übertragungsbildern, die an einer halbreflektierenden Oberfläche in einem Computerbild einer Realweltszene sichtbar sind
DE102021130031A1 (de) Erscheinungsbildgesteuerte automatische dreidimensionale modellierung
DE102019102009A1 (de) Reduzierung des rauschens während des renderings durch parallele path-space-filterung unter verwendung von hashing
DE102021121109A1 (de) Wiederherstellung dreidimensionaler modelle aus zweidimensionalen bildern
DE102021105249A1 (de) Mikrotraining zur iterativen verfeinerung eines neuronalen netzes mit wenigen anpassungen
DE102019132001A1 (de) Vorrichtung und verfahren für einen hierarchischen beamtracer
DE102022113244A1 (de) Gemeinsame Form- und Erscheinungsbildoptimierung durch Topologieabtastung
DE102022104142A1 (de) Strahldichte-caching in echtzeit durch ein neuronales netz für pfadverfolgungszwecke
DE102022118651A1 (de) Mehrfachauflösung-hash-codierung für neuronale netzwerke
DE112019001978T5 (de) Verbesserung des realismus von szenen mit wasseroberflächen beim rendern
DE102022100360A1 (de) Framework für maschinelles lernen angewandt bei einer halbüberwachten einstellung, um instanzenverfolgung in einer sequenz von bildframes durchzuführen
DE102021104310A1 (de) Reservoir-basiertes räumlich-zeitliches resampling nach wichtigkeit unter verwendung einer globalen beleuchtungsdatenstruktur
DE102021132992A1 (de) Messen und Detektieren von Leerlaufzeiten und Erkennen der Ursachen dafür in Cloud-basierten Streaming-Anwendungen
DE102021128286A1 (de) Adaptives abtasten mit einer zielabtastrate
DE102022107232A1 (de) Gepackter fehlerkorrekturcode (ecc) für komprimierten datenschutz

Legal Events

Date Code Title Description
R012 Request for examination validly filed