Skip To Content

Detect Objects Using Deep Learning

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.

Das Paket des trainierten Deep-Learning-Modells besteht aus einer JSON-Datei mit der Esri-Modelldefinition (.emd). Es enthält den Pfad zur Python-Raster-Funktion, die zur Verarbeitung der einzelnen Raster-Kacheln wird, sowie den Pfad zur binären Datei des trainierten Deep-Learning-Modells, die über Training-Software von Drittanbietern wie TensorFlow oder CNTK erstellt wird.

Verwendung

  • Sie müssen die dem jeweiligen Deep-Learning-Framework entsprechende Python-API (TensorFlow oder CNTK) in der Python-Umgebung von ArcGIS Pro 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 Ändern oder Klonen der Python-Umgebung finden Sie unter Python-Paketmanager.

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

  • Sie können auch eigene benutzerdefinierte Python-Module entwickeln, indem Sie den Beispielen und Anweisungen auf der Esri GitHub-Seite zu Python-Raster-FunktionenAnatomy of a Python raster function (Anatomie einer Python-Raster-Funktion) folgen.

  • Bei dem Parameter Modelldefinition kann es sich um eine JSON-Datei mit der Esri-Modelldefinition (.emd) oder um eine JSON-Zeichenfolge handeln. Eine JSON-Zeichenfolge ist nützlich, wenn Sie dieses Werkzeug auf dem Server verwenden, da Sie die JSON-Zeichenfolge einfügen können, statt die .emd-Datei hochzuladen.

  • See the sample below for the .emd file.

    {
        "Framework":"CNTK",
        "ModelConfiguration":"FasterRCNN",
        "InferenceFunction":"C:\\deep-learning\\PyRfx\\ObjectDetector.py",
        "ModelFile":".\\CoconutTreeDetection.model",
        "ExtractBands" : [0,1,2],
    
        "Classes" : [
        {
            "Value" : 0,
            "Name" : "CoconutTree",
            "Color" : [0, 255, 0]
        }
        ]
    }
  • Use the Non Maximum Suppression parameter to identify and remove duplicate features from the object detection.

  • Weitere Informationen zu Deep Learning finden Sie unter Deep Learning in ArcGIS Pro.

Syntax

DetectObjectsUsingDeepLearning(in_raster, out_detected_objects, in_model_definition, {arguments}, {run_nms}, {confidence_score_field}, {class_value_field}, {max_overlap_ratio})
ParameterErklärungDatentyp
in_raster

Input image used to detect objects.

Raster Dataset; Raster Layer; Mosaic Layer; Image Service; MapServer; Map Server Layer; Internet Tiled Layer
out_detected_objects

The output feature class that contains geometries circling the object or objects detected in the input image.

Feature Class
in_model_definition

Bei dem Parameter in_model_definition kann es sich um eine JSON-Datei mit der Esri-Modelldefinition (.emd) oder um eine JSON-Zeichenfolge handeln. Eine JSON-Zeichenfolge ist nützlich, wenn Sie dieses Werkzeug auf dem Server verwenden, da Sie die JSON-Zeichenfolge einfügen können, statt die .emd-Datei hochzuladen.

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 Funktionsargumente werden in der Python-Raster-Funktionsklasse definiert. Hier geben Sie zusätzliche Deep-Learning-Parameter und Argumente für Experimente und Verfeinerungen wie den Konfidenzschwellenwert zur Anpassung der Empfindlichkeit an. Die Namen der Argumente werden vom Werkzeug durch Lesen des Python-Moduls aufgefüllt.

Value Table
run_nms
(optional)

Performs non-maximum suppression, where duplicate objects are identified and the duplicate feature with a lower confidence value is removed.

  • NO_NMSAll objects that are detected will be in the output feature class. This is the default.
  • NMSRemoves duplicate objects that are detected.
Boolean
confidence_score_field
(optional)

The field in the feature class that contains the confidence scores as output by the object detection method.

This parameter is required when you use the NMS keyword for the run_nms parameter.

Field
class_value_field
(optional)

Das Klassenwertefeld in der Eingabe-Feature-Class. Wenn dieses Feld nicht festgelegt wird, verwendet das Werkzeug die Standard-Klassenwertefelder Classvalue und Value. Wenn diese Felder nicht vorhanden sind, werden alle Features wie eine Objektklasse behandelt.

Field
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

Codebeispiel

DetectObjectsUsingDeepLearning example 1 (Python window)

This example creates a feature class based on object detection.

# 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")
DetectObjectsUsingDeepLearning example 2 (stand-alone script)

This example creates a feature class based on object detection.

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

"""
Usage: DetectObjectsUsingDeepLearning( in_raster, out_detected_objects, 
       in_model_definition, {arguments})
"""

# 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"


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

# Execute 
DetectObjectsUsingDeepLearning( in_raster, out_detected_objects, 
in_model_definition, "padding 0;nms_threshold 0.2;conf_threshold 0")

Lizenzinformationen

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

Verwandte Themen