Deep Learning in der Raster-Analyse

Mit ArcGIS Image Server können Sie Klassifizierungsmethoden der Statistik oder des maschinellen Lernens zum Klassifizieren von Fernerkundungsbildern verwenden. Deep Learning ist ein Typ von maschinellem Lernen, bei dem mehrere Schichten nichtlinearer Verarbeitung für die in einem Modell beschriebene Feature-Identifizierung und Mustererkennung verwendet werden. Deep-Learning-Modelle können für die Objektermittlung und Bildklassifizierung in ArcGIS Image Server integriert werden. In ArcGIS Pro werden mit den Trainingsgebiet-Manager-Klassifizierungswerkzeugen Trainingsgebiete von relevanten Features oder Objekten generiert, mit dem Werkzeug Objekte für Deep Learning beschriften beschriftet und dann in ein Format für den Einsatz im Deep-Learning-Framework konvertiert. Diese Trainingsgebiete werden zum Trainieren des Modells mit dem Raster-Analyse-Werkzeug Deep-Learning-Modell trainieren oder der ArcGIS API for Python verwendet. Das trainierte Modell und die Modelldefinitionsdatei (und optional eine Skriptdatei für die Python-Raster-Funktion) werden gepackt und als Deep-Learning-Paketelement (.dlpk) freigegeben. Dieses wird dann zum Ausführen der Raster-Analyse-Inferenzwerkzeuge verwendet. Die Inferenzwerkzeuge extrahieren bestimmte Features oder klassifizieren die Pixel in den Bilddaten. Das .dlpk-Element kann mehrmals als Eingabe für die Raster-Analyse-Werkzeuge verwendet werden. Dadurch können Sie mehrere Bilder an unterschiedlichen Orten und in unterschiedlichen Zeiträumen bewerten, nachdem das Modell trainiert wurde.

Deep-Learning-Workflow

Workflow-Element 1

Erstellen Sie mit dem Werkzeug Objekte für Deep Learning beschriften in ArcGIS Pro Trainingsgebiete, und verwenden Sie das Raster-Analyse-Werkzeug Trainingsdaten für Deep Learning exportieren in ArcGIS REST API oder ArcGIS API for Python, um die Daten für den Data Scientist vorzubereiten.

Workflow-Element 2

Trainieren Sie ein Deep-Learning-Modell mit dem Raster-Analyse-Werkzeug Deep-Learning-Modell trainieren. Sie können die ArcGIS REST API nutzen, um das Modell mit einem Deep-Learning-Framework zu trainieren. Das Ausgabe-Deep-Learning-Paket (*.dlpk), bestehend aus der Modelldefinitionsdatei und dem trainierten Deep-Learning-Modell oder Python-Skript, wird als .dlpk-Element für das Portal freigegeben.

Workflow-Element 3

Der Data Scientist liefert ein Deep-Learning-Paket, das aus der Modelldefinitionsdatei und dem trainierten Modell oder einem Python-Skript besteht, zurück an die ArcGIS Image Server-Raster-Analyseumgebung.

Führen Sie mit dem .dlpk-Element im Portal das Werkzeug Objekte mit Deep Learning ermitteln, das Werkzeug Pixel mit Deep Learning klassifizieren oder das Werkzeug Objekte mit Deep Learning klassifizieren aus, um eine Ausgabe zu generieren.

Features und Funktionen

In den Werkzeugen für die Deep-Learning-Raster-Analyse können Sie zusätzlich zu den Standardklassifizierungsmethoden des maschinellen Lernens weitere Methoden nutzen.

  • Verwenden Sie Convolutional Neural Networks für die Bildklassifizierung und Objekterkennung.
  • Mit einem Deep-Learning-Modell können Sie Bildpixel klassifizieren und Objekte wie z. B. Flugzeuge, Bäume, Fahrzeuge, Gewässer, Gebäude und Erdöl-Bohrplätze ermitteln oder klassifizieren.
  • Integrieren Sie externe Deep-Learning-Frameworks, einschließlich PyTorch, Keras und TensorFlow.
  • Verarbeiten Sie eine Raster-Sammlung während der Modell-Inferenz, um Änderungen im Zeitverlauf oder Objekte in unterschiedlichen Interessenbereichen zu ermitteln.
  • Generieren Sie eine Polygon-Feature-Class, in der ermittelte Objekte angezeigt werden, die für zusätzliche Analysen oder Workflows verwendet werden sollen.
  • Die Deep-Learning-Inferenzwerkzeuge können die CPU für die verteilte Verarbeitung verwenden oder, sofern verfügbar, die leistungsstarken GPUs auf den einzelnen Serverknoten.
  • Sie können mehrere GPUs pro Serverknoten verwenden, um Deep-Learning-Inferenzaufträge mit den in ArcGIS vordefinierten Modellkonfigurationen auszuführen, darunter TensorFlow Object Detection API und DeepLab, Keras MaskRCNN sowie PyTorch fastai Single Shot Detector.
  • Wenn das Eingabe-Raster eine entsprechende Transformation des Kartenraums in den Bildraum enthält, können Trainings-Bildschnipsel mit dem Werkzeug "Trainingsdaten für Deep Learning exportieren" in den Bildraum exportiert werden.

Erste Schritte mit Deep Learning

Die Erstellung und der Export der Trainingsgebiete nimmt ein kompetenter Bildanalyst in ArcGIS vor, da gute Kenntnisse der Bildklassifizierungs-Workflows erforderlich sind. Das Deep-Learning-Modell kann in ArcGIS mit dem Raster-Analyse-Werkzeug "Deep-Learning-Modell trainieren" oder der ArcGIS API for Python arcgis.learn trainiert werden. Das Deep-Learning-Modell kann alternativ außerhalb von ArcGIS mit einer externen Deep-Learning-API trainiert werden. Sobald das Modell trainiert ist, wird das .dlpk-Element dem ArcGIS Enterprise-Portal hinzugefügt und ist bereit für Modellinferenz-Tasks. Führen Sie die Raster-Analyse-Werkzeuge aus, um in Map Viewer Classic, ArcGIS API for Python, ArcGIS REST API oder ArcGIS Pro Objekte zu erkennen und zu klassifizieren oder Pixel zu klassifizieren. Der gesamte Deep-Learning-Workflow kann von einem Analysten durchgeführt werden, der über Erfahrung in Deep-Learning-Modellen und der ArcGIS-Bildklassifizierung verfügt.

Es wird auch eine separate Deep-Learning-Setupanwendung bereitgestellt, mit der die jeweiligen Deep-Learning-Framework-APIs (TensorFlow, Keras, PyTorch und alle anderen erforderlichen Python-Bibliotheken) in der Standardumgebung "arcgispro-py3" von ArcGIS Image Server installiert werden. Dies ist die Voraussetzung für die Ausführung von Deep-Learning-Tasks auf dem ArcGIS Image Server.

Hilfestellungen bei der Konfiguration und Bereitstellung von ArcGIS Enterprise für die Raster-Analyse finden Sie in der Hilfedokumentation. Beachten Sie auch die weiteren Schritte zur Konfiguration Ihres Raster Analysis-Servers für die Verwendung mehrerer GPUs pro Serverknoten.

  1. Erstellen und exportieren Sie Trainingsgebiete.
    1. Verwenden Sie das Werkzeug Objekte für Deep Learning beschriften in ArcGIS Pro, um ein Klassifizierungsschema auszuwählen oder zu erstellen.
    2. Erstellen Sie Trainingsgebiete für die relevanten Klassenkategorien oder Features. Speichern Sie die Trainingsgebietdatei.
    3. Führen Sie das Raster-Analyse-Werkzeug Trainingsdaten für Deep Learning exportieren aus, um die Quellbilddaten und -trainingsgebiete in Deep-Learning-Trainingsdaten zu konvertieren. Die Quellbilddaten sind möglicherweise ein Image-Service. Die Ausgabe des Werkzeugs ist die Zeichenfolge für den Data Store, in dem die Ausgabe-Bildschnipsel, -beschriftungen und -Metadatendateien gespeichert werden. Das Werkzeug gibt außerdem eine .emd-Vorlagendatei aus, die vom Data Scientist gefüllt wird.
  2. Trainieren Sie das Deep-Learning-Modell.
    1. Verwenden Sie die oben in Schritt 1 generierten Bildschnipsel, um ein Modell mit dem Raster-Analyse-Werkzeug Deep-Learning-Modell trainieren zu trainieren. Alternativ können Deep-Learning-Modelle auch mit der ArcGIS API for Python arcgis.learn oder mit externen Deep-Learning-Framework-APIs trainiert werden.
    2. Wenn das Deep-Learning-Modell mit dem Raster-Analyse-Werkzeug "Deep-Learning-Modell trainieren" trainiert wird, ist die Ausgabe ein Deep-Learning-Modellpaket-Element, das auf dem Portal veröffentlicht wird. Das Deep-Learning-Modellpaket (.dlpk) kann im nächsten Schritt direkt verwendet werden.
    3. Wenn das Modell mit einer externen Deep-Learning-Framework-API trainiert wird, müssen Benutzer die .emd-Datei mit dem Namen des Deep-Learning-Frameworks, der Modellkonfiguration, anderen optionalen Eigenschaften und optional einer benutzerdefinierten Python-Raster-Funktion für die Modellinferenz aktualisieren. Informationen über die erforderlichen und optionalen Parameter in der .emd-Datei finden Sie unten im Abschnitt Esri.
  3. Führen Sie die Raster-Analyse-Inferenzwerkzeuge über Map Viewer Classic, ArcGIS API for Python, ArcGIS REST API oder ArcGIS Pro aus.
    1. Verwenden Sie das Raster-Analysewerkzeug Objekte mit Deep Learning erkennen, Pixel mit Deep Learning klassifizieren oder Objekte mit Deep Learning klassifizieren, um die Bilddaten zu verarbeiten. Wenn das trainierte Modell benutzerdefinierte Python-Raster-Funktionen mit zusätzlichen Variablen für die Feineinstellung der Empfindlichkeit, z. B. Padding oder Konfidenzschwellenwert, enthält, werden diese Variablen im Dialogfeld für die Benutzereingabe des ArcGIS Pro- oder Map Viewer Classic-Raster-Analysewerkzeugs angezeigt. Der Datentyp, z. B. Zeichenfolge oder numerisch, wird in der Python-Raster-Funktion angegeben.
      Hinweis:

      Das Deep-Learning-Framework muss auf den Computern für den Raster Analysis-Service installiert werden, damit die Inferenzwerkzeuge ausgeführt werden können. Der Grund dafür ist, dass die Inferenzlogik in die Python-API des Frameworks integriert ist und für die Berechnung erforderlich ist.

Esri-Modelldefinitionsdatei

Die .emd-Datei 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, geändert werden. Die Datei enthält erforderliche und optionale Parameter, wie in der folgenden Tabelle beschrieben.

Parameter der ModelldefinitionsdateiErläuterung

Framework

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

Die folgenden Deep-Learning-Frameworks werden unterstützt:

  • TensorFlow
  • Keras
  • PyTorch

PythonInferenceFunctionPython

ModelConfiguration

Der Name der Modellkonfiguration.

Die Modellkonfiguration definiert die Modelleingaben und -ausgaben, die Inferenzlogik und die Vermutungen zu den Modelleingaben und -ausgaben. Es gibt Open-Source-Deep-Learning-Workflows, die die Standardkonfiguration der Eingaben und Ausgaben und die Standard-Inferenzlogik definieren. ArcGIS unterstützt eine Reihe vordefinierter Konfigurationen:

TensorFlow

  • ObjectDetectionAPI
  • DeepLab

Keras

  • MaskRCNN
  • KerasClassifier

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

ModelFile

Der Pfad zu einer Datei für ein trainiertes Deep-Learning-Modell. Da viele Modell-Framework-Dateiformate auf Protokollpuffern basieren, ist das trainierte Deep-Learning-Modell eine .pb-Datei. Es werden jedoch auch andere Dateiformate unterstützt.

ModelType

Der Typ des Modells. Folgende Typen sind möglich:

  • ImageClassification: Zum Klassifizieren von Pixeln
  • ObjectDetection: Zum Ermitteln von Objekten oder Features
  • ObjectClassification: Zur Klassifizierung von Objekten oder Features

InferenceFunction

(optional)

Der Pfad der Inferenzfunktion.

Eine Inferenzfunktion kann die Datei mit den trainierten Modelldaten auswerten und stellt die Inferenzlogik bereit. In den ArcGIS-Raster-Analyse-Werkzeugen für Deep-Learning werden sechs Inferenzfunktionen unterstützt:

  • 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 Ihr Modell mit einer Deep-Learning-Modellkonfiguration 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.

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.

Im folgenden Beispiel für eine Modelldefinitionsdatei (.emd) wird eine Standard-Modellkonfiguration verwendet:

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

DLPK-Element (Deep-Learning-Paket)

Deep-Learning-Raster-Analysewerkzeuge erfordern ein Deep-Learning-Paket (.dlpk) als Eingabe. Ein Deep-Learning-Modellpaket besteht aus der JSON-Datei mit der Esri Modelldefinition (.emd), der binären Datei des Deep-Learning-Modells und optional aus der zu verwendenden Python-Raster-Funktion.

Sie können ein Deep-Learning-Paket direkt aus ArcGIS Pro freigeben. Wenn alle Komponenten bereit sind, können Sie alle Dateien in einer .zip-Datei komprimieren und die .zip-Datei als .dlpk-Element in Ihr Portal hochladen. Weitere Informationen finden Sie unter Hinzufügen von Dateien als Elemente. Sie können auch die Dateierweiterung .zip in .dlpk ändern, damit der Elementtyp .dlpk beim Hinzufügen des Elements automatisch erkannt wird.

Hinweis:

Sie müssen alle im Deep-Learning-Modellpaket enthaltenen Dateien auf der Ebene des Stammordners komprimieren.