Objekte mit Deep Learning klassifizieren (Image Analyst)

Mit der Image Analyst-Lizenz verfügbar.

Zusammenfassung

Führt ein trainiertes Deep-Learning-Modell in einem Eingabe-Raster und einer optionalen Feature-Class aus und erstellt eine Feature-Class oder Tabelle, in der jedem Eingabeobjekt oder -Feature eine Klassen- oder Kategoriebeschriftung zugewiesen ist.

Dieses Werkzeug erfordert eine Modelldefinitionsdatei, die Informationen zum trainierten Modell enthält. Das Modell kann mit dem Werkzeug Deep-Learning-Modell trainieren oder einer Training-Software von Drittanbietern wie TensorFlow, PyTorch oder Keras trainiert werden. Bei der Modelldefinitionsdatei kann es sich um eine Esri Modelldefinitionsdatei als JSON (.emd) oder ein Deep-Learning-Modellpaket handeln. Sie muss den Pfad zur Python-Raster-Funktion, die zur Verarbeitung der einzelnen Objekte aufgerufen werden soll, sowie den Pfad zur binären Datei des trainierten Deep-Learning-Modells enthalten.

Verwendung

  • Sie müssen die dem jeweiligen Deep-Learning-Framework entsprechende Python-API (PyTorch oder Keras) in der Python-Umgebung von ArcGIS AllSource installieren, da sonst beim Hinzufügen der Esri Modelldefinitionsdatei zum Werkzeug ein Fehler auftritt. Die entsprechenden Framework-Informationen sollten von der Person bereitgestellt werden, die die Esri Modelldefinitionsdatei erstellt hat.

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

  • Mit diesem Werkzeug wird eine Deep-Learning-Python-API eines Drittanbieters (wie PyTorch oder Keras) aufgerufen und die angegebene Python-Raster-Funktion zum Verarbeiten der einzelnen Objekte verwendet.

  • Beispielanwendungsfälle für dieses Werkzeug finden Sie auf der Esri GitHub-Seite zu Python-Raster-Funktionen. Sie können auch benutzerdefinierte Python-Module entwickeln, indem Sie den Beispielen und Anweisungen folgen.

  • Bei dem Parameterwert für die Modelldefinition kann es sich um eine Esri Modelldefinitionsdatei als JSON (.emd), eine JSON-Zeichenfolge oder ein Deep-Learning-Modellpaket (.dlpk) handeln. Eine JSON-Zeichenfolge ist nützlich, wenn Sie dieses Werkzeug auf dem Server verwenden, sodass Sie die JSON-Zeichenfolge einfügen können, statt die .emd-Datei hochzuladen. Die .dlpk-Datei muss lokal gespeichert werden.

  • Nachfolgend finden Sie ein Beispiel für eine .emd-Datei:

    {
        "Framework": "Keras",
        "ModelConfiguration":"KerasClassifier",
        "ModelFile":"C:\\DeepLearning\\Damage_Classification_Model_V7.h5",
        "ModelType":"ObjectClassification",
        "ImageHeight":256,
        "ImageWidth":256,
        "ExtractBands":[0,1,2],
        "CropSizeFixed": 1,
        "BlackenAroundFeature": 1,
        "ImageSpaceUsed": "MAP_SPACE", 
        "Classes": [
        {
           "Value": 0,
           "Name": "Damaged",
           "Color": [255, 0, 0]
        },
        {
           "Value": 1,
           "Name": "Undamaged",
           "Color": [76, 230, 0]
        }
        ]
    }
  • Mit der Eigenschaft CropSizeFixed wird der Zuschneide-Modus der Raster-Kachel um jedes Objekt definiert. Ein Wert von 1 bedeutet, dass eine festgelegte Raster-Kachel verwendet wird, die durch die Eigenschaften ImageHeight und ImageWidth in der .emd-Datei definiert wird. Das Objekt wird dabei innerhalb der festgelegten Kachelgröße zentriert. Ein Wert von 0 bedeutet, dass eine variable Kachelgröße verwendet wird, wobei die Raster-Kachel unter Verwendung des kleinsten Rahmens um das Objekt herum zugeschnitten wird.

  • Die Eigenschaft BlackenAroundFeature gibt an, ob die Pixel, die außerhalb des Objekts liegen, maskiert werden. Ein Wert von 0 bedeutet, dass die Pixel außerhalb des Objekts nicht maskiert werden. Ein Wert von 1 bedeutet, dass die Pixel außerhalb des Objekts maskiert werden.

  • Das Werkzeug kann Eingabebilddaten im Kartenraum oder mit Pixelabstand verarbeiten. Bilddaten im Kartenraum liegen in einem kartenbasierten Koordinatensystem vor. Bilddaten mit Pixelabstand liegen im unverarbeiteten Bildraum ohne Drehung oder Verzerrung vor. Das Bezugssystem kann beim Generieren der Trainingsdaten im Werkzeug Trainingsdaten für Deep Learning exportieren mithilfe des Parameters Bezugssystem angegeben werden. Wird das Modell mit der Training-Software eines Drittanbieters trainiert, müssen Sie das Bezugssystem in der .emd-Datei mithilfe des Parameters ImageSpaceUsed angeben, für den Sie MAP_SPACE oder PIXEL_SPACE festlegen können.

  • Bei dem Eingabe-Raster kann es sich um ein einzelnes Raster, mehrere Raster oder eine Feature-Class mit angehängten Bildern handeln. Weitere Informationen zu Anlagen finden Sie unter Hinzufügen oder Entfernen von Dateianlagen.

  • Durch Vergrößern der Batch-Größe kann die Performance des Werkzeugs verbessert werden; mit zunehmender Batch-Größe erhöht sich jedoch auch der Speicherbedarf. Wenn ein Fehler vom Typ "Nicht genügend Arbeitsspeicher" auftritt, verwenden Sie eine kleinere Batch-Größe. Der Wert batch_size kann mithilfe des Parameters Argumente angepasst werden.

  • Batch-Größen sind Quadratzahlen wie 1, 4, 9, 16, 25, 64 usw. Wenn der Eingabewert keine perfekte Quadratzahl ist, wird der höchstmögliche Quadratwert verwendet. Wird beispielsweise der Wert 6 angegeben, wird die Batch-Größe auf den Wert 4 festgelegt.

  • Dieses Werkzeug kann mehrere verfügbare GPUs unterstützen und verwenden. Um eine bestimmte GPU zu verwenden, geben Sie die GPU-ID-Umgebung an. Wenn die GPU-ID nicht festgelegt wurde, dann verwendet das Werkzeug alle verfügbaren GPUs. Dies ist die Standardeinstellung.

  • Weitere Informationen zu den Voraussetzungen für die Ausführung dieses Werkzeugs und eventuell dabei auftretenden Problemen finden Sie unter Häufig gestellte Fragen zu Deep Learning.

  • Weitere Informationen zu Deep Learning finden Sie unter Deep Learning in der Erweiterung ArcGIS Image Analyst.

Parameter

BeschriftungErläuterungDatentyp
Eingabe-Raster

Das Eingabebild für die Klassifizierung von Objekten.

Bei der Eingabe kann es sich um ein oder mehrere Raster in einem Mosaik-Dataset, einen Image-Service, einen Bildordner oder eine Feature-Class mit Bildanlagen handeln.

Raster Dataset; Raster Layer; Mosaic Layer; Image Service; Map Server; Map Server Layer; Internet Tiled Layer; Folder; Feature Layer; Feature Class
Ausgabe-Feature-Class der klassifizierten Objekte

Die Ausgabe-Feature-Class, die Geometrien enthält, die die Objekte oder Features aus der Eingabe-Feature-Class umgeben, sowie ein Feld zur Speicherung der Kategorisierungsbeschriftung.

Feature Class
Modelldefinition

Bei dem Parameterwert für die Modelldefinition kann es sich um eine Esri Modelldefinitionsdatei als JSON (.emd), eine JSON-Zeichenfolge oder ein Deep-Learning-Modellpaket (.dlpk) handeln. Eine JSON-Zeichenfolge ist nützlich, wenn Sie dieses Werkzeug auf dem Server verwenden, sodass Sie die JSON-Zeichenfolge einfügen können, statt die .emd-Datei hochzuladen. Die .dlpk-Datei muss lokal gespeichert werden.

Sie enthält den Pfad zur binären Datei des Deep-Learning-Modells, den Pfad zu der zu verwendenden Python-Raster-Funktion sowie andere Parameter wie etwa die bevorzugte Kachelgröße oder den bevorzugten Abstand.

File; String
Eingabe-Features
(optional)

Die Point-, Line- oder Polygon-Eingabe-Feature-Class, die die Position jedes zu klassifizierenden und zu beschriftenden Objekts oder Features identifiziert. Jede Zeile in der Eingabe-Feature-Class repräsentiert ein einzelnes Objekt oder Feature.

Wenn keine Eingabe-Feature-Class angegeben ist, wird angenommen, dass jedes Eingabebild ein einzelnes zu klassifizierendes Objekt enthält. Wenn das Eingabebild oder die Eingabebilder einen Raumbezug verwenden, ist die Ausgabe des Werkzeugs eine Feature-Class, in der die Ausdehnung jedes Bildes als Begrenzungsgeometrie für jede beschriftete Feature-Class verwendet wird. Wenn das Eingabebild oder die Eingabebilder keinen Raumbezug verwenden, ist die Ausgabe des Werkzeugs eine Tabelle mit den Bild-ID-Werten und Klassenbeschriftungen für jedes Bild.

Feature Class; Feature Layer
Klassenbeschriftungsfeld
(optional)

Der Name des Feldes für die Klassen- oder Kategoriebeschriftung in der Ausgabe-Feature-Class.

Falls kein Feldname angegeben ist, wird in der Ausgabe-Feature-Class das Feld "ClassLabel" erstellt.

String
Verarbeitungsmodus
(optional)

Legt fest, wie alle Raster-Elemente in einem Mosaik-Dataset oder Image-Service verarbeitet werden. Dieser Parameter findet Anwendung, wenn es sich beim Eingabe-Raster um ein Mosaik-Dataset oder einen Image-Service handelt.

  • Als mosaikiertes Bild verarbeitenAlle Raster-Elemente im Mosaik-Dataset oder Image-Service werden zusammen mosaikiert und verarbeitet. Dies ist die Standardeinstellung.
  • Alle Raster-Elemente separat verarbeitenAlle Raster-Elemente im Mosaik-Dataset oder Image-Service werden als separate Bilder verarbeitet.
String
Argumente
(optional)

Zum Füllen dieses Parameters werden die Informationen aus dem Parameter Modelldefinition verwendet. Diese Argumente sind je nach Modellarchitektur unterschiedlich. Für Modelle, die in ArcGIS trainiert werden, werden die folgenden Modellargumente unterstützt. Vortrainierte Modelle und benutzerdefinierte Deep-Learning-Modelle in ArcGIS verfügen ggf. über weitere Argumente, die von dem Werkzeug unterstützt werden.

  • batch_size: Die Anzahl der in den einzelnen Schritten der Modellinferenz verarbeiteten Kacheln. Dieser Wert hängt vom Speicher der Grafikkarte ab. Das Argument ist für alle Modellarchitekturen verfügbar.
  • test_time_augmentation: Führt beim Erstellen von Vorhersagen Test-Time-Augmentation durch. Wenn "True" festgelegt ist, werden Vorhersagen für gekippte und gedrehte Varianten des Eingabebilds in der endgültigen Ausgabe zusammengeführt. Das Argument ist für alle Modellarchitekturen verfügbar.
  • score_threshold: Über diesem Konfidenzwert liegende Vorhersagen sind im Ergebnis enthalten. Zulässige Werte liegen zwischen 0 und 1,0. Das Argument ist für alle Modellarchitekturen verfügbar.

Value Table
Beschriftung
(optional)

Der Name des Feldes für den Text oder die Beschriftung in der Ausgabe-Feature-Class. Dieser Parameter wird nur unterstützt, wenn ein Image-Captioner-Modell verwendet wird.

Falls kein Feldname angegeben ist, wird in der Ausgabe-Feature-Class das Feld "Caption" erstellt.

Hinweis:

Dieser Parameter wird im Bereich Geoverarbeitung nicht angezeigt. Um den Standard-Feldnamen zu ändern, verwenden Sie den Parameter Klassen-Beschriftungsfeld.

String

ClassifyObjectsUsingDeepLearning(in_raster, out_feature_class, in_model_definition, {in_features}, {class_label_field}, {processing_mode}, {model_arguments}, {caption_field})
NameErläuterungDatentyp
in_raster

Das Eingabebild für die Klassifizierung von Objekten.

Bei der Eingabe kann es sich um ein oder mehrere Raster in einem Mosaik-Dataset, einen Image-Service, einen Bildordner oder eine Feature-Class mit Bildanlagen handeln.

Raster Dataset; Raster Layer; Mosaic Layer; Image Service; Map Server; Map Server Layer; Internet Tiled Layer; Folder; Feature Layer; Feature Class
out_feature_class

Die Ausgabe-Feature-Class, die Geometrien enthält, die die Objekte oder Features aus der Eingabe-Feature-Class umgeben, sowie ein Feld zur Speicherung der Kategorisierungsbeschriftung.

Feature Class
in_model_definition

Bei dem Parameterwert für in_model_definition kann es sich um eine Esri Modelldefinitionsdatei als JSON (.emd), eine JSON-Zeichenfolge oder ein Deep-Learning-Modellpaket (.dlpk) handeln. Eine JSON-Zeichenfolge ist nützlich, wenn Sie dieses Werkzeug auf dem Server verwenden, sodass Sie die JSON-Zeichenfolge einfügen können, statt die .emd-Datei hochzuladen. Die .dlpk-Datei muss lokal gespeichert werden.

Sie enthält den Pfad zur binären Datei des Deep-Learning-Modells, den Pfad zu der zu verwendenden Python-Raster-Funktion sowie andere Parameter wie etwa die bevorzugte Kachelgröße oder den bevorzugten Abstand.

File; String
in_features
(optional)

Die Point-, Line- oder Polygon-Eingabe-Feature-Class, die die Position jedes zu klassifizierenden und zu beschriftenden Objekts oder Features identifiziert. Jede Zeile in der Eingabe-Feature-Class repräsentiert ein einzelnes Objekt oder Feature.

Wenn keine Eingabe-Feature-Class angegeben ist, wird angenommen, dass jedes Eingabebild ein einzelnes zu klassifizierendes Objekt enthält. Wenn das Eingabebild oder die Eingabebilder einen Raumbezug verwenden, ist die Ausgabe des Werkzeugs eine Feature-Class, in der die Ausdehnung jedes Bildes als Begrenzungsgeometrie für jede beschriftete Feature-Class verwendet wird. Wenn das Eingabebild oder die Eingabebilder keinen Raumbezug verwenden, ist die Ausgabe des Werkzeugs eine Tabelle mit den Bild-ID-Werten und Klassenbeschriftungen für jedes Bild.

Feature Class; Feature Layer
class_label_field
(optional)

Der Name des Feldes für die Klassen- oder Kategoriebeschriftung in der Ausgabe-Feature-Class.

Falls kein Feldname angegeben ist, wird in der Ausgabe-Feature-Class das Feld "ClassLabel" erstellt.

String
processing_mode
(optional)

Legt fest, wie alle Raster-Elemente in einem Mosaik-Dataset oder Image-Service verarbeitet werden. Dieser Parameter findet Anwendung, wenn es sich beim Eingabe-Raster um ein Mosaik-Dataset oder einen Image-Service handelt.

  • PROCESS_AS_MOSAICKED_IMAGEAlle Raster-Elemente im Mosaik-Dataset oder Image-Service werden zusammen mosaikiert und verarbeitet. Dies ist die Standardeinstellung.
  • PROCESS_ITEMS_SEPARATELYAlle Raster-Elemente im Mosaik-Dataset oder Image-Service werden als separate Bilder verarbeitet.
String
model_arguments
[model_arguments,...]
(optional)

Mit den Informationen aus dem Parameter in_model_definition werden die Standardwerte für diesen Parameter festgelegt. Diese Argumente sind je nach Modellarchitektur unterschiedlich. Für Modelle, die in ArcGIS trainiert werden, werden die folgenden Modellargumente unterstützt. Vortrainierte Modelle und benutzerdefinierte Deep-Learning-Modelle in ArcGIS verfügen ggf. über weitere Argumente, die von dem Werkzeug unterstützt werden.

  • batch_size: Die Anzahl der in den einzelnen Schritten der Modellinferenz verarbeiteten Kacheln. Dieser Wert hängt vom Speicher der Grafikkarte ab. Das Argument ist für alle Modellarchitekturen verfügbar.
  • test_time_augmentation: Führt beim Erstellen von Vorhersagen Test-Time-Augmentation durch. Wenn "True" festgelegt ist, werden Vorhersagen für gekippte und gedrehte Varianten des Eingabebilds in der endgültigen Ausgabe zusammengeführt. Das Argument ist für alle Modellarchitekturen verfügbar.
  • score_threshold: Über diesem Konfidenzwert liegende Vorhersagen sind im Ergebnis enthalten. Zulässige Werte liegen zwischen 0 und 1,0. Das Argument ist für alle Modellarchitekturen verfügbar.

Value Table
caption_field
(optional)

Der Name des Feldes für den Text oder die Beschriftung in der Ausgabe-Feature-Class. Dieser Parameter wird nur unterstützt, wenn ein Image-Captioner-Modell verwendet wird.

Falls kein Feldname angegeben ist, wird in der Ausgabe-Feature-Class das Feld "Caption" erstellt.

String

Codebeispiel

ClassifyObjectsUsingDeepLearning: Beispiel 1 (Python-Fenster)

In diesem Beispiel wird eine neue Feature-Class mit einem Beschriftungsfeld generiert, um beschädigte und unbeschädigte Gebäude in einem Bild zu klassifizieren.

# Import system modules  
import arcpy  
from arcpy.ia import *  
 
# Check out the ArcGIS Image Analyst extension license 
arcpy.CheckOutExtension("ImageAnalyst") 
 
# Execute 
ClassifyObjectsUsingDeepLearning("C:/Data/Input_Image.tif", 
	"C:/Data/MyProject.gdb/Classified_Results", "C:/Data/BuildingDamageClassifier.emd", 
	"C:/Data/building_footprints.shp","Class_Label", 
	"PROCESS_AS_MOSAICKED_IMAGE", "padding 0;batch_size 4")
ClassifyObjectsUsingDeepLearning: Beispiel 2 (eigenständiges Skript)

In diesem Beispiel wird eine neue Feature-Class mit einem Beschriftungsfeld generiert, um beschädigte und unbeschädigte Gebäude in einem Bild zu klassifizieren.

# Import system modules  
import arcpy  
from arcpy.ia import *  
 
# Check out the ArcGIS Image Analyst extension license 
arcpy.CheckOutExtension("ImageAnalyst") 
 
# Define input parameters
in_raster = "C:/Classify_Objects/input_image.tif" 
out_feature_class = "C:/Classify_Objects/MyProject.gdb/classified_results" 
in_model_definition = "C:/Classify_Objects/BuildingDanmageClassifier.emd" 
in_features = "C:/Classify_Objects/building_footprints.shp" 
class_label_field = "Damaged_or_Undamaged"
model_arguments = "padding 0;batch_size 4"
process_all_raster_items = "PROCESS_AS_MOSAICKED_IMAGE"

# Execute 
ClassifyObjectsUsingDeepLearning(in_raster, out_feature_class, in_model_definition,
	in_features, class_label_field,  
	process_all_raster_items, model_arguments)

Verwandte Themen