DE102022113244A1 - Gemeinsame Form- und Erscheinungsbildoptimierung durch Topologieabtastung - Google Patents

Gemeinsame Form- und Erscheinungsbildoptimierung durch Topologieabtastung Download PDF

Info

Publication number
DE102022113244A1
DE102022113244A1 DE102022113244.7A DE102022113244A DE102022113244A1 DE 102022113244 A1 DE102022113244 A1 DE 102022113244A1 DE 102022113244 A DE102022113244 A DE 102022113244A DE 102022113244 A1 DE102022113244 A1 DE 102022113244A1
Authority
DE
Germany
Prior art keywords
topology
model
computer
data
volumetric
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
DE102022113244.7A
Other languages
English (en)
Inventor
Jon Niklas Theodor Hasselgren
Carl Jacob Munkberg
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 DE102022113244A1 publication Critical patent/DE102022113244A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • G06T17/20Finite element generation, e.g. wire-frame surface description, tesselation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T17/00Three dimensional [3D] modelling, e.g. data description of 3D objects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T15/003D [Three Dimensional] image rendering
    • G06T15/50Lighting effects

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Graphics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Geometry (AREA)
  • Software Systems (AREA)
  • Image Generation (AREA)

Abstract

Systeme und Verfahren ermöglichen die Optimierung einer 3D-Modelldarstellung, welche die Form und Erscheinung einer bestimmten 3D-Szene oder eines bestimmten Objekts umfasst. Das opake 3D-Gitter (z.B., Vertexpositionen und entsprechende Topologie) und räumlich variierende Materialattribute werden gemeinsam basierend auf Bildraumverlusten optimiert, um mehreren Bildbeobachtungen (z.B., Referenzbilder der Referenz-3D-Szene oder des Objekts) zu entsprechen. Eine geometrische Topologie definiert Flächen und/oder Zellen in dem opaken 3D-Gitter, die sichtbar sind und zufällig durch Training basierend auf den Bildraumverlusten initialisiert und optimiert werden können. Ein Anwenden der Geometrietopologie auf ein opakes 3D-Gitter zum Lernen der Form verbessert die Genauigkeit von Silhouettenkanten und Leistung im Vergleich zu der Verwendung transparenter Gitterdarstellungen. Im Gegensatz zu Ansätzen, die eine anfängliche Schätzung für die Topologie und/oder ein erschöpfendes Prüfen von möglichen geometrischen Topologien erfordern, wird die 3D-Modelldarstellung basierend auf Bildraumdifferenzen gelernt, ohne eine anfängliche Schätzung zu erfordern.

Description

  • HINTERGRUND
  • Das Synthetisieren von Bildern von Objekten mit komplexen Formen und Erscheinungen ist ein zentrales Ziel in der Computergraphik. Das Problem kann durch Wählen geeigneter Darstellungen für Form und Erscheinungsbild der Objekte, Modellieren einer dreidimensionalen (3D) Szene gemäß der gewählten Darstellungen und schließlich effizientes Rendering der Szene aufgeteilt werden. Das Erzeugen eines Form- und Erscheinungsbildmodells für eine bestimmte 3D-Szene ist von Natur aus ein umgekehrtes Problem: Suchen einer 3D-Modelldarstellung, die, wenn gerendert, zu einem zweidimensionalen (2D) Bild führen wird, das wie gewünscht erscheint. Über mehrere Iterationen wird inverses Rendering verwendet, um eine Form, Beleuchtung und Materialeigenschaften eines 3D-Modells basierend auf Referenzbildern der 3D-Szene, die modelliert wird, iterativ wiederherzustellen.
  • Techniken des Standes der Technik stützen sich typischerweise auf ein anfängliches volumetrisches Gitter oder 3D-Modell (Würfel, Kugel usw.), das basierend mindestens teilweise auf Referenzbilder (oder Referenz-3D-Modell) bestimmt wird. Andere Techniken stützen sich auf das Training unter Verwendung aller möglichen Topologien eines gleichmäßigen volumetrischen Gitters und sind hinsichtlich der Ausführungszeit aufwändig zu implementieren. Beispielsweise bewertet die Deep-Marching-Cubes-Technik 140 mögliche Topologien für jeden Würfel innerhalb eines gleichmäßigen 3D-Gitters. Noch andere Techniken erzeugen 3D-Modelle, die unter geometrischen Ungenauigkeiten leiden. Es gibt einen Bedarf, sich diesen Problemen und/oder anderen Problemen zu widmen, die dem Stand der Technik zugeordnet sind.
  • ZUSAMMENFASSUNG
  • Ausführungsformen der vorliegenden Offenbarung betreffen eine gemeinsame Form- und Erscheinungsbildoptimierung durch Topologieabtastung. Systeme und Verfahren werden offenbart, welche die Optimierung einer 3D-Modelldarstellung ermöglichen, welche die Form und das Erscheinungsbild einer bestimmten 3D-Szene oder eines bestimmten Objekts umfassen. In einer Ausführungsform wird eine anfängliche Schätzung einer geometrischen Topologie unter Verwendung einer gewissen Kenntnis der 3D-Szene oder des Objekts nicht benötigt. In einer Ausführungsform definiert eine geometrische Topologie Zellen (z.B., 3D-Gitter, eingepackte Tetraeder) und/oder Flächen von Zellen (z.B., Dreiecke, Vierecke usw.) eines volumetrischen Gitters, die sichtbar sind (z.B., aktiviert, aktiv, eingeschlossen). Die geometrische Topologie kann zufällig initialisiert und durch Training basierend auf Bildraumverlusten optimiert werden. Ein Anwenden der geometrischen Topologie auf ein opakes 3D-Gitter zum Lernen der Form verbessert die Genauigkeit von Silhouettenkanten und der Leistung im Vergleich zum Verwenden von transparenten Gitterdarstellungen. Im Gegensatz zu Ansätzen, die eine anfängliche Schätzung für die Topologie und/oder ein erschöpfendes Prüfen von möglichen geometrischen Topologien erfordern, wird die Geometrietopologie basierend auf Bildraumdifferenzen gelernt, ohne eine anfängliche Schätzung zu erfordern. Die Erscheinungsbild-gesteuerte 3D-Modellextraktion weist eine Anzahl von Verwendungen auf, wie beispielsweise ein Erzeugen mehrerer Detaillierungsgrad-Renderings von komplexen Szenen, Konvertierung zwischen unterschiedlichen Rendering-Systemen und sogar Konvertierung zwischen unterschiedlichen geometrischen Szenendarstellungen.
  • In einer Ausführungsform werden das opake 3D-Gitter (z.B., Vertexpositionen und entsprechende Topologie, die Verbindungen zwischen den Vertexpositionen definieren, um Flächen einer Oberfläche oder eines Volumens zu bilden) und räumlich variierende Materialattribute der 3D-Modelldarstellung basierend auf Bildraumverlusten gemeinsam optimiert, um mehreren Bildbeobachtungen (z.B., Referenzbilder der Referenz 3D-Szene oder Objekt) zu entsprechen. Die 3D-Modelldarstellung wird durch einen differenzierbaren Renderer gerendert, um gerenderte Bilder zu erzeugen, die den Referenzbildern entspreche. Die Bildraumverluste werden basierend auf berechneten Wahrscheinlichkeitswerten, Flächen, die in dem volumetrischen Gitter enthalten sind, und Differenzen zwischen den Referenzbildern und gerenderten Bildern berechnet. Höhere Wahrscheinlichkeitswerte entsprechen einer höheren Wahrscheinlichkeit, dass die Fläche in der 3D-Modelldarstellung umfasst ist. Daher können Flächen oder Zellen, die einem Wahrscheinlichkeitswert von null (oder unter einem Mindestschwellenwert) zugeordnet sind, von der 3D-Modelldarstellung entfernt werden (Zellen werden nicht basierend auf den Wahrscheinlichkeitswerten eingefügt). Der Bildraumverlust wird rückwärts propagiert, um gelernte Parameter zu aktualisieren, die verwendet werden, um die 3D-Modelldarstellung und Wahrscheinlichkeitswerte zu erzeugen.
  • Ein Verfahren, computerlesbares Medium und System werden zur gemeinsamen Form- und Erscheinungsbildoptimierung durch Topologieabtastung offenbart. In einer Ausführungsform umfasst ein Verfahren zum Konstruieren eines 3D-Modells das Empfangen einer 3D-Topologiedefinition, die Flächen von Zellen innerhalb eines volumetrischen Gitters kennzeichnet, und das Verarbeiten der 3D-Topologie und des volumetrischen Gitters gemäß Parametern, um eine 3D-Modelldarstellung vorherzusagen, die einem Referenz-3D-Modell entspricht, wobei die 3D-Modelldarstellung ein Oberflächengitter umfasst. In einer Ausführungsform ist das Oberflächengitter eine Liste von Vertexpositionen der Flächen und eine Topologie, die Verbindungen zwischen aktiven Flächen der Zellen definiert. Während der Optimierung wird das volumetrische Gitter modifiziert und nachdem die Optimierung beendet ist, wird das volumetrische Gitter in ein Oberflächengitter durch Entfernen von Flächen konvertiert, die innerhalb des Volumens sind (lediglich die Flächen auf dem Oberflächengitter werden beibehalten). In einer Ausführungsform werden Flächen in dem volumetrischen Gitter entfernt, die gelernten Wahrscheinlichkeitswerten unter einem Schwellenwert zugeordnet sind, um das Oberflächengitter zu erzeugen. In einer Ausführungsform wird das Oberflächengitter durch dreieckige Flächen definiert. In einer Ausführungsform wird die 3D-Modelldarstellung gerendert, um ein gerendertes Bild zu erzeugen, und dem gerenderten Bild entsprechende Strahlen werden durch die 3D-Modelldarstellung transportiert, um Wahrscheinlichkeitswerte für die Zellen zu berechnen. In einer Ausführungsform werden die Parameter basierend auf den Wahrscheinlichkeitswerten und Differenzen zwischen dem gerenderten Bild und einem Referenzbild des Referenz-3D-Modells aktualisiert, um die Differenzen zu verringern.
  • Figurenliste
  • Die vorliegenden Systeme und Verfahren für Form- und Erscheinungsbildoptimierung durch Topologieabtastung werden nachstehend mit Bezugnahme auf die beigefügten Zeichnungsfiguren ausführlich beschrieben, wobei:
    • 1A ein Konzeptdiagramm einer Topologie und Wahrscheinlichkeitsdaten veranschaulicht, die verwendet werden, um eine Topologie zu lernen, gemäß einer Ausführungsform;
    • 1B ein Konzeptdiagramm einer 3D-Modelldarstellung, einer gelernten Wahrscheinlichkeitsdichte, einer gerenderten 3D-Modelldarstellung und eines gerenderten Referenzobjekts veranschaulicht, gemäß einer Ausführungsform;
    • 1C ein Konzeptdiagramm von gelernten Wahrscheinlichkeitsdichten, gerenderten 3D-Modelldarstellungen und einem gelernten Oberflächengitter veranschaulicht, gemäß einer Ausführungsform;
    • 1D ein Konzeptdiagramm eines Form- und Erscheinungsbild-gesteuerten automatischen 3D-Modellierungssystem gemäß einer Ausführungsform veranschaulicht;
    • 1E ein Ablaufdiagramm eines Verfahrens zur Form- und Erscheinungsbild-gesteuerten automatischen 3D-Modellierung veranschaulicht, das zur Verwendung beim Implementieren einiger Ausführungsformen der vorliegenden Offenbarung geeignet ist;
    • 2A ein Ablaufdiagramm eines Verfahrens zum Rendering von Wahrscheinlichkeitswerten für eine abgetastete Topologie veranschaulicht, das zur Verwendung beim Implementieren einiger Ausführungsformen der vorliegenden Offenbarung geeignet ist;
    • 2B ein Ablaufdiagramm eines Verfahrens zum Aktualisieren von Parametern basierend auf Wahrscheinlichkeitswerten einer Bildraumdifferenz veranschaulicht, das zur Verwendung beim Implementieren einiger Ausführungsformen der vorliegenden Offenbarung geeignet ist;
    • 2C ein Ablaufdiagramm eines Verfahrens für Importance-Sampling einer Topologie basierend auf Wahrscheinlichkeitswerten veranschaulicht, das zur Verwendung beim Implementieren einiger Ausführungsformen der vorliegenden Offenbarung geeignet ist;
    • 3A ein Konzeptdiagramm eines hierarchischen Grob-nach-fein-Trainings gemäß einer Ausführungsform veranschaulicht;
    • 3B ein Konzeptdiagramm eines gelernten Oberflächengitters, einer gerenderten 3D-Modelldarstellung und eines gerenderten Referenz-3D-Modell gemäß einer Ausführungsform veranschaulicht;
    • 3C ein Ablaufdiagramm eines anderen Verfahrens zur Form- und Erscheinungsbild-gesteuerte automatische 3D-Modellierung veranschaulicht, das zur Verwendung beim Implementieren einiger Ausführungsformen der vorliegenden Offenbarung geeignet ist;
    • 4 eine beispielhafte Parallelverarbeitungseinheit veranschaulicht, die zur Verwendung beim Implementieren einiger Ausführungsformen der vorliegenden Offenbarung geeignet ist;
    • 5A ein Konzeptdiagramm eines unter Verwendung der PPU von 4 implementierten Verarbeitungssystems ist, das zur Verwendung beim Implementieren einiger Ausführungsformen der vorliegenden Offenbarung geeignet ist;
    • 5B ein beispielhaftes System veranschaulicht, bei dem die verschiedene Architektur und/oder Funktionalität der verschiedenen vorherigen Ausführungsformen implementiert werden kann;
    • 5C Komponenten eines beispielhaften Systems veranschaulicht, das verwendet werden kann, um maschinelles Lernen in mindestens einer Ausführungsform zu trainieren und zu benutzen;
    • 6A ein Konzeptdiagramm einer durch die PPU von 4 implementierten Graphikverarbeitungs-Pipeline ist, die zur Verwendung beim Implementieren einiger Ausführungsformen der vorliegenden Offenbarung geeignet ist; und
    • 6B ein beispielhaftes Spiele-Streaming-System veranschaulicht, das zur Verwendung beim Implementieren einiger Ausführungsformen der vorliegenden Offenbarung geeignet ist.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Systeme und Verfahren werden offenbart, die eine gemeinsame Form- und Erscheinungsbildoptimierung durch Topologieabtastung betreffen. Eine 3D-Modelldarstellung umfasst eine Form und ein Erscheinungsbild einer bestimmten 3D-Szene oder eines bestimmten Objekts von mehreren Bildbeobachtungen. Die 3D-Modelldarstellung wird durch eine 3D-Modellerzeugungseinheit erzeugt, die Form- und Erscheinungsbildparameter unter Verwendung von Referenzbildern und einer zufälligen Topologie in jeder Trainingsiteration (z.B., Schritt) lernt. In einer Ausführungsform werden mehrere randomisierte Topologien abgetastet, um die Form- und Erscheinungsbild-Parameter zu lernen. Die Topologie wird durch eine Maske spezifiziert, die angibt, welche Flächen (z.B., Dreiecke, Vierecke usw.) oder Zellen in einem volumetrischen Gitter (z.B., 3D-Gitter, eingepackte Tetraeder) in der Topologie umfasst sind (z.B., sichtbar, aktiviert, aktiv, abgedeckt). Vertexpositionen des volumetrischen Gitters werden gelernt, um die Form der 3D-Modelldarstellung für die Topologie zu definieren. Erscheinungsbildattribute (z.B., räumlich variierende Materialattribute, wie beispielsweise Farbe, Normalen-Vektoren, Textur, Rauigkeit, Metallartigkeit usw.) werden ebenfalls gelernt, um das Erscheinungsbild der 3D-Modelldarstellung zu definieren. Ein Oberflächengitter, das durch das volumetrische Gitter definiert wird, kann unter Verwendung der Erscheinungsbildattribute gerendert werden, um Bilder zu erzeugen. Parameter, die von der 3D-Modellerzeugungseinheit verwendet werden, um die 3D-Modelldarstellung zu erzeugen, werden basierend auf Bildraumverlusten (z.B., Pixeldifferenzen) aktualisiert, die zwischen gerenderten Bildern der 3D-Modelldarstellung und den Referenzbildern der 3D-Szene oder des Objekts berechnet werden.
  • 1A veranschaulicht ein Konzeptdiagramm einer Topologie 105 und Wahrscheinlichkeitsdichten 110 und 115, die verwendet werden, um eine Topologie zu lernen, gemäß einer Ausführungsform. Zwecks Erläuterung wird ein 2D-Beispiel anstatt eines 3D-Beispiels beschrieben. Ein Referenzbild 125 eines 2D-Objekts wird verwendet, um die Parameter zu lernen, die benötigt werden, um eine 2D-Modelldarstellung zu erzeugen, die, wenn gerendert, visuell oder nahezu identisch im Vergleich zu dem Referenzbild 125 ist.
  • Die Topologie 105 kennzeichnet, welche Zellen in einem 2D-Gitter 100 (z.B., Gitter) in der 2D-Modelldarstellung umfasst sind. Wie in 1A gezeigt, ist jede Zelle ein Quadrat innerhalb einer 2D-Anordnung. In einer anderen Ausführungsform ist das Gitter 100 eine 3D-Struktur, wie beispielsweise ein Array, und die Zellen sind eine 3D-Geometrie, wie beispielsweise ein Würfel, Tetraeder usw. In einer Ausführungsform kann die Topologie 105 unter Verwendung eines einzigen Bits für jede Zelle definiert werden, wobei das Bit angibt, ob die Zelle umfasst (aktiviert) in oder entfernt (deaktiviert) von der 2D-Modelldarstellung ist. Für die Topologie 105 wird jede Zelle des Gitters 100, die umfasst ist, als durchgehend schwarz gezeigt, und entfernte Zellen des Gitters 100 werden als durchgehend weiß gezeigt. In einer Ausführungsform kann die Topologie 105 als „Abdeckung“ Maske codiert werden, die ein Bit für jede Zelle umfasst. In einer Ausführungsform kann die Topologie 105 unter Verwendung eines einzigen Bits für jede Fläche jeder Zelle (z.B., Abdeckung) definiert sein, wobei das Bit angibt, ob die Fläche umfasst (aktiviert) in oder entfernt (deaktiviert) von der 2D-Modelldarstellung ist.
  • In einer Ausführungsform wird die Topologie 105 zufällig erzeugt, ohne sich auf irgendwelche Informationen über das Referenzbild 125 oder das Objekt zu stützen, das modelliert wird. In einer Ausführungsform wird eine unterschiedliche einzige Topologie 105 für jede Trainingsiteration verwendet. Sobald die Topologie 105 bereitgestellt ist, wird die 2D-Modelldarstellung durch Anwenden gelernter Parameter auf das Gitter 100 und die Topologie 105 vorhergesagt. Die 2D-Modelldarstellung umfasst Vertexpositionen für die aktivierten Zellen und Materialattribute. Die 2D-Modelldarstellung wird gemäß Umgebungsbedingungen gerendert, um ein gerendertes Bild zu erzeugen. Die Umgebungsbedingungen entsprechen der Kameraposition und der Beleuchtung, die verwendet werden, um das Referenzbild 125 zu rendern. Wenn mehrere Referenzbilder verfügbar sind, kann eine Trainingsiteration für jedes Referenzbild unter Verwendung der Topologie 105 oder unterschiedlicher Topologien abgeschlossen werden.
  • Für jede Trainingsiteration wird ein Verlust basierend auf Pro-Pixel-Bildraumdifferenzen zwischen jedem Referenzbild und gerenderten Bild berechnet. Um die 2D-Modellparametern zu aktualisieren(z.B., um die Parameter zu lernen), werden Gradienten, die dem Verlust entsprechen, rückwärts propagiert (z.B., wirksames Umkehren der Berechnungen), was erfordert, dass der Renderer differenzierbar ist. Leider sind binäre Werte, wie beispielsweise die Werte, welche die Topologie 105 codieren, nicht differenzierbar. Anstatt die Topologiedarstellung zu komplizieren, um sie differenzierbar zu machen, ist eine Wahrscheinlichkeitsdichte eine kontinuierliche Funktion, die für das Gitter 100 berechnet wird und differenzierbar ist. Beispielsweise kann eine Wahrscheinlichkeit einer bestimmte Zelle, die in der Modelldarstellung enthalten ist, mehrere Werte aufweisen, die zwischen 0 und 1 einschließlich reichen.
  • Die Wahrscheinlichkeitswerte und Parameter, die verwendet werden, um die Wahrscheinlichkeitswerte zu berechnen (z.B., Positionen der Vertices und Materialparameter), werden basierend auf dem berechneten Verlust aktualisiert. In einer Ausführungsform ist ein Wahrscheinlichkeitswert jeder Zelle des Gitters 100 zugeordnet. In einer anderen Ausführungsform ist ein Wahrscheinlichkeitswert jeder Fläche der Zelle des Gitters 100 zugeordnet. Die Wahrscheinlichkeitswerte in der Wahrscheinlichkeitsdichte 110 können auf vorbestimmte Werte oder Zufallswerte initialisiert werden, die für jede Trainingsiteration aktualisiert werden. Wie in 1A gezeigt, ist jeder Wahrscheinlichkeitswert einer Zelle (oder einer Fläche) zugeordnet und wird auf 0,5 initialisiert, wobei ein niedrigerer Wahrscheinlichkeitswert (dunkler) angibt, dass es weniger wahrscheinlich ist, dass die Zelle in der gelernten Topologie aktiv ist, und ein höherer Wahrscheinlichkeitswert (heller) angibt, dass es wahrscheinlicher ist, dass die Zelle in der gelernten Topologie aktiv ist.
  • Strahlen werden innerhalb der 2D-Ebene des Gitters 100 für jedes Pixel des gerenderten Bildes verfolgt, um Pro-PixelWahrscheinlichkeitswerte zu berechnen. Wenn das Gitter 100 ein 3D-Gitter ist, werden die Strahlen in 3D verfolgt und sind nicht auf die 2D-Ebene begrenzt. Wie in 1A gezeigt, schneidet ein erster Strahl 102 mehrere unabgedeckte Zellen vor dem Schneiden einer abgedeckten Zelle 112. Geschnittene Zellen werden in einem diagonalen Muster gezeigt. Ein zweiter Strahl 103 schneidet eine unabgedeckte Zelle vor dem Schneiden einer abgedeckten Zelle 113. Weil das Gitter 100 opak ist, enden die Strahlen, wenn eine abgedeckte Zelle geschnitten wird oder wenn der Strahl durch das gesamte Gitter 100 ohne Schneiden einer abgedeckten Zelle läuft. In einer Ausführungsform werden Zellschnittpunkte zum Aktualisieren der Wahrscheinlichkeitswerte während Rückwärtspropagierung beibehalten. In einer Ausführungsform werden, anstatt die Zellschnittpunkte beizubehalten, die Strahlen zurückverfolgt, um die Wahrscheinlichkeitswerte während Rückwärtspropagierung zu aktualisieren.
  • Das gerenderte Bild wird mit dem Referenzbild 125 verglichen, um Differenzen pro Pixel zu berechnen. Für jedes Pixel wird die Differenz mit dem Wahrscheinlichkeitswert multipliziert, die dem Pixel entspricht, um Produkte zu erzeugen. Die Produkte werden verwendet, um ein Bild-level Verlust zu berechnen. Wenn das Training fortschreitet und die Wahrscheinlichkeitswerte aktualisiert werden, um die Verluste zu verringern, tragen Pixel mit höheren Wahrscheinlichkeitswerten jedoch mehr zu dem Verlust auf Bildniveau im Vergleich zu Pixeln mit niedrigeren Wahrscheinlichkeitswerten bei. Eine aktualisierte Wahrscheinlichkeitsdichte 115 nach mindestens einer Trainingsiteration zeigt, dass die geschnittenen Zellen aktualisiert werden, um den Verlust zu verringern. Im Einzelnen werden die Wahrscheinlichkeitswerte von Zellen 112 und 114, die Zellen entsprechen, die innerhalb des Objekts in dem Referenzbild sind, vergrößert und die Wahrscheinlichkeitswerte von geschnittenen Zellen, die nicht innerhalb des Objekts sind, werden verringert. Nach mehreren Trainingsiterationen wird die aktualisierte Wahrscheinlichkeitsdichte 115 konvergieren, um gleich einer gelernten Topologie 120 nach der Optimierung zu sein. In der gelernten Topologie 120 wird eine abgedeckte (oder aktive) Zelle als schwarz und ein leere Zelle als weiß angegeben. Die gelernte Topologie 120 stellt ebenfalls eine gelernte Topologie dar. Das Erhöhen einer Auflösung des Gitters 100 wird zu einer gelernten Topologie 120 führen, welche die feinen Silhouettendetails des Objekts in dem Referenzbild 125 genauer repliziert.
  • Sogar wenn sich das Training auf eine einzige Topologie stützt, wie beispielsweise die Topologie 105 für Training, werden, wenn mehrere Referenzbilder verwendet werden, die Wahrscheinlichkeitswerte für Zellen zunehmen, die nicht gemäß der Topologie 105 abgedeckt sind, und die Wahrscheinlichkeitswerte für Zellen, die gemäß der Topologie 105 abgedeckt sind, werden abnehmen, da der für jedes der mehreren Referenzbilder berechnete Verlust rückwärts propagiert wird, um die Wahrscheinlichkeitsdichte zu aktualisieren, die dem Gitter 100 entspricht. Zusätzlich werden sich Positionen der Vertices der Zellen ändern, die gemäß der Topologie 105 abgedeckt sind, da das Training fortschreitet, um zu konvergieren und die Form des Objekts im Referenzbild 125 zu approximieren. Die Zellen, die gemäß der Topologie 105 aktiviert werden, werden wirksam verformt, so dass ein gerendertes Bild der 3D-Modelldarstellung für das Gitter 100 erzeugt wird und die Topologie 105 mit dem Referenzbild 125 übereinstimmt. Auf ähnliche Weise entwickeln sich die Materialattribute der 3D-Modelldarstellung ebenfalls über mehrere Trainingsiterationen.
  • Veranschaulichendere Information wird nun hinsichtlich verschiedener optionaler Architekturen und Merkmale dargelegt, mit denen das vorhergehende Rahmenwerk gemäß den Wünschen des Benutzers implementiert werden kann. Es sei nachdrücklich bemerkt, dass die folgende Information für veranschaulichende Zwecke dargelegt wird und nicht in irgendeiner Art und Weise als beschränkend ausgelegt werden sollte. Jedes der folgenden Merkmale kann optional mit oder ohne den Ausschluss von anderen beschriebenen Merkmalen einbezogen werden.
  • 1B veranschaulicht ein Konzeptdiagramm einer 3D-Modelldarstellung 122, eine gelernte Wahrscheinlichkeitsdichte 126, eine gerenderte 3D-Modelldarstellung 124 und ein gerendertes Referenzobjekt 158 gemäß einer Ausführungsform. Die 3D-Modelldarstellung 122 definiert die Form und das Erscheinungsbild einer bestimmte 3D-Szene oder eines bestimmten Objekts von mehreren Bildbeobachtungen. Vertexpositionen eines volumetrischen Gitters 121 (z.B., dichtes 3D-Gitter) werden verformt, um die Form der 3D-Modelldarstellung 122 für mindestens eine Topologie zu definieren. Die Topologie steuert, welche Flächen und/oder Zellen des volumetrischen Gitters 121 sichtbar (z.B., aktiv) sind und können zufällig oder basierend auf der Wahrscheinlichkeitsdichte ausgewählt werden, die bislang gelernt ist. Das volumetrische Gitter 121 wird als gleichmäßiges 3D-Gitter initialisiert und wird während des Trainings gelernt. Ein Oberflächengitter 132 kann von dem volumetrischen Gitter 121 extrahiert werden. Eine Form des Oberflächengitters 132 wird gelernt, die eng mit einer Form des gerenderte Referenzobjekts 158 übereinstimmt. Erscheinungsbildattribute 136 (z.B., räumlich variierende Materialparameter) werden ebenfalls gelernt, um das Erscheinungsbild der 3D-Modelldarstellung 122 zu definieren. Die 3D-Modelldarstellung 146 umfasst wirksam ein gelerntes volumetrisches Gitter 121, ein gelerntes Oberflächengitter 132 und gelernte Erscheinungsbildattribute 136.
  • Die 3D-Modelldarstellung 122 wird durch einen differenzierbaren Renderer gerendert, um gerenderte Bilder zu erzeugen, die den Referenzbildern entsprechen. Wie in 1B gezeigt, approximiert früh in dem Trainingsprozess eine gerenderte 3D-Modelldarstellung 124 das gerenderte Referenzobjekt 158 nicht genau. Lediglich eine Untermenge der Zellenflächen in dem volumetrischen Gitter 121 wird sichtbar gemäß den Topologien verwendet, um die 3D-Modelldarstellung 122 zu lernen, die gerendert wird, um die gerenderte 3D-Modelldarstellung 124 zu erzeugen, so dass bedeutende Abschnitte der Objekte fehlen werden oder unbekannt sind. Beispielsweise könnten 500 Trainingsiterationen durchgeführt worden sein, um ein volumetrischen Gitter 121 zu erzeugen, das der gerenderten 3D-Modelldarstellung 124 und der gelernten Wahrscheinlichkeitsdichte 126 zugeordnet ist.
  • Das volumetrische Gitter 121 wird durch einen Wahrscheinlichkeits-Renderer gemäß den Topologien gerendert, um die gelernte Wahrscheinlichkeitsdichte 126 zu erzeugen. Beispielsweise stellen die Wahrscheinlichkeitswerte, die für jede sichtbare Zelle berechnet werden, die Wahrscheinlichkeiten dar, mit der ein Strahl die Zelle schneidet, und jeder Strahl wird verfolgt, bis eine Zelle in dem volumetrischen Gitter 121, die in der Topologie umfasst ist (z.B., aktive Zelle), geschnitten wird (oder der Strahl durch die gesamte Topologie läuft). Mit anderen Worten sind die Topologie und das resultierende gelernte Oberflächengitter 132 opak und die Verfolgung endet am ersten Schnittpunkt.
  • Die Wahrscheinlichkeitsdichte 126 umfasst Wahrscheinlichkeitswerte für jede Fläche oder Zelle in dem volumetrischen Gitter. Hellere Farben entsprechen höheren Wahrscheinlichkeitswerten und dunklere Farben entsprechen niedrigeren Wahrscheinlichkeitswerten. Höhere Wahrscheinlichkeitswerte entsprechen einer höheren Wahrscheinlichkeit, dass die Zelle des volumetrischen Gitters 121 in der 3D-Modelldarstellung umfasst ist. Daher können in einer Ausführungsform Flächen oder Zellen, die einem Wahrscheinlichkeitswert von null (oder unter einem Mindestschwellenwert) zugeordnet sind, von der 3D-Modelldarstellung 122 entfernt werden. In einer Ausführungsform können Flächen und/oder Zellen von der 3D-Modelldarstellung 122 entfernt werden, jedoch können neue Flächen und/oder Zellen nicht in die 3D-Modelldarstellung 122 eingefügt oder hinzugefügt werden. Die Zellen- oder Flächenbasierten Wahrscheinlichkeitsdichtewerte können in Pixelwahrscheinlichkeitswerte für die Bildraumverlustberechnung konvertiert werden.
  • Ein Bildraumverlust wird basierend auf der gelernten Wahrscheinlichkeitsdichte 126 und den Pro-Pixel-Differenzen zwischen der gerenderten 3D-Modelldarstellung 124 und dem gerenderten Referenzobjekt 158 berechnet. Der Bildraumverlust wird durch den differenzierbarer Renderer, den Wahrscheinlichkeits-Renderer und die 3D-Modellerzeugungseinheit rückwärts propagiert, welche die 3D-Modelldarstellung 122 vorhersagt, um gelernte Parameter zu aktualisieren, die von dem Wahrscheinlichkeits-Renderer und der 3D-Modellerzeugungseinheit verwendet werden.
  • 1C veranschaulicht ein Konzeptdiagramm von gelernten Wahrscheinlichkeitsdichten 134 und 144, gerenderten 3D-Modelldarstellungen 128 und 138, einem Referenz-Oberflächengitter 148 und einem gerenderten Referenzobjekt 158 gemäß einer Ausführungsform. Im Vergleich zu dem volumetrischen Gitter 121, das der in 1B gezeigten, gerenderten 3D-Modelldarstellung und gelernten Wahrscheinlichkeitsdichte 126 zugeordnet ist, wurden 1000 Trainingsiterationen durchgeführt, um das volumetrische Gitter 121 zu erzeugen, das der gerenderten 3D-Modelldarstellung 128 und der gelernten Wahrscheinlichkeitsdichte 134 zugeordnet ist. 2000 Trainingsiterationen wurden durchgeführt, um das volumetrische Gitter 121 zu erzeugen, das der gerenderten 3D-Modelldarstellung 138 und gelernten Wahrscheinlichkeitsdichte 144 zugeordnet ist. Im Vergleich zu dem Referenz-Oberflächengitter 148 und dem gerenderten Referenzobjekt 158 stellen das Oberflächengitter 132 bzw. die gerenderte 3D-Modelldarstellung 138 die Form und das Erscheinungsbild des Objekts genau dar. Da die Wahrscheinlichkeitswerte in den gelernten Wahrscheinlichkeitsdichten 126, 134 und 144 aktualisiert werden, werden die genaueren Werte (aufgehellten) und die weniger genauen Werte (dunkleren) entfernt.
  • 1D veranschaulicht ein Form- und Erscheinungsbildgesteuertes 3D-System zur Modellierung 150 gemäß einer Ausführungsform. Das System 150 umfasst eine 3D-Modellerzeugungseinheit 140, die ein volumetrisches Gitter 130 empfängt, und eine Topologie 136, die gemäß gelernter Parameter 142 verarbeitet werden, um die 3D-Modelldarstellung 122 zu erzeugen. In einer Ausführungsform ist die 3D-Modellerzeugungseinheit 140 ein neuronales Gitterwerkmodell. Die 3D-Modelldarstellung 122 umfasst ein 3D-Oberflächengitter und Erscheinungsbildattribute für ein Objekt oder eine Szene. In einer Ausführungsform extrahiert die 3D-Modellerzeugungseinheit 140 ein Oberflächendreieckgitter von dem volumetrischen Gitter 130.
  • Das volumetrische Gitter 130 umfasst eine dichte Anordnung von geometrischen Zellen, wobei jede Zelle durch Orte von Vertices im 3D-Raum definiert wird, die ein Volumen bilden (z.B., Würfel, Tetraeder oder andere geometrische Form). In einer Ausführungsform wird das volumetrische Gitter 130 durch andere Arten von Primitiven oder Darstellungen definiert. In einer Ausführungsform ist das anfängliche volumetrische Gitter 130 ein gleichmäßiges Gitter von Würfeln oder Tetraedern. Durch Training werden Orte der Vertices eingestellt und eine oder mehrere der Vertices, Zellenflächen und/oder Zellen können entfernt werden, wenn die 3D-Modelldarstellung 122 gelernt wird. Das volumetrische Gitter 130 kann unterteilt werden, da das Training fortschreitet, um die 3D-Modelldarstellung 122 zu verfeinern.
  • Eine Topologieerzeugungseinheit 135 stellt die Definition der Topologie 136 ein, welche die Sichtbarkeit oder Abdeckung von Flächen und/oder Zellen in dem volumetrischen Gitter 130 angibt. In einer Ausführungsform sind eine oder mehrere Topologien, die während des Trainings verwendet werden, Monte-Carlo-abgetastete Topologien. In einer Ausführungsform wird die gelernte Wahrscheinlichkeitsdichte 156 ebenfalls verwendet, um eine oder mehrere Topologien über Importance-Sampling zu erzeugen.
  • Die 3D-Modelldarstellung 122 umfasst gelernte Positionen der Vertices in dem volumetrischen Gitter 130, ein Oberflächengitter, das dem volumetrischen Gitter 130 entspricht, und Erscheinungsbildattribute 136. Die Erscheinungsbildattribute können Normalen-Vektorkarten, Materialien, Texturkarten, Skinning-Gewichte, Rauigkeit, Metallartigkeit und dergleichen umfassen. Genauer gesagt kann die Textur Beleuchtung und Materialeigenschaften definieren. Eine anfängliche Oberflächentextur für die anfängliche 3D-Modelldarstellung 122 kann eine konstante oder randomisierte Farbe sein und die Farben jedes Texels in der anfänglichen Oberflächentextur werden basierend auf Bildraumunterschieden eingestellt, um eine Textur für die 3D-Modelldarstellung 122 zu erzeugen.
  • Umgebungsbedingungen 108 definieren Kamera- und Lichtpositionen für jedes Referenzbild 154, die von einem differenzierbaren Renderer 145 zum Erzeugen jedes gerenderten Bildes 144 verwendet werden. Der differenzierbarer Renderer 145 rendert die 3D-Modelldarstellung 122 gemäß den Umgebungsbedingungen 108, um das gerenderte Bild 144 zu erzeugen. Im Einzelnen rendert der differenzierbarer Renderer 145 das Oberflächengitter, das dem volumetrischen Gitter 130 entspricht, und die Erscheinungsbildattribute. Jedes Referenzbild 154 wird durch Rendering eines Referenz-3D-Modells gemäß den Umgebungsbedingungen 108 erzeugt. Während eine Form des anfänglichen volumetrischen Gitters 130 nicht weitestgehend einer Form des Referenz-3D-Modells entsprechen, entspricht nach erfolgreicher Optimierung die Form des gelernten volumetrischen Gitters weitestgehend der Form des Referenz-3D-Modells.
  • In einer Ausführungsform werden eine oder mehrere Operationen des differenzierbaren Renderers 145 unter Verwendung einer beliebige Kombination einer Graphikverarbeitungseinheit (GPU), einer Graphik-Pipeline, GPU allgemeine Berechnungskerne oder einer Zentralverarbeitungseinheit (CPU) durchgeführt. Der differenzierbarer Renderer 145 ermöglicht Operationen, wie beispielsweise Rasterung größerer Anzahlen von Dreiecken, Attributinterpolation, gefilterte Textur-Lookups, sowie auch Benutzer-programmierbare Schattierung und Geometrieverarbeitung, alle in einem Bereich von Auflösungen. Im Gegensatz zu herkömmlichen Rendering-Pipelines sind die von dem differenzierbaren Renderer 145 durchgeführte Operationen differenzierbar und Bildraumverluste 162 können durch den differenzierbaren Renderer 145 rückwärts propagiert werden, um die 3D-Modelldarstellung 122 iterativ einzustellen. In einigen Ausführungsformen können Rendering-Operationen Rasterung, Strahlverfolgung und Pfadverfolgung umfassen.
  • Eine Wahrscheinlichkeits-Rendering-Einheit 155 berechnet pro Zelle oder pro Fläche Wahrscheinlichkeitswerte basierend auf den Umgebungsbedingungen 108, der Topologie 136 und vorhergesagten oder gelernten volumetrischen (3D) Gitterabschnitten der 3D-Modelldarstellung 122. Strahlen werden durch das volumetrische Gitter 130 in Marsch gesetzt und bei dem ersten Schnittpunkt mit einer Zelle (oder Fläche) beendet, die gemäß der Topologie abgedeckt ist (oder beim Szenenhintergrund, wenn kein abgedeckter Zellenschnittpunkt auftritt). Im Kontext der folgenden Beschreibung wird die Verfolgung oder das Marching von Strahlen durch das 3D-Gitter als Transportieren bezeichnet.
  • Eine Bildraumverlusteinheit 160 verarbeitet jedes Referenzbild 157 und jedes entsprechende gerenderte Bild 144, um die Bildraumverluste 162 zu erzeugen. Die Bildraumverluste 162 werden durch den differenzierbaren Renderer 145, die Wahrscheinlichkeits-Rendering-Einheit 155 und die 3D-Modellerzeugungseinheit 140 rückwärts propagiert, um die Differenzen zwischen dem Referenzbild 157 und dem gerenderten Bild 144 zu verringern. Rückwärtspropagierung sieht Aktualisierungen der Parameter 142 für die Wahrscheinlichkeits-Rendering-Einheit 155 und die 3D-Modellerzeugungseinheit 140 vor. Die Parameter können für jedes gerenderte Bild 144 und entsprechendes Referenzbild 157 aktualisiert werden. In einer Ausführungsform kann eine einzige Topologie verwendet werden, um mehrere gerenderte Bilder 144 zu Rendern, die jeweils unterschiedlichen Umgebungsbedingungen 108 zugeordnet werden. In einer Ausführungsform können mehrere Topologien verwendet werden, um mehrere gerenderte Bilder 144 für die gleichen Umgebungsbedingungen 108 zu rendern.
  • Lernerfolg wird gemessenen gemäß, ob gerenderte Bilder 144 visuell identisch oder nahezu identisch im Vergleich zu den Referenzbildern 157 sind. Mit anderen Worten werden die gerenderten und Referenzbilder verwendet, um die Geometrie zu bestimmen und fein abzustimmen, welche die 3D-Modelldarstellung 122 definiert, und es gibt keinen Bedarf, die 3D-Modelldarstellung 122 mit einem Referenz-3D-Modell direkt zu vergleichen. Tatsächlich kann die Darstellung des Referenz-3D-Modells ziemlich unterschiedlich im Vergleich zu der Darstellung der 3D-Modelldarstellung 122 sein. Da die einzigen Signals, welche die Optimierung antreiben, Differenzen in den gerenderten Bildern und Referenzbildern sind, ist der Ansatz sehr allgemein und vielseitig: er unterstützt ohne Weiteres viele unterschiedliche Vorwärts-Rendering-Modelle, wie beispielsweise Normal-Mapping, räumlich variierende bidirektionale Reflexionsgradverteilungsfunktionen (BRDFs), Displacement-Mapping und dergleichen. Eine Überwachung nur durch Bilder ist ebenfalls ein Schlüssel zu der Fähigkeit, ohne Weiteres zwischen Rendering-Systemen und Szenendarstellungen zu konvertieren.
  • In einer Ausführungsform umfassen die erzeugten 3D-Modelldarstellungen 122 Dreieckgitter mit als Texturen codierten Materialien, um sicherzustellen, dass die 3D-Modelldarstellungen 122 auf moderner Graphikhardware effizient rendern und beispielsweise von Hardware-beschleunigter Rasterung, Strahl-Verfolgung und gefilterten Textur-Lookups profitieren. Die automatisch erzeugten 3D-Modelldarstellungen 122 können zur optimierten Detaillierungsgrad-Erzeugung für ein verringertes Aliasing, nahtlose Gitterfilterung, Approximationen der Aggregatgeometrie, gemeinsame Optimierung von Form- und Skinning-Gewichten verwendet werden, um verringerte Geometrie zur Animation, Konvertierung zwischen Formdarstellungen und Konvertierung zwischen Rendering-Systemen zu erzeugen.
  • Techniken des Standes der Technik stützen sich auf Training unter Verwendung aller möglicher Topologien. Im Gegensatz dazu kann eine einzige Topologie 136 pro Trainingsschritt (Iteration von Verlustberechnung, Rückwärtspropagierung und Aktualisieren von Parametern 142) verwendet werden, um die 3D-Modelldarstellung 122 zu lernen. Ein Referenzbild 157 wird pro Trainingsschritt verwendet oder mehrere Referenzbilder 157 können pro Trainingsschritt verwendet werden. Bei jedem Trainingsschritt ermöglicht die einzige Topologie 136 einer Untermenge der Flächen von dem volumetrischen Gitter 130 ein opakes Oberflächengitter zu erzeugen, das gerendert wird. Wenn das gesamte volumetrische Gitter 130 sichtbar ist, würde lediglich die Außenseite des volumetrischen Gitters 130 geschnitten werden und die Strahlen würden nicht in das Innere eindringen. Ein Aktivieren einer Untermenge der Flächen, insbesondere von Untermengen, die unterschiedliche Kombinationen der Flächen ermöglichen, erzeugt ebenfalls genauere und glattere Silhouettenkanten.
  • Techniken des Standes der Technik verwenden kein opakes volumetrisches Gitter 130, so dass Strahlen nicht am ersten Schnittpunkt enden und Silhouettenkanten als Ergebnis von variierende Niveaus von Transparenz der Gitter glatt erscheinen. Diese Techniken des Standes der Technik sind aufwändig hinsichtlich Ausführungszeit und/oder geometrischer Genauigkeit zu implementieren (aufgrund des Konvertierens des Gitters von transparent in opak, sobald das Training abgeschlossen ist). Außerdem stützen sich Techniken des Standes der Technik typischerweise auf ein anfängliches volumetrisches Gitter oder 3D-Modell (Würfel, Kugel usw.) Eine Eingabe, die basierend mindestens teilweise auf den Referenzbildern (oder dem Referenz-3D-Modell) bestimmt wird. Im Gegensatz dazu kann das gleiche anfängliche volumetrische Gitter 130 verwendet werden, um eine beliebige 3D-Modelldarstellung 122 zu lernen.
  • 1E veranschaulicht ein Ablaufdiagramm eines Verfahrens 170 zur Form- und Erscheinungsbild-gesteuerten automatischen 3D-Modellierung, die zur Verwendung beim Implementieren einiger Ausführungsformen der vorliegenden Offenbarung geeignet ist. Jeder Block des hier beschriebenen Verfahrens 170 umfasst einen Rechenprozess, der mit einer beliebigen Kombination von Hardware, Firmware und/oder Software durchgeführt werden kann. So können beispielsweise verschiedene Funktionen von einem Prozessor ausgeführt werden, der im Speicher gespeicherte Anweisungen ausführt. Das Verfahren kann ebenfalls als computerverwendbare Anweisungen verkörpert sein, 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 einem Plug-in in ein anderes Produkt bereitgestellt werden, um einige zu nennen. Außerdem wird das Verfahren 170 beispielhaft mit Bezug auf das Form- und Erscheinungsbild-gesteuerte automatische 3D-Modellierungssystem beschrieben. Außerdem wird das Verfahren 170 beispielhaft mit Bezug auf das Form- und Erscheinungsbild-gesteuerten 3D- Modellierungssystem 150 von 1D beschrieben. Dieses Verfahren kann jedoch zusätzlich oder alternativ von einem beliebigen System oder einer beliebigen Kombination von Systemen ausgeführt werden, einschließlich, jedoch nicht beschränkt auf jene, die hier beschrieben sind. Des Weiteren versteht sich für Durchschnittsfachleute, dass jedes beliebige System, welches das Verfahren 170 durchführt, in den Umfang und das Wesen von Ausführungsformen der vorliegenden Offenbarung fällt.
  • Bei Schritt 175 wird eine 3D-Topologiedefinition empfangen, die Flächen von Zellen innerhalb eines volumetrischen Gitters kennzeichnet. In einer Ausführungsform ist die 3D-Topologiedefinition die Topologie 136 und das volumetrische Gitter ist das volumetrische Gitter 130. In einer Ausführungsform ist das volumetrische Gitter opak. In einer Ausführungsform ist das volumetrische Gitter als gleichmäßiges 3D-Gitter initialisiert. In einer Ausführungsform ist das volumetrische Gitter ein dichtes volumetrisches Gitter. In einer Ausführungsform ist die Topologiedefinition eine Multibit-Sichtbarkeitsmaske, die ein einziges Bit für jede Fläche der Zellen innerhalb des volumetrischen Gitters umfasst. In einer Ausführungsform ist die Topologiedefinition eine Multibit-Sichtbarkeitsmaske, die ein einziges Bit für jede Zelle innerhalb des volumetrischen Gitters umfasst, und das einzige Bit wird zwischen den Flächen der Zelle gemeinsam genutzt. Das einzige Bit kann aktiviert werden, wenn die Fläche oder Zelle sichtbar ist und negiert werden, wenn die Fläche oder Zelle nicht sichtbar ist.
  • Bei Schritt 180 werden die 3D-Topologie und das volumetrische Gitter gemäß Parametern verarbeitet, um eine 3D-Modelldarstellung vorherzusagen, die einem Referenz-3D-Modell entspricht, wobei die 3D-Modelldarstellung ein Oberflächengitter umfasst, das durch Vertexpositionen der Zellen und Verbindungen zwischen den Vertexpositionen (z.B., Vertices) definiert wird. In einer Ausführungsform ist das Oberflächengitter opak. In einer Ausführungsform sind die Flächen des Oberflächengitters Dreiecke. In einer Ausführungsform umfasst die 3D-Modelldarstellung räumlich variierende Materialattribute (z.B., Farbe, Textur, Normalen-Vektoren, Rauigkeit, Metallartigkeit usw.). In einer Ausführungsform werden die 3D-Topologie und das volumetrische Gitter durch die 3D-Modellerzeugungseinheit 140 verarbeitet.
  • Bei Schritt 185 wird die 3D-Modelldarstellung gerendert, um ein gerendertes Bild zu erzeugen. In einer Ausführungsform erzeugt ein differenzierbarer Renderer, wie beispielsweise der differenzierbare Renderer 145, das gerenderte Bild. In einer Ausführungsform werden lediglich Flächen oder Zellen innerhalb des volumetrischen Gitters, die sichtbar sind, gemäß der Topologie gerendert. In einer Ausführungsform werden Schritte 185 und 190 parallel durchgeführt. In einer Ausführungsform wird die 3D-Modelldarstellung umfassend ein opak Oberflächengitter direkt optimiert, anstatt von Optimieren eine volumetrische oder semi-Transparent Darstellung.
  • Bei Schritt 190 werden Strahlen, die dem gerenderten Bild entsprechen, durch die 3D-Modelldarstellung transportiert, um Wahrscheinlichkeitswerte für die Zellen zu berechnen. In einer Ausführungsform, die gleichen Umgebungsbedingungen (z.B., Kameraposition, Lichtposition(s) usw.) verwendet, um ein Referenzbild zu erzeugen, das Referenz-3D-Modell wird verwendet, um das gerenderte Bild und die Wahrscheinlichkeitswerte zu berechnen. In einer Ausführungsform wird ein Strahl durch die 3D-Modelldarstellung für jedes Pixel in dem gerenderten Bild transportiert.
  • In einer Ausführungsform werden Wahrscheinlichkeitswerte für jede Fläche einer Zelle berechnet. In einer Ausführungsform wird ein Wahrscheinlichkeitswert für jede Zelle berechnet und für alle Flächen der Zelle gemeinsam genutzt. In einer Ausführungsform umfasst die 3D-Modelldarstellung ein vorhergesagtes volumetrisches Gitter, das zusammen mit der 3D-Topologie verarbeitet wird, um Wahrscheinlichkeitswerte für jede Fläche oder Zelle zu aktualisieren, die von einem Strahl geschnitten wird. In einer Ausführungsform wird das volumetrische Gitter als ein gleichmäßiges Gitter initialisiert und eine Struktur des volumetrischen Gitters (Zellenflächen-Vertexpositionen und Verbindungen) wird für jede Trainingsiteration modifiziert, um ein Referenzobjekt oder eine Szene besser zu approximieren. In einer Ausführungsform endet der Transport eines Strahls, wenn eine Zelle oder Fläche geschnitten wird, die sichtbar ist, gemäß der Topologie. In einer Ausführungsform werden die Wahrscheinlichkeitswerte durch die Wahrscheinlichkeits-Rendering-Einheit 155 berechnet.
  • Bei Schritt 195 werden die Parameter basierend auf den Wahrscheinlichkeitswerten und Differenzen zwischen dem gerenderten Bild und einem Referenzbild des Referenz-3D-Modells aktualisiert, um die Differenzen zu verringern. In einer Ausführungsform werden die Differenzen durch den differenzierbaren Renderer 145 rückwärts propagiert, um die Parameter zu aktualisieren. In einer Ausführungsform umfasst das Aktualisieren der Parametern das Berechnen eines Pixelwahrscheinlichkeitswerts für jedes Pixel in dem gerenderten Bild unter Verwendung der Wahrscheinlichkeitswerte, Skalieren der Differenz für jede Pixel durch den Wahrscheinlichkeitswert für das Pixel, um Produkte zu berechnen, und Summieren der Produkte, um einen Bildverlust zu erzeugen.
  • Die Schritte 175, 180, 185, 190 und 195 umfassen eine Trainingsiteration und können mehrmals für zusätzliche 3D-Topologiedefinitionen wiederholt werden. In einer Ausführungsform werden die 3D-Topologiedefinition und die zusätzlichen 3D-Topologiedefinitionen für jede Trainingsiteration zufällig erzeugt. In einer Ausführungsform sind mindestens ein Abschnitt der 3D-Topologiedefinition und die zusätzliche 3D-Topologiedefinitionen Monte-Carlo-abgetastete Topologien. In einer Ausführungsform wird mindestens eine der zusätzlichen 3D-Topologiedefinitionen basierend auf den Wahrscheinlichkeitswerten bestimmt. In einer Ausführungsform wird das volumetrische Gitter für mindestens eine der zusätzlichen 3D-Topologiedefinitionen unterteilt.
  • In einer Ausführungsform wird eine einzige 3D-Topologiedefinition für mehrere Trainingsiterationen verwendet, wobei zusätzliche Bilder, die unterschiedlichen Kamerapositionen oder Lichtpositionen zugeordnet sind, gerendert werden, zusätzliche Strahlen, die den zusätzlichen gerenderten Bildern entsprechen, durch die 3D-Modelldarstellung transportiert werden, um zusätzliche Wahrscheinlichkeitswerte für die Zellen zu berechnen und die Parameter für jede Trainingsiteration aktualisiert werden. Die Parameter werden basierend auf den zusätzlichen Wahrscheinlichkeitswerten und zusätzlichen Differenzen zwischen den zusätzlich gerenderten Bildern und zusätzlichen Referenzbildern des Referenz-3D-Modells aktualisiert, die den unterschiedlichen Kamerapositionen oder Lichtpositionen entsprechen, um die zusätzlichen Differenzen zu verringern.
  • Einzelheiten der Algorithmen werden in den folgenden Absätzen beschrieben. Durch das Training werden visuelle Differenzen zwischen einem Referenz-Rendering yi im Vergleich zu einem Rendering xi einer vorhergesagten 3D-Modelldarstellung mit unbekannter Topologie und einem Satz von gelernten Attributen, θ (z.B., Vertexpositionen und räumlich variierende Materialattribute) verringert. Es sei mit T eine Topologie bezeichnet, die aus einem diskreten Satz von Topologien T ∈
    Figure DE102022113244A1_0001
    gewählt wird. Die 3D-Modelldarstellung wird über mehrere Bildbeobachtungen, i, durch Minimieren einer Zielfunktion, typischerweise der l2 Norm zwischen Pixelwerten, j, im Bildraum, zwischen den gerenderten Bildern optimiert: arg min T , θ Σ i Σ i | x ij ( T , θ ) y ij | 2 ,
    Figure DE102022113244A1_0002
    d.h., gemeinsame Optimierung der Topologie, T, und den Parametern, θ. Die 3D-Modelldarstellung wird unter Verwendung eines differenzierbaren Renderers, R, gerendert, so dass xi= R(T, θ, vi), wobei vi die Umgebungsbedingungen für die Ansicht i, z.B., Kameraparameter und Beleuchtung, darstellt.
  • Um Gradienten-basierte Optimierung über diskrete Topologien zu ermöglichen, wird die Erwartung des Verlustes über eine Verteilung über Topologien als ein Optimierungsziel verwendet: arg min θ , p Σ i   E p ( T | θ ) [ Σ j | x i j ( T , θ ) y i j | 2 ]   = arg min   θ , p   Σ i Σ T T  p ( T | θ ) Σ j | x ij ( T , θ ) y i j | 2
    Figure DE102022113244A1_0003
    wobei p(T|θ) die Wahrscheinlichkeit der Topologie T ist. Im Gegensatz zu Lösungen des Standes der Technik, die einen Verlust basierend auf Abständen zwischen Gittern in 3D verwenden, kann die Verlustfunktion im Bildraum dargestellt werden, was eine Optimierung von Bildbeobachtungen ohne Kenntnis des Referenz-3D-Gitters ermöglicht.
  • Durch frühe Beendigung des Strahltransports kann eine lineare Komplexität hinsichtlich dessen erreicht werden, wie viele von m Flächen einen Strahl schneiden. Es ist jedoch häufig unpraktisch, einen eindeutigen Satz von Topologien für jeden Strahl zu bewerten. eine konstante Topologie kann für jede Trainingsiteration durch gleichförmiges Abtasten der Topologien und Training der 3D-Modellerzeugungseinheit 140 und die Wahrscheinlichkeits-Rendering-Einheit 155 unter Verwendung einer unbeeinflussten Monte-Carlo-Schätzung von Ep(T|ϕ)j|xij(T)-yij|2] verwendet werden.
  • Es sei mit T~U(T) gleichförmiges Abtasten von Topologien aus dem Satz T aller Topologien für ein gegebenes Gitter bezeichnet. Dann ist eine Monte-Carlo-Schätzung mit M Abtastungen: E p ( T | Φ ) [ j | x ij ( T ) y ij | 2 ] | T | M T U M ( T ) [ Σ j p j ray ( T | Φ ) | x ij ( T ) y ij | 2 ]
    Figure DE102022113244A1_0004
  • Weitergehend wird die Normierungskonstante | T | M
    Figure DE102022113244A1_0005
    weggelassen, da sie die Minimierungsaufgabe nicht beeinflusst.
  • Unter erneuter Bezugnahme auf die ursprüngliche Optimierungsaufgabe in Gleichung 2 erzeugt das erneute Einführen der Summe über Trainingsbeispiele und das Einsetzen der Monte-Carlo-Schätzung von Gleichung 3   arg min θ , p Σ i T T p ( T | θ )   j | x ij ( T , θ ) y ij | 2 arg min θ i T U ( T ) N j p j Strahl ( T | Φ , θ ) | x ij ( T , θ ) y ij | 2 arg min θ , p Σ i ,T i U ( T ) Σ j p j Strahl ( T | Φ , θ ) | x ij ( T , θ ) y ij | 2 .
    Figure DE102022113244A1_0006
  • Es sei bemerkt, dass in der letzten Zeile die Terme der verschachtelten Summen in einer beliebigen Reihenfolge bewertet werden können. Dies bedeutet, dass eine Topologie Ti pro Trainingsiteration abgetastet und eine Monte-Carlo-Schätzung als Addieren zusätzlicher Trainingsbeispiele betrachtet werden kann. Das Ergebnis ist eine praktische und einfache Optimierungsprozedur: bei jeder Trainingsiteration rendert zufälliges Abtasten einer einzigen Topologie ein Bild mit der einzigen Topologie und Gewicht des Bildverlustes durch die Wahrscheinlichkeiten. Im Gegensatz dazu bewerten Techniken des Standes der Technik, wie beispielsweise Deep-Marching-Cubes, die von Liao et al. in „Deep Marching Cubes: Learning Explicit Surface Representations“, CVPR 2018, beschrieben wird, alle Topologien bei jedem Trainingsschritt.
  • Die finale Zielfunktion in Gleichung 4 führt zu einem einfachen Trainingsalgorithmus, der in TABELLE 1 skizziert ist. Bei jedem Trainingsschritt wird eine zufällige Topologie ausgewählt, ein Bild wird unter Verwendung des durch diese Topologie induzierten Gitters gerendert, die Strahlwahrscheinlichkeiten werden berechnete und der Verlust wird aktualisiert. Gradienten des Verlustes werden verwendet, um die Flächenwahrscheinlichkeiten zu aktualisieren, und andere Optimierungsparametern werden verwendet, um die Vertexpositionen und Erscheinungsbildattribute zu berechnen.
    Figure DE102022113244A1_0007
    Figure DE102022113244A1_0008
    Ein Schlüsseleinsicht ist, dass die Berechnung der Pixelfarben xij und Strahlwahrscheinlichkeiten, p j S t r a h l ,
    Figure DE102022113244A1_0009
    entkoppelt werden können. Diese einfache Beobachtung weist leistungsfähige praktische Konsequenzen auf: die volle Maschinerie des differenzierbaren Renderings auf Dreieckgittern kann wiederverwendet werden, während eine Topologie gemeinsam gelernt wird. Folglich kann ein beliebiger handelsüblicher differenzierbarer Renderer benutzt werden, um die Pixelfarben zu berechnen.
  • Um die Strahlwahrscheinlichkeiten zu berechnen, kann ein einfacher Strahl-Marcher verwendet werden, wie nachstehend in 2A und TABELLE 2 beschrieben. Die Akkumulierung von Flächenwahrscheinlichkeiten, ϕk, ähnelt dem Alpha-Compositing von halbtransparenten Dreiecken, jedoch mit dem bedeutendem Unterschied, dass die Strahlen bei dem ersten opaken Schnittpunkt beendet terminiert werden, der gemäß der Topologie sichtbar ist. Differenzierbare Rasterung wird verwendet, um Farbbilder unter Verwendung von in TABELLE 1 gezeigtem renderColor zu rendern und daher kann die Topologie pro Trainingsbeispiel konstant sein. Es ist keine strenge Anforderung für die Topologie, für ein gesamtes Trainingsbeispiel konstant zu sein. Beispielsweise kann in einer Ausführungsform differenzierbare Strahlverfolgung verwendet werden, um die Topologie für jeden Strahl zu aktualisieren. Die Verwendung einer einzigen Topologie pro gerendertem Bild führt zu schneller Konvergenz, so dass das Hinzufügen von Komplexität und Berechnungen, die erforderlich sind, um die Topologie auf einer pro Strahlgrundlage zu variieren, hinsichtlich Genauigkeit oder Geschwindigkeit für 3D-Modellkonstruktion nicht vorteilhaft sein kann. Die Form und das Erscheinungsbild kann gemeinsam mit der Topologie optimiert werden. Beim Optimieren von Vertexpositionen, die sowohl Strahlwahrscheinlichkeiten als auch Pixelfarben beeinflussen, sollte jedoch Sorgfalt aufgewandt werden. In einer Ausführungsform können dynamische Vertexpositionen durch Aktualisieren einer Begrenzungsvolumenhierarchie zwischen jeder Trainingsiteration gehandhabt werden.
  • 2A veranschaulicht ein Ablaufdiagramm eines Verfahrens 200 zum Rendern von Wahrscheinlichkeitswerten für eine abgetastete Topologie, das zur Verwendung beim Implementieren einiger Ausführungsformen der vorliegenden Offenbarung geeignet ist. Das Verfahren 200 kann verwendet werden, um Zeile 8 des in TABELLE 1 gezeigten Algorithmus durchzuführen. Das Verfahren 200 kann für jedes Pixel durchgeführt werden, das in dem Referenzbild und/oder dem gerenderten Bild gerendert wird. Bei Schritt 205 wird ein Strahlwahrscheinlichkeitswert initialisiert. Der Strahlwahrscheinlichkeitswert kann auf einen zufälligen Wert oder auf einen vorbestimmten Wert initialisiert werden.
  • In der folgenden Beschreibung des Verfahrens 200 werden Schnittpunkten zwischen einem Strahl und einer oder mehreren Zellen beschrieben. In einer anderen Ausführungsformen können Schnittpunkte zwischen einem Strahl und spezifische Flächen der einen oder mehreren Zellen gekennzeichnet werden. Bei Schritt 210 bestimmt die Wahrscheinlichkeits-Rendering-Einheit 155, wenn eine Zelle in dem volumetrischen Gitter 130 durch den Strahl geschnitten ist, und, wenn ja bei Schritt 215, dann bestimmt die Wahrscheinlichkeits-Rendering-Einheit 155, wenn die geschnittene Zelle sichtbar ist, gemäß der Topologie 136. Wenn die geschnittene Zelle nicht sichtbar ist, dann geht die Wahrscheinlichkeits-Rendering-Einheit 155 zu Schritt 225 weiter. Andernfalls berechnet die Wahrscheinlichkeits-Rendering-Einheit 155 bei Schritt 220 einen Wahrscheinlichkeitswert für die geschnittene und sichtbare Zelle. Sobald eine sichtbare Zelle von dem Strahl geschnitten wird, ist der Transport des Strahls abgeschlossen und beendet, und bei Schritt 230 schließt die Wahrscheinlichkeits-Rendering-Einheit 155 das Wahrscheinlichkeits-Rendering für den Strahl ab.
  • wenn bei Schritt 215 die Wahrscheinlichkeits-Rendering-Einheit 155 bestimmt, dass die geschnittene Zelle gemäß der Topologie nicht sichtbar ist, dann bestimmt bei Schritt 225 die Wahrscheinlichkeits-Rendering-Einheit 155, wenn der Transport des Strahls abgeschlossen ist. Der Transport des Strahls ist abgeschlossen, wenn der Strahl durch das gesamte volumetrische Gitter 130 ohne Schneiden einer sichtbaren Zelle gelaufen ist. Wenn der Transport abgeschlossen ist, schließt die Wahrscheinlichkeits-Rendering-Einheit 155 das Wahrscheinlichkeits-Rendering für den Strahl bei Schritt 230 ab. Wenn der Transport bei Schritt 225 nicht abgeschlossen ist, dann kehrt die Wahrscheinlichkeits-Rendering-Einheit 155 zu Schritt 210 zurück, um zu bestimmen, wenn der Strahl eine andere Zelle in dem volumetrischen Gitter 130 schneidet.
  • In einer Ausführungsform werden die Wahrscheinlichkeitswerte für jeden Strahl unter Verwendung des in TABELLE 2 gezeigten Algorithmus 2 berechnet. Jeder Strahl ist einem bestimmten Pixel zugeordnet.
    Figure DE102022113244A1_0010
    Figure DE102022113244A1_0011
  • Sobald alle Wahrscheinlichkeitswerte berechnet sind und das gerenderte Bild 144 gerendert ist, kann die Bildraumverlusteinheit 160 die Bildraumverluste 162 berechnen.
  • 2B veranschaulicht ein Ablaufdiagramm eines Verfahrens 240 zum Aktualisieren von Parametern basierend auf Wahrscheinlichkeitswerten einer Bildraumdifferenz, das zur Verwendung beim Implementieren einiger Ausführungsformen der vorliegenden Offenbarung geeignet ist. Bei Schritt 245 berechnet die Bildraumverlusteinheit 160 Pixeldifferenzen für entsprechende Pixel in dem gerenderten Bild 144 und dem Referenzbild 154. Bei Schritt 250 multipliziert die Bildraumverlusteinheit 160 jede Pixeldifferenz mit dem jeweiligen Wahrscheinlichkeitswert, um Produkte zu erzeugen. Bei Schritt 255 summiert die Bildraumverlusteinheit 160 die Produkte, um die Bildraumverluste 162 zu berechnen. Bei Schritt 260 propagiert die Bildraumverlusteinheit 160 die Bildraumverluste 162 rückwärts, um die Parameter 142 zu aktualisieren.
  • In einer Ausführungsform stellt einer Rückwärtsdurchlauf des in TABELLE 2 gezeigten Strahl-Marcher-Algorithmus Gradienten für die Strahlwahrscheinlichkeiten mit Bezug auf die Flächenwahrscheinlichkeiten ϕk bereit. Es sei mit B der Satz von Flächen bezeichnet, die durch den Strahl vor dem ersten Treffer (bei Fläche h) in der Topologie 136 geschnitten wurden. Die Wahrscheinlichkeiten eines Strahls p j S t r a h l
    Figure DE102022113244A1_0012
    bis zu und einschließlich des ersten Treffers ist p j Strahl ( T | Φ ) = k B ( 1 Φ k ) Φ h .
    Figure DE102022113244A1_0013
  • Aus Gleichung (5) werden die partiellen Ableitungen gegeben durch: p j Strahl Φ k = p j Strahl ( 1 Φ k ) , k B   p j Strahl Φ k = p j Strahl Φ h .
    Figure DE102022113244A1_0014
  • Beim Optimieren von Vertexpositionen werden die partiellen Ableitungen p j Strahl v k
    Figure DE102022113244A1_0015
    benötigt, wobei vk die Position der Vertex k ist. Es sei bemerkt, dass das Bewegen einer Vertexposition die Sichtbarkeit ändert und Diskontinuitäten einführt. Diese Sichtbarkeits-Gradienten sollten sorgfältig gehandhabt werden, was ein sehr aktives Forschungsthema mit vielen vorgeschlagenen Lösungen ist. In einer Ausführungsform können Sichtbarkeitsgradienten basierend auf einer Rasterung der 3D-Modelldarstellung 122 durch Bildschirmraum-Anti-Aliasing approximiert werden. Die gleiche Bildschirmraum-Anti-Aliasing-Technik kann auf die Strahlwahrscheinlichkeiten angewandt werden, um p j S t r a h l v k
    Figure DE102022113244A1_0016
    zu erhalten.
  • In einer Ausführungsform können die gelernten Flächenwahrscheinlichkeiten, ϕ, für während des Trainings gewählter Importance-Sample-Topologien verwendet werden, unter Verwendung eines in TABELLE 3 gezeigten Algorithmus.
    Figure DE102022113244A1_0017
    Figure DE102022113244A1_0018
  • Importance-Sampling der Topologie basierend auf den gelernten Flächenwahrscheinlichkeiten kann Konvergenz verbessern, da Trainingsbeispiele auf schwierigen Regionen fokussiert sind und leerer oder Feststoffraum schnell ausgelesen werden kann. Es sei bemerkt, dass eine Optimierung sogar konvergiert, wenn ϕi auf gleiche 0, ∀i initialisiert ist
  • 2C veranschaulicht ein Ablaufdiagramm eines Verfahrens 265 für Importance-Sampling einer Topologie basierend auf Wahrscheinlichkeitswerten, das zur Verwendung beim Implementieren einiger Ausführungsformen der vorliegenden Offenbarung geeignet ist. Bei Schritt 270 erzeugt die Topologieerzeugungseinheit 135 eine Topologie 136, die ein Sichtbarkeits-Bit für jede Fläche des volumetrischen Gitters 130 umfasst. Schritt 275 und entweder Schritt 280 oder Schritt 290 werden für jede Fläche der Topologie 136 durchgeführt. Bei Schritt 275 bestimmt die Topologieerzeugungseinheit 135, wenn der Topologiewert für eine Fläche geringer als der Wahrscheinlichkeitswert für die Fläche ist, und, wenn ja, wird bei Schritt 280 das Sichtbarkeits-Bit für die Fläche gesetzt. Andernfalls wird bei Schritt 290 das Sichtbarkeits-Bit für die Fläche nicht gesetzt.
  • Um gut ausgebildete Gitter zu fördern und UV-Abbildung zu vereinfachen, kann die Optimierung mit einem dichten 3D-Gitter initialisiert werden und eine Wahrscheinlichkeit, ϕ, kann jeder Gitterzelle zugewiesen werden. Anstatt sich auf Marching-Cubes zu stützen, kann jede Zelle in 12 Dreiecke, zwei pro Seite, tesselliert werden, wobei alle der Dreiecke für eine Gitterzelle die Wahrscheinlichkeiten der Zelle ϕk gemeinsam nutzen. Die gemeinsame Nutzung eines einzigen Wahrscheinlichkeitswerts für alle Flächen der Zelle stellt ein beschränkteres Optimierungsproblem im Vergleich zu einem eindeutigen Wahrscheinlichkeitswert pro Dreieck bereit. Bedeutender Weise, vorausgesetzt, dass das volumetrische Gitter 130 nicht überlappt oder sich selbst scheidet, ist das resultierende Gitter mannigfaltig.
  • Die Vertexpositionen vk werden optimiert, was den Vertices des volumetrischen Gitters 130 ermöglicht, sich zu bewegen, um der Objektoberfläche besser zu entsprechen. Auf den Tangentenraum kann von den Vertices und Flächen für eine gegebene Topologie geschlossen werden und Texturen können trainiert werden, die normale Störungen und Materialattribute enthalten, die ein Tangentenraum-Normal-Map, kn, texturiertes diffuses Albedo, kd, und spiegelnde Parameter, ks (d.h., Metallartigkeit und Rauigkeit) darstellen.
  • Der in TABELLE 1 gezeigte Algorithmus kann hierarchischen in einem Grob-nach-fein-Schema durch periodische Erhöhung der Auflösung des Gitters während des Trainings angewandt werden. Das Zwischenergebnis der gröberen Auflösung arbeitet wirksam als eine gute anfängliche Schätzung und verbessert somit die Konvergenz erheblich.
  • 3A veranschaulicht ein Konzeptdiagramm eines hierarchischen Grob-nach-fein-Trainings gemäß einer Ausführungsform. Das Training startet unter Verwendung einer Gittergröße von 16 Zellen in jeder Richtung (x, y und z), um eine gelernte Wahrscheinlichkeitsdichte 310 zu erzeugen. Die Gittergröße wird einmal in jeder Dimension unterteilt, um die gelernte Wahrscheinlichkeitsdichte 320 zu erzeugen, was die Glattheit und Wiedergabetreue der Silhouette im Vergleich zu der gelernten Wahrscheinlichkeitsdichte 310 verbessert. Die Gittergröße wird zweimal erneut in jeder Dimension unterteilt, um die gelernte Wahrscheinlichkeitsdichte 330 zu erzeugen, welche die Glattheit und Wiedergabetreue der Silhouette weiter verbessert.
  • 3B veranschaulicht ein Konzeptdiagramm eines gelernten Oberflächengitters 340, der gerenderten 3D-Modelldarstellung 345 und des gerenderte Referenz-3D-Modells 350 gemäß einer Ausführungsform. Das gelernte Oberflächengitter 340 umfasst die Flächen auf der Oberfläche des dichten volumetrischen Gitters nach der Optimierung. In einer Ausführungsform werden Vertices und Flächen innerhalb des dichten volumetrischen Gitters entfernt, um das gelernte Oberflächengitter 340 zu erzeugen. In einer Ausführungsform werden Flächen des dichten volumetrischen Gitters entfernt, die gelernte Wahrscheinlichkeiten unter einem Schwellenwert aufweisen, um das gelernte Oberflächengitter 340 zu erzeugen. In einer Ausführungsform umfasst das gelernte Oberflächengitter 340 opake dreieckige Flächen, wobei Positionen von Vertices in einer optimierten Topologie gelernt werden. Die 3D-Modelldarstellung 122 umfasst ebenfalls gelernte Materialattribute und die gerenderte 3D-Modelldarstellung 345 erscheint nahezu identisch mit dem gerenderten Referenz-3D-Modell 350.
  • In einer Ausführungsform werden die Bildraumverluste durch die Rendering-Pipeline rückwärts propagiert, um das anfängliche 3D-Modell zu aktualisieren und visuelle Ähnlichkeit zwischen den Sätzen von Bildern und Referenzbildern zu verbessern. In einer Ausführungsform werden die Bildraumverluste als Gradienten rückwärts propagiert, welche die Wirkung des Bewegens von Gittervertexpositionen angeben und das Einstellen anderer Parametern auf den Satz von Bilder aufweist. Durch die Rendering-Pipeline durchgeführte Operationen, um den Satz von Bildern zu erzeugen, werden differenzierbarer, so dass die Gradienten für Rückwärtspropagierung berechnet werden können.
  • 3C veranschaulicht ein Ablaufdiagramm eines anderen Verfahrens 360 zur Form- und Erscheinungsbild-gesteuerten automatischen 3D-Modellierung, das zur Verwendung beim Implementieren einiger Ausführungsformen der vorliegenden Offenbarung geeignet ist. Jeder Block des hier beschrieben Verfahrens 360 umfasst ein Rechenverfahren, das mit einer beliebigen Kombination von Hardware, Firmware und/oder Software durchgeführt werden kann. So können beispielsweise verschiedene Funktionen von einem Prozessor ausgeführt werden, der im Speicher gespeicherte Anweisungen ausführt. Das Verfahren kann ebenfalls als computerverwendbare Anweisungen verkörpert sein, 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 einem Plug-in in ein anderes Produkt bereitgestellt werden, um einige zu nennen. Außerdem wird das Verfahren 360 beispielhaft mit Bezug auf das Form- und Erscheinungsbild-gesteuerte 3D-System zur Modellierung 150 von 1D beschrieben. Dieses Verfahren kann jedoch zusätzlich oder alternativ von einem beliebigen System oder einer beliebigen Kombination von Systemen ausgeführt werden, einschließlich, jedoch nicht beschränkt auf die hier beschriebenen. Des Weiteren versteht sich für Durchschnittsfachleute, dass jedes beliebige System, welches das Verfahren 360 durchführt, in den Umfang und das Wesen von Ausführungsformen der vorliegenden Offenbarung fällt.
  • Bei Schritt 365 wird eine 3D-Topologiedefinition empfangen, die sichtbare Flächen von Zellen innerhalb eines volumetrischen Gitters kennzeichnet, das durch Vertexpositionen der Flächen und Verbindungen zwischen den Vertexpositionen definiert wird. In einer Ausführungsform wird die 3D-Topologiedefinition durch die Topologieerzeugungseinheit 135 ausgegeben und die 3D-Topologiedefinition kennzeichnet sichtbare Flächen von Zellen innerhalb des volumetrischen Gitters 130.
  • Bei Schritt 370 wird das volumetrische Gitter gemäß Parametern verformt, um ein opakes Oberflächengitter zu erzeugen, das durch Vertexpositionen der sichtbaren Flächen und Verbindungen zwischen den Vertexpositionen der sichtbaren Flächen definiert wird, wobei das opake Oberflächengitter einem Referenz-3D-Modell entspricht. In einer Ausführungsform umfasst die 3D-Modelldarstellung 122, die durch die 3D-Modellerzeugungseinheit 140 erzeugt wurde, das verformte volumetrische Gitter. In einer Ausführungsform ist das volumetrische Gitter ein dichtes 3D-Gitter, das verformt ist, um die Form der 3D-Modelldarstellung 122 für die 3D-Topologiedefinition zu definieren.
  • Bei Schritt 375 werden die Parameter basierend auf Differenzen zwischen einem gerenderten Bild des opaken Oberflächengitters und einem Referenzbild des Referenz-3D-Modells aktualisiert, um die Differenzen zu verringern. In einer Ausführungsform werden die Parameter 142 basierend auf Bildraumverlusten 162 aktualisiert. In einer Ausführungsform wird das Verfahren 240 verwendet, um die Parameter zu aktualisieren. In einer Ausführungsform werden Schritte 370 und 375 für zusätzliche 3D-Topologiedefinitionen wiederholt, wobei die zusätzlichen 3D-Topologiedefinitionen im Vergleich zu den 3D-Topologiedefinition anders sind. In einer Ausführungsform werden die zusätzlichen 3D-Topologiedefinitionen basierend auf berechneten Wahrscheinlichkeitswerten für die Zellen innerhalb des volumetrischen Gitters definiert, die eine Wahrscheinlichkeit angeben, dass jede Zelle von einem Strahl geschnitten wird, der dem Referenzbild entspricht. In einer Ausführungsform wird das Verfahren 200 verwendet, um die Wahrscheinlichkeitswerte zu berechnen. In einer Ausführungsform wird das Verfahren 265 verwendet, um die zusätzlichen 3D-Topologiedefinitionen zu erzeugen.
  • Eine Ende-zu-Ende-Optimierung der Form und des Erscheinungsbildes von Dreieckmodellen über sich ändernde Topologien ist eine Herausforderung. Die Optimierungsaufgabe wird daher über eine Verteilung von Topologien formuliert, was Gradienten-basierte Optimierung ermöglicht. Des Weiteren wird der erwartete Wert über die Verteilungen durch Verfolgung Strahlen durch Monte-Carlo-abgetastete Topologien geschätzt, was ein sehr effiziente Implementierung ermöglicht. Die Topologieabtastungstechnik ermöglicht Topologie, Form und Erscheinungsbild gemeinsam für Dreieckgitter aus Bildbeobachtung zu lernen. Außerdem kann durch Importance-Sampling der Verteilung von möglichen Topologien eine Optimierung durch inverses Rendering unter Verwendung einer zufällig abgetasteten Topologie für jede Trainingsiteration erreicht werden.
  • Parallelverarbeitungsarchitektur
  • 4 veranschaulicht eine Parallelverarbeitungseinheit (Parallel Processing Unit; PPU) 400 gemäß einer Ausführungsform. Die PPU 400 kann verwendet werden, um das Form- und Erscheinungs-gesteuerte 3D-Modellierungssystem 150 zu implementieren. Die PPU 400 kann verwendet werden, um eines oder mehrere der Topologieerzeugungseinheit 135, der 3D-Modellerzeugungseinheit, der Wahrscheinlichkeits-Rendering-Einheit 155, des differenzierbaren Renderers 145 oder der Bildraumverlusteinheit 160 zu implementieren. In einer Ausführungsform kann ein Prozessor, wie beispielsweise die PPU 400, konfiguriert sein, um 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 umfassen, 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 darstellen 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 auch oder alternativ das Durchführen einer Inferenz unter Verwendung des Satzes der Parameter umfassen, um neue Sätze von Eingaben zu verarbeiten.
  • In einer Ausführungsform ist die PPU 400 ein Multi-Threaded-Prozessor bzw. mehrsträngiger Prozessor, der auf einer oder mehreren integrierten Schaltungsvorrichtungen implementiert ist. Die PPU 400 ist eine Latenz-verbergende Architektur, die ausgestaltet ist, um eine große Anzahl von Threads bzw. Strängen parallel zu verarbeiten. Ein Thread bzw. Strang (z.B. ein Ausführungsthread) ist eine Instanziierung eines Satzes von Anweisungen, die konfiguriert sind, um von der PPU 400 ausgeführt zu werden. In einer Ausführungsform ist die PPU 400 eine Graphikverarbeitungseinheit (GPU), die konfiguriert ist, um eine Graphik-Rendering-Pipeline zur Verarbeitung von dreidimensionalen (3D) Graphikdaten zu implementieren, um zweidimensionale (2D) Bilddaten zur Anzeige auf einer Anzeigevorrichtung zu erzeugen. In anderen Ausführungsformen kann die PPU 400 zum Durchführen von Allzweckberechnungen benutzt werden. Während ein beispielhafter paralleler Prozessor hier für veranschaulichende Zwecke bereitgestellt wird, sei nachdrücklich bemerkt, dass ein derartiger Prozessor lediglich für veranschaulichende Zwecke dargelegt wird und dass ein beliebiger Prozessor benutzt werden kann, um dasselbe zu ergänzen und/oder zu ersetzen.
  • Eine oder mehrere PPUs 400 können konfiguriert sein, um Tausende von HPC(High Performing Computing)-, Rechenzentrum-, Cloud-Computing- und Maschinenlern-Anwendungen zu beschleunigen. Die PPU 400 kann konfiguriert sein, um zahlreiche Deep-Learning-Systeme und Anwendungen für autonome Fahrzeuge, Simulation, Rechengraphik, wie beispielsweise Strahlen- oder Pfadverfolgung, Deep-Learning, hochgenaue Sprache, Bild- und Texterkennungssysteme, intelligente Videoanalyse, molekulare Simulationen, Wirkstoffentdeckung, Krankheitsdiagnose, Wettervorhersage, Analyse großer Datenmengen, Astronomie, Molekulardynamiksimulation, Finanzmodellierung, Robotertechnik, Fabrikautomation, Sprachübersetzung in Echtzeit, Online-Suchoptimierungen und personalisierte Benutzerempfehlungen und dergleichen zu beschleunigen.
  • Wie in 4 gezeigt, umfasst die PPU 400 eine Eingabe/Ausgabe(E/A)-Einheit 405, eine Frontend-Einheit 415, eine Planereinheit 420, eine Arbeitsverteilungs-Einheit 425, einen Hub 430, eine Kreuzschiene (Xbar) 470, einen oder mehrere allgemeine Verarbeitungscluster (GPCs) 450 und eine oder mehrere Speicherpartitionseinheiten 480. Die PPU 400 kann mit einem Host-Prozessor oder anderen PPUs 400 über eine Zwischenverbindung des Hochgeschwindigkeits-NVLink 410 verbunden sein. Die PPU 400 kann ebenfalls mit einem Host-Prozessor oder anderen peripheren Vorrichtungen über eine Zwischenverbindung 402 verbunden sein. Die PPU 400 kann ebenfalls mit einem lokalen Speicher 404 verbunden sein, der eine Anzahl von Speichervorrichtungen umfasst. In einer Ausführungsform kann der lokale Speicher eine Anzahl von Direktzugriffsspeicher(DRAM)-Vorrichtungen umfassen. Die DRAM-Vorrichtungen können als ein HBM(Speicher mit hoher Bandbreite)-Subsystem konfiguriert sein, wobei mehrere DRAM-Dies innerhalb jeder Vorrichtung gestapelt sind.
  • Die Zwischenverbindung des NVLink 410 ermöglicht Systemen, eine oder mehrere PPUs 400 zu skalieren und zu umfassen, die mit einer oder mehreren CPUs kombiniert sind, unterstützt Cache-Kohärenz zwischen den PPUs 400 und CPUs sowie CPU-Mastering. Daten und/oder Befehle können mittels des NVLink 410 durch den Hub 430 an/von anderen Einheiten der PPU 400, wie beispielsweise eine oder mehrere Kopiermaschinen, einen Videocodierer, einen Videodecodierer, eine Leistungsverwaltungseinheit usw. (nicht explizit gezeigt) übertragen werden. Das NVLink 410 wird ausführlicher in Verbindung mit 5B beschrieben.
  • Die E/A-Einheit 405 ist konfiguriert, um Kommunikationen (z.B. Befehle, Daten usw.) von einem Host-Prozessor (nicht gezeigt) über die Zwischenverbindung 402 zu übertragen und zu empfangen. Die E/A-Einheit 405 kann mit dem Host-Prozessor direkt über die Zwischenverbindung 402 oder durch eine oder mehrere Zwischenvorrichtungen, wie beispielsweise eine Speicherbrücke, kommunizieren. In einer Ausführungsform kann die E/A-Einheit 405 mit einem oder mehreren anderen Prozessoren, wie beispielsweise eine oder mehrere der PPUs, über die Zwischenverbindung 402 kommunizieren. In einer Ausführungsformen implementiert die E/A-Einheit 405 eine PCIe(Peripheral Component Zwischenverbindung Express)-Schnittstelle für Kommunikationen über einen PCIe-Bus und die Zwischenverbindung 402 ist ein PCIe-Bus. In alternativen Ausführungsformen kann die E/A-Einheit 405 andere Typen von wohlbekannten Schnittstellen zum Kommunizieren mit externen Vorrichtungen umfassen.
  • Die E/A-Einheit 405 decodiert Pakete, die über die Zwischenverbindung 402 empfangen wurden. In einer Ausführungsform stellen die Pakete Befehle dar, die konfiguriert sind, um die PPU 400 zu veranlassen, verschiedene Operationen durchzuführen. Die E/A-Einheit 405 überträgt die decodierten Befehle an verschiedene andere Einheiten der PPU 400, wie es die Befehle spezifizieren können. Beispielsweise können einige Befehle an die Frontend-Einheit 415 übertragen werden. Andere Befehle können an den Hub 430 oder andere Einheiten der PPU 400, wie beispielsweise eine oder mehrere Kopiermaschinen, einen Video-Codierer, einen Video-Decodierer, eine Leistungsverwaltungseinheit usw. (nicht explizit gezeigt) übertragen werden. Mit anderen Worten ist die E/A-Einheit 405 konfiguriert, um Kommunikationen zwischen und unter den verschiedenen logischen Einheiten der PPU 400 weiterzuleiten.
  • In einer Ausführungsform codiert ein Programm, das von dem Host-Prozessor ausgeführt wird, einen Befehlsstrom in einem Puffer, welcher der PPU 400 Arbeitslasten zur Verarbeitung bereitstellt. Eine Arbeitslast kann mehrere Anweisungen und Daten umfassen, die von diesen Anweisungen zu verarbeiten sind. Der Puffer ist ein Bereich in einem Speicher, der von sowohl dem Host-Prozessor als auch der PPU 400 zugänglich ist (z.B. Lesen/Schreiben). Beispielsweise kann die Host-Schnittstelleneinheit 405 konfiguriert sein, um auf den Puffer in einem Systemspeicher, der mit der Zwischenverbindung 402 verbunden ist, über Speicheranfragen, die über die Zwischenverbindung 402 übertragen werden, zuzugreifen. In einer Ausführungsform schreibt der Host-Prozessor den Befehlsstrom in den Puffer und überträgt dann einen Zeiger zu dem Start des Befehlsstroms an die PPU 400. Die Frontend-Einheit 415 empfängt Zeiger auf einen oder mehrere Befehlsströme. Die Frontend-Einheit 415 verwaltet den einen oder mehrere Ströme, liest Befehle von den Strömen und leitet Befehle an die verschiedenen Einheiten der PPU 400 weiter.
  • Die Frontend-Einheit 415 ist mit einer Planereinheit 420 gekoppelt, welche die verschiedenen GPCs 450 konfiguriert, um Aufgaben zu verarbeiten, die durch den einen oder mehrere Ströme definiert sind. Die Planereinheit 420 ist konfiguriert, um Zustandsinformation zu verfolgen, die verschiedene Aufgaben betrifft, die von der Planereinheit 420 verwaltet werden. Der Zustand kann angeben, welchem GPC 450 eine Aufgabe zugewiesen ist, ob die Aufgabe aktiv oder inaktiv ist, ob ein Prioritätsniveau der Aufgabe zugeordnet ist und so weiter. Die Planereinheit 420 verwaltet die Ausführung einer Mehrzahl von Aufgaben auf dem einen oder mehreren GPCs 450.
  • Die Planereinheit 420 ist mit einer Arbeitsverteilungs-Einheit 425 gekoppelt, die konfiguriert ist, um Aufgaben zur Ausführung auf den GPCs 450 zu versenden. Die Arbeitsverteilungs-Einheit 425 kann eine Anzahl von eingeplanten Aufgaben verfolgen, die von der Planereinheit 420 empfangen werden. In einer Ausführungsform verwaltet die Arbeitsverteilungs-Einheit 425 einen Pool für anhängige Aufgaben und einen Pool für aktive Aufgaben für jeden der GPCs 450. Wenn ein GPC 450 die Ausführung einer Aufgabe abschließt, wird diese Aufgabe aus dem Pool für aktive Aufgaben für den GPC 450 geräumt und eine der anderen Aufgaben wird aus dem Pool für anhängige Aufgaben ausgewählt und zur Ausführung auf dem GPC 450 eingeplant. Wenn eine aktive Aufgabe auf dem GPC 450 inaktiv war, wie beispielsweise während darauf gewartet wird, dass eine Datenabhängigkeit behoben wird, dann kann die aktive Aufgabe aus dem GPC 450 geräumt und zu dem Pool für anhängige Aufgaben zurückgeführt werden, während eine weitere Aufgabe in dem Pool für anhängige Aufgaben ausgewählt und zur Ausführung auf dem GPC 450 eingeplant wird.
  • In einer Ausführungsform führt ein Host-Prozessor einen Treiber-Kernel aus, der eine anwendungsprogrammierbare Schnittstelle (Application Programming Interface; API) implementiert, die einer oder mehreren Anwendungen ermöglicht, die auf dem Host-Prozessor ausgeführt werden, Operationen zur Ausführung auf der PPU 400 einzuplanen. In einer Ausführungsform werden mehrere Rechenanwendungen gleichzeitig von der PPU 400 ausgeführt und die PPU 400 stellt Isolierung, Dienstqualität (QoS) und unabhängige Adressräume für die mehreren Rechenanwendungen bereit. Eine Anwendung kann Anweisungen (z.B. API-Aufrufe) erzeugen, welche den Treiber-Kernel veranlassen, eine oder mehrere Aufgaben zur Ausführung durch die PPU 400 zu erzeugen. Der Treiberkernel gibt Aufgaben an einen oder mehrere Streams aus, die von der PPU 400 verarbeitet werden. Jede Aufgabe kann eine oder mehrere Gruppen von in Beziehung stehender Threads umfassen, die hier als ein Warp bezeichnet werden. In einer Ausführungsform umfasst ein Warp 32 in Beziehung stehende Threads, die parallel ausgeführt werden können. Kooperierende Threads können sich auf eine Mehrzahl von Threads beziehen, die Anweisungen umfassen, um die Aufgabe durchzuführen, und die Daten durch einen gemeinsam genutzten Speicher austauschen können. Die Aufgaben können einer oder mehreren Verarbeitungseinheiten innerhalb eines GPC 450 zugeteilt werden und Anweisungen werden zur Ausführung durch mindestens einen Warp geplant.
  • Die Arbeitsverteilungseinheit 425 kommuniziert mit dem einem oder mehreren GPCs 450 über die Kreuzschiene 470. Die Kreuzschiene ist ein Zwischenverbindungsnetzwerk, das viele der Einheiten der PPU 400 mit anderen Einheiten koppelt. Beispielsweise kann die Kreuzschiene 470 konfiguriert sein, um die Arbeitsverteilungseinheit 425 mit einem bestimmten GPC 450 zu koppeln. Obwohl nicht explizit gezeigt, können eine oder mehrere Einheiten der PPU 400 ebenfalls mit der Kreuzschiene 470 über den Hub 430 gekoppelt sein.
  • Die Aufgaben werden von der Planereinheit 420 verwaltet und an einen GPC 450 durch die Arbeitsverteilungseinheit 425 gesendet. Die GPC ist konfiguriert, um die Aufgabe zu verarbeiten und Ergebnisse zu erzeugen. Die Ergebnisse können von anderen Aufgaben innerhalb des GPC konsumiert werden, an einen anderen GPC über die Kreuzschiene weitergeleitet oder in dem Speicher 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 in/aus dem Speicher 404 implementieren. Die Ergebnisse können an eine andere PPU 400 oder CPU über das NVLink 410 übertragen werden. In einer Ausführungsform umfasst die PPU 400 eine Anzahl U von Speicherpartitionseinheiten 480, die gleich der Anzahl von separaten und distinkten Speichervorrichtungen des mit der PPU gekoppelten Speicher 404 ist. Jeder GPC 450 kann eine Speicherverwaltungseinheit umfassen, um eine Übersetzung von virtuellen Adressen in physische Adressen, einen Speicherschutz und eine Arbitrierung von Speicheranfragen bereitzustellen. In einer Ausführungsform stellt die Speicherverwaltungseinheit einen oder mehrere Adressenübersetzungspuffer (Translation Lookaside Buffers; TLBs) zum Durchführen der Übersetzung von virtuellen Adressen in physische Adressen in dem Speicher 404 bereit.
  • In einer Ausführungsform umfasst die Speicherpartitionseinheit 480 eine Raster-Operationen(ROP)-Einheit, einen L2-Cache-Speicher und eine Speicherschnittstelle, die mit dem Speicher 404 gekoppelt ist. Die Speicherschnittstelle kann 32-, 64-, 128-, 1024-Bit-Datenbusse oder dergleichen für Hochgeschwindigkeits-Datentransfer implementieren. Die PPU 400 kann mit bis zu Y Speichervorrichtungen, wie beispielsweise einem Speicherstapel mit hoher Bandbreite oder Graphikdoppeldatenraten, Version 5 SDRAM oder anderen Arten eines persistenten Speicher verbunden sein. In einer Ausführungsform implementiert die Speicherschnittstelle eine HBM2-Speicherschnittstelle und Y ist gleich einem halben U.
  • In einer Ausführungsform sind die HBM2-Speicherstapel auf der gleichen physischen Packung wie die PPU 400 lokalisiert, die wesentliche Leistungs- und Flächeneinsparungen verglichen mit herkömmlichen GDDR5 SDRAM Systemen bereitstellt. In einer Ausführungsform umfasst jeder HBM2-Stapel vier Speicher-Dies und Y ist gleich 4, wobei der HBM2-Stapel zwei 128-Bit Kanäle pro Die für eine Gesamtzahl von 8 Kanälen und eine Datenbusbreite von 1024 Bit umfasst.
  • In einer Ausführungsform unterstützt der Speicher 404 Fehlerkorrekturcode (ECC) mit Einzelfehlerkorrektur und Doppelfehlerdetektion (SECDED), um Daten zu schützen. Der ECC stellt eine höhere Zuverlässigkeit für Rechenanwendungen bereit, die gegen Datenverfälschung empfindlich sind. Zuverlässigkeit ist besonders wichtig in großen Cluster-Rechenumgebungen, wo PPUs 400 sehr große Datensätze verarbeiten und/oder Anwendungen für längere Zeiträume ausführen.
  • In einer Ausführungsform implementiert die PPU 400 eine Mehr-Ebenen-Speicherhierarchie. In einer Ausführungsform unterstützt die Speicherpartitionseinheit 480 einen vereinheitlichten Speicher, um einen einzigen vereinheitlichten virtuellen Adressraum für den Speicher der CPU und den Speicher der PPU 400 bereitzustellen, der Datenteilung zwischen virtuellen Speichersystemen ermöglicht. In einer Ausführungsform wird die Häufigkeit von Zugriffen durch eine PPU 400 auf einen Speicher, der auf anderen Prozessoren lokalisiert ist, verfolgt, um sicherzustellen, dass Speicherseiten in den physischen Speicher der PPU 400 bewegt werden, die häufiger auf die Seiten zugreift. In einer Ausführungsform unterstützt das NVLink 410 Adressenübersetzungsdienste, die der PPU 400 erlauben, auf Seitentabellen einer CPU direkt zuzugreifen und einen vollen Zugriff auf den CPU-Speicher durch die PPU 400 bereitstellen.
  • In einer Ausführungsform transferieren Kopiermaschinen Daten zwischen mehreren PPUs 400 oder zwischen PPUs 400 und CPUs. Die Kopiermaschinen können Seitenfehler für Adressen erzeugen, die nicht in den Seitentabellen abgebildet werden. Die Speicherpartitionseinheit 480 kann dann die Seitenfehler bedienen, wobei die Adressen in der Seitentabelle abgebildet werden, nachdem die Kopiermaschine den Transfer durchführen kann. In einem herkömmlichen System ist der Speicher für mehrere Kopiermaschinenoperationen zwischen mehreren Prozessoren gesperrt (z.B. nicht auslagerbar), was den verfügbaren Speicher wesentlich verringert. Mit Hardware-Seiten-Faulting können Adressen an die Kopiermaschinen weitergeleitet werden, ohne sich Sorgen zu machen, ob die Speicherseiten resident sind und das Kopierverfahren transparent ist.
  • Daten von dem Speicher 404 oder einem anderen Systemspeicher können von der Speicherpartitionseinheit 480 geholt und in dem L2-Cache-Speicher 460 gespeichert werden, der On-Chip lokalisiert ist und zwischen den verschiedenen GPCs 450 gemeinsam benutzt wird. Wie gezeigt, umfasst jede Speicherpartitionseinheit 480 einen Bereich des L2-Cache-Speichers, der einem entsprechenden Speicher 404 zugeordnet ist. Cache-Speicher niedrigerer Ebene können dann in verschiedenen Einheiten innerhalb der GPCs 450 implementiert werden. Beispielsweise kann jede der Verarbeitungseinheiten einen L1-Cache-Speicher implementieren. Der L1-Cache-Speicher ist ein privater Speicher, der einer bestimmten Verarbeitungseinheit fest zugeordnet ist. Der L2-Cache-Speicher Daten ist mit der Speicherschnittstelle 470 und der Kreuzschiene 470 gekoppelt und Daten von dem L2-Cache-Speicher 460 können geholt und in jedem der L1-Cache-Speicher zur Verarbeitung gespeichert werden.
  • In einer Ausführungsform implementieren die Verarbeitungseinheiten innerhalb jeder GPC 450 eine SIMD(Einzelne-Anweisung, Mehrere-Daten)-Architektur, wobei jeder Thread in einer Gruppe von Threads (z.B. einem Warp) konfiguriert ist, um einen unterschiedlichen Satz von Daten basierend auf dem gleichen Satz von Anweisungen zu verarbeiten. Alle Threads in der Gruppe von Threads führen die gleichen Anweisungen aus. In einer anderen Ausführungsform implementiert die Verarbeitungseinheit eine SIMT(Einzelne Anweisung, Mehrere Threads)-Architektur, wobei jeder Thread in einer Gruppe von Threads konfiguriert ist, um einen unterschiedlichen Satz von Daten basierend auf dem gleichen Satz von Anweisungen zu verarbeiten, wobei jedoch einzelnen Threads in der Gruppe von Threads ermöglicht wird, während der Ausführung zu divergieren. In einer Ausführungsform wird ein Programmzähler, ein Aufrufstapel und ein Ausführungszustand für jeden Warp beibehalten, was eine Nebenläufigkeit zwischen Warps und eine serielle Ausführung innerhalb Warps ermöglicht, wenn Threads innerhalb des Warp divergieren. In einer weiteren Ausführungsform wird ein Programmzähler, ein Aufrufstapel und ein Ausführungszustand für jeden einzelnen Thread beibehalten, was eine gleiche Nebenläufigkeit zwischen allen Threads, innerhalb und zwischen Warps ermöglicht. Wenn der Ausführungszustand für jeden einzelnen Thread beibehalten wird, können Threads, welche die gleichen Anweisungen ausführen, konvergiert und für maximale Effizienz parallel ausgeführt werden.
  • Cooperative Groups ist ein Programmiermodell zum Organisieren von Gruppen von kommunizierenden Threads, das Entwicklern ermöglicht, die Granularität auszudrücken, bei der Threads kommunizieren, wobei der Ausdruck von reicheren, effizienten Parallelzerlegungen ermöglicht wird. Cooperative-Start-APIs unterstützen die Synchronisierung unter Thread-Blöcken für die Ausführung von parallelen Algorithmen. Herkömmliche Programmiermodelle stellen einen einzigen, einfachen Aufbau zum Synchronisieren von kooperierenden Threads bereit: eine Barriere über alle Threads eines Threadblocks (z.B. die Funktion syncthreads( )). Programmierer würden jedoch häufig gerne Gruppen von Threads bei kleineren als Thread-Block-Granularitäten definieren und innerhalb der definierten Gruppen synchronisieren, um größere Leistung, Gestaltungsflexibilität und Software-Wiederverwendung in der Form von kollektiven gruppenweiten Funktionsschnittstellen zu ermöglichen.
  • Cooperative Groups ermöglicht Programmierern, Gruppen von Threads explizit bei Sub-Block(z.B. so klein wie ein einziger Thread)- und Mehr-Block-Granularitäten zu definieren und kollektive Operationen, wie beispielsweise Synchronisierung, an den Threads in einer kooperativen Gruppe durchzuführen.
  • Das Programmiermodell unterstützt eine saubere Zusammensetzung über Softwaregrenzen, so dass Bibliotheken und Hilfsfunktionen innerhalb ihres lokalen Kontexts sicher synchronisieren können, ohne Annahmen über Konvergenz machen zu müssen. Cooperative-Groups-Primitiven ermöglichen neue Muster von kooperativer Parallelität, die Erzeuger-Verbraucher Parallelität, opportunistische Parallelität und globale Synchronisierung über ein gesamtes Gitter von Threadblöcken umfassen.
  • Verarbeitungseinheit umfasst eine große Anzahl (z.B. 128, usw.) von unterschiedlichen Verarbeitungskernen, die vollständig in einer Pipeline angeordnete (fully-pipelined) Einfach-Präzisions- Verarbeitungseinheit umfassen, die eine Gleitkommaarithmetik-Logikeinheit und eine Ganzzahlarithmetik-Logikeinheit umfasst. In einer Ausführungsform implementieren die Gleitkommaarithmetik-Logikeinheiten den IEEE 754-3008 Standard für Gleitkommaarithmetik. In einer Ausführungsform umfassen die Kerne 64 Einfach-Präzisions-(32-Bit)-Gleitkommakerne, 64 Integer-Kerne, 32 Doppel-Präzisions-(64-Bit)-Gleitkommakerne und 8 Tensorkerne.
  • Tensorkerne sind konfiguriert, um Matrix-Operationen durchzuführen. Insbesondere sind die Tensorkerne konfiguriert, um Deep-Learning-Matrix-Arithmetik, wie beispielsweise GEMM (Matrix-Matrix-Multiplikation) für Faltungsoperationen während neuronalem Netzwerktraining und Inferenzieren, durchzuführen. In einer Ausführungsform arbeitet jeder Tensorkern an einer 4x4-Matrix und führt eine Matrix-Multiplikations- und Akkumulations-Operation D=A×B+C durch, wobei A, B, C und D 4x4 Matrizen sind.
  • In einer Ausführungsform können die Matrix-Multiplikations-Eingaben A und B Ganzzahl-, Festkomma- oder Gleitkomma-Matrizen sein, während die Akkumulationsmatrizen C und D Ganzzahl-, Festkomma- oder Gleitkomma-Matrizen von gleicher oder höherer Bitbreite sein können. In einer Ausführungsform arbeiten Tensorkerne an ein, vier oder acht Bit Ganzzahl-Eingabedaten mit 32-Bit-Gleitkomma-Akkumulation. Die 8-Bit-Ganzzahl-Multiplikation erfordert 1024 Operationen und ergibt ein Produkt voller Präzision, das dann unter Verwendung einer 32-Bit-Gleitkomma-Addition mit den anderen Zwischenprodukten für eine 8x8x16-Matrix-Multiplikation akkumuliert wird. In einer Ausführungsform arbeiten Tensorkerne an 16-Bit Gleitkomma-Eingabedaten mit 32-Bit-Gleitkomma-Akkumulation. Die 16-Bit-Ganzzahl-Multiplikation erfordert 64 Operationen und ergibt ein Produkt voller Präzision, das dann unter Verwendung einer 32-Bit-Gleitkomma-Addition mit den anderen Zwischenprodukten für eine 4x4x4-Matrix-Multiplikation akkumuliert wird. In der Praxis werden Tensorkerne verwendet, um viel größere zweidimensionale oder höherdimensionale Matrixoperationen durchzuführen, die von diesen kleineren Elementen aufgebaut werden. Eine API, wie beispielsweise die CUDA 9 C++ API, stellt spezialisierte Matrix-Lade-, Matrix-Multiplikations- und Matrix-Akkumulations- und Matrix-Speicher-Operationen bereit, um Tensorkerne von einem CUDA-C++ Programm effizient zu verwenden. Auf der CUDA-Ebene nimmt das Warp-Schnittstellenniveau 16x16 große Matrizen an, die alle 32 Threads des Warp überspannen.
  • Jede Verarbeitungseinheit kann ebenfalls M Spezialfunktionseinheiten (Special Function Units; SFUs) umfassen, die Sonderfunktionen durchführen (z.B. Attributauswertung, reziproke Quadratwurzel und dergleichen).
  • In einer Ausführungsform können die SFUs eine Baumtraversierungseinheit umfassen, die konfiguriert ist, um eine hierarchische Baumdatenstruktur zu durchlaufen. In einer Ausführungsform können die SFUs eine Textureinheit umfassen, die konfiguriert ist, um Texturkarten-Filteroperationen durchzuführen. In einer Ausführungsform sind die Textureinheiten konfiguriert, um Texturkarten (z.B. eine 2D-Anordnung von Texeln) von dem Speicher 404 zu laden und die Texturkarten abzutasten, um abgetastete Texturwerte zum Gebrauch in Shader-Programmen zu erzeugen, die von der Verarbeitungseinheit ausgeführt werden. In einer Ausführungsform werden die Texturkarten in dem gemeinsam genutzten Speicher gespeichert, der einen L1-Cache-Speicher umfassen kann. Die Textureinheiten implementieren Texturoperationen, wie beispielsweise Filteroperationen, unter Verwendung von Mip-Maps (z.B. Texturkarten von veränderlichem Detaillierungsgrad). In einer Ausführungsform umfasst jeder Verarbeitungseinheit zwei Textureinheiten.
  • Jede Verarbeitungseinheit umfasst ebenfalls N Lade- und Speichereinheiten, die Lade- und Speicheroperationen zwischen dem gemeinsam genutzten Speicher und der Registerdatei implementieren. Jede Verarbeitungseinheit umfasst ein Zwischenverbindungs-Netzwerk, das jede der Kerne der Registerdatei und der LSU mit der Registerdatei, dem gemeinsam genutzten Speicher verbindet. In einer Ausführungsform ist das Zwischenverbindungs-Netzwerk eine Kreuzschiene, die konfiguriert sein kann, um irgendeinen der Kerne mit irgendeinem der Register in der Registerdatei zu verbinden und die LSUs mit der Registerdatei und Speicherorten in dem gemeinsam genutzten Speicher zu verbinden.
  • Der gemeinsam genutzte Speicher ist eine Anordnung eines On-Chip-Speichers, die Datenspeicherung und Kommunikation zwischen Verarbeitungseinheiten und zwischen Threads innerhalb einer Verarbeitungseinheit ermöglicht. In einer Ausführungsform umfasst der gemeinsam genutzte Speicher 128KB von Speicherkapazität und ist in dem Pfad von jeder Verarbeitungseinheit zu der Speicherpartitionseinheit 480.
  • Der gemeinsam genutzte Speicher kann verwendet werden, um Lese- und Schreibvorgänge zwischenzuspeichern. Eines oder mehrere der gemeinsam genutzten Speicher, L2-Cache-Speicher und Speicher 404 sind Hintergrundspeicher.
  • Das Kombinieren eines Daten-Cache und der gemeinsam genutzten Speicherfunktionalität in einem einzigen Speicherblock stellt die beste Gesamtleistung für beide Arten von Speicherzugriffen bereit. Die Kapazität ist als ein Cache von Programmen benutzbar, die den gemeinsam genutzten Speicher nicht verwenden. Wenn der gemeinsam genutzte Speicher beispielsweise konfiguriert ist, die Hälfte der Kapazität zu verwenden, können Textur- und Lade/Speicher-Operationen die verbleibende Kapazität verwenden. Integration innerhalb des gemeinsam genutzten Speichers ermöglicht dem gemeinsam genutzten Speicher als eine Leitung mit hohem Durchsatz zum Streamen von Daten zu arbeiten, während gleichzeitig eine höhere Bandbreite und ein latenzarmer Zugriff auf häufig wiederverwendete Daten bereitgestellt werden.
  • Wenn für Allzweck-Parallelberechnung konfiguriert ist, kann im Vergleich mit der Graphikverarbeitung eine einfachere Konfiguration verwendet werden. Im Einzelnen werden Festfunktions-Graphikverarbeitungseinheiten umgangen, wobei ein viel einfacheres Programmiermodell erzeugt wird. In der Allzweck-Parallelberechnungs-Konfiguration werden Blöcke von Threads von der Arbeitsverteilungs-Einheit 425 direkt den Verarbeitungseinheiten innerhalb der GPCs 450 zugewiesen und verteilt. Die Threads führen das gleiche Programm unter Verwendung einer eindeutigen Thread-ID in der Berechnung, um sicherzustellen, dass jeder Thread eindeutige Ergebnisse erzeugt, unter Verwendung der Verarbeitungseinheit(en), um das Programm auszuführen und Berechnungen durchzuführen, eines gemeinsam genutzten Speichers, um zwischen Threads zu kommunizieren, und der LSU aus, um globalen Speicher durch den gemeinsam genutzten Speicher und der Speicherpartitionseinheit 480 zu lesen und zu beschreiben. Wenn für Allzweck-Parallelberechnung konfiguriert ist, können die Verarbeitungseinheiten ebenfalls Befehle schreiben, welche die Planereinheit 420 verwenden kann, um neue Arbeit auf den Verarbeitungseinheiten zu starten.
  • Die PPUs 400 können jeweils umfassen und/oder können konfiguriert sein, um Funktionen eines oder mehrerer Verarbeitungskerne und/oder Komponenten davon ausführen, wie beispielsweise Tensorkerne bzw. Tensor Cores (TCs), Tensor Processing Units (TPUs), Pixel Visual Cores (PVCs),Ray Tracing (RT) Cores, Vision Processing Units (VPUs), Graphics Processing Clusters (GPCs), Texture Processing Clusters (TPCs), Streaming Multiprocessors (SMs), Tree Traversal Units (TTUs), Artificial Intelligence Accelerators (AIAs), Deep Learning Accelerators (DLAs), Arithmetik-Logik-Einheiten (ALUs), anwendungsspezifische integrierte Schaltungen (ASICs), Gleitkomma-Einheiten (FPUs), Ein-/Ausgabe-Elemente (E/As), Peripheral Component Interconnect (PCI)- oder Peripheral Component Interconnect Express (PCIe)-Elemente und/oder dergleichen.
  • Die PPU 400 kann in einem Tischcomputer, einem Laptop-Computer, einem Tablet-Computer, einem Smartphone (z.B. einer drahtlosen handgehaltenen Vorrichtung), einem persönlichen digitalen Assistenten (PDA), einer Digitalkamera, einer handgehaltenen elektronischen Vorrichtung und dergleichen umfasst sein. In einer Ausführungsform ist die PPU 400 auf einem einzelnen Halbleitersubstrat verkörpert. In einer anderen Ausführungsform ist die PPU 400 in einem System-auf-Chip (SoC) zusammen mit einer oder mehreren anderen Vorrichtungen, wie beispielsweise zusätzlichen PPUs 400, dem Speicher 404, einem Rechner-mit-reduziertem-Befehlssatz(RISC)-CPU, einer Speicherverwaltungseinheit (MMU), einem Digital/Analog-Wandler (DAC) und dergleichen umfasst.
  • In einer Ausführungsform kann die PPU 400 auf einer Graphikkarte umfasst sein, die eine oder mehrere Speichervorrichtungen 404 umfasst. Die Graphikkarte kann konfiguriert sein, um sich mit einem PCIe-Schlitz auf einer Hauptplatine eines Tischcomputers schnittstellenmäßig zu verbinden. In noch einer anderen Ausführungsform kann die PPU 400 eine integrierte Graphikverarbeitungseinheit (iGPU) oder ein Parallelprozessor sein, der in dem Chipsatz der Hauptplatine umfasst 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.
  • Beispielhaftes Rechensystem
  • Systeme mit mehreren GPUs und CPUs werden in einer Vielzahl von Industrien eingesetzt, da Entwickler mehr Parallelität in Anwendungen wie z. B. künstlicher Intelligenz aufdecken und wirksam einsetzen. Hochleistungs-GPU-beschleunigte Systeme mit zehn bis vielen tausend Rechenknoten werden in Rechenzentren, Forschungseinrichtungen und Supercomputern eingesetzt, um immer größere Probleme zu lösen. Da die Anzahl der verarbeitenden Einrichtungen innerhalb der Hochleistungssysteme ansteigt, 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 von 4 gemäß einer Ausführungsform implementiert wurde. Das beispielhafte System 565 kann konfiguriert sein, um das Form- und Erscheinungs-gesteuerte 3D-Modellierungssystem 150 und/oder das in 1E gezeigte Verfahren 170 zu implementieren. Das Verarbeitungssystem 500 umfasst eine CPU 530, einen Schalter 510 und mehrere PPUs 400 und jeweilige Speicher 404.
  • Der NVLink 410 stellt Hochgeschwindigkeits-Kommunikationsverbindungen zwischen jeder der PPUs 400 bereit. Obwohl eine bestimmte Anzahl von NVLink 410 - und Interconnect 402 -Verbindungen in 5B dargestellt ist, kann die Anzahl der Verbindungen zu jeder PPU 400 und der CPU 530 variieren. Der Schalter 510 bildet die Schnittstelle zwischen der Verbindung 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 Schalter 510 zwei oder mehr Protokolle, um zwischen verschiedenen Verbindungen und/oder Links zu vermitteln.
  • In einer anderen Ausführungsform (nicht dargestellt) stellt der NVLink 410 eine oder mehrere Hochgeschwindigkeits-Kommunikationsverbindungen zwischen jeder der PPUs 400 und der CPU 530 bereit, und der Schalter 510 bildet eine Schnittstelle zwischen der Verbindung 402 und jeder der PPUs 400. Die PPUs 400, die Speicher 404 und die Verbindung 402 können auf einer einzigen Halbleiterplattform angeordnet sein, um ein Parallelverarbeitungsmodul 525 zu bilden. In einer weiteren Ausführungsform (nicht dargestellt) stellt die Verbindung 402 eine oder mehrere Kommunikationsverbindungen zwischen jeder der PPUs 400 und der CPU 530 bereit, und der Schalter 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 Ausführungsform (nicht dargestellt) stellt der NVLink 410 eine oder mehrere Hochgeschwindigkeits-Kommunikationsverbindungen zwischen den PPUs 400 und der CPU 530 über den Schalter 510 bereit. In einer weiteren Ausführungsform (nicht dargestellt) stellt die Zwischenverbindung 402 eine oder mehrere Kommunikationsverbindungen direkt zwischen den einzelnen PPUs 400 bereit. Eine oder mehrere der NVLink 410 - Hochgeschwindigkeits-Kommunikationsverbindungen können als physische NVLink-Verbindung oder entweder als On-Chip- oder On-Die-Verbindung implementiert werden, die das gleiche Protokoll wie der NVLink 410 verwendet.
  • Im Kontext der vorliegenden Beschreibung kann sich eine einzelne Halbleiterplattform auf eine einzige einheitliche halbleiterbasierte integrierte Schaltung beziehen, die auf einem Die oder Chip hergestellt ist. Es sei darauf hingewiesen, dass sich der Begriff Einzel-Halbleiterplattform ebenfalls auf Multi-Chip-Module mit erhöhter Konnektivität beziehen kann, die den On-Chip-Betrieb simulieren und wesentliche Verbesserungen gegenüber der Verwendung einer herkömmlichen Bus-Implementierung bereitstellen. Natürlich können die verschiedenen Schaltungen oder Einrichtungen ebenfalls separat oder in verschiedenen Kombinationen von Halbleiterplattformen nach den Wünschen des Anwenders angeordnet sein. Alternativ kann das Parallelverarbeitungsmodul 525 als Leiterplattensubstrat implementiert werden und jede der PPUs 400 und/oder Speicher 404 können Einrichtungen mit Gehäuse sein. In einer Ausführungsform befinden sich die CPU 530, der Schalter 510 und das Parallelverarbeitungsmodul 525 auf einer einzigen Halbleiterplattform.
  • In einer Ausführungsform beträgt die Signalisierungsrate jedes NVLink 410 20 bis 25 Gigabit/Sekunde und jede PPU 400 umfasst sechs NVLink 410 -Schnittstellen (wie in 5A gezeigt, sind fünf NVLink 410 -Schnittstellen für jede PPU 400 vorhanden). Jeder NVLink 410 bietet eine Datenübertragungsrate von 25 Gigabyte/Sekunde in jeder Richtung, wobei sechs Links 400 Gigabyte/Sekunde bereitstellen. Die NVLinks 410 können ausschließlich für die PPU-zu-PPU-Kommunikation verwendet werden, wie es in 5A dargestellt ist, oder für eine Kombination aus PPU-zu-PPU und PPU-zu-CPU, wenn die CPU 530 ebenfalls eine oder mehrere NVLink 410-Schnittstellen umfasst.
  • In einer Ausführungsform ermöglicht der NVLink 410 einen direkten Lade-/Speicher-/ atomaren Zugriff von der CPU 530 auf den Speicher 404 jeder PPU 400. In einer Ausführungsform unterstützt der NVLink 410 Kohärenzoperationen, so dass aus den Speichern 404 gelesene Daten in der Cache-Hierarchie der CPU 530 gespeichert werden können, was die Cache-Zugriffslatenz für die CPU 530 reduziert. In einer Ausführungsform umfasst der NVLink 410 eine Unterstützung für Adressübersetzungsdienste (ATS), wodurch die PPU 400 direkt auf Seitentabellen innerhalb der CPU 530 zugreifen kann. Einer oder mehrere der NVLinks 410 können ebenfalls so konfiguriert sein, dass sie in einem stromsparenden Modus arbeiten.
  • 5B veranschaulicht ein beispielhaftes System 565, in dem die verschiedene Architektur und/oder Funktionalität der verschiedenen vorherigen Ausführungsformen implementiert sein können. Das beispielhafte System 565 kann konfiguriert sein, um das Form- und Erscheinungs-gesteuerte 3D-Modellierungssystem 150, das in 1F und/oder das in 1E gezeigte Verfahren 170 und/oder das in 3C gezeigte Verfahren 360 zu implementieren.
  • Wie gezeigt, ist ein System 565 vorgesehen, das mindestens eine zentrale Verarbeitungseinheit 530 umfasst, die mit einem Kommunikationsbus 575 verbunden ist. Der Kommunikationsbus 575 kann direkt oder indirekt eine oder mehrere der folgenden Einrichtungen koppeln: Hauptspeicher 540, Netzwerkschnittstelle 535, CPU(s) 530, Anzeigeeinrichtung(en) 545, Eingabeeinrichtung(en) 560, einen Schalter 510 und ein Parallelverarbeitungssystem 525. Der Kommunikationsbus 575 kann unter Verwendung eines beliebigen geeigneten Protokolls implementiert werden und kann eine oder mehrere Verbindungen oder Busse darstellen, wie z. B. einen Adressbus, einen Datenbus, einen Steuerbus oder eine Kombination davon. Der Kommunikationsbus 575 kann einen oder mehrere Bus- oder Verbindungstypen umfassen, wie z. B. einen ISA-Bus (Industry Standard Architecture), einen EISA-Bus (Extended Industry Standard Architecture), einen VESA-Bus (Video Electronics Standards Association), einen PCI-Bus (Peripheral Component Interconnect), einen PCIe-Bus (Peripheral Component Interconnect Express), HyperTransport und/oder eine andere Art von Bus oder Verbindung. Bei einigen Ausführungsformen gibt es direkte Verbindungen zwischen den Komponenten. Zum Beispiel kann/können die CPU(s) 530 direkt mit dem Hauptspeicher 540 verbunden sein. Darüber hinaus kann (können) die CPU(s) 530 direkt mit dem Parallelverarbeitungssystem 525 verbunden sein. Bei einer direkten oder Punkt-zu-Punkt-Verbindung zwischen Komponenten kann der Kommunikationsbus 575 eine PCIe-Verbindung umfassen, um die Verbindung herzustellen. In diesen Beispielen muss kein PCI-Bus im System 565 vorhanden sein.
  • Obwohl die verschiedenen Blöcke von 5C als über den Kommunikationsbus 575 mit Leitungen verbunden dargestellt sind, ist dies nicht als Einschränkung gedacht und dient nur der Übersichtlichkeit. Bei einigen Ausführungsformen kann beispielsweise eine Präsentationskomponente, wie die Anzeigeeinrichtung(en) 545, als E/A-Komponente betrachtet werden, wie die Eingabeeinrichtung(en) 560 (z.B., wenn die Anzeige ein Touchscreen ist). Als weiteres Beispiel kann(können) die CPU(s) 530 und/oder das Parallelverarbeitungssystem 525 einen Speicher umfassen (z. B. kann der Hauptspeicher 540 zusätzlich zu dem Parallelverarbeitungssystem 525, den CPUs 530 und/oder anderen Komponenten eine Speichereinrichtung darstellen). Mit anderen Worten ist die Recheneinrichtung von 5B lediglich veranschaulichend. Es wird nicht zwischen Kategorien wie „Workstation“, „Server“, „Laptop“, „Desktop“, „Tablet“, „Client-Gerät“, „mobiles Gerät“, „Handheld-Gerät“, „Spielkonsole“, „elektronische Steuereinheit (ECU)“, „Virtual-Reality-System“ und/oder anderen Einrichtungs- oder Systemtypen unterschieden, da alle im Rahmen der Recheneinrichtung von 5C in Betracht gezogen werden.
  • Das System 565 umfasst ebenfalls einen Hauptspeicher 540. Eine Steuerlogik (Software) und Daten sind in dem Hauptspeicher 540 gespeichert, der die Form einer Vielzahl von computerlesbaren Medien annehmen kann. Bei den computerlesbaren Medien kann es sich um alle verfügbaren Medien handeln, auf die das System 565 zugreifen kann. Die computerlesbaren Medien können sowohl flüchtige als auch nicht-flüchtige Medien sowie entfernbare und nicht-entfernbare Medien umfassen. Beispielhaft und ohne Einschränkung können die computerlesbaren Medien Computerspeichermedien und Kommunikationsmedien umfassen.
  • Die Computerspeichermedien können sowohl flüchtige als ebenfalls nichtflüchtige Medien und/oder entfernbare und nicht entfernbare Medien umfassen, die in einem beliebigen Verfahren oder einer beliebigen Technologie zur Speicherung von Informationen, wie z. B. computerlesbare Anweisungen, Datenstrukturen, Programmmodule und/oder andere Datentypen, implementiert sind. Beispielsweise kann der Hauptspeicher 540 computerlesbare Anweisungen speichern (z. B., die ein oder mehrere Programme und/oder ein oder mehrere Programmelemente darstellen, wie z. B. ein Betriebssystem). Computerspeichermedien können ein RAM, ein ROM, ein EEPROM, einen Flash-Speicher oder andere Speichertechnologien, eine CD-ROM, eine Digital Versatile Disk (DVD) oder andere optische Plattenspeicher, Magnetkassetten, Magnetbänder, Magnetplattenspeicher oder andere magnetische Speichervorrichtungen oder jedes andere Medium umfassen, das zum Speichern der gewünschten Informationen verwendet werden kann und auf das das System 565 zugreifen kann, sind aber nicht darauf beschränkt. Wie es hier verwendet wird, umfasst der Begriff Computerspeichermedium nicht per se Signale.
  • Die Computerspeichermedien können computerlesbare Anweisungen, Datenstrukturen, Programmmodule und/oder andere Datentypen in einem modulierten Datensignal, wie z. B. einer Trägerwelle oder einem anderen Transportmechanismus, verkörpern und weisen beliebige Informationsübertragungsmedien auf. Der Begriff „moduliertes Datensignal“ kann sich auf ein Signal beziehen, bei dem eine oder mehrere seiner Eigenschaften so eingestellt oder verändert sind, dass Informationen in dem Signal kodiert sind. Beispielhaft und ohne Einschränkung können die Computerspeichermedien verdrahtete Medien, wie z. B. ein verdrahtetes Netzwerk oder eine direkt verdrahtete Verbindung, und drahtlose Medien, wie z. B. akustische, HF-, Infrarot- und andere drahtlose Medien, umfassen. Kombinationen der oben genannten Medien sollten ebenfalls in den Bereich der computerlesbaren Medien eingeschlossen werden.
  • Computerprogramme, wenn sie ausgeführt werden, ermöglichen dem System 565, verschiedene Funktionen auszuführen. Die CPU(s) 530 kann/können so konfiguriert sein, dass sie zumindest einige der computerlesbaren Anweisungen ausführt/ausführen, um eine oder mehrere Komponenten des Systems 565 zu steuern, um eine oder mehrere der hier beschriebenen Verfahren und/oder Prozesse durchzuführen. Die CPU(s) 530 kann/können jeweils einen oder mehrere Kerne umfassen (z. B. einen, zwei, vier, acht, achtundzwanzig, zweiundsiebzig usw.), die in der Lage sind, eine Vielzahl von Software-Threads gleichzeitig zu verarbeiten. Die CPU(s) 530 kann/können jeden Prozessortyp umfassen und je nach Art des implementierten Systems 565 unterschiedliche Prozessortypen umfassen (z. B. Prozessoren mit weniger Kernen für mobile Einrichtungen und Prozessoren mit mehr Kernen für Server). Je nach Art des Systems 565 kann der Prozessor beispielsweise ein Advanced RISC Machines (ARM)-Prozessor sein, der mit Reduced Instruction Set Computing (RISC) implementiert ist, oder ein x86-Prozessor, der mit Complex Instruction Set Computing (CISC) implementiert ist. Das System 565 kann eine oder mehrere CPUs 530 umfassen, zusätzlich zu einem oder mehreren Mikroprozessoren oder zusätzlichen Co-Prozessoren, wie z. B. mathematischen Co-Prozessoren.
  • Zusätzlich zu oder alternativ zu der/den CPU(s) 530 kann das Parallelverarbeitungsmodul 525 so konfiguriert sein, dass es zumindest einige der computerlesbaren Anweisungen ausführt, um eine oder mehrere Komponenten des Systems 565 zu steuern, um eines oder mehrere der hier beschriebenen Verfahren und/oder Prozesse durchzuführen. Das Parallelverarbeitungsmodul 525 kann vom System 565 zum Rendern von Grafiken (z. B. 3D-Grafiken) oder zur Durchführung von Allzweckberechnungen verwendet werden. Zum Beispiel kann das Parallelverarbeitungsmodul 525 für General-Purpose-Computing auf GPUs (GPGPU) verwendet werden. In Ausführungsformen kann/können die CPU(s) 530 und/oder das Parallelverarbeitungsmodul 525 diskret oder gemeinsam eine beliebige Kombination der Verfahren, Prozesse und/oder Abschnitte davon ausführen.
  • Das System 565 umfasst ebenfalls die Eingabeeinrichtung(en) 560, das Parallelverarbeitungssystem 525 und die Anzeigeeinrichtung(en) 545. Die Anzeigeeinrichtung(en) 545 kann (können) eine Anzeige (z. B. einen Monitor, einen Touchscreen, einen Fernsehbildschirm, ein Heads-up-Display (HUD), andere Anzeigetypen oder eine Kombination davon), Lautsprecher und/oder andere Präsentationskomponenten umfassen. Die Anzeigeeinrichtung(en) 545 kann/können Daten von anderen Komponenten (z. B. dem Parallelverarbeitungssystem 525, der/den CPU(s) 530 usw.) empfangen und die Daten ausgeben (z. B. als Bild, Video, Ton usw.).
  • Die Netzwerkschnittstelle 535 kann es dem System 565 ermöglichen, logisch mit anderen Einrichtungen gekoppelt zu sein, einschließlich der Eingabeeinrichtungen 560, der Anzeigeeinrichtung(en) 545 und/oder anderen Komponenten, von denen einige in das System 565 eingebaut (z. B. integriert) sein können. Dargestellte Eingabegeräte 560 weisen ein Mikrofon, eine Maus, eine Tastatur, einen Joystick, ein Gamepad, eine Spielsteuerung, eine Satellitenschüssel, einen Scanner, einen Drucker, eine drahtlose Einrichtung usw. auf. Die Eingabeeinrichtungen 560 können eine natürliche Benutzerschnittstelle (NUI) bereitstellen, die Luftgesten, Sprache oder andere physiologische Eingaben verarbeitet, die von einem Benutzer erzeugt werden. In einigen Fällen können die Eingaben an ein entsprechendes Netzwerkelement zur weiteren Verarbeitung übertragen werden. Eine NUI kann eine beliebige Kombination aus Spracherkennung, Stifterkennung, Gesichtserkennung, biometrischer Erkennung, Gestenerkennung sowohl auf dem Bildschirm als ebenfalls neben dem Bildschirm, Luftgesten, Kopf- und Augenverfolgung und Berührungserkennung (wie unten ausführlicher beschrieben) in Verbindung mit einer Anzeige des Systems 565 implementieren. Das System 565 kann Tiefenkameras, wie z. B. stereoskopische Kamerasysteme, Infrarotkamerasysteme, RGB-Kamerasysteme, eine Touchscreen-Technologie und Kombinationen davon, zur Gestenerkennung und - erfassung umfassen. Zusätzlich kann das System 565 Beschleunigungsmesser oder Gyroskope umfassen (z. B. als Teil einer Trägheitsmesseinheit (IMU)), die eine Bewegungserkennung ermöglichen. Bei einigen Beispielen kann die Ausgabe der Beschleunigungsmesser oder Gyroskope von dem System 565 verwendet werden, um immersive Augmented Reality oder Virtual Reality darzustellen.
  • Darüber hinaus kann das System 565 über eine Netzwerkschnittstelle 535 zu Kommunikationszwecken mit einem Netzwerk (z. B. einem Telekommunikationsnetzwerk, einem lokalen Netzwerk (LAN), einem drahtlosen Netzwerk, einem Weitverkehrsnetzwerk (WAN) wie dem Internet, einem Peer-to-Peer-Netzwerk, einem Kabelnetzwerk oder Ähnlichem) verbunden sein. Das System 565 kann ein verteiltes Netzwerk und/oder eine Cloud-Computing-Umgebung umfassen.
  • Die Netzwerkschnittstelle 535 kann einen oder mehrere Empfänger, Sender und/oder Transceiver umfassen, die es dem System 565 ermöglichen, mit anderen Recheneinrichtungen über ein elektronisches Kommunikationsnetzwerk zu kommunizieren, einschließlich einer drahtgebundenen und/oder drahtlosen Kommunikation. Die Netzwerkschnittstelle 535 kann Komponenten und Funktionen umfassen, um die Kommunikation über eine beliebige Anzahl verschiedener Netzwerke zu ermöglichen, wie z. B. drahtlose Netzwerke (z. B. Wi-Fi, Z-Wave, Bluetooth, Bluetooth LE, ZigBee usw.), verdrahtete Netzwerke (z. B. Kommunikation über Ethernet oder InfiniBand), Weitverkehrsnetzwerke mit geringer Leistung (z. B. LoRaWAN, SigFox usw.) und/oder das Internet.
  • Das System 565 kann ebenfalls eine Sekundärspeicherung umfassen (nicht gezeigt). Die Sekundärspeicherung umfasst beispielsweise ein Festplattenlaufwerk und/oder ein Wechselspeicherlaufwerk auf, das ein Diskettenlaufwerk, ein Magnetbandlaufwerk, ein Compact-Disk-Laufwerk, ein Digital-Versatile-Disk(DVD)-Laufwerk, eine Aufnahmeeinrichtung oder einen Universal Serial Bus (USB)-Flash-Speicher darstellt. Das Wechselspeicherlaufwerk liest in bekannter Weise von und/oder schreibt auf einen Wechselspeicher. Das System 565 kann ebenfalls eine festverdrahtete Stromversorgung, eine Batteriestromversorgung oder eine Kombination davon umfassen (nicht dargestellt). Die Stromversorgung kann das System 565 mit Strom versorgen, um den Betrieb der Komponenten des Systems 565 zu ermöglichen.
  • Jedes der vorstehenden Module und/oder Vorrichtungen kann sogar auf einer einzigen Halbleiterplattform gelegen sein, um das System 565 zu bilden. Alternativ können die verschiedenen Module ebenfalls separat oder in verschiedenen Kombinationen von Halbleiterplattformen nach den Wünschen des Benutzers angeordnet sein.
  • Während verschiedene Ausführungsformen oben beschrieben wurden, sollte zu verstehen sein, dass sie lediglich als Beispiel und nicht als Einschränkung dargestellt wurden. Somit sollte die Breite und der Umfang einer bevorzugten Ausführungsform nicht durch eine der oben beschriebenen beispielhaften Ausführungsformen begrenzt sein, sondern nur in Übereinstimmung mit den folgenden Ansprüchen und deren Äquivalenten definiert sein.
  • Beispielhafte Netzwerkumgebungen Netzwerkumgebungen, die für die Implementierung von Ausführungsformen der Offenbarung geeignet sind, können ein oder mehrere Client-Vorrichtungen, Server, Network Attached Storage (NAS), andere Backend-Vorrichtungen und/oder andere Vorrichtungstypen umfassen. Die Client-Vorrichtungen, Server und/oder andere Vorrichtungstypen (z.B. jede Vorrichtung) können auf einer oder mehreren Instanzen des Verarbeitungssystems 500 von 5A und/oder des beispielhaften Systems 565 von 5B implementiert sein - z.B. kann jede Vorrichtung ähnliche Komponenten, Merkmale und/oder Funktionalität des Verarbeitungssystems 500 und/oder des beispielhaften Systems 565 umfassen.
  • 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 aufweisen. Beispielsweise kann das Netzwerk ein oder mehrere Wide Area Networks (WANs), ein oder mehrere Local Area Networks (LANs), ein oder mehrere öffentliche Netzwerke wie das Internet und/oder ein öffentliches Telefonwählnetz (PSTN) und/oder ein oder mehrere private Netzwerke umfassen. Wenn das Netzwerk ein drahtloses Telekommunikationsnetzwerk aufweist, können Komponenten wie eine Basisstation, ein Kommunikationsturm oder sogar Zugangspunkte (sowie auch andere Komponenten) eine drahtlose Verbindung bereitstellen.
  • Kompatible Netzwerkumgebungen können eine oder mehrere Peerto-Peer-Netzwerkumgebungen - in diesem Fall darf ein Server nicht in eine Netzwerkumgebung eingebunden sein - und eine oder mehrere Client-Server-Netzwerkumgebungen aufweisen - in diesem Fall können ein oder mehrere Server in eine Netzwerkumgebung eingebunden sein. Bei Peer-to-Peer-Netzwerkumgebungen kann die hier beschriebene Funktionalität in Bezug auf einen oder mehrere Server auf einer beliebigen Anzahl von Client-Vorrichtungen implementiert sein.
  • Bei mindestens einer Ausführungsform kann eine Netzwerkumgebung eine oder mehrere Cloud-basierte Netzwerkumgebungen, eine verteilte Computerumgebung, eine Kombination davon usw. aufweisen. Eine Cloud-basierte Netzwerkumgebung kann eine Framework-Schicht, einen Job-Scheduler, einen Ressourcenmanager und ein verteiltes Dateisystem aufweisen, das auf einem oder mehreren Servern implementiert ist, die einen oder mehrere Core-Netzwerk-Server und/oder Edge-Server umfassen können. Eine Framework-Schicht kann ein Framework zur Unterstützung der Software einer Softwareschicht und/oder einer oder mehrerer Anwendungen) einer Anwendungsschicht aufweisen. Die Software oder die Anwendung(en) können jeweils webbasierte Service-Software oder -Anwendungen aufweisen. Bei Ausführungsformen kann/können eines oder mehrere der Client-Vorrichtungen die webbasierte Dienstsoftware oder Anwendungen nutzen (z.B. durch Zugriff auf die Dienstsoftware und/oder Anwendungen über eine oder mehrere Anwendungsprogrammierschnittstellen (APIs)). Die Framework-Schicht kann eine Art freies und quelloffenes Software-Framework für Webanwendungen sein, das z.B. ein verteiltes Dateisystem für die Verarbeitung großer Datenmengen (z.B. „Big Data“) verwenden kann, ist aber nicht darauf beschränkt.
  • Eine Cloud-basierte Netzwerkumgebung kann Cloud-Computing und/oder Cloud-Speicherung bereitstellen, die eine beliebige Kombination der hier beschriebenen Rechen- und/oder Datenspeicherfunktionen (oder einen oder mehrere Teile davon) ausführt. Jede dieser verschiedenen Funktionen kann über mehrere Standorte von zentralen oder Core-Servern aus verteilt sein (z.B. von einem oder mehreren Rechenzentren, die über einen Staat, eine Region, ein Land, den Globus usw. verteilt sein können)e. Wenn sich eine Verbindung zu einem Benutzer (z.B. ein Client-Vorrichtung) relativ nahe bei einem oder mehreren Edge-Servern befindet, kann/können ein Core-Server zumindest einen Teil der Funktionalität dem/den Edge-Server(n) zuweisen. Eine Cloud-basierte Netzwerkumgebung kann privat (z.B. auf eine einzelne Organisation beschränkt), öffentlich (z.B. für viele Organisationen verfügbar) und/oder eine Kombination davon (z.B. eine hybride Cloud-Umgebung) sein.
  • Die Client-Vorrichtung(en) kann (können) zumindest einige der Komponenten, Merkmale und Funktionen des beispielhaften Verarbeitungssystem 500 von 5B und/oder des beispielhaften Systems 565 von 5C umfassen. Als Beispiel und nicht als Einschränkung kann eine Client-Vorrichtung ausgestaltet sein als ein Personal Computer (PC), ein Laptop-Computer, eine mobile Vorrichtung, ein Smartphone, ein Tablet-Computer, eine Smart-Uhr, ein tragbarer Computer, ein Personal Digital Assistant (PDA), ein MP3-Player, ein Virtual-Reality-Headset, ein Global Positioning System (GPS) oder - Vorrichtung, ein Video-Player, eine Videokamera, eine Überwachungsvorrichtung oder -system, ein Fahrzeug, ein Boot, ein fliegendes Schiff, eine virtuelle Maschine, eine Drohne, ein Roboter, eine tragbare Kommunikationsvorrichtung, eine Krankenhausvorrichtung, eine Spielevorrichtung oder -system, ein Unterhaltungssystem, ein Fahrzeug-Computersystem, eine Steuervorrichtung für ein eingebettetes System, eine Fernbedienung, ein Gerät, eine Vorrichtung der Unterhaltungselektronik, eine Workstation, eine Edge-Vorrichtung, eine beliebige Kombination dieser abgegrenzten Vorrichtungen oder eine andere geeignete Vorrichtung.
  • Maschinenlernen
  • Tiefe neuronale Netzwerke (DNNs), die auf Prozessoren entwickelt wurden, wie beispielsweise der PPU 400, wurden für diverse Verwendungsfälle, von selbstfahrenden Wagen bis schnellerer Wirkstoffentwicklung, von automatischer Bildbeschriftung in Online-Bilddatenbanken bis smarter Echtzeit-Sprachenübersetzung in Video-Chat-Anwendungen verwendet. Deep-Learning ist eine Technik, welche die neuronalen Lernverfahren des menschlichen Gehirns modelliert, die kontinuierlich lernt, kontinuierlich immer smarter wird und genauere Ergebnisse mit der Zeit schneller liefert. Ein Kind wird anfangs von einem Erwachsenen unterrichtet, verschiedene Formen korrekt zu identifizieren und zu klassifizieren, um schließlich imstande zu sein, Formen ohne irgendeine Nachhilfe zu identifizieren. Auf ähnliche Weise muss ein Tiefen-Learning-System oder ein neuronales Lernsystem in Objekterkennung und Klassifizierung trainiert werden, damit es smarter und effizienter beim Identifizieren von Grundobjekten, verdeckten Objekte usw. wird, während ebenfalls Objekten Kontext zugewiesen wird. Beispielsweise wird ein neuronales Lernsystem zur Orientierungspunkt-Lokalisierung und/oder Attributklassifizierung trainiert
  • Auf der einfachsten Ebene schauen Neuronen im menschlichen Gehirn auf verschiedene Eingaben, die empfangen werden, wobei Wichtigkeitsgrade jeder dieser Eingaben zugewiesen werden und eine Ausgabe an andere Neuronen weitergeleitet wird, um auf diese zu wirken. Ein künstliches Neuron oder ein Perzeptron ist das grundlegendste Modell eines neuronale Netzwerks. In einem Beispiel kann ein Perzeptron eine oder mehrere Eingaben empfangen, die verschiedene Merkmale eines Objekts darstellen, die das Perzeptron trainiert wird, zu erkennen und zu klassifizieren, und jedem dieser Merkmale wird ein bestimmtes Gewicht basierend auf der Wichtigkeit des Merkmals beim Definieren der Gestalt eines Objekts zugewiesen.
  • Ein Modell eines tiefen neuronale Netzwerks (DNN) umfasst mehrere Schichten von vielen verbundenen Knoten (z.B. Perzeptronen, Boltzmann-Maschinen, radiale Basisfunktionen, Faltungsschichten usw.), die mit enormen Mengen an Eingabedaten trainiert werden können, um komplexe Probleme mit hoher Genauigkeit schnell zu lösen. In einem Beispiel gliedert eine erste Schicht des DNN-Modells ein Eingabebild eines Automobils in verschiedene Abschnitte auf und sucht nach Grundmustern, wie beispielsweise Linien und Winkel. Die zweite Schicht setzt die Linien zusammen, um nach Mustern höherer Ebene, wie beispielsweise Rädern, Windschutzscheiben und Spiegeln, zu suchen. Die nächste Schicht kennzeichnet den Typ des Fahrzeugs und die letzten paar Schichten erzeugen ein Etikett für das Eingabebild, welches das Modell einer speziellen Automobilmarke kennzeichnet.
  • Sobald das DNN trainiert ist, kann das DNN eingesetzt und verwendet werden, um Objekte oder Muster in einem als Inferenz bekannten Verfahren zu identifizieren und zu klassifizieren. Beispiele von Inferenz (der Prozess, durch den ein DNN nützliche Information von einer gegebenen Eingabe extrahiert) umfassen ein Identifizieren handgeschriebener Zahlen auf Schecks, die in Geldausgabe-Maschinen eingezahlt werden, ein Identifizieren von Bildern von Freunden in Photos, Liefern von Filmempfehlungen an über fünfzig Millionen Nutzer, Identifizieren und Klassifizieren unterschiedlicher Typen von Automobilen, Fußgängern und Straßengefahren in fahrerlosen Wagen oder Übersetzen von menschlicher Sprache in Echtzeit.
  • Während des Trainings strömen Daten durch das DNN in einer Vorwärtspropagierungsphase, bis eine Vorhersage erzeugt wird, die ein Etikett angibt, das der Eingabe entspricht. Wenn das neuronale Netzwerk die Eingabe nicht korrekt kennzeichnet, dann werden Fehler zwischen dem korrekten Etikett und dem vorhergesagten Etikett analysiert und die Gewichte werden für jedes Merkmal während einer Rückwärtspropagierungsphase eingestellt, bis das DNN die Eingabe und andere Eingaben in einem Trainingsdatensatz korrekt kennzeichnet. Das Training komplexer neuronaler Netzwerke erfordert enorme Mengen an paralleler Rechenleistung, die Gleitkomma-Multiplikationen und Gleitkomma-Additionen umfassen, die von der PPU 400 unterstützt werden. Inferenzieren ist weniger rechenintensiv als Training, das ein Latenz-empfindliches Verfahren ist, wo ein trainiertes neuronale Netzwerk auf neue Eingaben angewandt wird, die es zuvor nicht gesehen hat, um Bilder zu klassifizieren, Emotionen zu erfassen, Empfehlungen zu identifizieren, Sprache zu erkennen und zu übersetzen, und im Allgemeinen neue Informationen abzuleiten.
  • Neuronale Netzwerke stützen sich sehr auf Matrixrechenoperationen und komplexe mehrschichtige Netzwerke erfordern enorme Mengen an Gleitkomma-Leistung und Bandbreite für sowohl Effizienz als auch Geschwindigkeit. Mit Tausenden von Verarbeitungskernen, die für Matrixrechenoperationen optimiert sind und einige zehn bis hunderte von TFLOPS von Leistung liefern, ist die PPU 400 eine Rechenplattform, die imstande ist, Leistung zu liefern, die für tiefe neuronale Netzwerk-basierte künstliche Intelligenz und Maschinenlernanwendungen erforderlich ist.
  • Des Weiteren können Bilder, die unter Anwendung einer oder mehrerer der hier offenbarten Techniken erzeugt wurden, zum Trainieren, Prüfen oder Zertifizieren von DNNs verwendet werden, die zur Erkennung von Objekten und Umgebungen in der realen Welt eingesetzt werden. Derartige Bilder können Szenen von Straßen, Fabriken, Gebäuden, städtischen Szenarien, ländlichen Szenarien, Menschen, Tieren und anderen physischen Objekten oder realen Umgebungen enthalten. Derartige Bilder können verwendet werden, um in Maschinen oder Robotern eingesetzte DNNs zu trainieren, zu prüfen oder zu zertifizieren, um physische Objekte in der realen Welt zu manipulieren, zu bearbeiten oder zu verändern. Außerdem können derartige Bilder verwendet werden, um in autonomen Fahrzeugen eingesetzte DNNs zu trainieren, zu prüfen oder zu zertifizieren, damit sie die Fahrzeuge durch die reale Welt navigieren und bewegen. Darüber hinaus können Bilder, die unter Anwendung einer oder mehrerer der hier offenbarten Techniken erzeugt wurden, verwendet werden, um den Benutzern derartiger Maschinen, Robotern und Fahrzeugen Informationen zu vermitteln.
  • 5C veranschaulicht Komponenten eines beispielhaften Systems 555, das verwendet werden kann, um maschinelles Lernen zu trainieren und zu nutzen, gemäß mindestens einer Ausführungsform. Wie erläutert wird, können verschiedene Komponenten durch verschiedene Kombinationen von Rechenvorrichtungen und Ressourcen oder ein einzelnes Rechensystem bereitgestellt werden, das von einer einzelnen Einheit oder mehreren Einheiten gesteuert werden kann. Außerdem 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, der einer Anbieterumgebung 506 zugeordnet ist, angewiesen werden, während in mindestens einer Ausführungsform das Training durch einen Kunden oder einen anderen Benutzer angefordert werden könnte, der über eine Client-Vorrichtung 502 oder eine andere derartige Ressource Zugriff auf eine Anbieterumgebung hat. In mindestens einer Ausführungsform können Trainingsdaten (oder durch ein trainiertes neuronales Netzwerk zu analysierende Daten) durch einen Anbieter, einen Benutzer oder einen Drittanbieter 524 von Inhalten bereitgestellt werden. In mindestens einer Ausführungsform kann die Client-Vorrichtung 502 ein Fahrzeug oder Objekt sein, das zum Beispiel stellvertretend für einen Benutzer zu navigieren ist, das Anfragen übermitteln und/oder Anweisungen empfangen kann, welche die Navigation einer Vorrichtung unterstützen.
  • In mindestens einer Ausführungsform können Anfragen über mindestens ein Netzwerk 504 übermittelt werden, um durch eine Anbieterumgebung 506 empfangen zu werden. In mindestens einer Ausführungsform kann eine Client-Vorrichtung eine beliebige geeignete elektronische und/oder Rechenvorrichtung sein, die es einem Benutzer ermöglicht, derartige Anfragen zu erzeugen und zu senden, wie beispielsweise unter anderem Desktop-Computer, Notebook-Computer, Computerserver, Smartphones, Tablet-Computer, Spielkonsolen (tragbar oder anderweitig), Computerprozessoren, Rechenlogik und Set-Top-Boxen. Das/die Netzwerk(e) 504 kann/können ein beliebiges geeignetes Netzwerk zum Übertragen einer Anfrage oder anderer derartiger Daten umfassen, wie Internet, ein Intranet, ein Ethernet, ein Mobilfunknetzwerk, ein Lokalbereichsnetzwerk (LAN), ein Weitbereichsnetzwerk (WAN), ein persönliches Netzwerk (PAN), ein Ad-hoc-Netzwerk mit direkten drahtlosen Verbindungen zwischen Peers und so weiter.
  • In mindestens einer Ausführungsform können Anfragen an einer Schnittstellenschicht 508 empfangen werden, die in diesem Beispiel Daten an einen Trainings- und Inferenzmanager 532 weiterleiten kann. Der Trainings- und Inferenzmanager 532 kann ein System oder ein Dienst sein, der Hardware und Software zum Verwalten von Anfragen und Bedienen entsprechender Daten oder Inhalte beinhaltet; in mindestens einer Ausführungsform kann der Trainings- und Inferenzmanager 532 eine Anfrage zum Trainieren eines neuronalen Netzwerks empfangen und kann Daten für eine Anfrage an ein Trainingsmodul 512 bereitstellen. 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 Anfrage spezifiziert ist, und kann ein Modell unter Verwendung relevanter Trainingsdaten trainieren. In mindestens einer Ausführungsform können Trainingsdaten ein Batch von Daten sein, die in einem Trainingsdaten-Repositorium 514 gespeichert sind, von der Client-Vorrichtung 502 empfangen oder von einem Drittanbieter 524 erhalten werden. In mindestens einer Ausführungsform kann das Trainingsmodul 512 für Trainingsdaten verantwortlich sein. Ein neuronales Netzwerk kann ein beliebiges geeignetes Netzwerk sein, wie beispielsweise ein rekurrentes neuronales Netzwerk (recurrent neural network; RNN) oder ein neuronales Faltungsnetzwerk (convolutional neural network; CNN). Sobald ein neuronales Netzwerk trainiert und erfolgreich bewertet wurde, kann ein trainiertes neuronales Netzwerk beispielsweise in einem Modell-Repositorium 516 gespeichert werden, das unterschiedliche Modelle oder Netzwerke für Benutzer, Anwendungen oder Dienste usw. speichern kann. In mindestens einer Ausführungsform können mehrere Modelle für eine einzelne Anwendung oder Einheit vorhanden sein, die basierend auf einer Reihe unterschiedlicher Faktoren genutzt werden können.
  • In mindestens einer Ausführungsform kann zu einem späteren Zeitpunkt eine Anfrage von der Client-Vorrichtung 502 (oder einer anderen derartigen Vorrichtung) nach Inhalten (z.B. Pfadbestimmungen) oder Daten empfangen werden, die mindestens teilweise durch ein trainiertes neuronales Netzwerk bestimmt oder beeinflusst werden. Diese Anfrage kann zum Beispiel Eingabedaten umfassen, die unter Verwendung eines neuronalen Netzwerks verarbeitet werden sollen, um eine oder mehrere Inferenzen oder andere Ausgabewerte, Klassifikationen oder Vorhersagen zu erhalten; oder für mindestens eine Ausführungsform können Eingabedaten durch die Schnittstellenschicht 508 empfangen und an das Inferenzmodul 518 geleitet werden, obwohl ebenfalls ein anderes System oder ein anderer Dienst verwendet werden kann. In mindestens einer Ausführungsform kann das Inferenzmodul 518 ein geeignetes trainiertes Netzwerk, wie beispielsweise ein trainiertes tiefes neuronales Netzwerk (DNN), wie hier erläutert, aus dem Modell-Repositorium 516 erhalten, wenn es nicht bereits lokal in dem Inferenzmodul 518 gespeichert ist. Das Inferenzmodul 518 kann Daten als Eingabe in ein trainiertes Netzwerk bereitstellen, das dann als Ausgabe eine oder mehrere Inferenzen erzeugen kann. Dies kann beispielsweise eine Klassifikation einer Instanz von Eingabedaten umfassen. In mindestens einer Ausführungsform können Inferenzen dann an die Client-Vorrichtung 502 zur Anzeige für einen Benutzer oder zu anderer Kommunikation mit ihm übertragen werden. In mindestens einer Ausführungsform können Kontextdaten für einen Benutzer ebenfalls in einem Benutzerkontextdaten-Repositorium 522 gespeichert sein, das Daten über einen Benutzer umfassen kann, die als Eingabe in ein Netzwerk beim Erzeugen von Inferenzen oder 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 umfassen können, ebenfalls in einer lokalen Datenbank 534 zum Verarbeiten zukünftiger Anfragen gespeichert sein. In mindestens einer Ausführungsform kann ein Benutzer Kontoinformationen oder andere Informationen verwenden, um auf Ressourcen oder Funktionalität einer Anbieterumgebung zuzugreifen. In mindestens einer Ausführungsform können, falls zulässig und verfügbar, Benutzerdaten ebenfalls gesammelt und verwendet werden, um Modelle weiter zu trainieren, um genauere Inferenzen für zukünftige Anfragen bereitzustellen. In mindestens einer Ausführungsform können Anfragen über eine Benutzerschnittstelle an einer auf der Client-Vorrichtung 502 ausgeführten Anwendung 526 für maschinelles Lernen empfangen und Ergebnisse über dieselbe Schnittstelle angezeigt werden. Eine Client-Vorrichtung kann Ressourcen wie einen Prozessor 528 und einen Speicher 562 zum Erzeugen einer Anfrage und zum Verarbeiten von Ergebnissen oder einer Antwort sowie mindestens ein Datenspeicherelement 552 zum Speichern von Daten für die Anwendung 526 für maschinelles Lernen umfassen.
  • In mindestens einer Ausführungsform ist ein Prozessor 528 (oder ein Prozessor des Trainingsmoduls 512 oder des Inferenzmoduls 518) eine zentrale Verarbeitungseinheit (CPU). Wie erwähnt, können Ressourcen in derartigen Umgebungen jedoch GPUs nutzen, um Daten für mindestens bestimmte Arten von Anfragen zu verarbeiten. Mit Tausenden von Kernen sind GPUs, wie beispielsweise die PPU 400, ausgestaltet, um erhebliche parallele Arbeitslasten zu bewältigen, und sind daher beim tiefen Lernen zum Trainieren neuronaler Netzwerke und zum Erzeugen von Vorhersagen weit verbreitet. Während die Verwendung von GPUs für Offline-Builds ein schnelleres Training größerer und komplexerer Modelle ermöglicht hat, impliziert das Erzeugen von Vorhersagen offline, dass entweder Eingabemerkmale zur Anfragezeit nicht verwendet werden können oder Vorhersagen für alle Permutationen von Merkmalen erzeugt und in einer Lookup-Tabelle gespeichert sein müssen, um Echtzeit-Anfragen zu bedienen. Wenn ein Deep-Learning-Framework einen CPU-Modus unterstützt und ein Modell klein und einfach genug ist, um einen Feed-Forward auf einer CPU mit einer angemessenen Latenz durchzuführen, 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 vorgenommen werden. Wenn ein CPU-Vorgehensweise 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 das Ausführen eines Dienstes, der einen Laufzeitalgorithmus auf eine GPU auslagert, jedoch erfordern, dass dieser anders als ein CPUbasierter Dienst ausgestaltet 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 Drittanbieter 524 für Inhalte gestreamt und durch den Drittanbieter 524 für Inhalte, 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 durchgeführt werden. In mindestens einer Ausführungsform wird ein Satz von Trainingsdaten 514 (z.B. klassifizierte oder bezeichnete Daten) als Eingabe bereitgestellt, um als Trainingsdaten zu fungieren.
  • In mindestens einer Ausführungsform können Trainingsdaten Instanzen mindestens eines Objekttyps umfassen, für den ein neuronales Netzwerk trainiert werden soll, sowie Informationen, die diesen Objekttyp identifizieren. In mindestens einer Ausführungsform können die Trainingsdaten einen Satz von Bildern umfassen, die jeweils eine Darstellung eines Objekttyps umfassen, wobei jedes Bild außerdem eine Bezeichnung, Metadaten, eine Klassifikation oder ein anderes Informationselement beinhaltet, die einen Objekttyp identifizieren, der in einem jeweiligen Bild dargestellt ist oder diesen zugeordnet ist. Als Trainingsdaten können ebenfalls verschiedene andere Arten von Daten verwendet werden, die Textdaten, Audiodaten, Videodaten usw. umfassen 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 bzw. der Hardware und Software beinhaltet, wie beispielsweise eine oder mehrere Rechenvorrichtungen, die eine Trainingsanwendung ausführen, um ein neuronales Netzwerk (oder ein anderes Modell oder einen anderen Algorithmus usw.) zu trainieren. In mindestens einer Ausführungsform empfängt das Trainingsmodul 512 eine Anweisung oder Anfrage, die einen zum Training zu verwendenden Modelltyp angibt, in mindestens einer Ausführungsform kann ein Modell ein beliebiges geeignetes statistisches Modell, ein geeignetes Netzwerk oder ein geeigneter Algorithmus sein, die für derartige Zwecke nützlich sind, die ein künstliches neuronales Netzwerk, einen Deep-Learning-Algorithmus, einen lernenden Klassifikator, ein Bayes-Netzwerk usw. umfassen können. In mindestens einer Ausführungsform kann das Trainingsmodul 512 ein Anfangsmodell oder ein anderes nicht trainiertes Modell aus einem geeigneten Repositorium 516 auswählen und Trainingsdaten 514 nutzen, um ein Modell zu trainieren, um dadurch ein trainiertes Modell (z.B. trainiertes tiefes neuronales Netzwerk) zu erzeugen, das verwendet werden kann, um ähnliche Datentypen zu klassifizieren oder andere derartige Inferenzen zu erzeugen. In mindestens einer Ausführungsform, bei der keine Trainingsdaten verwendet werden, kann dennoch ein geeignetes Anfangsmodell für das Training an Eingabedaten pro Trainingsmodul 512 ausgewählt werden.
  • In mindestens einer Ausführungsform kann ein Modell auf viele unterschiedliche Weisen trainiert werden, was teilweise von einem ausgewählten Modelltyp abhängen kann. In mindestens einer Ausführungsform kann einem Algorithmus für maschinelles Lernen ein Satz von Trainingsdaten bereitgestellt 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 Lernalgorithmus Muster in Trainingsdaten, die Eingabedatenattribute auf ein Ziel abbilden, eine vorherzusagende Antwort, und ein Modell für maschinelles Lernen, das diese Muster erfasst, wird ausgegeben. In mindestens einer Ausführungsform kann dann ein Modell für maschinelles Lernen verwendet werden, um Vorhersagen über neue Daten zu erhalten, für die kein Ziel festgelegt ist.
  • In mindestens einer Ausführungsform kann der Trainings- und Inferenzmanager 532 aus einem Satz von Modellen für maschinelles Lernen auswählen, die binäre Klassifikation, Mehrklassenklassifikation, generative und Regressionsmodellen umfassen. In mindestens einer Ausführungsform kann ein zu verwendender Modelltyp mindestens teilweise von einem vorherzusagenden Zieltyp abhängen.
  • Graphikverarbeitungs-Pipeline
  • In einer Ausführungsform umfasst die PPU 400 eine Graphikverarbeitungseinheit (GPU). Die PPU 400 ist konfiguriert, um Befehle zu empfangen, die Shader-Programme zur Verarbeitung von Graphikdaten spezifizieren. Graphikdaten können als ein Satz von Primitiven, wie beispielsweise Punkte, Linien, Dreiecke, Vierecke, Dreieckstreifen und dergleichen definiert sein. Typischerweise umfasst eine Primitive Daten, die eine Anzahl von Vertices für die Primitive (z.B., in einem Modellraum-Koordinatensystem) sowie auch Attribute spezifizieren, die jedem Vertex der Primitiven zugeordnet sind. Die PPU 400 kann konfiguriert sein, um die Graphikprimitive zu verarbeiten, um ein 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 beispielsweise 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 dem Treiber-Kernel aus, der die Modelldaten anfragt, die zu rendern und anzuzeigen sind. Der Treiber-Kernel liest die Modelldaten und schreibt Befehle an den einen oder mehrere Ströme, um Operationen durchzuführen, um die Modelldaten zu verarbeiten. Die Befehle können unterschiedliche Shader-Programme referenzieren, die auf den Verarbeitungseinheiten innerhalb der PPU 400 zu implementieren sind, die einen oder mehrere eines Vertex-Shader, Hull-Shader, Domain-Shader, Geometrie-Shader und eines Pixel-Shader umfassen können. Beispielsweise können eine oder mehrere der Verarbeitungseinheiten konfiguriert sein, um 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, um unterschiedliche Shader-Programme nebenläufig auszuführen. Beispielsweise kann eine erste Untermenge von Verarbeitungseinheiten konfiguriert sein, ein Vertex-Shader-Programm auszuführen, während eine zweite Untermenge von Verarbeitungseinheiten konfiguriert sein kann, ein Pixel-Shader-Programm auszuführen. Die erste Untermenge von Verarbeitungseinheiten verarbeitet Vertexdaten, um verarbeitete Vertexdaten zu erzeugen, und schreibt die verarbeiteten Vertexdaten in den L2-Cache-Speicher 460 und/oder den Speicher 404. Nachdem die verarbeiteten Vertexdaten gerastert sind (z.B. von dreidimensionalen Daten in zweidimensionale Daten im Bildschirmraum transformiert sind), um Fragmentdaten zu erzeugen, führt die zweite Untermenge von Verarbeitungseinheiten einen Pixel-Shader aus, um verarbeitete Fragmentdaten zu erzeugen, die dann mit anderen verarbeiteten Fragmentdaten gemischt werden und in den Frame-Puffer im Speicher 404 geschrieben werden. Das Vertex-Shader-Programm und das Pixel-Shader-Programm können nebenläufig ausgeführt werden, wobei unterschiedliche Daten von der gleichen Szene in einem Pipeline-Verfahren verarbeitet werden, bis alle der Modelldaten für die Szene gerenderten zu dem Frame-Puffer gerendert wurden. Dann wird der Inhalt des Frame-Puffers an einen Anzeigencontroller zur Anzeige auf einer Anzeigevorrichtung übertragen.
  • 6A ist ein Konzeptdiagramm einer von der PPU 400 von 4 implementierten Graphikverarbeitungs-Pipeline 600 gemäß einer Ausführungsform. Die Graphikverarbeitungs-Pipeline 600 ist ein abstraktes Ablaufdiagramm der Verarbeitungsschritte, die implementiert werden, um 2D-Computer-erzeugte Bilder von 3D-Geometriedaten zu erzeugen. Wie wohlbekannt ist, können Pipeline-Architekturen Operationen mit langer Latenz effizienter durch Aufteilen der Operation in eine Mehrzahl von Stufen durchführen, wobei der Ausgang jeder Stufe mit dem Eingang der nächsten aufeinanderfolgenden Stufe gekoppelt ist. Somit empfängt die Graphikverarbeitungs-Pipeline 600 Eingangsdaten 601, die von einer Stufe zu der nächsten Stufe der Graphikverarbeitungs-Pipeline 600 übertragen werden, um Ausgangsdaten 602 zu erzeugen. In einer Ausführungsform kann die Graphikverarbeitungs-Pipeline 600 eine Graphikverarbeitungs-Pipeline darstellen, die durch die OpenGL® API definiert ist. Als eine Option kann die Graphikverarbeitungs-Pipeline 600 im Kontext der Funktionalität und Architektur der vorherigen Figuren und/oder etwaiger nachfolgender(n) Figur(en) implementiert werden.
  • Wie in 6A gezeigt, umfasst die Graphikverarbeitungs-Pipeline 600 eine Pipeline-Architektur, die eine Anzahl von Stufen umfasst. Die Stufen umfassen, sind jedoch nicht beschränkt auf, eine Datenzusammenstellungstufe 610, eine Vertex-Shading-Stufe 620, eine Primitiven-Zusammenstellungstufe 630, eine Geometrie-Shading-Stufe 640, eine Viewport-Skalierungs-, Aussonderungs- und Abschneide-(VSCC)-Stufe 650, eine Rasterungsstufe 660, eine Fragment-Shading-Stufe 670 und eine Raster-Operationen-Stufe 680. In einer Ausführungsform umfassen die Eingangsdaten 601 Befehle, welche die Verarbeitungseinheiten konfigurieren, um die Stufen der Graphikverarbeitungs-Pipeline 600 und geometrische Primitive (z.B., Punkte, Linien, Dreiecke, Vierecke, Dreieckstreifen oder Fächer, usw.) zu implementieren, die mittels der Stufen zu verarbeiten sind. Die Ausgangsdaten 602 können Pixeldaten (z.B. Farbdaten) umfassen, die in einen Frame-Puffer oder einen anderen Typ von Oberflächen-Datenstruktur in einem Speicher kopiert werden.
  • Die Datenzusammenstellungstufe 610 empfängt die Eingangsdaten 601, die Vertexdaten für Oberflächen höherer Ordnung, Primitiven oder dergleichen spezifizieren. Die Datenzusammenstellungstufe 610 sammelt die Vertexdaten in einem temporären Speicher oder Warteschlange, wie beispielsweise durch Empfangen eines Befehls von dem Host-Prozessor, der einen Zeiger auf einen Puffer im Speicher umfasst und die Vertexdaten aus dem Puffer liest. Die Vertexdaten werden dann an die Vertex-Shading-Stufe 620 zur Verarbeitung übertragen.
  • Die Vertex-Shading-Stufe 620 verarbeitet Vertexdaten durch Durchführen eines Satzes von Operationen (z.B. eines Vertex-Shader oder eines Programms) einmal für jede der Vertices. Vertices können beispielsweise als ein 4-Koordinaten-Vektor (z.B. <x, y, z, w>) spezifiziert sein, der einem oder mehreren Vertexattributen (z.B., Farbe, Texturkoordinaten, Oberflächennormalen, usw.) zugeordnet ist. Die Vertex-Shading-Stufe 620 kann einzelne Vertexattribute, wie beispielsweise Position, Farbe, Texturkoordinaten und dergleichen, manipulieren. Mit anderen Worten führt die Vertex-Shading-Stufe 620 Operationen an den Vertex-Koordinaten oder anderen Vertexattributen durch, welche einer Vertex zugeordnet sind. Derartige Operationen umfassen gewöhnlicherweise Beleuchtungs-Operationen (z.B. Modifizieren von Farbattributen für einen Vertex) und Transformations-Operationen (z.B. Modifizieren des Koordinatenraums für einen Vertex). Beispielsweise können Vertices unter Verwendung von Koordinaten in einem Objekt-Koordinatenraum spezifiziert sein, die durch Multiplizieren der Koordinaten mittels einer Matrix transformiert werden, welche die Koordinaten aus dem Objekt-Koordinatenraum in einen Welt-Raum oder einen normierten Vorrichtungskoordinaten(NCD = Normalized Device Coordinates)-Raum übersetzt. Die Vertex-Shading-Stufe 620 erzeugt transformierte Vertexdaten, die an die Primitiven-Zusammenstellungstufe 630 übertragen werden.
  • Die Primitiven-Zusammenstellungstufe 630 sammelt Vertices, die mittels der Vertex-Shading-Stufe 620 ausgegeben werden, und gruppiert die Vertices in geometrische Primitiven zur Verarbeitung durch die Geometrie-Shading-Stufe 640. Beispielsweise kann die Primitiven-Zusammenstellungstufe 630 konfiguriert sein, um alle drei aufeinanderfolgenden Vertices als eine geometrische Primitive (z.B. ein Dreieck) zur Übertragung an die Geometrie-Shading-Stufe 640 zu gruppieren. In einigen Ausführungsformen können spezifische Vertices für aufeinanderfolgende geometrische Primitiven erneut verwendet werden (z.B. können zwei aufeinanderfolgende Dreiecke in einem Dreieckstreifen zwei Vertices gemeinsam benutzen). Die Primitiven-Zusammenstellungstufe 630 überträgt geometrische Primitiven (z.B. eine Sammlung von zugeordneten Vertices) an die Geometrie-Shading-Stufe 640.
  • Die Geometrie-Shading-Stufe 640 verarbeitet geometrische Primitiven durch Durchführen eines Satzes von Operationen (z.B. eines Geometrie-Shader oder Programms) an den geometrischen Primitiven. Tessellations-Operationen können eine oder mehrere geometrische Primitiven aus jeder geometrischen Primitive erzeugen. Mit anderen Worten kann die Geometrie-Shading-Stufe 640 jede geometrische Primitive in ein feineres Netz von zwei oder mehr geometrischen Primitiven zur Verarbeitung durch den Rest der Graphikverarbeitungs-Pipeline 600 unterteilen. Die Geometrie-Shading-Stufe 640 überträgt geometrische Primitiven an die Viewport-SCC-Stufe 650.
  • In einer Ausführungsform kann die Graphikverarbeitungs-Pipeline 600 innerhalb eines Streaming-Mehrfachprozessors arbeiten, und die Vertex-Shading-Stufe 620, die Primitiven-Zusammenstellungstufe 630, die Geometrie-Shading-Stufe 640, die Fragment-Shading-Stufe 670 und/oder die damit zugeordnete Hardware/Software kann sequenziell Verarbeitungsoperationen durchführen. Sobald die sequenziellen Verarbeitungsoperationen in einer Ausführungsform abgeschlossen sind, kann die Viewport-SCC-Stufe 650 die Daten benutzen. In einer Ausführungsform können Primitivendaten, die durch eine oder mehrere der Stufen in der Graphikverarbeitungs-Pipeline 600 verarbeitet wurden, in einen Cache-Speicher (z.B. einen L1-Cache-Speicher, einen Vertex-Cache-Speicher usw.) geschrieben werden. In diesem Fall kann in einer Ausführungsform die Viewport-SCC-Stufe 650 auf die Daten in dem Cache-Speicher zugreifen. In einer Ausführungsform sind die Viewport-SCC-Stufe 650 und die Rasterungsstufe 660 als Festfunktions-Schaltungen implementiert.
  • Die Viewport-SCC-Stufe 650 führt Viewport-Skalierung, Aussonderung und Abschneidung der geometrischen Primitiven durch. Jede Oberfläche, die gerendert wird, wird einer abstrakten Kameraposition zugeordnet. Die Kameraposition stellt einen Ort eines Betrachters dar, der die Szene betrachtet, und definiert einen Betrachtungsstumpf, der die Objekte der Szene einschließt. Der Betrachtungsstumpf kann eine Betrachtungs-Ebene, eine hintere Ebene und vier Abschneide-Ebenen umfassen. Jede geometrische Primitive, die vollständig außerhalb des Betrachtungsstumpfes ist, kann ausgesondert (z.B. verworfen) werden, weil die geometrische Primitive nicht zu der endgültigen gerenderten Szene beitragen wird. Jede geometrische Primitive, die innerhalb des Betrachtungsstumpfs und teilweise außerhalb des Betrachtungsstumpfs ist, kann abgeschnitten werden (z.B. in eine neue geometrische Primitive transformiert werden, die innerhalb des Betrachtungsstumpf eingeschlossen ist). Des Weiteren können geometrische Primitiven jeweils basierend auf einer Tiefe des Betrachtungsstumpfes skaliert werden. Alle potentiell sichtbaren geometrischen Primitiven werden dann an die Rasterungsstufe 660 übertragen.
  • Die Rasterungsstufe 660 wandelt die 3D-geometrischen Primitiven in 2D-Fragmente um (die z.B. in der Lage sind, zur Anzeige benutzt zu werden, usw.). Die Rasterungsstufe 660 kann konfiguriert sein, um die Vertices der geometrischen Primitive zu benutzen, um einen Satz von Ebenengleichungen aufzustellen, von denen verschiedene Attribute interpoliert werden können. Die Rasterungsstufe 660 kann ebenfalls eine Abdeckungsmaske für eine Mehrzahl von Pixeln berechnen, die angibt, ob eine oder mehrere Abtastorte für das Pixel die geometrische Primitive schneiden. In einer Ausführungsform kann auch z-Testen durchgeführt werden, um zu bestimmen, ob die geometrische Primitive von anderen geometrischen Primitiven verdeckt wird, die bereits gerastert wurden. Die Rasterungsstufe 660 erzeugt Fragmentdaten (z.B. interpolierte Vertexattribute, die einem bestimmten Abtastort für jedes abgedeckte Pixel zugeordnet sind), die an die Fragment-Shading-Stufe 670 übertragen werden.
  • Die Fragment-Shading-Stufe 670 verarbeitet Fragmentdaten durch Durchführen eines Satzes von Operationen (z.B. eines Fragment-Shader oder eines Programms) an jedem der Fragmente. Die Fragment-Shading-Stufe 670 kann Pixeldaten (z.B. Farbenwerte) für das Fragment erzeugen, wie beispielsweise durch Durchführen von Beleuchtungs-Operationen oder Abtasten von Texturabbildungen unter Verwendung von interpolierten Texturkoordinaten für das Fragment. Die Fragment-Shading-Stufe 670 erzeugt Pixeldaten, die an die Raster-Operationen-Stufe 680 übertragen werden.
  • Die Raster-Operationen-Stufe 680 kann verschiedene Operationen an den Pixeldaten durchführen, wie beispielsweise Alpha-Tests, Stencil-Tests und Mischung der Pixeldaten mit anderen Pixeldaten, die anderen Fragmente entsprechen, die dem Pixel zugeordnet sind. Wenn die Raster-Operationen-Stufe 680 die Verarbeitung der Pixeldaten (z.B. der Ausgangsdaten 602) beendet hat, können die Pixeldaten in ein Render-Ziel, wie beispielsweise einen Frame-Puffer, einen Farbenpuffer oder dergleichen, geschrieben werden.
  • Es wird anerkannt, dass eine oder mehrere zusätzliche Stufen in der Graphikverarbeitungs-Pipeline 600 zusätzlich zu oder anstatt einer oder mehrerer der oben beschriebenen Stufen umfasst sein können. Verschiedene Implementierungen der abstrakten Graphikverarbeitungs-Pipeline können unterschiedliche Stufen implementieren. Des Weiteren können eine oder mehrere der oben beschriebenen Stufen der Graphikverarbeitungs-Pipeline in einigen Ausführungsformen (wie beispielsweise der Geometrie-Shading-Stufe 640) ausgeschlossen sein. Andere Arten von Graphikverarbeitungs-Pipelines werden betrachtet, als innerhalb des Schutzumfangs der vorliegenden Offenbarung zu liegen. Des Weiteren können beliebige der Stufen der Graphikverarbeitungs-Pipeline 600 von einer oder mehreren dedizierten Hardwareeinheiten innerhalb eines Graphikprozessors, wie beispielsweise der PPU 400, implementiert werden. Andere Stufen der Graphikverarbeitungs-Pipeline 600 können durch programmierbare Hardwareeinheiten, wie beispielsweise die Verarbeitungseinheit innerhalb PPU 400, implementiert werden.
  • Die Graphikverarbeitungs-Pipeline 600 kann über eine Anwendung implementiert werden, die von einem Host-Prozessor, wie beispielsweise einer CPU 550, ausgeführt wird. In einer Ausführungsform kann ein Vorrichtungstreiber eine API implementieren, die verschiedene Funktionen definiert, die von einer Anwendung benutzt werden können, um graphische Daten zur Anzeige zu erzeugen. Der Vorrichtungstreiber ist ein Softwareprogramm, das eine Mehrzahl von Anweisungen umfasst, die den Betrieb der PPU 400 steuern. Die API stellt eine Abstraktion für einen Programmierer bereit, die einem Programmierer erlaubt, spezialisierte Graphikhardware zu benutzen, wie beispielsweise die PPU 400, um die graphischen Daten zu erzeugen, ohne zu verlangen, dass der Programmierer den spezifischen Anweisungssatz für die PPU 400 benutzen muss. Die Anwendung kann einen API-Aufruf umfassen, der an den Vorrichtungstreiber für die PPU 400 weitergeleitet wird. Der Vorrichtungstreiber interpretiert den API-Aufruf und führt verschiedene Operationen durch, um auf den API-Aufruf zu antworten. In einigen Fällen kann der Vorrichtungstreiber Operationen durch Ausführen von Anweisungen auf der CPU durchführen. In anderen Fällen kann der Vorrichtungstreiber Operationen, zumindest teilweise, durch Starten von Operationen auf der PPU 400 durchführen, wobei eine Eingang/Ausgabe-Schnittstelle zwischen der CPU und der PPU 400 benutzt wird. In einer Ausführungsform ist der Vorrichtungstreiber konfiguriert, um die Graphikverarbeitungs-Pipeline 600 unter Benutzung der Hardware der PPU 400 zu implementieren.
  • Verschiedene Programme können innerhalb der PPU 400 ausgeführt werden, um die verschiedenen Stufen der Graphikverarbeitungs-Pipeline 600 zu implementieren. Beispielsweise kann der Vorrichtungstreiber ein Kernel auf der PPU 400 starten, um die Vertex-Shading-Stufe 620 auf einer Verarbeitungseinheit 440 (oder mehreren SMs 440) durchzuführen. Der Vorrichtungstreiber (oder den von der PPU 400 ausgeführten Anfangskernel) kann ebenfalls andere Kernels auf der PPU 400 starten, um andere Stufen der Graphikverarbeitungs-Pipeline 600 durchzuführen, wie beispielsweise die Geometrie-Shading-Stufe 640 und die Fragment-Shading-Stufe 670. Außerdem können einige der Stufen der Graphikverarbeitungs-Pipeline 600 auf einer festen Hardwareeinheit implementiert werden, wie beispielsweise einem Rasterer oder einem Daten-Assembler, der innerhalb der PPU 400 implementiert ist. Es wird anerkannt, dass Ergebnisse von einem Kernel durch eine oder mehrere intervenierende Festfunktions-Hardwareeinheiten verarbeitet werden können, bevor sie von einem nachfolgenden Kernel auf einer Verarbeitungseinheit verarbeitet werden.
  • Erzeugte Bilder, die eine oder mehrere der hier offenbarten Techniken anwenden, können auf einem Monitor oder einer anderen Anzeigevorrichtung angezeigt werden. In einigen Ausführungsformen kann die Anzeigevorrichtung direkt mit dem System oder Prozessor gekoppelt sein, das/der die Bilder erzeugt oder rendert. In anderen Ausführungsformen kann die Anzeigevorrichtung indirekt mit dem System oder Prozessor gekoppelt sein, wie beispielsweise über ein Netzwerk. Beispiele derartiger Netzwerks umfassen das Internet, mobile Telekommunikationsnetzwerke, ein WIFI-Netzwerk, sowie auch jedes andere verdrahtete und/oder drahtlose Netzwerksystem. Wenn die Anzeigevorrichtung indirekt gekoppelt ist, können die Bilder von dem System oder von dem Prozessor erzeugte Bilder über das Netzwerk zu der Anzeigevorrichtung gestreamt werden. Derartiges Streaming ermöglicht beispielsweise Videospielen oder anderen Anwendungen, die Bilder rendern, auf einem Server oder in einem Rechenzentrum ausgeführt zu werden, und die gerenderten Bilder gesendet und auf einer oder mehreren Benutzervorrichtungen (wie beispielsweise einem Computer, Videospielekonsole, Smartphone, andere mobile Vorrichtung usw.) angezeigt zu werden, die physisch von dem Server oder Rechenzentrum getrennt sind. Folglich können die hier offenbarten Techniken angewandt werden, um die Bilder zu verbessern, die gestreamt werden, und um Dienste zu verbessern, die Bilder streamen, wie beispielsweise NVIDIA GeForce Now (GFN), Google Stadia und dergleichen.
  • Beispielhaftes Spiele-Streaming-System
  • 6B ist ein beispielhaftes Systemdiagramm für ein Spiele-Streaming-System 605 gemäß einigen Ausführungsformen der vorliegenden Offenbarung. 6B umfasst (einen) Spieleserver 603 (der(die) ähnliche Komponenten, Merkmale und/oder Funktionalität wie das beispielhafte Verarbeitungssystem 500 von 5A und/oder das beispielhafte System 565 von 5B, (eine) Client-Vorrichtung(en) 604 (die ähnliche Komponenten, Merkmale und/oder Funktionalität wie das beispielhafte Verarbeitungssystem 500 von 5A und/oder das beispielhafte System 565 von 5B und (ein) Netzwerk(e) 606 aufweisen kann(können), (das(die) ähnlich wie das(die) hier beschriebene(n) Netzwerk(e) sein kann(können). In einigen Ausführungsformen der vorliegenden Offenbarung kann das System 605 implementiert sein.
  • In dem System 605 können die Client-Vorrichtung(en) 604 für eine Spielesitzung nur Eingabedaten als Reaktion auf Eingaben in die Eingabevorrichtung(en) empfangen, die Eingabedaten an den(die) Spieleserver 603 übertragen, codierte Anzeigedaten von dem/den Spieleserver(n) 603 empfangen und die Anzeigedaten auf der Anzeige 624 anzeigen. Von daher werden die rechenintensiveren Berechnungen und Verarbeitungen an den/die Spieleserver 603 ausgelagert (z.B. wird das Rendering - insbesondere Strahlen- oder Pfad-Verfolgung - für die graphische Ausgabe der Spielesitzung von der(den) GPU(s) des(der) Spieleservers(n) 603 ausgeführt). Mit anderen Worten wird die Spielesitzung von dem(den) Spieleserver(n) 603 zu der(den) Client-Vorrichtung(en) 604 gestreamt, um dadurch die Anforderungen an die Client-Vorrichtung(en) 604 für die Graphikverarbeitung und das Rendering zu verringern.
  • Zum Beispiel kann eine Client-Vorrichtung 604 in Bezug auf eine Instanziierung einer Spielesitzung ein Frame der Spielesitzung auf der Anzeige 624 basierend auf dem Empfang der Anzeigedaten von dem(den) Spieleserver(n) 603 anzeigen. Die Client-Vorrichtung 604 kann eine Eingabe an einer der Eingabevorrichtung(en) empfangen und als Antwort 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) Spieleserver 603 übertragen, und der(die) Spieleserver 603 kann(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) übertragen, die die GPU(s) veranlassen, ein Rendering der Spielesitzung zu erzeugen. Die Eingabedaten können z.B. eine Bewegung einer Figur des Benutzers in einem Spiel, das Abfeuern einer Waffe, das Nachladen, das Weiterleiten eines Balls, das Wenden eines Fahrzeugs usw. darstellen. Die Rendering-Komponente 612 kann die Spielsitzung rendern (z.B. repräsentativ für das Ergebnis der Eingabedaten), und die Render-Capture-Komponente 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 Beleuchtungs- und/oder Schatteneffekte mit Strahlen- oder Pfadverfolgung aufweisen, die unter Verwendung einer oder mehrerer paralleler Verarbeitungseinheiten - wie GPUs, die darüber hinaus die Verwendung eines oder mehrerer dedizierter Hardwarebeschleuniger oder Verarbeitungskerne zur Durchführung von Strahlen- oder Pfadverfolgungstechniken nutzen können - des(der) Spieleserver(s) 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 an die Client-Vorrichtung 604 übertragen 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 versteht sich, dass die in den beigefügten Figuren dargestellte Anordnung von Komponenten zu Veranschaulichungszwecken dient und dass andere Anordnungen möglich sind. Beispielsweise können ein oder mehrere der hier beschriebenen Elemente ganz oder teilweise als eine elektronische Hardwarekomponente realisiert sein. Andere Elemente können in Software, Hardware oder einer Kombination aus Software und Hardware implementiert sein. Außerdem 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 hier beschriebene Funktionalität noch immer erreicht wird. Folglich kann der hier beschriebene Gegenstand in vielen verschiedenen Variationen verkörpert sein und es wird davon ausgegangen, dass alle solche Variationen in den Geltungsbereich der Ansprüche fallen.
  • Um ein Verständnis des hier beschriebenen Gegenstands zu erleichtern, sind viele Aspekte im Hinblick auf Sequenzen von Aktionen beschrieben. Es versteht sich für den Fachmann, dass die verschiedenen Aktionen durch spezialisierte Schaltungen oder Schaltkreise, durch Programmanweisungen, die von einem oder mehreren Prozessoren ausgeführt werden, oder durch eine Kombination von beidem ausgeführt werden können. Die hier dargelegte Beschreibung einer beliebigen Sequenz von Aktionen soll nicht implizieren, dass der für die Ausführung dieser Sequenz beschriebenen spezifischen Reihenfolge gefolgt werden muss. Alle hier beschriebenen Verfahren können in jeder beliebigen geeigneten Reihenfolge durchgeführt werden, sofern es hier nicht anders angegeben ist oder anderweitig durch den Kontext klar widersprochen wird.
  • Die Verwendung der Begriffe „ein“ und „der“ und ähnliche Bezugnahmen im Kontext der Beschreibung des Gegenstands (insbesondere im Kontext der folgenden Ansprüche) sind so auszulegen, dass sie sowohl den Singular als auch den Plural abdecken, sofern dies hier nicht anders angegeben ist oder durch Kontext eindeutig im Widerspruch steht. Die Verwendung des Begriffs „zumindest ein“, gefolgt von einer Liste eines oder mehrerer Elemente (z. B. „zumindest einer von A und B“) ist so auszulegen, dass eines der aufgelisteten Elemente (A oder B) oder eine beliebige Kombination zweier oder mehrerer der aufgelisteten Elemente (A und B) ausgewählt wird, sofern dies hier nicht anders angegeben ist oder durch den Kontext klar widersprochen wird. Ferner dient die vorangehende Beschreibung lediglich der Zweck der Veranschaulichung und nicht dem Zweck der Beschränkung dient, da der angestrebte Schutzumfang durch die nachstehenden Ansprüche und deren Äquivalente definiert wird. Die Verwendung beliebiger und aller Beispiele, oder hier bereitgestellter beispielhafter Formulierungen (z.B. „wie beispielsweise“), dient lediglich der besseren Veranschaulichung des Gegenstands und stellt keine Beschränkung des Schutzumfangs des Gegenstands dar, sofern dies nicht anders beansprucht wird. Die Verwendung des Begriffs „basierend auf“ und anderer ähnlicher Ausdrücke, die eine Bedingung für die Herbeiführung eines Ergebnisses angeben, sowohl in den Ansprüchen als auch in der schriftlichen Beschreibung, soll keine wie auch immer anderen Bedingungen ausschließen, die dieses Ergebnis herbeiführen. Keine Formulierung in der Spezifikation sollte so ausgelegt werden, dass sie ein beliebiges nicht beanspruchtes Element als wesentlich für die praktische Umsetzung der beanspruchten Erfindung anzeigt.

Claims (22)

  1. Computerimplementiertes Verfahren zum Konstruieren eines dreidimensionalen (3D) Modells, umfassend: Empfangen einer 3D-Topologiedefinition, die Flächen von Zellen innerhalb eines volumetrischen Gitters kennzeichnet; Verarbeiten der 3D-Topologie und des volumetrischen Gitters gemäß Parametern, die einem Referenz-3D-Modell entsprechen, wobei die 3D-Modelldarstellung ein Oberflächengitter umfasst, das durch Vertexpositionen der Flächen und Verbindungen zwischen den Vertexpositionen definiert wird; Rendering der 3D-Modelldarstellung, um ein gerendertes Bild zu erzeugen; Transportieren von Strahlen, die dem gerenderten Bild entsprechen, durch die 3D-Modelldarstellung, um Wahrscheinlichkeitswerte für die Zellen zu berechnen; und Aktualisieren der Parameter basierend auf den Wahrscheinlichkeitswerten und Differenzen zwischen dem gerenderten Bild und einem Referenzbild des Referenz-3D-Modells, um die Differenzen zu verringern.
  2. Computerimplementiertes Verfahren gemäß Anspruch 1, wobei die Flächen des Oberflächengitters opak sind.
  3. Computerimplementiertes Verfahren gemäß Anspruch 1 oder 2, ferner umfassend: Rendering zusätzlicher Bilder, die unterschiedlichen Kamerapositionen oder Lichtpositionen zugeordnet sind; Transportieren zusätzlicher Strahlen, die entsprechende den zusätzlichen gerenderten Bildern entsprechen, durch die 3D-Modelldarstellung, um zusätzliche Wahrscheinlichkeitswerte für die Zellen zu berechnen; und Aktualisieren der Parameter basierend auf den zusätzlichen Wahrscheinlichkeitswerten und zusätzlichen Differenzen zwischen den zusätzlichen gerenderten Bildern und zusätzlichen Referenzbildern des Referenz-3D-Modells, die den unterschiedlichen Kamerapositionen oder Lichtpositionen entsprechen, um die zusätzlichen Differenzen zu verringern.
  4. Computerimplementiertes Verfahren gemäß einem vorangehenden Anspruch, wobei die 3D-Modelldarstellung räumlich variierende Materialattribute umfasst.
  5. Computerimplementiertes Verfahren gemäß einem vorangehenden Anspruch, wobei die gerenderten Bilder unter Verwendung eines differenzierbaren Renderers erzeugt werden und die Differenzen durch den differenzierbaren Renderer rückwärts propagiert werden, um die Parameter zu aktualisieren.
  6. Computerimplementiertes Verfahren gemäß einem vorangehenden Anspruch, wobei jeder Wahrscheinlichkeitswert einer unterschiedlichen Fläche von jeder einen der Zellen zugeordnet ist.
  7. Computerimplementiertes Verfahren gemäß einem vorangehenden Anspruch, wobei jeder Wahrscheinlichkeitswert alle Flächen von jeder einen der Zellen zugeordnet ist.
  8. Computerimplementiertes Verfahren gemäß einem vorangehenden Anspruch, wobei das Verarbeiten, Rendern, Transportieren und Aktualisieren eine Trainingsiteration umfassen und ferner Wiederholen der Trainingsiteration für zusätzliche 3D-Topologiedefinitionen umfasst.
  9. Computerimplementiertes Verfahren gemäß Anspruch 8, wobei die 3D-Topologiedefinition und zusätzliche 3D-Topologiedefinitionen zufällig für jede Trainingsiteration erzeugt werden.
  10. Computerimplementiertes Verfahren gemäß Anspruch 8 oder 9, wobei mindestens eine der zusätzlichen 3D-Topologiedefinitionen basierend auf den Wahrscheinlichkeitswerte bestimmt wird.
  11. Computerimplementiertes Verfahren gemäß einem der Ansprüche 8 bis 10, wobei das volumetrische Gitter für mindestens eine der zusätzliche 3D-Topologiedefinitionen unterteilt wird.
  12. Computerimplementiertes Verfahren gemäß einem vorangehenden Anspruch, wobei das volumetrische Gitter als gleichmäßiges 3D-Gitter initialisiert ist.
  13. Computerimplementiertes Verfahren gemäß einem vorangehenden Anspruch, wobei das Rendering und Transportieren parallel durchgeführt werden.
  14. Computerimplementiertes Verfahren gemäß einem vorangehenden Anspruch, wobei das Aktualisieren umfasst: Berechnen eines Pixelwahrscheinlichkeitswerts für jedes Pixel in dem gerenderten Bild unter Verwendung der Wahrscheinlichkeitswerte; Skalieren der Differenz für jedes Pixel durch den Wahrscheinlichkeitswert für das Pixel, um Produkte zu berechnen; und Summieren der Produkte, um einen Bildverlust zu erzeugen.
  15. Verfahren gemäß einem vorangehenden Anspruch, wobei das volumetrische Gitter ein dichtes volumetrisches Gitter ist.
  16. System, umfassend: einen Prozessor, der ein dreidimensionales (3D) Modell konstruiert, durch: Empfangen einer 3D-Topologiedefinition, die Flächen von Zellen innerhalb eines volumetrischen Gitters kennzeichnet; Verarbeiten der 3D-Topologie und des volumetrischen Gitters gemäß Parametern, um eine 3D-Modelldarstellung vorherzusagen, die einem Referenz-3D-Modell entspricht, wobei die 3D-Modelldarstellung ein Oberflächengitter umfasst, das durch Vertexpositionen der Flächen und Verbindungen zwischen den Vertexpositionen definiert wird; Rendering der 3D-Modelldarstellung, um ein gerendertes Bild zu erzeugen; Transportieren von Strahlen, die dem gerenderten Bild entsprechen, durch die 3D-Modelldarstellung, um Wahrscheinlichkeitswerte für die Zellen zu berechnen; und Aktualisieren der Parameter basierend auf den Wahrscheinlichkeitswerte und Differenzen zwischen dem gerenderten Bild und einem Referenzbild des Referenz-3D-Modells, um die Differenzen zu verringern.
  17. System gemäß Anspruch 16, wobei der Prozessor das 3D-Modell durch Ausführen eines implementierten Rechenverfahren konstruiert, wie in einem der Ansprüche 1 bis 14 erwähnt.
  18. Nichttransitorische computerlesbare Medien, die Computeranweisungen zum Konstruieren eines dreidimensionalen (3D) Modells speichern, die, wenn durch einen oder mehrere Prozessoren ausgeführt, den einen oder mehrere Prozessoren veranlassen, die folgenden Schritte durchzuführen: Empfangen einer 3D-Topologiedefinition, die Flächen von Zellen innerhalb eines volumetrischen Gitters kennzeichnet; Verarbeiten der 3D-Topologie und des volumetrischen Gitters gemäß Parametern, um eine 3D-Modelldarstellung vorherzusagen, die einem Referenz-3D-Modell entspricht, wobei die 3D-Modelldarstellung ein Oberflächengitter umfasst, das durch Vertexpositionen der Flächen und Verbindungen zwischen den Vertexpositionen definiert wird; Rendering der 3D-Modelldarstellung, um ein gerendertes Bild zu erzeugen; Transportieren von Strahlen, die dem gerenderten Bild entsprechen, durch die 3D-Modelldarstellung, um Wahrscheinlichkeitswerte für die Zellen zu berechnen; und Aktualisieren der Parameter basierend auf den Wahrscheinlichkeitswerten und Differenzen zwischen dem gerenderten Bild und einem Referenzbild des Referenz-3D-Modells, um die Differenzen zu verringern.
  19. Nichttransitorische computerlesbare Medien gemäß Anspruch 18, wobei die Computeranweisungen, wenn durch den einen oder mehrere Prozessoren ausgeführt, den einen oder mehrere Prozessoren veranlassen, die Schritte eines Verfahrens durchzuführen, wie in einem der Ansprüche 1 bis 14 erwähnt.
  20. computerimplementiertes Verfahren zum Konstruieren eines dreidimensionalen (3D) Modells, umfassend: Empfangen einer 3D-Topologiedefinition, die sichtbare Flächen von Zellen innerhalb eines volumetrischen Gitters kennzeichnet, das durch Vertexpositionen der Flächen und Verbindungen zwischen den Vertexpositionen definiert wird; Verformen des volumetrischen Gitters gemäß Parametern, um ein opakes Oberflächengitter vorherzusagen, das durch Vertexpositionen der sichtbaren Flächen und Verbindungen zwischen den Vertexpositionen der sichtbaren Flächen definiert wird, wobei das opake Oberflächengitter einem Referenz-3D-Modell entspricht; und Aktualisieren der Parameter basierend auf Differenzen zwischen einem gerenderten Bild des opaken Oberflächengitters und einem Referenzbild des Referenz-3D-Modells, um die Differenzen zu verringern.
  21. Computerimplementiertes Verfahren gemäß Anspruch 20, ferner umfassend Wiederholen des Verformens und des Aktualisierens für zusätzliche 3D-Topologiedefinitionen, wobei die zusätzlichen 3D-Topologiedefinitionen im Vergleich zu den 3D-Topologiedefinition anders sind.
  22. Computerimplementiertes Verfahren gemäß Anspruch 21, wobei die zusätzlichen 3D-Topologiedefinitionen basierend auf berechneten Wahrscheinlichkeitswerten für die Zellen innerhalb des volumetrischen Gitters definiert sind, die eine Wahrscheinlichkeit angeben, dass jede Zelle durch einen Strahl geschnitten wird, der dem Referenzbild entspricht.
DE102022113244.7A 2021-06-01 2022-05-25 Gemeinsame Form- und Erscheinungsbildoptimierung durch Topologieabtastung Pending DE102022113244A1 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US202163195301P 2021-06-01 2021-06-01
US63/195,301 2021-06-01
US17/459,223 US11610370B2 (en) 2021-06-01 2021-08-27 Joint shape and appearance optimization through topology sampling
US17/459,223 2021-08-27

Publications (1)

Publication Number Publication Date
DE102022113244A1 true DE102022113244A1 (de) 2022-12-01

Family

ID=83997668

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102022113244.7A Pending DE102022113244A1 (de) 2021-06-01 2022-05-25 Gemeinsame Form- und Erscheinungsbildoptimierung durch Topologieabtastung

Country Status (3)

Country Link
US (2) US11610370B2 (de)
CN (1) CN115439628A (de)
DE (1) DE102022113244A1 (de)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11610370B2 (en) * 2021-06-01 2023-03-21 Nvidia Corporation Joint shape and appearance optimization through topology sampling
CN115984440B (zh) * 2023-03-20 2023-06-27 腾讯科技(深圳)有限公司 对象渲染方法、装置、计算机设备和存储介质
CN116451885B (zh) * 2023-06-20 2023-09-01 埃睿迪信息技术(北京)有限公司 一种供水管网健康度预测方法、装置及计算设备

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10403037B1 (en) * 2016-03-21 2019-09-03 URC Ventures, Inc. Verifying object measurements determined from mobile device images
US11723748B2 (en) * 2019-12-23 2023-08-15 Align Technology, Inc. 2D-to-3D tooth reconstruction, optimization, and positioning frameworks using a differentiable renderer
KR20220133973A (ko) * 2020-01-30 2022-10-05 인트린식 이노베이션 엘엘씨 편광된 이미지들을 포함하는 상이한 이미징 양식들에 대해 통계적 모델들을 훈련하기 위해 데이터를 합성하기 위한 시스템들 및 방법들
US11610370B2 (en) * 2021-06-01 2023-03-21 Nvidia Corporation Joint shape and appearance optimization through topology sampling

Also Published As

Publication number Publication date
US20220392160A1 (en) 2022-12-08
US11657571B2 (en) 2023-05-23
CN115439628A (zh) 2022-12-06
US20230105025A1 (en) 2023-04-06
US11610370B2 (en) 2023-03-21

Similar Documents

Publication Publication Date Title
US10922793B2 (en) Guided hallucination for missing image content using a neural network
DE102021119726A1 (de) Dreidimensionale objektrekonstruktion aus einem video
US20190147296A1 (en) Creating an image utilizing a map representing different classes of pixels
DE102019106123A1 (de) Dreidimensionale (3D) Posenschätzung von Seiten einer monokularen Kamera
DE102018009315A1 (de) Verfahren tiefgehenden Lernens zum Trennen von Reflexions- und Übertragungsbildern, die an einer halbreflektierenden Oberfläche in einem Computerbild einer Realweltszene sichtbar sind
DE102022113244A1 (de) Gemeinsame Form- und Erscheinungsbildoptimierung durch Topologieabtastung
DE102021121109A1 (de) Wiederherstellung dreidimensionaler modelle aus zweidimensionalen bildern
US11615602B2 (en) Appearance-driven automatic three-dimensional modeling
DE102021119722A1 (de) Feingranulare pro-vektor-skalierung für neuronale netzwerkquantisierung
DE102022100360A1 (de) Framework für maschinelles lernen angewandt bei einer halbüberwachten einstellung, um instanzenverfolgung in einer sequenz von bildframes durchzuführen
DE102022104142A1 (de) Strahldichte-caching in echtzeit durch ein neuronales netz für pfadverfolgungszwecke
DE102022107232A1 (de) Gepackter fehlerkorrekturcode (ecc) für komprimierten datenschutz
DE102021132992A1 (de) Messen und Detektieren von Leerlaufzeiten und Erkennen der Ursachen dafür in Cloud-basierten Streaming-Anwendungen
DE102021205690A1 (de) Trainieren neuronaler Netze mit begrenzten Daten unter Verwendung invertierbarer Augmentationsoperatoren
DE102021128286A1 (de) Adaptives abtasten mit einer zielabtastrate
US20220012536A1 (en) Creating an image utilizing a map representing different classes of pixels
DE112019001978T5 (de) Verbesserung des realismus von szenen mit wasseroberflächen beim rendern
DE102021120604A1 (de) Dynamische bildglättung basierend auf netzwerkbedingungen
DE102021114013A1 (de) Techniken zum effizienten abtasten eines bildes
US20230298243A1 (en) 3d digital avatar generation from a single or few portrait images
US20220398283A1 (en) Method for fast and better tree search for reinforcement learning
DE102022112488A1 (de) Projektive hash-karten
DE102019101845A1 (de) Photorealistische Bildstilisierung unter Verwendung eines Neuronalen-Netzwerkmodells
US20230104782A1 (en) Generation of differentiable, manifold meshes of arbitrary genus
DE102021132981A1 (de) Dreidimensionale tomographie-rekonstruktionspipeline

Legal Events

Date Code Title Description
R012 Request for examination validly filed