DE102019108733A1 - Schnelle mehrskalige Punktwolkenregistrierung mit einer hierarchischen Gauß-Mischung - Google Patents

Schnelle mehrskalige Punktwolkenregistrierung mit einer hierarchischen Gauß-Mischung Download PDF

Info

Publication number
DE102019108733A1
DE102019108733A1 DE102019108733.3A DE102019108733A DE102019108733A1 DE 102019108733 A1 DE102019108733 A1 DE 102019108733A1 DE 102019108733 A DE102019108733 A DE 102019108733A DE 102019108733 A1 DE102019108733 A1 DE 102019108733A1
Authority
DE
Germany
Prior art keywords
point cloud
data structure
hierarchical tree
node
tree data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
DE102019108733.3A
Other languages
English (en)
Inventor
Benjamin David Eckart
Kihwan Kim
Jan Kautz
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nvidia Corp
Original Assignee
Nvidia Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US16/351,312 external-priority patent/US10826786B2/en
Application filed by Nvidia Corp filed Critical Nvidia Corp
Publication of DE102019108733A1 publication Critical patent/DE102019108733A1/de
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/40Tree coding, e.g. quadtree, octree
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T7/00Image analysis
    • G06T7/30Determination of transform parameters for the alignment of images, i.e. image registration
    • G06T7/33Determination of transform parameters for the alignment of images, i.e. image registration using feature-based methods
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/96Tree coding, e.g. quad-tree coding
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Theoretical Computer Science (AREA)
  • Signal Processing (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Image Generation (AREA)

Abstract

Die Registrierung von Punktwolken bildet den Kern vieler wichtiger und herausfordernder 3D Wahrnehmungsprobleme wie autonome Navigation, Objekt-/Szenenerkennung und Augmented Reality (AR). Es wird ein neuartiger Registrierungsalgorithmus vorgestellt, der Geschwindigkeit und Genauigkeit erzielt, indem eine Punktwolke auf eine Repräsentation einer Referenzpunktwolke registriert wird. Eine Zielpunktwolke wird auf die Referenzpunktwolke registriert, indem ein EM-Algorithmus über eine Anzahl von Zyklen iteriert wird, wobei während eines Erwartungsschritts jeder Punkt in der Zielpunktwolke mit einem Knoten einer hierarchischen Baumdatenstruktur assoziiert wird und während eines Maximierungsschritts eine geschätzte Transformation basierend auf der Assoziation der Punkte mit entsprechenden Knoten der hierarchischen Baumdatenstruktur bestimmt wird. Die geschätzte Transformation wird bestimmt, indem ein Minimierungsproblem gelöst wird, das mit einer Summe über eine Anzahl von Mischkomponenten über Terme im Zusammenhang mit einem Mahalanobis-Abstand assoziiert ist.

Description

  • TECHNISCHES GEBIET
  • Die vorliegende Offenbarung betrifft die Datenverarbeitung. Insbesondere betrifft die vorliegende Offenbarung dreidimensionale (3D) Registrierungsalgorithmen.
  • HINTERGRUND
  • Punktwolkenregistrierung bezieht sich auf eine Aufgabe zum Ausrichten von zwei oder mehr Punktwolken durch Schätzen relativer Transformationen zwischen den Punktwolken. Punktwolkenregistrierung bildet den Kern vieler wichtiger und herausfordernder 3D Wahrnehmungsprobleme wie autonome Navigation, Objekt-/Szenenerkennung und Augmented Reality (AR).
  • Herkömmliche Techniken zum Registrieren einer Punktwolke auf eine andere Punktwolke beinhalten einen Iterative Closest Point (ICP)-Algorithmus und Varianten, die auf einem iterativen Zuordnungsprozess basieren, bei dem eine Nähe zwischen Punkten mögliche Punktpaarsätze festlegt. Bei einem Satz von Punktpaaren kann eine starre Transformation, die die Summe der quadratischen Punktpaarabstände minimiert, effizient mit Gleichungen berechnet werden, die eine Lösung mit geschlossener Form aufweisen. Die herkömmlichen ICP-Algorithmen schneiden jedoch schlecht ab, wenn die gesammelten Punktwolkendaten verrauscht sind, eine ungleiche Punktdichte aufweisen, Okklusionen in der Szene aufweisen oder wenn große Verschiebungen dazu führen, dass ein großer Teil der Punkte ungültige Zuordnungen aufweist.
  • Neue Techniken haben versucht, die Mängel der herkömmlichen ICP-Algorithmen zu beheben, indem sie statistische Modelle zum Repräsentieren der Punktwolkendaten verwenden. Viele dieser neuer Techniken sind jedoch deutlich langsamer als die herkömmlichen ICP-Algorithmen und bieten in allen bis auf wenige Szenarien nur eine marginale Verbesserung. Infolgedessen werden die herkömmlichen ICP-Algorithmen immer noch überwiegend in realitätsnahen Anwendungen eingesetzt, bei denen Echtzeit-Ergebnisse erforderlich sind. Daher besteht die Notwendigkeit, diese Probleme und/oder andere Probleme im Zusammenhang mit dem Stand der Technik zu behandeln.
  • ZUSAMMENFASSUNG
  • Ein Verfahren, System und computerlesbare Medien werden offenbart, zum Anwenden eines Registrierungsalgorithmus auf Punktwolkendaten. Eine Referenzpunktwolke wird durch eine Hierarchie von Mischverteilungen repräsentiert, die in einer hierarchischen Baumdatenstruktur kodiert sind. Eine Zielpunktwolke wird auf die Referenzpunktwolke registriert, indem ein Erwartungsmaximierungsalgorithmus ausgeführt wird. Der EM-Algorithmus wiederholt sich über eine Anzahl von Zyklen, bei denen während eines Erwartungsschritts jeder Punkt in der Zielpunktwolke mit einem Knoten der hierarchischen Baumdatenstruktur assoziiert wird, und während eines Maximierungsschritts eine geschätzte Transformation basierend auf der Assoziation der Punkte zu entsprechenden Knoten der hierarchischen Baumdatenstruktur bestimmt wird. Die geschätzte Transformation wird durch Lösen eines Minimierungsproblems bestimmt, das mit einem Maximum-Likelihood-Schätzungs (MLE)-Kriterium assoziiert ist, die eine Summe, über eine Reihe von Mischkomponenten, über Terme, die sich auf einen Mahalanobis-Abstand beziehen, umfassen.
  • In einigen Ausführungsbeispielen beinhaltet ein Verfahren zum Implementieren eines Registrierungsalgorithmus die Schritte eines Erhaltens einer hierarchischen Baumdatenstruktur, die erste Punktwolkendaten repräsentiert, eines Empfangens zweiter Punktwolkendaten und eines Registrierens der zweiten Punktwolkendaten auf die ersten Punktwolkendaten unter Verwenden der hierarchischen Baumdatenstruktur, um eine geschätzte Transformation zu identifizieren. Jeder Knoten der hierarchischen Baumdatenstruktur enthält Parameter für eine Mischverteilung, die mindestens einen Teil der ersten Punktwolkendaten repräsentiert.
  • In einigen Ausführungsbeispielen umfasst der Registrierungsalgorithmus einen Erwartungsmaximierungsalgorithmus, der von mindestens einer parallelen Verarbeitungseinheit ausgeführt wird. Der Erwartungsmaximierungsalgorithmus beinhaltet: einen Erwartungsschritt, der konfiguriert ist, um eine rekursive Suche in der hierarchischen Baumdatenstruktur zu implementieren, um jeden Punkt in den zweiten Punktwolkendaten mit einem Knoten der hierarchischen Baumdatenstruktur zu assoziieren; und einen Maximierungsschritt, der konfiguriert ist, um die geschätzte Transformation basierend auf der Assoziation der Punkte in den zweiten Punktwolkendaten mit entsprechenden Knoten der hierarchischen Baumdatenstruktur zu bestimmen. Der Erwartungsmaximierungsalgorithmus umfasst ein iteratives Alternieren zwischen dem Erwartungsschritt und dem Maximierungsschritt über eine Anzahl von Zyklen, um auf eine optimale Transformation zu konvergieren.
  • In einigen Ausführungsbeispielen implementiert der Erwartungsschritt ein adaptives selektives Skalierungskriterium, bei dem die Verarbeitungseinheit an jedem Knoten während der rekursiven Suche in der hierarchischen Baumdatenstruktur einen heuristischen Wert für jede Mischkomponente, die in der Mischverteilung für den Knoten enthalten ist, mit einem adaptiven Schwellenwert vergleicht, um zu bestimmen, ob die rekursive Suche nach einem bestimmten Unterknoten des mit der Mischkomponente assoziierten Knotens beendet werden soll.
  • In einigen Ausführungsbeispielen umfasst der Erwartungsschritt für jedes Punktobjekt in den zweiten Punktwolkendaten ein Berechnen, für jede Mischkomponente, die mit dem mit dem Punktobjekt assoziierten Knoten assoziiert ist, eines Korrespondenzwertes für die Mischkomponente gemäß der folgenden Gleichung: E [ c i j ] = π j N ( Z i | Θ j ) k = 1 J π k N ( Z i | Θ k ) .
    Figure DE102019108733A1_0001
  • In einigen Ausführungsbeispielen basiert der heuristische Wert auf Eigenwerten, die mit der Kovarianzmatrix assoziiert sind, die für eine bestimmte Mischkomponente identifiziert wurde, die in der Mischverteilung des Knotens enthalten ist. In einem Ausführungsbeispiel ist der heuristische Wert ein Verhältnis, das den kleinsten Eigenwert für die Mischkomponente mit einer Summe der Eigenwerte für die Mischkomponente vergleicht.
  • In einigen Ausführungsbeispielen löst der Maximierungsschritt ein Minimierungsproblem für ein Maximum-Likelihood-Schätzungs (MLE)-Kriterium unter Verwenden einer gewichteten Least-Squares-Technik.
  • In einigen Ausführungsbeispielen umfasst der Maximierungsschritt für jede in der hierarchischen Baumdatenstruktur enthaltene Mischkomponente: Berechnen eines ersten Parameters für die Mischkomponente gemäß der folgenden Gleichung: π j * = i γ i j N ;
    Figure DE102019108733A1_0002
    und Berechnen eines zweiten Parameters für die Mischkomponente gemäß der folgenden Gleichung: μ j * = i γ i j z i i γ i j .
    Figure DE102019108733A1_0003
    In einigen Ausführungsbeispielen umfasst der Maximierungsschritt weiter ein Identifizieren einer Transformation durch Minimieren eines Maximum-Likelihood-Schätzungs (MLE)-Kriterium unter Verwenden einer gewichteten Least-Squares-Technik, wobei die MLE-Kriterien eine Summe über J Mischkomponenten umfassen, die in der hierarchischen Baumdatenstruktur enthalten sind, gemäß der folgenden Gleichung: T ^ = arg min T j = 1 J l = 1 3 π j * λ j l ( n j l T ( T ( μ j * ) μ j ) ) 2 .
    Figure DE102019108733A1_0004
  • In einigen Ausführungsbeispielen umfasst das Verfahren weiter die folgenden Schritte: Empfangen der ersten Punktwolkendaten und Generieren der hierarchischen Baumdatenstruktur. Die ersten Punktwolkendaten können von einem oder mehreren aktiven Sensoren erfasst oder alternativ aus einem Speicher gelesen werden. In einem Ausführungsbeispiel umfasst das Generieren der hierarchischen Baumdatenstruktur ein Iterieren durch einen zweiten Erwartungsmaximierungsalgorithmus, um die hierarchische Baumdatenstruktur zu generieren. Der zweite Erwartungsmaximierungsalgorithmus kann Clustering-Punkte basierend auf einem Clustering-Algorithmus umfassen und dann die Parameter für eine Verteilungsfunktion für jeden der Cluster berechnen.
  • In einigen Ausführungsbeispielen repräsentiert jeder Knoten der hierarchischen Baumdatenstruktur mindestens einen Teil der ersten Punktwolkendaten unter Verwenden einer Mischverteilung, die eine Anzahl von Gauß-Verteilungen und eine gleichmäßige Verteilung (engl. „uniform distribution“) umfasst. In weiteren Ausführungsbeispielen repräsentiert jeder Knoten der hierarchischen Baumdatenstruktur mindestens einen Teil der ersten Punktwolkendaten unter Verwenden einer Mischverteilung, die acht Gauß-Verteilungen umfasst. In einigen Ausführungsbeispielen ist die hierarchische Baumdatenstruktur als eine Baumstruktur mit mindestens zwei Granularitätsstufen implementiert, wobei jeder Knoten der Baumstruktur einen Verzweigungsfaktor von 8 aufweist.
  • In einigen Ausführungsbeispielen ist ein System zum Ausführen des Registrierungsalgorithmus offenbart. Das System beinhaltet einen Speicher und eine Verarbeitungseinheit. Der Speicher speichert die hierarchische Baumdatenstruktur und eine Datenstruktur, die die zweiten Punktwolkendaten kodiert. Die Verarbeitungseinheit ist konfiguriert, um mindestens einen Teil des Erwartungsmaximierungsalgorithmus auszuführen. In einigen Ausführungsbeispielen beinhaltet das System einen oder mehrere aktive Sensoren, die konfiguriert sind, um die zweiten Punktwolkendaten zu erfassen. Die aktiven Sensoren können auch konfiguriert sein, um eine erste Punktwolke zu erfassen, die analysiert werden kann, um die hierarchische Baumdatenstruktur zu generieren.
  • In einigen Ausführungsbeispielen beinhaltet die Verarbeitungseinheit mehrere Kerne, wobei jeder Kern konfiguriert ist, um mindestens einen Teil des Registrierungsalgorithmus parallel zu verarbeiten. In einigen Ausführungsbeispielen ist die Verarbeitungseinheit eine Parallelverarbeitungseinheit. In einigen Ausführungsbeispielen beinhaltet das System mindestens zwei Parallelverarbeitungseinheiten, die über eine Hochgeschwindigkeitsverbindung verbunden sind.
  • In einigen Ausführungsbeispielen ist ein nichtflüchtiges, computerlesbares Medium zum Speichern von Computeranweisungen offenbart, die beim Ausführen durch einen oder mehrere Prozessoren den einen oder die mehreren Prozessoren veranlassen, den Registrierungsalgorithmus auszuführen. Die nichtflüchtigen, computerlesbaren Medien können eine nichtflüchtige Speichervorrichtung umfassen.
  • Figurenliste
    • 1 illustriert ein Flussdiagramm eines Verfahrens zum Registrieren von Punktwolkendaten, gemäß einigen Ausführungsbeispielen.
    • 2 illustriert ein System zum Registrieren von Punktwolkendaten, gemäß einigen Ausführungsbeispielen.
    • 3 illustriert eine Parallelverarbeitungseinheit, gemäß einem Ausführungsbeispiel.
    • 4A illustriert einen allgemeinen Verarbeitungscluster innerhalb der Parallelverarbeitungseinheit von 3, gemäß einem Ausführungsbeispiel.
    • 4B illustriert eine Speicherpartitionseinheit der Parallelverarbeitungseinheit von 3, gemäß einem Ausführungsbeispiel.
    • 5A illustriert den Streaming-Multiprozessor von 4A, gemäß einem Ausführungsbeispiel.
    • 5B ist ein konzeptionelles Diagramm eines Verarbeitungssystems, das unter Verwenden der PPU von 3 implementiert wurde, gemäß einem Ausführungsbeispiel.
    • 5C illustriert ein exemplarisches System, in dem die jeweilige Architektur und/oder Funktionalität der verschiedenen vorherigen Ausführungsbeispiele implementiert werden kann.
    • 6A-6C illustrieren eine Technik zum Repräsentieren von Punktwolkendaten unter Verwenden von Mischverteilungen unterschiedlicher Granularität, gemäß einigen Ausführungsbeispielen.
    • 7 illustriert eine hierarchische Baumdatenstruktur, die ein Wahrscheinlichkeitsmodell einer Punktwolke kodiert, gemäß einigen Ausführungsbeispielen.
    • 8 illustriert eine rekursive Traversierung der hierarchischen Baumdatenstruktur unter Verwenden eines adaptiven Skalierungskriteriums, gemäß einigen Ausführungsbei spielen.
    • 9 illustriert die Berechnungen der Maximierungsschritte für eine einzelne Mischkomponente, gemäß einigen Ausführungsbeispielen.
    • 10 illustriert ein Flussdiagramm eines Verfahrens zum Registrieren von Punktwolkendaten unter Verwenden eines EM-Algorithmus, gemäß einigen Ausführungsbeispielen.
  • DETAILLIERTE BESCHREIBUNG
  • Ein komplexer Satz von Geometrien kann als Satz von planaren Oberflächen modelliert werden, wobei jede Oberfläche einen Oberflächennormalvektor aufweist. Punktwolkendaten, die mit dem Oberflächensatz assoziiert sind, können mit aktiven Sensoren wie Tiefenkameras, LiDAR oder anderen ähnlichen Technologien erfasst werden. Solche Sensoren können jedoch in ihrer Genauigkeit und/oder Auflösung eingeschränkt sein. So kann beispielsweise eine einzelne Konfiguration eines Punktwolkenerfassungsgeräts viele Punkte der Geometrie in der Nähe des Geräts erfassen, aber nur eine kleine Anzahl von Punkten für eine Geometrie, die weiter entfernt von dem Gerät liegt. Eine Technik zur kompakten Repräsentation der Punktwolkendaten verwendet Gauß-Mischmodelle (GMMs).
  • Die Punkte in der Punktwolke können geclustert sein und die Punktwolkendaten in jedem Cluster können durch einen Satz von Parametern repräsentiert werden, die die Eigenschaften des GMM definieren. So kann beispielsweise jeder Punktesatz in einem Cluster j durch einen Mittelwert (µj) und eine Kovarianzmatrix (Σj) in drei Dimensionen repräsentiert werden, wobei eine Wahrscheinlichkeitsdichtefunktion definiert wird, dass der Cluster j einen bestimmten Punkt zl generiert hat. Für die Aufteilung der Punktwolkendaten in mehrere Cluster können verschiedene Algorithmen verwendet werden.
  • Ein häufiges Problem bei der Verarbeitung von Punktwolken ist die Registrierung einer Zielpunktwolke auf eine Referenzpunktwolke. Mit anderen Worten, ein Registrierungsalgorithmus ist konfiguriert, um eine Transformation zu identifizieren, durch die die Daten in der Zielpunktwolke am ehesten mit denen in der Referenzpunktwolke übereinstimmen. Nachfolgend wird ein Registrierungsalgorithmus offenbart, der Punktwolkendaten in Bezug auf eine Hierarchie von Mischverteilungen analysiert, die zum Repräsentieren einer Referenzpunktwolke verwendet wird. In einigen Ausführungsbeispielen umfasst die Hierarchie der Mischverteilungen eine hierarchische Baumdatenstruktur der Mischverteilungen, wobei jeder Knoten in der hierarchischen Baumdatenstruktur Parameter für eine Mischverteilung mit mehreren Mischkomponenten kodiert. So kann beispielsweise jeder Knoten Parameter für eine beliebige Anzahl von Gauß-Verteilungsfunktionen und eine gleichmäßige Verteilungsfunktion (engl. „uniform distribution function“) kodieren, die eine konvexe Kombination von Wahrscheinlichkeitsdichtefunktionen repräsentieren. Jeder Knoten repräsentiert mindestens einen Teil der Referenzpunktwolke.
  • Der Registrierungsalgorithmus ist als Erwartungsmaximierungsalgorithmus implementiert, der eine Reihe von iterativen Zyklen ausführt, um eine optimale Transformation zu identifizieren, die die Zielpunktwolkendaten auf die Referenzpunktwolke registriert. Im Erwartungsschritt bestimmt der Registrierungsalgorithmus Assoziationen zwischen Punkten in der Zielpunktwolke und Knoten der hierarchischen Baumdatenstruktur. Die Assoziation für jeden Punkt wird durch eine rekursive Traversierung der hierarchischen Baumdatenstruktur bestimmt, um die maximale Wahrscheinlichkeit zu identifizieren, dass eine bestimmte Mischkomponente, die in einer Mischverteilung der hierarchischen Baumdatenstruktur enthalten ist, mit dem Punkt assoziiert ist. Der Registrierungsalgorithmus kann auch ein adaptives Auswahlskalierungskriterium implementieren, um die rekursive Traversierung basierend auf einem heuristischen Wert zu stoppen und so Zeit zu sparen, wenn feinere Granularitätsstufen nicht erforderlich sind, um einen bestimmten Punkt zu beschreiben. Die adaptiven Skalierungskriterien der Auswahl können den Registrierungsalgorithmus erheblich beschleunigen. Der Erwartungsschritt kann die Berechnung von Korrespondenzwerten beinhalten, die den Punkt mit jeder einzelnen oder mehreren Mischkomponenten in relativer Weise verbinden.
  • Im Maximierungsschritt berechnet der Registrierungsalgorithmus Parameter für ein optimiertes Maximum-Likelihood-Schätzungs-Kriterium, das eine Summe von Termen über die Mischkomponenten der hierarchischen Baumdatenstruktur ist, die sich auf einen Mahalanobis-Abstand zwischen den Punkten und einer entsprechenden Mischkomponente beziehen. Die Summe kann effizient berechnet werden, indem zunächst während des Erwartungsschritts für alle mit den einzelnen Mischkomponenten assoziierten Punkte die der jeweiligen Mischkomponente entsprechenden Parameter bestimmt werden. Die Transformation kann dann identifiziert werden, indem ein Minimierungsproblem für das Maximum-Likelihood-Schätzungs-Kriterium gelöst wird, indem die Transformation unter Verwenden einer gewichteten Least-Squares-Technik variiert wird.
  • Die Erwartungs- und Maximierungsschritte können über eine Reihe von iterativen Zyklen wiederholt werden, um die bestimmte Transformation zu verbessern, indem neue Assoziationen zwischen transformierten Punkten der Zielpunktwolke und den Knoten der hierarchischen Baumdatenstruktur gefunden werden.
  • 1 illustriert ein Flussdiagramm eines Verfahrens 100 zur Registrierung von Punktwolkendaten gemäß einigen Ausführungsbeispielen. Obwohl das 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. So kann beispielsweise das Verfahren 100 von einer GPU (Grafikprozessoreinheit), einer CPU (Zentraleinheit) oder einem beliebigen Prozessor ausgeführt werden, der mindestens einen Teil des EM-Algorithmus implementieren kann. Darüber hinaus werden Fachleute verstehen, dass jedes System, das die Methode 100 durchführt, im Umfang und im Sinne der Ausführungsbeispiele der vorliegenden Offenbarung liegt.
  • In Schritt 102 wird eine hierarchische Baumdatenstruktur erhalten, die erste Punktwolkendaten repräsentiert. In einigen Ausführungsbeispielen kodiert jeder Knoten der hierarchischen Baumdatenstruktur Parameter für eine Mischverteilung. Genauer gesagt, kodiert jeder Knoten Parameter für eine gewichtete Summe von Mischkomponenten, wobei jede Mischkomponente eine Verteilungsfunktion repräsentiert. In einem Ausführungsbeispiel ist jeder Knoten eine Kombination aus mehreren Gauß-Verteilungsfunktionen und einer gleichmäßigen Verteilungsfunktion. Jede Gauß-Verteilungsfunktion ist mit einem Gewicht π assoziiert und kann mit einem Mittelwert, µ, und einer Kovarianzmatrix, Σ, kodiert werden. In einem Ausführungsbeispiel ist jeder Knoten eine Mischung aus acht Gauß-Verteilungsfunktionen und einer gleichmäßigen Verteilungsfunktion und kann als Gauß‘sches + Gleichmäßiges Mischmodell bezeichnet werden. Die Einbeziehung der gleichmäßigen Verteilung erhöht die Robustheit der Repräsentation durch assoziieren von Probenausreißern zur gleichmäßigen Verteilung, wenn die Wahrscheinlichkeit, dass die Probe mit einer der Gauß-Verteilungsfunktionen assoziiert ist, sehr gering ist. In einem weiteren Ausführungsbeispiel ist jeder Knoten eine Mischung aus acht Gauß-Verteilungsfunktionen ohne die gleichmäßige Verteilung und kann als Gauß-Mischmodell bezeichnet werden. In noch weiteren Ausführungsbeispielen ist jeder Knoten eine Mischung aus einer unterschiedlichen Anzahl von Verteilungsfunktionen (z.B. 2, 4, 16, etc.).
  • In einigen Ausführungsbeispielen hat jeder Knoten der hierarchischen Baumdatenstruktur eine Anzahl von Unterknoten. Die Anzahl der Unterknoten ist mindestens zwei. Jeder Unterknoten der hierarchischen Baumdatenstruktur erhöht die Granularität einer bestimmten Mischkomponente des übergeordneten Knotens, indem er diese Mischkomponente als separate Mischverteilung repräsentiert. In einigen Ausführungsbeispielen ist die Anzahl der Unterknoten acht, was als Baum mit einem Verzweigungsfaktor von acht bezeichnet werden kann. Während herkömmliche Octrees verwendet werden, um einen 3D-Raum in acht Octants zu partitionieren, überlappen sich die Unterknoten in einem hierarchischen Baum von Mischverteilungen mit einem Verzweigungsfaktor von acht im 3D-Raum, da jeder Unterknoten eine Mischverteilung repräsentiert, die kontinuierlich und überlappend im 3D-Raum ist.
  • In Schritt 104 werden zweite Punktwolkendaten empfangen. In einigen Ausführungsbeispielen sind die zweiten Punktwolkendaten als ein Array von Vektoren kodiert, wobei jeder Vektor eine Anzahl von Komponenten beinhaltet, die einen Punkt im Raum über die Dimensionen eines Koordinatensystems für den Raum repräsentieren. Im typischen Fall ist der Raum ein 3D-Raum, der durch kartesischen Koordinaten repräsentiert wird, einschließlich einer x-Koordinate, einer y-Koordinate und einer z-Koordinate. Die Punkte können jedoch durch ein anderes Koordinatensystem wie Radialkoordinaten, Kugelkoordinaten oder dergleichen repräsentiert werden.
  • In einigen Ausführungsbeispielen werden die zweiten Punktwolkendaten von einem Sensor erfasst und in einem Speicher gespeichert. Die Punktwolkendaten können mit aktiven Sensoren wie Tiefenkameras, LiDAR oder ähnlichen Technologien erfasst werden. In anderen Ausführungsbeispielen können die Punktwolkendaten aus einem Modell mit komplexer Geometrie entnommen werden. Mit anderen Worten, die Punktwolkendaten können durch computergenerierte Techniken wie Ray-Tracing generiert werden, bei denen die Punktwolke aus einem virtuellen Modell einer Reihe von Objekten mit Oberflächen oder Volumen generiert wird.
  • In Schritt 106 werden die zweiten Punktwolkendaten auf die ersten Punktwolkendaten registriert, wobei die hierarchische Baumdatenstruktur verwendet wird, um eine geschätzte Transformation zu identifizieren. In einigen Ausführungsbeispielen ist die geschätzte Transformation eine starre Transformation mit sechs Freiheitsgraden (Translation in drei Dimensionen plus Rotation um drei Achsen). Die geschätzte Transformation ist eine Maximum-Likelihood-Schätzung für die Transformation, die die zweiten Punktwolkendaten auf die ersten Punktwolkendaten registriert.
  • In einigen Ausführungsbeispielen wird die geschätzte Transformation unter Verwenden eines Erwartungsmaximierungs-(EM)-Algorithmus identifiziert, der iterativ zwischen einem Erwartungsschritt (Schritt E) und einem Maximierungsschritt (Schritt M) alterniert, um damit über eine Reihe von Zyklen zu einer optimalen Transformation zu konvergieren.
  • Der Schritt E ist konfiguriert, um eine rekursive Suche in der hierarchischen Baumdatenstruktur zu implementieren, um jeden Punkt in den zweiten Punktwolkendaten mit einem Knoten der hierarchischen Baumdatenstruktur zu assoziieren. Mit anderen Worten, der hierarchische Baum der Mischverteilungen wird traversiert, um eine bestimmte Mischverteilung zu finden, die höchstwahrscheinlich mit jedem Punkt in den zweiten Punktwolkendaten assoziiert ist. Die Traversierung beinhaltet ein Berechnen einer Wahrscheinlichkeit für den Punkt für jede Mischkomponente der Mischverteilung für den Knoten und ein Traversieren zu dem mit der Mischkomponente assoziierten Unterknoten entsprechend dem maximalen Wahrscheinlichkeitswert. Der Verfahrensschritt wird für den ausgewählten Unterknoten wiederholt (d.h. in einer rekursiven Prozedur), bis entweder die Traversierung einen Unterknoten erreicht, der ein Blattknoten ist (d.h. keine Unterknoten hat) oder wenn ein anpassungsfähiger Schwellenwert anzeigt, dass die Rekursion beendet werden kann. Der adaptive Schwellenwert kann ein Maß für die Komplexität der Verteilungsfunktion für eine bestimmte Mischkomponente sein.
  • Der Schritt M ist konfiguriert, um die geschätzte Transformation basierend auf der Assoziation von Punkten in der zweiten Punktwolken-Datenstruktur mit den entsprechenden Knoten der hierarchischen Baumdatenstruktur zu bestimmen. In einigen Ausführungsbeispielen bestimmt der Schritt M eine bestimmte Transformation, T, die eine gewichtete Summe aus den Kriterien einer Maximum-Likelihood-Schätzung (MLE) für die Punkte in der zweiten Punktwolke minimiert. In einigen Ausführungsbeispielen basieren die MLE-Kriterien auf dem Mahalanobis-Abstand zwischen dem transformierten Punkt und jeder der Mischkomponenten in der Mischverteilung für den mit dem Punkt assoziierten Knoten.
  • Der EM-Algorithmus wird über eine Reihe von Zyklen wiederholt. Die aus dem vorherigen Schritt M geschätzte Transformation wird verwendet, um das MLE-Kriterium für die transformierten Punkte im nachfolgenden Schritt M zu berechnen. Die Anzahl der Iterationen oder Zyklen des EM-Algorithmus kann vorausbestimmt sein oder die Iteration kann dynamisch basierend auf einem Konvergenzkriterium beendet werden.
  • Es werden nun weitere veranschaulichende Informationen zu verschiedenen optionalen Architekturen und Merkmalen gegeben, mit denen das vorgenannte Framework gemäß den Anforderungen eines Benutzers implementiert werden kann. Es sei ausdrücklich darauf hingewiesen, dass die folgenden Informationen zur Veranschaulichung dienen und nicht als einschränkend ausgelegt werden sollten. Jedes der folgenden Merkmale kann wahlweise mit oder ohne Ausschluss anderer beschriebener Merkmale verwendet werden.
  • 2 illustriert ein System 200 zur Registrierung von Punktwolkendaten gemäß einigen Ausführungsbeispielen. Das System 200 beinhaltet eine Verarbeitungseinheit 202, die mit einem Speicher 204 gekoppelt ist. Die Verarbeitungseinheit 202 beinhaltet einen oder mehrere Kerne 250, die konfiguriert sind, um im Speicher 204 gespeicherte Anweisungen auszuführen. In einigen Ausführungsbeispielen weist die Verarbeitungseinheit 202 mehrere Kerne auf, so dass Anweisungen parallel ausgeführt werden können, wobei jeder Kern einen separaten Zustand aufweist, einschließlich beispielsweise Programmzähler, Register, Merker usw.
  • Der Speicher 204 kann flüchtiger Speicher sein, wie beispielsweise ein dynamischer Direktzugriffsspeicher (DRAM). Der Speicher 204 speichert Anweisungen und Daten und ist über eine Speicherschnittstelle mit dem Prozessor gekoppelt. Im Betrieb kann der Speicher 204 die hierarchische Baumdatenstruktur 212 und Punktwolkendaten 214 speichern. In einigen Ausführungsbeispielen ist der Speicher 204 mit einem Bus oder einer Schnittstelle gekoppelt, die mit nichtflüchtigen Speichern wie Festplatten (HDDs), Solid State Drives (SSDs), Flash-Speicher oder dergleichen verbunden ist. Speicherseiten können dann auf dem nichtflüchtigen Speicher gespeichert und bei Bedarf in den Speicher 204 geladen werden, so dass ein virtuelles Speichersystem mit einem größeren adressierbaren Speicherbereich in einer kleineren physikalischen flüchtigen Speichervorrichtung implementiert werden kann.
  • In einigen Ausführungsbeispielen kann das System 200 auch einen optionalen Sensor 206 beinhalten. Der Sensor 206 kann konfiguriert sein, um Punktwolkendaten 214 zu erfassen und die Punktwolkendaten 214 im Speicher 204 zu speichern. Die Verarbeitungseinheit 202 kann dann auf die Punktwolkendaten 214 und die hierarchische Baumdatenstruktur 212 im Speicher 204 zugreifen, um eine Registrierungsaufgabe für die Punktwolkendaten 214 durchzuführen. Die Registrierungsaufgabe kann in der Verarbeitungseinheit 202 durch Ausführen eines Anweisungssatzes implementiert werden, der konfiguriert ist, um die Punktwolkendaten 214 gemäß einem Algorithmus zu verarbeiten.
  • In einigen Ausführungsbeispielen implementiert die Verarbeitungseinheit 202 den EM-Algorithmus, um die Punktwolkendaten 214 zu verarbeiten und die Punktwolkendaten 214 auf die durch die hierarchische Baumdatenstruktur 212 repräsentierte Punktwolke zu registrieren. Es ist zu beachten, dass die Anzahl der Punkte in den Punktwolkendaten ziemlich groß sein kann, bis zu Millionen von einzelnen Punkten, und dass der EM-Algorithmus unter Verwenden von Datenparallelität schneller ausgeführt werden kann. Genauer gesagt, kann die Verarbeitungseinheit 202 mehrere Kerne 250 beinhalten, wobei jeder Kern verschiedene Daten aus den Punktwolkendaten 214 oder verschiedene Teile des EM-Algorithmus parallel verarbeitet. In exemplarischen Ausführungsbeispielen kann jeder Kern 250 auch einen Vektorprozessor oder eine SIMD-Engine (Single-Instruction, Multiple Data) umfassen, um mehrere Daten (z.B. mehrere Punkte) parallel zu verarbeiten. Eine weiterführende Beschreibung einer exemplarischen Parallelverarbeitungseinheit 202 wird im Folgenden gegeben.
  • Parallelverarbeitungsarchitektur
  • 3 illustriert eine Parallelverarbeitungseinheit (PPU) 300 gemäß einigen Ausführungsbeispielen. Die PPU 300 ist ein Multithread-Prozessor, der in einem oder mehreren Geräten mit integrierten Schaltkreisen implementiert ist. Die PPU 300 ist eine latenzverbergende Architektur, die entwickelt wurde, um viele Threads parallel zu verarbeiten. Ein Thread (z.B. ein Thread einer Ausführung) ist eine Instanziierung einer Reihe von Anweisungen, die für die Ausführung durch die PPU 300 konfiguriert sind. In einem Ausführungsbeispiel ist die PPU 300 eine Grafikverarbeitungseinheit (GPU), die konfiguriert ist, um eine Grafik-Rendering-Pipeline zum Verarbeiten von dreidimensionalen (3D) Bilddaten zu implementieren, um zweidimensionale (2D) Bilddaten zur Anzeige auf einer Anzeigevorrichtung, wie beispielsweise einer Flüssigkristallanzeigevorrichtung (LCD), zu generieren. In anderen Ausführungsbeispielen kann die PPU 300 zur Durchführung von allgemeinen Berechnungen verwendet werden. Obwohl hierin ein exemplarischer Parallelprozessor zu veranschaulichenden Zwecken vorgesehen ist, ist dringend darauf hinzuweisen, dass dieser Prozessor nur zu veranschaulichenden Zwecken vorgesehen ist und dass jeder Prozessor als Ergänzung und/oder Ersatz für diesen eingesetzt werden kann.
  • Eine oder mehrere PPUs 300 können konfiguriert sein, um Tausende High Performance Computing (HPC), Rechenzentren und Machine Learning Anwendungen zu beschleunigen. Die PPU 300 kann konfiguriert sein, um zahlreiche Systeme und Anwendungen für Deep Learning zu beschleunigen, darunter: autonome Fahrzeugplattformen; Deep Learning; hochpräzise Sprach-, Bild- und Texterkennungssysteme; intelligente Videoanalytik; molekulare Simulationen; Medikamentenentwicklung; Krankheitsdiagnose; Wettervorhersage; Big Data Analytik; Astronomie; Molekulardynamiksimulation; Finanzmodellierung; Robotik; Fabrikautomatisierung; Echtzeit-Sprachübersetzung; Online-Suchoptimierung; personalisierte Benutzerempfehlungen; und dergleichen.
  • Wie in 3 dargestellt, beinhaltet die PPU 300 eine Eingabe/Ausgabe (E/A)-Einheit 305, eine Frontend-Einheit 315, eine Schedulereinheit 320, eine Arbeitsverteilungseinheit 325, ein Hub 330, eine Crossbar (Xbar) 370, einen oder mehrere General Processing Cluster (GPCs) 350 und eine oder mehrere Speicher-Partitionseinheiten 380. Die PPU 300 kann über eine oder mehrere Hochgeschwindigkeits-NVLink 310-Verbindungen mit einem Host-Prozessor oder anderen PPUs 300 verbunden werden. Die PPU 300 kann auch über eine Verbindung 302 mit einem Host-Prozessor 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 einem Ausführungsbeispiel kann der lokale Speicher eine Vielzahl von DRAM-Vorrichtungen (Dynamic Random Access Memory) umfassen. Die DRAM-Vorrichtungen können als HBM-Subsystem (High-Bandwidth Memory) konfiguriert sein, wobei mehrere DRAM-Chips in jedem Gerät zusammengeschlossen 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 die Cache-Kohärenz zwischen den PPUs 300 und CPUs und das CPU-Mastering. Daten und/oder Befehle können vom NVLink 310 über den Hub 330 zu/von anderen Einheiten (nicht explizit angegeben) der PPU 300 übertragen werden, wie beispielsweise einer oder mehreren Copy-Engines, einem Video-Encoder, einem Video-Decoder, einer Power-Management-Einheit, etc. Der NVLink 310 wird in Verbindung mit 5B näher beschrieben.
  • Die E/A-Einheit 305 ist konfiguriert, um Kommunikation (z.B. Befehle, Daten usw.) von einem Host-Prozessor (nicht dargestellt) über die Verbindung 302 zu senden und zu empfangen. Die E/A-Einheit 305 kann mit dem Host-Prozessor direkt über die Verbindung 302 oder über eine oder mehrere Zwischenvorrichtungen, wie beispielsweise eine Speicherbrücke, kommunizieren. In einem Ausführungsbeispiel kann die E/A-Einheit 305 mit einem oder mehreren anderen Prozessoren kommunizieren, wie beispielsweise einer oder mehreren der PPUs 300 über die Verbindung 302. In einem Ausführungsbeispiel implementiert die E/A-Einheit 305 eine Peripheral Component Interconnect Express (PCIe)-Schnittstelle für die Kommunikation über einen PCIe-Bus und die Verbindung 302 ist ein PCIe-Bus. In alternativen Ausführungsbeispielen kann die E/A-Einheit 305 andere Arten von bekannten Schnittstellen zur Kommunikation mit externen Geräten implementieren.
  • Die E/A-Einheit 305 dekodiert Pakete, die über die Verbindung 302 empfangen werden. In einem Ausführungsbeispiel stellen die Pakete Befehle dar, die konfiguriert sind, um die PPU 300 zu veranlassen, verschiedene Operationen durchzuführen. Die E/A-Einheit 305 überträgt die dekodierten Befehle an verschiedene andere Einheiten der PPU 300, wie in den Befehlen angegeben. So können beispielsweise einige Befehle an die Frontend-Einheit 315 übertragen werden. Andere Befehle können an den Hub 330 oder andere Einheiten (nicht explizit angegeben) der PPU 300 übertragen werden, wie z.B. eine oder mehrere Copy-Engines, ein Video-Encoder, ein Video-Decoder, eine Power-Management-Einheit, etc. Mit anderen Worten, die E/A-Einheit 305 ist konfiguriert, um die Kommunikation zwischen den verschiedenen logischen Einheiten der PPU 300 und zwischen ihnen zu leiten.
  • In einem Ausführungsbeispiel kodiert ein vom Host-Prozessor ausgeführtes Programm einen Befehlsstrom in einem Puffer, der der PPU 300 Arbeitslasten zur Verarbeitung bereitstellt. Ein Workload kann mehrere Anweisungen und Daten umfassen, die durch diese Anweisungen verarbeitet werden sollen. Der Puffer ist ein Bereich in einem Speicher, der sowohl vom Host-Prozessor als auch von der PPU 300 zugänglich ist (z.B. Lesen/Schreiben). So kann beispielsweise die E/A-Einheit 305 konfiguriert sein, um durch über die Verbindung 302 übertragene Speicheranforderungen auf den Puffer in einem mit der Verbindung 302 verbundenen Systemspeicher zuzugreifen. In einem Ausführungsbeispiel schreibt der Host-Prozessor 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 (engl. „streams“). Die Frontend-Einheit 315 verwaltet den einen oder die mehreren Streams, liest Befehle aus den Streams und leitet Befehle an die verschiedenen Einheiten der PPU 300 weiter.
  • Die Front-End-Einheit 315 ist mit einer Schedulereinheit 320 gekoppelt, die die verschiedenen GPCs 350 konfiguriert, um Aufgaben zu verarbeiten, die durch einen oder mehrere Streams definiert sind. Die Schedulereinheit 320 ist konfiguriert, um Zustandsinformationen in Bezug auf die verschiedenen Aufgaben zu verfolgen, die von der Schedulereinheit 320 verwaltet werden. Der Zustand kann anzeigen, welchem GPC 350 eine Aufgabe zugewiesen ist, ob die Aufgabe aktiv oder inaktiv ist, eine mit der Aufgabe assoziierte Prioritätsstufe und so weiter. Die Schedulereinheit 320 verwaltet die Ausführung einer Vielzahl von Aufgaben auf einem oder mehreren GPCs 350.
  • Die Schedulereinheit 320 ist mit einer Arbeitsverteilungseinheit 325 gekoppelt, die konfiguriert ist, um Aufgaben zur Ausführung auf den GPCs 350 zu verteilen. Die Arbeitsverteilungseinheit 325 kann eine Anzahl von geplanten Aufgaben nachverfolgen, die von der Schedulereinheit 320 empfangen wurden. In einem Ausführungsbeispiel verwaltet die Arbeitsverteilungseinheit 325 für jeden der GPCs 350 einen ausstehenden Aufgabenpool und einen aktiven Aufgabenpool. Der ausstehende Aufgabenpool kann eine Anzahl von Slots (z.B. 32 Slots) umfassen, die Aufgaben enthalten, die von einem bestimmten GPC 350 bearbeitet werden sollen. Der aktive Aufgabenpool kann eine Anzahl von Slots (z.B. 4 Slots) 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 aktiven Aufgabenpool für den GPC 350 entfernt und eine der anderen Aufgaben aus dem ausstehenden Aufgabenpool ausgewählt und für die Ausführung auf dem GPC 350 geplant. Wenn eine aktive Aufgabe auf dem GPC 350 im Leerlauf war, z. B. während des Wartens auf die Lösung einer Datenabhängigkeit, kann die aktive Aufgabe aus dem GPC 350 entfernt und in den ausstehenden Aufgabenpool zurückgeführt werden, während eine andere Aufgabe im ausstehenden Aufgabenpool ausgewählt und zur Ausführung auf dem GPC 350 eingeplant wird.
  • Die Arbeitsverteilungseinheit 325 kommuniziert über die XBar 370 mit einem oder mehreren GPCs 350. Die XBar 370 ist ein Verbindungsnetzwerk, das viele der Einheiten der PPU 300 mit anderen Einheiten der PPU 300 koppelt. So kann die XBar 370 beispielsweise konfiguriert sein, um 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 Hub 330 mit der XBar 370 verbunden sein.
  • Die Aufgaben werden von der Schedulereinheit 320 verwaltet und von der Arbeitsverteilungseinheit 325 an einen GPC 350 geschickt. Der GPC 350 ist konfiguriert, um die Aufgabe zu bearbeiten und Ergebnisse zu generieren. Die Ergebnisse können von anderen Aufgaben innerhalb des GPC 350 übernommen, über die XBar 370 an einen anderen GPC 350 weitergeleitet oder im Speicher 304 gespeichert werden. Die Ergebnisse können über die Speicherpartitionseinheiten 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 einem Ausführungsbeispiel beinhaltet die PPU 300 eine Anzahl U von Speicherpartitionseinheiten 380, die gleich der Anzahl der separaten und unterschiedlichen Speichervorrichtungen 304 ist, die mit der PPU 300 gekoppelt sind. Eine Speicherpartitionseinheit 380 wird im Folgenden in Verbindung mit 4B näher beschrieben.
  • In einem Ausführungsbeispiel führt ein Host-Prozessor einen Treiber-Kernel aus, der eine Anwendungsprogrammierschnittstelle (API) implementiert, die es einer oder mehreren auf dem Host-Prozessor ausgeführten Anwendungen ermöglicht, Operationen zur Ausführung auf der PPU 300 zu planen. In einem Ausführungsbeispiel werden mehrere Rechenanwendungen gleichzeitig von der PPU 300 ausgeführt, und die PPU 300 bietet Isolation, Quality of Service (QoS) und unabhängige Adressräume für die mehreren Rechenanwendungen. Eine Anwendung kann Anweisungen (z.B. API-Aufrufe) generieren, die den Treiber-Kernel veranlassen, einen oder mehrere Tasks zur Ausführung durch die PPU 300 zu generieren. Der Treiber-Kernel gibt Aufgaben an einen oder mehrere Streams aus, die von der PPU 300 verarbeitet werden. Jede Aufgabe kann eine oder mehrere Gruppen von verwandten Threads umfassen, die hierin als Warp bezeichnet werden. In einem Ausführungsbeispiel umfasst ein Warp 32 verwandte Threads, die parallel ausgeführt werden können. Kooperierende Threads können sich auf eine Vielzahl von Threads beziehen, einschließlich Anweisungen zur Ausführung der Aufgabe, die Daten über einen gemeinsamen Speicher austauschen können. Threads und kooperierende Threads werden in Verbindung mit 5A näher beschrieben.
  • 4A illustriert eine GPC 350 der PPU 300 aus 3 gemäß einem Ausführungsbeispiel. Wie in 4A dargestellt, beinhaltet jeder GPC 350 eine Reihe von Hardwareeinheiten für Verarbeitungsaufgaben. In einem Ausführungsbeispiel beinhaltet jeder GPC 350 einen Pipeline-Manager 410, eine Pre-Raster Operations Unit (PROP) 415, eine Raster-Engine 425, eine Work Distribution Crossbar (WDX) 480, eine Memory Management Unit (MMU) 490 und einen oder mehrere Data Processing Cluster (DPCs) 420. Es ist zu beachten, dass der GPC 350 von 4A anstelle oder zusätzlich zu den in 4A dargestellten Einheiten weitere Hardwareeinheiten beinhalten kann.
  • In einem Ausführungsbeispiel wird der Betrieb des GPC 350 durch den Pipelinemanager 410 gesteuert. Der Pipelinemanager 410 verwaltet die Konfiguration eines oder mehrerer DPCs 420 für die Bearbeitung von Aufgaben, die dem GPC 350 zugewiesen sind. In einem Ausführungsbeispiel kann der Pipelinemanager 410 mindestens einen der einen oder mehreren DPCs 420 konfigurieren, um mindestens einen Teil einer Grafik-Rendering-Pipeline zu implementieren. So kann beispielsweise ein DPC 420 konfiguriert sein, um ein Vertex-Shader-Programm auf dem programmierbaren Streaming-Multiprozessor (SM) 440 auszuführen. Der Pipelinemanager 410 kann auch konfiguriert sein, um von der Arbeitsverteilungseinheit 325 empfangene Pakete an die entsprechenden logischen Einheiten innerhalb des GPC 350 weiterzuleiten. So können beispielsweise einige Pakete an Hardwareeinheiten mit fester Funktion im PROP 415 und/oder in der Raster-Engine 425 weitergeleitet werden, während andere Pakete an die DPCs 420 zur Verarbeitung durch die Primitiv-Engine 435 oder den SM 440 weitergeleitet werden können. In einem Ausführungsbeispiel kann der Pipelinemanager 410 mindestens einen der einen oder mehreren DPCs 420 konfigurieren, um ein neuronales Netzwerkmodell und/oder eine Rechenpipeline zu implementieren.
  • Die PROP-Einheit 415 ist konfiguriert, um die von der Raster-Engine 425 und den DPCs 420 generierten Daten an eine Raster Operations (ROP)-Einheit weiterzuleiten, die in Verbindung mit 4B näher beschrieben wird. Die PROP-Einheit 415 kann auch konfiguriert sein, um Optimierungen für die Farbmischung durchzuführen, Pixeldaten zu organisieren, Adressenübersetzungen durchzuführen und dergleichen.
  • Die Raster-Engine 425 beinhaltet eine Reihe von Hardware-Einheiten mit fester Funktion, die konfiguriert sind, um verschiedene Rasteroperationen durchzuführen. In einem Ausführungsbeispiel beinhaltet die Rastermaschine 425 eine Setup-Engine, eine Grob-Raster-Engine, eine Culling-Engine, eine Clipping-Engine, eine Fein-Raster-Engine und eine Tile-Coalescing-Engine. Die Setup-Engine empfängt transformierte Knoten und generiert Ebenengleichungen, die mit dem durch die Knoten definierten geometrischen Primitiv assoziiert sind. Die Ebenengleichungen werden an die Grob-Raster-Engine übertragen, um Abdeckungsinformationen (z.B. eine x,y-Abdeckungsmaske für eine Kachel (engl. „tile“)) für das Primitive zu generieren. Die Ausgabe der Grob-Raster-Engine wird an die Culling-Engine übertragen, wo Fragmente, die mit dem Primitiv assoziiert sind und einen z-Test nicht bestehen, aussortiert werden, und an eine Clipping-Engine übertragen, wo Fragmente, die außerhalb eines Sichtfeldes liegen, abgeschnitten werden. Die Fragmente, die das Clipping und Culling überleben, können an die Fein-Raster-Engine übergeben werden, um Attribute für die Pixelfragmente basierend auf den von der Setup-Engine generierten Ebenengleichungen zu generieren. Die Ausgabe der Raster-Engine 425 umfasst Fragmente, die beispielsweise von einem in einem DPC 420 implementierten Fragment-Shader verarbeitet werden sollen.
  • Jeder im GPC 350 enthaltene DPC 420 beinhaltet einen M-Pipe Controller (MPC) 430, eine Primitiv-Engine 435 und einen oder mehrere SMs 440. Der MPC 430 steuert den Betrieb des DPC 420 und leitet die vom Pipelinemanager 410 empfangenen Pakete an die entsprechenden Einheiten des DPC 420 weiter. So können beispielsweise Pakete, die mit einem Vertex assoziiert sind, an die Primitiv-Engine 435 weitergeleitet werden, die konfiguriert ist, um die mit dem Vertex assoziierten Vertexattribute aus dem Speicher 304 zu holen. Im Gegensatz dazu können Pakete, die mit einem Shader-Programm assoziiert sind, an den SM 440 übertragen werden.
  • Der SM 440 umfasst einen programmierbaren Streaming-Prozessor, der konfiguriert ist, um Aufgaben zu verarbeiten, die durch eine Reihe von Threads repräsentiert werden. Jeder SM 440 ist multi-threaded und konfiguriert, um eine Vielzahl von Threads (z.B. 32 Threads) aus einer bestimmten Gruppe von Threads gleichzeitig auszuführen. In einem Ausführungsbeispiel implementiert der SM 440 eine SIMD-Architektur (Single-Instruction, Multiple-Data), bei der jeder Thread in einer Gruppe von Threads (z.B. einem Warp) konfiguriert ist, um einen unterschiedlichen Datensatz basierend auf dem gleichen Anweisungssatz zu verarbeiten. Alle Threads in der Gruppe der Threads führen die gleichen Anweisungen aus. In einem weiteren Ausführungsbeispiel implementiert der SM 440 eine SIMT-Architektur (Single-Instruction, Multiple Thread), bei der jeder Thread in einer Gruppe von Threads konfiguriert ist, um basierend auf dem gleichen Anweisungssatz einen unterschiedlichen Datensatz zu verarbeiten, wobei jedoch einzelne Threads in der Gruppe von Threads während der Ausführung divergieren dürfen. In einem Ausführungsbeispiel wird für jeden Warp ein Programmzähler, ein Aufrufstapel und ein Ausführungszustand beibehalten, was eine Gleichzeitigkeit zwischen Warps und eine serielle Ausführung innerhalb von Warps ermöglicht, wenn Threads innerhalb des Warps divergieren. In einem weiteren Ausführungsbeispiel wird für jeden einzelnen Thread ein Programmzähler, ein Aufrufstapel und ein Ausführungszustand beibehalten, wodurch eine gleiche Gleichzeitigkeit zwischen allen Threads, innerhalb und zwischen den Warps ermöglicht wird. Wenn der Ausführungszustand für jeden einzelnen Thread beibehalten wird, können Threads, die dieselben Anweisungen ausführen, konvergiert und parallel ausgeführt werden, um eine maximale Effizienz zu erreichen. Der SM 440 wird im Folgenden in Verbindung mit 5A näher beschrieben.
  • Die MMU 490 bietet eine Schnittstelle zwischen dem GPC 350 und der Speicherpartitionseinheit 380. Die MMU 490 kann die Übersetzung virtueller Adressen in physikalische Adressen, den Speicherschutz und die Arbitrierung von Speicheranforderungen ermöglichen. In einem Ausführungsbeispiel stellt die MMU 490 einen oder mehrere Translation Lookaside Buffer (TLBs) zur Verfügung, um die Übersetzung von virtuellen Adressen in physikalische Adressen im Speicher 304 durchzuführen.
  • 4B illustriert eine Speicherpartitionseinheit 380 der PPU 300 von 3 gemäß einem Ausführungsbeispiel. Wie in 4B dargestellt, beinhaltet die Speicherpartitionseinheit 380 eine Raster Operations (ROP)-Einheit 450, einen Level-2 (L2)-Cache 460 und eine Speicherschnittstelle 470. Die Speicherschnittstelle 470 ist mit dem Speicher 304 gekoppelt. Die Speicherschnittstelle 470 kann 32-Bit-, 64-Bit-, 128-Bit-, 1024-Bit-Datenbusse oder dergleichen für die Hochgeschwindigkeits-Datenübertragung implementieren. In einem Ausführungsbeispiel beinhaltet die PPU 300 Y Speicherschnittstellen 470, eine Speicherschnittstelle 470 pro Paar Speicherpartitionseinheiten 380, wobei jedes Paar Speicherpartitionseinheiten 380 mit einer entsprechenden Speichervorrichtung 304 verbunden ist. So kann die PPU 300 beispielsweise an bis zu Y Speichervorrichtungen 304 angeschlossen werden, wie beispielsweise an Speicherstapel mit hoher Bandbreite oder Grafiken mit doppelter Datenrate, Version 5, synchronen dynamischen Direktzugriffsspeicher oder andere Arten von persistentem Speicher.
  • In einem Ausführungsbeispiel implementiert die Speicherschnittstelle 470 eine HBM2-Speicherschnittstelle und Y entspricht der Hälfte von U. In einem Ausführungsbeispiel befinden sich die HBM2-Speicherstapel in demselben physikalischen Gehäuse wie die PPU 300, was im Vergleich zu herkömmlichen GDDR5-SDRAM-Systemen zu erheblichen Strom- und Flächeneinsparungen führt. In einem Ausführungsbeispiel beinhaltet jeder HBM2-Stapel vier Speicherchips und Y ist gleich 4, wobei der HBM2-Stapel zwei 128-Bit-Kanäle pro Chip für insgesamt 8 Kanäle und eine Datenbusbreite von 1024 Bit beinhaltet.
  • In einem Ausführungsbeispiel unterstützt der Speicher 304 Single-Error Correcting Double-Error Detecting (SECDED) Error Correction Code (ECC) zum Schutz der Daten. ECC bietet eine höhere Zuverlässigkeit für Rechenanwendungen, die empfindlich auf Datenverluste reagieren. Zuverlässigkeit ist besonders wichtig in großen Cluster-Computerumgebungen, in denen PPUs 300 sehr große Datensätze verarbeiten und/oder Anwendungen über längere Zeiträume ausführen.
  • In einigen Ausführungsbeispielen implementiert die PPU 300 eine mehrstufige Speicherhierarchie. In einem Ausführungsbeispiel unterstützt die Speicherpartitionseinheit 380 einen vereinheitlichten Speicher (engl. „unified memory“), um einen einzigen vereinheitlichten virtuellen Adressraum für CPU- und PPU 300-Speicher bereitzustellen, der den Datenaustausch zwischen virtuellen Speichersystemen ermöglicht. In einem Ausführungsbeispiel wird die Häufigkeit der Zugriffe einer PPU 300 auf Speicher, der sich auf anderen Prozessoren befindet, verfolgt, um sicherzustellen, dass Speicherseiten in den physikalischen Speicher der PPU 300 verschoben werden, die häufiger auf die Seiten zugreift. In einem Ausführungsbeispiel unterstützt der NVLink 310 Adressübersetzungsdienste, die es der PPU 300 ermöglichen, direkt auf die Seitentabellen einer CPU zuzugreifen, und den vollen Zugriff auf den CPU-Speicher durch die PPU 300 ermöglichen.
  • In einigen Ausführungsbeispielen übertragen Copy-Engines Daten zwischen mehreren PPUs 300 oder zwischen PPUs 300 und CPUs. Die Copy-Engines können Seitenfehler für Adressen generieren, die nicht in den Seitentabellen abgebildet sind. Die Speicherpartitionseinheit 380 kann dann die Seitenfehler beheben und die Adressen in die Seitentabelle eintragen, woraufhin die Copy-Engine den Transfer durchführen kann. In einem herkömmlichen System ist der Speicher für mehrfache Copy-Engine-Operationen zwischen mehreren Prozessoren festgelegt (z.B. nicht auslagerbar), was den verfügbaren Speicher erheblich reduziert. Mit Hardware-Seitenfehlermechanismen können Adressen an die Copy-Engines weitergegeben werden, ohne zu befürchten, dass die Speicherseiten resident sind und der Kopiervorgang transparent ist.
  • Daten aus dem Speicher 304 oder einem anderen Systemspeicher können von der Speicherpartitionseinheit 380 abgerufen und im L2-Cache 460 gespeichert werden, der sich auf dem Chip befindet und von den verschiedenen GPCs 350 gemeinsam genutzt wird. Wie dargestellt, beinhaltet jede Speicherpartitionseinheit 380 einen Abschnitt des L2-Cache 460, der mit einer entsprechenden Speichervorrichtung 304 assoziiert ist. Untergeordnete Cache-Speicher können dann in verschiedenen Einheiten innerhalb der GPCs 350 implementiert werden. So kann beispielsweise jeder der SMs 440 einen Level One (L1)-Cache implementieren. Der L1-Cache ist ein privater Speicher, der mit einem bestimmten SM 440 assoziiert ist. Daten aus dem L2-Cache 460 können abgerufen und in jedem der L1-Caches zur Verarbeitung in den Funktionseinheiten des SMs 440 gespeichert werden. Der L2-Cache 460 ist mit der Speicherschnittstelle 470 und der XBar 370 gekoppelt.
  • Die ROP-Einheit 450 führt grafische Rasteroperationen im Zusammenhang mit Pixelfarben durch, wie z.B. Farbkompression, Pixelblending und dergleichen. Die ROP-Einheit 450 führt auch Tiefentests in Verbindung mit der Raster-Engine 425 durch, wobei sie eine Tiefe für eine Probenposition empfängt, die mit einem Pixelfragment von der Culling-Engine der Raster-Engine 425 assoziiert ist. Die Tiefe wird gegen eine entsprechende Tiefe in einem Tiefenpuffer für eine mit dem Fragment assoziierte Probenposition getestet. Wenn das Fragment den Tiefentest für die Probenposition besteht, aktualisiert die ROP-Einheit 450 den Tiefenpuffer und sendet ein Ergebnis des Tiefentests an die Raster-Engine 425. Es wird darauf hingewiesen, dass die Anzahl der Speicherpartitionseinheiten 380 von der Anzahl der GPCs 350 abweichen kann und daher jede ROP-Einheit 450 mit jedem der GPCs 350 gekoppelt werden kann. 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 generiertes Ergebnis durch die Xbar 370 geleitet wird. Obwohl die ROP-Einheit 450 in 4B innerhalb der Speicherpartitionseinheit 380 enthalten ist, kann sich die ROP-Einheit 450 in einem anderen Ausführungsbeispiel außerhalb der Speicherpartitionseinheit 380 befinden. So kann sich beispielsweise die ROP-Einheit 450 im GPC 350 oder einer anderen Einheit befinden.
  • 5A illustriert den Streaming-Multiprozessor 440 von 4A gemäß einem Ausführungsbeispiel. Wie in 5A dargestellt, beinhaltet der SM 440 einen Anweisungs-Cache 505, eine oder mehrere Schedulereinheiten 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 und einen gemeinsam genutzten Speicher/L1-Cache 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 zugewiesen und, wenn die Aufgabe mit einem Shaderprogramm assoziiert ist, kann die Aufgabe einem SM 440 zugewiesen werden. Die Schedulereinheit 510 empfängt die Aufgaben von der Arbeitsverteilungseinheit 325 und verwaltet die Anweisungsplanung für einen oder mehrere der SM 440 zugeordnete Thread-Blöcke. Die Schedulereinheit 510 plant Thread-Blöcke zur Ausführung als Kette paralleler Threads, wobei jedem Thread-Block mindestens ein Warp zugeordnet ist. In einem Ausführungsbeispiel führt jeder Warp 32 Threads aus. Die Schedulereinheit 510 kann eine Vielzahl von verschiedenen Thread-Blöcken verwalten, indem sie die Warps den verschiedenen Thread-Blöcken zuweist und dann während jedes Taktzyklus Anweisungen von der Vielzahl der verschiedenen kooperativen Gruppen an die verschiedenen Funktionseinheiten (z.B. Kerne 550, SFUs 552 und LSUs 554) sendet.
  • Cooperative Groups ist ein Programmiermodell für die Organisation von Gruppen miteinander 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 die Synchronisation zwischen Thread-Blö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 kollektiven gruppenweiten Funktionsschnittstellen zu ermöglichen.
  • Cooperative Groups ermöglicht es Programmierern, Gruppen von Threads explizit an Subblock- (z.B. so klein wie ein einzelner Thread) und Multiblock-Granularitäten zu definieren und kollektive Operationen wie die Synchronisation der Threads in einer kooperativen Gruppe durchzuführen. Das Programmiermodell unterstützt eine saubere Zusammensetzung über Softwaregrenzen hinweg, so dass Bibliotheken und Utility-Funktionen sicher in ihrem lokalen Kontext synchronisieren können, ohne Annahmen über die Konvergenz treffen zu müssen. Primitive von kooperativen Gruppen ermöglichen neue Muster kooperativer Parallelität, einschließlich Produzenten-Verbraucher-Parallelität, opportunistischer Parallelität und globaler Synchronisation über ein ganzes Raster von Thread-Blöcken.
  • Eine Versandeinheit 515 ist konfiguriert, um Anweisungen an eine oder mehrere der Funktionseinheiten zu senden. In dem Ausführungsbeispiel beinhaltet die Versandeinheit 510 zwei Versandeinheiten 515, die es ermöglichen, während jedes Taktzyklus zwei verschiedene Anweisungen von demselben Warp zu senden. In alternativen Ausführungsbeispielen kann jede Versandeinheit 510 eine einzelne Versandeinheit 515 oder zusätzliche Versandeinheiten 515 beinhalten.
  • Jeder SM 440 enthält eine Registerdatei 520, die einen Satz von Registern für die Funktionseinheiten des SM 440 bereitstellt. In einem Ausführungsbeispiel ist die Registerdatei 520 auf jede der Funktionseinheiten aufgeteilt, so dass jeder Funktionseinheit ein bestimmter Abschnitt der Registerdatei 520 zugewiesen ist. In einem weiteren Ausführungsbeispiel wird die Registerdatei 520 auf die verschiedenen Warps aufgeteilt, die von dem SM 440 ausgeführt werden. Die Registerdatei 520 stellt temporären Speicher für Operanden bereit, die mit den Datenpfaden der Funktionseinheiten verbunden sind.
  • Jeder SM 440 umfasst L Verarbeitungskerne 550. In einem Ausführungsbeispiel beinhaltet der SM 440 eine große Anzahl (z.B. 128, etc.) von verschiedenen Verarbeitungskernen 550. Jeder Kern 550 kann eine vollpipelinierte, einfach-präzise, doppelpräzise und/oder gemischt-präzise Verarbeitungseinheit beinhalten, die eine Gleitkomma- und eine Integer-Arithmetik-Logikeinheit beinhaltet. In einem Ausführungsbeispiel implementieren die Gleitkomma-Arithmetik-Logikeinheiten den Standard IEEE 754-2008 für Gleitkommaarithmetik. In einem Ausführungsbeispiel beinhalten die Kerne 550 64 Single-Precision (32-Bit) Gleitkomma-Kerne, 64 Integer-Kerne, 32 Double-Precision (64-Bit) Gleitkomma-Kerne und 8 Tensorkerne.
  • Tensorkerne sind konfiguriert, um Matrixoperationen durchzuführen, und In einigen Ausführungsbeispielen sind ein oder mehrere Tensorkerne in den Kernen 550 enthalten. Insbesondere sind die Tensorkerne konfiguriert, um Deep-Learning-Matrix-Arithmetik durchzuführen, wie beispielsweise Faltungsoperationen für das Training und die Inferenzierung neuronaler Netze. In einem Ausführungsbeispiel arbeitet jeder Tensorkern auf einer 4x4-Matrix und führt eine Matrixvervielfachungs- und Akkumulations-Operation D=A×B+C durch, wobei A, B, C und D 4×4-Matrizen sind.
  • In einem Ausführungsbeispiel sind die Matrix-Multiplikatoreingänge A und B 16-Bit Fließkomma-Matrizen, während die Akkumulationsmatrizen C und D 16-Bit Fließkomma- oder 32-Bit Fließkomma-Matrizen sein können. Tensorkerne arbeiten mit 16-Bit Gleitkomma-Eingangsdaten mit 32-Bit Gleitkommaakkumulation. Die 16-Bit-Fließkomma-Multiplikation erfordert 64 Operationen und führt zu einem hochpräzisen Produkt, das dann unter Verwenden der 32-Bit-Fließkommaaddition mit den anderen Zwischenprodukten für eine 4x4x4-Matrix-Multiplikation akkumuliert wird. In der Praxis werden Tensorkerne verwendet, um viel größere zweidimensionale oder höher-dimensionale Matrixoperationen durchzuführen, die sich aus diesen kleineren Elementen zusammensetzen. Eine API, wie die CUDA 9 C++ API, stellt spezielle Matrixlasten, Matrixmultiplikationen und -akkumulationen sowie Matrixspeicheroperationen bereit, um Tensor-Kerne aus einem CUDA-C++-Programm effizient zu nutzen. Auf der CUDA-Ebene setzt das Warp-Level-Interface Matrizen im Format 16x16 voraus, die alle 32 Threads des Warps umfassen.
  • Jeder SM 440 umfasst auch M SFUs 552, die spezielle Funktionen ausführen (z.B. Attributbewertung, reziproke Quadratwurzel und dergleichen). In einem Ausführungsbeispiel können die SFUs 552 eine Baumtraversiereinheit beinhalten, die konfiguriert ist, um eine hierarchische Baumdatenstruktur zu traversieren. In einigen Ausführungsbeispielen können die SFUs 552 eine oder mehrere Textureinheiten beinhalten, die konfiguriert sind, um Texturkartenfilteroperationen durchzuführen. In einem Ausführungsbeispiel sind die Textureinheiten konfiguriert, um Texturkarten (z.B. ein 2D-Array von Texeln) aus dem Speicher 304 zu laden und die Texturkarten abzutasten, um abgetastete Texturwerte für die Verwendung in Shaderprogrammen zu generieren, die von dem SM 440 ausgeführt werden. In einem Ausführungsbeispiel werden die Texturkarten im gemeinsamen Speicher/L1-Cache 570 gespeichert. Die Textureinheiten implementieren Texturoperationen wie z.B. Filteroperationen mittels Mip-Maps (z.B. Texturkarten mit unterschiedlichem Detaillierungsgrad). In einem Ausführungsbeispiel beinhaltet jeder SM 340 zwei Textureinheiten.
  • Jeder SM 440 umfasst auch N LSUs 554, die Lade- und Speicheroperationen zwischen dem gemeinsamen Speicher/L1-Cache 570 und der Registerdatei 520 implementieren. Jeder SM 440 beinhaltet ein Verbindungsnetzwerk 580, das jede der Funktionseinheiten mit der Registerdatei 520 und die LSU 554 mit der Registerdatei 520, Shared Memory/ L1 Cache 570 verbindet. In einem Ausführungsbeispiel ist das Verbindungsnetzwerk 580 eine Crossbar, die konfiguriert werden kann, um jede der Funktionseinheiten mit einem der Register in der Registerdatei 520 zu verbinden und die LSUs 554 mit der Registerdatei und den Speicherplätzen im gemeinsamen Speicher/L1-Cache 570 zu verbinden.
  • Der Shared Memory/L1 Cache 570 ist ein Array von On-Chip-Speicher, das die Datenspeicherung und Kommunikation zwischen dem SM 440 und der Primitiv-Engine 435 sowie zwischen Threads im SM 440 ermöglicht. In einem Ausführungsbeispiel umfasst der gemeinsam genutzte Speicher/L1-Cache 570 128KB Speicherkapazität und befindet sich auf dem Weg vom SM 440 zur Speicherteilungseinheit 380. Der gemeinsam genutzte Speicher/L1-Cache 570 kann zum Cache-Lesen und -Schreiben verwendet werden. Einer oder mehrere der gemeinsam genutzten Speicher/L1-Cache 570, L2-Cache 460 und Speicher 304 sind Backup-Speicher.
  • Ein Kombinieren von Daten-Cache und Shared Memory-Funktionalität in einem einzigen Speicherblock bietet die beste Gesamtleistung für beide Arten von Speicherzugriffen. Die Kapazität ist als Cache für Programme nutzbar, die keinen gemeinsamen Speicher verwenden. Wenn beispielsweise der gemeinsame Speicher so konfiguriert ist, dass er die Hälfte der Kapazität nutzt, können Textur- und Lade-/Speicheroperationen die verbleibende Kapazität als Cache verwenden. Die Integration in den gemeinsam genutzten Speicher/L 1 - Cache 570 ermöglicht es dem gemeinsam genutzten Speicher/L1-Cache 570, als Leitung mit hohem Durchsatz für das Streaming von Daten zu fungieren und gleichzeitig eine hohe Bandbreite und einen Zugriff mit geringer Latenzzeit auf häufig wiederverwendeten Daten zu ermöglichen.
  • Bei einer Konfiguration für die allgemeine parallele Berechnung kann eine einfachere Konfiguration im Vergleich zur Grafikverarbeitung verwendet werden. Insbesondere werden die in 3 dargestellten Grafikverarbeitungseinheiten mit fester Funktion umgangen, wodurch ein wesentlich einfacheres Programmiermodell entsteht. In der Konfiguration für die allgemeine parallele Berechnung weist die Arbeitsverteilungseinheit 325 Thread-Blöcke direkt den DPCs 420 zu und verteilt sie an diese. Die Threads in einem Block führen das gleiche Programm aus, wobei eine eindeutige Thread-ID bei der Berechnung verwendet wird, um sicherzustellen, dass jeder Thread eindeutige Ergebnisse generiert, wobei der SM 440 verwendet wird, um das Programm auszuführen und Berechnungen durchzuführen, wobei der gemeinsame Speicher/L 1-Cache 570 verwendet wird, um zwischen Threads zu kommunizieren, und wobei die LSU 554 verwendet wird, um den globalen Speicher über den gemeinsamen Speicher/L1-Cache 570 und die Speicherpartitionseinheit 380 zu lesen und zu schreiben. Wenn der SM 440 für die allgemeine parallele Berechnung konfiguriert ist, kann er auch Befehle schreiben, die die Schedulereinheit 320 verwenden kann, um neue Arbeiten an den DPCs 420 zu beginnen.
  • Die PPU 300 kann in einem Desktop-Computer, einem Laptop-Computer, einem Tablet-Computer, Servern, Supercomputern, einem Smartphone (z.B. einem drahtlosen, tragbaren Gerät), einem Personal Digital Assistant (PDA), einer Digitalkamera, einem Fahrzeug, einem kopfgetragenen Display, einem tragbaren elektronischen Gerät und dergleichen enthalten sein. In einem Ausführungsbeispiel ist die PPU 300 auf einem einzelnen Halbleitersubstrat ausgeführt. In einem weiteren Ausführungsbeispiel ist die PPU 300 zusammen mit einer oder mehreren anderen Vorrichtungen, wie zusätzlichen PPUs 300, dem Speicher 204, einer CPU mit reduziertem Anweisungssatz (RISC), einer Speicherverwaltungseinheit (MMU), einem Digital-Analog-Wandler (DAC) und dergleichen, in einem System auf einem Chip (SoC) enthalten.
  • In einem Ausführungsbeispiel kann die PPU 300 auf einer Grafikkarte enthalten sein, die eine oder mehrere Speichervorrichtungen 304 beinhaltet. Die Grafikkarte kann so konfiguriert sein, dass sie mit einem PCIe-Steckplatz auf einem Motherboard eines Desktop-Computers verbunden ist. In noch einem weiteren Ausführungsbeispiel kann die PPU 300 eine integrierte Grafikverarbeitungseinheit (iGPU) oder ein paralleler Prozessor sein, der im Chipsatz des Motherboards enthalten ist.
  • Exemplarisches Rechensystem
  • Systeme mit mehreren GPUs und CPUs werden in einer Vielzahl von Branchen eingesetzt, wo Entwickler mehr Parallelität in Anwendungen wie Berechnungen mit künstlicher Intelligenz aufzeigen und nutzen. Leistungsstarke GPU-beschleunigte Systeme mit Zehntausenden von Rechenknoten werden in Rechenzentren, Forschungseinrichtungen und Supercomputern eingesetzt, um immer größere Probleme zu lösen. Mit zunehmender Anzahl von Verarbeitungsgeräten innerhalb der Hochleistungssysteme müssen die Kommunikations- und Datenübertragungsmechanismen skaliert werden, um die erhöhte Bandbreite zu unterstützen.
  • 5B ist ein konzeptionelles Diagramm eines Verarbeitungssystems 500, das unter Verwenden der PPU 300 von 3 gemäß einem Ausführungsbeispiel implementiert wurde. Das exemplarische System 565 kann konfiguriert sein, um das in 1 dargestellte Verfahren 100 zu implementieren. Das Verarbeitungssystem 500 beinhaltet eine CPU 530, einen Switch 510 und mehrere PPUs 300, die jeweils mit den entsprechenden Speichern 304 gekoppelt sind. Der NVLink 310 bietet Hochgeschwindigkeitskommunikationsverbindungen zwischen jeder der PPUs 300. Obwohl eine bestimmte Anzahl von NVLink 310- und Interconnect 302-Verbindungen in 5B dargestellt ist, kann die Anzahl der Verbindungen zu jeder PPU 300 und der CPU 530 variieren. Der Switch 510 dient als Schnittstelle zwischen der Verbindung 302 und der CPU 530. Die PPUs 300, die Speicher 304 und NVLinks 310 können sich auf einer einzigen Halbleiterplattform befinden, um ein Parallelverarbeitungsmodul 525 zu bilden. In einem Ausführungsbeispiel unterstützt der Switch 510 zwei oder mehr Protokolle, um als Schnittstelle zwischen verschiedenen verschiedenen Verbindungen und/oder Verbindungen zu dienen.
  • In einem weiteren Ausführungsbeispiel (nicht dargestellt) stellt das NVLink 310 eine oder mehrere Hochgeschwindigkeitskommunikationsverbindungen zwischen jeder der PPUs 300 und der CPU 530, sowie der Switch 510 dient als Schnittstelle zwischen der Verbindungsleitung 302 und jeder der PPUs 300. Die PPUs 300, die Speicher 304 und die Verbindung 302 können auf einer einzigen Halbleiterplattform angeordnet sein, um ein Parallelverarbeitungsmodul 525 zu bilden. In noch einem weiteren Ausführungsbeispiel (nicht dargestellt) stellt die Verbindung 302 eine oder mehrere Kommunikationsverbindungen zwischen jeder der PPUs 300 und der CPU 530 bereit, und der Switch 510 dient als Schnittstelle zwischen jeder der PPUs 300 unter Verwenden des NVLink 310 zur Bereitstellung einer oder mehrerer Hochgeschwindigkeitskommunikationsverbindungen zwischen den PPUs 300. In einem weiteren Ausführungsbeispiel (nicht dargestellt) stellt das NVLink 310 eine oder mehrere Hochgeschwindigkeitskommunikationsverbindungen zwischen den PPUs 300 und der CPU 530 über den Switch 510 bereit. In noch einem weiteren Ausführungsbeispiel (nicht dargestellt) stellt die Verbindung 302 eine oder mehrere Kommunikationsverbindungen zwischen jeder der PPUs 300 direkt zur Verfügung. Eine oder mehrere der NVLink 310 Hochgeschwindigkeits-Kommunikationsverbindungen können als physische NVLink-Verbindung oder als On-Chip- oder On-Die-Verbindung mit dem gleichen Protokoll wie die NVLink 310 implementiert werden.
  • Im Zusammenhang mit der vorliegenden Beschreibung kann sich eine einzelne Halbleiterplattform auf eine einzige einheitliche halbleiterbasierte integrierte Schaltung beziehen, die auf einem Die oder Chip hergestellt wird. Es ist zu beachten, dass sich der Begriff Single-Halbleiterplattform auch auf Multichip-Module mit erhöhter Konnektivität beziehen kann, die den On-Chip-Betrieb simulieren und wesentliche Verbesserungen gegenüber einer herkömmlichen Busimplementierung bereitstellen. Natürlich können die verschiedenen Schaltungen oder Vorrichtungen auch einzeln oder in verschiedenen Kombinationen von Halbleiterplattformen nach Wünschen eines Benutzers angeordnet werden. Alternativ kann das Parallelverarbeitungsmodul 525 als Leiterplattensubstrat implementiert werden und jede der PPUs 300 und/oder Speicher 304 kann als Vorrichtung in einem Gehäuse ausgeführt sein. In einem Ausführungsbeispiel befinden sich die CPU 530, der Switch 510 und das Parallelverarbeitungsmodul 525 auf einer einzigen Halbleiterplattform.
  • In einem Ausführungsbeispiel beträgt die Signalübertragungsrate jedes NVLink 310 20 bis 25 Gigabit/Sekunde und jede PPU 300 beinhaltet sechs NVLink 310-Schnittstellen (wie in 5B dargestellt, sind fünf NVLink 310-Schnittstellen für jede PPU 300 enthalten). Jeder NVLink 310 bietet eine Datenübertragungsrate von 25 Gigabyte/Sekunde in jede Richtung, sechs Links liefern 300 Gigabyte/Sekunde. Die NVLinks 310 können ausschließlich für die Kommunikation von PPU-zu-PPU 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 beinhaltet.
  • In einem Ausführungsbeispiel ermöglicht das NVLink 310 den direkten Lade-/Speicher-/atomistischen Zugriff von der CPU 530 auf den 300 Speicher 304 jeder PPU. In einem Ausführungsbeispiel unterstützt das NVLink 310 Kohärenzoperationen, so dass aus den Speichern 304 gelesene Daten in der Cache-Hierarchie der CPU 530 gespeichert werden können, wodurch die Cache-Zugriffslatenz für die CPU 530 reduziert wird. In einem Ausführungsbeispiel beinhaltet der NVLink 310 die Unterstützung von Address Translation Services (ATS), so dass die PPU 300 direkt auf Seitentabellen innerhalb der CPU 530 zugreifen kann. Einer oder mehrere der NVLinks 310 können auch für den Betrieb in einem Niedrigverbrauchsmodus konfiguriert sein.
  • 5C illustriert ein exemplarisches System 565, in dem die unterschiedliche Architektur und/oder Funktionalität der verschiedenen vorherigen Ausführungsbeispiele implementiert werden können. Das exemplarische System 565 kann konfiguriert werden, um das in 1 dargestellte Verfahren 100 zu implementieren.
  • Wie dargestellt, wird ein System 565 mit mindestens einer Zentraleinheit 530 bereitgestellt, die an einen Kommunikationsbus 575 angeschlossen ist. Der Kommunikationsbus 575 kann mit einem beliebigen geeigneten Protokoll implementiert werden, wie beispielsweise PCI (Peripheral Component Interconnect), PCI-Express, AGP (Accelerated Graphics Port), HyperTransport oder einem anderen Bus oder Punkt-zu-Punkt-Kommunikationsprotokoll(en). Das System 565 beinhaltet auch einen Hauptspeicher 540. Die Steuerlogik (Software) und die Daten werden im Hauptspeicher 540 gespeichert, der als Direktzugriffsspeicher (RAM) ausgeführt sein kann.
  • Das System 565 beinhaltet auch Eingabevorrichtungen 560, das Parallelverarbeitungssystem 525 und die Anzeigevorrichtungen 545, z.B. eine herkömmliche CRT (Kathodenstrahlröhre), LCD (Flüssigkristallanzeige), LED (Leuchtdiode), Plasmaanzeige oder dergleichen. Benutzereingaben können von den Eingabegeräten 560 empfangen werden, z.B. Tastatur, Maus, Touchpad, Mikrofon und dergleichen. Alle der vorgenannten Module und/oder Vorrichtungen können sich auch auf einer einzigen Halbleiterplattform befinden, um das System 565 zu bilden. Alternativ können die verschiedenen Module nach Wünschen eines Anwenders auch einzeln oder in verschiedenen Kombinationen von Halbleiterplattformen angeordnet sein.
  • Weiter kann das System 565 über eine Netzwerkschnittstelle 535 zu Kommunikationszwecken mit einem Netzwerk (z.B. Telekommunikationsnetzwerk, Local Area Network (LAN), drahtloses Netzwerk, Wide Area Network (WAN) wie Internet, Peerto-Peer-Netzwerk, Kabelnetzwerk oder dergleichen) gekoppelt werden.
  • Das System 565 kann auch einen sekundären Speicher beinhalten (nicht dargestellt). Der sekundäre Speicher beinhaltet beispielsweise ein Festplattenlaufwerk und/oder ein Wechselspeicherlaufwerk, das ein Diskettenlaufwerk, ein Magnetbandlaufwerk, ein Compact-Disk-Laufwerk, ein Digital Versatile Disk (DVD)-Laufwerk, ein Aufnahmegerät oder einen Universal Serial Bus (USB)-Flash-Speicher repräsentiert. Das Wechselspeicherlaufwerk liest und/oder schreibt in bekannter Weise von/auf eine/r Wechselspeichereinheit.
  • Computerprogramme oder Logikalgorithmen zur Computersteuerung können im Hauptspeicher 540 und/oder im sekundären Speicher gespeichert werden. Solche Computerprogramme ermöglichen es dem System 565, verschiedene Funktionen durchzuführen, wenn sie ausgeführt werden. Der Speicher 540, der Speicher und/oder jeder andere Speicher sind mögliche Beispiele für computerlesbare Medien.
  • Die Architektur und/oder Funktionalität der verschiedenen vorhergehenden Figuren kann im Rahmen eines allgemeinen Computersystems, eines Platinensystems, eines Spielkonsolensystems für Unterhaltungszwecke, eines anwendungsspezifischen Systems und/oder eines anderen gewünschten Systems implementiert werden. Das System 565 kann beispielsweise in Form eines Desktop-Computers, eines Laptops, eines Tablet-Computers, von Servern, Supercomputern, eines Smartphones (z.B. eines drahtlosen, tragbaren Geräts), eines persönlichen digitalen Assistenten (PDA), einer Digitalkamera, eines Fahrzeugs, eines kopfgetragenen Displays, einer tragbaren elektronischen Vorrichtung, einer Mobilfunkvorrichtung, eines Fernsehers, einer Workstation, Spielkonsolen, eines Embedded-Systems und/oder einer anderen Art von Logik erfolgen.
  • Obwohl vorstehend verschiedene Ausführungsbeispiele beschrieben wurden, ist zu verstehen, dass diese nur als Beispiel und nicht als Einschränkung dienen. Daher soll die Breite und der Umfang eines bevorzugten Ausführungsbeispiel nicht durch eines der oben beschriebenen exemplarischen Ausführungsbeispiele eingeschränkt werden, sondern nur in Übereinstimmung mit den folgenden Ansprüchen und ihren Entsprechungen definiert werden.
  • Hierarchischer Baum der Mischverteilungen
  • Wie hierin verwendet, beziehen sich Punktwolkendaten auf Informationen, die mit einer Reihe von Punkten assoziiert sind. Jeder Punkt ist definiert als ein Satz von Koordinaten, der eine Position für den Punkt in einem dreidimensionalen euklidischen Raum identifiziert. In einem Ausführungsbeispiel kann jeder Punkt in einem kartesischen Koordinatensystem so definiert werden, dass er eine x-Koordinate, eine y-Koordinate und eine z-Koordinate aufweist. In weiteren Ausführungsbeispielen kann jeder Punkt mit Koordinaten eines anderen Koordinatensystems, wie beispielsweise radialen oder sphärischen Koordinaten, definiert werden. In einigen Ausführungsbeispielen kann jeder Punkt zusätzlich zu den Positionskoordinaten für den Punkt auch mit anderen Daten assoziiert werden. So kann beispielsweise jeder Punkt mit einem Farbwert mit einer oder mehreren Komponenten, einer mit dem Punkt im Raum assoziierten Eigenschaft (z.B. Dichte, Temperatur, etc.) oder dergleichen assoziiert werden. Es ist jedoch zu beachten, dass der nachfolgend beschriebene Registrierungsalgorithmus nur die Positionsdaten für die Punkte benötigt und somit zusätzliche Daten, wenn sie in den Punktwolkendaten enthalten sind, vom Registrierungsalgorithmus verworfen oder ignoriert werden können.
  • Die 6A-6C illustrieren eine Technik zur Repräsentation von Punktwolkendaten unter Verwenden von Mischverteilungen unterschiedlicher Granularität gemäß einigen Ausführungsbeispielen. Wie in 6A dargestellt, beinhaltet eine Punktwolke 600 eine Anzahl von Punktobjekten 601. Jedes Punktobjekt 601 ist ein Vektor, der eine Anzahl von Komponenten speichert, die das Punktobjekt 601 im Raum lokalisieren. In einigen Ausführungsbeispielen speichert das Punktobjekt 601 einen Dreikomponentenvektor mit Einzelwerten für eine x-Koordinate, eine y-Koordinate und eine z-Koordinate. In einigen Ausführungsbeispielen werden die Einzelwerte in einem Gleitkommaformat kodiert. So können beispielsweise die Einzelwerte für eine Position für das Punktobjekt 601 als 16-Bit- oder 32-Bit-Fließkommazahlen kodiert werden. In weiteren Ausführungsbeispielen können die Einzelwerte in anderen Formaten kodiert werden.
  • In einigen Ausführungsbeispielen wird die Punktwolke 600 durch einen oder mehrere aktive Sensoren wie Tiefenkameras, LiDAR oder andere ähnliche Technologien generiert. Die aktiven Sensoren können konfiguriert sein, um einen Raum zu scannen und die Punktobjekte 601 in der Punktwolke 600 zu generieren. Die Anzahl der in der Punktwolke 600 enthaltenen Punktobjekte 601 kann sehr groß sein und in der Größenordnung von Hunderttausenden, Millionen oder sogar Milliarden von Punktobjekten 601 liegen. In einigen Ausführungsbeispielen kann die Größe einer Punktwolke 600 begrenzt werden, entweder durch die Konfiguration der aktiven Sensoren oder durch Filtern der zur Punktwolke 600 hinzugefügten Punktobjekte 601. Die Begrenzung der Anzahl der in einer Punktwolke 600 enthaltenen Punktobjekte 601 kann notwendig sein, um die Zeit für die Verarbeitung der Punktwolke 600 für zeitsensible Aufgaben zu reduzieren. Beispielsweise müssen autonome Fahranwendungen in Echtzeit eine Punktwolke registrieren, um eine geschätzte Transformation, die über einen Registrierungsalgorithmus identifiziert wurde, auf ein Steuerungssystem für das Fahrzeug anzuwenden.
  • In weiteren Ausführungsbeispielen kann die Punktwolke 600 durch einen Rendering-Algorithmus generiert werden, der zumindest teilweise durch eine Grafikverarbeitungspipeline implementiert ist. So kann beispielsweise ein Modell komplexer Geometrien (z.B. 3D-Oberflächen) mit Hilfe von Ray-Tracing-Techniken gerendert werden, um Punktobjekte 601 zu generieren, bei denen sich Strahlen mit der Geometrie schneiden. In weiteren Ausführungsbeispielen kann ein Algorithmus konfiguriert sein, um die Geometrie aus einem Modell zu lesen und die Geometrie direkt in Punktobjekte 601 zu übersetzen, z.B. durch zufälliges Generieren von Punktobjekten 601 auf der Oberfläche eines Dreiecks, Quad, Dreiecksfächers oder Netzobjekts. Diese simulierten Punktwolken können verwendet werden, um den unten beschriebenen Registrierungsalgorithmus mit bekannten festen Transformationen der Modellgeometrie zu testen. Simulierte Punktwolken haben jedoch noch viele andere Einsatzmöglichkeiten, wie z.B. die Erstellung von Trainingsdatensätzen für selbst-lernende (engl. „deep learning“) neuronale Netze oder den Test von Steuerungssystemen, die Punktwolkendaten als Sensoreingänge verwenden.
  • Datenstrukturen zur Speicherung der Punktwolke 600 können sehr groß sein, da jedes Punktobjekt 601 z.B. 16 Bytes für 4 Komponentenvektoren im FP32 (32-Bit Gleitkomma)-Format sein kann, wobei zwölf Bytes die Positionsinformationen und vier Bytes optional einen Parameter für das Punktobjekt 601 speichern können, wie z.B. einen 32-Bit RGB-Farbwert. In Fällen, in denen die Punktwolke 600 Millionen von Punktobjekten 601 beinhaltet, kann der gesamte Speicherbedarf zum Speichern der Punktwolke 600 viele Megabyte (MB) oder sogar Gigabyte (GB) betragen. Eine Lösung zur Reduzierung der Größe der Punktwolke 600 im Speicher ist ein Repräsentieren der Punktobjekte 601 durch eine alternative Repräsentation.
  • Eine Repräsentation der Punktwolke 600, die den Speicherbedarf deutlich reduzieren kann, ist die Repräsentation von Clustern von Punktobjekten 601 als Verteilungsfunktion. Die Verteilungsfunktion oder die zugehörige Wahrscheinlichkeitsdichtefunktion ist eine kontinuierliche Funktion, die die Wahrscheinlichkeit identifiziert, dass eine zufällige Variable, wie beispielsweise die Position eines Punktobjekts, z_i, einen Wert kleiner oder gleich einem bestimmten Punkt x annimmt. Die kumulative Verteilungsfunktion ist das Integral der Wahrscheinlichkeitsdichtefunktion für die zufällige Variable von negativ unendlich bis zum Punkt x.
  • In einem Ausführungsbeispiel sind die für die Repräsentation ausgewählten Verteilungsfunktionen Gauß-Basisfunktionen. In einem Ausführungsbeispiel, wie in 6B dargestellt, können mehrere Punktobjekte 601 in der Punktwolke 600 durch eine einzige Verteilungsfunktion 610 repräsentiert werden, die durch ein Mittel µ und eine Kovarianzmatrix Σ spezifiziert ist. Der Mittelwert µ und die Kovarianzmatrix Σ können direkt aus den Positionen der durch die Verteilungsfunktion 610 repräsentierten Menge der Punktobjekte 601 berechnet werden. Der Mittelwert µ befindet sich an einer Position 612, der Stelle, an der die Wahrscheinlichkeitsdichtefunktion für den Sollwert der Punktobjekte 601 maximal ist. In einigen Ausführungsbeispielen ist die Verteilungsfunktion 610 anisotrop, so dass die Varianz jeder Dimension der Position unabhängig voneinander variieren kann. In anderen Ausführungsbeispielen kann die Verteilungsfunktion 610 auf isotrop begrenzt werden, um Berechnungen in Algorithmen, die die Repräsentation verwenden, zu vereinfachen.
  • Es ist zu beachten, dass eine einzelne Verteilungsfunktion in der Regel nicht gut für reale Daten geeignet ist. Die Punktwolke 600 kann durch eine Vielzahl von Verteilungsfunktionen genauer repräsentiert werden, wobei jede Verteilungsfunktion eine andere Teilmenge von Punktobjekten 601 in der Punktwolke 600 repräsentiert. Genauer gesagt, durch die Bündelung von Punktobjekten 601 basierend auf der Position im Raum, sind die Verteilungsfunktionen für die Cluster von Punktobjekten 601 eine genauere Repräsentation dieser Punktobjekte 601. Es ist zu beachten, dass die Punktobjekte 601 nicht in der Nähe des Mittelwerts µ der Verteilungsfunktion im Raum liegen müssen, um durch die Verteilungsfunktion genau repräsentiert zu werden. Eine Verteilungsfunktion, die viele Punkte auf einer Ebene repräsentiert, kann beispielsweise eine Menge von Punkten in der Nähe der Ebene genau repräsentieren, obwohl viele dieser Punkte über die Ebene im Raum verteilt sein können. Solche Verteilungsfunktionen haben schlichtweg große Abweichungen in Bezug auf zwei orthogonale Richtungen und eine geringe Abweichung in Bezug auf die dritte orthogonale Richtung senkrecht zur Ebene.
  • Wie in 6C dargestellt, kann die Punktwolke 600 durch vier Verteilungsfunktionen 622, 624, 626 und 628 genauer repräsentiert werden als durch eine einzige Verteilungsfunktion 610. Die Vielzahl von Verteilungsfunktionen kann als Mischverteilung bezeichnet werden, wobei die Mischverteilung eine gewichtete Kombination der Mischkomponenten - der Verteilerfunktionen 622, 624, 626 und 628 - umfasst. Obwohl die in 6C dargestellten Verteilungsfunktionen ähnliche Basisfunktionen mit unterschiedlichen Parametern aufweisen können (z.B. Gauß-Basisfunktionen mit unterschiedlichen Mittelwert- und Kovarianzparametern), kann die Mischverteilung In einigen Ausführungsbeispielen Verteilungsfunktionen unterschiedlicher Basis kombinieren, z.B. durch Kombination von Gauß-Verteilungsfunktionen mit einer gleichmäßigen Verteilungsfunktion (engl. „unitary distribution function“). Die gleichmäßige Verteilungsfunktion kann helfen, Ausreißerpunktobjekte 601 darzustellen, die keine hohe Wahrscheinlichkeit haben, durch eine der anderen Verteilungsfunktionen repräsentiert zu werden (d.h. Ausreißer).
  • Registrierungsalgorithmus
  • Registrierungsalgorithmen zum Registrieren einer Punktwolke auf eine Referenzpunktwolke sind bekannt und beinhalten Varianten des Iterative Closest Point (ICP) Algorithmus. Genauer gesagt, versuchen die ICP-Algorithmen, eine optimale Transformation zu identifizieren, die einen Unterschied zwischen einer Referenzpunktwolke und einer transformierten Version der Punktwolke, die auf die Referenzpunktwolke registriert ist, minimiert. Die Schritte des ICP-Algorithmus beinhalten grob ein Assoziieren von Punkten in der Punktwolke zu Punkten in der Referenzpunktewolke basierend auf dem kürzesten Abstand; ein Schätzen einer Transformation durch Minimieren einer Metrik, beispielsweise einer Punkt-zu-Punkt-Distanz; ein Transformieren der Punkte in der Punktwolke basierend auf der geschätzten Transformation; und ein Iterieren über die Schritte mit neuen Assoziationen basierend auf der geschätzten Transformation im vorherigen Schritt. Es gibt viele Varianten des ICP-Algorithmus, darunter Varianten, die Punkt-zu-Punkt-Abstandsmetriken und Punkt-zu-Ebene-Abstandsmetriken verwenden. Allerdings erfordern Implementierungen des ICP-Algorithmus typischerweise bestimmte Annahmen oder Abkürzungen, um die Komplexität der Berechnungen zu reduzieren, die sich auf die Ergebnisse des Registrierungsalgorithmus auswirken. Es wird ein neuer Registrierungsalgorithmus vorgeschlagen, der eine Punktwolke auf eine Referenzpunktwolke registriert, die durch eine Hierarchie von Mischverteilungen repräsentiert wird.
  • Das durch den Registrierungsalgorithmus zu lösende Problem kann wie folgt definiert werden. Bei einer ersten Punktwolke, Z1 , und einer zweiten Punktwolke, Z2 , versucht der Registrierungsalgorithmus, die Datenwahrscheinlichkeit der zweiten Punktwolke Z2 unter einem Satz von Transformationen, T, in Bezug auf ein Wahrscheinlichkeitsmodell Θz 1 zu maximieren, das von der ersten Punktwolke Z1 abgeleitet ist. Mit anderen Worten, der Registrierungsalgorithmus löst für eine Transformation, T, wobei die wahrscheinlichste Schätzung der Transformation, T̂, die Schätzung ist, die die Wahrscheinlichkeit maximiert, dass die Proben der transformierten Punktwolke durch die probabilistische Repräsentation der räumlichen Wahrscheinlichkeit generiert wurden, die von der räumlichen Verteilung der ersten Punktwolke Z1 abgeleitet wurde, wie folgt: T ^ = arg max  p ( T ( Z 2 ) | Θ ^ z 1 )
    Figure DE102019108733A1_0005
  • Die gebräuchlichste Form zur Parametrisierung der Wahrscheinlichkeitsverteilung im Raum ist die Verwendung von Gauß-Mischmodellen, wie vorstehend beschrieben, die eine Datenwahrscheinlichkeit aufweisen, die definiert ist als eine konvexe Kombination von J Gauß-Verteilungsfunktionen, die mit dem J-Komponenten-Gewichtsvektor π gewichtet sind: p ( z | Θ z 1 ) = j = 1 J π j N ( z | Θ j )
    Figure DE102019108733A1_0006
  • In einigen Ausführungsbeispielen ist der Registrierungsalgorithmus als Erwartungsmaximierungs-(EM)-Algorithmus implementiert, der einen Erwartungsschritt (Schritt E) gefolgt von einem Maximierungsschritt (M-Schritt) beinhaltet. Der EM-Algorithmus stellt einen iterativen Prozess bereit, um durch die Einführung einer Reihe von latenten Korrespondenzvariablen, C = {cij} nach der Transformation T aufzulösen, die bestimmen, wie die Punktobjekte 601 in der zweiten Punktwolke zi E Z2 probabilistisch mit den J Subkomponenten des Modells assoziiert sind.
  • Im ersten Schritt des Registrierungsalgorithmus wird eine Hierarchie von Mischverteilungen identifiziert, die eine Referenzpunktwolke, Z_1, repräsentiert. In einigen Ausführungsbeispielen befindet sich eine Datenstruktur, die Daten für die Hierarchie der Mischverteilungen speichert, in einem Speicher und wird als Eingabe für den Registrierungsalgorithmus bereitgestellt. In weiteren Ausführungsbeispielen werden Daten für eine Referenzpunktwolke aus dem Speicher gelesen oder von einem oder mehreren aktiven Sensoren erfasst und die Hierarchie der Mischverteilungen basierend auf den Punktwolkendaten generiert. Diverse Algorithmen sind bekannt, um die Hierarchie der Mischverteilungen aus den Daten der Punktwolke zu generieren.
  • In einem Ausführungsbeispiel wird ein EM-Algorithmus zum Generieren des Wahrscheinlichkeitsmodells für die Punktwolke definiert, der die Punktobjekte für die Referenzpunktwolke mittels eines Clustering-Algorithmus in eine Anzahl von Cluster unterteilt. Jeder Cluster wird dann analysiert, um Parameter für eine Verteilungsfunktion zu finden, die eine Mischkomponente der Mischverteilung für eine bestimmte Granularitätsstufe bildet. Jeder dieser Cluster von Punktobjekten kann dann rekursiv in kleinere und kleinere Cluster unterteilt werden, um die Hierarchie der Mischverteilungen auf höheren Granularitätsstufen zu erstellen. Eine detaillierte Beschreibung eines solchen Algorithmus ist in der US Patentanmeldung 15/055,440 ( US 2017/0249401 A1 ), eingereicht am 26. Februar 2016, beschrieben, auf deren Inhalt hierin in ihrer Gesamtheit Bezug genommen wird.
  • Wieder bezugnehmend auf den Registrierungsalgorithmus, kann der Schritt E In einigen Ausführungsbeispielen die Bayes'sche Regel verwenden, um die Erwartungen der Korrespondenzen zu berechnen. Für einen bestimmten Punkt z_i kann die erwartete Übereinstimmung mit der Mischkomponente Θ_j wie folgt berechnet werden: E [ c i j ] = π j N ( Z i | Θ j ) k = 1 J π k N ( Z i | Θ k )
    Figure DE102019108733A1_0007
  • Wie oben gesehen, summieren sich die Erwartungen der Korrespondenzen, die mit einem bestimmten Punkt zi assoziiert sind, zu einem über alle J Mischkomponenten. Ein größeres J (d.h. mehr Mischkomponenten) ist besser, hat aber einen negativen Einfluss auf die Zeit zur Berechnung der Korrespondenzen, da die Zeit mit der Komplexität wie 0(n2) skaliert. Um also das Skalierungsproblem zu bekämpfen, das durch die Erhöhung von J verursacht wird, um die Daten besser anzupassen, besteht eine Lösung darin, eine Hierarchie von kleineren Wahrscheinlichkeitsmodellen zu verwenden, um die Punktwolkendaten auf verschiedenen Granularitätsstufen darzustellen.
  • 7 illustriert eine hierarchische Baumdatenstruktur 700, die ein Wahrscheinlichkeitsmodell einer Punktwolke 600 gemäß einigen Ausführungsbeispielen kodiert. Jeder Knoten in der hierarchischen Baumdatenstruktur 700 (dargestellt durch einen Kreis um einen Buchstaben) kodiert Parameter für eine Mischverteilung, die mindestens einen Teil der Punktwolke 600 beschreibt. Ein Stammknoten 710 kodiert eine Mischverteilung, die die Punktwolke 600 auf der untersten Granularitätsstufe repräsentiert. Jede Ebene der hierarchischen Baumdatenstruktur 700 repräsentiert eine Erhöhung der Granularität der Repräsentation. Mit zunehmender Granularität steigt auch die kumulative Anzahl der verschiedenen Verteilungsfunktionen, die zum Repräsentieren der Punktwolke 600 verwendet werden.
  • Jede Mischkomponente in der Mischverteilung für den Stammknoten 710 kann repräsentativ für einen Cluster von Punktobjekten 601 in der Punktwolke 600 sein. Der Unterknoten 720 des Stammknotens 710 kann eine zweite Mischverteilung kodieren, die sich von der im Stammknoten 710 kodierten Mischverteilung unterscheidet. Während die vom Stammknoten 710 kodierte Mischverteilung den gesamten Satz von Punktobjekten 601 in der Punktwolke 600 repräsentiert, repräsentiert die vom Stammknoten 720 kodierte Mischverteilung nur den Teil der Punktobjekte 601 in der Punktwolke 600, die mit einer bestimmten Mischkomponente in der vom Stammknoten 710 kodierten Mischverteilung assoziiert sind. Mit anderen Worten, eine einzelne Verteilungsfunktion, die als Mischkomponente in einer Ebene der hierarchischen Baumdatenstruktur 700 enthalten ist, kann in der nächsten Ebene der hierarchischen Baumdatenstruktur 700 in eine Mischverteilung mehrerer Mischkomponenten mit höherer Granularität unterteilt werden.
  • Wie in 7 dargestellt, ist die hierarchische Baumdatenstruktur 700 In einigen Ausführungsbeispielen ein Baum mit einem Verzweigungsfaktor von 8, d.h. jeder Knoten der hierarchischen Baumdatenstruktur 700 hat acht Unterknoten. Jeder Unterknoten entspricht einer der Mischkomponenten der vom übergeordneten Knoten kodierten Mischverteilung. So kann beispielsweise eine vom Stammknoten 710 kodierte Mischverteilung acht Gauß-Mischkomponenten beinhalten, wobei jede Mischkomponente eine Verteilungsfunktion mit einem Mittelwert µ und einer Kovarianzmatrix Σ umfasst. Jeder Unterknoten entspricht dann einer der Gauß-Mischkomponenten. Daher erhöht jede Ebene der hierarchischen Baumdatenstruktur 700 die Granularität der Repräsentation der Punktobjekte 601 um den Faktor acht.
  • In weiteren Ausführungsbeispielen kann die hierarchische Baumdatenstruktur 700 eine unterschiedliche Anzahl von Unterknoten pro Knoten aufweisen, z.B. 2, 4 oder 16 Unterknoten pro Knoten. Der gewählte Verzweigungsfaktor kann die Geschwindigkeit der Traversierung und die Anzahl der Berechnungen beeinflussen, die an jedem Knoten während des Traversiervorgangs durchgeführt werden müssen. Die Erhöhung des Verzweigungsfaktors kann auch zu Skalierungsproblemen führen, wie vorstehend für die nicht-hierarchische Wahrscheinlichkeitsdarstellung erläutert.
  • In einigen Ausführungsbeispielen ist jede von einem Knoten kodierte Mischverteilung eine gewichtete Kombination aus acht Gauß-Verteilungsfunktionen und einer gleichmäßigen Verteilungsfunktion. Die Datenstruktur zur Kodierung eines Knotens kann Felder für die relativen Gewichte πj für jede der Mischkomponenten sowie Parameter beinhalten, die jede der Mischkomponenten angeben, aus denen sich die Mischverteilung zusammensetzt. Die Parameter zur Spezifizierung einer bestimmten Mischkomponente können im Falle einer Gauß-Verteilungsfunktion die Werte für den Mittelwert µj (d.h. drei Werte für eine dreidimensionale Position im Raum) und die Kovarianzmatrix Σj (d.h. neun Einzelwerte für eine dreidimensionale Kovarianzmatrix) beinhalten. In einigen Ausführungsbeispielen können die Parameter auch Eigenwerte entsprechend den Eigenvektoren für die Kovarianzmatrix Σj beinhalten, so dass die Eigenwerte im Knoten nachgeschlagen werden können und nicht aus der Kovarianzmatrix gelöst werden müssen. In weiteren Ausführungsbeispielen können die Parameter für die Verteilungsfunktion Werte für eine Vielzahl von Momenten der Verteilungsfunktion beinhalten, wie beispielsweise die ersten drei oder vier Momente der Verteilungsfunktion, die als mittlerer Parameter (1. Moment), Varianzparameter (2. Moment), Schräglageparameter (3. Moment) und/oder Kurtoseparameter (4. Moment) bezeichnet werden.
  • Das Traversieren der hierarchischen Baumdatenstruktur 700 beinhaltet ein Bestimmen, welcher Knoten mit einem bestimmten Probenort oder Punkt assoziiert werden soll. Die Traversierung beginnt am Stammknoten 710, wo die Parameter für die Mischverteilung aus dem Knoten gelesen werden können. Ein mit jeder Mischkomponente assoziierter Korrespondenzwert wird für den Probenort berechnet, wie in Gleichung 3 vorstehend dargelegt. Die Korrespondenzwerte der Mischkomponenten werden verglichen und ein Unterknoten mit dem größten Korrespondenzwert ausgewählt. Die Traversierung wiederholt sich rekursiv für den Unterknoten, bis der aktuell ausgewählte Knoten ein Blattknoten ist (d.h. keine Unterknoten hat).
  • In einigen Ausführungsbeispielen, bei denen die von jedem Knoten kodierte Mischverteilung ein Gauß‘sches + gleichmäßiges Mischmodell (engl. „Gaussian + Uniform Mixture Model“) ist, sind die Mischkomponenten der Gauß-Verteilung mit Unterknoten assoziiert und die gleichmäßige Mischkomponente ist nicht mit einem Unterknoten assoziiert. Da die gleichmäßige Verteilungsfunktion als Auffangfunktion für Ausreißer im Datensatz verwendet wird, ist der Korrespondenzwert für die gleichmäßige Verteilungsfunktion nur dann höher als die Korrespondenzwerte für alle Gauß-Verteilungsfunktionen, wenn die Probenposition durch eine der Gauß-Verteilungsfunktionen nicht gut repräsentiert wird (d.h. wenn der Wahrscheinlichkeitswert für jede Gauß-Verteilungsfunktion unter einem mit der gleichmäßigen Verteilung, die konstant im Raum ist, assoziierten Schwellenwahrscheinlichkeitswert liegt). In solchen Fällen kann die rekursive Traversierung der hierarchischen Baumdatenstruktur 700 am aktuellen Knoten gestoppt werden, da der Probenort durch zusätzliche Mischverteilungen auf höheren Granularitätsstufen nicht mehr gut repräsentiert wird.
  • Obwohl die hierarchische Baumdatenstruktur 700 mit drei Ebenen dargestellt wird - der Stammebene 0, einer ersten Hierarchieebene 1 und einer zweiten Hierarchieebene 2 - kann die hierarchische Baumdatenstruktur 700 beliebig viele Hierarchieebenen mit mindestens zwei Ebenen (d.h. Ebene 0 und Ebene 1) beinhalten. In einigen Ausführungsbeispielen ist die hierarchische Baumdatenstruktur 700 ausgeglichen. Mit anderen Worten, jeder Knoten in einer bestimmten Ebene der hierarchischen Baumdatenstruktur 700 hat die gleiche Anzahl von Unterknoten und alle Blattknoten befinden sich auf der höchsten Granularitätsstufe. In weiteren Ausführungsbeispielen kann die hierarchische Baumdatenstruktur 700 unausgewogen sein. Mit anderen Worten, jeder Knoten kann entweder ein Blattknoten sein oder eine Anzahl von Unterknoten haben. Die Bestimmung, ob ein bestimmter Knoten mit einem oder mehreren Unterknoten verbunden ist, kann anhand eines heuristischen Wertes für die vom Knoten kodierte Mischverteilung bestimmt werden. In einem Ausführungsbeispiel wird ein Unterknoten angelegt, wenn eine bestimmte Mischkomponente der Mischverteilung einen heuristischen Wert aufweist, der über einem Schwellenwert liegt. Dadurch kann Speicherbedarf der hierarchischen Baumdatenstruktur 700 eingespart werden, indem die Anzahl der Granularitätsstufen für bestimmte Zweige des Baumes begrenzt wird. In solchen Fällen ist der Schwellenwert vordefiniert, wenn die hierarchische Baumdatenstruktur 700 aus der Punktwolke 600 generiert wird.
  • In weiteren Ausführungsbeispielen kann der Schwellenwert zum Zeitpunkt der Traversierung so festgelegt werden, dass er die Traversierung vorzeitig stoppt und eine Mischverteilung von einem bestimmten Knoten der hierarchischen Baumdatenstruktur 700 auswählt, auch wenn an diesem bestimmten Zweig weitere Unterknoten kodiert sind. Eine dynamische Änderung des Schwellenwerts für das vorzeitige Stoppen der Traversierung ermöglicht es, aus der Punktwolke 600 eine ausgeglichene hierarchische Baumdatenstruktur 700 zu generieren, und ermöglicht es verschiedenen Algorithmen, den Schwellenwert während der Traversierung einzustellen, um den Betrieb des Algorithmus an die Anforderungen einer bestimmten Anwendung anzupassen. So können beispielsweise einige Anwendungen eine geringere Genauigkeit der Ergebnisse erfordern als andere Anwendungen, so dass eine Anwendung das Verfahren mit unterschiedlichen adaptiven Schwellenwerten früher als eine andere Anwendung stoppen kann.
  • In einigen Ausführungsbeispielen kodiert jeder Knoten der hierarchischen Baumdatenstruktur 700 Parameter für eine bestimmte Mischkomponente einer Mischverteilung, die mit einem übergeordneten Knoten assoziiert ist. So kann beispielsweise jeder der acht Unterknoten für den Stammknoten 710 ein Gewicht und Parameter für eine Verteilungsfunktion kodieren, die eine der Mischkomponenten für eine mit dem Stammknoten 710 assoziierte Mischverteilung repräsentiert. In diesem Fall kodiert jeder Knoten weniger Informationen als in den oben beschriebenen Ausführungsbeispielen, und die hierarchische Baumdatenstruktur 700 weist typischerweise eine zusätzliche Granularitätsstufe auf, um die gleiche Menge an Informationen zu kodieren. In diesem Fall stellt der Stammknoten eine einzelne Mischkomponente für eine einzelne Verteilungsfunktion dar, die die Punktobjekte 601 der Punktwolke 600 repräsentiert. Die Traversierung der hierarchischen Baumdatenstruktur 700 erfolgt durch Lesen der Parameter von jedem der Unterknoten eines bestimmten Knotens, um die Korrespondenzwerte für jeden Unterknoten zu berechnen, und dann Auswählen eines bestimmten Unterknotens mit dem höchsten Korrespondenzwert.
  • Wieder bezugnehmend auf Schritt E des Registrierungsalgorithmus implementiert der Schritt E eine rekursive Suche, um die hierarchische Baumdatenstruktur 700 zu traversieren. Der Zweck der rekursiven Suche ist es, die Korrespondenzen für nur eine Teilmenge der Mischkomponenten zu berechnen, die in der hierarchischen Baumdatenstruktur 700 kodiert sind, und den Traversierungspfad basierend auf den Korrespondenzwerten für jede Mischkomponente auszuwählen. Somit kann das Traversieren bestimmter Zweige der hierarchischen Baumdatenstruktur 700 vollständig eliminiert und die Korrespondenzwerte auf Null gesetzt werden, wenn, für eine von einem bestimmten Knoten der hierarchischen Baumdatenstruktur 700 kodierte Mischverteilung, ein Korrespondenzwert für eine bestimmte Mischkomponente deutlich kleiner ist als der Korrespondenzwert einer anderen Mischkomponente.
  • In einigen Ausführungsbeispielen kann die rekursive Suche ein adaptives Skalenauswahlkriterium beinhalten, das einen heuristischen Wert für jede Mischkomponente der hierarchischen Baumdatenstruktur 700 mit einem adaptiven Schwellenwert vergleicht und die Traversierung stoppt, wenn der heuristische Wert unter dem adaptiven Schwellenwert liegt. Der heuristische Wert für jede Mischkomponente kann berechnet werden, wenn die hierarchische Baumdatenstruktur 700 über mehrere rekursive Suchiterationen (d.h. jeden Schritt E) generiert und wiederverwendet wird.
  • In einigen Ausführungsbeispielen basiert der heuristische Wert für eine bestimmte Mischkomponente auf einer Komplexitätsmessung, die aus den Eigenwerten der Kovarianzmatrix Σ für die jeweilige Mischkomponente berechnet wird. In einigen Ausführungsbeispielen kann der heuristische Wert gemäß der folgenden Gleichung basierend auf den Eigenwerten für die Kovarianzmatrix berechnet werden, wobei λ1 ≥ λ2 ≥ λ3 gilt: h = λ 3 λ 1 + λ 2 + λ 3
    Figure DE102019108733A1_0008
  • Das Traversieren der hierarchischen Baumdatenstruktur 700 ist ein rekursiver Prozess, der jeweils einen Knoten nach dem anderen durchläuft. Der rekursive Prozess nimmt ein Punktobjekt als Eingabe und verarbeitet einen Knoten basierend auf dem Punktobjekt. Der rekursive Prozess liest die im aktuellen Knoten kodierten Parameter, wählt einen Unterknoten aus, der dem Punktobjekt entspricht, falls dieser Unterknoten existiert, und vergleicht dann einen heuristischen Wert für den Unterknoten mit einem adaptiven Schwellenwert. Liegt der heuristische Wert über dem adaptiven Schwellenwert, so wird der rekursive Prozess für den Unterknoten wiederholt. Ist der aktuelle Knoten jedoch ein Blattknoten (d.h. hat keinen entsprechenden Unterknoten, der dem Punktobjekt entspricht) oder liegt der heuristische Wert unter dem adaptiven Schwellenwert, dann endet der rekursive Prozess und assoziiert das Punktobjekt mit dem aktuellen Knoten. In verschiedenen Anwendungen des Registrierungsalgorithmus wurde festgestellt, dass ein Wert von 0,01 für den adaptiven Schwellenwert den Registrierungsalgorithmus beschleunigt und akzeptable Ergebnisse im Vergleich zu Ergebnissen liefert, die ohne Verwendung des adaptiven selektiven Skalierungskriteriums erzielt wurden.
  • Es ist zu beachten, dass In einigen Ausführungsbeispielen die Berechnung des heuristischen Wertes und der adaptive Schwellenwert anders definiert werden können, so dass die Traversierung beendet wird, wenn der heuristische Wert über dem adaptiven Schwellenwert liegt und die Traversierung fortgesetzt wird, wenn der heuristische Wert unter dem adaptiven Schwellenwert liegt. Wenn der heuristische Wert gleich dem adaptiven Schwellenwert ist, kann die Entscheidung, ob die Traversierung beendet oder fortgesetzt werden soll, als entweder fortgesetzt oder beendet implementiert werden und ist lediglich eine Designvariante des Algorithmus von Schritt E.
  • In einigen Ausführungsbeispielen umfasst das Assoziieren des Punktes zi mit dem aktuellen Knoten ein Speichern der Parameter für die Mischverteilung für den aktuellen Knoten in einer Datenstruktur, die die Parameter mit dem Punkt zi assoziiert. Das Assoziieren des Punktes zi mit dem aktuellen Knoten kann auch ein Berechnen der Korrespondenzwerte für jede der Mischkomponenten der Mischverteilung für den aktuellen Knoten beinhalten. In weiteren Ausführungsbeispielen umfasst das Assoziieren des Punktes zi mit dem aktuellen Knoten ein Speichern der Parameter für eine bestimmte Mischkomponente der Mischverteilung, die dem Punkt zi entspricht, in einer Datenstruktur, die die Parameter mit dem Punkt zi assoziiert. In noch weiteren Ausführungsbeispielen umfasst das Assoziieren des Punktes zi mit dem aktuellen Knoten ein Speichern eines Index für den Knoten in einer Datenstruktur, die den Index mit dem Punkt zi assoziiert, wodurch eine Verarbeitungseinheit unter Verwenden des Index schnell auf die von dem Knoten kodierten Parameter zugreifen kann.
  • Das adaptive Skalierungskriterium ist hilfreich, um den Schritt E zu beschleunigen. Beispielsweise ist eine Geometrie, wie eine flache Wand, die sich über viele Meter erstreckt, gleichmäßiger als eine andere komplexe Geometrie, wie beispielsweise eine Reihe von Jalousien oder ein Baum. In solchen Fällen kann eine geringere Granularität ausreichen, um die weniger komplexe Geometrie zu beschreiben. Die hierarchische Baumdatenstruktur 700 kann derart generiert werden, dass sie ausgeglichen ist, und das adaptive Skalierungsauswahlkriterium kann später so festgelegt werden, dass die für eine bestimmte Anwendung ausreichende Granularität beim Traversieren und nicht beim Erstellen des Baums ausgewählt werden kann.
  • 8 illustriert eine rekursive Traversierung der hierarchischen Baumdatenstruktur 700 unter Verwenden eines adaptiven Skalierungskriteriums gemäß einigen Ausführungsbeispielen. Wie in 8 dargestellt, kann eine erste Traversierung der hierarchischen Baumdatenstruktur 700 für ein erstes Punktobjekt 802 am Knoten ‚A‘, dem Stammknoten, beginnen. Durch Verarbeiten des Stammknotens für das erste Punktobjekt 802 identifiziert der rekursive Prozess den Knoten ‚H‘ als den Unterknoten, der der Mischkomponente der Mischverteilung für den Knoten ‚A‘ mit dem höchsten Korrespondenzwert für das erste Punktobjekt 802 entspricht. Der rekursive Prozess vergleicht dann einen heuristischen Wert, der der Mischkomponente entspricht, die mit dem Knoten ‚H‘ assoziiert ist, mit einem adaptiven Schwellenwert. Der heuristische Wert ist größer als der adaptive Schwellenwert, so dass die erste Traversierung mit einem rekursiven Aufruf des Prozessknotens ‚H‘ fortgesetzt wird. Durch Verarbeiten des Knotens ‚H‘ für das erste Punktobjekt 802 identifiziert der rekursive Prozess den Knoten ‚L‘ als den Unterknoten, der der Mischkomponente der Mischverteilung für den Knoten ‚H‘ mit dem höchsten Korrespondenzwert für das erste Punktobjekt 802 entspricht, und vergleicht dann einen heuristischen Wert, der der Mischkomponente entspricht, die mit dem Knoten ‚L‘ assoziiert ist, mit dem adaptiven Schwellenwert. Auch hier ist der heuristische Wert größer als der adaptive Schwellenwert, so dass die erste Traversierung mit einem rekursiven Aufruf des Prozessknotens ‚L‘ fortgesetzt wird. Durch Verarbeiten des Knotens ‚L‘ für das erste Punktobjekt 802 identifiziert der rekursive Prozess, dass der Knoten ‚L‘ ein Blattknoten ist und assoziiert das erste Punktobjekt 802 mit dem Knoten ‚L‘. Mit anderen Worten, das Traversieren der hierarchischen Baumdatenstruktur 700 für das erste Punktobjekt 802 stoppt auf der zweiten Granularitätsstufe am Blattknoten 810.
  • Alternativ könnte der Knoten ‚L‘ Unterknoten haben (nicht explizit in 8 dargestellt), und nachdem der rekursive Prozess die Mischkomponente der Mischverteilung für den Knoten ‚L‘ mit dem höchsten Korrespondenzwert für das erste Punktobjekt 802 identifiziert hat, vergleicht der rekursive Prozess einen heuristischen Wert für die Mischkomponente mit dem adaptiven Schwellenwert und bestimmt, dass der heuristische Wert kleiner als der adaptive Schwellenwert ist. Daher endet die Traversierung am übergeordneten Knoten 810.
  • Umgekehrt kann eine zweite Traversierung der hierarchischen Baumdatenstruktur 700 für ein zweites Punktobjekt 804 am Knoten ‚A‘, dem Stammknoten, beginnen. Durch Verarbeiten des Stammknotens für das zweite Punktobjekt 804 identifiziert der rekursive Prozess den Knoten ‚C‘ als den Unterknoten, der der Mischkomponente der Mischverteilung für den Knoten ‚A‘ entspricht, der die höchste Wahrscheinlichkeit zum Generieren des zweiten Punktobjekts 804 aufweist. Der rekursive Prozess vergleicht dann einen heuristischen Wert, der der Mischkomponente entspricht, die mit dem Knoten ‚C‘ assoziiert ist, mit einem adaptiven Schwellenwert. Der heuristische Wert ist größer als der adaptive Schwellenwert, so dass die zweite Traversierung mit einem rekursiven Aufruf des Prozessknotens ‚C‘ fortgesetzt wird. Durch Verarbeiten des Knotens ‚C‘ für das zweite Punktobjekt 804 identifiziert der rekursive Prozess einen Unterknoten (nicht explizit in 8 dargestellt), der der Mischkomponente der Mischverteilung für den Knoten ‚C‘ entspricht und die höchste Wahrscheinlichkeit zum Generieren des zweiten Punktobjekts 804 aufweist. Der rekursive Prozess vergleicht dann einen heuristischen Wert, der der Mischkomponente entspricht, die mit diesem Unterknoten assoziiert ist, mit einem adaptiven Schwellenwert. Der heuristische Wert ist kleiner als der adaptive Schwellenwert, so dass die zweite Traversierung am übergeordneten Knoten 820 endet und das zweite Punktobjekt 804 mit dem Knoten ‚C‘ assoziiert wird.
  • Es ist zu beachten, dass die erste Traversierung der hierarchischen Baumdatenstruktur 700 für das erste Punktobjekt 802 auf der zweiten Granularitätsstufe am Knoten ‚L‘ gestoppt wurde, während die zweite Traversierung der hierarchischen Baumdatenstruktur 700 für das zweite Punktobjekt 804 auf der ersten Granularitätsstufe am Knoten ‚C‘ gestoppt wurde, anstatt auf der gleichen Granularitätsstufe wie die erste Traversierung zu stoppen. Mit anderen Worten, der Schritt E kann die Assoziation von Punktobjekten in der registrierten Punktwolke, welche mit unterschiedlichen Mischverteilungen auf verschiedenen Granularitätsstufen der hierarchischen Baumdatenstruktur 700 registriert werden, anpassen. Grundsätzlich ermöglicht dies lose Assoziationen einiger Punkte zu Punktclustern in der Referenzpunktewolke, die durch größere Mischverteilungen repräsentiert werden, und enge Assoziationen anderer Punkte zu Punktclustern in der Referenzpunktewolke, die durch kleinere Mischverteilungen repräsentiert werden. Die Begriffe „größer“ und „kleiner“ beziehen sich in diesem Zusammenhang typischerweise auf die Varianz(en), die mit den Mischkomponenten in den Mischverteilungen assoziiert sind.
  • Der Schritt E wird für einen Satz von Punktobjekten 601 in der Punktwolke 600 durchgeführt, die auf die Referenzpunktwolke registriert werden, die durch die hierarchische Baumdatenstruktur 700 der Mischverteilungen repräsentiert wird. In einigen Ausführungsbeispielen ist die Ausgabe des Schrittes E eine Datenstruktur (z.B. Datei, Tabelle, etc.), die jedes Punktobjekt 601 mit einem entsprechenden Knoten der hierarchischen Baumdatenstruktur 700 assoziiert. In einigen Ausführungsbeispielen beinhaltet der Satz der Punktobjekte 601 alle derartigen Punktobjekte 601 in der Punktwolke 600. In anderen Ausführungsbeispielen beinhaltet der Satz der Punktobjekte 601 nur eine Teilmenge der Punktobjekte 601 in der Punktwolke 600. Mit anderen Worten, die Teilmenge der Punktobjekte 601 kann eine statistische Stichprobe der Punktobjekte 601 in der Punktwolke 600 repräsentieren. Wenn eine Punktwolke 600 beispielsweise Hunderte von Millionen oder Milliarden von Punktobjekten 601 beinhaltet, kann die Registrierung mit einigen Prozent der Punktobjekte 601 in der Punktwolke 600 und nicht mit dem vollen Satz von Punktobjekten 600 durchgeführt werden.
  • In einigen Ausführungsbeispielen kann der adaptive Schwellenwert bei jedem iterativen Zyklus der Schritte E und M dynamisch geändert werden. Beispielsweise kann der adaptive Schwellenwert während einer ersten Iteration ein erster Wert sein, der das Durchlaufen der hierarchischen Baumdatenstruktur bei einer niedrigeren Granularitätsstufe stoppt, als während einer zweiten Iteration, wobei der adaptive Schwellenwert ein zweiter Wert sein kann, der niedriger als der erste Wert ist, der das Durchlaufen der hierarchischen Baumdatenstruktur 700 bei einer höheren Granularitätsstufe stoppt. Folglich können frühe iterative Zyklen des EM-Algorithmus die Daten grob registrieren, gefolgt von einer feinen Registrierung in späteren iterativen Zyklen, bei denen die Punktwolke bereits grob auf die Referenzpunktewolke registriert ist.
  • Darüber hinaus kann In einigen Ausführungsbeispielen der adaptive Schwellenwert auf Null gesetzt werden, so dass die Traversierung immer bis zum Erreichen eines Blattknotens auf der höchsten Granularitätsstufe fortgesetzt wird. Somit kann das adaptive Skalierungsauswahlkriterium durch einen Benutzer, der den Registrierungsalgorithmus ausführt, einfach durch Setzen des adaptiven Schwellenwerts auf Null abgeschaltet werden.
  • Nachdem der Schritt E abgeschlossen ist und die Verknüpfungen zwischen den Punktobjekten 601 und den Knoten der hierarchischen Baumdatenstruktur 700 für den aktuellen iterativen Zyklus bestimmt sind, führt der Registrierungsalgorithmus den Schritt M aus, um eine geschätzte Transformation für die Punktwolke 600 zu bestimmen. Bei N Punkten zi und J Mischkomponenten Θj, die zur Repräsentation der Referenzpunktewolke verwendet werden, wird ein Satz von Korrespondenzen C = {cij} von Punkt-zu-Mischung-Komponenten so eingeführt, dass die volle Verbindungswahrscheinlichkeit wird zu: In  p ( T ( Z ) , C | Θ | ) = i = 1 N j = 1 J c i j { In  π j + In  N ( T ( z i ) | Θ j ) }
    Figure DE102019108733A1_0009
  • Während des Schrittes E wird der Satz von Korrespondenzen von Punkt-zu-Mischung-Komponenten basierend auf der Traversierung der hierarchischen Baumdatenstruktur 700 berechnet. Dann, während des Schrittes M, wird die erwartete Wahrscheinlichkeit des Datenlogs in Bezug auf die Transformation T maximiert, wobei der Satz von Korrespondenzen der Punkt-zu-Mischung-Komponenten festgelegt bleibt: T ^ = arg max  E p ( C | T ( Z ) , Θ ) [ In  p ( T ( Z ) | C | Θ ) ]   ( Gl .6 )    = arg max  i j γ i j { In  π j +  In  N ( T ( z i ) , C | Θ ) } ( Gl .7 )    = arg min  i j γ i j ( T ( z i ) μ j ) T j 1 ( T ( z i ) μ j ) ( Gl .8 )
    Figure DE102019108733A1_0010
  • Genauer gesagt, wie in Gleichung 8 dargestellt, ist die wahrscheinlichste Transformation T zwischen der Punktwolke und der Referenzpunktewolke die Transformation, die die gewichtete Summe der quadrierten Mahalanobis-Abstände zwischen Punkten der Punktwolke und einzelnen Mischkomponenten des probabilistischen Modells der Referenzpunktewolke minimiert. Die Summierung in Gleichung 8 kann hierin als das Kriterium der Maximum Likelihood Schätzung (MLE) bezeichnet werden.
  • In einem Ausführungsbeispiel basiert das Kriterium der Maximum Likelihood Schätzung (MLE) von Gleichung 8 auf dem Mahalanobis-Abstand oder insbesondere dem verallgemeinerten quadratischen Wert der Entfernung zwischen einem Punkt, der durch die Transformation T transformiert wird, und einem Mittelwert einer Mischkomponente, normiert durch die Kovarianzmatrix. In Gleichung 8 beziehen sich die Gewichte γij auf die Assoziationen zwischen jedem Punkt, zi , und der entsprechenden Mischkomponente, die mit dem Punkt assoziiert ist. In einem Ausführungsbeispiel gibt es für einen bestimmten Punkt zi genau ein Gewicht γij, das mit einer einzelnen Mischkomponente Θj assoziiert ist, das auf eins gesetzt ist, und alle anderen Gewichte für diesen Punkt werden auf Null gesetzt. Die jeweilige Mischkomponente mit einem Gewicht von eins ist die Mischkomponente mit dem höchsten Korrespondenzwert für den Punkt zi in der mit diesem Punkt assoziierten Mischverteilung während des oben beschriebenen Schrittes E.
  • In anderen Ausführungsbeispielen kann jeder Punkt mit mehreren Gewichten ungleich Null assoziiert werden. So können beispielsweise alle Gewichte für Korrespondenzwerte unterhalb eines Schwellenwertes auf Null gesetzt und eine oder mehrere Gewichte für Korrespondenzwerte oberhalb des Schwellenwertes so normiert werden, dass die Gewichte ungleich Null für einen Punkt sich zu Eins summieren. Dies ermöglicht ein sanftes Traversieren der hierarchischen Baumdatenstruktur 700, wenn die Wahl zwischen zwei oder mehreren Mischkomponenten auf Basis von Korrespondenzwerten nicht eindeutig ist. Wenn beispielsweise zwei Korrespondenzwerte anzeigen, dass der Punkt aus einer Mischkomponente fast genauso wahrscheinlich generiert wird wie aus einer anderen Mischkomponente, dann können die MLE-Kriterien basierend auf dem Mahalanobis-Abstand des Punktes zu beiden Mischkomponenten berechnet werden.
  • Gleichung 8 hat keine Lösung in geschlossener Form und ist daher schwer zu lösen, ohne die Kovarianzen zu beschränken (z.B. Beschränken der Mischkomponenten auf nur isotrope Kovarianzen) oder Näherungen für das Kriterium der Maximum Likelihood Schätzung (MLE) zu verwenden, die Informationen entfernen oder verschlechtern. Beschränkt man die Transformation, T, auf den Satz aller starren Transformationen, kann die Doppelsumme über die Punkte Z und die Mischkomponenten Θj auf eine einzige Summe über die Mischkomponenten Θj reduziert werden: T ^ = arg min  j π j * ( T ( μ j * ) μ j ) T j 1 ( T ( μ j * ) μ j ) ,
    Figure DE102019108733A1_0011
    wobei gilt: π j * = i γ i j N
    Figure DE102019108733A1_0012
    μ j * = i γ i j z i i γ i j
    Figure DE102019108733A1_0013
  • Gleichung 9 hat keine Lösung in geschlossener Form. Die Neuinterpretation der Mahalanobis-Abstandsberechnung kann jedoch zu einer hochgenauen Technik zur Bestimmung der geschätzten Transformation T führen, die die MLE-Kriterien minimiert. Genauer gesagt, kann der Term des inneren Mahalanobis-Abstands umgeschrieben werden, indem jede Kovarianzmatrix mittels Hauptkomponentenanalyse (PCA) in ihre zugehörigen Eigenwerte und Eigenvektoren zerlegt und jeder Term des Mahalanobis-Abstands als gewichtete Summe von drei separaten Punkt-zu-Ebene-Abständen interpretiert wird, wobei die Gewichte umgekehrt proportional zu den Eigenwerten sind, die mit jeder durch einen entsprechenden Eigenvektor definierten Ebene assoziiert sind. Die folgende Äquivalenz kann auf der Grundlage dieser Interpretation geschrieben werden: T ( μ j * ) μ j Σ j 2 = l = 1 3 1 λ l ( n l T ( T ( μ j * ) μ j ) ) 2
    Figure DE102019108733A1_0014
  • Das Substituieren von Gleichung 12 in Gleichung 9 ergibt die folgende Gleichung, die mit einer beliebigen Anzahl von Minimierungstechniken gelöst werden kann, einschließlich, in mindestens einigen Ausführungsbeispielen, einer linearen Least-Squares-Technik mit Annahmen für kleine Winkel: T ^ = a r g   m i n T j = 1 J l = 1 3 π j * λ j l ( n j l T ( T ( μ j * ) ) μ j ) 2 ,
    Figure DE102019108733A1_0015
    wobei njl, l = 1 ... 3 die drei Eigenvektoren für die Kovarianzmatrix der j-ten Mischkomponente repräsentieren, und γjl die entsprechenden Eigenwerte sind.
  • 9 illustriert die Berechnungen des Schrittes M für eine einzelne Mischkomponente gemäß einigen Ausführungsbeispielen. Für jede Mischkomponente in der hierarchischen Baumdatenstruktur 700, Berechnen eines ersten Parameters π j *
    Figure DE102019108733A1_0016
    für die Mischkomponente 910 gemäß Gleichung 10 und eines zweiten Parameters μ j *
    Figure DE102019108733A1_0017
    für die Mischkomponente 910 gemäß Gleichung 11 . Der erste Parameter ist das mit der Mischkomponente assoziierte durchschnittliche Gewicht für die N Punkte in der zu registrierenden Punktwolke. Der zweite Parameter ist eine mittlere Position für die N Punkte in der Punktwolke in Bezug auf die Gewichte, so dass die mittlere Position basierend auf der mit jedem Punkt assoziierten Wahrscheinlichkeit in Richtung der Mischkomponente verzerrt ist. Wie in 9 dargestellt, können die drei Punktobjekte 902, 904 und 906 zur Berechnung des ersten und zweiten Parameters beitragen. Der erste und zweite Parameter basieren auf den Korrespondenzwerten (z.B. γij), die während des Schrittes E ermittelt wurden.
  • Die innere Summe aus Gleichung 13 kann dann basierend auf den Eigenvektoren 922, 924 (nur zweidimensional dargestellt) und dem Mittelwert µj der Mischkomponente 912 für die Mischkomponente berechnet werden. Mit anderen Worten, der Schritt M lokalisiert zunächst eine Position relativ zum Mittelwert der Mischkomponente 912, basierend auf den Korrespondenzwerten für die N Punkte in der Punktwolke und der Position dieser Punkte, und dann berechnet der Schritt M einen quadrierten Mahalanobis-Abstand für diese Position entlang der drei Hauptachsen der Kovarianz basierend auf einem Variieren der Transformation T.
  • 10 illustriert ein Flussdiagramm eines Verfahrens 1000 zum Registrieren von Punktwolkendaten unter Verwenden eines EM-Algorithmus gemäß einigen Ausführungsbeispielen. Obwohl das Verfahren 1000 im Zusammenhang mit einer Verarbeitungseinheit beschrieben wird, kann das Verfahren 1000 auch durch ein Programm, eine benutzerdefinierte Schaltung oder durch eine Kombination aus einer benutzerdefinierten Schaltung und einem Programm durchgeführt werden. So kann beispielsweise das Verfahren 1000 von einer GPU (Grafikprozessoreinheit), einer CPU (Zentraleinheit) oder einem beliebigen Prozessor ausgeführt werden, der mindestens einen Teil des EM-Algorithmus implementieren kann. Darüber hinaus werden Fachleute verstehen, dass jedes System, das die Methode 1000 durchführt, im Umfang und im Einklang mit den Ausführungsbeispielen der vorliegenden Offenbarung steht.
  • In Schritt 1002 wird eine hierarchische Baumdatenstruktur erhalten, die erste Punktwolkendaten repräsentiert. Die ersten Punktwolkendaten sind eine Referenzpunktwolke. In Schritt 1004 werden zweite Punktwolkendaten empfangen. Die zweiten Punktwolkendaten sind eine Punktwolke, die auf die Referenzpunktwolke registriert werden soll.
  • In Schritt 1006 ist eine Verarbeitungseinheit konfiguriert, um für jedes Punktobjekt in den zweiten Punktwolkendaten Korrespondenzwerte für mindestens eine in der hierarchischen Baumdatenstruktur enthaltene Mischkomponente zu berechnen. Schritt 1006 wird als Teil des Schrittes E im EM-Algorithmus ausgeführt. Die Korrespondenzwerte können im Rahmen eines Traversierverfahrens berechnet werden, bei dem die Korrespondenzwerte für alle Mischkomponenten zunächst auf Null gesetzt werden. Da das Traversierverfahren für jedes Punktobjekt in den zweiten Punktwolkendaten ausgeführt wird, wird mindestens ein Teil der Korrespondenzwerte durch Werte ungleich Null ersetzt. So kann beispielsweise die Verarbeitungseinheit während der Verarbeitung eines bestimmten Knotens in der hierarchischen Baumdatenstruktur gemäß Gleichung 3 Korrespondenzwerte für jede der mit dem jeweiligen Knoten assoziierten Mischkomponenten berechnen. In einigen Ausführungsbeispielen können die Korrespondenzwerte normiert werden, z.B. durch Anwenden einer Soft-Max-Funktion auf die Korrespondenzwerte. Die Soft-Max-Funktion verzerrt hohe Korrespondenzwerte, so dass sie höhere Gewichte haben, und niedrige Korrespondenzwerte, so dass sie niedrigere Gewichte haben. In einigen Ausführungsbeispielen gibt es genau einen Korrespondenzwert ungleich Null für eine entsprechende eine Mischkomponente in jedem einzelnen Knoten, wobei der mit der Mischkomponente assoziierte Korrespondenzwert ungleich Null den maximalen Korrespondenzwert aufweist, wie er nach Gleichung 3 berechnet wurde. Es ist zu beachten, dass die Formel zur Berechnung der Korrespondenzwerte variieren kann und verschiedene Formeln verwendet werden können, um die Stärke einer Assoziation zwischen einem Punkt oder transformierten Punkt und einer Mischkomponente zu bestimmen.
  • In Schritt 1008 wird eine Verarbeitungseinheit konfiguriert, um für jede in der hierarchischen Baumdatenstruktur enthaltene Mischkomponente Parameter basierend auf den Korrespondenzwerten und dem Satz von Punktobjekten in den zweiten Punktwolkendaten zu berechnen. In einigen Ausführungsbeispielen berechnet die Verarbeitungseinheit einen ersten Parameter π j *
    Figure DE102019108733A1_0018
    für jede Mischkomponente gemäß Gleichung 10 und einen zweiten Parameter μ j *
    Figure DE102019108733A1_0019
    für jede Mischkomponente gemäß Gleichung 11.
  • In Schritt 1010 wird eine Verarbeitungseinheit konfiguriert, um eine Transformation zu identifizieren, indem ein MLE-Kriterium unter Verwenden der Parameter minimiert wird. In einigen Ausführungsbeispielen sind die MLE-Kriterien durch die Berechnung von Gleichung 13 gegeben, die eine Summe über die in der hierarchischen Baumdatenstruktur enthaltenen J Mischkomponenten ist. In einigen Ausführungsbeispielen kann die Minimierung mit einer gewichteten Least-Squares-Technik durchgeführt werden, die auf Annahmen kleiner Winkel basiert. In anderen Ausführungsbeispielen können andere Minimierungstechniken zur Identifizierung der Transformation die gewichtete Least-Squares-Technik ersetzen.
  • Die Schritte 1008 und 1010 umfassen den Schritt M des EM-Algorithmus. Die Schritte 1006, 1008 und 1010, nacheinander ausgeführt, umfassen einen iterativen Zyklus des EM-Algorithmus. Nach Abschluss jedes iterativen Zyklus des EM-Algorithmus können die Schritte 1006, 1008 und 1010 wiederholt werden, wobei die im vorherigen Schritt 1010 identifizierte Transformation verwendet wird, um die in den zweiten Punktwolkendaten enthaltenen Punktobjekte vor der Berechnung der neuen Korrespondenzwerte in Schritt 1006 zu transformieren.
  • Obwohl vorstehend diverse Ausführungsbeispiele beschrieben wurden, ist zu verstehen, dass diese nur als Beispiel dienen und nicht als Einschränkung zu verstehen sind. Daher sollte die Breite und der Umfang eines bevorzugten Ausführungsbeispiels nicht durch eines der oben beschriebenen exemplarischen Ausführungsbeispiele eingeschränkt werden, sondern nur nach Maßgabe der folgenden Ansprüche und ihrer Entsprechungen bestimmt werden.
  • 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 Patentliteratur
    • US 15055440 [0109]
    • US 2017/0249401 A1 [0109]

Claims (20)

  1. Computerimplementiertes Verfahren zur Registrierung von Punktwolkendaten, umfassend: Erhalten einer hierarchischen Baumdatenstruktur, die erste Punktwolkendaten als eine Hierarchie von Mischverteilungen repräsentiert; Empfangen von zweiten Punktwolkendaten; und Registrieren der zweiten Punktwolkendaten auf die ersten Punktwolkendaten unter Verwenden der hierarchischen Baumdatenstruktur, um eine geschätzte Transformation zu identifizieren, wobei das Registrieren ein Ausführen eines Erwartungsmaximierungsalgorithmus auf einer Parallelverarbeitungseinheit umfasst, umfassend: einen Erwartungsschritt, E, der konfiguriert ist, um eine rekursive Suche der hierarchischen Baumdatenstruktur zu implementieren, um jeden Punkt in den zweiten Punktwolkendaten mit einem Knoten der hierarchischen Baumdatenstruktur zu assoziieren, und einen Maximierungsschritt, M, der konfiguriert ist, um die geschätzte Transformation basierend auf der Assoziation der Punkte in den zweiten Punktwolkendaten mit entsprechenden Knoten der hierarchischen Baumdatenstruktur zu bestimmen.
  2. Computerimplementiertes Verfahren nach Anspruch 1, weiter umfassend ein iteratives Alternieren zwischen Schritt E und Schritt M über eine Anzahl von Zyklen, um zu einer optimalen Transformation zu konvergieren.
  3. Computerimplementiertes Verfahren nach einem der vorhergehenden Ansprüche, wobei der Schritt E während der rekursiven Suche in der hierarchischen Baumdatenstruktur an jedem Knoten Folgendes umfasst: Vergleichen eines heuristischen Wertes für jede Mischkomponente, die in der Mischverteilung für den Knoten enthalten ist, mit einem adaptiven Schwellenwert, um zu bestimmen, ob die rekursive Suche nach einem bestimmten Unterknoten des mit der Mischkomponente assoziierten Knotens beendet werden soll.
  4. Computerimplementiertes Verfahren nach Anspruch 3, wobei der heuristische Wert auf Eigenwerten basiert, die mit einer Kovarianzmatrix assoziiert sind, die für eine bestimmte Mischkomponente , die in der Mischverteilung des Knotens enthalten ist, identifiziert wurde.
  5. Computerimplementiertes Verfahren nach einem der vorhergehenden Ansprüche, wobei der Schritt M ein Auflösen nach einem Kriterium einer Maximum-Likelihood-Schätzung, MLE, unter Verwenden einer gewichteten Least-Squares-Technik beinhaltet.
  6. Computerimplementiertes Verfahren nach einem der vorhergehenden Ansprüche, weiter umfassend: Empfangen der ersten Punktwolkendaten; und Generieren der hierarchischen Baumdatenstruktur.
  7. Computerimplementiertes Verfahren nach Anspruch 6, wobei das Generieren der hierarchischen Baumdatenstruktur ein Iterieren durch einen zweiten EM-Algorithmus zum Generieren der hierarchischen Baumdatenstruktur umfasst.
  8. Computerimplementiertes Verfahren nach Anspruch 6 oder 7, wobei jeder Knoten der hierarchischen Baumdatenstruktur mindestens einen Teil der ersten Punktwolkendaten unter Verwenden einer Mischverteilung repräsentiert, die eine Anzahl von Gauß-Verteilungen und eine gleichmäßige Verteilung beinhaltet.
  9. Computerimplementiertes Verfahren nach einem der vorhergehenden Ansprüche, wobei der Schritt E für jedes Punktobjekt in den zweiten Punktwolkendaten umfasst: für jede Mischkomponente, die mit dem mit dem Punktobjekt assoziierten Knoten assoziiert ist, Berechnen eines Korrespondenzwertes für die Mischkomponente gemäß der folgenden Gleichung: E [ c i j ] = π j N ( Z i | Θ j ) k = 1 J π k N ( Z i | Θ k ) .
    Figure DE102019108733A1_0020
  10. Computerimplementiertes Verfahren nach einem der vorhergehenden Ansprüche, wobei der Schritt M für jede in der hierarchischen Baumdatenstruktur enthaltene Mischkomponente umfasst: Berechnen eines ersten Parameters für die Mischkomponente gemäß der folgenden Gleichung: π j * = Σ i γ i j N ;
    Figure DE102019108733A1_0021
    und Berechnen eines zweiten Parameters für die Mischkomponente gemäß der folgenden Gleichung: μ j * = Σ l γ i j z l Σ i γ i j .
    Figure DE102019108733A1_0022
  11. Computerimplementiertes Verfahren nach Anspruch 10, wobei der Schritt M weiter umfasst: Identifizieren einer Transformation durch Minimieren eines Maximum-Likelihood-Schätzungs-(MLE)-Kriteriums unter Verwenden einer gewichteten Least-Squares-Technik, wobei das MLE-Kriterium eine Summe über J Mischkomponenten umfasst, die in der hierarchischen Baumdatenstruktur gemäß der folgenden Gleichung enthalten sind: T ^ = a r g   m i n T j = 1 J l = 1 3 π j * λ j l ( n j l T ( T ( μ j * ) μ j ) ) 2 .
    Figure DE102019108733A1_0023
  12. System zum Durchführen einer Registrierung von Punktwolkendaten, wobei das System umfasst: einen Speicher, der zum Speichern konfiguriert ist von: einer hierarchischen Baumdatenstruktur, die erste Punktwolkendaten als Hierarchie von Mischverteilungen repräsentiert, und eine Datenstruktur, die zweite Punktwolkendaten beinhaltet; und mindestens eine Verarbeitungseinheit, die konfiguriert ist, um einen Erwartungsmaximierungs (EM-) -Algorithmus auszuführen, um die zweiten Punktwolkendaten auf die ersten Punktwolkendaten unter Verwenden der hierarchischen Baumdatenstruktur zu registrieren, wobei der EM-Algorithmus beinhaltet: einen Erwartungsschritt, E, der konfiguriert ist, um eine rekursive Suche der hierarchischen Baumdatenstruktur zu implementieren, um jeden Punkt in den zweiten Punktwolkendaten mit einem Knoten der hierarchischen Baumdatenstruktur zu assoziieren, und einen Maximierungsschritt M, der konfiguriert ist, um die geschätzte Transformation basierend auf der Assoziation der Punkte in den zweiten Punktwolkendaten zu entsprechenden Knoten der hierarchischen Baumdatenstruktur zu bestimmen.
  13. System nach Anspruch 12, wobei der Schritt E an jedem Knoten während der rekursiven Suche in der hierarchischen Baumdatenstruktur Folgendes beinhaltet: Vergleichen eines heuristischen Wertes für jede Mischkomponente, die in der Mischverteilung für den Knoten enthalten ist, mit einem adaptiven Schwellenwert, um zu bestimmen, ob die rekursive Suche nach einem bestimmten Unterknoten des mit der Mischkomponente assoziierten Knotens beendet werden soll.
  14. System nach Anspruch 12 oder 13, wobei der Schritt M ein Auflösen nach einem Kriterium einer Maximum-Likelihood-Schätzung, MLE, unter Verwenden einer gewichteten Least-Squares-Technik beinhaltet.
  15. System nach einem der Ansprüche 12 bis 14, wobei jeder Knoten der hierarchischen Baumdatenstruktur mindestens einen Teil der ersten Punktwolkendaten unter Verwenden einer Mischverteilung repräsentiert, die eine Anzahl von Gauß-Verteilungen beinhaltet.
  16. System nach einem der Ansprüche 12 bis 15, weiter umfassend einen oder mehrere aktive Sensoren, die zum Erfassen der zweiten Punktwolkendaten konfiguriert sind.
  17. System nach einem der Ansprüche 12 bis 16, worin die mindestens eine Verarbeitungseinheit Folgendes beinhaltet: eine erste parallele Verarbeitungseinheit, die konfiguriert ist, um den Schritt E des EM-Algorithmus zu implementieren; und eine zweite parallele Verarbeitungseinheit, die mit der ersten parallelen Verarbeitungseinheit über eine Hochgeschwindigkeitsverbindung verbunden und konfiguriert ist, um den Schritt M des EM-Algorithmus zu implementieren.
  18. Nichtflüchtiges, computerlesbare Medien, die Rechenanweisungen speichern, die, wenn sie von einem oder mehreren Prozessoren ausgeführt werden, bewirken, dass der eine oder die mehreren Prozessoren die Schritte eines Verfahrens gemäß einem der Ansprüche 1 bis 11 ausführt bzw. ausführen.
  19. Computerimplementiertes Verfahren zum Verwenden einer hierarchischen Baumdatenstruktur, die erste Punktwolkendaten als eine Hierarchie von Mischverteilungen repräsentiert, wobei das Verfahren umfasst: Identifizieren einer geschätzten Transformation durch Registrieren von zweiten Punktwolkendaten auf die ersten Punktwolkendaten unter Verwenden der hierarchischen Baumdatenstruktur; wobei das Registrieren ein Ausführen eines Erwartungsmaximierungsalgorithmus umfasst, der Folgendes beinhaltet, einen Erwartungsschritt, E, der konfiguriert ist, um eine rekursive Suche der hierarchischen Baumdatenstruktur zu implementieren, um jeden von einer Vielzahl von Punkten in den zweiten Punktwolkendaten mit einem entsprechenden Knoten der hierarchischen Baumdatenstruktur zu assoziieren, und einen Maximierungsschritt, M, der konfiguriert ist, um die geschätzte Transformation basierend auf der Assoziation der Punkte in den zweiten Punktwolkendaten zu entsprechenden Knoten der hierarchischen Baumdatenstruktur zu bestimmen; und iteratives Alternieren zwischen Schritt E und Schritt M über eine Anzahl von Zyklen, um zu einer optimal geschätzten Transformation zu konvergieren.
  20. Computerimplementiertes Verfahren nach Anspruch 19, wobei der Erwartungsmaximierungsalgorithmus auf einer Parallelverarbeitungseinheit ausgeführt wird.
DE102019108733.3A 2018-04-11 2019-04-03 Schnelle mehrskalige Punktwolkenregistrierung mit einer hierarchischen Gauß-Mischung Pending DE102019108733A1 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US201862656286P 2018-04-11 2018-04-11
US62/656,286 2018-04-11
US16/351,312 2019-03-12
US16/351,312 US10826786B2 (en) 2018-04-11 2019-03-12 Fast multi-scale point cloud registration with a hierarchical gaussian mixture

Publications (1)

Publication Number Publication Date
DE102019108733A1 true DE102019108733A1 (de) 2019-10-17

Family

ID=68052971

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102019108733.3A Pending DE102019108733A1 (de) 2018-04-11 2019-04-03 Schnelle mehrskalige Punktwolkenregistrierung mit einer hierarchischen Gauß-Mischung

Country Status (1)

Country Link
DE (1) DE102019108733A1 (de)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111739096A (zh) * 2020-06-24 2020-10-02 深圳阿米嘎嘎科技有限公司 深度传感器移动时自定位方法及系统
CN112099037A (zh) * 2020-09-17 2020-12-18 上海波汇科技有限公司 一种基于fmcw激光雷达高点云获取量的目标检测方法及装置
CN112508767A (zh) * 2020-12-14 2021-03-16 北京超星未来科技有限公司 一种基于gpu的gmm点云配准算法
CN113192114A (zh) * 2021-07-01 2021-07-30 四川大学 基于重叠特征与局部距离约束的叶片多视场点云配准方法
CN113628256A (zh) * 2021-08-20 2021-11-09 北京京东乾石科技有限公司 一种数据处理方法和装置

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170249401A1 (en) 2016-02-26 2017-08-31 Nvidia Corporation Modeling point cloud data using hierarchies of gaussian mixture models

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170249401A1 (en) 2016-02-26 2017-08-31 Nvidia Corporation Modeling point cloud data using hierarchies of gaussian mixture models

Cited By (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111739096A (zh) * 2020-06-24 2020-10-02 深圳阿米嘎嘎科技有限公司 深度传感器移动时自定位方法及系统
CN112099037A (zh) * 2020-09-17 2020-12-18 上海波汇科技有限公司 一种基于fmcw激光雷达高点云获取量的目标检测方法及装置
CN112099037B (zh) * 2020-09-17 2023-11-10 上海波汇科技有限公司 一种基于fmcw激光雷达高点云获取量的目标检测方法及装置
CN112508767A (zh) * 2020-12-14 2021-03-16 北京超星未来科技有限公司 一种基于gpu的gmm点云配准算法
CN112508767B (zh) * 2020-12-14 2023-10-13 北京超星未来科技有限公司 一种基于gpu的gmm点云配准方法
CN113192114A (zh) * 2021-07-01 2021-07-30 四川大学 基于重叠特征与局部距离约束的叶片多视场点云配准方法
CN113192114B (zh) * 2021-07-01 2021-09-03 四川大学 基于重叠特征与局部距离约束的叶片多视场点云配准方法
CN113628256A (zh) * 2021-08-20 2021-11-09 北京京东乾石科技有限公司 一种数据处理方法和装置
CN113628256B (zh) * 2021-08-20 2024-04-16 北京京东乾石科技有限公司 一种数据处理方法和装置

Similar Documents

Publication Publication Date Title
DE102019102279A1 (de) Erzeugung von synthetischen Bildern zum Trainieren eines Neuronal-Netzwerkmodells
DE102018117813A1 (de) Zeitlich stabile Datenrekonstruktion mit einem externen rekurrenten neuronalen Netzwerk
DE102017124573A1 (de) Systeme und verfahren zum beschneiden von neuronalen netzen für eine betriebsmitteleffiziente folgerung
DE102018132069A1 (de) Äquivariante Orientierungspunkt-Transformation für Orientierungspunkt-Lokalisierung
DE102018108324A1 (de) System und Verfahren zur Schätzung eines optischen Flusses
DE102018126670A1 (de) Fortschreitende Modifizierung von generativen adversativen neuronalen Netzen
DE102019108733A1 (de) Schnelle mehrskalige Punktwolkenregistrierung mit einer hierarchischen Gauß-Mischung
DE102018121282A1 (de) Differenzierbare rendering-pipeline für inverse graphik
DE102018113845A1 (de) Systeme und Verfahren zum Trainieren von neuronalen Netzwerken mit dünnbesetzten Daten
DE102021119726A1 (de) Dreidimensionale objektrekonstruktion aus einem video
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
DE102018124211A1 (de) Lernbasierte Kameraposenschätzung von Bildern einer Umgebung
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
DE102021121109A1 (de) Wiederherstellung dreidimensionaler modelle aus zweidimensionalen bildern
DE102020121601A1 (de) Persistenter Notizblockspeicher zum Datenaustausch zwischen Programmen
DE102020108526A1 (de) Adaptive pixelabtastreihenfolge für zeitlich dichtes rendern
DE102019134020A1 (de) Dekompprimierungstechniken zur verarbeitung komprimierter daten, die für künstliche neuronale netzwerke geeignet sind
DE102019103319A1 (de) Stochastisches runden von zahlenwerten
DE112019001978T5 (de) Verbesserung des realismus von szenen mit wasseroberflächen beim rendern
DE102022103358A1 (de) Training für maschinelles lernen im logarithmischen zahlensystem
DE102022118651A1 (de) Mehrfachauflösung-hash-codierung für neuronale netzwerke
DE102021104310A1 (de) Reservoir-basiertes räumlich-zeitliches resampling nach wichtigkeit unter verwendung einer globalen beleuchtungsdatenstruktur

Legal Events

Date Code Title Description
R012 Request for examination validly filed