create_dl_model_detection — Erzeugen eines Deep Learning-Netzwerks zur Objektdetektion.
create_dl_model_detection( : : Backbone, NumClasses, DLModelDetectionParam : DLModelHandle)
Mit dem Operator create_dl_model_detection wird ein Deep
Learning-Netzwerk zur Objektdetektion erzeugt.
Für weitere Informationen zu Deep Learning-basierter Objektdetektion siehe
das Kapitel Deep Learning / Objektdetektion.
Das Handle dieses Netzwerks wird in DLModelHandle zurückgegeben.
Mit den unten aufgelisteten Parametern können das Modell und dessen
Architektur spezifiziert werden.
Um erfolgreich ein Modell zu erzeugen müssen dessen Backbone
und die Anzahl an Klassen, die das Modell unterscheiden können soll,
festgelegt werden.
Ersteres wird durch den Parameter Backbone übergeben,
welcher im Abschnitt „Mögliche Backbones“ genauer erläutert wird.
Letzteres ist durch den Parameter NumClasses gegeben.
Dieser Parameter legt die Anzahl Klassen fest, welche das Netzwerk
unterscheiden können soll und damit auch die Anzahl der Einträge in
'class_ids'.
Die Werte aller verwendbaren Parameter können über das Dictionary
DLModelDetectionParam spezifiziert werden.
Ein solcher Parameter ist z.B. 'instance_type', der die Art der im
Model verwendeten umschließenden Rechtecke bestimmt.
Die Liste mit den setzbaren Parametern findet sich im Abschnitt
„Setzbare Parameter“.
Für den Fall, dass ein Parameter nicht spezifiziert ist, wird dessen
Standardwert zur Erzeugung des Modells verwendet.
Zu beachten ist, dass Parameter, welche die Netzwerkarchitektur
beeinflussen, nicht mehr änderbar sind sobald das Netzwerk erzeugt wurde.
Alle weiteren Parameter können mit dem Operator set_dl_model_param
weiterhin gesetzt oder geändert werden.
Ein Überblick wie die Parameter gesetzt werden können und ihre Bedeutung
findet sich in get_dl_model_param.
Nach Erzeugung des Objektdetektions-Modells, wird type
automatisch auf 'detection' gesetzt.
Der Parameter Backbone bestimmt das Backbone,
das vom Netzwerk benutzt wird.
Detailliertere Informationen zum Backbone sind im Kapitel
Deep Learning / Objektdetektion zu finden. Kurz
zusammengefasst besteht das Backbone aus einem vortrainierten
Klassifikator, von dem nur die Layer zur Generierung der
Merkmalskarten behalten werden.
Daraus ergibt sich, dass ein Klassifikator als Merkmalsextraktor für
das angeschlossene Erkennungsnetzwerk eingelesen wird.
Daher gibt es in dem Netzwerk keine vollverbundenen Layer.
create_dl_model_detection hängt eine Merkmalspyramide
an das Backbone an. Diese Merkmalspyramide hat eine, vom
Backbone abhängige, minimale Anzahl an Ebenen (in untenstehender
Liste zu finden).
Die Netzwerkarchitekturen erlauben Änderungen bezüglich der
Bilddimensionen, aber da die Bildlängen für jede weitere Ebene
halbiert werden, müssen die Dimensionen 'image_width' und
'image_height' ein ganzzahliges Mehrfaches von
sein.
Dabei steht für die höchste Ebene, an welche die
Merkmalspyramide anbaut.
Für jedes Backbone hat einen minimalen Wert (siehe
die Liste unten), welcher über max_level erhöht werden kann.
Folgende vortrainierte Klassifikatoren werden von HALCON zur Verfügung gestellt und können als Backbone eingelesen werden:
Dieses neuronale Netzwerk ist dafür entworfen speicher- und
laufzeiteffizient zu sein.
Dieses Backbone erwartet Bilder des Typs 'real'.
Zusätzlich ist das Backbone auf gewisse Bildeigenschaften ausgelegt.
Die entsprechenden Werte können mit get_dl_model_param
abgerufen werden. Hier sind die Standardwerte, mit denen der
Klassifikator trainiert wurde, aufgelistet:
'image_width': 224
'image_height': 224
'image_num_channels': 3
'image_range_min': -127
'image_range_max': 128
Die Merkmalspyramide geht bei diesem Backbone mindestens bis zur 4. Ebene.
Dieses neuronale Netzwerk hat mehr verborgene Layer als 'pretrained_dl_classifier_compact.hdl' und es kann daher angenommen werden, dass es sich besser für komplexe Aufgaben eignet. Allerdings werden dadurch mehr Laufzeit und Speicherplatz benötigt.
Dieses Netzwerk erwartet Bilder des Typs 'real'.
Zusätzlich ist das Backbone auf gewisse Bildeigenschaften ausgelegt.
Die entsprechenden Werte können mit get_dl_model_param
abgerufen werden. Hier sind die Standardwerte, mit denen der
Klassifikator trainiert wurde, aufgelistet:
'image_width': 224
'image_height': 224
'image_num_channels': 3
'image_range_min': -127
'image_range_max': 128
Die Merkmalspyramide geht bei diesem Backbone mindestens bis zur 5. Ebene.
Wie das Netzwerk 'pretrained_dl_classifier_enhanced.hdl' ist dieses Netzwerk für komplexere Aufgaben ausgelegt. Da sich die Struktur aber unterscheidet, entsteht hier der Vorteil, dass das Training stabiler und das Netzwerk intern robuster ist.
Dieses Netzwerk erwartet Bilder des Typs 'real'.
Zusätzlich ist das Backbone auf gewisse Bildeigenschaften ausgelegt.
Die entsprechenden Werte können mit get_dl_model_param
abgerufen werden. Hier sind die Standardwerte, mit denen der
Klassifikator trainiert wurde, aufgelistet:
'image_width': 224
'image_height': 224
'image_num_channels': 3
'image_range_min': -127
'image_range_max': 128
Die Merkmalspyramide geht bei diesem Backbone mindestens bis zur 5. Ebene.
Parameter, die bei der Erzeugung eines Modells mit
create_dl_model_detection gesetzt werden können
(siehe get_dl_classifier_param für Erklärungen):
'anchor_angles'
'anchor_aspect_ratios' (veraltet: 'aspect_ratios')
'anchor_num_subscales' (veraltet: 'num_subscales')
'bbox_heads_weight', 'class_heads_weight'
'capacity'
'class_ids'
'class_ids_no_orientation'
'class_weights'
'ignore_direction'
'image_height', 'image_width'
'image_num_channels'
'instance_type'
'max_level', 'min_level'
'max_num_detections'
'max_overlap'
'max_overlap_class_agnostic'
'min_confidence'
Zum erfolgreichen Setzen von 'gpu' Parametern werden cuDNN und
cuBLAS benötigt, d.h. zum Setzen des Parameters
GenParamName 'runtime' auf VarRef('gpu').
Für weitere Details wird auf den „Installation Guide“, Abschnitt
„Requirements for Deep Learning“, verwiesen.
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.
Backbone (input_control) filename.read → (string)
Deep Learning Klassifikator, genutzt als Backbone-Netzwerk.
Defaultwert: 'pretrained_dl_classifier_compact.hdl'
Werteliste: 'pretrained_dl_classifier_compact.hdl', 'pretrained_dl_classifier_enhanced.hdl', 'pretrained_dl_classifier_resnet50.hdl'
Dateiendung: .hdl
NumClasses (input_control) integer → (integer)
Anzahl von Klassen.
Defaultwert: 3
DLModelDetectionParam (input_control) dict → (handle)
Parameter für das Objektdetektion-Modell.
Defaultwert: []
DLModelHandle (output_control) dl_model → (handle)
Deep Learning-Modell für die Objektdetektion.
Sind die Parameterwerte korrekt, dann liefert
create_dl_model_detection den Wert 2 (H_MSG_TRUE). Gegebenenfalls wird eine
Fehlerbehandlung durchgeführt.
set_dl_model_param,
get_dl_model_param,
apply_dl_model,
train_dl_model_batch
Deep Learning Training