Support Vector Machine-Klassifikator trainieren (Spatial Analyst)

Mit der Spatial Analyst-Lizenz verfügbar.

Mit der Image Analyst-Lizenz verfügbar.

Zusammenfassung

Generiert eine Esri Classifier Definition-Datei (.ecd) anhand der Klassifizierungsdefinition für Support Vector Machine (SVM).

Verwendung

  • Der SVM-Klassifikator ist eine moderne Methode für überwachte Klassifizierung. Er eignet sich gut für die segmentierte Raster-Eingabe, kann jedoch auch Standardbilddaten verarbeiten. Hierbei handelt es sich um eine Klassifizierungsmethode, die häufig in der Forschungs-Community verwendet wird.

  • Für die Eingabe von Standardbildern akzeptiert das Werkzeug Multiband-Bilddaten mit beliebiger Bittiefe. Dabei erfolgt die SVM-Klassifizierung auf Grundlage der Trainings-Feature-Datei auf Pixelbasis.

  • Indexbild und damit verbundene Segmentattribute von segmentierten Rastern (Schlüssel ist auf Segmentiert festgelegt) berechnet das Werkzeug aus dem RGB-segmentierten Raster. Die Berechnung der Attribute erfolgt zwecks Generierung der Klassifikatordefinitionsdatei, die in einem separaten Klassifizierungswerkzeug verwendet werden kann. Die Attribute des jeweiligen Segments lassen sich aus einem beliebigen von Esri unterstützten Bild berechnen.

  • Gegenüber der Maximum-Likelihood-Klassifizierung hat der SVM-Klassifikator einige Vorteile vorzuweisen:

    • Der SVM-Klassifikator benötigt weniger Proben und erfordert keine normale Verteilung der Proben.
    • Er ist weniger anfällig für Rauschen, korrelierte Bänder oder eine unausgewogene Anzahl oder Größe von Training-Sites in der jeweiligen Klasse.

  • Als Eingabe werden beliebige von Esri unterstützte Raster akzeptiert, darunter Raster-Produkte, segmentierte Raster, Mosaike, Image-Services oder generische Raster-Datasets. Die segmentierten Raster müssen 8-Bit-Raster mit 3 Bändern sein.

  • Verwenden Sie zum Erstellen der Trainingsgebietdatei den Bereich Trainingsgebiet-Manager im Dropdown-Menü Klassifizierungswerkzeuge.

  • Der Parameter Segmentattribute ist nur aktiv, wenn eine der Raster-Layer-Eingaben ein segmentiertes Bild ist.

  • Zum Klassifizieren von Zeitserien-Raster-Daten mit dem CCDC-Algorithmus (Continuous Detection and Classification) ist ein aus zwei Schritten bestehender Prozess erforderlich. Führen Sie zuerst das Werkzeug Veränderungen mit CCDC analysieren aus, das mit einer Lizenz für die Erweiterung Image Analyst verfügbar ist. Verwenden Sie anschließend die dortigen Ergebnisse als Eingabe für dieses Trainingswerkzeug.

    Die Trainingsgebietsdaten müssen zu mehreren Zeitpunkten mit dem Trainingsgebiet-Manager erfasst werden. Der Dimensionswert für jede Stichprobe wird in einem Feld in der Trainingsgebiet-Feature-Class aufgelistet, das im Parameter Dimensionswertefeld angegeben wird.

Parameter

BeschriftungErläuterungDatentyp
Eingabe-Raster

Das Raster-Dataset, das klassifiziert werden soll.

Als Eingabe eignet sich am besten ein segmentiertes 3-Band, 8-Bit-Raster-Dataset, bei dem alle Pixel desselben Segments dieselbe Farbe aufweisen. Auch ein 1-Band-, 8-Bit-Graustufen-segmentiertes Raster kann als Eingabe dienen. Steht kein segmentiertes Raster zur Verfügung, können Sie ein beliebiges von Esri unterstütztes Raster-Dataset verwenden.

Raster Layer; Mosaic Layer; Image Service; String
Eingabe-Trainingsgebietdatei

Die Trainingsgebietdatei bzw. der Trainingsgebiet-Layer, der die Training-Sites abgrenzt.

Die Trainingsgebiete können entweder in Shapefiles oder in Feature-Classes enthalten sein. In der Trainingsgebiet-Datei werden die folgenden Feldnamen benötigt:

  • classname: Ein Textfeld, das den Namen der Klassenkategorie angibt.
  • classvalue: Ein "Long Integer"-Feld, das den ganzzahligen Wert für die einzelnen Klassenkategorien enthält.

Feature Layer
Ausgabe-Klassifikatordefinitionsdatei

Die Ausgabedatei im JSON-Format, die Attributinformationen, Statistiken, Hyperebenenvektoren und weitere Daten für den Klassifikator enthält. Dabei wird eine .ecd-Datei erstellt.

File
Zusätzliches Eingabe-Raster
(optional)

Zusatz-Raster-Datasets, wie ein Multispektralbild oder ein DEM, werden integriert, um Attribute und weitere erforderliche Informationen für die Klassifizierung zu generieren. Dieser Parameter ist optional.

Raster Layer; Mosaic Layer; Image Service; String
Maximale Anzahl von Stichproben pro Klasse
(optional)

Die maximale Anzahl von Beispielen, die zum Definieren der jeweiligen Klasse verwendet werden soll.

Empfehlenswert ist ein Standardwert von 500, wenn es sich bei den Eingaben um unsegmentierte Raster handelt. Ein Wert kleiner oder gleich 0 bedeutet, dass zum Trainieren des Klassifikators alle in den Training-Sites enthaltenen Stichproben verwendet werden.

Long
Verwendete Segmentattribute
(optional)

Gibt die Attribute an, die in die dem Ausgabe-Raster zugeordnete Attributtabelle aufgenommen werden.

Dieser Parameter ist nur aktiv, wenn die Schlüsseleigenschaft Segmentiert auf das Eingabe-Raster festgelegt ist. Wenn die einzige Eingabe für das Werkzeug ein segmentiertes Bild ist, lauten die Standardattribute Durchschnittliche Chromatizität, Pixelanzahl, Kompaktheit und Rechtwinkligkeit. Wenn ein Wert für Zusätzliches Eingabe-Raster als Eingabe mit einem segmentierten Bild einbezogen wird, sind die Attribute Digitaler Mittelwert und Standardabweichung ebenfalls verfügbar.

  • Konvergierender FarbwertDie RGB-Farbwerte werden segmentbezogen aus dem Eingabe-Raster abgeleitet.
  • Durchschnittlicher DigitalnummernwertDer digitale Mittelwert (DN) wird aus dem optionalen Pixelbild segmentbezogen abgeleitet.
  • StandardabweichungDie Standardabweichung wird aus dem optionalen Pixelbild, segmentbezogen abgeleitet.
  • PixelanzahlDie Anzahl der im Segment enthaltenen Pixel, segmentbezogen.
  • KompaktheitDer Grad der Kompaktheit oder Kreisförmigkeit eines Segments, segmentbezogen. Die Werte liegen zwischen 0 und 1, wobei 1 einem Kreis entspricht.
  • RechtwinkligkeitDer Grad der Rechteckigkeit des Segments, segmentbezogen. Die Werte liegen zwischen 0 und 1, wobei 1 einem Rechteck entspricht.
String
Dimensionswertefeld
(optional)

Enthält Dimensionswerte in der Eingabe-Trainingsgebiet-Feature-Class.

Dieser Parameter ist erforderlich, um mit dem Veränderungsanalyse-Raster, das vom Werkzeug Veränderungen mit CCDC analysieren in der Toolbox Image Analyst ausgegeben wird, eine Zeitserie von Raster-Daten zu klassifizieren.

Field

TrainSupportVectorMachineClassifier(in_raster, in_training_features, out_classifier_definition, {in_additional_raster}, {max_samples_per_class}, {used_attributes}, {dimension_value_field})
NameErläuterungDatentyp
in_raster

Das Raster-Dataset, das klassifiziert werden soll.

Als Eingabe eignet sich am besten ein segmentiertes 3-Band, 8-Bit-Raster-Dataset, bei dem alle Pixel desselben Segments dieselbe Farbe aufweisen. Auch ein 1-Band-, 8-Bit-Graustufen-segmentiertes Raster kann als Eingabe dienen. Steht kein segmentiertes Raster zur Verfügung, können Sie ein beliebiges von Esri unterstütztes Raster-Dataset verwenden.

Raster Layer; Mosaic Layer; Image Service; String
in_training_features

Die Trainingsgebietdatei bzw. der Trainingsgebiet-Layer, der die Training-Sites abgrenzt.

Die Trainingsgebiete können entweder in Shapefiles oder in Feature-Classes enthalten sein. In der Trainingsgebiet-Datei werden die folgenden Feldnamen benötigt:

  • classname: Ein Textfeld, das den Namen der Klassenkategorie angibt.
  • classvalue: Ein "Long Integer"-Feld, das den ganzzahligen Wert für die einzelnen Klassenkategorien enthält.

Feature Layer
out_classifier_definition

Die Ausgabedatei im JSON-Format, die Attributinformationen, Statistiken, Hyperebenenvektoren und weitere Daten für den Klassifikator enthält. Dabei wird eine .ecd-Datei erstellt.

File
in_additional_raster
(optional)

Zusatz-Raster-Datasets, wie ein Multispektralbild oder ein DEM, werden integriert, um Attribute und weitere erforderliche Informationen für die Klassifizierung zu generieren. Dieser Parameter ist optional.

Raster Layer; Mosaic Layer; Image Service; String
max_samples_per_class
(optional)

Die maximale Anzahl von Beispielen, die zum Definieren der jeweiligen Klasse verwendet werden soll.

Empfehlenswert ist ein Standardwert von 500, wenn es sich bei den Eingaben um unsegmentierte Raster handelt. Ein Wert kleiner oder gleich 0 bedeutet, dass zum Trainieren des Klassifikators alle in den Training-Sites enthaltenen Stichproben verwendet werden.

Long
used_attributes
[used_attributes;used_attributes,...]
(optional)

Gibt die Attribute an, die in die dem Ausgabe-Raster zugeordnete Attributtabelle aufgenommen werden.

  • COLORDie RGB-Farbwerte werden segmentbezogen aus dem Eingabe-Raster abgeleitet.
  • MEANDer digitale Mittelwert (DN) wird aus dem optionalen Pixelbild segmentbezogen abgeleitet.
  • STDDie Standardabweichung wird aus dem optionalen Pixelbild, segmentbezogen abgeleitet.
  • COUNTDie Anzahl der im Segment enthaltenen Pixel, segmentbezogen.
  • COMPACTNESSDer Grad der Kompaktheit oder Kreisförmigkeit eines Segments, segmentbezogen. Die Werte liegen zwischen 0 und 1, wobei 1 einem Kreis entspricht.
  • RECTANGULARITYDer Grad der Rechteckigkeit des Segments, segmentbezogen. Die Werte liegen zwischen 0 und 1, wobei 1 einem Rechteck entspricht.

Dieser Parameter ist nur aktiviert, wenn die Schlüsseleigenschaft Segmentiert auf das Eingabe-Raster festgelegt ist. Wenn die einzige Eingabe für das Werkzeug ein segmentiertes Bild ist, lauten die Standardattribute COLOR, COUNT, COMPACTNESS und RECTANGULARITY. Wenn ein in_additional_raster-Wert als Eingabe mit einem segmentierten Bild einbezogen wird, sind die Attribute MEAN und STD ebenfalls verfügbar.

String
dimension_value_field
(optional)

Enthält Dimensionswerte in der Eingabe-Trainingsgebiet-Feature-Class.

Dieser Parameter ist erforderlich, um mit dem Veränderungsanalyse-Raster, das vom Werkzeug Veränderungen mit CCDC analysieren in der Toolbox Image Analyst ausgegeben wird, eine Zeitserie von Raster-Daten zu klassifizieren.

Field

Codebeispiel

TrainSupportVectorMachineClassifier – Beispiel 1 (Python-Fenster)

In diesem Python-Beispiel wird zum Klassifizieren eines segmentierten Rasters der SVM-Klassifikator verwendet.

import arcpy
from arcpy.sa import *

arcpy.gp.TrainSupportVectorMachineClassifier(
    "c:/test/moncton_seg.tif", "c:/test/train.gdb/train_features",
    "c:/output/moncton_sig_SVM.ecd", "c:/test/moncton.tif", "10",
    "COLOR;MEAN;STD;COUNT;COMPACTNESS;RECTANGULARITY")
TrainSupportVectorMachineClassifier – Beispiel 2 (eigenständiges Skript)

In diesem Python-Skript wird zum Klassifizieren eines segmentierten Rasters der SVM-Klassifikator verwendet.

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


# Set local variables
inSegRaster = "c:/test/moncton_seg.tif"
train_features = "c:/test/train.gdb/train_features"
out_definition = "c:/output/moncton_sig.ecd"
in_additional_raster = "c:/moncton.tif"
maxNumSamples = "10"
attributes = "COLOR;MEAN;STD;COUNT;COMPACTNESS;RECTANGULARITY"

#Execute
arcpy.gp.TrainSupportVectorMachineClassifier(
    inSegRaster, train_features, out_definition, 
    in_additional_raster, maxNumSamples, attributes)
TrainSupportVectorMachineClassifier – Beispiel 3 (eigenständiges Skript)

In diesem Python-Skript wird der SVM-Klassifikator verwendet, um mit der Ausgabe des Werkzeugs Veränderungen mit CCDC analysieren ein multidimensionales Zeitserien-Raster zu klassifizieren.

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

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


# Set local variables
in_changeAnalysisRaster = "c:/test/LandsatCCDC.crf"
train_features = "c:/test/train.gdb/train_features"
out_definition = "c:/output/change_detection.ecd"
additional_raster = ''
attributes = None
dimension_field = "DateTime"

# Execute
arcpy.sa.TrainSupportVectorMachineClassifier(
    in_changeAnalysisRaster, train_features, out_definition, 
	additional_raster, attributes, dimension_field)

Lizenzinformationen

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

Verwandte Themen