Deep-Learning-Modelle in ArcGIS

Mit der Image Analyst-Lizenz verfügbar.

Ein Deep-Learning-Modell ist ein Computermodell, das anhand von Trainingsbeispielen und neuronalen Deep-Learning-Netzwerken trainiert wird, um verschiedene Aufgaben wie Objekterkennung, Pixelklassifizierung, Erkennung von Veränderungen und Objektklassifizierung durchzuführen.

In ArcGIS können Sie Deep-Learning-Modelle in drei Kategorien einteilen:

  • Vortrainierte ArcGIS-Modelle
  • Mit ArcGIS trainierte Modelle
  • Benutzerdefinierte Modelle

Vortrainierte ArcGIS-Modelle

Mit vortrainierten ArcGIS-Modellen können Sie die Digitalisierung und Extraktion geographischer Features aus Bilddaten und Punktwolken-Datasets automatisieren.

Das manuelle Extrahieren von Features aus Rohdaten, beispielsweise durch Digitalisieren von Footprints oder Generieren von Landbedeckungskarten, ist zeitaufwendig. Mit Deep Learning wird der Prozess automatisiert, und die bei diesen Tasks notwendigen manuellen Eingriffe werden auf ein Minimum reduziert. Das Trainieren eines Deep-Learning-Modells kann jedoch kompliziert sein, da große Datenmengen, zahlreiche Computing-Ressourcen und umfassende Kenntnisse der Funktionsweise von Deep Learning erforderlich sind.

Mit vortrainierten ArcGIS-Modellen müssen Sie weder Zeit noch Mühe in das Training eines Deep-Learning-Modells investieren. Die ArcGIS-Modelle wurden mit Daten aus verschiedenen Geographien trainiert. Wenn Ihnen neue Bilddaten zur Verfügung stehen, können Sie Features extrahieren und Layer aus GIS-Datasets für die Kartenerstellung, Visualisierung und Analyse erstellen. Die vortrainierten Modelle sind im ArcGIS Living Atlas of the World für alle Benutzer mit einem ArcGIS-Konto verfügbar.

Mit ArcGIS trainierte Modelle

Möglicherweise müssen Sie aus verschiedenen Gründen Ihre eigenen Modelle trainieren. Ein Beispiel für ein solches Szenario ist, wenn das verfügbare, vortrainierte ArcGIS-Modell für eine geographische Region trainiert wurde, die sich von Ihrem Interessenbereich unterscheidet. In solchen Situationen können Sie das Werkzeug Deep-Learning-Modell trainieren nutzen. Zum Trainieren Ihres eigenen Modells sind weitere Schritte erforderlich, aber in der Regel liefert es die besten Ergebnisse für spezifische Interessenbereiche und Anwendungsfälle. Das Werkzeug trainiert ein Deep-Learning-Modell mit der Ausgabe des Werkzeugs Trainingsdaten für Deep Learning exportieren. Beide Werkzeuge unterstützen die meisten gängigen Deep-Learning-Metadatenformate und -Modellarchitekturen.

Weitere Informationen über die verschiedenen Metadatenformate finden Sie in der Dokumentation zum Werkzeug Trainingsdaten für Deep Learning exportieren. Weitere Informationen zur Auswahl der verschiedenen Modelltypen finden Sie in der Dokumentation zum Werkzeug Deep-Learning-Modell trainieren.

Benutzerdefinierte Modelle

Die Inferenzierung von Deep-Learning-Modellen in ArcGIS wird auf der Grundlage des Python-Raster-Funktions-Frameworks implementiert. Viele Deep Learning-Modelle, die außerhalb von ArcGIS trainiert wurden, können in ArcGIS zur Inferenzierung verwendet werden. Dazu müssen jedoch die Inferenzfunktion angepasst und die richtigen Pakete installiert werden, die das Modell unterstützen. Das Repository "raster-deep-learning" liefert Anleitungen zu Deep-Learning-Python-Raster-Funktionen in ArcGIS sowie zur Erstellung benutzerdefinierter Python-Raster-Funktionen, um zusätzliche Deep-Learning-Modelle in ArcGIS zu integrieren. Diese Modelle werden als benutzerdefinierte Modelle betrachtet.

Inhalte von Deep-Learning-Modellen

Ein typisches Modell, das in ArcGIS trainiert wurde, enthält die im folgenden Bild gezeigten und unten aufgeführten Ordner und Dateien:

Ordnerstruktur des Modells

  • loss_graph.png: Zeigt den Trainings- und Validierungsverlust für die verarbeiteten Batches. Dies wird in der model_metrics.html-Datei verwendet.
  • show_results.png: Zeigt die Beispielergebnisse für das Modell. Dies wird in der model_metrics.html-Datei verwendet.
  • training_validation_loss.json: Zeigt die Trainings- und Validierungsverluste pro Zeitraum.
  • model_metrics.html: Diese Datei enthält Informationen über das trainierte Modell, darunter die Lernrate, den Trainings- und Validierungsverlust und Beispielergebnisse.
  • model_name.pth: Enthält Modellgewichtungen.

Abhängig von der Modellarchitektur kann der Modellordner zusätzliche unterstützende Dateien wie ModelConfiguration.py enthalten.

Esri-Modelldefinitionsdatei

Die Esri-Modelldefinitionsdatei (.emd) ist eine JSON-Datei, die das trainierte Deep-Learning-Modell beschreibt. Sie enthält Modelldefinitionsparameter, die zum Ausführen der Inferenzwerkzeuge erforderlich sind, und sollte von dem Data Scientist, der das Modell trainiert hat, angepasst werden. Die Datei enthält erforderliche und optionale Parameter, wie in der folgenden Tabelle beschrieben.

Nachdem die .emd-Datei fertig gestellt und überprüft wurde, kann sie mehrfach zur Inferenzierung verwendet werden, sofern die Eingabebilddaten vom selben Sensor stammen wie die ursprüngliche Modelleingabe und die Klassen oder Objekte, die erkannt werden sollen, übereinstimmen. Wurde eine .emd-Datei z. B. mit einem Modell definiert, das Sentinel-2-Satellitendaten zur Erkennung von Erdöl-Bohrplätzen verwendet, kann diese eingesetzt werden, um mithilfe von Sentinel-2-Satellitendaten Erdöl-Bohrplätze in mehreren Interessenbereichen und zu verschiedenen Zeitpunkten zu erstellen.

Einige Parameter haben alle Inferenzwerkzeuge gemeinsam; diese sind in der folgenden Tabelle aufgelistet. Andere Parameter kommen nur bei bestimmten Werkzeugen zum Einsatz, z. B. die Parameter CropSizeFixed und BlackenAroundFeature, die nur von dem Werkzeug Objekte mit Deep Learning klassifizieren verwendet werden.

Parameter der ModelldefinitionsdateiBeschreibung

Framework

Der Name des zum Trainieren des Modells verwendeten Deep-Learning-Frameworks.

Beispiele für unterstützte Deep-Learning-Frameworks:

  • TensorFlow
  • Keras
  • PyTorch
Weitere Informationen finden Sie in der Liste der unterstützten Frameworks.

Wenn das Modell mit einem Deep-Learning-Framework trainiert wurde, das nicht in der Liste der unterstützten Frameworks enthalten ist, ist zusammen mit dem trainierten Modell eine benutzerdefinierte Inferenzfunktion (ein Python-Modul) erforderlich. Sie müssen außerdem InferenceFunction auf den Pfad des Python-Moduls festlegen.

ModelConfiguration

Der Name der Modellkonfiguration.

Die Modellkonfiguration definiert die Modelleingaben und -ausgaben, die Inferenzlogik und die Vermutungen zu den Modelleingaben und -ausgaben. Vorhandene Open-Source-Deep-Learning-Workflows definieren die Standardkonfiguration der Eingaben und Ausgaben und die Standard-Inferenzlogik. ArcGIS unterstützt die folgenden vordefinierten Konfigurationen:

  • TensorFlow
    • ObjectDetectionAPI
    • DeepLab
  • Keras
    • MaskRCNN

Wenn Sie eine der vordefinierten Konfigurationen verwendet haben, geben Sie in der .emd-Datei den Namen der Konfiguration ein. Falls Sie Ihr Deep-Learning-Modell mit einer benutzerdefinierten Konfiguration trainiert haben, müssen Sie in der .emd-Datei oder in der benutzerdefinierten Python-Datei die Eingaben und Ausgaben vollständig beschreiben.

ModelType

Der Typ des Modells. Die folgenden Optionen sind verfügbar:

  • ImageClassification: Klassifizieren von Pixeln.
  • ObjectDetection: Objekte oder Features erkennen.
  • ObjectClassification: Objekte und Features klassifizieren.

ModelFile

Der Pfad zu einer Datei für ein trainiertes Deep-Learning-Modell. Das Dateiformat ist von der Modellumgebung abhängig. In TensorFlow ist die Modelldatei beispielsweise eine .pb-Datei.

Beschreibung

Informationen zum Modell. Modellinformationen können alle Informationen sein, mit denen das von Ihnen trainierte Modell beschrieben wird. Hierzu zählen z. B. die Nummer und der Name des Modells, der Zeitpunkt der Modellerstellung und die Performance-Genauigkeit.

InferenceFunction

(optional)

Der Pfad der Inferenzfunktion.

Eine Inferenzfunktion kann die Datei mit den trainierten Modelldaten auswerten und stellt die Inferenzlogik bereit. Die Deep-Learning-Geoverarbeitungswerkzeuge in ArcGIS Pro unterstützen folgende Inferenzfunktionen:

  • Objekte erkennen für TensorFlow
  • Pixel klassifizieren für Tensor Flow
  • Objekte erkennen für Keras
  • Objekte erkennen für PyTorch
  • Objekte klassifizieren für Pytorch
Wenn Sie eine der oben genannten Inferenzfunktionen verwendet haben, muss sie nicht in der .emd-Datei angegeben werden. Falls das Modell mit einer Konfiguration des Deep-Learning-Modells trainiert wird, die noch nicht unterstützt wird oder die eine spezielle Inferenzlogik erfordert, ist zusammen mit dem trainierten Modell eine benutzerdefinierte Inferenzfunktion (ein Python-Modul) erforderlich. Legen Sie in diesem Fall InferenceFunction auf den Pfad des Python-Moduls fest. Für Python-Modul-Inferenzdateien ist jeder Speicherort zulässig, auf den ArcGIS Pro Zugriff hat.

SensorName

(optional)

Der Name des Sensors, der zum Sammeln der Bilddaten verwendet wurde, aus denen Trainingsgebiete generiert wurden.

RasterCount

(optional)

Die Anzahl der Raster, die zum Generieren der Trainingsgebiete verwendet wurden.

BandList

(optional)

Die Liste der Bänder, die in den Quellbilddaten verwendet wurden.

ImageHeight

(optional)

Die Anzahl der Zeilen in dem Bild, das klassifiziert oder verarbeitet wird.

ImageWidth

(optional)

Die Anzahl der Spalten in dem Bild, das klassifiziert oder verarbeitet wird.

ExtractBands

(optional)

Die Bandindizes oder -namen, die aus den Eingabebilddaten extrahiert werden sollen.

Klassen

(optional)

Informationen über die Kategorien oder Objekte der Ausgabeklasse.

DataRange

(optional)

Der Bereich der Datenwerte, wenn die Skalierung oder die Normalisierung in der Vorverarbeitung erfolgt sind.

ModelPadding

(optional)

Das Padding, das den Eingabebilddaten zur Inferenzierung hinzugefügt werden soll.

BatchSize

(optional)

Die Anzahl der Trainingsgebiete, die in jeder Iteration des Modells verwendet werden soll.

PerProcessGPUMemoryFraction

(optional)

Der Anteil des GPU-Speichers, der jeder Iteration in dem Modell zugewiesen werden soll. Der Standardwert ist 0,95 oder 95 Prozent.

MetaDataMode

(optional)

Das Format der für die Bildschnipsel verwendeten Metadatenbeschriftungen.

ImageSpaceUsed

(optional)

Der Typ des zum Trainieren des Modells verwendeten Bezugssystems. Die folgenden Optionen sind verfügbar:

  • MAP_SPACE
  • PIXEL_SPACE

WellKnownBandNames

(optional)

Die Namen der Eingabebänder in der Reihenfolge der Bandindizes. Auf die Bänder kann dann anhand dieser Namen in anderen Werkzeugen Bezug genommen werden.

AllTileStats

Die Statistik der einzelnen Bänder im Trainingsgebiet.

Das Folgende ist ein Beispiel für eine Modelldefinitionsdatei, die eine Standard-Modellkonfiguration verwendet:

{
    "Framework": "TensorFlow",
    "ModelConfiguration": "ObjectDetectionAPI",
    "ModelFile":"C:\\ModelFolder\\ObjectDetection\\tree_detection.pb",
    "ModelType":"ObjectionDetection",
    "ImageHeight":850,
    "ImageWidth":850,
    "ExtractBands":[0,1,2],
    "Classes" : [
      {
        "Value": 0,
        "Name": "Tree",
        "Color": [0, 255, 0]
      }
    ]
}

Im folgenden Beispiel für eine Modelldefinitionsdatei werden weitere optionale Parameter in der Konfiguration verwendet:

{
    "Framework": "PyTorch",
    "ModelConfiguration": "FasterRCNN",
    "ModelFile":"C:\\ModelFolder\\ObjectDetection\\river_detection.pb",
    "ModelType":"ObjectionDetection",
				"Description":"This is a river detection model for  imagery",
    "ImageHeight":448,
    "ImageWidth":448,
    "ExtractBands":[0,1,2,3],
				"DataRange":[0.1, 1.0],
				"ModelPadding":64,
				"BatchSize":8,
				"PerProcessGPUMemoryFraction":0.8,
				"MetaDataMode" : "PASCAL_VOC_rectangles",
				"ImageSpaceUsed" : "MAP_SPACE",
    "Classes" : [
      {
        "Value": 1,
        "Name": "River",
        "Color": [0, 255, 0]
      }
    ],
				"InputRastersProps" : {
						"RasterCount" : 1,
						"SensorName" : "Landsat 8",
						"BandNames" : [
								"Red",
								"Green",
								"Blue",
								"NearInfrared"
						]
				},
				"AllTilesStats" : [
      {
      		"BandName" : "Red",
      		"Min" : 1,
      		"Max" : 60419,
      		"Mean" : 7669.720049855654,
      		"StdDev" : 1512.7546387966217
      },
      {
      		"BandName" : "Green",
      		"Min" : 1,
      		"Max" : 50452,
      		"Mean" : 8771.2498195125681,
      		"StdDev" : 1429.1063589515179
      },
      {
      		"BandName" : "Blue",
      		"Min" : 1,
      		"Max" : 47305,
      		"Mean" : 9306.0475897744163,
      		"StdDev" : 1429.380049936676
      },
      {
      		"BandName" : "NearInfrared",
      		"Min" : 1,
      		"Max" : 60185,
      		"Mean" : 17881.499184561973,
      		"StdDev" : 5550.4055277121679
      }
    ],
}

Deep-Learning-Modellpaket

Ein Deep-Learning-Modellpaket (.dlpk) enthält die Dateien und Daten, die benötigt werden, um Deep-Learning-Inferenzwerkzeuge für die Objekterkennung oder Bildklassifizierung auszuführen. Das Paket kann als DLPK-Element in das Portal hochgeladen und als Eingabe für Deep-Learning-Raster-Analyse-Werkzeuge verwendet werden.

Deep-Learning-Modellpakete müssen eine Esri Modelldefinitionsdatei (.emd) und eine Datei mit dem trainierten Modell enthalten. Die Erweiterung der Datei mit dem trainierten Modell hängt davon ab, in welcher Umgebung das Modell trainiert wurde. Wenn Sie das Modell beispielsweise mit TensorFlow trainiert haben, ist die Modelldatei eine .pb-Datei, während bei einem mit Keras trainierten Modell eine .h5-Datei generiert wird. Abhängig von der Modellumgebung und den zum Trainieren des Modells verwendeten Optionen müssen Sie möglicherweise eine Python-Raster-Funktion (.py) oder zusätzliche Dateien hinzufügen. Sie können mehrere Dateien mit trainierten Modellen in ein einziges Deep-Learning-Modellpaket aufnehmen.

Die meisten Pakete können Sie in einer beliebigen Version von ArcGIS Pro öffnen. Standardmäßig wird der Inhalt eines Pakets im Ordner <User Documents>\ArcGIS\Packages gespeichert. Sie können diesen Speicherort in den Freigabe- und Download-Optionen ändern. Wenn die zum Öffnen eines Pakets verwendete ArcGIS Pro-Version die Funktionalität im Paket nicht unterstützt, ist diese daraufhin nicht verfügbar.

Wenn Sie die Eigenschaften eines .dlpk-Pakets anzeigen oder bearbeiten bzw. Dateien zu einem .dlpk-Paket hinzufügen oder daraus entfernen möchten, klicken Sie im Bereich Katalog mit der rechten Maustaste auf das .dlpk-Paket, und klicken Sie dann auf Eigenschaften.

Öffnen Sie ein Deep-Learning-Paket im Bereich "Katalog".

Eigenschaften enthalten die folgenden Informationen:

  • Eingabe: Die .emd-Datei, die trainierte Modelldatei sowie zusätzliche Dateien, die für die Ausführung der Inferenzwerkzeuge erforderlich sind.
  • Framework: Das Deep-Learning-Framework, das zum Trainieren des Modells verwendet wird.
  • ModelConfiguration: Der Typ des durchgeführten Modelltrainings (Objekterkennung, Pixelklassifizierung oder Feature-Klassifizierung).
  • Description: Eine Beschreibung des Modells. Diese ist optional und kann bearbeitet werden.
  • Summary: Eine kurze Zusammenfassung des Modells. Diese ist optional und kann bearbeitet werden.
  • Tags: Alle Tags, mit denen das Paket gekennzeichnet wird. Dies ist nützlich für .dlpk-Pakete, die im Portal gespeichert sind.

Eigenschaften des Deep-Learning-Pakets

Alle im Fenster Eigenschaften bearbeiteten Eigenschaften werden aktualisiert, wenn Sie auf OK klicken. Erfolgt der Zugriff auf das .dlpk-Paket über den Bereich Katalog in Ihrem Portal, wird das Portalelement aktualisiert.

Informationen zum Erstellen eines .dlpk-Pakets finden Sie unter Freigeben eines Deep-Learning-Modellpakets.

Verwandte Themen