KlassenKlassen | | Operatoren

read_dl_classifierread_dl_classifierReadDlClassifierReadDlClassifier (Operator)

Name

read_dl_classifierread_dl_classifierReadDlClassifierReadDlClassifier — Lesen eines Deep Learning-basierten Klassifikators aus einer Datei.

Signatur

read_dl_classifier( : : FileName : DLClassifierHandle)

Herror read_dl_classifier(const char* FileName, Hlong* DLClassifierHandle)

Herror T_read_dl_classifier(const Htuple FileName, Htuple* DLClassifierHandle)

void ReadDlClassifier(const HTuple& FileName, HTuple* DLClassifierHandle)

void HDlClassifier::HDlClassifier(const HString& FileName)

void HDlClassifier::HDlClassifier(const char* FileName)

void HDlClassifier::ReadDlClassifier(const HString& FileName)

void HDlClassifier::ReadDlClassifier(const char* FileName)

static void HOperatorSet.ReadDlClassifier(HTuple fileName, out HTuple DLClassifierHandle)

public HDlClassifier(string fileName)

void HDlClassifier.ReadDlClassifier(string fileName)

Beschreibung

Der Operator read_dl_classifierread_dl_classifierReadDlClassifierReadDlClassifierReadDlClassifier liest ein Neuronales Netzwerk, welches mit write_dl_classifierwrite_dl_classifierWriteDlClassifierWriteDlClassifierWriteDlClassifier geschrieben wurde.

HALCON stellt Neuronale Netzwerke bereit, welche auf einem großen Datensatz vortrainiert wurden. Diese Neuronalen Netzwerke sind gute Ausgangspunkte, um damit eigene Klassifikatoren für ein individuelles Klassifikationsproblem zu trainieren. Zur Verfügung stehen folgende Netzwerke:

'pretrained_dl_classifier_compact.hdl'"pretrained_dl_classifier_compact.hdl""pretrained_dl_classifier_compact.hdl""pretrained_dl_classifier_compact.hdl""pretrained_dl_classifier_compact.hdl":

Dieses Neuronale Netzwerk ist besonders effizient bezüglich des Speicherverbrauchs und der Laufzeit.

Der Klassifikator erwartet die Eingabebilder in einem bestimmten Format. Diese Parameter können über get_dl_classifier_paramget_dl_classifier_paramGetDlClassifierParamGetDlClassifierParamGetDlClassifierParam abgefragt werden:

'image_width': 224

'image_height': 224

'image_num_channels': 3

'image_range_min': -127

'image_range_max': 128

'pretrained_dl_classifier_enhanced.hdl'"pretrained_dl_classifier_enhanced.hdl""pretrained_dl_classifier_enhanced.hdl""pretrained_dl_classifier_enhanced.hdl""pretrained_dl_classifier_enhanced.hdl":

Dieses Neuronale Netzwerk hat mehr verborgene Layer als 'pretrained_dl_classifier_compact.hdl'"pretrained_dl_classifier_compact.hdl""pretrained_dl_classifier_compact.hdl""pretrained_dl_classifier_compact.hdl""pretrained_dl_classifier_compact.hdl" und ist daher für komplexere Klassifikationsaufgaben in der Regel besser geeignet. Dafür ist dieses Netzwerk rechen- und speicheraufwändiger. Dies führt zum Beispiel dazu, dass man im Vergleich zum obigen kompakten Netzwerk während des Trainings nur mit einer kleineren Batchgröße trainieren kann, siehe set_dl_classifier_paramset_dl_classifier_paramSetDlClassifierParamSetDlClassifierParamSetDlClassifierParam.

Der Klassifikator erwartet die Eingabebilder in einem bestimmten Format. Diese Parameter können über get_dl_classifier_paramget_dl_classifier_paramGetDlClassifierParamGetDlClassifierParamGetDlClassifierParam abgefragt werden:

'image_width': 224

'image_height': 224

'image_num_channels': 3

'image_range_min': -127

'image_range_max': 128

Jedes Eingabebild muss den Anforderungen des Netzwerkes entsprechend übergeben werden. Für eine solche Vorverarbeitung steht die Prozedur preprocess_dl_classifier_images bereit.

Falls man größere oder kleinere Bilder verwenden will, muss man die Bilder geeignet vorverarbeiten. Für größere Bilder bietet es sich an, zuerst den relevanten Teil der Bilder auszuschneiden und danach eine Skalierung durchzuführen.

Typischerweise ist es einfacher, schneller und besser, ein vortrainiertes Netzwerk zur Lösung einer Klassifikationsaufgabe zu verwenden, da es bereits generell nützliche Merkmale erlernt hat. Um ein bereits vortrainiertes Netzwerk nachzutrainieren, muss lediglich der Parameter 'classes'"classes""classes""classes""classes" des Klassifikators mittels set_dl_classifier_paramset_dl_classifier_paramSetDlClassifierParamSetDlClassifierParamSetDlClassifierParam verändert werden. (siehe das HDevelop Beispiel classify_pill_defects_deep_learning.hdev).

Das Neuronale Netzwerk wird aus der Datei FileNameFileNameFileNameFileNamefileName gelesen. Diese Datei wird sowohl im aktuellen Verzeichnis als auch im Ordner ($HALCONROOT/dl/) gesucht.

Man beachte, dass der laufzeitrelevante Parameter 'gpu'"gpu""gpu""gpu""gpu" des Klassifikators nicht in die Datei geschrieben wird. Stattdessen wird der Parameter beim Lesen mit dem Standardwert 0 initialisiert.

Die Standard-Dateiendung eines Deep Learning-basierten Klassifikators ist '.hdl'".hdl"".hdl"".hdl"".hdl".

Das Konzept der Deep Learning-basierten Klassifikation ist in der Einleitung zu Kapitel Deep Learning / Klassifikation beschrieben.

Ausführungsinformationen

Dieser Operator liefert ein Handle zurück. Es ist zu beachten, dass der Zustand einer Instanz dieses Handletyps durch bestimmte Operatoren geändert werden kann, obwohl das Handle als Eingabeparameter in diesen Operatoren verwendet wird.

Parameter

FileNameFileNameFileNameFileNamefileName (input_control)  filename.read HTupleHTupleHtuple (string) (string) (HString) (char*)

Dateiname.

Defaultwert: 'pretrained_dl_classifier_compact.hdl' "pretrained_dl_classifier_compact.hdl" "pretrained_dl_classifier_compact.hdl" "pretrained_dl_classifier_compact.hdl" "pretrained_dl_classifier_compact.hdl"

Werteliste: 'pretrained_dl_classifier_compact.hdl'"pretrained_dl_classifier_compact.hdl""pretrained_dl_classifier_compact.hdl""pretrained_dl_classifier_compact.hdl""pretrained_dl_classifier_compact.hdl", 'pretrained_dl_classifier_enhanced.hdl'"pretrained_dl_classifier_enhanced.hdl""pretrained_dl_classifier_enhanced.hdl""pretrained_dl_classifier_enhanced.hdl""pretrained_dl_classifier_enhanced.hdl"

Dateiendung: .hdl

DLClassifierHandleDLClassifierHandleDLClassifierHandleDLClassifierHandleDLClassifierHandle (output_control)  dl_classifier HDlClassifier, HTupleHTupleHtuple (integer) (IntPtr) (Hlong) (Hlong)

Handle des Deep Learning-basierten Klassifikators.

Ergebnis

Sind die Parameterwerte korrekt, dann liefert read_dl_classifierread_dl_classifierReadDlClassifierReadDlClassifierReadDlClassifier den Wert 2 (H_MSG_TRUE). Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.

Nachfolger

set_dl_classifier_paramset_dl_classifier_paramSetDlClassifierParamSetDlClassifierParamSetDlClassifierParam, get_dl_classifier_paramget_dl_classifier_paramGetDlClassifierParamGetDlClassifierParamGetDlClassifierParam, apply_dl_classifierapply_dl_classifierApplyDlClassifierApplyDlClassifierApplyDlClassifier, train_dl_classifier_batchtrain_dl_classifier_batchTrainDlClassifierBatchTrainDlClassifierBatchTrainDlClassifierBatch

Alternativen

read_class_mlpread_class_mlpReadClassMlpReadClassMlpReadClassMlp, read_class_svmread_class_svmReadClassSvmReadClassSvmReadClassSvm

Modul

Deep Learning Inference


KlassenKlassen | | Operatoren