Beschriftung | Erläuterung | Datentyp |
Eingabepunktwolke | Die Punktwolke, die verwendet wird, um die Trainingsdaten für die Objekterkennung zu erstellen. | LAS Dataset Layer; File |
Eingabe-Trainings-Features | Die Multipatch-Features, die die Objekte identifizieren, die zum Trainieren des Modells verwendet werden. | Feature Layer |
Eingabe-Validierungs-Features | Die Multipatch-Features, die die Objekte identifizieren, die während des Trainingsprozesses zum Validieren des Modells verwendet werden. | Feature Layer |
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 (eine *.pcotd-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 |
Code-Feld für Training (optional) | Das Feld, dass die eindeutige ID für jeden Objekttyp in den Trainings-Multipatch-Features identifiziert. Wenn kein Feld definiert ist, wird den Objekten die ID 0 zugewiesen. | Field |
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 |
Code-Feld für Validierung (optional) | Das Feld, dass die eindeutige ID für jeden Objekttyp in den Validierungs-Multipatch-Features identifiziert. Wenn kein Feld definiert ist, wird den Objekten die ID 0 zugewiesen. | Field |
Blockpunktgrenze (optional) | Die maximale Anzahl von Punkten, die in jedem Block der Trainingsdaten gespeichert werden kann. 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 500.000. | Long |
Referenz-Höhenoberflä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 |
Nur Trainingsblöcke exportieren, die Objekte enthalten (optional) | Gibt an, ob in die Trainingsdaten nur Blöcke aufgenommen werden, die Objekte enthalten, oder ob auch Blöcke ohne Objekte berücksichtigt werden. Die für die Validierung verwendeten Daten sind von diesem Parameter nicht betroffen.
| Boolean |
Zusammenfassung
Erstellt Punktwolken-Trainingsdaten für Objekterkennungsmodelle mithilfe von Deep Learning.
Abbildung
Verwendung
Die Trainingsdaten für die Punktwolken-Objekterkennung werden von einem Verzeichnis mit der Erweiterung .pcotd definiert, das zwei Unterverzeichnisse aufweist: Eines enthält die Daten, die zum Trainieren des Modells verwendet werden, und das andere enthält Daten, die zum Validieren des Modells während des Trainingsprozesses verwendet werden. Es muss immer eine Eingabepunktwolke zusammen mit gesonderten Multipatch-Features, die die Rahmen von Objekten zum Trainieren und Validieren darstellen, angegeben werden. Ein Grenzpolygon muss angegeben werden, um die Daten zu begrenzen, die für das Training exportiert werden. Die Validierungsdaten können wie folgt definiert werden:
- Geben Sie zusätzlich zur Eingabepunktwolke eine Validierungspunktwolke an. Dieses Dataset muss einen anderen Satz von Punkten referenzieren als die Eingabepunktwolke. Es kann auch eine Grenze angegeben werden, um die Validierungspunktwolke auszuschneiden.
- Geben Sie nur eine Eingabepunktwolke mit einer Trainings- und Validierungsgrenze an. Dadurch ist die Quelle der Trainings- und der Validierungsdaten dieselbe Eingabepunktwolke. Es muss also kein Dataset für den Parameter Validierungspunktwolke angegeben werden. Vermeiden Sie Überlappungen zwischen den beiden Grenzpolygon-Datasets. Verwenden Sie also nicht dieselben Punktwolkendaten zum Trainieren und Validieren.
Nehmen Sie jeden Objekttyp, der in der Punktwolke vorhanden ist, in einen Multipatch-Rahmen auf. Nicht identifizierte Objekte in den Trainings- oder Validierungsdaten führen dazu, dass das Modell nicht effektiv lernen kann, wie das Objekt identifiziert wird. Wenn die Punktwolke nicht identifizierte Objekte enthält, verwenden Sie Grenz-Features, um die exportierten Training-Datasets auf Orte zu begrenzen, an denen sich Objekte ordnungsgemäß in einem Rahmen befinden.
Die Punkte, die die Objekte darstellen, müssen nicht klassifiziert werden, um im Training-Dataset für die Objekterkennung verwendet zu werden. Dadurch wird das Beschriften der Objekte vereinfacht, indem nur Rahmen als Multipatch-Features erstellt werden. Rahmen können durch interaktive 3D-Bearbeitung einer Multipatch-Feature-Class generiert werden. Wenn Objekte jedoch durch klassifizierte Punktwolken dargestellt werden, können Rahmen für diese Punkte mit dem Werkzeug Objekte aus Punktwolke extrahieren erstellt werden.
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.
Geben Sie nach Möglichkeit eine Blockgröße an, mit der sich Objekte, für die das Modell trainiert wird, ausreichend erfassen lassen. Ein einzelner Block enthält dann nicht unbedingt das gesamte Objekt, die in den Trainingsdaten erstellten überlappenden Blöcke erfassen jedoch eine ausreichende Anzahl verschiedener Repräsentationen des Objekts, damit ein erfolgreiches Modell trainiert werden kann.
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.
Bei der Blockpunktgrenze sollte die dedizierte GPU-Speicherkapazität auf dem Computer, auf dem das Training erfolgt, berücksichtigt werden. Die Speicherzuweisung beim Trainieren hängt von der Anzahl der Punkte pro Block, den verwendeten Attributen und der Gesamtzahl der Blöcke ab, die in einem bestimmten Batch gleichzeitig verarbeitet werden. Wenn für das effektive Trainieren des Modells eine größere Blockgröße und eine höhere 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.
Im Meldungsfenster des Werkzeugs wird ein Quartilverhältnis für jeden Objekttyp angezeigt. Dieses Verhältnis wird berechnet, indem die Objektvolumen im dritten Quartil durch das erste Quartil geteilt werden. Dieser Kennwert dient als Indikator für die Größenvariabilität unter den Objekten. Ein größeres Quartilverhältnis deutet auf eine größere Variabilität der Objektvolumen hin, ein kleineres Verhältnis kennzeichnet dagegen weniger Variabilität. Wenn das Volumen beträchtlich variiert, müssen Sie möglicherweise die Voxel-Parameter im Werkzeug Punktwolken-Objekterkennungsmodell trainieren den Parameter Architektureinstellungen anpassen, um ein genaues Modell zu erhalten.
Parameter
arcpy.ddd.PreparePointCloudObjectDetectionTrainingData(in_point_cloud, in_training_features, in_validation_features, block_size, out_training_data, {training_boundary}, {training_code_field}, {validation_point_cloud}, {validation_boundary}, {validation_code_field}, {block_point_limit}, {reference_height}, {excluded_class_codes}, {blocks_contain_objects})
Name | Erläuterung | Datentyp |
in_point_cloud | Die Punktwolke, die verwendet wird, um die Trainingsdaten für die Objekterkennung zu erstellen. | LAS Dataset Layer; File |
in_training_features | Die Multipatch-Features, die die Objekte identifizieren, die zum Trainieren des Modells verwendet werden. | Feature Layer |
in_validation_features | Die Multipatch-Features, die die Objekte identifizieren, die während des Trainingsprozesses zum Validieren des Modells verwendet werden. | Feature Layer |
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 (eine *.pcotd-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 |
training_code_field (optional) | Das Feld, dass die eindeutige ID für jeden Objekttyp in den Trainings-Multipatch-Features identifiziert. Wenn kein Feld definiert ist, wird den Objekten die ID 0 zugewiesen. | Field |
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 |
validation_code_field (optional) | Das Feld, dass die eindeutige ID für jeden Objekttyp in den Validierungs-Multipatch-Features identifiziert. Wenn kein Feld definiert ist, wird den Objekten die ID 0 zugewiesen. | Field |
block_point_limit (optional) | Die maximale Anzahl von Punkten, die in jedem Block der Trainingsdaten gespeichert werden kann. 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 500.000. | 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 |
blocks_contain_objects (optional) | Gibt an, ob in die Trainingsdaten nur Blöcke aufgenommen werden, die Objekte enthalten, oder ob auch Blöcke ohne Objekte berücksichtigt werden. Die für die Validierung verwendeten Daten sind von diesem Parameter nicht betroffen.
| Boolean |
Codebeispiel
Im folgenden Beispiel wird die Verwendung dieses Werkzeugs im Python-Fenster veranschaulicht.
import arcpy
arpy.env.workspace = r"C:\GIS_Data"
arcpy.ddd.PreparePointCloudObjectDetectionTrainingData("Training.lasd", r"Objects.fgdb\Training_FCs",
r"Objects.fgdb\Validation_FCs", "12 Meters",
"Training_Cars.pcotd", training_code_field="Car_Type",
validation_code_field="Car_Type", reference_surface="DEM.tif",
excluded_classes=[2, 7, 18])