read_dl_classifier
— Lesen eines Deep Learning-basierten Klassifikators aus einer Datei.
read_dl_classifier
ist veraltet und wird nur aus Gründen
der Rückwärtskompatibilität zur Verfügung gestellt. Neue
Applikationen sollten stattdessen den allgemeinen CNN-basierten Operator
read_dl_model
verwenden.
read_dl_classifier( : : FileName : DLClassifierHandle)
Der Operator read_dl_classifier
liest ein Neuronales
Netzwerk, welches mit write_dl_classifier
geschrieben
wurde.
Als Ergebnis wird das Handle DLClassifierHandle
zurückgegeben.
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 erfordert das Neuronale Netzwerk spezifische Bildeigenschaften,
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 15 Pixeln und eine minimale Bildhöhe von 'image_width' 15 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 erfordert das Neuronale Netzwerk spezifische Bildeigenschaften,
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 47 Pixeln und eine minimale Bildhöhe von 'image_width' 47 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 Layern und macht dadurch ein Nachtrainieren notwendig.
Wie das Neuronale Netwerk 'pretrained_dl_classifier_enhanced' ist dieser Klassifikator für komplexere Aufgaben geeignet. Aber dieser Klassifikator hat aufgrund der verschiedenen Struktur den Vorteil, das Training stabiler zu machen und intern robuster zu sein.
Der Klassifikator erwartet Eingabebilder vom Typ 'real' .
Zusätzlich erfordert das Neuronale Netzwerk spezifische Bildeigenschaften,
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, aber eine minimale Bildbreite 'image_width' von 32 Pixeln und eine minimale Bildhöhe von 'image_width' 32 Pixeln wird empfohlen. 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. Trotz Fully-connected Layer führt eine Änderung der Bildgröße nicht zu einem Reinitialisieren der Gewichte.
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 Layern 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.
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 Legacy / DL 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.
FileName
(input_control) filename.read →
(string)
Dateiname.
Defaultwert: 'pretrained_dl_classifier_compact.hdl'
Werteliste: 'pretrained_dl_classifier_compact.hdl' , 'pretrained_dl_classifier_enhanced.hdl' , 'pretrained_dl_classifier_resnet50.hdl'
Dateiendung: .hdl
DLClassifierHandle
(output_control) dl_classifier →
(handle)
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_dl_model
,
read_class_mlp
,
read_class_svm
Deep Learning Inference