Beschriftung | Erläuterung | Datentyp |
Eingabepunktwolke | Die Punktwolke, die zum Erstellen der Trainingsdaten verwendet wird, und möglicherweise auch die Validierungsdaten, wenn keine Validierungspunktwolke angegeben wurde. In diesem Fall müssen die Trainingsgrenze und die Validierungsgrenze definiert werden. | LAS Dataset Layer; File |
Blockgröße | Der Durchmesser jeder kreisförmigen HDF5-Kachel, die aus der Eingabepunktwolke erstellt wurde. 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). | File |
Trainingsgrenzen-Features (optional) | Die Grenzpolygone, mit denen die Teilmenge der Punkte aus der Eingabepunktwolke markiert wird, die zum Trainieren des Deep-Learning-Modells verwendet wird. | 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 Evaluieren des Modells während des Trainingsprozesses verwendet werden soll. Wenn keine Validierungspunktwolke angegeben wird, stammen die Punkte aus der Eingabepunktwolke. | 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. | 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 |
Zusammenfassung
Generiert die Daten, die zum Trainieren und Validieren eines PointCNN-Modells für die Punktwolkenklassifizierung 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 optional 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.
Erstellen Sie beim Trainieren des Punktwolken-Klassifizierungsmodells die Trainingsdaten mit einer Blockgröße, die das Objekt, das klassifiziert wird, und die Daten, die für die Erfassung des umgebenden Kontextes relevant sind, ausreichend erfasst. Die Blockgröße muss nicht das gesamte Objekt erfassen, sofern es genügend umgebende Daten für die adäquate Ableitung einer Klassifizierungsstrategie gibt. Wenn ein Block mehr Punkte enthält als die Blockpunktgrenze, werden für eine Position mehrere Blöcke erstellt. Wenn der Wert für den Parameter Blockpunktgrenze 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. Einige Punkte werden in zwei Blöcken wiederholt, aber alle Punkte werden in zumindest einen Block aufgenommen.
Vermeiden Sie die Verwendung einer Blockgröße und einer Blockpunktgrenze, die zur Erstellung vieler Blöcke führen, die die Punktgrenze überschreiten. Die Anzahl der Punkte in einer bestimmten Blockgröße kann mit dem Werkzeug LAS-Punkt-Statistiken als Raster annähernd bestimmt werden, indem ein Ausgabe-Raster generiert wird, das die Option Punktanzahl für den Parameter Methode verwendet. Dieses Raster sollte eine Zellengröße aufweisen, die mit der gewünschten Blockgröße übereinstimmt. Sie können das Bildhistogramm dieses Rasters prüfen, um eine Annäherung an die Anzahl der Blöcke zu erhalten, die unter eine bestimmte Blockgröße fallen, und die Punktgrenze entsprechend anpassen.
Der Wert des Parameters Blockpunktgrenze muss auch die dedizierte GPU-Speicherkapazität des Computers berücksichtigen, der zum Trainieren des Deep-Learning-Modells verwendet wird. Die Speicherzuweisung beim Trainieren hängt von der Anzahl der verwendeten Attribute, der Anzahl der Punkte in einem bestimmten Block und der Gesamtzahl der Blöcke ab, die in einem bestimmten Iterations-Batch verarbeitet werden. Wenn für das effektive Trainieren des Modells eine größere Blockgröße zusammen mit einer höheren Punktgrenze erforderlich ist, kann die Batch-Größe im Trainingsschritt verringert werden, damit mehr Punkte verarbeitet werden können.
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.
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 eine Raster-Oberfläche erstellt werden, die als Eingabe für den Parameter Bezugsoberfläche verwendet werden kann. Hierzu wird das LAS-Dataset aus den Layer-Eigenschaften gefiltert und das Werkzeug LAS-Dataset in Raster verwendet. Wenn das Werkzeug in Python verwendet wird, kann vor der Erstellung des Rasters das Werkzeug LAS-Dataset-Layer erstellen zum Filtern nach den gewünschten Punkten verwendet werden. Mit dem Werkzeug Punktwolke in Raster kann auch eine Bodenoberfläche aus einem Punktwolken-Szenen-Layer erstellt werden. Raster-Oberflächen, die nicht aus der Eingabepunktwolke stammen, können ebenfalls verwendet werden. Allerdings müssen Sie sicherstellen, dass die Z-Werte im Raster mit den Z-Werten in der Punktwolke übereinstimmen.
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. Auf diese Weise 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 verschiedene Eisenbahnanlagen. Gebäudepunkte können auch mit dem Werkzeug Gebäude aus LAS klassifizieren klassifiziert werden. Durch die Angabe von Klasse 6 (Gebäude) als ausgeschlossene Klasse würden 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.
Wenn der Raumbezug der Eingabepunktwolke kein projiziertes Koordinatensystem verwendet, kann mithilfe der Umgebung Ausgabe-Koordinatensystem ein projiziertes Koordinatensystem definiert werden, das bei der Klassifizierung seiner Punkte verwendet wird.
Parameter
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})
Name | Erläuterung | Datentyp |
in_point_cloud | Die Punktwolke, die zum Erstellen der Trainingsdaten verwendet wird, und möglicherweise auch die Validierungsdaten, wenn keine Validierungspunktwolke angegeben wurde. In diesem Fall müssen die Trainingsgrenze und die Validierungsgrenze definiert werden. | LAS Dataset Layer; File |
block_size | Der Durchmesser jeder kreisförmigen HDF5-Kachel, die aus der Eingabepunktwolke erstellt wurde. 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). | File |
training_boundary (optional) | Die Grenzpolygone, mit denen die Teilmenge der Punkte aus der Eingabepunktwolke markiert wird, die zum Trainieren des Deep-Learning-Modells verwendet wird. | 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 Evaluieren des Modells während des Trainingsprozesses verwendet werden soll. Wenn keine Validierungspunktwolke angegeben wird, stammen die Punkte aus der Eingabepunktwolke. | 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. | 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
Anhand des folgenden Beispiels 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])
Umgebungen
Lizenzinformationen
- Basic: Erfordert 3D Analyst
- Standard: Erfordert 3D Analyst
- Advanced: Erfordert 3D Analyst