| 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 Eingabe-Punktwolke erstellt wird. Als allgemeine Regel gilt, dass die Blockgröße ausreichen muss, um die relevanten Objekte mit ihrem Kontext zu erfassen. | Linear Unit |
Ausgabe-Trainingsdaten | Der Speicherort und Name der Ausgabe-Trainingsdaten (eine *.pcotd-Datei). | File |
Trainings-Grenz-Features (optional) | Die Polygon-Features, die die Teilmenge der Punkte aus der Eingabe-Punktwolke abgrenzen, die für das Training 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 zur Validierung des Deep-Learning-Modells während des Trainingsprozesses verwendet wird. Dieses Dataset muss einen anderen Satz von Punkten referenzieren als die Eingabe-Punktwolke, um die Qualität des trainierten Modells zu gewährleisten. Wenn keine Validierungspunktwolke bereitgestellt wird, kann die Eingabe-Punktwolke zur Definition der Trainings- und Validierungs-Datasets verwendet werden, indem Polygon-Feature-Classes für die Parameter Trainings-Grenz-Features und Validierungs-Grenz-Features bereitgestellt werden. | LAS Dataset Layer; File |
Validierungs-Grenz-Features (optional) | Die Polygon-Features, die die Teilmenge der Punkte abgrenzen, die für die Validierung des Modells während des Trainingsprozesses verwendet wird. Wenn keine Validierungspunktwolke bereitgestellt wird, werden die Punkte aus der Eingabe-Punktwolke verwendet, und für den Parameter Trainings-Grenz-Features ist ein Polygon erforderlich. | 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 die einzelnen Punkte in den Punktwolkendaten verwendet werden soll. Punkte, die sich mit dem Raster nicht überlappen, werden bei der Analyse weggelassen. | Raster Layer |
Ausgeschlossene Klassencodes (optional) | Die Klassencodes, die von den Trainingsdaten ausgeschlossen werden. Hier 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 Eingabe-Punktwolke sollte eine einigermaßen gleichmäßige Punktdichte aufweisen. Werten Sie die Punktwolke aus, um festzustellen, ob sie Positionen mit einer höheren Punktdichte enthält, z. B. Gebiete, die durch Einmessungen sich überschneidender Fluglinien oder terrestrische Scanner im Stillstand erfasst wurden. Bei einem LIDAR-Luftbild mit überlappenden Fluglinien kann das Werkzeug LAS-Überlappung klassifizieren verwendet werden, um die überlappenden Punkte zu markieren und eine konsistentere Punktverteilung zu erreichen. Andere Typen von Punktwolken mit Hot-Spots, die das notwendige Ausmaß der Stichprobe überschreiten, können mit dem Werkzeug LAS ausdünnen auf eine regelmäßige Verteilung ausgedünnt werden.
Punkte in der Punktwolke können anhand ihrer Klassencodes aus den Trainingsdaten ausgeschlossen werden, um die Performance beim Training des Modells zu verbessern, indem die Menge der zu verarbeitenden Punkte reduziert wird. Die ausgeschlossenen Punkte sollten zu Klassen gehören, die leicht klassifiziert werden können und nicht unbedingt einen angemessenen Kontext für die Objekte bieten, für die das Modell trainiert wird. Ziehen Sie in Erwägung, Punkte herauszufiltern, die als Überlappung oder Rauschen klassifiziert werden. Klassifizierte Bodenpunkte können auch herausgefiltert werden, wenn bei der Generierung der Trainingsdaten die Höhe über dem Boden berechnet wird.
Wenn möglich, geben Sie eine Blockgröße an, die die Objekte, für die das Modell trainiert wird, ausreichend erfasst. Zwar enthält jeder Block nicht immer das gesamte Objekt, aber die überlappenden Blöcke, die in den Trainingsdaten erstellt werden, erfassen eine ausreichende Menge unterschiedlicher Darstellungen des Objekts für das Training eines erfolgreichen Modells.
Die Blockpunktgrenze sollte die Blockgröße und den durchschnittlichen Punktabstand der Daten widerspiegeln. Die Anzahl der Punkte in einem bestimmten Block kann mit dem Werkzeug LAS-Punkt-Statistiken als Raster evaluieren mit der Option Punktanzahl des Parameters Methode und der gewünschten Blockgröße als Zellengröße des Ausgaberasters approximiert werden. Ein Bildhistogramm dieses Rasters kann die Verteilung der Punkte pro Block im Dataset veranschaulichen. Wenn das Histogramm eine große Anzahl von Blöcken mit großer Varianz zeigt, kann dies auf das Vorhandensein von unregelmäßigen Beispieldaten hinweisen, die potenzielle Hot-Spots von dichten Punktesammlungen enthalten. Enthält ein Block mehr Punkte als die Blockpunktgrenze, wird dieser Block mehrfach erstellt, um sicherzustellen, dass alle seine Punkte in den Trainingsdaten vertreten sind. Wenn beispielsweise die Punktgrenze bei 10.000 Punkten liegt und ein bestimmter Block 22.000 Punkte enthält, werden drei Blöcke mit 10.000 Punkten erstellt, um eine einheitliche Referenzpunkterfassung in jedem Block zu gewährleisten. Eine Blockpunktgrenze, die deutlich höher ist als die nominale Punktzahl der meisten Blöcke, sollte ebenfalls vermieden werden. Bei einigen Architekturen werden die Daten einem Upsampling unterzogen, sodass sie die Punktgrenze erreichen. Verwenden Sie daher eine Blockgröße und eine Blockpunktgrenze, die nahe an der erwarteten Punktzahl liegt und die meisten Blöcke in den Trainingsdaten abdeckt. Sobald die Trainingsdaten erstellt sind, wird im Meldungsfenster des Werkzeugs ein Histogramm angezeigt, und ein Bild davon wird im Ordner mit den Trainings- und Validierungsdaten gespeichert. Dieses Histogramm kann überprüft werden, um festzustellen, ob eine geeignete Kombination aus Blockgröße und Punktgrenze festgelegt wurde. Wenn die Werte eine suboptimale Punktgrenze anzeigen, führen Sie das Werkzeug mit einem geeigneteren Wert für den Parameter Blockpunktgrenze erneut aus.
Die Blockpunktgrenze sollte die dedizierte GPU-Speicherkapazität auf dem Computer berücksichtigen, der für das Training verwendet wird. Die Speicherzuweisung während des Trainings 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 ein effektives Training des Modells eine größere Blockgröße und eine höhere Punktzahl erforderlich sind, kann die Batch-Größe im Trainingsschritt verringert werden, um sicherzustellen, dass mehr Punkte verarbeitet werden können.
-
Vergewissern Sie sich, dass die Ausgabe an einen Speicherort geschrieben wird, an dem genügend Speicherplatz für die Trainingsdaten verfügbar ist. Dieses Werkzeug erstellt teilweise überlappende Blöcke von unkomprimierten HDF5-Dateien, die jeden Punkt in vier Blöcken replizieren. In Blöcken, die die maximale Punktegrenze überschreiten, können einige Punkte mehr als viermal dupliziert werden. Die resultierenden Trainingsdaten können mindestens dreimal so viel Speicherplatz belegen wie die Quelldaten der Punktwolke.
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 Eingabe-Punktwolke erstellt wird. Als allgemeine Regel gilt, dass die Blockgröße ausreichen muss, um die relevanten Objekte mit ihrem 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, die die Teilmenge der Punkte aus der Eingabe-Punktwolke abgrenzen, die für das Training 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 zur Validierung des Deep-Learning-Modells verwendet wird. Dieses Dataset muss einen anderen Satz von Punkten referenzieren als die Eingabe-Punktwolke, um die Qualität des trainierten Modells zu gewährleisten. Wenn keine Validierungspunktwolke bereitgestellt wird, kann die Eingabe-Punktwolke zur Definition der Trainings- und Validierungs-Datasets verwendet werden, indem Polygon-Feature-Classes für die Parameter training_boundary und validation_boundary bereitgestellt werden. | LAS Dataset Layer; File |
validation_boundary (optional) | Die Polygon-Features, die die Teilmenge der Punkte abgrenzen, die für die Validierung des Modells während des Trainingsprozesses verwendet wird. Wenn keine Validierungspunktwolke bereitgestellt wird, werden die Punkte aus der Eingabe-Punktwolke verwendet, und für den Parameter training_boundary ist ein Polygon erforderlich. | 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 die einzelnen Punkte in den Punktwolkendaten verwendet werden soll. Punkte, die sich mit dem Raster nicht überlappen, werden bei der Analyse weggelassen. | Raster Layer |
excluded_class_codes [excluded_class_codes,...] (optional) | Die Klassencodes, die von den Trainingsdaten ausgeschlossen werden. Hier 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])Umgebungen
Lizenzinformationen
- Basic: Erfordert 3D Analyst
- Standard: Erfordert 3D Analyst
- Advanced: Erfordert 3D Analyst