Punktwolken-Trainingsdaten vorbereiten (3D Analyst)

Zusammenfassung

Generiert die Daten, die zum Trainieren und Validieren eines Punktwolken-Klassifizierungsmodells verwendet werden.

Verwendung

  • Überprüfen Sie die Eingabepunktwolke, um sicherzustellen, dass die Punkte für die relevanten Objekte richtig klassifiziert sind. Die Qualität des Klassifizierungsmodells hängt von der Qualität der Daten ab, die zum Trainieren und Validieren verwendet werden. Wenn die Klassifizierung der Punktwolke optimiert werden muss, könnten Sie die Punktklassifizierung interaktiv bearbeiten.

    Weitere Informationen zur interaktiven Bearbeitung der LAS-Klassifizierung

  • Die Punktwolken-Trainingsdaten werden von einem Verzeichnis mit der Erweiterung .pctd und zwei Unterverzeichnissen definiert. Eines enthält die Daten, die zum Trainieren des Klassifizierungsmodells verwendet werden, und das andere enthält die Daten, die zum Validieren des trainierten Modells verwendet werden. Eine Eingabepunktwolke muss immer angegeben werden, da sie die Quelle der zum Trainieren verwendeten Daten darstellt. Die Trainingsgrenze kann definiert werden, um die zum Trainieren exportierten Punkte zu begrenzen. Die Validierungsdaten sind ebenfalls erforderlich und können auf folgende Weise angegeben werden:

    • Geben Sie eine Validierungspunktwolke an. Dieses Dataset muss einen anderen Satz von Punkten referenzieren als die Eingabepunktwolke.
    • Geben Sie eine Validierungspunktwolke mit einer Validierungsgrenze an. Dadurch werden die Validierungsdaten aus dem Teil der Validierungspunktwolke erstellt, der mit der Validierungsgrenze überlappt.
    • Geben Sie eine Trainingsgrenze und eine Validierungsgrenze ohne eine Validierungspunktwolke an. Dadurch werden die Trainingsdaten aus den Teilen der Eingabepunktwolke erstellt, die die Trainingsgrenze überschneiden, und die Validierungspunktwolke wird aus den Teilen der Eingabepunktwolke erstellt, die die Validierungsgrenze überschneiden. Die Grenz-Features müssen einander nicht überlappen.
  • Die Eingabepunktwolke weist normalerweise eine relativ konsistente Punktdichte auf. Werten Sie die Punktwolke aus, um zu ermitteln, ob sie Stellen mit einer höheren Punktdichte enthält, z. B. durch Bereiche, die bei Vermessungen mit überlappenden Flugbahnen oder von terrestrischen Scannern im Leerlauf erfasst wurden. Bei LIDAR-Luftbilddaten mit überlappenden Flugbahnen können die überlappenden Punkte mit dem Werkzeug LAS-Überlappung klassifizieren gekennzeichnet und eine konsistentere Punktverteilung erreicht werden. Andere Punktwolkentypen mit zu detaillierten Hot-Spots können mit dem Werkzeug LAS ausdünnen auf eine reguläre Verteilung ausgedünnt werden.

  • Punkte in der Punktwolke können anhand ihrer Klassencodes von den Trainingsdaten ausgeschlossen werden, um die Performance beim Trainieren des Modells zu erhöhen, indem die Anzahl der zu verarbeitenden Punkte reduziert wird. Ausgeschlossene Punkte sollten Klassen angehören, die einfach klassifiziert werden können und nicht notwendigerweise einen adäquaten Kontext für die Objekte, für die das Modell trainiert wird, enthalten. Erwägen Sie, Punkte auszufiltern, die als Überlappung oder Rauschen klassifiziert wurden. Punkte mit Bodenklassifizierung können ebenfalls ausgefiltert werden, wenn die Höhe über dem Boden bei der Generierung von Trainingsdaten berechnet wird.

  • In die Trainingsdaten können Informationen zur Bezugshöhe aufgenommen werden, um ein weiteres Attribut für den Trainingsprozess zu erhalten. Dies geschieht durch die Angabe eines Rasters im Parameter Bezugsoberfläche. Dieses Raster wird verwendet, um für jeden überlappenden Punkt das Attribut für die relative Höhe abzuleiten. Das Attribut wird berechnet, indem die durch bilineare Interpolation aus dem Raster ermittelte Höhe vom Z-Wert subtrahiert wird. Diese Informationen können bei der Unterscheidung von Objekten helfen, die einen bestimmten Bereich relativer Höhen von der Raster-Oberfläche aufweisen. Außerdem schaffen sie eine weitere Basis für das neuronale Netzwerk, um Richtungsbeziehungen abzuleiten. Wenn beispielsweise beim Training für Stromleitungen ein Geländehöhenraster als Bezugsfläche verwendet wird, fallen die Stromleitungspunkte wahrscheinlich in einen bestimmten Bereich relativer Höhen über dem Boden. Wenn die Bezugshöhe von der Geländehöhe abhängig ist, kann sie außerdem als Vorwand dienen, Bodenpunkte aus den Trainingsdaten auszuschließen, falls diese keinen nützlichen Kontext für die Identifizierung der relevanten Objekte liefern. Das neuronale Netzwerk versucht, die Klassifizierung aller Daten zu erlernen, die ihm während des Trainings zur Verfügung gestellt werden. Da mit dem Werkzeug Boden aus LAS klassifizieren eine qualitativ hochwertige Bodenklassifizierung erreicht werden kann, ist es nicht erforderlich, das neuronale Netzwerk dahingehend zu trainieren, dass es Bodenpunkte identifizieren und von anderen Klassen unterscheiden kann. Bodenpunkte, die normalerweise durch Klasse 2 und gelegentlich auch durch Klasse 8 und Klasse 20 dargestellt werden, können ausgeschlossen werden, indem sie im Parameter Ausgeschlossene Klassencodes aufgelistet werden. In diesem Fall werden die Trainingsdaten schneller vom neuronalen Netzwerk verarbeitet, da Bodenpunkte in der Regel etwa die Hälfte aller Punkte ausmachen, die bei einer LIDAR-Vermessung erfasst werden.

  • Aus einer Teilmenge von LAS-Punkten (z. B. Punkten mit Bodenklassifizierung) kann die Raster-Oberfläche erstellt werden, die als Eingabe für den Parameter Bezugsoberfläche verwendet wird. Hierzu wird das LAS-Dataset gefiltert und das Werkzeug LAS-Dataset in Raster verwendet. Die gewünschte Teilmenge von Punkten des LAS-Datasets kann gefiltert werden. Dazu wird eine Kombination aus Klassifizierungscodes, Rückgabewerten und Klassifizierungs-Flags verwendet. Die Punktfilter können über das Eigenschaftendialogfeld des LAS-Dataset-Layers oder mit dem Werkzeug LAS-Dataset-Layer erstellen angewendet werden. Mit dem Werkzeug Punktwolke in Raster kann auch eine Raster-Oberfläche aus einem Punktwolken-Szenen-Layer erstellt werden.

  • Der Parameter Ausgeschlossene Klassencodes kann verwendet werden, um mit Klassencodes verknüpfte Punkte auszuschließen, die keinen nützlichen Ableitungskontext zur Identifizierung von relevanten Objekten liefern. Wenn sie weggelassen werden, lässt sich die Anzahl der zu evaluierenden Punkte reduzieren, wodurch wiederum der Trainingsprozess beschleunigt wird. So spielen zum Beispiel als Gebäude klassifizierte Punkte normalerweise keine Rolle für das Training eines Klassifizierungsmodells für Objekte wie Verkehrsampeln, Stromleitungen oder andere Ressourcen. Gebäudepunkte können auch zuverlässig mit dem Werkzeug Gebäude aus LAS klassifizieren klassifiziert werden. Durch die Angabe von Klasse 6 (Gebäude) als ausgeschlossene Klasse werden die Gebäudepunkte aus den Trainingsdaten ausgeschlossen. Für jede Punktwolke, die ein mit ausgeschlossenen Klassen trainiertes Modell verwendet, sollten diese Klassen vor der Anwendung des Modells klassifiziert werden. Außerdem sollten diese Klassen im Parameter Ausgeschlossene Klassencodes der Werkzeuge Punktwolke mithilfe des trainierten Modells klassifizieren und Punktwolken-Trainingsdaten evaluieren aufgelistet werden, damit das Modell seine Klassifizierung anhand einer Punktwolke ableiten kann, die mit den Eigenschaften der Daten übereinstimmt, die für das Training des Modells verwendet wurden.

  • Bei der Blockpunktgrenze sollten die Blockgröße und der durchschnittliche Punktabstand der Daten berücksichtigt werden. Die Anzahl der Punkte in einem bestimmten Block kann im Werkzeug LAS-Punkt-Statistiken als Raster mit der Option Punktanzahl des Parameters Methode und der gewünschten Blockgröße als Zellengröße des Ausgabe-Rasters annähernd bestimmt werden. Ein Bildhistogramm dieses Rasters kann die Verteilung der Punkte pro Block im Dataset darstellen. Wenn das Histogramm eine große Anzahl von Blocks mit großer Varianz darstellt, kann dies bedeuten, dass uneinheitlich erfasste Referenzdaten mit möglichen Hot-Spots bei dichten Punktsammlungen vorliegen. Wenn ein Block mehr Punkte enthält als die Blockpunktgrenze, wird dieser Block mehrere Male erstellt, damit alle Punkte in den Trainingsdaten berücksichtigt werden. Wenn die Punktgrenze z. B 10.000 beträgt und ein Block 22.000 Punkte enthält, werden drei Blöcke mit 10.000 Punkten erstellt, um in jedem Block eine einheitliche Referenzpunkterfassung sicherzustellen. Auch eine Blockpunktgrenze, die beträchtlich höher als die Nominalpunktmenge in den meisten Blöcken ist, sollte vermieden werden. In einigen Architekturen werden die Daten erneut erfasst, um die Punktgrenze zu erreichen. Verwenden Sie dehalb eine Blockgröße und einen Blockgrenzwert in der Nähe der erwarteten Punktmenge, damit ein Großteil der Blöcke in den Trainingsdaten abgedeckt wird. Nach der Erstellung der Trainingsdaten wird im Meldungsfenster des Werkzeugs ein Histogramm angezeigt und ein Bild davon im Ordner mit den Trainings- und Validierungsdaten gespeichert. Dieses Histogramm kann überprüft werden, um zu bestimmen, ob eine entsprechende Kombination aus Blockgröße und Punktgrenze angegeben wurde. Wenn die Werte auf eine nicht optimale Punktgrenze hinweisen, führen Sie das Werkzeug mit einem passenderen Wert für den Parameter Blockpunktgrenze erneut aus.

  • Stellen Sie sicher, dass die Ausgabe in einen Speicherort mit ausreichend Speicherplatz für die Trainingsdaten geschrieben wird. Dieses Werkzeug erstellt teilweise überlappende Blöcke von nicht komprimierten HDF5-Dateien, die jeden Punkt in vier Blöcken replizieren. In Blöcken, die die maximale Punktgrenze überschreiten, können einige Punkte mehr als viermal dupliziert werden. Für die resultierenden Trainingsdaten kann mindestens dreimal mehr Speicherplatz erforderlich sein als für die Quell-Punktwolkendaten.

Parameter

BeschriftungErläuterungDatentyp
Eingabepunktwolke

Die Punktwolke, die zum Erstellen der Trainingsdaten verwendet wird, und möglicherweise auch die Validierungsdaten, wenn keine Validierungspunktwolke bereitgestellt wurde. In diesem Fall müssen die Trainingsgrenze und die Validierungsgrenze definiert werden.

LAS Dataset Layer; File
Blockgröße

Der Durchmesser jedes Trainingsdatenblocks, der aus der Eingabepunktwolke erstellt wird. Eine allgemeine Regel ist, dass die Blockgröße ausreichen muss, um die relevanten Objekte und den umgebenden Kontext zu erfassen.

Linear Unit
Ausgabe-Trainingsdaten

Der Speicherort und Name der Ausgabe-Trainingsdaten (*.pctd-Datei).

File
Trainingsgrenzen-Features
(optional)

Die Polygon-Features, mit denen die Teilmenge der Punkte aus der Eingabepunktwolke markiert wird, die zum Trainieren des Modells verwendet wird. Dieser Parameter ist erforderlich, wenn der Parameterwert Validierungspunktwolke nicht angegeben ist.

Feature Layer
Validierungspunktwolke
(optional)

Die Punktwolke, die zum Validieren des Deep-Learning-Modells während des Trainingsprozesses verwendet wird. Dieses Dataset muss einen anderen Satz von Punkten referenzieren als die Eingabepunktwolke, um die Qualität des trainierten Modells sicherzustellen. Wenn keine Validierungspunktwolke angegeben ist, kann die Eingabepunktwolke zum Definieren der Trainings- und Validierungs-Datasets verwendet werden, indem die Polygon-Feature-Classes für die Parameter Trainingsgrenzen-Features und Validierungsgrenzen-Features angegeben werden.

LAS Dataset Layer; File
Validierungsgrenzen-Features
(optional)

Die Polygon-Features, mit denen die Teilmenge der Punkte abgegrenzt wird, die zum Validieren des Modells während des Trainingsprozesses verwendet werden soll. Wenn keine Validierungspunktwolke angegeben ist, werden die Punkte aus der Eingabepunktwolke übernommen und es wird ein Polygon für den Parameter Trainingsgrenzen-Features benötigt.

Feature Layer
Blöcke nach Klassencode filtern
(optional)

Die Klassencodes, die zur Begrenzung der exportierten Trainingsdatenblöcke verwendet werden. Alle Punkte in den Blöcken, die mindestens einen der für diesen Parameter aufgeführten Werte enthalten, werden exportiert, mit Ausnahme der Klassen, die im Parameter Ausgeschlossene Klassencodes angegeben sind, und der Punkte, die als "Ausgeschlossen" gekennzeichnet sind. Es kann ein beliebiger Wert im Bereich von 0 bis 255 angegeben werden.

Value Table
Blockpunktgrenze
(optional)

Die maximale Anzahl von Punkten, die in jedem Block der Trainingsdaten zulässig ist. Wenn ein Block eine größere Anzahl von Punkten enthält als dieser Wert, werden mehrere Blöcke für eine Position erstellt, um sicherzustellen, dass alle Punkte beim Trainieren verwendet werden. Der Standardwert ist 8.192.

Long
Bezugsoberfläche
(optional)

Die Raster-Oberfläche, die zum Angeben der relativen Höhe für jeden Punkt in den Punktwolkendaten verwendet wird. Punkte, die nicht mit dem Raster überlappen, werden bei der Analyse nicht berücksichtigt.

Raster Layer
Ausgeschlossene Klassencodes
(optional)

Die Klassencodes, die aus den Trainingsdaten ausgeschlossen werden. Es kann ein beliebiger Wert im Bereich von 0 bis 255 angegeben werden.

Long

arcpy.ddd.PreparePointCloudTrainingData(in_point_cloud, block_size, out_training_data, {training_boundary}, {validation_point_cloud}, {validation_boundary}, {class_codes_of_interest}, {block_point_limit}, {reference_height}, {excluded_class_codes})
NameErläuterungDatentyp
in_point_cloud

Die Punktwolke, die zum Erstellen der Trainingsdaten verwendet wird, und möglicherweise auch die Validierungsdaten, wenn keine Validierungspunktwolke bereitgestellt wurde. In diesem Fall müssen die Trainingsgrenze und die Validierungsgrenze definiert werden.

LAS Dataset Layer; File
block_size

Der Durchmesser jedes Trainingsdatenblocks, der aus der Eingabepunktwolke erstellt wird. Eine allgemeine Regel ist, dass die Blockgröße ausreichen muss, um die relevanten Objekte und den umgebenden Kontext zu erfassen.

Linear Unit
out_training_data

Der Speicherort und Name der Ausgabe-Trainingsdaten (*.pctd-Datei).

File
training_boundary
(optional)

Die Polygon-Features, mit denen die Teilmenge der Punkte aus der Eingabepunktwolke markiert wird, die zum Trainieren des Modells verwendet wird. Dieser Parameter ist erforderlich, wenn der Parameterwert validation_point_cloud nicht angegeben ist.

Feature Layer
validation_point_cloud
(optional)

Die Quelle der Punktwolke, die zum Validieren des Deep-Learning-Modells verwendet wird. Dieses Dataset muss einen anderen Satz von Punkten referenzieren als die Eingabepunktwolke, um die Qualität des trainierten Modells sicherzustellen. Wenn keine Validierungspunktwolke angegeben ist, kann die Eingabepunktwolke zum Definieren der Trainings- und Validierungs-Datasets verwendet werden, indem die Polygon-Feature-Classes für die Parameter training_boundary und validation_boundary angegeben werden.

LAS Dataset Layer; File
validation_boundary
(optional)

Die Polygon-Features, mit denen die Teilmenge der Punkte abgegrenzt wird, die zum Validieren des Modells während des Trainingsprozesses verwendet werden soll. Wenn keine Validierungspunktwolke angegeben ist, werden die Punkte aus der Eingabepunktwolke übernommen und es wird ein Polygon für den Parameter training_boundary benötigt.

Feature Layer
class_codes_of_interest
[class_codes_of_interest,...]
(optional)

Die Klassencodes, die zur Begrenzung der exportierten Trainingsdatenblöcke verwendet werden. Alle Punkte in den Blöcken, die mindestens einen der für diesen Parameter aufgeführten Werte enthalten, werden exportiert, mit Ausnahme der Klassen, die im Parameter excluded_class_codes angegeben sind, und der Punkte, die als "Ausgeschlossen" gekennzeichnet sind. Es kann ein beliebiger Wert im Bereich von 0 bis 255 angegeben werden.

Value Table
block_point_limit
(optional)

Die maximale Anzahl von Punkten, die in jedem Block der Trainingsdaten zulässig ist. Wenn ein Block eine größere Anzahl von Punkten enthält als dieser Wert, werden mehrere Blöcke für eine Position erstellt, um sicherzustellen, dass alle Punkte beim Trainieren verwendet werden. Der Standardwert ist 8.192.

Long
reference_height
(optional)

Die Raster-Oberfläche, die zum Angeben der relativen Höhe für jeden Punkt in den Punktwolkendaten verwendet wird. Punkte, die nicht mit dem Raster überlappen, werden bei der Analyse nicht berücksichtigt.

Raster Layer
excluded_class_codes
[excluded_class_codes,...]
(optional)

Die Klassencodes, die aus den Trainingsdaten ausgeschlossen werden. Es kann ein beliebiger Wert im Bereich von 0 bis 255 angegeben werden.

Long

Codebeispiel

PreparePointCloudTrainingData: Beispiel (Python-Fenster)

Im folgenden Beispiel wird die Verwendung dieses Werkzeugs im Python-Fenster veranschaulicht.

import arcpy
arcpy.env.workspace = 'C:/data'
arcpy.ddd.PreparePointCloudTrainingData('training_source.lasd', '35 Meters', 'vegetation_training.pctd', 
                                        validation_point_cloud='validation_source.lasd', 
                                        class_codes_of_interest=[14, 15], block_point_limit=12000,
                                        reference_height='Ground_Elevation.tif', 
                                        excluded_class_codes=[2, 6, 8, 9, 20])

Verwandte Themen