Die Bildsegmentierung spielt eine entscheidende Rolle bei der genauen Identifizierung und Abgrenzung von Objekten von Interesse in einem Bild. Beim autonomen Fahren werden Computer-Vision-Algorithmen angewendet, um die Aufgabe der Straßenoberflächensegmentierung zu lösen. Diese Aufgabe ist anspruchsvoll, da man sich nicht nur auf eine Art von Bildern verlassen kann – sowohl Kameras als auch LiDARs haben ihre Stärken und Schwächen. LiDARs liefern beispielsweise genaue Tiefeninformationen, erzeugen aber normalerweise spärliche Punktwolken, sodass sie Objekte in der Szene nicht präzise segmentieren können. Und sie können verzerrte Wolken erzeugen, wenn sie auf transparente oder reflektierende Oberflächen treffen. Kameras erfassen zwar nicht die Tiefe, liefern aber vollständige Informationen über die Form, Textur und Farbe von Objekten. Dies führt uns zu einer einfachen Idee, dass eine effektive Fusion von Punktwolken und Bildern beim Training der 2D-Straßensegmentierung die Vorteile jedes Datenbereichs nutzen kann. Das Problem ist, dass eine solche Fusion eine arbeitsintensive Annotation beider Datensätze erfordert. Können wir also die Datenannotation effizienter gestalten, um die Vorteile eines Multisensor-Setups für die Straßensegmentierung zu nutzen?
Ich arbeite derzeit bei
In diesem Beitrag beschreibe ich unseren Ansatz Schritt für Schritt und zeige einige Testergebnisse. Wenn Sie tiefer in unsere Arbeit, andere Methodenforschung und unsere Testergebnisse eintauchen möchten, lesen Sie unseren Artikel
Die gesamte Pipeline unseres Ansatzes besteht aus vier Hauptteilen: Straßenannotation in Punktwolken, Datenaufbereitung, maskierter Verlust und das Segmentierungsmodell selbst.
Zunächst erhalten wir die Daten mit Straßenanmerkungen im Punktwolkenbereich. Danach projizieren wir Punkte mithilfe homogener Transformationen und Kameraparameter. Dann erhalten wir mithilfe der projizierten Punkte die Ground-Truth-Maske der Straße zur Verlustberechnung mit hinzugefügtem Zufallsrauschen. Bilder von der Kamera werden vom Segmentierungsmodell verarbeitet. Vorhersagen und Masken aus dem vorherigen Schritt werden vom maskierten Verlust verwendet, wodurch das Training des Modells mithilfe spärlicher Ground-Truth-Daten ermöglicht wird. Schließlich erhalten wir nach dem Modelltraining ein Bild mit einer segmentierten Straße. Das Trainingsverfahren sowie der maskierte Verlust ermöglichen das Mischen projizierter Ground-Truth-Daten mit herkömmlichen 2D-Masken, was den Ansatz in Bezug auf die Daten flexibel macht.
Schauen wir uns nun die einzelnen Teile genauer an.
1 Punktwolkendatenannotation
Um Lidar-Daten während des Trainings verwenden zu können, benötigen wir semantische Segmentierungsanmerkungen für Punktwolken. Dies kann entweder manuell mit einem Open-Source-Tool zur Punktwolkenanmerkung erfolgen, wie z. B.
2 Datenaufbereitung
Eine erhaltene Punktwolke wird mithilfe homogener Transformationen auf die Bildebene projiziert, um eine Bildsegmentierungsmaske mit der von uns benötigten Klassenbezeichnung zu erhalten, in unserem Fall ist es eine Straße. Für eine solche Projektion verwenden wir synchronisierte Kamera- und Lidar-Frames, begleitet von Kameraparametern und einer Transformationsmatrix von Lidar zu Kamera-Frame. Um einen homogenen Punkt x = (x, y, z, 1)ᵀ
in Lidar-Frame-Koordinaten auf einen Punkt y = (u, v, 1)ᵀ
auf einer Bildebene zu projizieren, verwenden wir die Gleichung:
Nach der Transformation erhalten wir Punkte auf dem Bild als Pixelmaske, sowohl für die Straßenklasse als auch für alle anderen Punkte aus dem Lidar-Scan. Wir benötigen weitere Lidar-Scan-Punkte, da sich die Lidar-Punkte meist am unteren Bildrand befinden und der obere Bildrand überhaupt keine Punkte aufweist, was in diesem Bereich möglicherweise zu ungenauen Vorhersagen führt. Um diesen Effekt zu eliminieren, fügen wir zufällige Punkte in der oberen Hälfte der Maske hinzu (negative Klasse), um die Verteilung der Punkte auszugleichen, an denen wir den Verlust berechnen.
3 Maskierter Verlust
Ein entscheidender Bestandteil unserer Methode ist die Anwendung einer maskierten Verlustfunktion während des Modelltrainings. Dieser Ansatz eliminiert die inhärente Spärlichkeit in Lidar-abgeleiteten Ground-Truth-Masken. Im Gegensatz zu herkömmlichen Verlustfunktionen, die die gesamten Bildmasken zur Berechnung von Fehlern berücksichtigen, konzentriert sich der maskierte Verlust ausschließlich auf die Bereiche, in denen Lidar-Punkte vorhanden sind. Diese gezielte Verlustberechnung stellt sicher, dass sich das Lernen des Modells auf relevante Bereiche konzentriert und die von Lidar bereitgestellten Informationen nutzt, um die Genauigkeit der Straßensegmentierung zu verbessern. Mit anderen Worten zwingen wir das Modell, die Straßensegmentierung zu lernen, indem wir den Vorhersagefehler auf einem Punkteraster messen. Dies lässt sich mit dem Betrachten des Bildes durch eine Shutterbrille (Shutter Shades) vergleichen.
Der maskierte Verlust für jedes Bild kann folgendermaßen formuliert werden:
Der maskierte Verlust wird durch Anwenden einer binären Maske auf die Trainingsbilder erzielt. Diese Maske umreißt die Bereiche, in denen sich die Lidar-Punkte befinden und auf die Bildebene projiziert werden. Während der Trainingsphase wird der Verlust nur für die Pixel berechnet, die sich unter der Maske befinden. Große, nicht annotierte Teile des Bildes werden dabei effektiv ignoriert. Diese Methode verbessert nicht nur die Effizienz des Trainingsprozesses, sondern mildert auch die Probleme, die durch die spärliche Natur der Lidar-Daten entstehen.
4 Modelltraining
Der letzte Schritt besteht darin, das Segmentierungsmodell anhand des erstellten Datensatzes zu trainieren. Der Trainingsprozess kann für jedes Segmentierungsmodell geeignet sein, und in unserer Forschung haben wir PSPNet verwendet. In dieser Phase hängt alles von der Qualität Ihrer Daten, ihrer Quantität und der verfügbaren Rechenleistung ab.
Wir haben unseren Ansatz an verschiedenen Datensätzen getestet, darunter auch Open-Source-Datensätze wie Perception Waymo Open Dataset und KITTI-360-Datensatz. Jedes Mal haben wir eine Reihe von drei Experimenten durchgeführt: Wir haben nur 2D-Straßengrunddaten, nur projizierte Punkte als Grunddaten und eine Mischung dieser Grunddatentypen verwendet. Und die Ergebnisse der Straßensegmentierung (% der IoU) sehen vielversprechend aus:
Experiment | Trainiert mit dem KITTI-360-Datensatz | Trainiert mit dem Waymo-Datensatz |
---|---|---|
Nur 2D (Basislinie) | 92,3 | 96,1 |
Nur projiziertes 3D | 89,6 | 94,7 |
2D + projiziertes 3D mischen | 92,7 | 96,3 |
Diese Zahlen bedeuten, dass es in Ordnung ist, wenn Sie nur über Lidar-Segmentierung verfügen und keine zusätzlichen Ressourcen für 2D-Bildanmerkungen aufwenden möchten. Der Qualitätsverlust im Vergleich zum Training nur mit 2D-Bildmasken ist möglicherweise unbedeutend. Wenn Sie über Ressourcen verfügen, um Daten von beiden Sensoren zu annotieren, kombinieren Sie diese beiden Arten von Anmerkungen einfach während des Trainingsprozesses und erzielen Sie eine Steigerung der Metriken.
Insgesamt haben wir im Laufe unserer Untersuchungen folgende Vorteile dieses Ansatzes festgestellt: