Benchmarking von VoteNet und 3DETR zur Erkennung von Objekten in Punktwolken
Die meisten Computer-Vision-Anwendungen arbeiten heute mit "flachen" zweidimensionalen Bildern, wie Sie sie in diesem Blogpost finden, und das mit großem Erfolg. Die Welt ist jedoch nicht flach, und das Hinzufügen einer dritten Dimension verspricht nicht nur eine Leistungssteigerung, sondern ermöglicht auch völlig neue Anwendungen. Mit der zunehmenden Verfügbarkeit von 3D-Daten könnte diese Zeit nun gekommen sein. Einige Smartphones verfügen jetzt über Lidar-Sensoren (Abkürzung für "Light Detection and Ranging", manchmal auch "Laser Scanning" genannt), während andere Kameras wie Kinect oder Intel RealSense RGB-D-Kameras verwenden (ein RGB-D-Bild ist die Kombination eines Standard-RGB-Bildes mit der zugehörigen "Tiefenkarte"). 3D-Daten ermöglichen eine umfassende räumliche Darstellung der Umgebung des Sensors und finden Anwendung in der Robotik, bei intelligenten Haushaltsgeräten, fahrerlosen Autos, in der medizinischen Bildgebung und in vielen anderen Bereichen.
In diesem Blogpost befassen wir uns mit 3DETR von Meta (Facebook) und seinem Vorgänger Votenet, die einen cleveren Ansatz zur Erkennung von Objekten in einer 3D-Punktwolke einer Szene bieten (siehe [1], [2] und [3] für die Forschungsartikel). Diese Methoden gehen insofern über die bestehenden Methoden hinaus, als sie die verfügbaren Tiefeninformationen vollständig berücksichtigen, ohne die Rechenkosten in untragbarer Weise zu erhöhen. Ziel der Modelle ist es, Punktwolken (vorverarbeitet aus RGB-D-Bildern) zu verwenden und orientierte 3D-Bounding Boxes sowie semantische Klassen von Objekten zu schätzen.
Für 3D-Daten gibt es mehrere Formate: RGB-D-Bilder, Polygonnetze, Voxel und Punktwolken. Eine Punktwolke ist einfach ein ungeordneter Satz von Koordinatentripeln (x, y, z). Dieses Format ist sehr beliebt, da es alle ursprünglichen 3D-Informationen beibehält und keine Diskretisierung oder 2D-Projektion verwendet. Grundsätzlich können 2D-basierte Methoden keine genauen 3D-Positionsinformationen liefern, was für viele kritische Anwendungen wie Robotik und autonomes Fahren problematisch ist.
Daher ist die direkte Anwendung von maschinellen Lernverfahren auf Punktwolken sehr attraktiv: Sie vermeidet den Verlust geometrischer Informationen, der bei 2D-Projektionen oder Voxelisierungen auftritt. Dank der reichhaltigen Merkmalsdarstellungen, die 3D-Daten inhärent sind, hat Deep Learning auf Punktwolken in den letzten Jahren großes Interesse geweckt.
Es gibt jedoch einige Herausforderungen. Die hohe Dimensionalität und Unstrukturiertheit des Inputs sowie die geringe Größe der verfügbaren Datensätze und ihr Rauschpegel stellen Schwierigkeiten dar. Außerdem sind Punktwolken von Natur aus verdeckt und spärlich: Einige Teile der 3D-Objekte sind für den Sensor einfach verborgen oder das Signal kann übersehen oder blockiert werden. Darüber hinaus sind Punktwolken von Natur aus unregelmäßig, wodurch sich die 3D-Faltung stark vom 2D-Fall unterscheidet.
Für unsere Tests haben wir den SUN-RGB-D-Datensatz gewählt. Er enthält 10.335 RGB-D-Bilder von Innenraumszenen (Schlafzimmer, Möbelhäuser, Büros, Klassenzimmer, Badezimmer, Labore, Konferenzräume, ...). Diese Szenen wurden mit 64.595 orientierten 3D Bounding Boxes um 37 Arten von Objekten, darunter Stühle, Tische, Kissen, Sofas, ..., versehen (siehe [4], [5], [6] und [7] für Einzelheiten zu den verschiedenen Quellen des Datensatzes und den zu seiner Erstellung verwendeten Methoden).
Die Umwandlung von RGB-D-Bildern in Wolkenpunkte erfolgt über eine lineare Transformation von 2D-Koordinaten und Tiefenwerten an gegebenen Koordinaten im Bild, wobei intrinsische Eigenschaften der Kamera berücksichtigt werden. Grundlegende trigonometrische Überlegungen führen zur mathematischen Formulierung dieser linearen Transformation (siehe [8] für eine ausführlichere Erklärung). Das folgende Bild veranschaulicht den Vorgang. Die Vorverarbeitung kann mit Matlab-Funktionen wie im Code des Facebook-Teams durchgeführt werden (einige Codeänderungen sind notwendig, damit er mit der kostenlosen Version Octave funktioniert, was die Vorverarbeitung erheblich verlangsamt) oder mit der Open-Source-Bibliothek Open3D (siehe [9] für einen Link zur Homepage der Bibliothek).
Die erste Methode VoteNet [1] verwendet Pointnet++ [3] als Backbone (beide von Charles R. Qi). Pointnet++ nimmt eine Punktwolke als Eingabe und gibt eine Teilmenge der Eingabewolke aus, aber jeder Punkt hat mehr Merkmale und ist mit Kontext über lokale geometrische Muster angereichert. Dies ähnelt den Faltungsneuronalen Netzen, mit dem Unterschied, dass die Eingabewolke in einer datenabhängigen Weise unterteilt wird: Die Nachbarschaft um einen bestimmten Punkt wird durch einen metrischen Abstand definiert und die Anzahl der Punkte in dieser Nachbarschaft ist variabel. Das folgende Bild (Auszug aus [3]) veranschaulicht die Architektur von Pointnet++.
Die Pointnet-Schichten auf diesem Bild erstellen Abstraktionen von jeder lokalen Region (definiert durch einen festen Radius). Jede lokale Region wird in einen Vektor umgewandelt, der sich aus ihrem Schwerpunkt und angereicherten Merkmalen zusammensetzt, wodurch eine abstrakte Darstellung der Nachbarschaft entsteht. In unserem speziellen Fall besteht die rohe Eingabepunktwolke aus einer variablen Anzahl (20.000 oder 40.000) von Triplets (x, y, z), die Ausgabe des Pointnet++ Backbone ist ein Satz von 1.024 Punkten der Dimension 3+256. Jede Pointnet-Schicht im Backbone ist einfach ein mehrschichtiges Perzeptron (jeweils 1 oder 2 versteckte Schichten).
Die VoteNet-Methode zur 3D-Objekterkennung verwendet die Ausgabe von Pointnet++ und wendet "Deep Hough Voting" an, eine Methode, die durch das folgende Bild (Auszug aus [1]) veranschaulicht wird.
Jeder Punkt (mit seinen angereicherten Merkmalen), der vom Backbone ausgegeben wird, wird in ein gemeinsames mehrschichtiges Perzeptron eingespeist, um ein Votum (das "Voting-Modul") zu generieren: Dieses neuronale Voting-Netzwerk gibt ein Verschiebungstriplett zwischen einem Punkt (seinem Input) und dem Schwerpunkt des Objekts aus, zu dem er gehört (falls vorhanden). Es ist darauf trainiert, die Norm dieser Verschiebung zu minimieren und fügt einige zusätzliche Merkmale hinzu, die bei der Aggregation der Stimmen helfen sollen.
Wie in der obigen Abbildung dargestellt, werden die Stimmen dann geclustert. Jedes Cluster wird einem "Vorschlags- und Klassifizierungsmodul" (in der Praxis zwei mehrschichtige Perzeptronen) zugeführt, das einen Vorhersagevektor ausgibt, der folgende Elemente enthält: einen Objektheitswert, Bounding-Box-Parameter und semantische Klassifizierungswerte. Jedes dieser drei Elemente trägt zu einer Verlustfunktion bei (insgesamt also vier, wenn man den oben erwähnten Verlust aus der Abstimmungsregression hinzurechnet): ein Verlust aus der Kreuzentropie der Objektivität, ein Verlust aus der Schätzung der Bounding Box und ein Verlust aus der Klassenvorhersage.
Bei der 3DETR-Methode (beschrieben in [2]) handelt es sich um einen rein transformatorbasierten Ansatz, bei dem im Vergleich zur Vanilla-Transformer-Architektur kaum Änderungen vorgenommen wurden, was recht bemerkenswert ist. Die 3DETR-Architektur wird in der folgenden Abbildung beschrieben (Auszug aus [6]).
Der Transformator-Encoder erhält Eingaben von einer Subsampling- und Aggregationsschicht wie im oben beschriebenen Pointnet++-Backbone, mit dem Unterschied, dass die Operation in diesem Fall nur einmal statt mehrmals in Pointnet++ angewendet wird. Der Transformator-Encoder wendet dann mehrere Schichten von Selbstaufmerksamkeit und nichtlinearen Projektionen an (in unserem Fall 3 Mehrkopf-Aufmerksamkeitsschichten mit je 8 Köpfen). Es ist keine Positionseinbettung erforderlich, da diese Information bereits in den Eingaben enthalten ist. Der Mechanismus der Selbstaufmerksamkeit ist permutationsinvariant und ermöglicht die Darstellung von Abhängigkeiten über große Entfernungen. Die Selbstaufmerksamkeitsschichten im Kodierer können jedoch mit einer Maske modifiziert werden, um sich auf lokale statt auf globale Muster zu konzentrieren.
Der Decoder besteht also aus mehreren Transformer-Blöcken (in unserem Fall 8). Er empfängt Abfragen und prognostiziert 3D-Begrenzungsrahmen. Die Abfragen werden generiert, indem einige Punkte (in unserem Fall 128) aus der Eingabewolke abgetastet und in eine Positionseinbettungsschicht, gefolgt von einem mehrschichtigen Perzeptron, eingegeben werden.
Die Datenerweiterung erfolgt während des Trainings durch zufällige Unterabtastung, Spiegelung, Drehung und zufällige Skalierung der Punktwolke.
Dies ist ein Beispiel für ein RGB-D-Bild aus dem SUN RGB-D-Datensatz.
Das Bild wird dann zu einer Punktwolke mit 20.000 oder 80.000 Punkten vorverarbeitet. Sie können MeshLab verwenden, um alle Arten von 3D-Daten, einschließlich Punktwolken, zu visualisieren.
Der VoteNet- oder 3DETR-Algorithmus kann nun Bounding Boxes (und Objektklassen) vorhersagen.
Die am weitesten verbreitete Metrik zur Bewertung der Leistung von 3D-Objekterkennungstechniken ist die mittlere durchschnittliche Präzision (mAP): Die durchschnittliche Präzision (AP) ist die Fläche unter der Precision-Recall-Kurve, und die mittlere Präzision (mAP) ist ihr Durchschnitt über alle Objektklassen. Ein IoU-Schwellenwert (Intersection over Union) wird auf 0,25 bzw. 0,5 festgelegt, so dass wir AP25 bzw. AP50 Metriken erhalten. Damit wird die gewünschte Überlappung zwischen den vorhergesagten Bounding Boxen und den Bounding Boxen der Bodenwahrnehmung gesteuert.
Wir haben das VoteNet-Modell 180 Epochen lang (wie von den Autoren von [5] vorgeschlagen) auf dem SUN-RGB-D-Trainingssatz trainiert und einen AP25 von 57 % auf dem Testsatz erhalten (ähnlich wie in [5]). Unser VoteNet-Modell hat eine angemessene Größe mit etwa 1 Million trainierbarer Parameter.
Das 3DETR-Modell ist mit 7 Millionen trainierbaren Parametern größer und muss 360 Epochen lang trainiert werden, um einen AP25 von 57 % auf dem RGB-D-Datensatz der SUN zu erreichen. Dies hätte mehrere Tage des Trainings erfordert. Glücklicherweise haben die Autoren von [6] ein Modell veröffentlicht, das für 1080 Epochen auf SUN RGB-D vortrainiert wurde. Wir haben es getestet und die gleiche AP25 wie bei VoteNet erhalten, nämlich 57 %. Eine Version des 3DETR-Modells mit maskierter Selbstaufmerksamkeit im Encoder ist ebenfalls verfügbar und erzielt eine etwas bessere Leistung. Es ist anzumerken, dass laut den Autoren von [6] der Leistungsgewinn bei einem anderen Datensatz (ScanNetV2, siehe unten) größer ist.
Ein wichtiger Aspekt ist die Möglichkeit, vortrainierte Modelle, wie sie von den Autoren von [5] und [6] zur Verfügung gestellt wurden, mit den Daten unserer Kunden zu optimieren. Dies ist besonders wichtig bei der 3D-Objekterkennung, wo die Daten schwer zu beschriften, verdeckt und verrauscht sind.
Wir testeten die Übertragbarkeit eines VoteNet, das auf dem ScanNetV2-Datensatz trainiert wurde, auf den SUN RGB-D-Datensatz. ScanNetV2 (siehe [10] für Details) ist ein annotierter Datensatz mit 1.200 3D-Netzen, die aus Innenraumszenen rekonstruiert wurden. Er enthält 18 Objektkategorien. Obwohl SUN RGB-D und ScanNetV2 zu einem ähnlichen Bereich von Innenraumszenen gehören, sind sie in der Tat recht unterschiedlich: Die Szenen in ScanNetV2 umfassen größere Flächen, sind vollständiger und enthalten mehr Objekte. Vertices im ScanNetV2-Datensatz werden abgetastet, um Eingabepunktwolken zu erstellen.
Wir haben ein VoteNet-Modell verwendet, das mit ScanNetV2 für 180 Epochen trainiert wurde. Wir haben so viel wie möglich von diesem Modell übernommen: das Backbone-Modul, das Abstimmungsmodul und das gesamte Vorschlags- und Klassifizierungsmodul mit Ausnahme der letzten Ausgabeschicht. Interessanterweise benötigte dieses Modell nur 30 Epochen der Feinabstimmung auf SUN RGB-D, um die gleiche Leistung zu erreichen wie das gleiche VoteNet-Modell, das von Grund auf auf SUN RGB-D für 180 Epochen trainiert wurde.
Dies ist ein ermutigendes Ergebnis, das uns zuversichtlich stimmt, dass unsere vortrainierten Modelle leicht auf die Daten von ML6-Kunden aus anderen Arten von Innenräumen übertragen werden können, ohne dass große annotierte Datensätze benötigt werden.
Links
[1] Deep Hough Voting für 3D-Objekterkennung in Punktwolken
[3] PointNet++: Deep Hierarchical Feature Learning auf Punktmengen in einem metrischen Raum
[4] NYU-Tiefendatensatz V2 - Nathan Silberman
[5] Berkeley 3-D-Objekt-Datensatz
[6] SUN3D-Datensatz
[7] SUN RGB-D