| Operatoren |
read_dl_classifier — Lesen eines Deep Learning-basierten Klassifikators aus einer Datei.
read_dl_classifier( : : FileName : DLClassifierHandle)
Der Operator read_dl_classifier liest ein Neuronales Netzwerk, welches mit write_dl_classifier 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:
Dieses Neuronale Netzwerk ist besonders effizient bezüglich des Speicherverbrauchs und der Laufzeit.
Der Klassifikator erwartet Eingabebilder vom Typ 'real'. Zusätzlich ist das Neuronale Netzwerk für spezifische Bildeigenschaften konzipiert, welche über get_dl_classifier_param abgefragt werden können. Hier werden die Defaultwerte gelistet, mit welchen der Klassifikator trainiert wurde:
'image_width': 224
'image_height': 224
'image_num_channels': 3
'image_range_min': -127
'image_range_max': 128
Dieses Neuronale Netzwerk enthält keinen Fully-connected Layer. Die Netzwerkarchitektur erlaubt Änderungen der Bilddimensionen, verlangt aber eine minimale Bildbreite 'image_width' von 17 Pixeln und eine minimale Bildhöhe von 'image_width' 17 Pixeln.
Dieses Neuronale Netzwerk hat mehr verborgene Layer als '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_param.
Der Klassifikator erwartet Eingabebilder vom Typ 'real'. Zusätzlich ist das Neuronale Netzwerk für spezifische Bildeigenschaften konzipiert, welche über get_dl_classifier_param abgefragt werden können. Hier werden die Defaultwerte gelistet, mit welchen der Klassifikator trainiert wurde:
'image_width': 224
'image_height': 224
'image_num_channels': 3
'image_range_min': -127
'image_range_max': 128
Die Netzwerkarchitektur erlaubt Änderungen der Bilddimensionen, verlangt aber eine minimale Bildbreite 'image_width' von 223 Pixeln und eine minimale Bildhöhe von 'image_width' 223 Pixeln. Von der Netzwerkarchitektur her gibt es keine Beschränkung der Bildgröße nach oben, aber zunehmende Bildgrößen erhöhen den Speicher- und Laufzeitbedarf erheblich. Jede Änderung der Bildgröße führt zu einem Reinitialisieren der Gewichte in den Fully-connected Layers und macht dadurch ein Nachtrainieren notwendig.
Oben aufgelistet sind die default Bilddimensionen und Grauwertbereiche, mit denen die Klassifikatoren trainiert wurden. Die Netzwerkarchitekturen erlauben jedoch auch verschiedene Bildgrößen, welche über set_dl_classifier_param gesetzt werden können. Für Netzwerke mit Fully-connected Layers wird dadurch ein Nachtrainieren notwendig. Netzwerke ohne Fully-connected Layer sind direkt auf verschiedenen Bildgrößen anwendbar. Jedoch wird für Bilder, deren Größe von der Bildgröße der Trainingsbilder abweicht, eine geringere Genauigkeit bei der Klassifikation erwartet.
Die konkreten Bilddimensionen des Netzwerkes können über get_dl_classifier_param abgefragt werden. Jedes Eingabebild muss den Anforderungen des Netzwerkes entsprechend übergeben werden. Für eine solche Vorverarbeitung steht die Prozedur preprocess_dl_classifier_images bereit.
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' des Klassifikators mittels set_dl_classifier_param verändert werden. (siehe das HDevelop Beispiel classify_pill_defects_deep_learning.hdev).
Das Neuronale Netzwerk wird aus der Datei FileName gelesen. Diese Datei wird sowohl im aktuellen Verzeichnis als auch im Ordner ($HALCONROOT/dl/) gesucht.
Man beachte, dass der laufzeitrelevante Parameter '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'.
Das Konzept der Deep Learning-basierten Klassifikation ist in der Einleitung zu Kapitel Deep Learning / Klassifikation beschrieben.
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.
Dateiname.
Defaultwert: 'pretrained_dl_classifier_compact.hdl'
Werteliste: 'pretrained_dl_classifier_compact.hdl', 'pretrained_dl_classifier_enhanced.hdl'
Dateiendung: .hdl
Handle des Deep Learning-basierten Klassifikators.
Sind die Parameterwerte korrekt, dann liefert read_dl_classifier den Wert 2 (H_MSG_TRUE). Gegebenenfalls wird eine Fehlerbehandlung durchgeführt.
set_dl_classifier_param, get_dl_classifier_param, apply_dl_classifier, train_dl_classifier_batch
read_class_mlp, read_class_svm
Deep Learning Inference
| Operatoren |