Punktwolken-Klassifizierungsmodell trainieren (3D Analyst)

Zusammenfassung

Trainiert ein Deep-Learning-Modell für die Punktwolkenklassifizierung unter Verwendung der PointCNN-Architektur.

Verwendung

  • Dieses Werkzeug verwendet die PointCNN-Implementierung mit Deep-Learning-Umgebungen.

    Informationen zum Einrichten des Computers für Deep-Learning-Frameworks in ArcGIS Pro finden Sie unter Installieren von Deep-Learning-Frameworks for ArcGIS.

  • Das Punktklassifizierungsmodell kann mit einer CUDA-fähigen NVIDIA-Grafikkarte oder der CPU trainiert werden. Das Werkzeug wählt die schnellste CUDA-fähige Grafikkarte auf dem Computer aus. Wenn mehrere GPUs vorhanden sind und das Werkzeug nicht die schnellste Karte verwendet, kann die gewünschte GPU über die Umgebungseinstellung "GPU-ID" angegeben werden. Wird die ausgewählte GPU ebenfalls für die Bildschirmanzeige verwendet, verringert sich der verfügbare Speicherplatz, wenn das Betriebssystem oder andere Anwendungen den Bildschirm verwenden. Um den GPU-Speicher im Rahmen des Trainings zu maximieren, sollten Sie für den Computerbildschirm nicht dieselbe Grafikkarte wie für das Training verwenden.

    Bei Verwendung der GPU ergeben sich in der Regel erheblich kürzere Rechenzeiten als bei Verwendung der CPU. Die CPU sollte nur verwendet werden, wenn keine GPU verfügbar ist. Wenn Sie die CPU für das Training verwenden, sollten Sie vor Beginn des Trainings das kleinstmögliche Trainingsgebiet angeben, um eine geschätzte Zeitdauer für die Verarbeitung der Daten zu erhalten.

    Weitere Informationen zum Trainieren eines Punktwolken-Klassifizierungsmodells

  • Wird ein vortrainiertes Modell angegeben, übernimmt das zu trainierende Modell die Gewichtungen des vortrainierten Modells und optimiert diese, um dieselben Objekte wie im vortrainierten Modell zu klassifizieren. Aus diesem Grund müssen die Trainingsdaten dieselben Attribute und Klassencodes wie das vortrainierte Modell besitzen. Enthalten die Trainingsdaten andere Klassencodes, um dieselben Objekte wie im vortrainierten Modell darzustellen, ordnen Sie die Klassencodes in den Trainingsdaten entsprechend neu zu.

  • Es wird ein Ordner erstellt, in dem die Kontrollpunktmodelle gespeichert werden. Dabei handelt es sich um Modelle, die bei jeder Epoche erstellt werden. Der Name dieses Ordners entspricht dem Namen im Parameter Speicherort des Ausgabemodells plus dem Suffix .checkpoints. Er wird am selben Speicherort erstellt. Nach Abschluss des Trainings wird eine CSV-Tabelle erstellt und dem Kontrollpunktordner hinzugefügt. Der Tabellenname entspricht dem Parameterwert von Name des Ausgabemodells plus dem Suffix _stats.csv. Diese Tabelle enthält die folgenden Felder mit den Ergebnissen, die für die einzelnen Klassencodes und Epochen erhalten wurden:

    • Epoch: Die Nummer der Epoche, die mit den Ergebnissen in der Zeile verknüpft ist. Dieser Wert entspricht dem Modell, das im Verzeichnis für die Kontrollpunktmodelle erstellt wird. Die Ergebnisse werden erzielt, indem das in der Epoche trainierte Modell auf die Validierungsdaten angewendet wird.
    • Class_Code: Der Klassencode, für den die Ergebnisse aufgezeichnet werden.
    • Precision: Das Verhältnis von korrekt klassifizierten Punkten (True Positives) zu allen klassifizierten Punkten (True Positives und False Positives).
    • Recall: Das Verhältnis von korrekt klassifizierten Punkten (True Positives) zu allen Punkten, die mit diesem Wert hätten klassifiziert werden sollen (True Positives und False Negatives).
    • F1_Score: Das harmonische Mittel des Precision- und des Recall-Wertes.
  • Beim Training erlernt PointCNN Muster aus den Trainingsdaten und minimiert die Entropieverlustfunktion. Bei Ausführung des Werkzeugs wird in der Fortschrittsmeldung die folgende statistische Übersicht der Trainingsergebnisse für die einzelnen Epochen zurückgegeben:

    • Epoche: Die Nummer der Epoche, mit der das Ergebnis verknüpft ist.
    • Trainingsverlust: Das Ergebnis der Entropieverlustfunktion, das für die Trainingsdaten gemittelt wurde.
    • Validierungsverlust: Das Ergebnis der Entropieverlustfunktion, das bestimmt wurde, als das in der Epoche trainierte Modell auf die Validierungsdaten angewendet wurde.
    • Accuracy: Der Anteil an Punkten in den Validierungsdaten, die vom in der Epoche trainierten Modell korrekt klassifiziert wurden (True Positives), im Verhältnis zu allen Punkten in den Validierungsdaten.
    • Precision: Der Makrodurchschnitt der Precision für alle Klassencodes.
    • Recall: Der Makrodurchschnitt des Recalls für alle Klassencodes.
    • F-Maß: Das harmonische Mittel aus den Makrodurchschnittswerten für Precision und Recall aller Klassencodes.

    Ein Modell mit geringem Trainingsverlust, jedoch hohem Validierungsverlust hat eine Überanpassung der Trainingsdaten zum Ergebnis. Dabei erkennt das Modell Muster aus Artefakten in den Trainingsdaten, sodass mit dem Modell keine guten Ergebnisse für die Validierungsdaten erzielt werden. Ein Modell mit hohem Trainingsverlust und hohem Validierungsverlust resultiert in einer Unteranpassung der Trainingsdaten. Dadurch werden im Grunde keine Muster erlernt, mit denen ein brauchbares Modell erzielt wird.

    Weitere Informationen zur Ergebnisauswertung beim Trainieren von Punktwolken

  • Der für das Training verwendete dedizierte Speicher ergibt sich aus dem Speicher, der dem Deep-Learning-Framework zugewiesen ist, plus dem Speicher für die Daten, die in jedem Batch einer Iteration für eine Epoche verarbeitet werden. Die Größe der Daten in jedem Batch hängt von mehreren Faktoren ab: der Anzahl an zusätzlichen Punktattributen, die im Parameter Attributauswahl angegeben sind, der Gesamtanzahl von Punkten in einem Block sowie die im Parameter Batch-Größe angegebene Anzahl an Blocks, die in jedem Batch verarbeitet werden. Die maximale Anzahl an Punkten pro Block wird beim Export der Trainingsdaten bestimmt. Beim Einschätzen des Speicherbedarfs für den Trainingsvorgang sollte für diesen Wert ein Schätzwert verwendet werden.

Parameter

BeschriftungErläuterungDatentyp
Eingabe-Trainingsdaten

Die Punktwolken-Trainingsdaten (*.pctd), mit denen das Klassifizierungsmodell trainiert wird.

File
Speicherort des Ausgabemodells

Der vorhandene Ordner, in dem das neue Verzeichnis mit dem Deep-Learning-Modell gespeichert wird.

Folder
Name des Ausgabemodells

Der Name der ausgegebenen Esri Modelldefinitionsdatei (*.emd), des Deep-Learning-Pakets (*.dlpk) und des neuen Verzeichnisses, das zur Speicherung der Dateien erstellt wird.

String
Vortrainiertes Modell
(optional)

Das vortrainierte Modell, das optimiert wird. Wird ein vortrainiertes Modell angegeben, müssen die Eingabe-Trainingsdaten dieselben Angaben für Attribute, Klassencodes und maximale Anzahl an Punkten aufweisen wie die Trainingsdaten, aus denen das vortrainierte Modell erstellt wurde.

File
Attributauswahl
(optional)

Gibt die Punktattribute an, die beim Trainieren des Modells zusammen mit den Klassifizierungscodes verwendet werden. Nur die Attribute, die in den Punktwolken-Trainingsdaten vorhanden sind, stehen zur Verfügung. Standardmäßig werden keine zusätzlichen Attribute einbezogen.

  • IntensitätVerwendet wird der Messwert der Magnitude aus der Rückgabe des LIDAR-Impulses.
  • RückgabenummerVerwendet wird die Ordinalposition des Punktes, der aus einem bestimmten LIDAR-Impuls abgerufen wird.
  • Anzahl an RückgabenVerwendet wird die Gesamtzahl der LIDAR-Rückgaben, die in dem Impuls, der mit einem bestimmten Punkt verknüpft ist, als Punkte identifiziert wurden.
  • Rotes BandDer Wert des roten Bandes aus einer Punktwolke mit Farbinformationen wird verwendet.
  • Grünes BandDer Wert des grünen Bandes aus einer Punktwolke mit Farbinformationen wird verwendet.
  • Blaues BandDer Wert des blauen Bandes aus einer Punktwolke mit Farbinformationen wird verwendet.
  • Nahinfrarot-BandDer Wert des nahinfraroten Bandes aus einer Punktwolke mit Farbinformationen wird verwendet.
String
Minimale Anzahl an Punkten pro Block
(optional)

Die minimale Anzahl an Punkten, die in einem bestimmten Block vorhanden sein müssen, damit er beim Modelltraining verwendet wird. Die Standardeinstellung ist 0.

Long
Klassenneuzuordnung
(optional)

Definiert, wie Klassencodewerte vor dem Training des Deep-Learning-Modells neuen Werten zugeordnet werden.

Value Table
Relevante Klassencodes
(optional)

Die Klassencodes, die zum Filtern der Blöcke in den Trainingsdaten verwendet werden. Wenn relevante Klassencodes angegeben werden, werden alle anderen Klassencodes dem Hintergrund-Klassencode neu zugeordnet.

Long
Hintergrund-Klassencode
(optional)

Der Klassencodewert, der für alle anderen Klassencodes verwendet wird, wenn relevante Klassencodes angegeben wurden.

Long
Klassenbeschreibung
(optional)

Hier wird beschrieben, was die einzelnen Klassencodes in den Trainingsdaten darstellen.

Value Table
Kriterien für die Modellauswahl
(optional)

Gibt die statistische Grundlage für die Bestimmung des finalen Modells an.

  • ValidierungsverlustDas Modell, das bei Anwendung der Entropieverlustfunktion auf die Validierungsdaten das niedrigste Ergebnis aufweist, wird ausgewählt.
  • RecallDas Modell, das für alle Klassencodes den besten Makrodurchschnitt des Recalls aufweist, wird ausgewählt. Der Recall-Wert der einzelnen Klassencodes bestimmt sich aus dem Verhältnis der korrekt klassifizierten Punkte (True Positives) zur Gesamtzahl der Punkte, die mit diesem Wert klassifiziert werden sollten (erwartete Positives). Dies ist die Standardeinstellung.
  • F-MaßDas Modell, das das beste harmonische Mittel zwischen dem Makrodurchschnitt der Precision- und Recall-Werte für alle Klassencodes aufweist, wird ausgewählt. Dadurch wird ein Gleichgewicht zwischen Precision und Recall erzielt, was wiederum eine bessere Gesamtperformance ergibt.
  • PrecisionDas Modell, das für alle Klassencodes den besten Makrodurchschnitt der Precision aufweist, wird ausgewählt. Der Precision-Wert der einzelnen Klassencodes bestimmt sich aus dem Verhältnis der korrekt klassifizierten Punkte (True Positives) zur Gesamtzahl der klassifizierten Punkte (True Positives und False Positives).
  • AccuracyDas Modell mit dem höchsten Anteil an korrekt klassifizierten Punkten im Verhältnis zu allen Punkten in den Validierungsdaten wird ausgewählt.
String
Maximale Anzahl an Epochen
(optional)

Die Anzahl an Durchgängen, die der Datenblock vorwärts und rückwärts durch das neuronale Netzwerk geleitet wird. Die Standardeinstellung ist 25.

Long
Iterationen pro Epoche (%)
(optional)

Der Prozentsatz an Daten, der in jeder Trainingsepoche verarbeitet wird. Die Standardeinstellung ist 100.

Double
Lernrate
(optional)

Die Rate, mit der vorhandene Informationen durch neu erworbene Informationen überschrieben werden. Ist kein Wert angegeben, wird die optimale Lernrate während des Trainingsprozesses aus der Lernkurve extrahiert. Dies ist die Standardeinstellung.

Double
Batch-Größe
(optional)

Die Anzahl an Trainingsdatenblöcken, die jeweils zu einem bestimmten Zeitpunkt verarbeitet werden. Die Standardeinstellung ist 2.

Long
Training beenden, wenn sich das Modell nicht mehr verbessert
(optional)

Gibt an, ob das Modelltraining beendet wird, wenn der für den Parameter Kriterien für die Modellauswahl angegebene Wert nach fünf aufeinanderfolgenden Epochen keine weitere Verbesserung registriert.

  • Aktiviert: Das Modelltraining wird beendet, wenn sich das Modell nicht mehr verbessert. Dies ist die Standardeinstellung.
  • Deaktiviert: Das Modelltraining wird fortgesetzt, bis die maximale Anzahl an Epochen erreicht wird.
Boolean

Abgeleitete Ausgabe

BeschriftungErläuterungDatentyp
Ausgabemodell

Das resultierende Modell, das von diesem Werkzeug erstellt wird

File
Ausgabe-Modellstatistiken

Die .csv-Datei mit Precision, Recall und F-Maß für die einzelnen Klassencodes und Epochen.

Text File

arcpy.ddd.TrainPointCloudClassificationModel(in_training_data, out_model_location, out_model_name, {pretrained_model}, {attributes}, {min_points}, {class_remap}, {target_classes}, {background_class}, {class_descriptions}, {model_selection_criteria}, {max_epochs}, {epoch_iterations}, {learning_rate}, {batch_size}, {early_stop})
NameErläuterungDatentyp
in_training_data

Die Punktwolken-Trainingsdaten (*.pctd), mit denen das Klassifizierungsmodell trainiert wird.

File
out_model_location

Der vorhandene Ordner, in dem das neue Verzeichnis mit dem Deep-Learning-Modell gespeichert wird.

Folder
out_model_name

Der Name der ausgegebenen Esri Modelldefinitionsdatei (*.emd), des Deep-Learning-Pakets (*.dlpk) und des neuen Verzeichnisses, das zur Speicherung der Dateien erstellt wird.

String
pretrained_model
(optional)

Das vortrainierte Modell, das optimiert wird. Wird ein vortrainiertes Modell angegeben, müssen die Eingabe-Trainingsdaten dieselben Angaben für Attribute, Klassencodes und maximale Anzahl an Punkten aufweisen wie die Trainingsdaten, aus denen das vortrainierte Modell erstellt wurde.

File
attributes
[attributes,...]
(optional)

Gibt die Punktattribute an, die beim Trainieren des Modells zusammen mit den Klassifizierungscodes verwendet werden. Nur die Attribute, die in den Punktwolken-Trainingsdaten vorhanden sind, stehen zur Verfügung. Standardmäßig werden keine zusätzlichen Attribute einbezogen.

  • INTENSITYVerwendet wird der Messwert der Magnitude aus der Rückgabe des LIDAR-Impulses.
  • RETURN_NUMBERVerwendet wird die Ordinalposition des Punktes, der aus einem bestimmten LIDAR-Impuls abgerufen wird.
  • NUMBER_OF_RETURNSVerwendet wird die Gesamtzahl der LIDAR-Rückgaben, die in dem Impuls, der mit einem bestimmten Punkt verknüpft ist, als Punkte identifiziert wurden.
  • REDDer Wert des roten Bandes aus einer Punktwolke mit Farbinformationen wird verwendet.
  • GREENDer Wert des grünen Bandes aus einer Punktwolke mit Farbinformationen wird verwendet.
  • BLUEDer Wert des blauen Bandes aus einer Punktwolke mit Farbinformationen wird verwendet.
  • NEAR_INFRAREDDer Wert des nahinfraroten Bandes aus einer Punktwolke mit Farbinformationen wird verwendet.
String
min_points
(optional)

Die minimale Anzahl an Punkten, die in einem bestimmten Block vorhanden sein müssen, damit er beim Modelltraining verwendet wird. Die Standardeinstellung ist 0.

Long
class_remap
[class_remap,...]
(optional)

Definiert, wie Klassencodewerte vor dem Training des Deep-Learning-Modells neuen Werten zugeordnet werden.

Value Table
target_classes
[target_classes,...]
(optional)

Die Klassencodes, die zum Filtern der Blöcke in den Trainingsdaten verwendet werden. Wenn relevante Klassencodes angegeben werden, werden alle anderen Klassencodes dem Hintergrund-Klassencode neu zugeordnet.

Long
background_class
(optional)

Der Klassencodewert, der für alle anderen Klassencodes verwendet wird, wenn relevante Klassencodes angegeben wurden.

Long
class_descriptions
[class_descriptions,...]
(optional)

Hier wird beschrieben, was die einzelnen Klassencodes in den Trainingsdaten darstellen.

Value Table
model_selection_criteria
(optional)

Gibt die statistische Grundlage für die Bestimmung des finalen Modells an.

  • VALIDATION_LOSSDas Modell, das bei Anwendung der Entropieverlustfunktion auf die Validierungsdaten das niedrigste Ergebnis aufweist, wird ausgewählt.
  • RECALLDas Modell, das für alle Klassencodes den besten Makrodurchschnitt des Recalls aufweist, wird ausgewählt. Der Recall-Wert der einzelnen Klassencodes bestimmt sich aus dem Verhältnis der korrekt klassifizierten Punkte (True Positives) zur Gesamtzahl der Punkte, die mit diesem Wert klassifiziert werden sollten (erwartete Positives). Dies ist die Standardeinstellung.
  • F1_SCOREDas Modell, das das beste harmonische Mittel zwischen dem Makrodurchschnitt der Precision- und Recall-Werte für alle Klassencodes aufweist, wird ausgewählt. Dadurch wird ein Gleichgewicht zwischen Precision und Recall erzielt, was wiederum eine bessere Gesamtperformance ergibt.
  • PRECISIONDas Modell, das für alle Klassencodes den besten Makrodurchschnitt der Precision aufweist, wird ausgewählt. Der Precision-Wert der einzelnen Klassencodes bestimmt sich aus dem Verhältnis der korrekt klassifizierten Punkte (True Positives) zur Gesamtzahl der klassifizierten Punkte (True Positives und False Positives).
  • ACCURACYDas Modell mit dem höchsten Anteil an korrekt klassifizierten Punkten im Verhältnis zu allen Punkten in den Validierungsdaten wird ausgewählt.
String
max_epochs
(optional)

Die Anzahl an Durchgängen, die der Datenblock vorwärts und rückwärts durch das neuronale Netzwerk geleitet wird. Die Standardeinstellung ist 25.

Long
epoch_iterations
(optional)

Der Prozentsatz an Daten, der in jeder Trainingsepoche verarbeitet wird. Die Standardeinstellung ist 100.

Double
learning_rate
(optional)

Die Rate, mit der vorhandene Informationen durch neu erworbene Informationen überschrieben werden. Ist kein Wert angegeben, wird die optimale Lernrate während des Trainingsprozesses aus der Lernkurve extrahiert. Dies ist die Standardeinstellung.

Double
batch_size
(optional)

Die Anzahl an Trainingsdatenblöcken, die jeweils zu einem bestimmten Zeitpunkt verarbeitet werden. Die Standardeinstellung ist 2.

Long
early_stop
(optional)

Gibt an, ob das Modelltraining beendet wird, wenn der für den Parameter model_selection_criteria angegebene Wert nach fünf aufeinanderfolgenden Epochen keine weitere Verbesserung registriert.

  • EARLY_STOPDas Modelltraining wird beendet, wenn sich das Modell nicht mehr verbessert. Dies ist die Standardeinstellung.
  • NO_EARLY_STOPDas Modelltraining wird fortgesetzt, bis die maximale Anzahl an Epochen erreicht wird.
Boolean

Abgeleitete Ausgabe

NameErläuterungDatentyp
out_model

Das resultierende Modell, das von diesem Werkzeug erstellt wird

File
out_model_stats

Die .csv-Datei mit Precision, Recall und F-Maß für die einzelnen Klassencodes und Epochen.

Text File

Codebeispiel

TrainPointCloudClassificationModel – Beispiel (eigenständiges Skript)

Anhand des folgenden Beispiels wird die Verwendung dieses Werkzeugs im Python-Fenster veranschaulicht.

import arcpy (st
arcpy.env.workspace = "D:/Deep_Learning_Workspace"
arcpy.ddd.TrainPointCloudClassificationModel("Powerline_Training.pctd", "D:/DL_Models", "Powerline", 
                                             attributes=['INTENSITY', 'RETURN_NUMBER', 'NUMBER_OF_RETURNS'],
                                             target_classes=[14, 15], background_class = 1,
                                             class_descriptions=[[1,"Background"],[14, "Wire Conductor"], [15, "Transmission Tower"]],
                                             model_selection_criteria="F1_SCORE", max_epochs=10)

Umgebungen

Sonderfälle

Lizenzinformationen

  • Basic: Erfordert 3D Analyst
  • Standard: Erfordert 3D Analyst
  • Advanced: Erfordert 3D Analyst

Verwandte Themen