Trainieren eines Deep-Learning-Modells für die Punktwolkenklassifizierung

Zur Erstellung eines Deep-Learning-Modells, das für die Punktwolkenklassifizierung verwendet werden kann, gehören zwei Hauptschritte: Die Vorbereitung der Trainingsdaten und das eigentliche Training. Der erste Teil ist im Allgemeinen der schwierigste, da es an Ihnen ist, die Trainingsdaten zu entwickeln. Sobald dies geschehen ist, wird der Großteil der restlichen Arbeit vom Computer erledigt.

Trainingsdaten sind klassifizierte Punkte, die Sie als Beispiele anführen, damit das neuronale Netzwerk lernen kann. Je mehr Beispiele Sie anführen, umso besser ist im Allgemeinen das Training. Die Beispiele müssen möglichst genau sein, sodass es wichtig ist, dass Sie auf Korrektheit achten. Der Umfang der Klassifizierung richtet sich nach den Features und Landschaftselementen, die für die Anwendung von Interesse sind. Zudem sollten die Trainingsdaten vielfältig sein, damit das Modell generischer ist, und auch die Validierungsdaten sollten vielfältig sein, damit die erhaltenen Performance-Kennwerte möglichst realistisch sind. Vielfalt führt zu einem besseren Training.

Punktwolken enthalten in der Regel Beispiele für alle möglichen Dinge, die mit einem Laser oder auf einem Foto erfasst werden können. Es ist weder realistisch noch wünschenswert, jeden Punkt als etwas Bestimmtes zu klassifizieren. Vielmehr müssen Sie Points of Interest richtig klassifizieren. Sie können andere, für Sie nicht relevante, Punkte bzw. alles andere im Hintergrund in einer Klasse belassen. Wenn Sie sich z. B. für Stromleitungen, Vegetation oder Gebäude interessieren, stellen Sie sicher, dass sie richtig klassifiziert wurden. Alle anderen Punkte können unklassifiziert bleiben (z. B. Klasse 1 für LIDAR-Daten im LAS-Format).

Eine feste Regel dazu, wie viele Daten für das Training benötigt werden, gibt es nicht. Je mehr Beispiele Sie anführen können, umso besser ist es im Allgemeinen. Natürlich gibt es praktische Grenzen, und Sie können auch an einen Punkt kommen, an dem der Erfolg trotz aller Mühen abnimmt.

Vorbereiten von Trainingsdaten

Sie benötigen für das Training eine Punktwolke, in der die Daten, die Sie klassifizieren möchten, gut repräsentiert sind. Ideal ist, wenn die zu klassifizierenden Daten im Rahmen desselben Projekts erfasst werden wie die Trainingsdaten; dieselbe Hardware, dieselben Spezifikationen für die Erfassung. In diesem Fall sind die Erfolgsaussichten am größten. Zwar können Sie andere Daten verwenden, aber Sie möchten ja, dass sie ähnliche Merkmale haben wie die Trainingsdaten. Wichtige Faktoren sind der nominale Punktabstand und die nominale Punktdichte. Die Positionsgenauigkeit ein weiterer. Wenn Sie Punktattribute wie z. B. die LIDAR-Rückgabezahl und -Intensität in das Training einbeziehen möchten, um die Modellvorhersage zu verbessern, stellen Sie sicher, dass diese Attribute in den zu klassifizierenden Daten vorhanden sind.

Sie können Trainingsdaten sowohl manuell als auch automatisiert klassifizieren. Es gibt interaktive Werkzeuge zur Bearbeitung von LAS-Klassencodes und verschiedene regelbasierte Klassifikatoren. Zuweilen kann es hilfreich sein, eine Kombination daraus zu verwenden. Richten Sie beispielsweise mithilfe der Geoverarbeitungswerkzeuge Boden aus LAS klassifizieren und Gebäude aus LAS klassifizieren eine Basisklassifizierung ein. Wählen Sie dann als Trainings-Site aus dem Dataset einige geeignete repräsentative Teilbereiche aus, oder Kacheln bei gekachelten LAS-Datasets. Bereinigen Sie diese Bereiche manuell und fügen Sie ggf. weitere Klassen hinzu. Verwenden Sie diese bearbeiteten und verbesserten Bereiche als Trainingsdaten.

Validierungsdaten werden ebenfalls benötigt. Sie werden während des Trainings zur unverzerrten Auswertung eines Modells verwendet und sind hilfreich bei der Identifizierung und Verhinderung von Überanpassungen, wenn das Modell nur mit den Trainingsdaten gut funktioniert, ansonsten jedoch nicht. Validierungsdaten sollten den Trainingsdaten insofern ähnlich sein, als dass sie repräsentative Interessenbereiche abdecken und dasselbe Klassifizierungsschema verwenden, jedoch aus verschiedenen Positionen stammen. Sie können dieselben Projektdaten verwenden, die auch für das Training verwendet werden, nur andere Teilmengen. Im Allgemeinen werden mehr Trainingsdaten benötigt als Validierungsdaten. Es gibt keine feste Regel, aber es kommt nicht selten vor, dass Trainingsdaten in einem Umfang verwendet werden, der dem Mehrfachen der Validierungsdaten entspricht.

Nachdem Sie die Trainings- und Validierungsdaten definiert haben, müssen Sie eine geeignete Referenznachbarschaft oder Blockgröße finden, die beim Training als Evaluierungspunkte verwendet werden soll.

Blockgröße

Trainings- und Validierungsdaten in Blockgröße werden in überschaubare kleine Blöcke aufgeteilt. Diese Punktblöcke werden dann in ein Format gebracht, auf das Deep Learning-Bibliotheken zugreifen können. Legen Sie für die Blöcke eine geeignete Größe fest. Das Ziel ist dabei, dass sie im Verhältnis zu dem verfügbaren GPU-Speicher eine angemessene Anzahl an Punkten enthalten. Beim Training werden Punkte und sekundäre Datenstrukturen für so viele Blöcke gleichzeitig geladen, wie mit dem Trainingsparameter "Batch-Größe" festgelegt wurde. Dabei ist zu beachten, dass es hier ein Zusammenspiel aus verschiedenen Variablen gibt. Mit den Batches wird gesteuert, wie viele Blöcke gleichzeitig verarbeitet werden. Blöcke sind Gruppen von Punkten und deren Attributen. Wie viele Punkte in einem Block enthalten sind, richtet sich nach der Blockgröße und der Punktdichte an der Position des Blocks. Blöcke enthalten eine relativ konsistente Anzahl an Punkten, wenn die Dichte der Punktwolke konsistent ist. Sie können Datasets verwenden, in denen die Punktdichte stark variiert, aber wahrscheinlich wird es mehr Training erfordern, bis sie gut funktionieren.

Auch wenn Ihre Schätzung hinsichtlich der Anzahl der Punkte in einem Block im Durchschnitt richtig ist, wird es immer Abweichungen geben, und Sie müssen die Anzahl der Punkte in einem Block nach oben begrenzen. Dies können Sie mit dem Parameter "Blockpunktgrenze" tun. Wenn ein Block eine Anzahl an Punkten enthält, mit der dieser Wert überschritten wird, werden mehrere Blöcke für dieselbe Position erstellt, damit sichergestellt ist, dass alle Punkte verwendet werden.

Beginnen Sie zunächst mit Blöcken, die im Durchschnitt ca. 8.000 Punkte enthalten.

Um die Blockgröße, also die Seitenlänge eines Blocks, schätzen zu können, müssen Sie den nominalen Punktabstand der Daten und die gewünschte Anzahl an Punkten je Block kennen.

block_size = square_root(target_point_count) * 2d_point_spacing

Beim Auswerten der Blockgröße können Sie außerdem die Größe der gewünschten Objekte oder Features berücksichtigen. Wenn die Features z. B. bedeutend kleiner sind als die oben geschätzte Blockgröße, können Sie die Blockgröße entsprechend reduzieren.

Verwenden Sie bei einer GPU mit einem dedizierten RAM von 8 GB die Standard-Batch-Größe 2, um zwei Blöcke mit Punkten gleichzeitig in die GPU zu laden. Überwachen Sie die Speichernutzung der GPU. Wenn Sie feststellen, dass während des Trainings viel GPU-Speicher übrig ist, können Sie die Batch-Größe problemlos erhöhen, um mehr Blöcke gleichzeitig verarbeiten zu können.

Training

Zum Training gehört es, dass Sie aus den Trainings- und Validierungsdaten ein neuronales Faltungsnetzwerk (Convolution Neural Network, CNN) erstellen. Das so entstandene Modell wird zur Klassifizierung von Punktwolken im LAS-Format durch einen Prozess verwendet, der Inferenzierung genannt wird. PointCNN ist der Open-Source-Deep-Learning-Framework, der in ArcGIS für Training und Inferenzierung verwendet wird. Sie können das Modell für Ihre eigenen Daten verwenden oder für andere freigeben, damit sie es für ihre Daten verwenden können. Der Trainingsprozess ist ressourcenintensiv und kann lange dauern. Erfreulicherweise ist das Ergebnis kompakt. Die Modelle selbst sind in der Regel zwischen 15 und 20 MB groß.

Ausgabemodelle bestehen aus mehreren Dateien, die zusammen in einem Ausgabeordner gespeichert werden. Sie enthalten eine Esri Model Definition-Datei (*.emd), bei der es sich um eine JSON-Datei mit Parametereinstellungen handelt, und eine *.pth-Datendatei sowie weitere Dateien, die Sie zur Auswertung der Trainingsergebnisse überprüfen können. Darüber hinaus wird ein Deep-Learning-Paket (*.dlpk) in den Ordner ausgegeben. Es enthält alle relevanten Dateien, die zum Teilen und Veröffentlichen zusammengefasst sind.

Standardmäßig trainieren Sie ein Modell von Grund auf neu, aber Sie können auch ein vortrainiertes Modell in den Prozess einbinden. Wenn Sie das tun, erstellen Sie ein neues Modell, indem Sie ein vorhandenes verbessern. Das zusätzliche Training bietet weitere Beispiele, die das Modell nutzen kann, um die richtigen Klassifizierungen für Punkte besser vorhersagen zu können.

Die Einstellung "Minimale Anzahl an Punkten pro Block" im Trainingswerkzeug dient dazu, dass Trainingsblöcke mit einer unzureichenden Anzahl an Punkten übersprungen werden. Oftmals sind die Punkte in einem Block am Rand eines Projekts nicht sehr zahlreich. Beim Erstellen der Trainingsdaten kann es außerdem passieren, dass die Blockpunktgrenze bei einem oder mehreren Blöcken erreicht ist. Dann werden weitere Blöcke für die nicht platzierbaren Punkte erstellt. In jedem Fall sind Blöcke mit relativ wenigen Punkten nicht besonders hilfreich, sodass es u. U. besser ist, sie nicht in den Trainingsprozess einzubeziehen.

Verwalten von Klassen

Die Kategorie Verwalten von Klassen im Geoverarbeitungswerkzeug Punktwolken-Klassifizierungsmodell trainieren enthält Parameter, die mit der Neuzuordnung von Klassen, relevanten Klassen und der Benennung von Klassen verbunden sind.

Die Neuzuordnung von Klassen ist hilfreich, wenn für das Ausgabemodell eine andere Gruppe von Klassencodes und deren Bedeutung im Verhältnis zu den Eingabe-Trainingsdaten verwendet werden soll. Darüber hinaus ist sie hilfreich beim Zusammenführen von Klassen. Beispielsweise, um drei Vegetationsklassen zu einer zu kombinieren.

Relevante Klassencodes stehen im Mittelpunkt des Trainings. Standardmäßig werden alle Klassen in den Eingabe-Trainingsdaten zum Erstellen des Modells herangezogen. Mehrere Klassen können das Training unnötig erschweren, wenn Sie sich nur für eine Feature-Class oder einen Feature-Typ interessieren. Wenn Sie z. B. nur ein Modell erstellen möchten, um Schutzleiter an Stromleitungen zu klassifizieren, können Sie einen relevanten Code festlegen, der nur dafür steht (beispielsweise Klasse 14 nach LAS-Standard). Wenn Sie das tun, werden Sie aufgefordert, einen Hintergrund-Klassencode einzugeben. Das ist dann der Code für alles andere. Damit wird das trainierte Modell, auch wenn die Trainingsdaten mehr Klassen enthalten, nur wissen, wie zwei von ihnen klassifiziert werden: die relevante Klasse und der Hintergrund.

Trainingsparameter

Die Kategorie "Trainingsparameter" im Geoverarbeitungswerkzeug Punktwolken-Klassifizierungsmodell trainieren enthält Parameter speziell für den eigentlichen Trainingsprozess und nicht für die beteiligten Daten und Klassen.

Training ist ein iterativer Prozess. Die Daten werden wiederholt durchlaufen, bis ein Kriterium erfüllt ist. Ein Kriterium ist die "Maximale Anzahl an Epochen". Eine Epoche entspricht einem Trainingsdaten-Durchlauf. Innerhalb einer Epoche werden Daten in Batches verarbeitet. Ein Batch ist eine Sammlung von mehreren Blöcken. Bei "Iterationen pro Epoche" handelt es sich um den Prozentsatz an Batches, die innerhalb einer Epoche verarbeitet werden. Daher wird nur eine Teilmenge der Batches verarbeitet, wenn ein Wert unter 100 % angegeben wird. Die Batch-Größe ist die Anzahl der Blöcke in einem Batch. Blöcke in einem Batch werden parallel verarbeitet. Wenn Ihre GPU über genügend dedizierten RAM verfügt, kann das Training mit einer größeren Batch-Größe erfolgen, wodurch sich in der Regel die Zeit verringert, die für das Training insgesamt benötigt wird.

Lernrate

Die Lernrate ist ein Optimierungsparameter, mit dem gesteuert wird, wie sehr das Modell jedes Mal angepasst werden muss, wenn seine Gewichtungen so aktualisiert werden, dass der Verlust möglichst gering bleibt. Sie beeinflusst, wie viele neue Informationen alte Informationen überschreiben und steht damit für die Geschwindigkeit, mit der das Modell lernt.

Die Festlegung einer Lernrate birgt einen Nachteil. Ein zu kleiner Wert kann zu einer langen Trainingszeit führen, wobei sogar die Möglichkeit besteht, dass das Modell stecken bleibt. Ein zu großer Wert kann dazu führen, dass eine nicht optimale Reihe von Gewichtungen gelernt wird und dass der Lernprozess instabil wird.

Einen Anfangswert für die Lernrate festzulegen ist schwierig. Das Werkzeug Punktwolken-Klassifizierungsmodell trainieren kann einen Wert für Sie schätzen. Es wird empfohlen, die Standardeinstellung leer zu lassen, wenn Sie ein Modell zum ersten Mal trainieren. Lassen Sie das Tool die Lernrate schätzen. Das Werkzeug Punktwolken-Klassifizierungsmodell trainieren gibt die Lernrate in seinen Meldungen an. Außerdem wird die Lernrate in einer Datei mit dem Namen model_metrics.html angegeben, die nach Abschluss des Trainingsprozesses im Ausgabe-Modellordner abgelegt wird. Weitere Informationen zu den Ergebnissen, die mit dem Werkzeug Punktwolken-Klassifizierungsmodell trainieren generiert werden, finden Sie unter Auswerten von Punktwolken-Trainingsergebnissen.

Verwandte Themen