Objekte mit Deep Learning erkennen (Image Analyst)

Mit der Image Analyst-Lizenz verfügbar.

Zusammenfassung

Führt ein trainiertes Deep-Learning-Modell auf einem Eingabe-Raster zur Erstellung einer Feature-Class aus, die die gefundenen Objekte enthält. Bei den Features kann es sich um Rahmen oder Polygone um die gefundenen Objekte oder um Punkte im Mittelpunkt der Objekte handeln.

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 (z. B. TensorFlow, PyTorch oder Keras) in der Python-Umgebung von ArcGIS Pro installieren, da sonst beim Hinzufügen der Esri Model Definition-Datei zum Werkzeug ein Fehler auftritt. Fordern Sie die entsprechenden Framework-Informationen vom Ersteller der Esri Model Definition-Datei an.

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

  • Mit diesem Werkzeug wird eine Deep-Learning-Python-API eines Drittanbieters (wie TensorFlow, 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. Folgen Sie dazu den Beispielen und Anweisungen im GitHub-Repository.

  • 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.

  • Unten finden Sie ein Beispiel für die .emd-Datei.

    {
        "Framework" :"TensorFlow",
        "ModelConfiguration": "ObjectDetectionAPI",
        
        "ModelFile": ".\\CoconutTreeDetection.model",
        "ModelType": "ObjectDetection",
        "ImageHeight": 850,
        "ImageWidth": 850,
        "ExtractBands": [0,1,2],
        "ImageSpaceUsed": "MAP_SPACE"
        "Classes": [
        {
            "Value": 0,
            "Name": "CoconutTree",
            "Color": [0, 255, 0]
        }
        ]
    }
  • 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 Datei .emd mithilfe des Parameters ImageSpaceUsed angeben, für den Sie MAP_SPACE oder PIXEL_SPACE festlegen können.

  • Durch größere Batches kann die Leistung des Werkzeugs erhöht werden. Aber größere Batches belegen mehr Arbeitsspeicher. Wird die Fehlermeldung "Nicht genügend Arbeitsspeicher" angezeigt, verwenden Sie kleinere Batches. Der Wert batch_size kann über den Parameter Argumente angepasst werden.

  • Batch-Größen sind quadratische Zahlen, z. B. 1, 4, 9, 16, 25, 64 und so weiter. Wenn der Eingabewert kein perfektes Quadrat ist, wird der höchstmögliche quadratische Wert verwendet. Wird beispielsweise ein Wert von 6 angegeben, bedeutet dies, dass die Batch-Größe auf 4 festgelegt wird.

  • Verwenden Sie den Parameter Non Maximum Suppression, um doppelte Features in der Objekterkennung zu identifizieren und entfernen. Weitere Informationen über diesen Parameter finden Sie im Werkzeug Non Maximum Suppression im Abschnitt "Verwendung".

  • Verwenden Sie die Option Verarbeitungsmodus des Parameters Nur Kandidatenoptionen verarbeiten, wenn Objekte nur in bestimmten Bildern des Mosaik-Datasets erkannt werden sollen. Das Werkzeug Mosaik-Kandidaten berechnen ermittelt in einem Mosaik-Dataset und Image-Service die Bildkandidaten, die den Mosaikbereich am besten darstellen.

  • 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.

  • 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 ArcGIS Pro.

Parameter

BeschriftungErläuterungDatentyp
Eingabe-Raster

Das Eingabebild für die Ermittlung 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 der erkannten Objekte

Die Ausgabe-Feature-Class, die Geometrien enthält, die die im Eingabebild erkannten Objekte umkreisen.

Feature Class
Modelldefinition

Bei diesem Parameter kann es sich um eine Esri Model Definition-Datei 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
Argumente
(optional)

Die Informationen aus dem Parameter Modelldefinition werden zum Füllen dieses Parameters verwendet. Diese Argumente variieren je nach Modellarchitektur. Für in ArcGIS trainierte Modelle werden die folgenden Modellargumente unterstützt. Vortrainierte ArcGIS-Modelle und benutzerdefinierte Deep-Learning-Modelle enthalten ggf. zusätzliche von dem Werkzeug unterstützte Argumente.

  • padding: Die Anzahl von Pixeln am Rahmen von Bildkacheln, aus denen Vorhersagen für benachbarte Kacheln verschmolzen werden. Um die Ausgabe zu glätten und gleichzeitig Artefakte zu reduzieren, erhöhen Sie den Wert. Der Maximalwert für Padding ist die Hälfte des Wertes für die Kachelgröße. Das Argument ist für alle Modellarchitekturen verfügbar.
  • threshold: Erkennungen, deren Konfidenzwert höher als dieser Schwellenwert ist, sind im Ergebnis enthalten. Zulässige Werte liegen zwischen 0 und 1,0. Das Argument ist für alle Modellarchitekturen verfügbar.
  • 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.
  • nms_overlap: Die maximale Überlappungsrate für zwei überlappende Features, die als Verhältnis von Schnittfläche zu Vereinigungsfläche definiert ist. Die Standardeinstellung ist 0,1. Das Argument ist für alle Modellarchitekturen verfügbar.
  • exclude_pad_detections: Wenn "True" ausgewählt ist, werden potenziell gekürzte Erkennungen in der Nähe der Kanten im aufgefüllten Bereich von Bildschnipseln gefiltert. Das Argument ist nur für SSD, RetinaNet, YOLOv3, DETReg, MMDetection und Faster RCNN 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.
  • tile_size: Die Breite und Höhe der Bildkacheln, in die die Bilddaten für Vorhersagen unterteilt werden Das Argument ist nur für MaskRCNN verfügbar.
  • merge_policy: Die Richtlinie für das Zusammenführen erweiterter Vorhersagen. Die verfügbaren Optionen lauten "mean", "max" und "min". Dies gilt nur bei Verwendung von Test-Time Augmentation. Das Argument ist nur für MaskRCNN verfügbar.
  • output_classified_raster: Der Pfad zum Ausgabe-Raster. Das Argument ist nur für MaXDeepLab verfügbar.

Value Table
Non Maximum Suppression
(optional)

Gibt an, ob eine Non Maximum Suppression durchgeführt wird, bei der doppelte Objekte erkannt und doppelte Features mit einem niedrigeren Konfidenzwert entfernt werden.

  • Deaktiviert: Non Maximum Suppression wird nicht durchgeführt. Alle erkannten Objekte sind in der Ausgabe-Feature-Class enthalten. Dies ist die Standardeinstellung.
  • Aktiviert: Non Maximum Suppression wird durchgeführt, und doppelte Objekte werden erkannt und entfernt.

Boolean
Feld für die Konfidenzpunktzahl
(optional)

Der Name für das Feld in der Feature-Class, das die Konfidenzpunktzahlen enthält, die von der Objekterkennungsmethode ausgegeben werden.

Dieser Parameter wird benötigt, wenn der Parameter Non Maximum Suppression aktiviert ist.

String
Klassenwertefeld
(optional)

Der Name des Klassenwertefeldes in der Eingabe-Feature-Class.

Wenn kein Feldname angegeben wurde, wird das Feld Classvalue oder Value verwendet. Wenn diese Felder nicht vorhanden sind, werden alle Datensätze als zu einer Klasse gehörend identifiziert.

String
Max. Überlappungsrate
(optional)

Die maximale Überlappungsrate für zwei überlappende Features, die als Verhältnis von Schnittfläche zu Vereinigungsfläche definiert ist. Die Standardeinstellung ist 0.

Double
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.
  • Nur Kandidaten-Elemente verarbeitenEs werden nur Raster-Elemente, die in der Attributtabelle des Eingabe-Mosaik-Datasets im Feld Candidate den Wert 1 oder 2 aufweisen, verarbeitet.
String

Abgeleitete Ausgabe

BeschriftungErläuterungDatentyp
Klassifiziertes Ausgabe-Raster

Das Ausgabe-Klassifikations-Raster für die Pixelklassifizierung. Der Name des Raster-Datasets entspricht dem Parameterwert Ausgabe der erkannten Objekte.

Dieser Parameter ist nur gültig, wenn der Modelltyp "Panoptische Segmentierung" lautet.

Raster Dataset

DetectObjectsUsingDeepLearning(in_raster, out_detected_objects, in_model_definition, {arguments}, {run_nms}, {confidence_score_field}, {class_value_field}, {max_overlap_ratio}, {processing_mode})
NameErläuterungDatentyp
in_raster

Das Eingabebild für die Ermittlung 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_detected_objects

Die Ausgabe-Feature-Class, die Geometrien enthält, die die im Eingabebild erkannten Objekte umkreisen.

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
arguments
[arguments,...]
(optional)

Die Informationen aus dem Parameter in_model_definition werden zum Festlegen der Standardwerte für diesen Parameter verwendet. Diese Argumente variieren je nach Modellarchitektur. Für in ArcGIS trainierte Modelle werden die folgenden Modellargumente unterstützt. Vortrainierte ArcGIS-Modelle und benutzerdefinierte Deep-Learning-Modelle enthalten ggf. zusätzliche von dem Werkzeug unterstützte Argumente.

  • padding: Die Anzahl von Pixeln am Rahmen von Bildkacheln, aus denen Vorhersagen für benachbarte Kacheln verschmolzen werden. Um die Ausgabe zu glätten und gleichzeitig Artefakte zu reduzieren, erhöhen Sie den Wert. Der Maximalwert für Padding ist die Hälfte des Wertes für die Kachelgröße. Das Argument ist für alle Modellarchitekturen verfügbar.
  • threshold: Erkennungen, deren Konfidenzwert höher als dieser Schwellenwert ist, sind im Ergebnis enthalten. Zulässige Werte liegen zwischen 0 und 1,0. Das Argument ist für alle Modellarchitekturen verfügbar.
  • 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.
  • nms_overlap: Die maximale Überlappungsrate für zwei überlappende Features, die als Verhältnis von Schnittfläche zu Vereinigungsfläche definiert ist. Die Standardeinstellung ist 0,1. Das Argument ist für alle Modellarchitekturen verfügbar.
  • exclude_pad_detections: Wenn "True" ausgewählt ist, werden potenziell gekürzte Erkennungen in der Nähe der Kanten im aufgefüllten Bereich von Bildschnipseln gefiltert. Das Argument ist nur für SSD, RetinaNet, YOLOv3, DETReg, MMDetection und Faster RCNN 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.
  • tile_size: Die Breite und Höhe der Bildkacheln, in die die Bilddaten für Vorhersagen unterteilt werden Das Argument ist nur für MaskRCNN verfügbar.
  • merge_policy: Die Richtlinie für das Zusammenführen erweiterter Vorhersagen. Die verfügbaren Optionen lauten "mean", "max" und "min". Dies gilt nur bei Verwendung von Test-Time Augmentation. Das Argument ist nur für MaskRCNN verfügbar.
  • output_classified_raster: Der Pfad zum Ausgabe-Raster. Das Argument ist nur für MaXDeepLab verfügbar.

Value Table
run_nms
(optional)

Gibt an, ob eine Non Maximum Suppression durchgeführt wird, bei der doppelte Objekte erkannt und doppelte Features mit einem niedrigeren Konfidenzwert entfernt werden.

  • NO_NMSNon Maximum Suppression wird nicht durchgeführt. Alle erkannten Objekte sind in der Ausgabe-Feature-Class enthalten. Dies ist die Standardeinstellung.
  • NMSNon Maximum Suppression wird durchgeführt, und doppelte Objekte werden erkannt und entfernt.
Boolean
confidence_score_field
(optional)

Der Name für das Feld in der Feature-Class, das die Konfidenzpunktzahlen enthält, die von der Objekterkennungsmethode ausgegeben werden.

Dieser Parameter ist erforderlich, wenn der Parameter run_nms auf NMS festgelegt ist.

String
class_value_field
(optional)

Der Name des Klassenwertefeldes in der Eingabe-Feature-Class.

Wenn kein Feldname angegeben wurde, wird das Feld Classvalue oder Value verwendet. Wenn diese Felder nicht vorhanden sind, werden alle Datensätze als zu einer Klasse gehörend identifiziert.

String
max_overlap_ratio
(optional)

Die maximale Überlappungsrate für zwei überlappende Features, die als Verhältnis von Schnittfläche zu Vereinigungsfläche definiert ist. Die Standardeinstellung ist 0.

Double
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.
  • PROCESS_CANDIDATE_ITEMS_ONLYEs werden nur Raster-Elemente, die in der Attributtabelle des Eingabe-Mosaik-Datasets im Feld Candidate den Wert 1 oder 2 aufweisen, verarbeitet.
String

Abgeleitete Ausgabe

NameErläuterungDatentyp
out_classified_raster

Das Ausgabe-Klassifikations-Raster für die Pixelklassifizierung. Der Name des Raster-Datasets entspricht dem Parameterwert out_detected_objects.

Dieser Parameter ist nur gültig, wenn der Modelltyp "Panoptische Segmentierung" lautet.

Raster Dataset

Codebeispiel

DetectObjectsUsingDeepLearning: Beispiel 1 (Python-Fenster)

In diesem Beispiel wird eine Feature-Class basierend auf der Objekterkennung erstellt.

# Import system modules
import arcpy
from arcpy.ia import *

# Check out the ArcGIS Image Analyst extension license
arcpy.CheckOutExtension("ImageAnalyst")

DetectObjectsUsingDeepLearning("c:/detectobjects/moncton_seg.tif", 
     "c:/detectobjects/moncton_seg.shp", "c:/detectobjects/moncton.emd", 
     "padding 0; threshold 0.5; batch_size 4", "NO_NMS", "Confidence", 
     "Class", 0, "PROCESS_AS_MOSAICKED_IMAGE")
DetectObjectsUsingDeepLearning: Beispiel 2 (eigenständiges Skript)

In diesem Beispiel wird eine Feature-Class basierend auf der Objekterkennung erstellt.

# Import system modules
import arcpy
from arcpy.ia import *

"""
Usage: DetectObjectsUsingDeepLearning( in_raster, out_detected_objects, 
       in_model_definition, {arguments}, {run_nms}, {confidence_score_field}, 
       {class_value_field}, {max_overlap_ratio}, {processing_mode})
"""

# Set local variables
in_raster = "c:/classifydata/moncton_seg.tif"
out_detected_objects = "c:/detectobjects/moncton.shp"
in_model_definition = "c:/detectobjects/moncton_sig.emd"
model_arguments = "padding 0; threshold 0.5; batch_size 4"
run_nms = "NO_NMS"
confidence_score_field = "Confidence"
class_value_field = "Class"
max_overlap_ratio = 0
processing_mode = "PROCESS_AS_MOSAICKED_IMAGE"
# Check out the ArcGIS Image Analyst extension license
arcpy.CheckOutExtension("ImageAnalyst")

# Execute 
DetectObjectsUsingDeepLearning( in_raster, out_detected_objects, 
   in_model_definition, model_arguments, run_nms, confidence_score_field, 
   class_value_field, max_overlap_ratio, processing_mode)

Lizenzinformationen

  • Basic: Erfordert Image Analyst
  • Standard: Erfordert Image Analyst
  • Advanced: Erfordert Image Analyst

Verwandte Themen