DE102019130889A1 - Schätzung der tiefe eines mit einer monokularen rgb-kamera aufgenommenen videodatenstroms - Google Patents

Schätzung der tiefe eines mit einer monokularen rgb-kamera aufgenommenen videodatenstroms Download PDF

Info

Publication number
DE102019130889A1
DE102019130889A1 DE102019130889.5A DE102019130889A DE102019130889A1 DE 102019130889 A1 DE102019130889 A1 DE 102019130889A1 DE 102019130889 A DE102019130889 A DE 102019130889A DE 102019130889 A1 DE102019130889 A1 DE 102019130889A1
Authority
DE
Germany
Prior art keywords
frame
dpv
features
reference frame
depth
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
DE102019130889.5A
Other languages
English (en)
Inventor
Jinwei Gu
Kihwan Kim
Chao Liu
Jan Kautz
Guilin Liu
Soumyadip Sengupta
Xiaodong Yang
Chuhang Zou
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 DE102019130889A1 publication Critical patent/DE102019130889A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/50Depth or shape recovery
    • G06T7/55Depth or shape recovery from multiple images
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • G06N20/10Machine learning using kernel methods, e.g. support vector machines [SVM]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N20/00Machine learning
    • G06N20/20Ensemble learning
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/18Image warping, e.g. rearranging pixels individually
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N23/00Cameras or camera modules comprising electronic image sensors; Control thereof
    • H04N23/60Control of cameras or camera modules
    • H04N23/68Control of cameras or camera modules for stable pick-up of the scene, e.g. compensating for camera body vibrations
    • H04N23/681Motion detection
    • H04N23/6812Motion detection based on additional sensors, e.g. acceleration sensors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/10Image acquisition modality
    • G06T2207/10028Range image; Depth image; 3D point clouds
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20084Artificial neural networks [ANN]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T2207/00Indexing scheme for image analysis or image enhancement
    • G06T2207/20Special algorithmic details
    • G06T2207/20212Image combination
    • G06T2207/20224Image subtraction
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N13/00Stereoscopic video systems; Multi-view video systems; Details thereof
    • H04N2013/0074Stereoscopic image analysis
    • H04N2013/0081Depth or disparity estimation from stereoscopic image signals

Landscapes

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

Abstract

Methoden zum Schätzen von Tiefe für einen von einem monokularen Bildsensor aufgenommenen Videodatenstrom werden offenbart. Eine Folge von Bildrahmen wird von dem monokularen Bildsensor erfasst. Ein erstes neuronales Netzwerk ist dazu eingerichtet, mindestens einen Teil der Folge von Bildrahmen zu verarbeiten, um ein Tiefenwahrscheinlichkeitsvolumen zu erzeugen. Das Tiefenwahrscheinlichkeitsvolumen umfasst eine Vielzahl von Wahrscheinlichkeitskarten, die einer Anzahl von diskreten Tiefenkandidatenpositionen über einen für die Szene definierten Tiefenbereich entsprechen. Das Tiefenwahrscheinlichkeitsvolumen kann mit einem zweiten neuronalen Netzwerk aktualisiert werden, das dazu eingerichtet ist, adaptive Verstärkungsparameter zu erzeugen, um die DPVs mit der Zeit zu integrieren. Ein drittes neuronales Netzwerk ist dazu eingerichtet, das aktualisierte Tiefenwahrscheinlichkeitsvolumen von einer niedrigeren Auflösung auf eine höhere Auflösung, die der ursprünglichen Auflösung der Folge von Bildrahmen entspricht, zu verfeinern. Eine Tiefenkarte kann beruhend auf dem Tiefenwahrscheinlichkeitsvolumen berechnet werden.

Description

  • TECHNISCHES GEBIET
  • Die vorliegende Offenbarung betrifft Bild- und Videoverarbeitung und -analyse, und insbesondere eine Tiefenschätzung aus einer Folge von Bildrahmen.
  • HINTERGRUND
  • Ein Verständnis von Tiefeninformationen bezüglich eine in einem Bild dargestellte Szene ist entscheidend für eine dreidimensionale (3D-)Rekonstruktion. Aktive Methoden zur Messung von Tiefeninformationen, die mit einem Bild verknüpft sind, liefern dichte Messungen, können aber oft unter Einschränkungen wie etwa beschränkten Betriebsbereichen, niedriger räumlicher Auflösung, Sensorgenauigkeit und hoher Leistungsaufnahme leiden. Darüber hinaus können die zur Messung von Tiefeninformationen verwendeten aktiven Sensoren teuer und kompliziert einzurichten sein, um die Tiefeninformationen genau zu erfassen, die mit einem Bild korrespondieren, das mit einem verknüpften Bildsensor aufgenommenen.
  • Grundlegende Deep-Learning-Methoden zum Schätzen von Tiefeninformationen aus einem einzelnen monokularen Bild oder einem Stereo-Bildpaar wurden im Stand der Technik untersucht. Die Ergebnisse dieser Methoden haben jedoch eine geringe Genauigkeit und sind zeitlich instabil, wenn sie auf eine Reihe von in einem Videodatenstrom aufgenommenen verknüpften Bildern angewendet werden. Darüber hinaus sind viele dieser Methoden nicht über mehrere Domänen hinweg stabil und liefern nur dann angemessene Ergebnisse, wenn das neuronale Deep-Learning-Netzwerk für eine bestimmte Domäne trainiert ist (z.B. drinnen vs. draußen). Daher besteht eine Notwendigkeit, diese Fragen und/oder andere mit dem Stand der Technik verknüpfte Fragen zu behandeln.
  • ZUSAMMENFASSUNG
  • Ein System und Verfahren zum Schätzen einer Tiefe aus mit einem monokularen Bildsensor (z.B. RGB) aufgenommenen Bildrahmen wird offenbart. Die Technik bezieht ein Erzeugen einer Schätzung für ein mit dem Bild verknüpftes Tiefenwahrscheinlichkeitsverteilungsvolumen (DPV) unter Verwendung eines neuronalen Deep-Learning-Netzwerks. Anstatt ein Pixel in dem Bild mit einer einzelnen Tiefenschätzung und einem einzelnen Konfidenzwert zu verknüpfen, ordnet das DPV ein Pixel oder eine Teilmenge von Pixeln des Bildes einem Satz von Tiefenkandidaten und entsprechenden Konfidenzwerten zu. Mit anderen Worten sagt das neuronale Netzwerk eine kontinuierliche Wahrscheinlichkeitsverteilung über die Tiefe der Szene für jedes Pixel oder jede Teilmenge von Pixeln vorher, die diskret in verschiedenen als Kandidaten-Tiefenwerte bezeichneten Tiefen abgetastet werden.
  • Ein Verfahren, ein rechnerlesbares Medium und ein System zum Schätzen von Tiefe werden offenbart. In einer Ausführungsform umfasst ein Verfahren die Schritte eines Empfangens einer Folge von Eingabebilddaten mit Bildrahmen einer Szene. Ein Bezugsrahmen und mindestens ein in der Folge von Eingabebilddaten innerhalb eines mit dem Bezugsrahmen verknüpften Fensters inbegriffener Quellrahmen werden unter Verwendung von Schichten eines ersten neuronalen Netzwerks verarbeitet, um entsprechende Merkmale für die Bezugs- und Quellrahmen zu extrahieren. Ein gemessenes DPV wird für den Bezugsrahmen erzeugt, indem die extrahierten Merkmale von dem Quellrahmen für jede Kandidatentiefe auf den Bezugsrahmen abgebildet werden und die verzerrten Quellrahmenmerkmale mit den Bezugsrahmenmerkmalen verglichen werden. Beruhend auf dem gemessenen DPV werden eine Tiefenkarte und eine Konfidenzkarte erstellt. In einer Ausführungsform besteht das gemessene DPV aus einem Satz von zweidimensionalen Feldern von Wahrscheinlichkeitswerten für jeden aus einer Vielzahl von Kandidatentiefenwerten.
  • In einer Ausführungsform beruht die auf die Quellrahmenmerkmale angewandte Verzerrfunktion auf relativen Kamerapositionsinformationen, die sich auf eine Differenz zwischen einer ersten Position des mit dem Bezugsrahmen verknüpften Bildsensors und einer zweiten Position des mit dem jeweiligen Quellrahmen verknüpften Bildsensors bezieht. Ein Erzeugen des gemessenen DPV umfasst ein Anwenden einer Softmax-Funktion auf eine Summe von Differenzen zwischen Merkmalen des Bezugsrahmens und verzerrten Merkmalen eines jeden der benachbarten Quellrahmen.
  • In einer Ausführungsform umfasst das Verfahren ferner den Schritt eines Verarbeitens eines zweiten Bezugsrahmens und mindestens eines in der Folge von Eingabebilddaten innerhalb eines mit dem zweiten Bezugsrahmen verknüpften zweiten Fensters inbegriffenen Quellrahmens unter Verwendung von Schichten des ersten neuronalen Netzwerks, um Merkmale für den zweiten Bezugsrahmen und den mindestens einen Quellrahmen innerhalb des zweiten Fensters zu extrahieren. Die Schritte umfassen auch ein Erzeugen eines gemessenen DPV für den zweiten Bezugsrahmen beruhend auf den Merkmalen für den zweiten Bezugsrahmen und verzerrten Versionen der Merkmale für den mindestens einen Quellrahmen innerhalb des zweiten Fensters, ein Erzeugen eines vorhergesagten DPV für den zweiten Bezugsrahmen durch Anwenden einer Verzerrfunktion auf das gemessene DPV für den ersten Bezugsrahmen und ein Erzeugen eines aktualisierten DPV für den zweiten Bezugsrahmen beruhend auf dem vorhergesagten DPV und dem gemessenen DPV für den zweiten Bezugsrahmen.
  • In einigen Ausführungsformen umfasst ein Erzeugen des aktualisierten DPV für den zweiten Bezugsrahmen ein Multiplizieren des vorhergesagten DPV für den zweiten Bezugsrahmen mit einem Gewicht zum Erzeugen eines gewichteten vorhergesagten DPV und ein Kombinieren des gewichteten vorhergesagten DPV mit dem gemessenen DPV für den zweiten Bezugsrahmen. In einigen Ausführungsformen umfasst ein Erzeugen des aktualisierten DPV für den zweiten Bezugsrahmen ein Verarbeiten einer Differenz zwischen dem vorhergesagten DPV und dem gemessenen DPV für den zweiten Bezugsrahmen unter Verwendung von Schichten eines zweiten neuronalen Netzwerks zum Erzeugen eines verbleibenden Verstärkungsvolumens und ein Summieren des verbleibenden Verstärkungsvolumens mit dem vorhergesagten DPV zum Erzeugen des aktualisierten DPV.
  • In einer Ausführungsform umfasst das Verfahren ferner einen Schritt zum Verfeinern des aktualisierten DPV durch Verarbeiten des aktualisierten DPV für den zweiten Bezugsrahmen unter Verwendung von Schichten eines dritten neuronalen Netzwerks, zum Erzeugen eines verfeinerten DPV für den zweiten Bezugsrahmen. Die Tiefenkarte und die Konfidenzkarte werden auf dem verfeinerten DPV beruhend berechnet.
  • In einer Ausführungsform wird ein System zum Schätzen von Tiefe beruhend auf einer Folge von Bilddaten offenbart. Das System umfasst einen Speicher und mindestens einen kommunikativ mit dem Speicher gekoppelten Prozessor. Der Speicher speichert eine Folge von Eingabebilddaten mit Bildrahmen. Der mindestens eine Prozessor ist dazu eingerichtet, einen Bezugsrahmen und mindestens einen Quellrahmen zu verarbeiten, die in der Folge von Eingabebilddaten innerhalb eines mit dem Bezugsrahmen verknüpften Fensters inbegriffen sind, wobei Schichten eines ersten neuronalen Netzwerks verwendet werden, um Merkmale für den Bezugsrahmen und den mindestens einen Quellrahmen innerhalb des Fensters zu extrahieren. Der mindestens eine Prozessor ist ferner dazu eingerichtet, ein gemessenes DPV für den Bezugsrahmen beruhend auf den Merkmalen für den Bezugsrahmen und verzerrten Versionen der Merkmale für den mindestens einen Quellrahmen zu erzeugen und eine Tiefenkarte und eine Konfidenzkarte beruhend auf dem gemessenen DPV zu erzeugen. Das gemessene DPV umfasst ein 2D-Feld von Wahrscheinlichkeitswerten für jeden aus einer Vielzahl von Kandidatentiefenwerten.
  • In einer Ausführungsform umfasst das System ferner einen Bildsensor, der dazu eingerichtet ist, die Folge von Eingabebilddaten zu erfassen. In einer Ausführungsform umfasst das System auch ein Positionserfassungsteilsystem, das dazu eingerichtet ist, die relativen Kamerapositionsinformationen zu erzeugen. In einigen Ausführungsformen umfasst das Positionserkennungsteilsystem eine Trägheitsmesseinheit.
  • In einer Ausführungsform wird ein nichtflüchtiges, rechnerlesbares Medium offenbart, das Rechneranweisungen zur Schätzung einer Tiefe speichert. Die Anweisungen veranlassen, wenn sie von einem oder mehreren Prozessoren ausgeführt werden, den einen oder die mehreren Prozessoren dazu, die Schritte auszuführen eines Empfangens einer Folge von Eingabebilddaten mit Bildrahmen einer Szene; eines Verarbeitens eines Referenzrahmens und mindestens eines Quellrahmens, der in der Folge von Eingabebilddaten innerhalb eines mit dem Referenzrahmen verknüpften Fensters enthalten ist, unter Verwendung von Schichten eines ersten neuronalen Netzwerks, um Merkmale für den Referenzrahmen und den mindestens einen Quellrahmen innerhalb des Fensters zu extrahieren; eines Erzeugens eines gemessenen DPV für den Bezugsrahmen beruhend auf den Merkmalen für den Bezugsrahmen und verzerrten Versionen der Merkmale für den mindestens einen Quellrahmen; und eines Erzeugens einer Tiefenkarte und einer Konfidenzkarte beruhend auf dem gemessenen DPV. In einer Ausführungsform umfasst das gemessene DPV ein 2D-Feld von Wahrscheinlichkeitswerten für jeden aus einer Vielzahl von Tiefenwerten, die mit dem Bezugsrahmen verknüpft sind. Jedes Element des 2D-Felds zeigt eine Wahrscheinlichkeit an, dass ein bestimmtes Pixel oder eine Teilmenge von Pixeln des Bezugsrahmens auf einem Objekt beruht, das sich in der Szene an einem zugehörigen Kandidaten-Tiefenwert befindet.
  • Figurenliste
    • 1 veranschaulicht ein Flussdiagramm eines Verfahrens gemäß einer Ausführungsform zum Schätzen einer Tiefe unter Verwendung einer Folge von Bildrahmen von einem monokularen Bildsensor.
    • 2A veranschaulicht ein System, das gemäß einer Ausführungsform dazu eingerichtet ist, mit einem Bildrahmen verknüpfte Merkmale zu extrahieren.
    • 2B ist eine konzeptionelle Darstellung eines Tiefenwahrscheinlichkeitsvolumens gemäß einer Ausführungsform, wie es in Übereinstimmung mit einem Sichtstumpf definiert ist, der mit einem monokularen Bildsensor verknüpft ist.
    • 3 veranschaulicht eine Parallelverarbeitungseinheit gemäß einer Ausführungsform.
    • 4A veranschaulicht einen Allgemeinverarbeitungscluster gemäß einer Ausführungsform innerhalb der Parallelverarbeitungseinheit von 3.
    • 4B veranschaulicht eine Speicherteileinheit der Parallelverarbeitungseinheit von 3 gemäß einer Ausführungsform.
    • 5A veranschaulicht den Streaming-Multiprozessor von 4A gemäß einer Ausführungsform.
    • 5B ist ein konzeptionelles Diagramm eines unter Verwendung der PPU von 3 implementierten Verarbeitungssystems gemäß einer Ausführungsform.
    • 5C veranschaulicht ein beispielhaftes System, in dem die verschiedenen Architekturen und/oder Funktionen der verschiedenen vorherigen Ausführungsformen implementierbar sind.
    • 6 ist ein konzeptionelles Diagramm einer durch die PPU von 3 implementierten Grafikverarbeitungspipeline gemäß einer Ausführungsform.
    • 7 ist ein konzeptionelles Diagramm, das ein System gemäß einiger Ausführungsformen veranschaulicht, das Instanzen des neuronalen Netzmodells nutzt, um ein gemessenes DPV für einen mit einem Gleitfenster verknüpften Bezugsrahmen zu erzeugen.
    • 8 ist ein konzeptionelles Diagramm einer Betriebsumgebung eines Systems, das gemäß einiger Ausführungsformen dazu eingerichtet ist, eine Folge von Bildrahmen unter Verwendung eines monokularen Bildsensors zu erfassen.
    • 9 veranschaulicht ein Gleitfenster, das sich gemäß einiger Ausführungsformen über einen Zeitraum von t bis t+1 bewegt.
    • 10 veranschaulicht ein System gemäß einer Ausführungsform zur Integration gemessener DPVs im Zeitverlauf, um eine Unsicherheit zu verringern.
    • 11 veranschaulicht ein System gemäß einer anderen Ausführungsform zur Integration gemessener DPVs im Zeitverlauf, um durch eine globale Dämpfungsmethode eine Unsicherheit zu verringern.
    • 12 veranschaulicht ein System gemäß einer weiteren Ausführungsform zur Integration gemessener DPVs im Zeitverlauf, um durch eine adaptive Dämpfungstechnik eine Unsicherheit zu verringern.
    • 13 veranschaulicht ein System gemäß einiger Ausführungsformen zur Verfeinerung des aktualisierten DPV.
    • Die 14A und 14B veranschaulichen ein Flussdiagramm eines Verfahrens gemäß einer anderen Ausführungsform zum Schätzen einer Tiefe eines mit einem monokularen Bildsensor aufgenommenen Videodatenstroms.
  • DETAILLIERTE BESCHREIBUNG
  • Die hierin beschriebenen Methoden verwenden neuronale Netze zum Schätzen von Tiefeninformationen aus einer Folge von Bildern, die mit einem monokularen Bildsensor aufgenommen wurden. Die Tiefeninformation wird durch Filtern von Ergebnissen des neuronalen Netzwerks über eine Anzahl von Rahmen geschätzt, die in einem Gleitfenster enthalten sind, das mit der Bildfolge verknüpft ist. Ein neuronales Netzwerk wird verwendet, um kontinuierlich eine Tiefe und deren Unsicherheit aus den von einem monokularen Bildsensor empfangenen Videodatenströmen zu schätzen, um genaue, robuste und zeitlich stabile Tiefenwahrscheinlichkeitsverteilungen für die Videodatenstromrahmen bereitzustellen.
  • Das System besteht aus drei neuronalen Netzwerkmodulen: D-Net, K-Net und R-Net. Der negative Log-Likelihood-(NLL)-Verlust über die Tiefe wird verwendet, um das gesamte Netzwerk Ende-zu-Ende zu trainieren. Das erste neuronale Netzwerkmodul, D-Net, kann dazu verwendet werden, Bildmerkmale aus Einzelbildrahmen zu extrahieren. Die extrahierten Bildmerkmale können verwendet werden, um direkt ein DPV für den Bildrahmen zu schätzen, das einem nichtparametrischen Volumen entspricht, das durch einen Stumpf aus Voxeln mit Ursprung am Bildsensor repräsentiert wird. Eine verbesserte Sicherheit in der Schätzung kann jedoch durch Kombination der extrahierten Merkmale für einen Bezugsrahmen und entsprechender extrahierter Merkmale für mindestens einen zu dem Bezugsrahmen benachbarten Quellrahmen erreicht werden, wobei die Merkmale jedes Quellrahmens durch eine Verzerrungsfunktion verzerrt werden, um inneren Parametern des Bezugsrahmens zu entsprechen. Die extrahierten Merkmale für den Bezugsrahmen und die verzerrten Merkmale für den mindestens einen Quellrahmen werden mit Hilfe einer Softmax-Funktion gefiltert, um ein gemessenes DPV für den Bezugsrahmen zu erzeugen, das auf einer Vielzahl von Bildrahmen innerhalb eines Zeitintervalls und nicht auf einem Einzelbildrahmen (oder einem Stereobildrahmen) beruht, der zu einem bestimmten Zeitpunkt aufgenommen wurde.
  • Das zweite neuronale Netzwerkmodul, K-Net, integriert ein vorhergesagtes DPV zeitlich, um die zeitliche Stabilität des Systems zu erhöhen. Das gemessene DPV für den aktuellen Frame wird mit einem vorhergesagten DPV verglichen, das eine verzerrte Version des gemessenen DPV aus einem früheren Rahmen ist, wobei das Restsignal des Vergleichs von den Schichten des zweiten neuronalen Netzwerks verarbeitet wird, um ein verbleibendes Verstärkungsvolumen zu erzeugen, das elementweise mit dem vorhergesagten DPV über verschiedene Rahmen akkumuliert wird, sobald neue Beobachtungen eintreffen, um ein aktualisiertes DPV zu erzeugen. Auswirkungen einer Ausbreitung von Tiefenfehlern von Rahmen zu Rahmen können mit dieser adaptiven Dämpfungstechnik berücksichtigt und gemildert werden.
  • In einigen Ausführungsformen kann das zweite neuronale Netzwerk aus dem System weggelassen werden und eine globale Dämpfungstechnik oder keine Dämpfung kann verwendet werden, um das aktualisierte DPV zu erzeugen. Ohne Dämpfung werden das vorhergesagte DPV und das gemessene DPV ohne relative Gewichtung kombiniert. Folglich können sich falsche Informationen, die durch das erste neuronale Netzwerk im gemessenen DPV geschätzt werden, von Rahmen zu Rahmen durch das vorhergesagte DPV ausbreiten. Bei globaler Dämpfung wird ein Gewicht auf den vorhergesagten DPV in Kombination mit dem gemessenen DPV angewendet, um den Effekt der Ausbreitung von falscher Informationen von Rahmen zu Rahmen zu verringern.
  • Das dritte neuronale Netzwerk, R-Net, verfeinert das aktualisierte DPV beruhend auf den Merkmalen, die durch das erste neuronale Netzwerk aus dem Bezugsrahmen extrahiert wurden, um das aktualisierte DPV hochabzutasten, um eine ursprüngliche Auflösung der Folge von Bildrahmen zu erreichen. In einigen Ausführungsformen kann das dritte neuronale Netzwerk weggelassen werden, wenn beispielsweise die von dem ersten neuronalen Netzwerk extrahierten Merkmale mit der gleichen Auflösung im Pixelraum wie die Folge von Bildrahmen erzeugt werden oder wenn das aktualisierte DPV in eine Tiefenkarte mit der niedrigeren Auflösung umgewandelt wird.
  • Die neuronalen Netzwerkmodule können zumindest teilweise durch eine GPU, CPU oder einen beliebigen Prozessor implementiert werden, der imstande ist, eine oder mehrere Komponenten der neuronalen Netzwerke zu implementieren. In einer Ausführungsform kann jedes neuronale Netzwerk zumindest teilweise auf einer Parallelverarbeitungseinheit implementiert werden. Beispielsweise kann eine Faltungsschicht als eine Reihe von Anweisungen implementiert werden, die auf der Parallelverarbeitungseinheit ausgeführt werden, wobei Berechnungen für verschiedene Elemente einer Merkmalskarte parallel berechnet werden.
  • Anerkannterweise sind die im Folgenden näher beschriebenen Methoden nützlich, um die Genauigkeit und zeitliche Stabilität der Tiefenschätzung von mit einem monokularen Bildsensor aufgenommenen Bildrahmen zu verbessern. Die Anwendungen für eine Nutzung der Tiefeninformationen sind vielfältig, können aber Robotik, autonomes Fahren und 3D-Modellgenerierung umfassen.
  • 1 veranschaulicht ein Flussdiagramm eines Verfahrens gemäß einer Ausführungsform zum Schätzen einer Tiefe unter Verwendung einer Folge von Bildrahmen eines monokularen Bildsensors. Obwohl Verfahren 100 im Zusammenhang mit einer Verarbeitungseinheit beschrieben wird, kann das Verfahren 100 auch durch ein Programm, eine benutzerdefinierte Schaltung oder durch eine Kombination aus einer benutzerdefinierten Schaltung und einem Programm durchgeführt werden. Beispielsweise kann das Verfahren 100 von einer GPU (Grafikprozessoreinheit), einer CPU (Zentralverarbeitungseinheit) oder einem beliebigen Prozessor ausgeführt werden, der imstande ist, eine Tiefe unter Verwendung einer Folge von Bildrahmen zu schätzen. Darüber hinaus werden Fachleute verstehen, dass jedes System, das die Methode 100 durchführt, im Geltungsbereich und Sinn der Ausführungsformen der vorliegenden Offenbarung liegt.
  • Bei Schritt 102 wird eine Folge von Bilddaten empfangen. In einer Ausführungsform umfasst die Folge von Bilddaten eine Vielzahl von Bildrahmen, die von einem monokularen Bildsensor über einen bestimmten Zeitraum aufgenommen werden. Jeder Bildrahmen in der Folge von Bilddaten wird zu einem bestimmten Zeitpunkt in dem Zeitraum erfasst. Innerhalb des Zeitraums kann ein mit einer Anzahl von Bildrahmen (z.B. fünf Bildrahmen) in der Vielzahl von Bildrahmen verknüpftes Gleitfenster definiert werden.
  • In einer Ausführungsform kann der monokulare Bildsensor dazu eingerichtet werden, Bildsensorstellen abzutasten, um Intensitätswerte für ein bestimmtes, mit einem oder mehreren Kanälen des Bildes verknüpftes Pixel zu identifizieren. Der Bildsensor ist dazu eingerichtet, Pixeldaten für den Bildrahmen in einer Datenstruktur in einem Speicher zu speichern. Die Datenstruktur ist dazu eingerichtet, Pixeldaten für ein 2D-Feld von Pixeln für jeden Kanal des Bildrahmens zu speichern. In einer Ausführungsform umfassen die Pixeldaten Pixelwerte, die drei Komponenten umfassen: eine Rotkomponente, eine Grünkomponente und eine Blaukomponente. Datenstrukturen für mehrere Bildrahmen in der Folge von Eingabebilddaten werden im Speicher abgelegt und sind für einen Prozessor zugänglich.
  • Bei Schritt 104 werden ein Bezugsrahmen und mindestens ein Quellrahmen, der in einem mit der Folge von Bilddaten verknüpften Gleitfenster enthalten ist, durch Schichten eines ersten neuronalen Netzwerks verarbeitet, um Merkmale für den Bezugsrahmen und den mindestens einen Quellrahmen zu extrahieren. In einer Ausführungsform ist der Bezugsrahmen in dem Gleitfenster zentriert und mindestens ein Quellrahmen ist in dem Gleitfenster vor und/oder nach dem Bezugsrahmen enthalten. Die extrahierten Merkmale enthalten eine Schätzung der gesamten statistischen Tiefenverteilung für eine vorgegebene Szene, die von jedem Bildrahmen aufgenommen wurde.
  • In einer Ausführungsform werden die Attribute des ersten neuronalen Netzwerks (z.B. Gewichte und/oder Schwellwerte) trainingsbegleitend beruhend auf einer Verlustfunktion angepasst, die die von dem ersten neuronalen Netzwerk erzeugten extrahierten Merkmale mit den im Trainingsdatensatz enthaltenen tatsächlichen Zielmerkmalen vergleicht. Der Satz von Trainingsdaten trainiert das neuronale Netzwerk darauf, beruhend auf den Merkmalen des Bildrahmens Tiefenwahrscheinlichkeitsverteilungen genauer zu schätzen.
  • Bei Schritt 106 wird beruhend auf extrahierten Merkmalen für den Bezugsrahmen und den extrahierten Merkmalen für den mindestens einen Quellrahmen ein gemessenes DPV für den Bezugsrahmen erzeugt. In einer Ausführungsform wird das erste neuronale Netzwerk darauf trainiert, Merkmale aus einem RGB-Einzelbild unter Verwendung eines computergenerierte Bilder und entsprechende Karten tatsächlicher Merkmale umfassenden Satzes von Trainingsdaten zu extrahieren. Zusätzlich werden die durch das erste neuronale Netzwerk für den mindestens einen Quellrahmen extrahierten Merkmale so verzerrt, dass sie einer Darstellung der Merkmale für den Bezugsrahmen entsprechen, und dann werden die Merkmale für den Bezugsrahmen mit den verzerrten Merkmalen für den mindestens einen Quellrahmen kombiniert, um ein gemessenes DPV für den Bezugsrahmen zu erzeugen. In einer Ausführungsform umfasst die Kombination ein Schätzen des Euklidischen Abstands zwischen den Merkmalen des Bezugsrahmens und den verzerrten Merkmalen eines jeden der Quellrahmen und ein Anwenden einer Softmax-Funktion längs der Tiefendimension auf eine Summe der Unterschiede über alle Quellrahmen im Gleitfenster.
  • In einer Ausführungsform umfasst ein DPV einen Satz von 2D-Feldern von Wahrscheinlichkeitswerten. Jedes 2D-Feld in dem Satz umfasst die Wahrscheinlichkeitswerte für einen bestimmten Tiefenwertkandidaten einer Vielzahl von mit dem Bildrahmen verknüpften Tiefenwertkandidaten. Jedes Element des 2D-Felds gibt eine Wahrscheinlichkeit an, dass ein bestimmtes Pixel oder eine Teilmenge von Pixeln des Bildrahmens auf einem Objekt beruht, das sich in der Szene an dem entsprechenden Tiefenwertkandidaten befindet.
  • Mit anderen Worten umfasst das DPV eine Vielzahl von Kanälen, wobei jeder Kanal ein 2D-Feld von Wahrscheinlichkeitswerten umfasst, die einem bestimmten Tiefenkandidatenwert entsprechen.
  • Wie hierin verwendet bezieht sich der Begriff „gemessener DPV“ auf ein DPV, das beruhend auf einer Vielzahl von mit den im Gleitfenster enthaltenen Bildrahmen verknüpften Merkmalen berechnet wird. Das gemessene DPV entspricht einem Zeitraum, in dem mehrere Bildrahmen von dem Bildsensor aufgenommen werden, obwohl das gemessene DPV nur mit einem Schlüsselbezugsrahmen innerhalb des Gleitfensters verknüpft ist.
  • Bei Schritt 108 werden beruhend auf dem gemessenen DPV eine Tiefenkarte und eine Konfidenzkarte erzeugt. In einigen Ausführungsformen können die Tiefenkarte und die Konfidenzkarte direkt auf dem gemessenen DPV beruhend erzeugt werden. In weiteren Ausführungsformen können die Tiefenkarte und die Konfidenzkarte indirekt auf dem gemessenen DPV beruhend erzeugt werden, wie z.B. die direkte Berechnung der Tiefenkarte und/oder der Konfidenzkarte unter Verwendung eines anderen, aus dem gemessenen DPV abgeleiteten DPV, wie beispielsweise einer aktualisierten oder verfeinerten Version des gemessenen DPV.
  • In einer Ausführungsform kann das gemessene DPV gedanklich beschrieben werden als: p ( d ;   u ,   v ) ,
    Figure DE102019130889A1_0001
    wobei d einen Tiefenkandidaten in dem Bereich von d ∈ [dmin, dmax] und 〈u, v〉 die Pixelkoordinaten in dem Bezugsrahmen darstellen. Aufgrund von mit der Aufnahme von Bildrahmen mit einem monokularen Bildsensor in Kombination mit optischen Komponenten wie beispielsweise einem Objektiv verknüpfter perspektivischer Projektion wird das gemessene DPV auf einem Sichtstumpf definiert, der virtuell am Bildsensor an einer Position zu einem Zeitpunkt angebracht ist, der der Aufnahme des Bezugsrahmens entspricht. Die Parameter dmin und dmax sind die nahen und fernen Kappungsebenen des Stumpfes.
  • Anhand des gemessenen DPV kann eine Maximum-Likelihood-Schätzung (MLE) für Tiefe und Konfidenz wie folgt berechnet werden: d ^ ( u ,   v ) = d m i n d m a x p ( d ;   u ,   v ) d
    Figure DE102019130889A1_0002
    C ^ ( u ,   v ) = p ( d ^ ;   u ,   v )
    Figure DE102019130889A1_0003
  • Anerkannterweise beziehen sich Gleichungen 2 und 3 auf eine zweidimensionale Tiefenkarte bzw. eine zweidimensionale Konfidenzkarte.
    Für jedes Pixel (oder jede Teilmenge von Pixeln) des Bezugsrahmens enthält die Tiefenkarte die wahrscheinlichste Schätzung des Tiefenwerts für das Pixel (oder die Teilmenge von Pixeln) gemäß dem gemessenen DPV und die Konfidenzkarte enthält den Wahrscheinlichkeitswert für den aus dem gemessenen DPV abgetasteten Tiefenkandidaten.
  • In einer Ausführungsform werden die durch das erste neuronale Netzwerk extrahierten Merkmale und anschließend das gemessene DPV, Tiefenkarte und/oder Konfidenzkarte mit einer niedrigeren Auflösung erzeugt als die Bildrahmen in der Folge von Eingabebildern. Beispielsweise können die Merkmale bei ¼ der Auflösung in beiden Dimensionen des Pixelraums extrahiert werden, und damit stellt jede Abtastung des gemessenen DPV einen 4 × 4 Pixelblock des Referenzbildes dar.
  • Es werden nun weitere veranschaulichende Informationen zu verschiedenen optionalen Architekturen und Merkmalen angegeben, mit denen das vorgenannte Rahmenkonzept nach den Wünschen des Benutzers implementiert werden kann. Es sei ausdrücklich darauf hingewiesen, dass die folgenden Informationen zur Veranschaulichung aufgeführt sind und nicht als einschränkend ausgelegt werden sollten. Jedes der folgenden Merkmale kann wahlweise mit oder ohne Ausschluss anderer Merkmalen verkörpert werden.
  • 2A veranschaulicht ein System 200 gemäß einer Ausführungsform, das dazu eingerichtet ist, Merkmale 204 aus einem Bildrahmen 202 zu extrahieren. Wie in 2A darstellt umfasst das System 200 ein erstes neuronales Netzwerk 210. Das erste neuronale Netzwerk 210 umfasst eine Reihe von Schichten, die dazu eingerichtet sind, den Bildrahmen 202 sequentiell zu verarbeiten, um die Merkmale 204 zu extrahieren.
  • In einer Ausführungsform ist das erste neuronale Netzwerk 210 ein faltendes neuronales Netzwerk (CNN), das ein Raumpyramidenmodul mit einer Reihe von Verzweigungen umfasst. Die Eingabe für das erste neuronale Netzwerk 210 ist ein Bildrahmen 202, der drei Kanäle aufweist, wobei jeder Kanal im Pixelraum Abmessungen von H x W aufweist. Die Auflösung der Eingabe kann festgelegt werden, wie etwa 512 Pixel mal 512 Pixel. Alternativ kann die Eingabe beschnitten, aufgefüllt, gedehnt oder anderweitig manipuliert werden, um eine festgelegte Auflösung zu erreichen, die von der ersten Schicht des CNN gefordert wird. Anerkannterweise kann das CNN so eingerichtet sein, dass es Eingaben jeder Größe verarbeiten kann, einschließlich z.B. Bildrahmen mit einer Auflösung von 1080 × 1920 Pixeln.
  • In einer Ausführungsform umfassen die Schichten des ersten neuronalen Netzwerks 210 eine Vielzahl von Faltungsschichten 212, die dazu eingerichtet sind, eine räumliche Auflösung der Eingabe- und Extraktmerkmale des Bildrahmens 202 zu reduzieren. Die Merkmale des Bildrahmens 202 werden durch die verschiedenen Kanäle der Ausgabe jeder Schicht dargestellt.
  • In einer Ausführungsform umfasst die Vielzahl der Faltungsschichten 212 eine Anzahl von Stufen, wobei jede Stufe eine oder mehrere Faltungsschichten umfasst. Eine erste Stufe umfasst drei Faltungsschichten. Eine erste Faltungsschicht wendet auf jeden Kanal des Bildrahmens 202 einen Faltungsvorgang unter Verwendung eines 3 × 3-Faltungskerns an. Die erste Faltungsschicht kann dazu eingerichtet sein, eine Ausgabe mit 32 Kanälen zu erzeugen, wobei jeder Kanal aufgrund des Faltungsvorgangs unter Verwendung eines Schrittes von 2 in jeder Dimension des Pixelraums Abmessungen von H/2 × W/2 aufweist.
    In einigen Ausführungsformen folgt auf die erste Faltungsschicht eine Aktivierungsfunktion, wie etwa eine Aktivierungsfunktion, die von einer gleichgerichteten Lineareinheit (ReLU), einer leckenden ReLU oder einer Sigmoid-Funktion implementiert wird.
  • In einer Ausführungsform werden die von der Aktivierungsfunktion ausgegebenen Aktivierungen als Eingabe für eine zweite Faltungsschicht der ersten Stufe bereitgestellt. Die zweite Faltungsschicht wendet auf jeden Kanal der Eingabe zur zweiten Faltungsschicht einen Faltungsvorgang unter Verwendung eines 3 × 3 Faltungskerns an. Der Faltungsvorgang der zweiten Faltungsschicht verwendet einen Schritt von 1 in jeder Dimension des Pixelraums, und daher bleiben die Abmessungen im Pixelraum jedes Kanals der Ausgabe der zweiten Faltungsschicht gleich wie die Abmessungen im Pixelraum der Eingabe zur zweiten Faltungsschicht. Der zweiten Faltungsschicht kann eine weitere Aktivierungsfunktion folgen. In einer Ausführungsform folgt auf die zweite Faltungsschicht eine dritte Faltungsschicht, ähnlich der zweiten Schicht, die jedoch dazu eingerichtet ist, andere Faltungskerne zu verwenden (z.B. Kerne mit anderen Werten für die Kernkoeffizienten).
  • Eine zweite Stufe folgt auf die erste Stufe und umfasst eine Anzahl weiterer Faltungsschichten. Mindestens eine Faltungsschicht in der zweiten Stufe implementiert einen Faltungsvorgang unter Verwendung eines Schrittes von 2, um die räumliche Auflösung jedes Kanals der Ausgabe im Pixelraum im Vergleich zur Eingabe zu reduzieren.
  • Auf die zweite Stufe folgen eine dritte Stufe, eine vierte Stufe und eine fünfte Stufe. In einer Ausführungsform ist die Ausgabe der letzten Faltungsschicht in den Faltungsschichten 212 eine Ausgabe mit 128 Kanälen, wobei jeder Kanal Abmessungen von H/4 × W/4 aufweist, wobei H und W die Höhe und Breite des Bildrahmens 202 sind. Der von jeder der zusätzlichen Faltungsschichten angewandte Faltungsvorgang kann in einer Ausführungsform einen 3 × 3 Faltungskern verwenden. In anderen Ausführungsformen können jedoch anstelle des 3 × 3 Faltungskerns auch verschieden große Faltungskerne verwendet werden. Darüber hinaus kann jede der Faltungsschichten in verschiedenen Ausführungsformen verschieden große Faltungskerne verwenden. Beispielsweise kann eine Faltungsschicht einen 5 × 5 Faltungskern verwenden, während eine andere Faltungsschicht einen 3 × 3 Faltungskern verwenden kann.
  • In einer Ausführungsform implementiert mindestens eine Faltungsschicht einen aufweitenden Faltungsvorgang. Wie hierin verwendet bezieht sich ein aufweitender Faltungsvorgang auf einen Faltungsvorgang, bei der die Koeffizienten auf eine Teilmenge von Elementen innerhalb eines erweiterten Fensters der Eingabe angewendet werden. So wird beispielsweise bei einem Aufweitungsfaktor von 2 ein 3 × 3 Faltungskern auf ein 5 × 5 Fenster von Elementen angewendet, wobei jedes zweite Element so übersprungen wird, dass 9 Koeffizienten auf eine Teilmenge von 9 Elementen innerhalb des 5 × 5 Fensters angewendet werden. Aufweitende Faltungsvorgänge erhöhen das Empfangsfeld jedes Pixels, ohne die Anzahl der für die Schicht vorhergesagten Koeffizienten zu erhöhen, die erforderlich wären, wenn die Schicht einen Faltungsvorgang mit einem größeren Faltungskern implementieren würde.
  • In einer Ausführungsform wird die Ausgabe der letzten Faltungsschicht einem Raumpyramidenmodul zugeführt, das eine Vielzahl von Verzweigungen 214 umfasst. Jede Verzweigung 214 kann eine Bündelungsschicht, eine Faltungsschicht, eine Aktivierungsfunktion und eine bilineare Interpolationsschicht umfassen. In einer Ausführungsform umfasst jede Verzweigung 214 eine Bündelungsschicht mit einem anderen Bündelungsfenster und einer anderen Schrittgröße. Beispielsweise kann in einer Ausführungsform die Vielzahl der Verzweigungen 214 vier Verzweigungen umfassen: (1) eine erste Verzweigung 214-1, die eine Bündelungsschicht unter Verwendung eines Bündelungsfensters der Größe 64 × 64 und eines Schrittes von 64 implementiert; (2) eine zweite Verzweigung 214-2, die eine Bündelungsschicht unter Verwendung eines Bündelungsfensters der Größe 32 × 32 und eines Schrittes von 32 implementiert; (3) eine dritte Verzweigung 214-3, die eine Bündelungsschicht unter Verwendung eines Bündelungsfensters der Größe 16 × 16 und Schritt von 16 implementiert; und (4) eine vierte Verzweigung 214-4, die eine Bündelungsschicht unter Verwendung eines Bündelungsfensters der Größe 8 × 8 und eines Schrittes von 8 implementiert. Die Faltungsschicht jeder Verzweigung 214 wendet auf die Ausgabe der Bündelungsschicht einen Faltungsvorgang unter Verwendung eines 1 × 1 Faltungskerns an. Die Faltungsschicht reduziert auch die Anzahl der Kanäle der Eingabe von 128 Kanälen auf 32 Kanäle. Die Aktivierungsfunktion kann z.B. durch eine ReLU implementiert sein.
  • Die bilineare Interpolationsschicht übernimmt dann die herabgetasteten Aktivierungen aus der ReLU und tastet die Aktivierungen wieder auf die ursprüngliche Auflösung der Eingabe in den Verzweigung 214 hoch. Beispielsweise berechnet die Bündelungsschicht der ersten Verzweigung 214-1 einen Mittelwert der Aktivierungen innerhalb jedes 64 × 64-Fensters und setzt einen entsprechenden Wert in der Ausgabe der Bündelungsschicht. Die Ausgabe der Bündelungsschicht wird in jeder Dimension im Pixelraum um einen Faktor von 64 in der Auflösung reduziert. Die Durchschnittswerte in dieser herabgetasteten Ausgabe der Bündelungsschicht werden nach späterer Modifikation durch die Faltungsschicht und die Aktivierungsfunktion dann wieder auf die ursprüngliche Auflösung der Eingabe hochgetastet, die im Falle der ersten Verzweigung 214-1 64 × 64 interpolierte Werte für jeden Wert der herabgetasteten Eingabe an die bilineare Interpolationsschicht erzeugt.
  • Anerkannterweise filtert jede Verzweigung 214 die Eingabe im Wesentlichen mit einer anderen räumlichen Auflösung und tastet dann das Ergebnis in eine an der Eingabe von allen der Verzweigungen 214 gemeinsame Auflösung hoch. Die Ausgabe jeder der Vielzahl von Verzweigungen 214 wird dann über eine Verkettungsschicht 216 mit den Ausgaben einer oder mehrerer Schichten der Faltungsschichten 212 verkettet. In einer Ausführungsform wird die Ausgabe einer jeden der Vielzahl von Verzweigungen 214 mit der Ausgabe der letzten Faltungsschicht in den Faltungsschichten 212 (z.B. die Eingabe für die Verzweigungen 214) sowie einer zusätzlichen Zwischenfaltungsschicht 212, wie beispielsweise der Ausgabe der dritten Stufe der Faltungsschichten 212, verkettet. In einer Ausführungsform ist die Ausgabe der Verkettungsschicht 216 eine Ausgabe mit 320 Kanälen, wobei jeder Kanal Abmessungen von H/4 × W/4 aufweist. Die 320 Kanäle umfassen 32 Kanäle der Ausgabe einer jeden der Verzweigungen 214, 128 Kanäle von der letzten Faltungsschicht und 64 Kanäle von der Zwischenfaltungsschicht der Faltungsschichten 212.
  • In einer Ausführungsform wird die Ausgabe der Verkettungsschicht 216 einer oder mehreren Fusionsschichten 218 bereitgestellt. Die Fusionsschichten 218 können eine erste Faltungsschicht umfassen, die einen Faltungsvorgang mit einem 3 × 3 Faltungskern anwendet. Die Anzahl der Kanäle der Eingabe kann von z.B. 320 Kanälen auf 128 Kanäle reduziert werden. Die Fusionsschichten 218 können auch eine zweite Faltungsschicht umfassen, die einen Faltungsvorgang mit einem 1 × 1 Faltungskern anwendet. Die Anzahl der Kanäle der Eingabe kann von z.B. 128 Kanälen auf z.B. 64 Kanäle reduziert werden.
  • In einer Ausführungsform sind die Ausgaben der Fusionsschichten 218 die aus dem Bildrahmen 202 extrahierten Merkmale 204. Die Merkmale 204 können direkt dazu verwendet werden, ein DPV für den Bildrahmen 202 zu erzeugen. Beispielsweise stellt jeder Kanal der Ausgabe einen diskreten Tiefenwertkandidaten dar. Mit anderen Worten ist jeder Kanal der Merkmale 204 ist eine Merkmalskarte, die ein Bild (z.B. ein 2D-Feld von Werten) umfasst, das bei einer reduzierten Auflösung von H/4 × W/4 Werte in dem Bereich von [0,1] umfasst, die eine Wahrscheinlichkeit darstellen, dass ein bestimmtes Pixel oder eine Gruppe von Pixeln des Bildrahmens 202 mit einem bestimmten, diesem Kanal entsprechenden Tiefenwertkandidaten verknüpft ist. Anerkannterweise weisen in einer Ausführungsform die Kanäle der Merkmale 204 eine Auflösung auf, die geringer ist als die Auflösung des ursprünglichen Bildrahmens 202. Folglich kann jeder Wahrscheinlichkeitswert in der Wahrscheinlichkeitskarte für einen bestimmten Tiefenkandidaten mit einer Teilmenge von Pixeln in dem Bildrahmen 202 korrespondieren. In anderen Ausführungsformen ist das erste neuronale Netzwerk 210 dazu eingerichtet, die Merkmale 204 mit der gleichen Auflösung des Bildrahmens 202 zu extrahieren. In weiteren Ausführungsformen kann jeder Kanal der Merkmale 204 in einem Nachbearbeitungsschritt hochgetastet werden, z.B. durch bilineare Interpolation, um die Auflösung des Bildrahmens 202 anzupassen.
  • 2B ist eine konzeptionelle Darstellung eines DPV gemäß einer Ausführungsform, wie sie in Übereinstimmung mit einem mit einem monokularen Bildsensor 230 verknüpften Sichtstumpf 220 definiert ist. Der Stumpf 220 kann in eine Anzahl von Voxeln (volumetrisches Element) 234 unterteilt werden. Jedes Voxel 234 ist mit einem Pixel oder einer Teilmenge von Pixeln eines von dem monokularen Bildsensor 230 aufgenommenen Bildes verknüpft. Die Voxel 234 werden durch Schnittebenen 236 definiert, die sich an den verschiedenen Tiefenpositionen (z.B. 236-0, 236-1, 236-2, 236-3, 236-4, 236-5, 236-6 und 236-7) innerhalb der von dem monokularen Bildsensor 230 erfassten Szene befinden. Ein Satz von Voxeln 234 zwischen beliebigen zwei Schnittebenen 236 (z.B. zwischen den Schnittebenen 236-5 und 236-6) entspricht einem Kanal der Merkmale 204, wobei die Wahrscheinlichkeitswerte für diesen Kanal in den Merkmalen 204 vorhergesagte Wahrscheinlichkeiten sind, dass ein Objekt in der von dem monokularen Bildsensor 230 erfassten Szene ein Voxel 234 in dem Satz von Voxeln zwischen den beiden entsprechenden Schnittebenen 236 schneidet. Der Stumpf 220 definiert dabei ein mit dem DPV verknüpftes nichtparametrisches Volumen, wobei die Tiefen der jeweiligen Schnittebenen 236 mit zunehmendem Abstand vom Bildsensor 230 proportional zunehmen.
  • Wie in 2B dargestellt ist die Tiefe am Bildsensor 230 selbst Null und nimmt mit zunehmendem Abstand zum Bildsensor 230 zu (z.B. von 236-1 auf 236-7). Bei der Definition des Stumpfes können weniger oder mehr Schnittebenen 236 zugeordnet werden, aber anerkannterweise kann der Anzahl der und dem Maximalwert der für die Schnittebenen 236 verwendeten Tiefenwertkandidaten eine praktische Begrenzung auferlegt sein, obwohl ein Bildrahmen möglicherweise eine unendliche Tiefe darstellt. Darüber hinaus muss der Abstand zwischen den Schnittebenen nicht einheitlich sein. Beispielsweise kann der Abstand zwischen zwei beliebigen Schnittebenen 236 mit dem Abstand zum Bildsensor 230 zunehmen (z.B. linear oder exponentiell).
  • Die Merkmale 204 können als p(d; u, v) bezeichnet werden, was die Wahrscheinlichkeit darstellt, dass Pixel (u, v) einen Tiefenwert d aufweist, wobei d ∈[dmin, dmax]. Aufgrund der perspektivischen Projektion werden die Merkmale 204 bezüglich des am Bildsensor 230 angebrachten Stumpfes 220 definiert. Die Parameter dmin und dmax sind die nahen und fernen Kappungsebenen 236 des Stumpfes 220, der z.B. in N = 65 Ebenen über den Bereich der Tiefenkandidaten unterteilt ist, die 64 den 64 Kanälen der Merkmale 204 entsprechende Voxelsätze bilden. Die Merkmale 204 enthalten die vollständige statistische Verteilung der Wahrscheinlichkeiten von Objekten, die durch ein Pixel oder einen Block von Pixeln dargestellt werden, die sich in bestimmten Tiefen für eine vorgegebene, durch den Bildrahmen 202 aufgenommene Szene befinden.
  • Erneut können die Komponenten des Systems 200 zumindest teilweise auf einem Prozessor, wie etwa einer CPU, GPU oder jedem anderen Prozessor implementiert werden, der imstande ist, in Hardware, Software oder einer Kombination aus Hardware oder Software die hierin beschriebenen Funktionen zu implementieren. Ein solches Beispiel für eine Parallelverarbeitungseinheit, die imstande ist, die Schichten der neuronalen Netzwerkmodule zu implementieren, wird im Folgenden näher beschrieben.
  • Parallelverarbeitungsarchitektur
  • 3 veranschaulicht eine Parallelverarbeitungseinheit (PPU) 300 gemäß einer Ausführungsform. In einer Ausführungsform ist die PPU 300 ein Multithread-Prozessor, der auf einer oder mehreren integrierten Schaltungsvorrichtungen implementiert ist. Die PPU 300 ist eine latenzverbergende Architektur, die dazu ausgelegt wurde, viele Threads parallel zu verarbeiten. Ein Thread (z.B. ein Ausführungsthread) ist eine Instanziierung eines Satzes von Anweisungen, die dazu eingerichtet sind, durch die PPU 300 ausgeführt zu werden. In einer Ausführungsform ist die PPU 300 eine Grafikverarbeitungseinheit (GPU), die dazu eingerichtet ist, eine Grafikwiedergabe-Pipeline zum Verarbeiten dreidimensionaler (3D) Bilddaten zu implementieren, um zweidimensionale (2D) Bilddaten zur Anzeige auf einer Anzeigevorrichtung, wie etwa einer Flüssigkristallanzeigevorrichtung (LCD), zu erzeugen. In anderen Ausführungsformen kann die PPU 300 zur Durchführung von Allzweckberechnungen verwendet werden. Obwohl hierin ein beispielhafter Parallelprozessor zu veranschaulichenden Zwecken vorgesehen ist, soll ausdrücklich bemerkt werden, dass dieser Prozessor nur zu veranschaulichenden Zwecken dargelegt ist und dass jeder Prozessor als Ergänzung und/oder Ersatz für diesen einsetzbar ist.
  • Eine oder mehrere PPUs 300 können dazu eingerichtet sein, Tausende von Hochleistungsrechen-(HPC)-, Rechenzentrums- und maschinelle Lernanwendungen zu beschleunigen. Die PPU 300 kann dazu eingerichtet sein, zahlreiche Systeme und Deep-Learning-Anwendungen zu beschleunigen, darunter autonome Fahrzeugplattformen, Deep Learning, Hochpräzisions-Sprach-, Bild- und Texterkennungssysteme, intelligente Videoanalytik, molekulare Simulationen, Wirkstoffentdeckung, Krankheitsdiagnose, Wettervorhersage, Big-Data-Analytik, Astronomie, Molekulardynamiksimulation, Finanzmodellierung, Robotik, Fabrikautomatisierung, Echtzeit-Sprachübersetzung, Online-Suchoptimierung und personalisierte Benutzerempfehlungen und dergleichen.
  • Wie in 3 dargestellt umfasst die PPU 300 eine Eingabe-/Ausgabe-(I/O)-Einheit 305, eine Frontend-Einheit 315, eine Dispositionseinheit 320, eine Arbeitsverteilungseinheit 325, einen Sternverteiler 330, ein Koppelfeld (Xbar) 370, einen oder mehrere Allgemeinverarbeitungscluster (GPCs) 350 und eine oder mehrere Speicherteileinheiten 380. Die PPU 300 kann über eine oder mehrere Hochgeschwindigkeits-NVLink 310-Verbindungen mit einem Wirtsprozessor oder anderen PPUs 300 verbunden werden. Die PPU 300 kann über eine Verbindung 302 mit einem Wirtsprozessor oder anderen Peripheriegeräten verbunden werden. Die PPU 300 kann auch an einen lokalen Speicher angeschlossen werden, der eine Anzahl von Speichervorrichtungen 304 umfasst. In einer Ausführungsform kann der lokale Speicher eine Anzahl von dynamischen Wahlfreizugriffsspeicher-(DRAM)-Vorrichtungen umfassen. Die DRAM-Vorrichtungen können als Hochbandbreitenspeicher-(HBM)-Teilsystem eingerichtet sein, wobei mehrere DRAM-Dies in jeder Vorrichtung gestapelt sind.
  • Die NVLink 310-Verbindung ermöglicht es Systemen, eine oder mehrere PPUs 300 in Kombination mit einer oder mehreren CPUs zu skalieren und zu integrieren, unterstützt eine Zwischenspeicher-Kohärenz zwischen den PPUs 300 und CPUs, und ein CPU-Mastering. Daten und/oder Befehle können durch den NVLink 310 über den Sternverteiler 330 zu/von anderen Einheiten der PPU 300 übertragen werden, wie z.B. einer oder mehreren Kopiermaschinen, einem Video-Kodierer, einem Video-Dekodierer, einer Leistungsverwaltungseinheit usw. (nicht explizit dargestellt). Der NVLink 310 wird in Verbindung mit 5B näher beschrieben.
  • Die I/O-Einheit 305 ist dazu eingerichtet, Kommunikation (z.B. Befehle, Daten usw.) von einem Wirtsprozessor (nicht dargestellt) über die Verbindung 302 zu senden und zu empfangen. Die I/O-Einheit 305 kann mit dem Wirtsprozessor direkt über die Verbindung 302 oder über eine oder mehrere Zwischenvorrichtungen, wie beispielsweise eine Speicherbrücke, kommunizieren. In einer Ausführungsform kann die I/O-Einheit 305 mit einem oder mehreren anderen Prozessoren kommunizieren, wie beispielsweise einer oder mehreren der PPUs 300 über die Verbindung 302. In einer Ausführungsform implementiert die I/O-Einheit 305 eine Peripheriekomponentenverbindungs-Express-(PCIe)-Schnittstelle für die Kommunikation über einen PCIe-Bus und die Verbindung 302 ist ein PCIe-Bus. In alternativen Ausführungsformen kann die I/O-Einheit 305 andere Arten von bekannten Schnittstellen zur Kommunikation mit externen Vorrichtungen implementieren.
  • Die I/O-Einheit 305 dekodiert Pakete, die über die Verbindung 302 empfangen werden. In einer Ausführungsform stellen die Pakete Befehle dar, die dazu eingerichtet sind, die PPU 300 zu veranlassen, verschiedene Vorgänge durchzuführen. Die I/O-Einheit 305 überträgt die dekodierten Befehle an verschiedene andere Einheiten der PPU 300, wie in den Befehlen angegeben. Beispielsweise können einige Befehle an die Frontend-Einheit 315 übertragen werden. Andere Befehle können an den Sternverteiler 330 oder andere Einheiten der PPU 300 übertragen werden, wie z.B. eine oder mehrere Kopiermaschinen, ein Video-Kodierer, ein Video-Dekodierer, eine Leistungsverwaltungseinheit usw. (nicht explizit dargestellt). Mit anderen Worten ist die I/O-Einheit 305 dazu eingerichtet, die Kommunikation zwischen und unter den verschiedenen logischen Einheiten der PPU 300 zu leiten.
  • In einer Ausführungsform kodiert ein vom Wirtsprozessor ausgeführtes Programm einen Befehlsstrom in einen Puffer, der der PPU 300 Arbeitslasten zur Verarbeitung bereitstellt. Eine Arbeitslast kann mehrere Anweisungen und Daten umfassen, die durch diese Anweisungen verarbeitet werden sollen. Der Puffer ist ein Bereich in einem Speicher, der sowohl für den Wirtsprozessor als auch für die PPU 300 zugänglich ist (z.B. Lesen/Schreiben). Beispielsweise kann die I/O-Einheit 305 dazu eingerichtet sein, auf den Puffer in einem Systemspeicher zuzugreifen, der mit der Verbindung 302 über Speicheranforderungen verbunden ist, die über die Verbindung 302 übertragen werden. In einer Ausführungsform schreibt der Wirtsprozessor den Befehlsstrom in den Puffer und sendet dann einen Zeiger auf den Anfang des Befehlsstroms an die PPU 300. Die Frontend-Einheit 315 empfängt Zeiger auf einen oder mehrere Befehlsströme. Die Frontend-Einheit 315 verwaltet einen oder mehrere Ströme, liest Befehle aus den Strömen und leitet Befehle an die verschiedenen Einheiten der PPU 300 weiter.
  • Die Frontend-Einheit 315 ist mit einer Dispositionseinheit 320 gekoppelt, die die verschiedenen GPCs 350 dazu einrichtet, Aufgaben zu verarbeiten, die durch den einen oder die mehrere Ströme definiert sind. Die Dispositionseinheit 320 ist dazu eingerichtet, Zustandsinformationen bezüglich der verschiedenen Aufgaben zu verfolgen, die von der Dispositionseinheit 320 verwaltet werden. Der Zustand kann anzeigen, welchem GPC 350 eine Aufgabe zugeordnet ist, ob die Aufgabe aktiv oder inaktiv ist, eine mit der Aufgabe verknüpfte Prioritätsstufe und so weiter. Die Dispositionseinheit 320 verwaltet die Ausführung einer Vielzahl von Aufgaben auf einem oder mehreren GPCs 350.
  • Die Dispositionseinheit 320 ist mit einer Arbeitsverteilungseinheit 325 gekoppelt, die dazu eingerichtet ist, Aufgaben zur Ausführung auf den GPCs 350 zu verteilen. Die Arbeitsverteilungseinheit 325 kann eine Anzahl von geplanten Aufgaben verfolgen, die von der Dispositionseinheit 320 empfangen wurden. In einer Ausführungsform verwaltet die Arbeitsverteilungseinheit 325 für jeden der GPCs 350 einen Pool schwebender Aufgaben und einen Pool aktiver Aufgaben. Der Pool schwebender Aufgaben kann eine Anzahl von Schlitzen (z.B. 32 Schlitze) umfassen, die Aufgaben enthalten, die von einem bestimmten GPC 350 bearbeitet werden sollen. Der Pool aktiver Aufgaben kann eine Anzahl von Schlitzen (z.B. 4 Schlitze) für Aufgaben umfassen, die von den GPCs 350 aktiv bearbeitet werden. Wenn ein GPC 350 die Ausführung einer Aufgabe beendet, wird diese Aufgabe aus dem Pool aktiver Aufgaben für den GPC 350 entfernt und eine der anderen Aufgaben aus dem Pool schwebender Aufgaben ausgewählt und zur Ausführung auf dem GPC 350 eingeplant. Wenn eine aktive Aufgabe auf dem GPC 350 im Leerlauf war, z.B. während eines Wartens auf eine Auflösung einer Datenabhängigkeit, kann die aktive Aufgabe aus dem GPC 350 entfernt und in den Pool schwebender Aufgaben zurückgeführt werden, während eine andere Aufgabe im Pool der schwebender Aufgaben ausgewählt und für die Ausführung auf dem GPC 350 geplant wird.
  • Die Arbeitsverteilungseinheit 325 kommuniziert über das Koppelfeld 370 mit einem oder mehreren GPCs 350. Das Koppelfeld 370 ist ein Verbindungsnetz, das viele der Einheiten der PPU 300 mit anderen Einheiten der PPU 300 koppelt. Beispielsweise kann das Koppelfeld 370 dazu eingerichtet sein, die Arbeitsverteilungseinheit 325 mit einem bestimmten GPC 350 zu koppeln. Obwohl nicht ausdrücklich angegeben, können eine oder mehrere andere Einheiten der PPU 300 auch über den Sternverteiler 330 mit dem Koppelfeld 370 verbunden werden.
  • Die Aufgaben werden von der Dispositionseinheit 320 verwaltet und von der Arbeitsverteilungseinheit 325 an einen GPC 350 geschickt. Der GPC 350 ist dazu eingerichtet, die Aufgabe zu bearbeiten und Ergebnisse zu generieren. Die Ergebnisse können von anderen Aufgaben innerhalb des GPC 350 übernommen, über das Koppelfeld 370 an einen anderen GPC 350 weitergeleitet oder im Speicher 304 gespeichert werden. Die Ergebnisse können über die Speicherteileinheiten 380, die eine Speicherschnittstelle zum Lesen und Schreiben von Daten in/aus dem Speicher 304 implementieren, in den Speicher 304 geschrieben werden. Die Ergebnisse können über den NVLink 310 an eine andere PPU 304 oder CPU übertragen werden. In einer Ausführungsform umfasst die PPU 300 eine Anzahl U von Speicherteileinheiten 380, die gleich der Anzahl der separaten und unterschiedlichen Speichervorrichtungen 304 ist, die mit der PPU 300 gekoppelt sind. Eine Speicherteileinheit 380 wird im Folgenden in Verbindung mit 4B näher beschrieben.
  • In einer Ausführungsform führt ein Wirtsprozessor einen Treiberkern aus, der eine Anwendungsprogrammierschnittstelle (API) implementiert, die es einer oder mehreren auf dem Wirtsprozessor ausgeführten Anwendungen ermöglicht, Vorgänge zur Ausführung auf der PPU 300 zu planen. In einer Ausführungsform werden mehrere Rechenanwendungen gleichzeitig von der PPU 300 ausgeführt, und die PPU 300 bietet Trennung, Dienstgüte (QoS) und unabhängige Adressräume für die mehreren Rechenanwendungen. Eine Anwendung kann Anweisungen (z.B. API-Aufrufe) erzeugen, die den Treiberkern dazu veranlassen, eine oder mehrere Aufgaben zur Ausführung durch die PPU 300 zu erzeugen. Der Treiberkern gibt Aufgaben an einen oder mehrere Ströme aus, die von der PPU 300 verarbeitet werden. Jede Aufgabe kann eine oder mehrere Gruppen von verknüpften Threads umfassen, die hierin als Verzerr bezeichnet werden. In einer Ausführungsform umfasst ein Verzerr 32 verknüpfte Threads, die parallel ausgeführt werden können. Kooperierende Threads können eine Vielzahl von Threads bezeichnen, die Anweisungen zur Ausführung der Aufgabe umfassen und Daten über einen gemeinsamen Speicher austauschen können. Threads und kooperierende Threads werden in Verbindung mit 5A näher beschrieben.
  • 4A veranschaulicht eine GPC 350 der PPU 300 aus 3 gemäß einer Ausführungsform. Wie in 4A dargestellt umfasst jeder GPC 350 eine Reihe von Hardwareeinheiten für Verarbeitungsaufgaben. In einer Ausführungsform umfasst jeder GPC 350 einen Pipeline-Verwalter 410, eine Pre-Rasteroperationseinheit (PROP) 415, eine Rastereinrichtung 425, ein Arbeitsverteilungskoppelfeld (WDX) 480, eine Speicherverwaltungseinheit (MMU) 490 und einen oder mehrere Datenverarbeitungscluster (DPCs) 420. Anerkannterweise kann der GPC 350 von 4A anstelle von oder zusätzlich zu den in 4A dargestellten Einheiten weitere Hardwareeinheiten umfassen.
  • In einer Ausführungsform wird der Betrieb des GPC 350 durch den Pipeline-Verwalter 410 gesteuert. Der Pipeline-Verwalter 410 verwaltet die Konfiguration eines oder mehrerer DPCs 420 für Bearbeitung von dem GPC 350 zugeordneten Aufgaben. In einer Ausführungsform kann der Pipelinemanager 410 mindestens einen der einen oder mehreren DPCs 420 dazu einrichten, mindestens einen Teil einer Grafikwiedergabe-Pipeline zu implementieren. Beispielsweise kann ein DPC 420 dazu eingerichtet sein, ein Knotenschattierer-Programm auf dem programmierbaren Streaming-Multiprozessor (SM) 440 auszuführen. Der Pipelinemanager 410 kann auch dazu eingerichtet sein, von der Arbeitsverteilungseinheit 325 empfangene Pakete an die geeigneten logischen Einheiten innerhalb des GPC 350 weiterzuleiten. Beispielsweise können einige Pakete an Festfunktions-Hardwareeinheiten in der PROP 415 und/oder in der Rastereinrichtung 425 weitergeleitet werden, während andere Pakete an die DPCs 420 zur Verarbeitung durch die Grundelementeeinrichtung 435 oder die SM 440 weitergeleitet werden können. In einer Ausführungsform kann der Pipelinemanager 410 mindestens einen der einen oder mehreren DPCs 420 dazu einrichten, ein neuronales Netzwerkmodell und/oder eine Rechen-Pipeline zu implementieren.
  • Die PROP-Einheit 415 ist dazu eingerichtet, die von der Rastereinrichtung 425 und den DPCs 420 erzeugten Daten an eine Rasteroperations-(ROP)-Einheit weiterzuleiten, die in Verbindung mit 4B näher beschrieben wird. Die PROP-Einheit 415 kann auch dazu eingerichtet sein, Optimierungen für Farbmischung durchzuführen, Pixeldaten zu organisieren, Adressübersetzungen durchzuführen und dergleichen.
  • Die Rastereinrichtung 425 umfasst eine Anzahl von Festfunktions-Hardwareeinheiten, die für verschiedene Rasteroperationen eingerichtet sind. In einer Ausführungsform umfasst die Rastereinrichtung 425 eine Konfigurationseinrichtung, eine Grobrastereinrichtung, eine Ausscheidungseinrichtung, eine Kappungseinrichtung, eine Feinrastereinrichtung und eine Kachel-Verschmelzungseinrichtung. Die Konfigurationseinrichtung empfängt transformierte Knoten und erzeugt Ebenengleichungen, die mit dem durch die Knoten definierten geometrischen Grundelement verknüpft sind. Die Ebenengleichungen werden an die Grobrastereinrichtung übertragen, um Abdeckungsinformationen (z.B. eine x,y-Abdeckungsmaske für eine Kachel) für das Grundelement zu erzeugen. Die Ausgabe der Grobrastereinrichtung wird an die Ausscheidungseinrichtung übertragen, wo mit dem Grundelement verknüpfte Fragmente, die einen z-Test nicht bestehen, ausgeschieden werden, und an eine Kappungseinrichtung übertragen, wo Fragmente, die außerhalb eines Sichtstumpfes liegen, gekappt werden. Die Fragmente, die das Kappen und Ausscheiden überdauern, können an die Feinrastereinrichtung übergeben werden, um Attribute für die Pixelfragmente beruhend auf den von der Konfigurationseinrichtung erzeugten Ebenengleichungen zu erzeugen. Die Ausgabe der Rastereinrichtung 425 umfasst Fragmente, die beispielsweise von einem in einem DPC 420 implementierten Fragmentschattierer verarbeitet werden sollen.
  • Jeder im GPC 350 enthaltene DPC 420 umfasst einen M-Pipe Controller (MPC) 430, eine Grundelementeeinrichtung 435 und einen oder mehrere SMen 440. Der MPC 430 steuert den Betrieb des DPC 420 und leitet die vom Pipeline-Verwalter 410 empfangenen Pakete an die entsprechenden Einheiten in dem DPC 420 weiter. Beispielsweise können mit einem Knoten verknüpfte Pakete an die Grundelementeeinrichtung 435 weitergeleitet werden, die dazu eingerichtet ist, die mit dem Knoten verknüpften Knotenattribute aus dem Speicher 304 zu holen. Im Gegensatz dazu können Pakete, die mit einem Schattierer-Programm verknüpft sind, an den SM 440 übertragen werden.
  • Der SM 440 umfasst einen programmierbaren Streaming-Prozessor, der dazu eingerichtet ist, Aufgaben zu verarbeiten, die durch eine Anzahl von Threads repräsentiert werden. Jeder SM 440 ist multi-threaded und dazu eingerichtet, eine Vielzahl von Threads (z.B. 32 Threads) aus einer bestimmten Gruppe von Threads nebenläufig auszuführen. In einer Ausführungsform implementiert der SM 440 eine SIMD-Architektur (eine Anweisung, mehrere Daten), bei der jeder Thread in einer Gruppe von Threads (z.B. ein Verzerr) dazu eingerichtet ist, beruhend auf demselben Satz von Anweisungen einen anderen Satz von Daten zu verarbeiten. Alle Threads in der Gruppe der Threads führen die gleichen Anweisungen aus. In einer weiteren Ausführungsform implementiert der SM 440 eine SIMT-Architektur (eine Anweisung, mehrere Threads), bei der jeder Thread in einer Gruppe von Threads dazu eingerichtet ist, beruhend auf demselben Satz von Anweisungen einen anderen Satz von Daten zu verarbeiten, wobei jedoch einzelne Threads in der Gruppe von Threads während der Ausführung abweichen dürfen. In einer Ausführungsform wird für jeden Verzerr ein Programmzähler, ein Aufrufstapel und ein Ausführungszustand unterhalten, was die Nebenläufigkeit zwischen Warps und eine serielle Ausführung innerhalb von Warps ermöglicht, wenn Threads innerhalb des Warps abweichen. In einer weiteren Ausführungsform wird für jeden einzelnen Thread ein Programmzähler, ein Aufrufstapel und ein Ausführungszustand unterhalten, wodurch eine gleiche Nebenläufigkeit zwischen allen Threads innerhalb und zwischen Warps ermöglicht wird. Wenn für jeden einzelnen Thread ein Ausführungszustand unterhalten wird, können Threads, die dieselben Anweisungen ausführen, zusammen- und parallel ausgeführt werden, um eine maximale Effizienz zu erreichen. Der SM 440 wird im Folgenden in Verbindung mit 5A näher beschrieben.
  • Die MMU 490 bietet eine Schnittstelle zwischen dem GPC 350 und der Speicherteileinheit 380. Die MMU 490 kann eine Übersetzung virtueller Adressen in physikalische Adressen, einen Speicherschutz und eine Schlichtung von Speicheranforderungen bereitstellen. In einer Ausführungsform stellt die MMU 490 einen oder mehrere Übersetzungsnachschlagepuffer (TLBs) zum Durchführen einer Übersetzung virtueller Adressen in physikalische Adressen in dem Speicher 304 zur Verfügung.
  • 4B veranschaulicht eine Speicherteileinheit 380 der PPU 300 von 3 gemäß einer Ausführungsform. Wie in 4B dargestellt umfasst die Speicherteileinheit 380 eine Rasteroperations-(ROP)-Einheit 450, einen Stufe-2 (L2)-Zwischenspeicher 460 und eine Speicherschnittstelle 470. Die Speicherschnittstelle 470 ist mit dem Speicher 304 gekoppelt. Die Speicherschnittstelle 470 kann 32, 64, 128, 1024-Bit-Datenbusse oder dergleichen für Hochgeschwindigkeitsdatenübertragung implementieren. In einer Ausführungsform umfasst die PPU 300 U Speicherschnittstellen 470, eine Speicherschnittstelle 470 je Paar von Speicherteileinheiten 380, wobei jedes Paar von Speicherteileinheiten 380 mit einer entsprechenden Speichervorrichtung 304 verbunden ist. So kann die PPU 300 beispielsweise an bis zu YSpeichervorrichtungen 304 angeschlossen werden, wie beispielsweise an hochbreitbandige Speicherstapel oder Grafik-Doppeldatenraten-Version 5-Synchron-Dynamischer-Wahlfreizugriffsspeicher oder andere Arten von persistentem Speicher.
  • In einer Ausführungsform implementiert die Speicherschnittstelle 470 eine HBM2-Speicherschnittstelle und Yentspricht einem halben U. In einer Ausführungsform befinden sich die HBM2-Speicherstapel auf in demselben physikalischen Package wie die PPU 300, was im Vergleich zu herkömmlichen GDDR5-SDRAM-Systemen zu erheblichen Leistungs- und Flächeneinsparungen führt. In einer Ausführungsform umfasst jeder HBM2-Stapel vier Speicherplättchen und Y ist 4, wobei der HBM2-Stapel zwei 128-Bit-Kanäle pro Plättchen für insgesamt 8 Kanäle und eine Datenbusbreite von 1024 Bit umfasst.
  • In einer Ausführungsform unterstützt der Speicher 304 einzelfehlerkorrigierenden und doppelfehlererkennenden (SECDED) Fehlerkorrekturkode (ECC) zum Schutz von Daten. ECC bietet eine höhere Zuverlässigkeit für Rechenanwendungen, die empfindlich auf Datenverluste reagieren. Zuverlässigkeit ist besonders wichtig in großen Cluster-Rechnerumgebungen, in denen PPUs 300 sehr große Datensätze verarbeiten und/oder Anwendungen über einen längeren Zeitraum betreiben.
  • In einer Ausführungsform implementiert die PPU 300 eine mehrstufige Speicherhierarchie. In einer Ausführungsform unterstützt die Speicherteileinheit 380 einen vereinheitlichten Speicher, um einen einzigen vereinheitlichten virtuellen Adressraum für CPU- und PPU 300-Speicher bereitzustellen, der den Datenaustausch zwischen virtuellen Speichersystemen ermöglicht. In einer Ausführungsform wird die Häufigkeit der Zugriffe einer PPU 300 auf Speicher auf anderen Prozessoren verfolgt, um sicherzustellen, dass Speicherseiten in den physikalischen Speicher der PPU 300 verschoben werden, die häufiger auf die Seiten zugreift. In einer Ausführungsform unterstützt der NVLink 310 Adressübersetzungsdienste, die es der PPU 300 ermöglichen, direkt auf Seitentabellen einer CPU zuzugreifen, und vollen Zugriff auf den CPU-Speicher durch die PPU 300 ermöglichen.
  • In einer Ausführungsform übertragen Kopiereinrichtungen Daten zwischen mehreren PPUs 300 oder zwischen PPUs 300 und CPUs. Die Kopiereinrichtungen können Seitenfehler für Adressen erzeugen, die nicht in die Seitentabellen eingeblendet sind. Die Speicherteileinheit 380 kann dann die Seitenfehler beheben und die Adressen in die Seitentabelle eintragen, woraufhin die Kopiereinrichtung die Übertragung durchführen kann. In einem herkömmlichen System ist der Speicher für mehrfache Kopiereinrichtungsvorgänge zwischen mehreren Prozessoren fixiert (z.B. nicht auslagerbar), was den verfügbaren Speicher erheblich reduziert. Mit Hardware-Seitenfehlern können Adressen an die Kopiereinrichtungen weitergegeben werden, ohne sich Sorgen zu machen, ob die Speicherseiten vorgehalten werden und der Kopiervorgang ist transparent.
  • Daten aus dem Speicher 304 oder einem anderen Systemspeicher können von der Speicherteileinheit 380 abgerufen und im L2-Zwischenspeicher 460 gespeichert werden, der sich auf dem Chip befindet und zwischen den verschiedenen GPCs 350 geteilt wird. Wie dargestellt umfasst jede Speicherteileinheit 380 einen Abschnitt des L2-Zwischenspeichers 460, der mit einer entsprechenden Speichervorrichtung 304 verknüpft ist. Untergeordnete Zwischenspeicher können dann in verschiedenen Einheiten innerhalb der GPCs 350 implementiert werden. Beispielsweise kann jeder der SMen 440 einen Stufe-Eins-(L 1)-Zwischenspeicher implementieren. Der L1-Zwischenspeicher ist ein privater Speicher, der einem bestimmten SM 440 gewidmet ist. Daten aus dem L2-Zwischenspeicher 460 können abgerufen und in jedem der L1-Zwischenspeicher zur Verarbeitung in den Funktionseinheiten des SMen 440 gespeichert werden. Der L2-Zwischenspeicher 460 ist mit der Speicherschnittstelle 470 und dem Koppelfeld 370 gekoppelt.
  • Die ROP-Einheit 450 führt grafische Rasteroperationen im Zusammenhang mit Pixelfarben durch, wie etwa Farbkompression, Pixelüberblenden und dergleichen. Die ROP-Einheit 450 führt auch Tiefenprüfungen in Verbindung mit der Rastereinrichtung 425 durch, die eine Tiefe für eine Abtastposition empfängt, die mit einem Pixelfragment aus der Ausscheidungseinrichtung der Rastereinrichtung 425 verknüpft ist. Die Tiefe wird gegen eine entsprechende Tiefe in einem Tiefenpuffer für eine mit dem Fragment verknüpfte Abtastposition getestet. Wenn das Fragment den Tiefenversuch für die Abtastposition besteht, aktualisiert die ROP-Einheit 450 den Tiefenpuffer und sendet ein Ergebnis der Tiefenprüfung an die Rastereinrichtung 425. Anerkannterweise kann die Anzahl der Speicherteileinheiten 380 von der Anzahl der GPCs 350 abweichen und daher jede ROP-Einheit 450 mit jedem der GPCs 350 gekoppelt werden. Die ROP-Einheit 450 verfolgt die von den verschiedenen GPCs 350 empfangenen Pakete und bestimmt, zu welchem GPC 350 ein von der ROP-Einheit 450 erzeugtes Ergebnis durch das Koppelfeld 370 geleitet wird. Obwohl die ROP-Einheit 450 in 4B innerhalb der Speicherteileinheit 380 enthalten ist, kann sich die ROP-Einheit 450 in anderen Ausführungsformen außerhalb der Speicherteileinheit 380 befinden. So kann sich beispielsweise die ROP-Einheit 450 in dem GPC 350 oder einer anderen Einheit befinden.
  • 5A veranschaulicht den Streaming-Multiprozessor 440 von 4A gemäß einer Ausführungsform. Wie in 5A dargestellt umfasst der SM 440 einen Anweisungszwischenspeicher 505, eine oder mehrere Dispositionseinheiten 510, eine Registerdatei 520, einen oder mehrere Rechenkerne 550, eine oder mehrere Spezialfunktionseinheiten (SFUs) 552, eine oder mehrere Lade-/Speichereinheiten (LSUs) 554, ein Verbindungsnetzwerk 580, einen gemeinsamen Speicher/L1-Zwischenspeicher 570.
  • Wie vorstehend beschrieben plant die Arbeitsverteilungseinheit 325 Aufgaben zur Ausführung auf den GPCs 350 der PPU 300. Die Aufgaben sind einem bestimmten DPC 420 innerhalb eines GPC 350 zugeordnet und wenn die Aufgabe mit einem Schattierer-Programm verknüpft ist kann die Aufgabe einem SM 440 zugeordnet werden. Die Dispositionseinheit 510 empfängt die Aufgaben von der Arbeitsverteilungseinheit 325 und verwaltet die Anweisungsplanung für einen oder mehrere der dem SM 440 zugeordneten Threadblöcke. Die Dispositionseinheit 510 plant Threadblöcke zur Ausführung als Warps paralleler Threads, wobei jedem Threadblock mindestens ein Verzerr zugeordnet ist. In einer Ausführungsform führt jeder Verzerr 32 Threads aus. Die Dispositionseinheit 510 kann eine Vielzahl verschiedener Threadblöcke verwalten, indem sie die Warps den verschiedenen Threadblöcken zuordnet und dann während jedes Taktzyklus Anweisungen von der Vielzahl von verschiedenen kooperativen Gruppen an die verschiedenen Funktionseinheiten (z.B. Kerne 550, SFUs 552 und LSUs 554) disponiert.
  • Cooperative Groups ist ein Programmiermodell für eine Organisation von Gruppen kommunizierender Threads, das es Entwicklern ermöglicht, die Granularität auszudrücken, mit der Threads kommunizieren, was den Ausdruck reichhaltigerer, effizienterer paralleler Zerlegungen ermöglicht. Kooperative Start-APIs unterstützen eine Synchronisation zwischen Threadblöcken zur Ausführung paralleler Algorithmen. Herkömmliche Programmiermodelle bieten ein einziges, einfaches Konstrukt zur Synchronisation kooperierender Threads: eine Barriere über alle Threads eines Thread-Blocks (z.B. die syncthreads() Funktion). Programmierer möchten jedoch oft Gruppen von Threads definieren, die kleiner als die Granularität von Threads sind, und innerhalb der definierten Gruppen synchronisieren, um mehr Leistung, Designflexibilität und Softwarewiederverwendung in Form von gemeinsamen gruppenweiten Funktionsschnittstellen zu ermöglichen.
  • Cooperative Groups ermöglicht es Programmierern, Gruppen von Threads explizit auf Subblock- (z.B. so klein wie ein einzelner Thread) und Multiblock-Granularitäten zu definieren und gemeinsame Vorgänge wie die Synchronisation der Threads in einer kooperativen Gruppe durchzuführen. Das Programmiermodell unterstützt einen sauberen Entwurf über Softwaregrenzen hinweg, so dass Bibliotheken und Hilfsfunktionen sicher in ihrem lokalen Kontext synchronisieren können, ohne Annahmen über eine Konvergenz treffen zu müssen. Grundelemente für Cooperative Groups ermöglichen neue Muster kooperativer Parallelität, einschließlich Produzenten-Verbraucher-Parallelität, opportunistischer Parallelität und globaler Synchronisation über ein ganzes Gitter von Threadblöcken.
  • Eine Abfertigungseinheit 515 ist dazu eingerichtet, Anweisungen an eine oder mehrere der Funktionseinheiten abzufertigen. In der Ausführungsform umfasst die Dispositionseinheit 510 zwei Abfertigungseinheiten 515, die es ermöglichen, während jedes Taktzyklus zwei verschiedene Anweisungen von derselben Verzerr abzufertigen. In alternativen Ausführungsformen kann jede Dispositionseinheit 510 eine einzelne Abfertigungseinheit 515 oder zusätzliche Abfertigungseinheiten 515 umfassen.
  • Jeder SM 440 umfasst eine Registerdatei 520, die einen Satz von Registern für die Funktionseinheiten der SM 440 bereitstellt. In einer Ausführungsform ist die Registerdatei 520 auf jede der Funktionseinheiten aufgeteilt, so dass jeder Funktionseinheit ein gewidmeter Abschnitt der Registerdatei 520 zugeordnet ist. In einer weiteren Ausführungsform wird die Registerdatei 520 auf die verschiedenen Warps aufgeteilt, die von der SM 440 ausgeführt werden. Die Registerdatei 520 bietet vorübergehende Speicherung für Operanden, die mit den Datenpfaden der Funktionseinheiten verbunden sind.
  • Jeder SM 440 umfasst L Verarbeitungskerne 550. In einer Ausführungsform umfasst der SM 440 eine große Anzahl (z.B. 128, usw.) von eigenständigen Verarbeitungskernen 550. Jeder Kern 550 kann eine voll-pipelined, einfachpräzise, doppelpräzise und/oder gemischtpräzise Verarbeitungseinheit umfassen, die eine Gleitpunkt-Arithmetik-/Logikeinheit und eine Ganzzahl-Arithmetik-/Logikeinheit umfasst. In einer Ausführungsform implementieren die Gleitpunkt-Arithmetik-Logikeinheiten den Standard IEEE 754-2008 für Gleitpunktarithmetik. In einer Ausführungsform umfassen die Kerne 550 64 Einfachpräzisions-(32-Bit)-Gleitpunkt-Kerne, 64 Ganzzahlkerne, 32 Doppelpräzisions-(64-Bit)-Gleitpunkt-Kerne und 8 Tensorkerne.
  • Tensorkerne sind dazu eingerichtet, Matrixoperationen durchzuführen, und in einer Ausführungsform sind ein oder mehrere Tensorkerne in den Kernen 550 enthalten. Insbesondere sind die Tensorkerne dazu eingerichtet, Deep-Learning-Matrixarithmetik durchzuführen wie z.B. Faltungsvorgänge für ein Training und ein Folgern neuronaler Netzwerke. In einer Ausführungsform arbeitet jeder Tensorkern auf einer 4x4-Matrix und führt eine Matrixmultiplikations- und -Akkumulationsoperation D=A×B+C durch, wobei A, B, C und D 4x4-Matrizen sind.
  • In einer Ausführungsform sind die Matrix-Multiplikationseingaben A und B 16-Bit Gleitpunkt-Matrizen, während die Akkumulationsmatrizen C und D 16-Bit-Gleitpunkt- oder 32-Bit-Gleitpunkt-Matrizen sein können. Tensorkerne arbeiten auf 16-Bit-Gleitpunkt-Eingabedaten mit 32-Bit-Gleitpunktakkumulation. Die 16-Bit-Gleitpunkt-Multiplikation erfordert 64 Operationen und führt zu einem vollpräzisen Produkt, das dann unter Verwendung von 32-Bit-Gleitpunktaddition mit den anderen Zwischenprodukten für eine 4x4x4-Matrixmultiplikation akkumuliert wird. In der Praxis werden Tensorkerne verwendet, um viel größere zweidimensionale oder höherdimensionale Matrixoperationen durchzuführen, die sich aus diesen kleineren Elementen zusammensetzen. Eine API, wie etwa eine CUDA 9 C++ API, stellt spezielle Matrixlade-, Matrixmultiplikations- und -akkumulations- sowie Matrixspeicheroperationen zur Verfügung, um Tensorkerne aus einem CUDA-C++-Programm effizient zu nutzen. Auf der CUDA-Ebene unterstellt die Verzerr-Ebenen-Schnittstelle Matrizen der Größe 16x16, die alle 32 Threads des Warps umfassen.
  • Jeder SM 440 umfasst zudem MSFUs 552, die spezielle Funktionen ausführen (z.B. Attributbewertung, reziproke Quadratwurzel und dergleichen). In einer Ausführungsform können die SFUs 552 eine Baumablaufeinheit umfassen, die dazu eingerichtet ist, eine hierarchische Baumdatenstruktur abzulaufen. In einer Ausführungsform können die SFUs 552 eine Textureinheit umfassen, die dazu eingerichtet ist, Texturkartenfilteroperationen durchzuführen. In einer Ausführungsform sind die Textureinheiten dazu eingerichtet, Texturkarten (z.B. ein 2D-Feld aus Texeln) aus dem Speicher 304 zu laden und die Texturkarten abzutasten, um abgetastete Texturwerte zur Verwendung in Schattierer-Programmen zu erzeugen, die vom SM 440 ausgeführt werden. In einer Ausführungsform werden die Texturkarten in dem gemeinsamen Speicher/L1-Zwischenspeicher 470 gespeichert. Die Textureinheiten implementieren Texturoperationen wie etwa Filteroperationen mittels Mip-Maps (z.B. Texturkarten mit unterschiedlichem Detaillierungsgrad). In einer Ausführungsform umfasst jeder SM 340 zwei Textureinheiten.
  • Jeder SM 440 umfasst auch N LSUs 554, die Lade- und Speicheroperationen zwischen dem gemeinsamen Speicher/L1-Zwischenspeicher 570 und der Registerdatei 520 implementieren. Jeder SM 440 umfasst ein Verbindungsnetzwerk 580, das jede der Funktionseinheiten mit der Registerdatei 520 und die LSU 554 mit der Registerdatei 520, gemeinsamen Speicher/ L1-Zwischenspeicher 570 verbindet. In einer Ausführungsform ist das Verbindungsnetzwerk 580 ein Koppelfeld, das dazu eingerichtet sein kann, jede der Funktionseinheiten mit einem der Register in der Registerdatei 520 zu verbinden und die LSUs 554 mit der Registerdatei und den Speicherplätzen in dem gemeinsamen Speicher/L1-Zwischenspeicher 570 zu verbinden.
  • Der gemeinsame Speicher /L1-Zwischenspeicher 570 ist ein Feld von chipinternem Speicher, das eine Datenspeicherung und -kommunikation zwischen dem SM 440 und der Grundelementeeinrichtung 435 und zwischen Threads in dem SM 440 ermöglicht. In einer Ausführungsform umfasst der gemeinsame Speicher/L1 -Zwischenspeicher 570 128KB Speicherkapazität und liegt auf dem Weg vom SM 440 zur Speicherteileinheit 380. Der gemeinsame Speicher/L1-Zwischenspeicher 570 kann zum Zwischenspeichern von Lese- und Schreibvorgängen verwendet werden. Einer oder mehrere aus dem gemeinsamen Speicher/L1-Zwischenspeicher 570, L2-Zwischenspeicher 460 und Speicher 304 sind Backup-Speicher.
  • Ein Kombinieren von Daten-Zwischenspeicher- und Gemeinsamer-Speicher-Funktionalität in einem einzigen Speicherblock bietet die beste Gesamtleistung für beide Arten von Speicherzugriffen. Die Kapazität ist als Zwischenspeicher für Programme nutzbar, die keinen gemeinsamen Speicher verwenden. Wenn beispielsweise der gemeinsame Speicher so eingerichtet ist, dass er eine Hälfte der Kapazität nutzt, können Textur- und Lade-/Speichervorgänge die verbleibende Kapazität nutzen. Eine Integration innerhalb des gemeinsamen Speichers/L1-Zwischenspeichers 570 ermöglicht es gemeinsamen Speicher/L1-Zwischenspeicher 570, als Hochdurchsatzleitung für ein Streaming von Daten zu fungieren und gleichzeitig einen hochbreitbandigen und latenzarmen Zugriff auf häufig wiederverwendete Daten zu ermöglichen.
  • Bei Einrichtung für Allzweck-Parallelrechnen kann eine im Vergleich zur Grafikverarbeitung einfachere Einrichtung verwendet werden. Insbesondere werden die in 3 dargestellten Festfunktions-Grafikverarbeitungseinheiten umgangen, was ein wesentlich einfacheres Programmiermodell schafft. In der Allzweck-Parallelrechen-Einrichtung weist die Arbeitsverteilungseinheit 325 Threadblöcke direkt den DPCs 420 zu und verteilt sie. Die Threads in einem Block führen dasselbe Programm aus, wobei eine eindeutige Thread-ID in der Berechnung verwendet wird, um sicherzustellen, dass jeder Thread eigene Ergebnisse erzeugt, wobei der SM 440 verwendet wird, um das Programm auszuführen und Berechnungen durchzuführen, der gemeinsame Speicher/L1-Zwischenspeicher 570, um zwischen Threads zu kommunizieren, und die LSU 554, um den globalen Speicher über den gemeinsamen Speicher/L1-Zwischenspeicher 570 und die Speicherteileinheit 380 zu lesen und zu schreiben. Wenn der SM 440 für Allzweck-Parallelrechnen eingerichtet ist, kann er auch Befehle schreiben, die die Dispositionseinheit 320 dazu nutzen kann, um neue Arbeiten auf den DPCs 420 zu starten.
  • Die PPU 300 kann in einem Desktop-Rechner, einem Laptop-Rechner, einem Tablet-Rechner, Servern, Hochleistungsrechnern, einem Smartphone (z.B. einem drahtlosen, tragbaren Gerät), einem persönlichen digitalen Assistenten (PDA), einer Digitalkamera, einem Fahrzeug, einer am Kopf angeordneten Anzeige, einer tragbaren elektronischen Vorrichtung und dergleichen integriert sein. In einer Ausführungsform ist die PPU 300 auf einem einzigen Halbleitersubstrat ausgeführt. In einer weiteren Ausführungsform ist die PPU 300 zusammen mit einer oder mehreren anderen Vorrichtungen, wie etwa zusätzlichen PPUs 300, dem Speicher 304, einer CPU für Rechner mit reduziertem Befehlssatz (RISC), einer Speicherverwaltungseinheit (MMU), einem Digital-zu-Analog-Wandler (DAC) und dergleichen, in einem System auf einem Chip (SoC) vorgesehen.
  • In einer Ausführungsform kann die PPU 300 auf einer Grafikkarte vorgesehen sein, die eine oder mehrere Speichervorrichtungen 304 umfasst. Die Grafikkarte kann so eingerichtet sein, dass sie an einen PCIe-Steckplatz auf einer Hauptplatine eines Desktop-Rechners angebunden ist. In noch einer weiteren Ausführungsform kann die PPU 300 eine integrierte Grafikverarbeitungseinheit (iGPU) oder ein Parallelprozessor sein, der in dem Chipsatz der Hauptplatine vorgesehen ist.
  • Beispielhaftes Rechensystem
  • Systeme mit mehreren GPUs und CPUs werden in einer Vielzahl von Branchen eingesetzt, da Entwickler mehr Parallelität in Anwendungen wie etwa künstlicher Intelligenz bereitstellen und nutzen. Leistungsstarke GPU-beschleunigte Systeme mit mehreren Zehn bis Tausenden von Rechenknoten werden in Rechenzentren, Forschungseinrichtungen und Hochleistungsrechnern eingesetzt, um immer größere Aufgaben zu lösen. Da eine Anzahl von Verarbeitungsvorrichtungen innerhalb der Hochleistungssysteme zunimmt, müssen die Kommunikations- und Datenübertragungsmechanismen hochskaliert werden, um die erhöhte Bandbreite zu unterstützen.
  • 5B ist ein Konzeptdiagramm eines unter Verwendung der PPU 300 von 3 gemäß einer Ausführungsform implementierten Verarbeitungssystems 500. Das beispielhafte System 565 kann dazu eingerichtet sein, das in 1 gezeigte Verfahren 100 zu implementieren. Das Verarbeitungssystem 500 umfasst eine CPU 530, einen Vermittlungsknoten 510 und jeweils mehrere PPUs 300 und entsprechende Speicher 304. Der NVLink 310 bietet Hochgeschwindigkeitskommunikationsverbindungen zwischen jeder der PPUs 300. Obwohl eine bestimmte Anzahl von NVLinks 310 und Verbindungen 302 in 5B dargestellt ist, kann die Anzahl der Verbindungen zu jeder PPU 300 und der CPU 530 variieren. Der Vermittlungsknoten 510 verbindet die Verbindung 302 mit der CPU 530. Die PPUs 300, Speicher 304 und NVLinks 310 können sich auf einer einzigen Halbleiterplattform angeordnet sein, um ein Parallelverarbeitungsmodul 525 zu bilden. In einer Ausführungsform unterstützt der Vermittlungsknoten 510 zwei oder mehr Protokolle, um verschiedene Verbindungen anzubinden.
  • In einer weiteren Ausführungsform (nicht dargestellt) stellt der NVLink 310 eine oder mehrere Hochgeschwindigkeitskommunikationsverbindungen zwischen jeder der PPUs 300 und der CPU 530 bereit und der Vermittlungsknoten 510 bindet die Verbindung 302 und jede der PPUs 300 an. Die PPUs 300, Speicher 304 und Verbindung 302 können auf einer einzigen Halbleiterplattform angeordnet sein, um ein Parallelverarbeitungsmodul 525 zu bilden. In noch einer weiteren Ausführungsform (nicht dargestellt) stellt die Verbindung 302 eine oder mehrere Kommunikationsverbindungen zwischen jeder der PPUs 300 und der CPU 530 bereit, und der Vermittlungsknoten 510 bindet jede der PPUs 300 an, wobei der NVLink 310 dazu verwendet wird, eine oder mehrere Hochgeschwindigkeitskommunikationsverbindungen zwischen den PPUs 300 bereitzustellen. In einer weiteren Ausführungsform (nicht dargestellt) stellt der NVLink 310 eine oder mehrere Hochgeschwindigkeitskommunikationsverbindungen zwischen den PPUs 300 und der CPU 530 über den Vermittlungsknoten 510 bereit. In noch einer weiteren Ausführungsform (nicht dargestellt) stellt die Verbindung 302 eine oder mehrere Kommunikationsverbindungen zwischen jeder der PPUs 300 direkt bereit. Eine oder mehrere der NVLink 310 Hochgeschwindigkeitskommunikationsverbindungen können als physische NVLink-Verbindung oder als chip- oder plättchen-interne Verbindung unter Verwendung desselben Protokolls wie der NVLink 310 implementiert werden.
  • Im Rahmen der vorliegenden Beschreibung kann sich eine einzige Halbleiterplattform auf eine einzige einheitliche halbleiterbasierte integrierte Schaltung beziehen, die auf einem Chip oder einem Plättchen hergestellt ist. Es ist zu beachten, dass sich der Begriff einzige Halbleiterplattform auch auf Mehrchipmodule mit erhöhter Konnektivität beziehen kann, die einen chip-internen Betrieb simulieren und wesentliche Verbesserungen gegenüber einer herkömmlichen Busimplementierung vornehmen. Natürlich können die verschiedenen Schaltungen oder Vorrichtungen auch voneinander getrennt oder in verschiedenen Kombinationen von Halbleiterplattformen nach den Wünschen des Benutzers angeordnet sein. Alternativ kann das Parallelverarbeitungsmodul 525 als Leiterplattensubstrat implementiert sein und jede der PPUs 300 und/oder Speicher 304 kann als gekapselte Vorrichtung ausgeführt sein. In einer Ausführungsform befinden sich die CPU 530, Schalter 510 und das Parallelverarbeitungsmodul 525 auf einer einzigen Halbleiterplattform.
  • In einer Ausführungsform beträgt die Signalübertragungsrate eines jeden NVLinks 310 20 bis 25 Gigabit/Sekunde und jede PPU 300 umfasst sechs NVLink 310-Schnittstellen (wie in 5B dargestellt sind fünf NVLink 310-Schnittstellen für jede PPU 300 vorgesehen). Jeder NVLink 310 stellt eine Datenübertragungsrate von 25 Gigabyte/Sekunde in jede Richtung bereit, wobei sechs Links 300 Gigabyte/Sekunde bereitstellen. Die NVLinks 310 können wahlweise ausschließlich für PPU-zu-PPU-Kommunikation verwendet werden, wie in 5B dargestellt, oder für eine Kombination aus PPU-zu-PPU und PPU-zu-CPU, wenn die CPU 530 auch eine oder mehrere NVLink 310-Schnittstellen umfasst.
  • In einer Ausführungsform ermöglicht der NVLink 310 einen direkten Lade-/Speicher-/Elementarzugriff von der CPU 530 auf einen Speicher 304 jeder PPU 300. In einer Ausführungsform unterstützt der NVLink 310 Kohärenzoperationen, wobei aus den Speichern 304 gelesene Daten in der Zwischenspeicher-Hierarchie der CPU 530 gespeichert werden können, wodurch eine Zwischenspeicher-Zugriffslatenz für die CPU 530 reduziert wird. In einer Ausführungsform umfasst der NVLink 310 eine Unterstützung von Adressübersetzungsdiensten (ATS), sodass die PPU 300 direkt auf Seitentabellen innerhalb der CPU 530 zugreifen kann. Einer oder mehrere der NVLinks 310 können auch für den Betrieb in einem Niedrigleistungsmodus eingerichtet sein.
  • 5C veranschaulicht ein beispielhaftes System 565, in dem die unterschiedliche Architektur und/oder Funktionalität der verschiedenen vorherigen Ausführungsformen implementierbar ist. Das beispielhafte System 565 kann dazu eingerichtet sein, das in 1 dargestellte Verfahren 100 zu implementieren.
  • Wie dargestellt ist ein System 565 vorgesehen, das mindestens eine Zentralverarbeitungseinheit 530 umfasst, die mit einem Kommunikationsbus 575 verbunden ist. Der Kommunikationsbus 575 kann mit jedem geeigneten Protokoll implementiert werden, wie z.B. PCI (Peripheriekomponentenverbindung), PCI-Express, AGP (Beschleunigter Grafikanschluss), HyperTransport oder jedem anderen Bus- oder Punkt-zu-Punkt-Kommunikationsprotokoll(en). Das System 565 umfasst auch einen Hauptspeicher 540. Die Steuerlogik (Software) und die Daten werden im Hauptspeicher 540 gespeichert, der als Wahlfreizugriffsspeicher (RAM) ausgeführt sein kann.
  • Das System 565 umfasst auch die Eingabevorrichtungen 560, das Parallelverarbeitungssystem 525 und die Anzeigevorrichtungen 545, z.B. eine herkömmliche CRT- (Kathodenstrahlröhre), LCD- (Flüssigkristallanzeige), LED (Lichtemittierende Diode), Plasmaanzeige oder dergleichen. Benutzereingaben können von den Eingabegeräten 560 empfangen werden, z.B. Tastatur, Maus, Touchpad, Mikrofon und dergleichen. Jedes der vorgenannten Module und/oder Vorrichtungen kann sogar auf einer einzigen Halbleiterplattform vorgesehen sein, um das System 565 zu bilden. Alternativ können die verschiedenen Module auch voneinander getrennt oder in verschiedenen Kombinationen von Halbleiterplattformen nach den Wünschen des Anwenders angeordnet sein.
  • Weiterhin kann das System 565 über eine Netzwerkschnittstelle 535 zu Kommunikationszwecken mit einem Netzwerk (z.B. einem Telekommunikationsnetzwerk, Lokalnetzwerk (LAN), drahtlosem Netzwerk, Weitverkehrsnetzwerk (WAN) wie etwa dem Internet, einem Peer-zu-Peer-Netzwerk, Kabelnetzwerk oder dergleichen) gekoppelt sein.
  • Das System 565 kann auch einen Sekundärspeicher beinhalten (nicht dargestellt). Der Sekundärspeicher 610 umfasst beispielsweise ein Festplattenlaufwerk und/oder ein Wechselspeicherlaufwerk, das ein Diskettenlaufwerk, ein Magnetbandlaufwerk, ein Kompaktdisklaufwerk, ein DVD-Laufwerk, ein Aufzeichnungsgerät, einen Universalseriellbus-(USB)-Flashspeicher darstellt. Das Wechselspeicherlaufwerk liest von einer und/oder schreibt auf eine Wechselspeichereinheit in bekannter Weise.
  • Rechnerprogramme oder Rechnersteuerungslogikalgorithmen können in dem Hauptspeicher 540 und/oder dem Sekundärspeicher gespeichert werden. Bei Ausführung ermöglichen solche Rechnerprogramme dem System 565, verschiedene Funktionen auszuführen. Der Hauptspeicher 540, der Sekundärspeicher und/oder jeder andere Speicher sind mögliche Beispiele für rechnerlesbare Medien.
  • Die Architektur und/oder Funktionalität der verschiedenen vorherigen Figuren kann im Rahmen eines allgemeinen Rechnersystems, eines Platinensystems, eines Spielkonsolensystems für Unterhaltungszwecke, eines anwendungsspezifischen Systems und/oder jedes anderen gewünschten Systems implementiert werden. Beispielsweise kann das System 565 in Form eines Desktop-Rechners, eines Laptops, eines Tablet-Rechners, von Servern, Hochleistungsrechnern, eines Smartphones (z.B. eines drahtlosen, tragbaren Geräts), eines persönlichen digitalen Assistenten (PDA), einer Digitalkamera, eines Fahrzeugs, einer am Kopf vorgesehenen Anzeige, einer tragbaren elektronischen Vorrichtung, einer Mobiltelefonvorrichtung, eines Fernsehers, einer Arbeitsstation, von Spielkonsolen, eines eingebetteten Systems und/oder jeder anderen Art von Logik ausgeführt werden.
  • Obwohl verschiedene Ausführungsformen vorstehend beschrieben wurden, ist zu würdigen, dass sie nur als Beispiel und nicht als Einschränkung dargestellt wurden. Daher sollte die Breite und der Geltungsbereich einer bevorzugten Ausführungsform nicht durch eine der oben beschriebenen beispielhaften Ausführungsformen eingeschränkt sein, sondern nur in Übereinstimmung mit den folgenden Ansprüchen und ihren Entsprechungen definiert werden.
  • Grafikverarbeitungspipeline
  • In einer Ausführungsform umfasst die PPU 300 eine Grafikverarbeitungseinheit (GPU). Die PPU 300 ist dazu eingerichtet, Befehle zu empfangen, die Schattierer-Programme zur Verarbeitung von Bilddaten spezifizieren. Grafikdaten können als ein Satz von Grundelementen wie Punkten, Linien, Dreiecke, Quads, Dreiecksstreifen und dergleichen definiert sein. Typischerweise umfasst ein Grundelement Daten, die eine Anzahl von Knoten für das Grundelement angeben (z.B. in einem Modellraum-Koordinatensystem) sowie Attribute, die mit jedem Knoten des Grundelements verknüpft sind. Die PPU 300 kann dazu eingerichtet sein, die Grafik-Grundelemente zu verarbeiten, um einen Rahmenpuffer 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 Knoten und Attributen) in einen Speicher wie einen Systemspeicher oder Speicher 304. Die Modelldaten definieren jedes der Objekte, die auf einer Anzeige sichtbar sein können. Die Anwendung führt dann einen API-Aufruf an den Treiberkern durch, der dazu auffordert, die Modelldaten wiederzugeben und anzuzeigen. Der Treiberkern liest die Modelldaten und schreibt Befehle in einen oder mehrere Streams, um Vorgänge zur Verarbeitung der Modelldaten durchzuführen. Die Befehle können auf verschiedene Schattierer-Programme verweisen, die auf den SMen 440 der PPU 300 implementiert werden sollen, einschließlich eines oder mehrerer Knotenschattierer, Rumpfschattierer, Bereichsschattierer, Geometrieschattierer und Pixelschattierer. Beispielsweise kann einer oder mehrere der SMen 440 dazu eingerichtet sein, ein Knotenschattierer-Programm auszuführen, das eine Anzahl von durch die Modelldaten definierten Knoten verarbeitet. In einer Ausführungsform können die verschiedenen SMen 440 dazu eingerichtet sein, verschiedene Schattierer-Programme gleichzeitig auszuführen. Beispielsweise kann eine erste Teilmenge von SMen 440 dazu eingerichtet sein, ein Knotenschattierer-Programm auszuführen, während eine zweite Teilmenge von SMen 440 dazu eingerichtet sein kann, ein Pixelschattierer-Programm auszuführen. Die erste Teilmenge von SMen 440 verarbeitet Knotendaten, um verarbeitete Knotendaten zu erzeugen, und schreibt die verarbeiteten Knotendaten in den L2-Zwischenspeicher 460 und/oder den Speicher 304. Nachdem die verarbeiteten Knotendaten gerastert wurden (z.B. von dreidimensionalen Daten in zweidimensionale Daten im Bildschirmraum umgewandelt), um Fragmentdaten zu erzeugen, führt die zweite Teilmenge von SMen 440 einen Pixelschattierer aus, um verarbeitete Fragmentdaten zu erzeugen, die dann mit anderen verarbeiteten Fragmentdaten gemischt und in den Rahmenpuffer im Speicher 304 geschrieben werden. Das Knotenschattierer-Programm und das Pixelschattierer-Programm können gleichzeitig ablaufen und verschiedene Daten aus derselben Szene in einer Pipeline verarbeiten, bis alle der Modelldaten der Szene in den Rahmenpuffer übertragen wurden. Anschließend wird der Inhalt des Rahmenpuffers an eine Anzeigesteuerung zur Anzeige auf einer Anzeigevorrichtung übertragen.
  • 6 ist ein konzeptionelles Diagramm einer Grafikverarbeitungspipeline 600, die gemäß einer Ausführungsform durch der PPU 300 aus 3 implementiert wird. Die Grafikverarbeitungspipeline 600 ist ein abstraktes Flussdiagramm der implementierten Verarbeitungsschritte zur Erzeugung von rechnererzeugten 2D-Bildern aus 3D-Geometriedaten. Wie bekannt können Pipeline-Architekturen Vorgänge mit langen Latenzzeiten effizienter durchführen, indem sie den Vorgang in eine Vielzahl von Stufen aufteilen, wobei die Ausgabe jeder Stufe mit der Eingabe der nächsten nachfolgenden Stufe gekoppelt ist. Somit empfängt die Grafikverarbeitungspipeline 600 Eingabedaten 601, die von einer Stufe zur nächsten Stufe der Grafikverarbeitungspipeline 600 übertragen werden, um Ausgabedaten 602 zu erzeugen. In einer Ausführungsform kann die Grafikverarbeitungspipeline 600 eine durch die OpenGL®-API definierte Grafikverarbeitungspipeline darstellen. Optional kann die Grafikverarbeitungspipeline 600 im Rahmen der Funktionalität und Architektur der vorherigen Figuren und/oder jeder nachfolgenden Figur(en) implementiert sein.
  • Wie in 6 dargestellt umfasst die Grafikverarbeitungspipeline 600 eine Pipeline-Architektur, die mehrere Stufen umfasst. Die Stufen umfassen, sind aber nicht beschränkt auf, eine Datenzusammenstellungsstufe 610, eine Knotenschattierungsstufe 620, eine Grundelementezusammenstellungsstufe 630, eine Geometrieschattierungssstufe 640, eine Ansichts-Skalierungs-, Ausscheidungs- und Kappungs-(VSCC)-Stufe 650, eine Rasterungsstufe 660, eine Fragmentschattierungsstufe 670 und eine Rasteroperationsstufe 680. In einer Ausführungsform umfassen die Eingabedaten 601 Befehle, die die Verarbeitungseinheiten so konfigurieren, dass sie die Stufen der Grafikverarbeitungspipeline 600 und geometrische Grundelemente (z.B. Punkte, Linien, Dreiecke, Vierecke, Quads, Dreiecksstreifen oder Fächer usw.) implementieren, die von den Stufen verarbeitet werden sollen. Die Ausgabedaten 602 können Pixeldaten (z.B. Farbdaten) umfassen, die in einen Rahmenpuffer oder eine andere Art von Oberflächendatenstruktur in einem Speicher kopiert werden.
  • Die Datenzusammenstellungsstufe 610 empfängt die Eingabedaten 601, die Knotendaten für Oberflächen hoher Ordnung, Grundelemente oder dergleichen spezifizieren. Die Datenzusammenstellungsstufe 610 sammelt die Knotendaten in einem Zwischenspeicher oder einer Warteschlange, wie etwa durch Empfangen eines Befehls, der einen Zeiger auf einen Puffer im Speicher umfasst, von dem Wirtsprozessor und Lesen der Knotendaten aus dem Puffer. Die Knotendaten werden dann zur Verarbeitung an die Knotenschattierungsstufe 620 übertragen.
  • Die Knotenschattierungsstufe 620 verarbeitet Knotendaten, indem sie eine Reihe von Vorgängen (z.B. einen Knotenschattierer oder ein Programm) einmal für jeden der Knoten durchführt. Knoten können z.B. als 4-Koordinaten-Vektor (z.B. <x, y, z, w>) angegeben werden, der mit einem oder mehreren Knotenattributen (z.B. Farbe, Texturkoordinaten, Oberflächennormale, usw.) verknüpft ist. Die Knotenschattierungsstufe 620 kann einzelne Knotenattribute wie etwa Position, Farbe, Texturkoordinaten und dergleichen manipulieren. Mit anderen Worten führt die Knotenschattierungsstufe 620 mit den Knotenkoordinaten oder anderen Knotenattributen Vorgänge durch, die mit einem Knoten verknüpft sind. Solche Vorgänge umfassen üblicherweise Beleuchtungsvorgänge (z.B. Ändern von Farbattributen für einen Knoten) und Transformationsvorgänge (z.B. Ändern des Koordinatenraums für einen Knoten). Beispielsweise können Knoten durch Koordinaten in einem Objektkoordinatenraum spezifiziert werden, die durch Multiplikation der Koordinaten mit einer Matrix transformiert werden, die die Koordinaten aus dem Objektkoordinatenraum in einen Weltraum oder einen normierten Vorrichtungskoordinatenraum (NCD) übersetzt. Die Knotenschattierungsstufe 620 erzeugt transformierte Knotendaten, die an die Grundelementezusammenstellungsstufe 630 übertragen werden.
  • Die Grundelementezusammenstellungsstufe 630 sammelt die von der Knotenschattierungsstufe 620 ausgegebenen Knoten und gruppiert die Knoten zu geometrischen Grundelementen für die Verarbeitung durch die Geometrieschattierungssstufe 640. Beispielsweise kann die Grundelementezusammenstellungsstufe 630 dazu eingerichtet sein, jeweils drei aufeinanderfolgenden Knoten als ein geometrisches Grundelement (z.B. ein Dreieck) zur Übertragung an die Geometrieschattierungssstufe 640 zu gruppieren. In einigen Ausführungsformen können bestimmte Knoten für aufeinanderfolgende geometrische Grundelemente wiederverwendet werden (z.B. können zwei aufeinanderfolgende Dreiecke in einem Dreieckstreifen zwei Knoten teilen). Die Grundelementezusammenstellungsstufe 630 überträgt geometrische Grundelemente (z.B. eine Sammlung von zugehörigen Knoten) an die Geometrieschattierungssstufe 640.
  • Die Geometrieschattierungssstufe 640 verarbeitet geometrische Grundelemente, indem sie eine Reihe von Vorgängen (z.B. einen Geometrie-Schattierer oder ein Programm) auf den geometrischen Grundelementen durchführt. Tessellierungsvorgänge können aus jedem geometrischen Grundelement ein oder mehrere geometrische Grundelemente erzeugen. Mit anderen Worten kann die Geometrieschattierungssstufe 640 jedes geometrische Grundelement in ein feineres Netz von zwei oder mehr geometrischen Grundelementen unterteilen, die zur Verarbeitung durch den Rest der Grafikverarbeitungspipeline 600 vorgesehen sind. Die Geometrieschattierungssstufe 640 überträgt geometrische Grundelemente an die Ansichts-SCC-Stufe 650.
  • In einer Ausführungsform kann die Grafikverarbeitungspipeline 600 innerhalb eines Streaming-Multiprozessors betrieben werden und die Knotenschattierungsstufe 620, die Grundelementezusammenstellungsstufe 630, die Geometrieschattierungssstufe 640, die Fragmentschattierungsstufe 670 und/oder die damit verbundene Hard- und Software können aufeinanderfolgend Verarbeitungsvorgänge durchführen. Sobald die aufeinanderfolgenden Verarbeitungsvorgänge abgeschlossen sind, kann in einer Ausführungsform die Ansichts-SCC-Stufe 650 die Daten verwenden. In einer Ausführungsform können Grundelementdaten, die von einer oder mehreren Stufen der Grafikverarbeitungspipeline 600 verarbeitet werden, in einen Zwischenspeicher geschrieben werden (z.B. L1-Zwischenspeicher, Knoten-Zwischenspeicher, usw.). In diesem Fall kann die Ansichts-SCC-Stufe 650 in einer Ausführungsform auf die Daten in dem Zwischenspeicher zugreifen. In einer Ausführungsform sind die Ansichts-SCC-Stufe 650 und die Rasterungsstufe 660 als feste Funktionsschaltung implementiert.
  • Die Ansichts-SCC-Stufe 650 führt eine ansichtsbezogene Skalierung, Ausscheidung und Kappung der geometrischen Grundelemente durch. Jede Oberfläche, die wiedergegeben wird, ist mit einer abstrakten Kameraposition verknüpft. Die Kameraposition stellt eine Position eines Betrachters dar, der auf die Szene schaut, und definiert einen Sichtstumpf, der die Objekte der Szene umschließt. Der Sichtstumpf kann eine Betrachtungsebene, eine hintere Ebene und vier Kappungsebenen umfassen. Jedes geometrische Grundelement, das sich vollständig außerhalb des Sichtstumpfes befindet, kann ausgeschieden (z.B. verworfen) werden, da das geometrische Grundelement nicht zur endgültig wiedergegebenen Szene beiträgt. Jedes geometrische Grundelement, das sich teilweise innerhalb des Sichtstumpfes und teilweise außerhalb des Sichtstumpfes befindet, kann gekappt werden (z.B. in ein neues geometrisches Grundelement umgewandelt werden, das innerhalb des Sichtstumpfes eingeschlossen ist). Darüber hinaus können geometrische Grundelemente jeweils auf der Grundlage einer Tiefe des Sichtstumpfes skaliert werden. Alle eventuell sichtbaren geometrischen Grundelemente werden dann an die Rasterungsstufe 660 übertragen.
  • Die Rasterungsstufe 660 wandelt die geometrischen 3D-Grundelemente in 2D-Fragmente um (z.B. zur Anzeige nutzbar, usw.). Die Rasterungsstufe 660 kann dazu eingerichtet sein, die Knoten der geometrischen Grundelemente zu nutzen, um einen Satz von Ebenengleichungen aufzubauen, aus denen verschiedene Attribute interpoliert werden können. Die Rasterungsstufe 660 kann auch eine Deckmaske für eine Vielzahl von Pixeln berechnen, die angibt, ob eine oder mehrere Probenpositionen für das Pixel das geometrische Grundelement abfangen. In einer Ausführungsform kann auch ein Z-Test durchgeführt werden, um zu bestimmen, ob das geometrische Grundelement durch andere geometrische Grundelemente, die bereits gerastert wurden, verdeckt wird. Die Rasterungsstufe 660 erzeugt Fragmentdaten (z.B. interpolierte Knotenattribute, die mit einer bestimmten Probenposition für jedes abgedeckte Pixel verknüpft sind), die an die Fragmentschattierungsstufe 670 übertragen werden.
  • Die Fragmentschattierungsstufe 670 verarbeitet Fragmentdaten, indem sie eine Reihe von Vorgängen (z.B. einen Fragmentschattierer oder ein Programm) auf jedem der Fragmente durchführt. Die Fragmentschattierungsstufe 670 kann Pixeldaten (z.B. Farbwerte) für das Fragment erzeugen, z.B. durch Beleuchtungsvorgänge oder Abtasten von Texturkarten unter Verwendung interpolierter Texturkoordinaten für das Fragment. Die Fragmentschattierungsstufe 670 erzeugt Pixeldaten, die an die Rasteroperationsstufe 680 übertragen werden.
  • Die Rasteroperationsstufe 680 kann verschiedene Vorgänge auf den Pixeldaten durchführen, wie z.B. Alpha-Tests, Schablonentests und das Mischen der Pixeldaten mit anderen Fragmenten zuzuordnenden anderen Pixeldaten, die mit dem Pixel verknüpft sind. Wenn die Rasteroperationsstufe 680 die Verarbeitung der Pixeldaten (z.B. der Ausgabedaten 602) abgeschlossen hat, können die Pixeldaten in ein Wiedergabeziel wie einen Rahmenpuffer, einen Farbpuffer oder dergleichen geschrieben werden.
  • Anerkannterweise können zusätzlich zu oder anstelle einer oder mehrerer der vorstehend beschriebenen Stufen eine oder mehrere zusätzliche Stufen in die Grafikverarbeitungspipeline 600 aufgenommen werden. Verschiedene Implementierungen der abstrakten Grafikverarbeitungspipeline können verschiedene Stufen implementieren. Darüber hinaus kann in einigen Ausführungsformen eine oder mehrere der vorstehend beschriebenen Stufen (z.B. Geometrieschattierungssstufe 640) von der Grafikverarbeitungspipeline ausgenommen sein. Andere Arten von Grafikverarbeitungspipelines werden als im Rahmen der vorliegenden Offenbarung befindlich betrachtet. Darüber hinaus kann jede der Stufen der Grafikverarbeitungspipeline 600 durch eine oder mehrere dedizierte Hardwareeinheiten innerhalb eines Grafikprozessors wie der PPU 300 implementiert sein. Weitere Stufen der Grafikverarbeitungspipeline 600 können durch programmierbare Hardwareeinheiten wie die SM 440 der PPU 300 realisiert sein.
  • Die Grafikverarbeitungspipeline 600 kann über eine Anwendung implementiert werden, die von einem Wirtsprozessor, wie beispielsweise einer CPU, ausgeführt wird. In einer Ausführungsform kann ein Gerätetreiber eine Anwendungsprogrammierschnittstelle (API) implementieren, die verschiedene Funktionen definiert, die von einer Anwendung verwendet werden können, um grafische Daten für die Anzeige zu erzeugen. Der Gerätetreiber ist ein Softwareprogramm, das eine Vielzahl von Anweisungen umfasst, die den Betrieb der PPU 300 steuern. Die API bietet eine Abstraktion für einen Programmierer, die einen Programmierer spezielle Grafikhardware wie die PPU 300 verwenden lässt, um die grafischen Daten zu erzeugen, ohne dass der Programmierer den spezifischen Befehlssatz für die PPU 300 verwenden muss. Die Anwendung kann einen API-Aufruf umfassen, der an den Gerätetreiber für die PPU 300 geleitet wird. Der Gerätetreiber interpretiert den API-Aufruf und führt verschiedene Vorgänge durch, um auf den API-Aufruf zu reagieren. In einigen Fällen kann der Gerätetreiber Vorgänge dadurch durchführen, dass er Anweisungen auf der CPU ausführt. In anderen Fällen kann der Gerätetreiber zumindest teilweise Vorgänge dadurch durchführen, dass er über eine Ein-/Ausgabeschnittstelle zwischen der CPU und der PPU 300 Vorgänge auf der PPU 300 startet. In einer Ausführungsform ist der Gerätetreiber dazu eingerichtet, die Grafikverarbeitungspipeline 600 unter Verwendung der Hardware der PPU 300 zu implementieren.
  • Verschiedene Programme können innerhalb der PPU 300 ausgeführt werden, um die verschiedenen Stufen der Grafikverarbeitungspipeline 600 zu realisieren. Beispielsweise kann der Gerätetreiber einen Kernel auf der PPU 300 starten, um die Knotenschattierungsstufe 620 auf einem SM 440 (oder mehreren SMen 440) durchzuführen. Der Gerätetreiber (oder der anfänglich durch die PPU 400 ausgeführte Kernel) kann auch andere Kernel auf der PPU 400 starten, um andere Stufen der Grafikverarbeitungspipeline 600 auszuführen, wie z.B. die Geometrieschattierungssstufe 640 und die Fragmentschattierungsstufe 670. Darüber hinaus können einige der Phasen der Grafikverarbeitungspipeline 600 auf fester Hardware wie einem Rasterer oder einem innerhalb der PPU 400 implementierten Datenzusammensteller implementiert werden. Anerkannterweise können die Ergebnisse eines Kernels von einer oder mehreren dazwischenliegenden Hardwareeinheiten mit fester Funktion verarbeitet werden, bevor sie von einem nachfolgenden Kernel auf einer SM 440 verarbeitet werden.
  • Maschinelles Lernen
  • Mehrschichtige neuronale Netze (DNNs), die auf Prozessoren wie der PPU 300 entwickelt wurden, wurden für verschiedene Anwendungsfälle eingesetzt, von selbstfahrenden Autos bis hin zu schnellerer Medikamentenentwicklung, von der automatischen Bildbeschriftung in Online-Bilddatenbanken bis hin zur intelligenten Echtzeit-Sprachübersetzung in Video-Chat-Anwendungen. Deep Learning ist eine Technik, die den neuronalen Lernprozess des menschlichen Gehirns modelliert, kontinuierlich lernt, kontinuierlich intelligenter wird und mit der Zeit genauere Ergebnisse schneller liefert. Ein Kind wird zunächst von einem Erwachsenen gelehrt, verschiedene Formen richtig zu identifizieren und zu klassifizieren, um schließlich ohne Betreuung Formen identifizieren zu können. Ebenso muss ein Deep Learning oder neuronales Lernsystem in der Objekterkennung und -klassifizierung trainiert werden, damit es schlauer und effizienter elementare Objekte, verdeckte Objekte usw. identifizieren und gleichzeitig den Objekten Kontext zuweisen kann.
  • Auf der einfachsten Ebene betrachten Neuronen im menschlichen Gehirn verschiedene Eingaben, die empfangen werden, jeder dieser Eingaben werden Bedeutungsstufen zugewiesen, und es wird eine Ausgabe an andere Neuronen weitergeleitet, um darauf einzuwirken. Ein künstliches Neuron oder Perzeptron ist das elementarste Modell eines neuronalen Netzwerks. In einem Beispiel kann ein Perzeptron eine oder mehrere verschiedene Merkmale eines Objekts darstellende Eingaben empfangen, auf die das Perzeptron trainiert wird, um sie zu erkennen und zu klassifizieren, und jedem dieser Merkmale wird ein bestimmtes Gewicht zugewiesen, das auf der Bedeutung dieses Merkmals für die Definition der Form eines Objekts basiert.
  • Ein mehrschichtiges neuronales Netz (DNN)-Model umfasst mehrere Schichten aus 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 schnell und mit hoher Genauigkeit zu lösen. In einem Beispiel zerlegt eine erste Schicht des DNN-Modells ein Eingabebild eines Autos in verschiedene Abschnitte und sucht nach Grundmustern wie Linien und Winkeln. Die zweite Schicht setzt die Linien zusammen, um nach Mustern höherer Ordnung wie Rädern, Windschutzscheiben und Spiegeln zu suchen. Die nächste Schicht identifiziert den Fahrzeugtyp, und die letzten paar Schichten erzeugen eine Beschriftung für das Eingabebild, die das Modell einer bestimmten Automobilmarke identifiziert.
  • Sobald das DNN trainiert ist, kann das DNN dazu eingesetzt und verwendet werden, Objekte oder Muster in einem als Folgerung bezeichneten Prozess zu identifizieren und zu klassifizieren. Beispiele für Folgerungen (der Prozess, durch den ein DNN nützliche Informationen aus einer gegebenen Eingabe extrahiert) umfassen ein Identifizieren von handschriftlichen Zahlen bei Schecks, die in Geldautomaten deponiert wurden, ein Identifizieren von Bildern von Freunden auf Fotos, ein Abgeben von Filmempfehlungen an über fünfzig Millionen Benutzer, ein Identifizieren und Klassifizieren verschiedener Automobiltypen, Fußgänger und Straßengefahren in fahrerlosen Autos, oder ein Übersetzen menschlicher Sprache in Echtzeit.
  • Während eines Trainings fließen Daten in einer Vorwärtsausbreitungsphase durch das DNN, bis eine Vorhersage erstellt ist, die auf eine der Eingabe entsprechende Bezeichnung hinweist. Wenn das neuronale Netzwerk die Eingabe inkorrekt bezeichnet, werden Fehler zwischen der richtigen Bezeichnung und der vorhergesagten Bezeichnung analysiert und die Gewichte für jedes Merkmal während einer Rückwärtsausbreitungsphase angepasst, bis das DNN die Eingabe und andere Eingaben in einem Trainingsdatensatz korrekt bezeichnet. Das Training komplexer neuronaler Netze erfordert enorme Mengen an paralleler Rechenleistung, einschließlich Gleitpunkt-Multiplikationen und Additionen, die von der PPU 300 unterstützt werden. Ein Folgern ist weniger rechenintensiv als ein Training, da es sich um einen latenzempfindlichen Vorgang handelt, bei dem ein trainiertes neuronales Netzwerk auf neue Eingaben angewendet wird, die es bisher noch nicht gesehen hat, um Bilder zu klassifizieren, Sprache zu übersetzen und generell neue Informationen zu folgern.
  • Neuronale Netze sind stark auf Matrix-Mathematikoperationen angewiesen, und komplexe mehrschichtige Netzwerke erfordern enorme Mengen an Gleitpunktleistung und - bandbreite für sowohl Effizienz als auch Geschwindigkeit. Mit Tausenden von für Matrix-Mathematikoperationen optimierten Rechenkernen und Hunderten von TFLOPS an Leistung ist die PPU 300 eine Rechnerplattform, die imstande ist, die für auf mehrschichtigen neuronalen Netzen beruhende künstliche Intelligenz und maschinelle Lernanwendungen erforderliche Leistung zu liefern.
  • Tiefenschätzung aus monokularen Bildsensordaten
  • Anerkannterweise empfängt das System 200 einen Bildrahmen 202 und extrahiert Merkmale 204 des Bildrahmens 202 unter Verwendung der Schichten des ersten neuronalen Netzwerks 210. Das System 200 könnte dazu verwendet werden, ein DPV für eine Folge von einem monokularen Bildsensor 230 aufgenommenen Bildrahmen (z.B. einen Videodatenstrom) zu erzeugen, aber das System 200 ist nicht so ausgelegt, dass das DPV für ein Bezugssystem zumindest teilweise auf den Merkmalen 204 beruht, die von dem ersten neuronalen Netzwerk 210 für benachbarte Bilder in der Folge von Bildrahmen extrahiert wurden. Wenn sich der Bildrahmen 202 von Bild zu Bild ändert, gibt es daher in der Gestaltung des Systems 200 nichts, was die Ausgabe der Merkmale 204 in einer Folge von Bildrahmen von Bild zu Bild konsistent hält.
  • Das System 200 kann jedoch bei Verarbeitung eines Videodatenstroms so angepasst werden, dass die zum Zeitpunkt t extrahierten Merkmale als verborgener Zustand behandelt werden, der aktualisierbar ist, wenn nachfolgende Bildrahmen in der Folge von Bildern aufgenommen werden. Genauer gesagt kann ein gemessener DPV, der mit einem Gleitfenster verknüpft ist, aktualisiert werden, wenn neue Beobachtungen der Szene vom Bildsensor 230 erfasst werden, insbesondere wenn sich der für einen Bildrahmen definierte Stumpf 220 zumindest teilweise mit einem für einen oder mehrere benachbarte Bildrahmen innerhalb des Gleitfensters definierten Stumpf 220 überdeckt. Darüber hinaus kann, wenn die Kamerabewegung verfolgt werden kann, beruhend auf dem aktuellen Zustand des gemessenen DPV ein gemessenes DPV für ein nächstes Bild vorhergesagt werden. Folglich kann ein Bayes'sches Filterschema implementiert werden, um das gemessene DPV mit der Zeit zu aktualisieren und die Genauigkeit des gemessenen DPV zu erhöhen.
  • 7 ist ein konzeptionelles Diagramm, das ein System 700 gemäß einiger Ausführungsformen veranschaulicht, das Instanzen des neuronalen Netzmodells 210 verwendet, um ein gemessenes DPV 710 für einen mit einem Gleitfenster 704 verknüpften Bezugsrahmen 702-1 zu erzeugen. Ein Videodatenstrom wird von dem System 700 als Eingabe empfangen, wobei der Videodatenstrom einen oder mehrere Bildrahmen in einer Folge von Bildrahmen umfasst. Jeder Bildausschnitt kann von dem monokularen Bildsensor 230 erfasst und in einem Speicher, wie etwa Speicher 304, gespeichert werden.
  • Es ist ein Gleitfenster 704 definiert, das einen Bezugsrahmen 702-1 und eine Anzahl von Quellrahmen (z.B. 702-2, 702-3, usw.) unmittelbar neben dem Bezugsrahmen 702-1 umfasst. In einer Ausführungsform ist der Bezugsrahmen 702-1 in dem Gleitfenster 704 zentriert. In weiteren Ausführungsformen kann der Bezugsrahmen 702-1 der neueste Bildrahmen sein, das in das Gleitfenster 704 eintritt. In einer Ausführungsform umfasst das Gleitfenster 704 den Bezugsrahmen 702-1, einen ersten Quellrahmen 702-2 unmittelbar vor dem Bezugsrahmen 702-1 und einen zweiten Quellrahmen 702-3 unmittelbar nach dem Bezugsrahmen 702-1. In anderen Ausführungsformen kann das Gleitfenster 704 erweitert werden, um zusätzliche Quellrahmen in die Folge von Bildrahmen aufzunehmen, wie beispielsweise zwei Quellrahmen unmittelbar vor dem Bezugsrahmen 702-1 und zwei Quellrahmen unmittelbar nach dem Bezugsrahmen 702-1.
  • In einigen Ausführungsformen kann die Folge von Bildrahmen bei z.B. 30 Bildern pro Sekunde erfasst werden. Die Größe des Gleitfensters 704 kann z.B. 21 Rahmen umfassen. Jedoch kann eine Reihe von Rahmen in dem Gleitfenster 704 ignoriert werden. Beispielsweise kann der Bezugsrahmen 702-1 in dem Gleitfenster zentriert und als Rahmen N bezeichnet werden, und die Quellrahmen können als Rahmen N-2Δt, Rahmen N-Δt, Rahmen N+Δt, und Rahmen N+2Δt definiert werden, wobei Δt = 5. Folglich dürfen die Quellrahmen nicht unmittelbar neben dem Bezugsrahmen 702-1 in dem mit 30 fps aufgenommenen Videodatenstrom liegen; jedoch werden alle Bildrahmen in dem Gleitfenster 704 mit Ausnahme des Bezugsrahmens 702-1 und der vier Quellrahmen ignoriert. Der Effekt solcher Ausführungsformen besteht darin, dass das Gleitfenster 704 die effektive Bildrate des Videodatenstroms reduziert, der zur Aktualisierung des gemessenen DPV 710 für einen bestimmten Bezugsrahmen verwendet wird.
  • Für ein bestimmtes Gleitfenster 704, das mit der Zeit t verknüpft ist, werden der Bezugsrahmen 702-1 und mindestens ein Quellrahmen innerhalb des Gleitfensters 704 durch Instanzen des ersten neuronalen Netzwerks 210, D-Net, verarbeitet, um entsprechende Merkmale 204 für jeden Bildrahmen zu extrahieren.
    Jede Instanz des ersten neuronalen Netzwerks 210 kann die Attribute (z.B. mit den gleichen Gewichten/Schwellwerten) der anderen Instanzen des ersten neuronalen Netzwerks 210 teilen. Mit anderen Worten können die Attribute jeder Instanz des ersten neuronalen Netzwerks 210 in einem gemeinsamen Speicher gespeichert werden, der für alle Instanzen des ersten neuronalen Netzwerks 210 zugänglich ist.
  • Beispielsweise kann wie in 7 dargestellt ein im Gleitfenster 704 zentrierter Bezugsrahmen 702-1 von einer ersten Instanz des ersten neuronalen Netzwerks 210-1 verarbeitet werden, um Merkmale 204-1 aus dem Bezugsrahmen 702-1 zu extrahieren, und jeder der Quellrahmen im Gleitfenster 704 wird von einer anderen Instanz des ersten neuronalen Netzwerks 210 verarbeitet, um entsprechende Merkmale 204 für den Quellrahmen zu extrahieren. Genauer gesagt wird ein erster Quellrahmen 702-2 von einer zweiten Instanz des ersten neuronalen Netzwerks 210-2 verarbeitet, um Merkmale 204-2 für den ersten Quellrahmen 702-2 zu extrahieren, und ein zweiter Quellrahmen 702-3 wird von einer dritten Instanz des ersten neuronalen Netzwerks 210-3 verarbeitet, um Merkmale 204-3 für den zweiten Quellrahmen 702-3 zu extrahieren.
  • In einigen Ausführungsformen wird das Gleitfenster 704 zu jedem diskreten Zeitpunkt um einen Bildrahmen in der Folge von Bildrahmen verschoben. In solchen Ausführungsformen wurden die Merkmale 204 für viele der Bildrahmen im Gleitfenster 704 in früheren Zeiträumen extrahiert und vorübergehend in einem Speicher (z.B. Speicher 304) gespeichert, und es ist nur eine einzige Instanz des ersten neuronalen Netzwerks 210 erforderlich, um die Merkmale 204 des neuen Bildrahmens zu extrahieren, der in das Gleitfenster 704 eingeführt wurde.
  • Da die Quellrahmen von dem Bildsensor 230 nahezu zeitgleich mit der Aufnahme des Bezugsrahmens 702-1 aufgenommen werden, ist es wahrscheinlich, dass jeder der Quellrahmen mindestens einen Teil derselben Szene wie der Bezugsrahmens 702-1 erfasst. Mit anderen Worten überdecken zumindest einige der Voxel 234, die in einem Stumpf 220 für einen Quellrahmen enthalten sind, wahrscheinlich die Voxel 234 in einem Stumpf 220 für den Bezugsrahmen 702-1. Daher sollte eine gewisse Übereinstimmung zwischen den Wahrscheinlichkeitswerten bestimmter Voxel, die für die Quellrahmen vorhergesagt wurden, und den Wahrscheinlichkeitswerten überdeckender Voxel, die für den Bezugsrahmen 702-1 vorhergesagt wurden, bestehen.
  • 8 ist ein konzeptionelles Diagramm einer Betriebsumgebung 800 des Systems 700, das gemäß einiger Ausführungsformen dazu eingerichtet ist, eine Folge von Bildrahmen 702 unter Verwendung eines monokularen Bildsensors 230 aufzunehmen. Wie in 8 dargestellt kann der Bildsensor 230 in einer Vorrichtung 802 wie beispielsweise einer Digitalkamera, einem Mobiltelefon, einem mehrachsigen Roboter, einem autonomen Fahrzeug, einer tragbaren Vorrichtung (z.B. Uhr, VR-Anzeige, usw.) oder dergleichen umfasst sein. In einigen Ausführungsformen ist der Bildsensor 230 in einem Sensorpaket inbegriffen, das ein Substrat, wie beispielsweise eine gedruckte Leiterplatte, Mittel zur Kommunikation mit einem Speicher oder Wirtsprozessor (z.B. ein drahtloser Sender-Empfänger oder eine drahtgebundene Kommunikationssteuerungseinheit, wie ein Seriellanschluss-Controller oder USB-Controller) und optische Komponenten, wie beispielsweise eine Linse, Spiegel oder eine Verschlussvorrichtung, umfasst.
  • In einer Ausführungsform umfasst die Vorrichtung 802 ein Positionserfassungs-Teilsystem 810, das dazu verwendet wird, die Position und/oder Ausrichtung der Vorrichtung 802 bezüglich eines Koordinatensystems 830 zu erfassen. Das Positionserfassungs-Teilsystem 810 kann eine Trägheitsmesseinheit (IMU) umfassen, die ein- oder mehrachsige Gyroskope, Beschleunigungssensoren, Magnetometer oder jede andere Art von Sensor umfasst, der imstande ist, eine Position und/oder Ausrichtung eines Objekts zu verfolgen. Anerkannterweise ist die Vorrichtung 802 nicht statisch und kann sich relativ zum Koordinatensystem 830 entlang einer Bewegungsbahn 820 bewegen. Der Bildsensor 230 erfasst einen Bildrahmen zum Zeitpunkt t an einer ersten Position entlang der Bewegungsbahn 820. Der Bildrahmen kann mit dem ersten neuronalen Netzwerkmodell 210 verarbeitet werden, um Merkmale 204 zu extrahieren, die mit einem Sichtstumpf 220-1 verknüpft sind, der innerhalb des dreidimensionalen Raumes definiert ist.
  • Zum Zeitpunkt t-1 vor dem Zeitpunkt t erfasst der Bildsensor 230 einen Bildrahmen an einer zweiten Position entlang der Bewegungsbahn 820. Der Bildrahmen kann durch eine Instanz des ersten neuronalen Netzwerks 210 verarbeitet werden, um Merkmale 204 zu extrahieren, die mit einem zweiten Sichtstumpf 220-2 verknüpft sind. Anerkannterweise überdecken sich zumindest einige der Voxel in den beiden entsprechenden Stümpfen 220 nicht in dem durch das Koordinatensystem 830 definierten Raum. Jedoch ist es angesichts der Nähe der Position und der Ähnlichkeit der Ausrichtung des Bildsensors 230 zwischen der ersten Position und der zweiten Position entlang der Bewegungsbahn 820 sehr wahrscheinlich, dass sich mindestens ein Abschnitt des Stumpfes 220-1 mit einem Abschnitt des Stumpfes 220-2 überdeckt.
  • So überdeckt beispielsweise ein Voxel 841 des Stumpfes 220-1, der mit dem zum Zeitpunkt t aufgenommenen Bildrahmen verknüpft ist, mit einem Voxel 851 und einem Voxel 852 des Stumpfes 220-2, der mit dem zum Zeitpunkt t-1 aufgenommenen Bildrahmen verknüpft ist. Folglich ist es wahrscheinlich, dass ein Objekt an einer Position im Raum relativ zum Koordinatensystem 830 in dem zu Zeitpunkt t aufgenommenen und das Voxel 841 überdeckenden Bildrahmen, bei zwischen dem Zeitpunkt t-1 und dem Zeitpunkt t stationärem Objekt mindestens eines aus Voxel 851 oder Voxel 852 in dem zum Zeitpunkt t-1 aufgenommenen Bildrahmen überdeckt.
  • Anerkannterweise wird die Betriebsumgebung 800 zur besseren Veranschaulichung im Vergleich zu einer zweidimensionalen Darstellung der Betriebsumgebung 800 dargestellt und beschrieben. Die Betriebsumgebung 800 existiert jedoch in einem dreidimensionalen Raum und daher kann das in 8 dargestellte Konzept der Stümpfe 220, der Bewegungsbahn 820 und des Koordinatensystems 830 auf den dreidimensionalen Raum ausgedehnt werden. Mit anderen Worten kann die Position des Bildsensors 230 z.B. über einen Dreikoordinatenvektor wie eine x-Koordinate, eine y-Koordinate und eine z-Koordinate bezogen auf den Ursprung des Koordinatensystems 830 definiert sein. Ebenso kann die Ausrichtung des Bildsensors 230 z.B. über einen Dreikoordinatenvektor wie eine x-Achsen-Rotation, eine y-Achsen-Rotation und eine z-Achsen-Rotation definiert sein. Die Ausmaße der Voxel 234 der Stümpfe 220 können dann dadurch bestimmt werden, dass Strahlen, die mit Pixeln oder Teilmengen von Pixeln verknüpft sind, in den dreidimensionalen Raum projiziert werden und die Position von Knoten für jedes Voxel 234 durch Bestimmen des Schnittpunktes der Schnittebenen 236 mit den Strahlen bestimmt wird.
  • Unter Bezugnahme auf 7 kombiniert das System 700, anstatt sich auf die vom neuronalen Netzwerk 210 extrahierten Merkmale 204-1 für den Bezugsrahmen 702-1 allein zu verlassen, mehrere Sätze von Merkmalen 204, die von dem ersten neuronalen Netzwerk 210 für mehrere Bildrahmen innerhalb des Gleitfensters 704 extrahiert wurden, um ein gemessenes DPV 710 für den Bezugsrahmen 702-1 zu erzeugen. Das gemessene DPV 710, das mit einem Mehrrahmen-Gleitfenster 704 verknüpft ist, ist zeitlich stabiler als ein DPV, das allein auf den Merkmalen 204-1 des Bezugsrahmens 702-1 beruht.
  • In einer Ausführungsform wird jeder Satz von Merkmalen 204, der durch eine Instanz des neuronalen Netzwerks 210 aus einem Quellrahmen extrahiert wird, durch eine Verzerrfunktion 712 modifiziert, die auf den für den Quellrahmen empfangenen relativen Kamerapositionsinformationen 706 basiert. Wie hierin verwendet, bezieht sich die relative Kamerapositionsinformation 706 auf einen Unterschied zwischen Kameraparametern für den Quellrahmen und Kameraparametern für den Bezugsrahmen 702-1. Die Kameraparameter können eine Position und/oder Ausrichtung des Bildsensors umfassen, die durch das Positionserfassungs-Teilsystem 810 gemessen wird. In einigen Ausführungsformen können die Kameraparameter auch Einrichtungsinformationen umfassen wie etwa eine Objektivbrennweite, Zoomparameter und dergleichen, die dazu verwendet werden können, eine Differenz zwischen dem für jeden der Quellrahmen definierten entsprechenden Stumpf 220 und dem Bezugsrahmen 702-1 zu berechnen.
  • Die offenbarten Verfahren erfordern eine Bestimmung der relativen Kamerapositionsinformationen 706 (z.B. relative Kamerapositionen δT) zwischen zwei Rahmen - zwischen einem Bezugsrahmen 702-1 und einem Quellrahmen - um die Berechnung des gemessenen DPV 710 über die Verzerrfunktion 712 zu starten. Es gibt mehrere plausible Alternativen, die für diese Offenlegung bewertet wurden. In vielen Anwendungen, wie beispielsweise beim autonomen Fahren und AR, können erste Kamerapositionen für den Bildsensor 230 durch zusätzliche Sensoren wie beispielsweise einen Globalpositionierungssensor (GPS), einen Kilometerzähler oder die IMU des Positionserfassungs-Teilsystems 810 bereitgestellt werden. Alternativ können monokulare visuelle Lageschätzungsverfahren, wie die direkte spärliche Lageschätzung (DSO), implementiert werden, um die anfänglichen Kamerapositionen für den Bildsensor 230 zu erhalten, entweder anstelle oder zusätzlich zu den oben beschriebenen IMU-, GPS- und/oder kilometerzählerbasierten Positionserfassungsmodi. Eine beispielhafte DSO-Methode ist in J. Engel, u.a., „Direct Sparse Odometry", in IEEE Transactions on Pattern Analysis and Machine Intelligente (TPAMI), Band 40, Seiten 611-625 (2018) beschrieben, die hierin in ihrer Gesamtheit durch Verweis aufgenommen wird.
  • Die Verzerrfunktion 712 erzeugt eine verzerrte Version der Merkmale 708 für einen entsprechenden Quellrahmen, indem sie die Merkmale 204 für den Quellrahmen beruhend auf der relativen Kamerapositionsinformation 706 abliest.
    Diese Technik kann als Rasterabtastung bezeichnet werden. In einer Ausführungsform tastet die Verzerrfunktion 712 die Werte in den Merkmalskarten 204 für einen Quellrahmen ab, um Wahrscheinlichkeitswerte vorherzusagen, die mit einem Stumpf 220-2 verknüpft sind, der dem Stumpf 220-1 für die Merkmale 204-1 des Bezugsrahmens 702-1 entspricht. Beispielsweise kann die Verzerrfunktion 712 für jedes Voxel des Stumpfes 220-1, das mit den Merkmalen 204-1 für den Bezugsrahmen 702-1 verknüpft ist, bestimmen, ob dieses Voxel ein oder mehrere Voxel des Stumpfes 220-2 überdeckt, der mit den Merkmalen 204-2 für den Quellrahmen 702-2 verknüpft ist.
  • In einer Ausführungsform kann die Verzerrfunktion 712 den Wahrscheinlichkeitswert für ein bestimmtes Voxel des Stumpfes 220-2 für den Quellrahmen abtasten, der mit dem größten überdeckenden Volumen mit einem entsprechenden Voxel für den Stumpf 220-1 für den Bezugsrahmen 702-1 verknüpft ist. Alternativ kann die Verzerrfunktion 712 den Wahrscheinlichkeitswert für ein bestimmtes Voxel des Stumpfes 220-2 für den Quellrahmen abtasten, der mit dem nächstüberdeckenden Voxel für den Stumpf 220-1 für den Quellrahmen 702-1 verknüpft ist. In einer weiteren Ausführungsform kann die Verzerrfunktion 712 mehrere Wahrscheinlichkeitswerte für zwei oder mehr Voxel für den Stumpf 220-2 für den Quellrahmen abtasten, die sich mit dem entsprechenden Voxel für den Stumpf 220-1 für den Bezugsrahmen 702-1 überdecken.
  • In einer Ausführungsform werden die Merkmale 204-1 für den Bezugsrahmen 702-1 und die verzerrten Versionen der Merkmale 708-1 für jeden der Quellrahmen im Gleitfenster 704 durch eine Softmax-Funktion 714 verarbeitet, die den gemessenen DPV 710 ausgibt. Genauer gesagt wird ein Kostenvolumen berechnet, indem eine Differenz zwischen den Merkmalen 204-1 für den Bezugsrahmen 702-1 und der verzerrten Version der Merkmale 708 für jedes der Quellrahmen wie folgt addiert wird: L ( d t | I t ) = k N , k t f ( I t ) w a r p ( f ( I k ) ; d t , δ T k t ) ,
    Figure DE102019130889A1_0004
    wobei f(·) ein durch das erste neuronale Netzwerk 210 definierter Merkmals-Extraktor ist (z.B. die Funktion, die die Merkmale 204 aus einem Bildrahmen 202 extrahiert), δTkt ist die relative Kamerapositionsinformation 706 vom Quellrahmen Ik zum Bezugsrahmen It und warp(·) ist die Verzerrfunktion 712, die dazu eingerichtet ist, die Bildmerkmale vom Quellrahmen Ik zum Bezugsrahmen It zu verzerren.
    Das gemessene DPV 710 kann dann wie folgt dargestellt werden: p ( d t | I t ) = s o f t m a x ( L ( d t | I t ) ) ,
    Figure DE102019130889A1_0005
  • Untersuchung der Gleichung 5 zeigt, dass die Softmax-Funktion 714 längs der Tiefendimension des Kostenvolumens L(dt|It) arbeitet, um die Wahrscheinlichkeitswerte des Kostenvolumens so zu normieren, dass die Summe der mit einem bestimmten Pixel oder einer Teilmenge von Pixeln verknüpften Elemente (z.B. Wahrscheinlichkeitswerte) sich zu eins summieren und im Bereich von [0,1] liegen.
  • Die von der Softmax-Funktion 714 verwendete Verteilungsfunktion ist typischerweise eine Exponentialfunktion, wie etwa Gleichung 6, sie kann aber auch eine andere Art von Verteilungsfunktionen sein, die einen Bereich von Eingaben dem Wertebereich zwischen [0,1] zuordnet. σ ( z ) = e β z i j e β z j
    Figure DE102019130889A1_0006
  • 9 veranschaulicht ein Gleitfenster 704, das sich gemäß einiger Ausführungsformen über einen Zeitraum von Zeitpunkt t bis Zeitpunkt t+1 fortbewegt. Das Gleitfenster 704-1 deckt fünf Rahmen in der Folge von Bildrahmen zum Zeitpunkt t ab. Der Rahmen in der Mitte des Gleitfensters 704-1, Rahmen N 910, ist der Bezugsrahmen 702-1. Darüber hinaus sind Rahmen N-2 912, Rahmen N-1 914, Rahmen N+1 916 und Rahmen N+2 918 Quellrahmen. Ein gemessenes DPV 710 kann für einen Bezugsrahmen 702-1 (z.B. Rahmen N 910) beruhend auf den Merkmalen 204 berechnet werden, die durch das erste neuronale Netzwerk 210 für jeden der Bildrahmen im Gleitfenster 704-1 extrahiert wurden.
  • Das Gleitfenster 704-1 bewegt sich um ein Bild zwischen der Zeit t und der Zeit t+1, um fünf Bilder in der Folge von Bildrahmen innerhalb des Gleitfensters 704-2 zum Zeitpunkt t+1 aufzunehmen. Der Bildrahmen in der Mitte des Gleitfensters 704-2 (z.B., Rahmen N 920) ist der Bezugsrahmen 702-1 zum Zeitpunkt t+1 und entspricht dem Rahmen N+1 916 im Gleitfenster 704-1. Darüber hinaus sind Rahmen N-2 922, Rahmen N-1 924 und Rahmen N+1 926 im Gleitfenster 704-2 Quellrahmen und entsprechen Rahmen N-1 914, Rahmen N 910 und Rahmen N+2 918 im Gleitfenster 704-1. Ein neuer Rahmen, Rahmen N+2 928, in der Folge von Bildrahmen 702 tritt zum Zeitpunkt t+1 in das Gleitfenster 704-2 ein. Ein gemessenes DPV 710 kann für einen Bezugsrahmen 702-1 (z.B. Rahmen N 920) beruhend auf den Merkmalen 204 berechnet werden, die durch das erste neuronale Netzwerk 210 für jeden der Rahmen im Gleitfenster 704-2 extrahiert wurden.
  • Anerkannterweise wurden die Merkmale 204 für die Bilder 922, 924, 920 und 926 extrahiert oder bereits vor dem Zeitpunkt t extrahiert, als das gemessene DPV 710 für Rahmen N 910 zum Zeitpunkt t erzeugt wurde. Diese Merkmale 204 können in einem Speicher gespeichert und zum Zeitpunkt t+1 wiederverwendet werden, wenn ein gemessenes DPV 710 für den Rahmen N 920 durch das System 700 zum Zeitpunkt t+1 erzeugt wird. Folglich wird zum Zeitpunkt t+1 nur der Rahmen N+2 928 durch eine Instanz des neuronalen Netzwerks 210 verarbeitet, um entsprechende Merkmale 204 für Frame N+2 928 zu erzeugen.
  • Implementierungen der Bayes'schen Filterung
  • Im Allgemeinen ist ein Ziel bei der Verarbeitung eines Videodatenstroms die Integration der lokalen Schätzung eines Tiefenwahrscheinlichkeitsvolumens im Zeitverlauf, um die Unsicherheit zu verringern (z.B. Erhöhung des mit jeder Tiefenschätzung verknüpften Konfidenzniveaus). Diese Integration ist natürlicherweise als Bayes'sche Filterung implementierbar. Sofern dt (z.B. die Tiefe bei Rahmen It) als der verborgene Zustand des Systems 700 definiert ist, ist ein Überzeugungsvolumen als p(dt|I1:t) definiert, was die bedingte Verteilung des Zustands angesichts aller vorherigen Rahmen in der Folge von Bildrahmen ist. Mit anderen Worten weist das System 700 einen Speicher über die T Rahmen vom Rahmen I1 bis It auf. Eine einfache Bayes'sche Filterung ist in zwei Schritten implementierbar.
  • In einem Vorhersageschritt kann ein vorhergesagtes DPV für den nächsten Zustand dt+1 beruhend auf dem aktuellen Zustand berechnet werden. Genauer gesagt wird das zum Zeitpunkt t gemessene DPV 710 beruhend auf den relativen Kamerapositionsinformationen δTt,t+1 zum Zeitpunkt t+1 im Vergleich zum Zeitpunkt t wie folgt verzerrt: p ( d t + 1 | I 1 : t ) = w a r p ( p ( d t | I 1 : t ) , δ T t , t + 1 ) ,
    Figure DE102019130889A1_0007
    wobei der Verzerroperator als eine 3D-Rasterabtastung des aktuell gemessenen DPV 710 für den Bezugsrahmen 702-1 zum Zeitpunkt t implementiert ist. Die verzerrte Version des gemessenen DPV 710 kann als ein vorhergesagtes DPV bezeichnet werden.
  • In einem Aktualisierungsschritt kann ein gemessenes DPV 710 für den nächsten Rahmen It+1 zum Zeitpunkt t+1 durch das System 700 unter Verwendung von Instanzen des neuronalen Netzwerks 210 geschätzt werden, um Merkmale 204 für die Bildrahmen innerhalb des Gleitfensters zum Zeitpunkt t+1 zu extrahieren.
    Der verborgene Zustand p(dt+1|I1:t+1) wird dann beruhend auf dieser Schätzung des zum Zeitpunkt t+1 gemessenen DPV 710 und des vorhergesagten DPV wie folgt aktualisiert: p ( d t + 1 | I 1 : t + 1 ) = p ( d t + 1 | I 1 : t ) p ( d t + 1 | I 1 : t + 1 ) ,
    Figure DE102019130889A1_0008
  • Das Ergebnis von Gleichung 8 kann als das aktualisierte DPV bezeichnet werden. Anerkannterweise ist das Ergebnis der Gleichungen 7 und 8 immer so normiert, dass sich die Elemente über jeden Kanal des Überzeugungsvolumens zu eins summieren, um Wahrscheinlichkeiten darzustellen. Gleichung 8 kann als Integration durch Bayes'sche Filterung ohne Dämpfung bezeichnet werden.
  • 10 veranschaulicht ein System 1000 gemäß einer Ausführungsform zur Integration der gemessenen DPVen 710 im Zeitverlauf, um eine Unsicherheit zu mindern. In einem ersten Schritt erzeugt eine Verzerrfunktion 1012 aus einem gemessenen DPV 710-1 für einen Bezugsrahmen 702-1 in einem von dem System 700 erzeugten Gleitfenster 704 das vorhergesagte DPV 1010-1. Die Verzerrfunktion 1012 ist ähnlich der Verzerrfunktion 712. Genauer gesagt wird das gemessene DPV 710-1 verzerrt, um ein für die Zeit t+1 vorhergesagtes DPV 1010 beruhend auf der relativen Kamerapositionsinformation 1006 zu erzeugen.
  • In einem zweiten Schritt wird das vorhergesagte DPV 1010 mit einem gemessenen DPV 710-2 für einen Bezugsrahmen 702-1 in einem von dem System 700 erzeugten Gleitfenster 704 zu einem Zeitpunkt t+1 kombiniert. Der Kombinationsvorgang wird durchgeführt, indem jedes Element des vorhergesagten DPV 1010 mit einem entsprechenden Element des gemessenen DPV 710-2 multipliziert und anschließend das Ergebnis normiert wird.
  • Ein Problem bei der direkten Anwendung der Bayes'schen Filterung ist, dass sich mit der Zeit sowohl korrekte als auch falsche Informationen fortpflanzen. So können Artefakte wie z.B. Lichtreflexe in einem Rahmen einen durch das gemessene DPV 710 verursachten Fehler über mehrere Rahmen fortpflanzen. In einem weiteren Beispiel können Verdeckungen oder Entdeckungen dazu führen, dass sich die geschätzte Tiefe an Objektgrenzen abrupt von Rahmen zu Rahmen ändert. Eine Lösung besteht darin, eine Dämpfung dazu zu verwenden, das Gewicht des vorhergesagten DPV 1010 zu reduzieren und die Fortpflanzung falscher Informationen aus früheren Rahmen zu mindern.
  • 11 veranschaulicht ein System 1100 gemäß einer anderen Ausführungsform zur Integration der gemessenen DPVen 710 im Zeitverlauf, um eine Unsicherheit unter Verwendung einer globalen Dämpfungsmethode zu mindern. Das System 1100 ist dem System 1000 ähnlich, mit der Ausnahme, dass der Kombinationsvorgang einen globalen Dämpfungsparameter verwendet (z.B. λ = 0.8) um die Auswirkungen des vorhergesagten DPV 1010 auf die Ausgabe des aktualisierten DPV 1040 zu dämpfen. Genauer gesagt kann durch die Definition von E(d) = - log p(d) Gleichung 8 umgeschrieben werden zu: E ( d t + 1 | I 1 : t + 1 ) = E ( d t + 1 | I 1 : t ) + E ( d t + 1 | I t + 1 ) ,
    Figure DE102019130889A1_0009
    wobei sich der erste Term auf der rechten Seite der Gleichung auf das vorhergesagte DPV 1010 und der zweite Term auf der rechten Seite der Gleichung auf das gemessene DPV 710-2 bezieht. Globale Dämpfung kann dann auf Gleichung 9 dadurch angewendet werden, dass der erste Term mit dem globalen Dämpfungsparameter wie folgt multipliziert wird: E ( d t + 1 | I 1 : t + 1 ) = λ E ( d t + 1 | I 1 : t ) + E ( d t + 1 | I t + 1 ) ,
    Figure DE102019130889A1_0010
  • Während allerdings globale Dämpfung dazu beiträgt, den Fehler durch falsche Werte in dem vorhergesagten DPV 1010 aufgrund von z.B. Verdeckungen oder Entdeckungen zu mindern, verhindert globale Dämpfung auch, dass sich einige korrekte Tiefeninformationen für den nächsten Rahmen in den verborgenen Zustand fortpflanzen. Daher wird eine als adaptive Dämpfung bezeichnete Lösung vorgeschlagen.
  • 12 veranschaulicht ein System 1200 gemäß einer weiteren Ausführungsform zur Integration der gemessenen DPVen 710 im Zeitverlauf, um eine Unsicherheit durch eine adaptive Dämpfungsmethode zu mindern. Im Gegensatz zu den Systemen 1000 und 1100 kombiniert das System 1200 das vorhergesagte DPV 1010 und das gemessene DPV 710-2 nicht direkt, sondern das System 1200 berechnet stattdessen eine Differenz zwischen dem vorhergesagten DPV 1010 und dem gemessenen DPV 710-2, um ein verbleibendes DPV 1220 zu erzeugen. Das verbleibende DPV 1220 hebt die Abschnitte des vorhergesagten DPV 1010 hervor, die fehlerhafte Informationen darstellen können, wie beispielsweise jene Wahrscheinlichkeiten für Voxel in der Nähe von Objekten, die sich vom Rahmen zum Zeitpunkt t zum Rahmen zum Zeitpunkt t+1 bewegt haben könnten.
  • In einer Ausführungsform wird das verbleibende DPV 1220 als Eingabe für ein zweites neuronales Netzwerks 1210 bereitgestellt. Das zweite neuronale Netzwerk 1210 ist dazu eingerichtet, das verbleibende DPV 1220 zu verarbeiten und ein verbleibendes Verstärkungsvolumen 1230 zu erzeugen, das geschätzte Dämpfungsgewinne pro Pixel umfasst, die auf das vorhergesagte DPV 1010 angewendet werden, um das aktualisierte DPV 1240 gemäß der folgenden Gleichung zu erzeugen: E ( d t + 1 | I 1 : t + 1 ) = E ( d t + 1 | I 1 : t ) + g ( Δ E t + 1 , I 1 : t ) ,
    Figure DE102019130889A1_0011
    wobei sich ΔEt+1 auf das verbleibende DPV 1220 bezieht und sich g(·) auf ein durch das zweite neuronale Netzwerk 1210 implementiertes CNN bezieht. Im Gegensatz zu Gleichung 10 ist das das durch die Anwendung von Gleichung 11 erzeugte aktualisierte DPV 1240 nur von dem vorhergesagten DPV 1010 und auf dem restlichen DPV 1220 beruhenden geschätzten Korrekturfaktoren des zweiten neuronalen Netzes 1210 abhängig und wird nicht direkt aus dem durch das System 700 erzeugten gemessenen DPV 710-2 berechnet.
  • In einer Ausführungsform ist das zweite neuronale Netzwerk 1210 eng mit einem Kalman-Filter verwandt, wobei sich bei vorgegebener Beobachtung xt zum Zeitpunkt t und verborgenem Zustand ht-1 zum Zeitpunkt t-1 der aktualisierte verborgene Zustand wie folgt ergibt: h t = W t h t 1 + K t V t ( x t W t h t 1 ) ,
    Figure DE102019130889A1_0012
    wobei Wt eine Übergangsmatrix ist, die den vorherigen verborgenen Zustand auf den aktuellen Zustand abbildet; Kt eine Verstärkungsmatrix ist, die den verbleibenden Rest in einem Beobachtungsraum auf den verborgenen Zustandsraum abbildet; und Vt eine Messmatrix ist, die die Schätzung in dem verborgenen Zustandsraum zurück in den Beobachtungsraum abbildet. Im Vergleich zum System 1200 ist das Gleitfenster 704 von Bildrahmen äquivalent zu Beobachtung xt, sind die negativ-logarithmischen Tiefenwahrscheinlichkeitsvolumina äquivalent zu dem verborgenen Zustand ht, ist die Verzerrfunktion 1012 äquivalent zu der Übergangsmatrix Wt und das zweite neuronale Netzwerk 1210 ist äquivalent zu der Multiplikation der Verstärkungs- und Messmatrizen. KtVt.
  • In einer Ausführungsform ist das zweite neuronale Netzwerk 1210 ein CNN mit einer Anzahl von Stufen, wobei jede Stufe eine oder mehrere Schichten umfasst. Eine Eingabe für das zweite neuronale Netzwerk 1210 ist ein vierdimensionales Hypervolumen, das einen Kanal mit dem verbleibenden DPV 1220 und drei zusätzliche Kanäle mit einem erweiterten Bezugsrahmen umfasst. Genauer gesagt umfasst jeder den erweiterten Bezugsrahmen darstellende Kanal Informationen für einen bestimmten Farbkanal des Bezugsrahmens (z.B. rote, grüne oder blaue Kanäle), der in ein 3D-Volumen, das den Abmessungen des gemessenen DPV für den Bezugsrahmen entspricht, projiziert wird. Mit anderen Worten wird ein 2D-Bild, das die Farbinformationen aus dem Bezugsrahmen für einen bestimmten Farbkanal darstellt, n-mal repliziert (z.B. n gleich 64), um ein 3D-Volumen zu erzeugen, das Informationen für einen bestimmten Farbkanal umfasst, die in jeder Tiefe repliziert werden. Die Kombination der 3D-Volumina für die drei Farbkanäle des Bildes und des verbleibenden DPV 1220 sind in den vier Kanälen des 4D-Hypervolumens inbegriffen.
  • In einer Ausführungsform umfasst eine erste Stufe des CNN eine erste Faltungsschicht, die eine 4-Kanal-Eingabe empfängt und einen 3D-Faltungsvorgang unter Verwendung eines 3 × 3-Faltungskerns anwendet, um eine 32-Kanal-Ausgabe zu erzeugen. Wie hierin verwendet unterscheidet sich ein 3D-Faltungsvorgang von einem 2D-Faltungsvorgang, da die Elemente eines bestimmten Kanals der Ausgabe gewichtete Abschnitte mehrerer Kanäle der Eingabe umfassen können. Der ersten Faltungsschicht kann eine Aktivierungsfunktion, wie beispielsweise eine ReLU, und eine zweite Faltungsschicht folgen. Die zweite Faltungsschicht empfängt die 32-Kanal-Ausgabe der ReLU nach der ersten Faltungsschicht und wendet einen 3D-Faltungsvorgang unter Verwendung eines 3 × 3-Faltungskerns an, um eine 32-Kanal-Ausgabe zu erzeugen (z.B. die gleiche wie die Eingabe). Auf die zweite Faltungsschicht kann auch eine Aktivierungsfunktion, wie beispielsweise eine ReLU, folgen.
  • In einer Ausführungsform sind die Dimensionen der Eingabe zu dem zweiten neuronalen Netz H/4 × W/4 × 64 × 4 und die Dimensionen der Ausgabe der ersten Stufe sind H/4 × W/4 × 64 × 32. Der ersten Stufe des CNN folgt eine zweite Stufe des CNN, die eine Reihe von Blöcken umfasst. Jeder Block umfasst eine erste Faltungsschicht, gefolgt von einer Aktivierungsfunktion (z.B. ReLU) und eine zweite Faltungsschicht. In einigen Ausführungsformen folgt der zweiten Faltungsschicht keine Aktivierungsfunktion. Sowohl die erste Faltungsschicht als auch die zweite Faltungsschicht in dem Block implementieren 3D-Faltungsvorgänge und unterhalten dieselbe Anzahl von Kanälen an der Ausgabe wie die Anzahl der Kanäle an der Eingabe. Die zweite Stufe versucht effektiv, das Empfangsfeld eines jeden Elements der Ausgabe der zweiten Stufe zu erweitern. Die Dimensionen der Ausgabe der zweiten Stufe betragen H/4 × W/4 × 64 × 32.
  • Der zweiten Stufe des CNN folgt eine dritte Stufe des CNN, die eine erste Faltungsschicht umfasst, die eine 32-Kanal-Eingabe empfängt, und einen 3D-Faltungsvorgang unter Verwendung eines 3 × 3-Faltungskerns anwendet, um eine 32-Kanal-Ausgabe zu erzeugen. Der ersten Faltungsschicht kann eine Aktivierungsfunktion, wie beispielsweise eine ReLU, und eine zweite Faltungsschicht folgen. Die zweite Faltungsschicht empfängt die 32-Kanal-Ausgabe der ReLU nach der ersten Faltungsschicht und wendet einen 3D-Faltungsvorgang unter Verwendung eines 3 × 3-Faltungskerns an, um eine Ausgabe zu erzeugen (z.B. eine verbleibende Verstärkung entsprechend jedem Wert des vorhergesagten DPV 1010). Die Ausgabe des zweiten neuronalen Netzwerks 1210 hat eine Dimension von H/4 × W/4 × 64, was dieselbe ist wie beim vorhergesagten DPV 1010.
  • Anerkannterweise hat das durch das System 1200 ausgegebene aktualisierte DPV 1240 eine Auflösung im Pixelraum die ¼ der Auflösung des Bezugsrahmens 702-1 in jeder Dimension des Pixelraums ist. Folglich wird in einigen Ausführungsformen das aktualisierte DPV 1240 von einem dritten neuronalen Netzwerk verarbeitet, um ein verfeinertes DPV zu erzeugen, das einer Auflösung des Bezugsrahmens 702-1 im Pixelraum entspricht.
  • 13 veranschaulicht ein System 1300 gemäß einiger Ausführungsformen zur Verfeinerung des aktualisierten DPV 1240. Das System 1300 umfasst ein drittes neuronales Netzwerk 1310, das ein CNN, genannt R-Net, ist, das dazu eingerichtet ist, das aktualisierte DPV 1240 hochzutasten und auf eine ursprüngliche Bildauflösung des Bezugsrahmens 702-1 zu verfeinern. Anerkannterweise wird von dem System 1300 ein CNN anstelle einer einfachen Interpolation, wie z.B. einer bi-linearen Interpolation, implementiert, um die Ergebnisse während des Hochtastvorgangs weiter zu verfeinern, anstatt nur die Auflösung im Pixelraum zu erhöhen. Das dritte neuronale Netzwerk 1310 ist im Wesentlichen ein U-Netz mit Skip-Links, das sowohl das aktualisierte DPV 1240 aus dem System 1200 als auch Merkmale 1302 des Bezugsrahmens 702-1 aus den Schichten des neuronalen Netzwerks 210 als Eingabe nimmt. In einer Ausführungsform umfassen die Merkmale 1302 die Ausgabe der Fusionsschichten 218 des neuronalen Netzwerks 210.
  • In einer Ausführungsform umfasst das dritte neuronale Netzwerk 1310 eine Anzahl von Stufen, wobei jede Stufe eine Anzahl von Schichten umfasst. Die Eingabe zu dem dritten neuronalen Netzwerk 1310 wird durch eine erste Faltungsschicht der ersten Stufe des CNN verarbeitet. Die erste Faltungsschicht wendet einen Faltungsvorgang mit einem 3 × 3 Faltungskern an, gefolgt von einer Aktivierungsfunktion, wie beispielsweise einer leckenden ReLU. Die Ausgabe der leckenden ReLU wird von einer zweiten Faltungsschicht verarbeitet, die einen Faltungsvorgang mit einem 3 × 3 Faltungskern anwendet, gefolgt von einer Aktivierungsfunktion wie beispielsweise einer leckenden ReLU. Die letzte Schicht in der ersten Stufe ist eine transponierte Faltungsschicht, die einen 4 × 4 Faltungskern anwendet, um die räumliche Auflösung der Ausgabe der ersten Stufe im Pixelraum zu verdoppeln. Die transponierte Faltungsschicht reduziert auch die Anzahl der Kanäle der Ausgabe um die Hälfte, wobei sie eine Ausgabe von H/2 × W/2 × 64 erzeugt.
  • Die Ausgabe der ersten Stufe des CNN wird durch eine erste Faltungsschicht der zweiten Stufe des CNN verarbeitet. Die Eingabe zur zweiten Stufe umfasst sowohl die Ausgabe der ersten Stufe als auch die Ausgabe einer Zwischenschicht der Faltungsschichten 212 des neuronalen Netzwerks 210, welche in den Merkmalen 1302 inbegriffen sind, und weist Dimensionen von H/2 × W/2 × 96 auf. Die erste Faltungsschicht wendet einen Faltungsvorgang mit einem 3 × 3 Faltungskern an, gefolgt von einer Aktivierungsfunktion, wie beispielsweise einer leckenden ReLU. Die Ausgabe der leckenden ReLU wird von einer zweiten Faltungsschicht verarbeitet, die einen Faltungsvorgang mit einem 3 × 3 Faltungskern anwendet, gefolgt von einer Aktivierungsfunktion wie beispielsweise einer leckenden ReLU. Weder die erste Faltungsschicht noch die zweite Faltungsschicht verändern die Dimensionalität der Eingabe zur zweiten Stufe. Die letzte Schicht in der zweiten Stufe ist eine transponierte Faltungsschicht, die einen 4 × 4 Faltungskern anwendet, um die räumliche Auflösung der Ausgabe der zweiten Stufe im Pixelraum zu verdoppeln. Die transponierte Faltungsschicht reduziert auch die Anzahl der Kanäle der Ausgabe und erzeugt eine Ausgabe von H × W × 64.
  • Die Ausgabe der zweiten Stufe des CNN wird durch eine erste Faltungsschicht der dritten Stufe des CNN verarbeitet. Die Eingabe zu der dritten Stufe umfasst sowohl die Ausgabe der zweiten Stufe als auch den Bezugsrahmen 702-1, der als Eingabe für das neuronale Netzwerk 210 vorgesehen ist, der in den Merkmalen 1302 inbegriffen ist, und weist Abmessungen von H × W × 67 auf. Die erste Faltungsschicht wendet einen Faltungsvorgang mit einem 3 × 3 Faltungskern an, gefolgt von einer Aktivierungsfunktion, wie beispielsweise einer leckenden ReLU. Die Ausgabe der leckenden ReLU wird von einer zweiten Faltungsschicht verarbeitet, die einen Faltungsvorgang mit einem 3 × 3 Faltungskern anwendet, gefolgt von einer Aktivierungsfunktion wie beispielsweise einer leckenden ReLU. Die zweite Faltungsschicht reduziert die Anzahl der Kanäle von 67 auf 64. Die Ausgabe der leckenden ReLU der zweiten Faltungsschicht wird von einer dritten Faltungsschicht verarbeitet, die einen Faltungsvorgang unter Verwendung eines 3 × 3-Faltungskerns anwendet, um eine Ausgabe des dritten neuronalen Netzwerks 1310 mit Abmessungen von H × W × 64 zu erzeugen, die als verfeinertes DPV 1320 bereitgestellt wird.
  • Anerkannterweise sind die Skip-Links im dritten neuronalen Netzwerk 1310 nicht wie bei herkömmlichen Skip-Links mit der Eingabe oder Ausgabe früherer Phasen des dritten neuronalen Netzwerks 1310 verbunden, sondern mit Merkmalen aus dem neuronalen Netzwerk 210 verbunden, die zur Verarbeitung des Bezugsrahmens 702-1 verwendet werden, die als Merkmale 1302 zur Verarbeitung an das dritte neuronale Netzwerk 1310 weitergeleitet werden.
  • Zusammenfassend kann das gesamte System drei gesonderte Abschnitte umfassen, wobei jeder Abschnitt ein anderes neuronales Netzwerk zur Verarbeitung der Daten innerhalb dieses Abschnitts verwendet. In einem ersten Abschnitt verarbeitet das erste neuronale Netzwerk 210 eine Folge von Bildrahmen 702 innerhalb eines Gleitfensters 704, um Merkmale 204 eines jeden der Bildrahmen 702 zu extrahieren. Merkmale 204 für eine Reihe von Quellrahmen innerhalb des Gleitfensters 704 können zum Erzeugen eines gemessenen DPV 710 mit den Merkmalen 204 für einen Bezugsrahmen 702-1 verzerrt und gefiltert werden. In einem zweiten Abschnitt werden das gemessene DPV 710 für einen Bezugsrahmen 702-1 und ein vorhergesagtes DPV 1010, beruhend auf einer verzerrten Version des gemessenen DPV 710 für den vorherigen Bezugsrahmen, verglichen, um ein verbleibendes DPV 1220 zu erzeugen, das durch das zweite neuronale Netzwerk 1210 verarbeitet wird, um ein verbleibendes Verstärkungsvolumen 1030 zu erzeugen, das mit dem vorhergesagten DPV 1010 kombiniert wird, um ein aktualisiertes DPV 1240 zu erzeugen. In einem dritten Abschnitt wird das aktualisierte DPV 1240 mit dem dritten neuronalen Netzwerk 1310 hochgetastet, um ein verfeinertes DPV 1320 bei erhöhter Auflösung zu erzeugen. Das verfeinerte DPV 1320 kann verarbeitet werden, um eine geschätzte Tiefenkarte und eine entsprechende Konfidenzkarte zu erzeugen, die mit dem Bezugsrahmen 702-1 innerhalb des Gleitfensters 704 verknüpft ist. Videodatenströme können verarbeitet werden, indem man die Schritte wiederholt, nachdem das Gleitfenster 704 Bild für Bild verschoben wurde, wenn neue Bilder empfangen werden.
  • Die 14A & 14B veranschaulichen ein Flussdiagramm eines Verfahrens 1400 gemäß einer Ausführungsform zum Schätzen von Tiefe eines mit einem monokularen Bildsensor aufgenommenen Videodatenstroms. Obwohl das Verfahren 1400 in dem Zusammenhang einer Verarbeitungseinheit beschrieben wird, kann das Verfahren 1400 auch durch ein Programm, eine benutzerdefinierte Schaltung oder durch eine Kombination aus einer benutzerdefinierten Schaltung und einem Programm durchgeführt werden. Beispielsweise kann das Verfahren 1400 von einer GPU (Grafikverarbeitungseinheit), einer CPU (Zentralverarbeitungseinheit) oder einem beliebigen Prozessor ausgeführt werden, der imstande ist, eine Tiefe unter Verwendung einer Folge von Bildrahmen zu schätzen. Darüber hinaus werden Fachleute verstehen, dass jedes System, das das Verfahren 1400 durchführt, im Geltungsbereich und Sinn der Ausführungsformen der vorliegenden Offenbarung liegt.
  • Bei Schritt 1402 wird eine Folge von Bilddaten empfangen. Die Bilddaten umfassen Bildrahmen, die in einem von einem monokularen Bildsensor erfassten Videodatenstrom enthalten sind. Die Bilddaten können in einem Speicher gespeichert und von einem Prozessor aus dem Speicher gelesen werden. Alternativ können die Bilddaten über eine Schnittstelle von dem monokularen Bildsensor empfangen werden.
  • Bei Schritt 1404 verarbeiten Instanzen eines ersten neuronalen Netzwerks 210 einen Bezugsrahmen 702-1 und mindestens einen Quellrahmen innerhalb eines Gleitfensters 704, um Merkmale 204 für den Bezugsrahmen 702-1 und mindestens einen Quellrahmen in dem Gleitfenster 704 zu extrahieren.
  • Bei Schritt 1406 wird ein gemessenes DPV 710 für den Bezugsrahmen 702-1 beruhend auf den Merkmalen 204 für den Bezugsrahmen 702-1 und mindestens einem Quellrahmen im Gleitfenster 704 erzeugt. In einer Ausführungsform werden die Merkmale 204 für den mindestens einen Quellrahmen über eine Verzerrfunktion gemäß der mit dem mindestens einen Quellrahmen verknüpften relativen Kamerapositionsinformation 706 verzerrt.
  • Bei Schritt 1408 wird für ein Gleitfenster 704 zum Zeitpunkt t+1 ein vorhergesagtes DPV 1010 für einen zweiten Bezugsrahmen erzeugt, indem eine Verzerrfunktion auf das gemessene DPV 710 für den Bezugsrahmen 702-1 angewendet wird.
  • Bei Schritt 1410 wird ein verbleibendes DPV 1220 unter Verwendung von Schichten eines zweiten neuronalen Netzwerks 1210 verarbeitet, um ein verbleibendes Verstärkungsvolumen 1230 zu erzeugen. Das verbleibende DPV 1220 ist eine Differenz zwischen dem vorhergesagten DPV 1010 und dem gemessenen DPV 710 für den zweiten Bezugsrahmen.
  • Bei Schritt 1412 wird das verbleibende Verstärkungsvolumen mit dem vorhergesagten DPV 1010 summiert, um ein aktualisiertes DPV 1240 für den zweiten Bezugsrahmen zu erzeugen.
  • Bei Schritt 1414 wird das aktualisierte DPV 1240 unter Verwendung von Schichten eines dritten neuronalen Netzwerks 1310 verarbeitet, um ein verfeinertes DPV 1320 für den zweiten Bezugsrahmen zu erzeugen.
  • Bei Schritt 1416 werden beruhend auf dem verfeinerten DPV 1320 eine Tiefenkarte und eine Konfidenzkarte erzeugt. Nach Schritt 1416 kann das Verfahren 1400 wiederholt werden, sofern zusätzliche Bildrahmen innerhalb des Videodatenstroms empfangen werden.
  • Anerkannterweise kann eine genauere Tiefenschätzung aus einem von einem monokularen Bildsensor erfassten Videodatenstrom in einer Vielzahl von Anwendungen eingesetzt werden. Beispielsweise kann Robotik von einer genaueren Tiefenschätzung profitieren, ohne zusätzliche Sensoren wie Tiefensensoren oder mehrere Bildsensoren zur Erfassung stereoskopischer Bilder integrieren zu müssen. Darüber hinaus können autonome Fahrzeuge von einer genaueren Tiefenschätzung profitieren, um Algorithmen zur Objektvermeidung zu verbessern. In noch einer weiteren Anwendung kann ein Benutzer mit einem gewöhnlichen Smartphone mit einer einzigen Kamera ein 3D-Modell (z.B. eine Punktwolke) erfassen und rekonstruieren, einfach durch Aufnehmen eines Videos der Umgebung um den Benutzer herum.
  • Es wird darauf hingewiesen, dass die hierin beschriebenen Verfahren in ausführbaren Anweisungen verkörpert sein können, die auf einem rechnerlesbaren Medium gespeichert sind, zur Verwendung durch oder in Verbindung mit einer prozessorbasierten Befehlsausführungsmaschine, einem System, einem Apparat oder einer Vorrichtung. Fachleute erkennen an, dass bei einigen Ausführungsformen verschiedene Arten von rechnerlesbaren Medien zur Speicherung von Daten einbezogen sein können. Wie hierin verwendet umfasst ein „rechnerlesbares Medium“ eines oder mehrere geeignete Medien zum Speichern der ausführbaren Anweisungen eines Rechnerprogramms, sodass die Anweisungsausführungsmaschine, -System, -Apparat oder -Vorrichtung die Anweisungen von dem rechnerlesbaren Medium lesen (oder abrufen) und die Anweisungen zur Ausführung der beschriebenen Ausführungsformen ausführen kann.
    Geeignete Speicherformate sind eines oder mehrere elektronische, magnetische, optische und elektromagnetische Formate. Eine nichtabschließende Liste konventioneller beispielhafter rechnerlesbarer Medien umfasst: eine tragbare Rechnerdiskette; einen Wahlfreizugriffsspeicher (RAM); einen Nur-Lese-Speicher (ROM); einen löschbaren programmierbaren Nur-Lese-Speicher (EPROM); eine Flash-Speicher-Vorrichtung; und optische Speichervorrichtungen, einschließlich einer tragbaren Kompaktdisk (CD), einer tragbaren digitalen Videodisk (DVD) und dergleichen.
  • Es versteht sich, dass die in den beigefügten Figuren dargestellte Anordnung der Komponenten nur zur Veranschaulichung dient und dass andere Anordnungen möglich sind. Beispielsweise kann eines oder mehrere der hierin beschriebenen Elemente ganz oder teilweise als elektronische Hardwarekomponente realisiert werden. Andere Elemente können in Software, Hardware oder einer Kombination aus Software und Hardware implementiert werden. Darüber hinaus können einige oder alle dieser anderen Elemente kombiniert werden, einige können ganz weggelassen werden, und zusätzliche Komponenten können hinzugefügt werden, während die hierin beschriebene Funktionalität noch erhalten bleibt. Somit kann der hierin beschriebene Gegenstand in vielen verschiedenen Variationen verkörpert sein, und alle diese Variationen werden als im Geltungsbereich der Ansprüche liegend betrachtet.
  • Um das Verständnis des hierin beschriebenen Themas zu erleichtern, werden viele Aspekte in Form von Handlungsabläufen beschrieben. Fachleute werden anerkennen, dass die verschiedenen Handlungen durch spezielle Schaltungen oder Schaltkreise, durch Programmanweisungen, die von einem oder mehreren Prozessoren ausgeführt werden, oder durch eine Kombination aus beidem ausgeführt werden können. Die hierin enthaltene Beschreibung einer jeden Abfolge von Handlungen soll nicht implizieren, dass die spezifische Reihenfolge, die für die Durchführung dieser Abfolge beschrieben wird, eingehalten werden muss. Alle hierin beschriebenen Methoden können in jeder geeigneten Reihenfolge durchgeführt werden, sofern hierin nichts anders angegeben oder anderweitig eindeutig durch den Kontext widerlegt ist.
  • Die Verwendung der Begriffe „a“ und „an“ und „der/die/das“ und ähnliche Verweise im Zusammenhang mit der Beschreibung des Gegenstands (insbesondere im Zusammenhang mit den folgenden Ansprüchen) ist so auszulegen, dass sie sowohl den Singular als auch den Plural umfasst, sofern hierin nichts anderes angegeben oder durch den Kontext eindeutig widerlegt ist. Die Verwendung des Begriffs „mindestens ein(e/r/s)“ gefolgt von einer Liste von einem oder mehreren Elementen (z.B. „mindestens eines aus A und B“) ist so zu verstehen, dass ein aus den aufgeführten Elementen (A oder B) ausgewähltes Element oder eine Kombination von zwei oder mehreren der aufgeführten Elemente (A und B), gemeint ist, sofern hierin nichts anderes angegeben oder durch den Kontext eindeutig widerlegt ist. Darüber hinaus dient die vorstehende Beschreibung nur der Veranschaulichung und nicht der Einschränkung, da der angestrebte Schutzumfang durch die nachstehend dargestellten Ansprüche und deren Äquivalente definiert ist. Die Verwendung aller hierin enthaltenen Beispiele oder beispielhaften Sprache (z.B. „wie etwa“) dient lediglich der besseren Veranschaulichung des Gegenstands und stellt sofern nicht anders angegeben keine Einschränkung des Geltungsbereichs des Gegenstands dar. Die Verwendung des Begriffs „beruhend auf“ und anderer ähnlicher Sätze, die sowohl in den Ansprüchen als auch in der schriftlichen Beschreibung eine Bedingung für eine Erzielung eines Ergebnisses angeben, soll nicht dazu dienen, andere Bedingungen auszuschließen, die zu diesem Ergebnis führen. Keine Sprache in der Beschreibung sollte so ausgelegt werden, dass sie ein nicht beanspruchtes Element angibt, das für die Ausführung der beanspruchten Erfindung wesentlich ist.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Nicht-Patentliteratur
    • J. Engel, u.a., „Direct Sparse Odometry“, in IEEE Transactions on Pattern Analysis and Machine Intelligente (TPAMI), Band 40, Seiten 611-625 (2018) [0146]

Claims (19)

  1. Rechnerimplementiertes Verfahren zum Schätzen von Tiefe, wobei das Verfahren umfasst: Empfangen einer Folge von Eingabebilddaten mit Bildrahmen einer Szene; Verarbeiten eines Bezugsrahmens und mindestens eines Quellrahmens, der in der Folge von Eingabebilddaten innerhalb eines mit dem Bezugsrahmen verknüpften Fensters enthalten ist, unter Verwendung von Schichten eines ersten neuronalen Netzwerks, um Merkmale für den Bezugsrahmen und den mindestens einen Quellrahmen innerhalb des Fensters zu extrahieren; Erzeugen eines gemessenen Tiefenwahrscheinlichkeitsvolumens (DPV) für den Bezugsrahmen beruhend auf verzerrten Versionen der Merkmale für den mindestens einen Quellrahmen und den Merkmalen für den Bezugsrahmen; und Erzeugen einer Tiefenkarte und einer Konfidenzkarte beruhend auf dem gemessenen DPV, wobei das gemessene DPV ein zweidimensionales (2D) Feld von Wahrscheinlichkeitswerten für jeden aus einer Vielzahl von Kandidaten-Tiefenwerten umfasst.
  2. Rechnerimplementiertes Verfahren nach Anspruch 1, wobei das Erzeugen des gemessenen DPV umfasst: Anwenden einer Verzerrfunktion auf die Merkmale für jeden Quellrahmen in dem mindestens einen Quellrahmen, um eine verzerrte Version der Merkmale für jeden Quellrahmen zu erzeugen.
  3. Rechnerimplementiertes Verfahren nach Anspruch 2, wobei die Verzerrfunktion, die auf die entsprechenden Merkmale für einen bestimmten Quellrahmen angewendet wird, auf relativen Kamerapositionsinformationen beruht, die sich auf eine Differenz zwischen einer ersten Position eines mit dem Bezugsrahmen verknüpften Bildsensors und einer zweiten Position des mit dem bestimmten Quellrahmen verknüpften Bildsensors bezieht.
  4. Rechnerimplementiertes Verfahren nach Anspruch 2 oder 3, wobei das Erzeugen des gemessenen DPV ein Anwenden einer Softmax-Funktion, in der Tiefendimension, auf eine Summe von Differenzen zwischen den Merkmalen für den Bezugsrahmen und einer verzerrten Version der Merkmale für jeden Quellrahmen des mindestens einen Quellrahmens umfasst.
  5. Rechnerimplementiertes Verfahren nach einem der vorhergehenden Ansprüche, wobei das Verfahren ferner umfasst: Verarbeiten eines zweiten Bezugsrahmens und mindestens eines Quellrahmens in der Folge von Eingabebilddaten innerhalb eines zweiten Fensters, das mit dem zweiten Bezugsrahmen verknüpft ist, unter Verwendung von Schichten des ersten neuronalen Netzwerks, um Merkmale für den zweiten Bezugsrahmen und den mindestens einen Quellrahmen innerhalb des zweiten Fensters zu extrahieren; Erzeugen eines gemessenen DPV für den zweiten Bezugsrahmen beruhend auf den Merkmalen für den zweiten Bezugsrahmen und verzerrten Versionen der Merkmale für den mindestens einen Quellrahmen innerhalb des zweiten Fensters; Erzeugen eines vorhergesagten DPV für den zweiten Bezugsrahmen durch Anwenden einer Verzerrfunktion auf das gemessene DPV für den ersten Bezugsrahmen; und Erzeugen eines aktualisierten DPV für den zweiten Bezugsrahmen beruhend auf dem vorhergesagten DPV und dem gemessenen DPV für den zweiten Bezugsrahmen.
  6. Rechnerimplementiertes Verfahren nach Anspruch 5, wobei das Erzeugen des aktualisierten DPV für den zweiten Bezugsrahmen umfasst: Multiplizieren des vorhergesagten DPV für den zweiten Bezugsrahmen mit einem Gewicht, um ein gewichtetes vorhergesagtes DPV zu erzeugen; und Kombinieren des gewichteten vorhergesagten DPV mit dem gemessenen DPV für den zweiten Bezugsrahmen.
  7. Rechnerimplementiertes Verfahren nach Anspruch 5, wobei das Erzeugen des aktualisierten DPV für den zweiten Bezugsrahmen umfasst: Verarbeiten einer Differenz zwischen dem vorhergesagten DPV und dem gemessenen DPV für den zweiten Bezugsrahmen unter Verwendung von Schichten eines zweiten neuronalen Netzwerks, um ein verbleibendes Verstärkungsvolumen zu erzeugen; und Summieren des verbleibenden Verstärkungsvolumens mit dem vorhergesagten DPV, um das aktualisierte DPV zu erzeugen.
  8. Rechnerimplementiertes Verfahren nach Anspruch 7, wobei das Verfahren ferner ein Verarbeiten des aktualisierten DPV für den zweiten Bezugsrahmen unter Verwendung von Schichten eines dritten neuronalen Netzwerks umfasst, um ein verfeinertes DPV für den zweiten Bezugsrahmen zu erzeugen, und wobei die Tiefenkarte und die Konfidenzkarte beruhend auf dem verfeinerten DPV berechnet werden.
  9. System, umfassend: einen Speicher, der eine Folge von Eingabebilddaten mit Bildrahmen speichert; und mindestens einen Prozessor, der kommunikativ mit dem Speicher gekoppelt und eingerichtet ist zum: Verarbeiten eines Bezugsrahmens und mindestens eines Quellrahmens, der in der Folge von Eingabebilddaten innerhalb eines mit dem Bezugsrahmen verknüpften Fensters enthalten ist, unter Verwendung von Schichten eines ersten neuronalen Netzwerks, um Merkmale für den Bezugsrahmen und den mindestens einen Quellrahmen innerhalb des Fensters zu extrahieren; Erzeugen eines gemessenen Tiefenwahrscheinlichkeitsvolumens (DPV) für den Bezugsrahmen beruhend auf verzerrten Versionen der Merkmale für den mindestens einen Quellrahmen und den Merkmalen für den Bezugsrahmen; und Erzeugen einer Tiefenkarte und einer Konfidenzkarte beruhend auf dem gemessenen DPV, wobei das gemessene DPV ein zweidimensionales (2D) Feld von Wahrscheinlichkeitswerten für jeden aus einer Vielzahl von Kandidaten-Tiefenwerten umfasst.
  10. System nach Anspruch 9, wobei der mindestens eine Prozessor ferner eingerichtet ist zum: Anwenden einer Verzerrfunktion auf die Merkmale für jeden Quellrahmen in dem mindestens einen Quellrahmen, um eine verzerrte Version der Merkmale für jeden Quellrahmen zu erzeugen.
  11. System nach Anspruch 10, ferner umfassend: einen Bildsensor, der dazu eingerichtet ist, die Folge von Eingabebilddaten zu erfassen, wobei die Verzerrfunktion, die auf die Merkmale für einen bestimmten Quellrahmen angewendet wird, auf relativen Kamerapositionsinformationen beruht, die sich auf eine Differenz zwischen einer ersten Position des mit dem Bezugsrahmen verknüpften Bildsensors und einer zweiten Position des mit dem bestimmten Quellrahmen verknüpften Bildsensors beziehen.
  12. System nach Anspruch 11, ferner umfassend: ein Positionserfassungs-Teilsystem, das dazu eingerichtet ist, die relative Kamerapositionsinformation zu erzeugen.
  13. System nach Anspruch 12, wobei das Positionserfassungs-Teilsystem eine Trägheitsmesseinheit (IMU) umfasst.
  14. System nach einem der Ansprüche 10 bis 13, wobei der mindestens eine Prozessor ferner dazu eingerichtet ist, in der Tiefendimension eine Softmax-Funktion auf eine Summe von Differenzen zwischen den Merkmalen für den Bezugsrahmen und der verzerrten Version der Merkmale für jeden Quellrahmen des mindestens einen Quellrahmens anzuwenden.
  15. System nach einem der Ansprüche 9 bis 14, wobei der mindestens eine Prozessor ferner eingerichtet ist zum: Verarbeiten eines zweiten Bezugsrahmens und mindestens eines Quellrahmens, der in der Folge von Eingabebilddaten innerhalb eines zweiten Fensters enthalten ist, das mit dem zweiten Bezugsrahmen verknüpft ist, unter Verwendung von Schichten des ersten neuronalen Netzwerks, um Merkmale für den zweiten Bezugsrahmen und den mindestens einen Quellrahmen innerhalb des zweiten Fensters zu extrahieren; Erzeugen eines gemessenen DPV für den zweiten Bezugsrahmen beruhend auf den Merkmalen für den zweiten Bezugsrahmen und verzerrten Versionen der Merkmale für den mindestens einen Quellrahmen innerhalb des zweiten Fensters; Erzeugen eines vorhergesagten DPV für den zweiten Bezugsrahmen durch Anwenden einer Verzerrfunktion auf das gemessene DPV für den ersten Bezugsrahmen; und Erzeugen eines aktualisierten DPV für den zweiten Bezugsrahmen beruhend auf dem vorhergesagten DPV und dem gemessenen DPV für den zweiten Bezugsrahmen.
  16. System nach Anspruch 15, wobei der mindestens eine Prozessor ferner eingerichtet ist zum: Multiplizieren des vorhergesagten DPV für den zweiten Bezugsrahmen mit einem Gewicht, um ein gewichtetes vorhergesagtes DPV zu erzeugen; und Kombinieren des gewichteten vorhergesagten DPV mit dem gemessenen DPV für den zweiten Bezugsrahmen.
  17. System nach Anspruch 15 oder 16, wobei der mindestens eine Prozessor ferner eingerichtet ist zum: Verarbeiten einer Differenz zwischen dem vorhergesagten DPV und dem gemessenen DPV für den zweiten Bezugsrahmen unter Verwendung von Schichten eines zweiten neuronalen Netzwerks, um ein verbleibendes Verstärkungsvolumen zu erzeugen; und Summieren des verbleibenden Verstärkungsvolumens mit dem vorhergesagten DPV, um das aktualisierte DPV zu erzeugen.
  18. System nach Anspruch 17, wobei der mindestens eine Prozessor ferner dazu eingerichtet ist, das aktualisierte DPV für den zweiten Bezugsrahmen unter Verwendung von Schichten eines dritten neuronalen Netzwerks zu verarbeiten, um ein verfeinertes DPV für den zweiten Bezugsrahmen zu erzeugen, und wobei die Tiefenkarte und die Konfidenzkarte beruhend auf dem verfeinerten DPV berechnet werden.
  19. Nichtflüchtiges, rechnerlesbares Medium, das Rechneranweisungen zum Schätzen von Tiefe speichert die, wenn sie von einem oder mehreren Prozessoren ausgeführt werden, bewirken, dass der eine oder die mehreren Prozessoren die Schritte eines Verfahrens ausführen, wie sie in jedem der Ansprüche 1 bis 8 genannt sind.
DE102019130889.5A 2018-11-16 2019-11-15 Schätzung der tiefe eines mit einer monokularen rgb-kamera aufgenommenen videodatenstroms Pending DE102019130889A1 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201862768591P 2018-11-16 2018-11-16
US62/768,591 2018-11-16
US16/439,539 US10984545B2 (en) 2018-11-16 2019-06-12 Estimating depth for a video stream captured with a monocular rgb camera
US16/439,539 2019-06-12

Publications (1)

Publication Number Publication Date
DE102019130889A1 true DE102019130889A1 (de) 2020-05-20

Family

ID=70470637

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102019130889.5A Pending DE102019130889A1 (de) 2018-11-16 2019-11-15 Schätzung der tiefe eines mit einer monokularen rgb-kamera aufgenommenen videodatenstroms

Country Status (2)

Country Link
US (1) US10984545B2 (de)
DE (1) DE102019130889A1 (de)

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20200137380A1 (en) * 2018-10-31 2020-04-30 Intel Corporation Multi-plane display image synthesis mechanism
US10839543B2 (en) * 2019-02-26 2020-11-17 Baidu Usa Llc Systems and methods for depth estimation using convolutional spatial propagation networks
CN110136082B (zh) * 2019-05-10 2021-06-01 腾讯科技(深圳)有限公司 遮挡剔除方法、装置及计算机设备
KR20200143960A (ko) * 2019-06-17 2020-12-28 현대자동차주식회사 영상을 이용한 객체 인식 장치 및 그 방법
US11138751B2 (en) * 2019-07-06 2021-10-05 Toyota Research Institute, Inc. Systems and methods for semi-supervised training using reprojected distance loss
US11527005B2 (en) * 2019-07-22 2022-12-13 Samsung Electronics Co., Ltd. Video depth estimation based on temporal attention
US11340624B2 (en) * 2019-08-29 2022-05-24 Ford Global Technologies, Llc Vehicle neural network
US11157774B2 (en) * 2019-11-14 2021-10-26 Zoox, Inc. Depth data model training with upsampling, losses, and loss balancing
US11783444B1 (en) * 2019-11-14 2023-10-10 Apple Inc. Warping an input image based on depth and offset information
EP3825195A1 (de) * 2019-11-25 2021-05-26 Zenuity AB Schätzung einer mindestüberholgeschwindigkeit eines fahrzeugs
US11995749B2 (en) * 2020-01-23 2024-05-28 Disney Enterprises, Inc. Rig-space neural rendering of digital assets
US11600017B2 (en) * 2020-04-29 2023-03-07 Naver Corporation Adversarial scene adaptation for camera pose regression
US11341719B2 (en) * 2020-05-07 2022-05-24 Toyota Research Institute, Inc. System and method for estimating depth uncertainty for self-supervised 3D reconstruction
US11551363B2 (en) * 2020-06-04 2023-01-10 Toyota Research Institute, Inc. Systems and methods for self-supervised residual flow estimation
US11379995B2 (en) * 2020-07-15 2022-07-05 Jingdong Digits Technology Holding Co., Ltd. System and method for 3D object detection and tracking with monocular surveillance cameras
US20220051372A1 (en) * 2020-08-12 2022-02-17 Niantic, Inc. Feature matching using features extracted from perspective corrected image
US11348278B2 (en) * 2020-09-10 2022-05-31 Ford Global Technologies, Llc Object detection
US11615544B2 (en) * 2020-09-15 2023-03-28 Toyota Research Institute, Inc. Systems and methods for end-to-end map building from a video sequence using neural camera models
US11494927B2 (en) 2020-09-15 2022-11-08 Toyota Research Institute, Inc. Systems and methods for self-supervised depth estimation
US20220103831A1 (en) * 2020-09-30 2022-03-31 Alibaba Group Holding Limited Intelligent computing resources allocation for feature network based on feature propagation
CN112446328B (zh) * 2020-11-27 2023-11-17 汇纳科技股份有限公司 单目深度的估计系统、方法、设备及计算机可读存储介质
US20220189049A1 (en) * 2020-12-12 2022-06-16 Niantic, Inc. Self-Supervised Multi-Frame Monocular Depth Estimation Model
US20220301211A1 (en) * 2021-03-16 2022-09-22 Huan Liu Methods, systems and computer medium for scene-adaptive future depth prediction in monocular videos
US20230169671A1 (en) * 2021-11-26 2023-06-01 Electronics And Telecommunications Research Institute Depth estimation method and apparatus using learning model
WO2023155043A1 (zh) * 2022-02-15 2023-08-24 中国科学院深圳先进技术研究院 一种基于历史信息的场景深度推理方法、装置及电子设备
US20230394762A1 (en) * 2022-06-01 2023-12-07 Rovi Guides, Inc. Systems and methods for neural-network based video encoding

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4644939B2 (ja) * 2001-01-17 2011-03-09 日本電気株式会社 動画像符号化装置および動画像符号化方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
J. Engel, u.a., „Direct Sparse Odometry", in IEEE Transactions on Pattern Analysis and Machine Intelligente (TPAMI), Band 40, Seiten 611-625 (2018)

Also Published As

Publication number Publication date
US20200160546A1 (en) 2020-05-21
US10984545B2 (en) 2021-04-20

Similar Documents

Publication Publication Date Title
DE102019130889A1 (de) Schätzung der tiefe eines mit einer monokularen rgb-kamera aufgenommenen videodatenstroms
US20230410375A1 (en) Temporally stable data reconstruction with an external recurrent neural network
DE102019102279A1 (de) Erzeugung von synthetischen Bildern zum Trainieren eines Neuronal-Netzwerkmodells
DE102018126670A1 (de) Fortschreitende Modifizierung von generativen adversativen neuronalen Netzen
DE102018108324A1 (de) System und Verfahren zur Schätzung eines optischen Flusses
DE102021119726A1 (de) Dreidimensionale objektrekonstruktion aus einem video
DE102018121282A1 (de) Differenzierbare rendering-pipeline für inverse graphik
DE102019103059A1 (de) Hieb- und stichfester Strahl-Dreieck-Schnittpunkt
DE102018132069A1 (de) Äquivariante Orientierungspunkt-Transformation für Orientierungspunkt-Lokalisierung
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
DE102019102009A1 (de) Reduzierung des rauschens während des renderings durch parallele path-space-filterung unter verwendung von hashing
DE102019128750A1 (de) Reduzierung des detailgrades eines polygonnetzes, um eine komplexität einer bildlich wiedergegebenen geometrie innerhalb einer szene zu verringern
DE102019130311A1 (de) Transponierte schwachbesetzte matrix multipliziert mit dichtbesetzter matrix für ein training neuronaler netzwerke
DE102021121109A1 (de) Wiederherstellung dreidimensionaler modelle aus zweidimensionalen bildern
DE102021105249A1 (de) Mikrotraining zur iterativen verfeinerung eines neuronalen netzes mit wenigen anpassungen
DE102018116552A1 (de) Sakkadische umleitung zur fortbewegung von virtueller realität
DE102019106996A1 (de) Darstellen eines neuronalen netzwerks unter verwendung von pfaden innerhalb des netzwerks zum verbessern der leistung des neuronalen netzwerks
DE102022100360A1 (de) Framework für maschinelles lernen angewandt bei einer halbüberwachten einstellung, um instanzenverfolgung in einer sequenz von bildframes durchzuführen
DE112019001978T5 (de) Verbesserung des realismus von szenen mit wasseroberflächen beim rendern
DE102021130031A1 (de) Erscheinungsbildgesteuerte automatische dreidimensionale modellierung
DE102018123761A1 (de) Sicherung gegen fehler in einem fehlerkorrekturcode (ecc), der in einem kraftfahrzeugsystem implementiert ist
DE102018114799A1 (de) Halbüberwachtes lernen zur orientierungspunktlokalisierung
DE102019121200A1 (de) Bewegungsadaptives rendern mittels shading mit variabler rate
DE102022113244A1 (de) Gemeinsame Form- und Erscheinungsbildoptimierung durch Topologieabtastung

Legal Events

Date Code Title Description
R012 Request for examination validly filed