create_dl_model_detectionT_create_dl_model_detectionCreateDlModelDetectionCreateDlModelDetection (Operator)

Name

create_dl_model_detectionT_create_dl_model_detectionCreateDlModelDetectionCreateDlModelDetection — Erzeugen eines Deep Learning-Netzwerks zur Objektdetektion.

Signatur

create_dl_model_detection( : : Backbone, NumClasses, DLModelDetectionParam : DLModelHandle)

Herror T_create_dl_model_detection(const Htuple Backbone, const Htuple NumClasses, const Htuple DLModelDetectionParam, Htuple* DLModelHandle)

void CreateDlModelDetection(const HTuple& Backbone, const HTuple& NumClasses, const HTuple& DLModelDetectionParam, HTuple* DLModelHandle)

void HDlModel::HDlModel(const HString& Backbone, Hlong NumClasses, const HDict& DLModelDetectionParam)

void HDlModel::HDlModel(const char* Backbone, Hlong NumClasses, const HDict& DLModelDetectionParam)

void HDlModel::HDlModel(const wchar_t* Backbone, Hlong NumClasses, const HDict& DLModelDetectionParam)   (Nur Windows)

void HDlModel::CreateDlModelDetection(const HString& Backbone, Hlong NumClasses, const HDict& DLModelDetectionParam)

void HDlModel::CreateDlModelDetection(const char* Backbone, Hlong NumClasses, const HDict& DLModelDetectionParam)

void HDlModel::CreateDlModelDetection(const wchar_t* Backbone, Hlong NumClasses, const HDict& DLModelDetectionParam)   (Nur Windows)

static void HOperatorSet.CreateDlModelDetection(HTuple backbone, HTuple numClasses, HTuple DLModelDetectionParam, out HTuple DLModelHandle)

public HDlModel(string backbone, int numClasses, HDict DLModelDetectionParam)

void HDlModel.CreateDlModelDetection(string backbone, int numClasses, HDict DLModelDetectionParam)

Beschreibung

Mit dem Operator create_dl_model_detectioncreate_dl_model_detectionCreateDlModelDetectionCreateDlModelDetectionCreateDlModelDetection 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 DLModelHandleDLModelHandleDLModelHandleDLModelHandleDLModelHandle 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 BackboneBackboneBackboneBackbonebackbone übergeben, welcher im Abschnitt „Mögliche Backbones“ genauer erläutert wird. Letzteres ist durch den Parameter NumClassesNumClassesNumClassesNumClassesnumClasses 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'"class_ids""class_ids""class_ids""class_ids".

Die Werte aller verwendbaren Parameter können über das Dictionary DLModelDetectionParamDLModelDetectionParamDLModelDetectionParamDLModelDetectionParamDLModelDetectionParam spezifiziert werden. Ein solcher Parameter ist z.B. 'instance_type'"instance_type""instance_type""instance_type""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_paramset_dl_model_paramSetDlModelParamSetDlModelParamSetDlModelParam weiterhin gesetzt oder geändert werden. Ein Überblick wie die Parameter gesetzt werden können und ihre Bedeutung findet sich in get_dl_model_paramget_dl_model_paramGetDlModelParamGetDlModelParamGetDlModelParam. Nach Erzeugung des Objektdetektions-Modells, wird typetypetypetypetype automatisch auf 'detection'"detection""detection""detection""detection" gesetzt.

Mögliche Backbones

Der Parameter BackboneBackboneBackboneBackbonebackbone 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_detectioncreate_dl_model_detectionCreateDlModelDetectionCreateDlModelDetectionCreateDlModelDetection 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'"image_width""image_width""image_width""image_width" und 'image_height'"image_height""image_height""image_height""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_levelmax_levelmax_levelmax_levelmaxLevel erhöht werden kann.

Folgende vortrainierte Klassifikatoren werden von HALCON zur Verfügung gestellt und können als Backbone eingelesen werden:

'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 dafür entworfen speicher- und laufzeiteffizient zu sein. Dieses Backbone erwartet Bilder des Typs 'real'"real""real""real""real". Zusätzlich ist das Backbone auf gewisse Bildeigenschaften ausgelegt. Die entsprechenden Werte können mit get_dl_model_paramget_dl_model_paramGetDlModelParamGetDlModelParamGetDlModelParam 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.

'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 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'"real""real""real""real". Zusätzlich ist das Backbone auf gewisse Bildeigenschaften ausgelegt. Die entsprechenden Werte können mit get_dl_model_paramget_dl_model_paramGetDlModelParamGetDlModelParamGetDlModelParam 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.

'pretrained_dl_classifier_resnet50.hdl'"pretrained_dl_classifier_resnet50.hdl""pretrained_dl_classifier_resnet50.hdl""pretrained_dl_classifier_resnet50.hdl""pretrained_dl_classifier_resnet50.hdl":

Wie das Netzwerk '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" 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'"real""real""real""real". Zusätzlich ist das Backbone auf gewisse Bildeigenschaften ausgelegt. Die entsprechenden Werte können mit get_dl_model_paramget_dl_model_paramGetDlModelParamGetDlModelParamGetDlModelParam 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.

Setzbare Parameter

Parameter, die bei der Erzeugung eines Modells mit create_dl_model_detectioncreate_dl_model_detectionCreateDlModelDetectionCreateDlModelDetectionCreateDlModelDetection gesetzt werden können (siehe get_dl_classifier_paramget_dl_classifier_paramGetDlClassifierParamGetDlClassifierParamGetDlClassifierParam für Erklärungen):

Achtung

Zum erfolgreichen Setzen von 'gpu'"gpu""gpu""gpu""gpu" Parametern werden cuDNN und cuBLAS benötigt, d.h. zum Setzen des Parameters GenParamNameGenParamNameGenParamNameGenParamNamegenParamName 'runtime'"runtime""runtime""runtime""runtime" auf VarRef('gpu'). Für weitere Details wird auf den „Installation Guide“, Abschnitt „Requirements for Deep Learning“, verwiesen.

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

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

Deep Learning Klassifikator, genutzt als Backbone-Netzwerk.

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", 'pretrained_dl_classifier_resnet50.hdl'"pretrained_dl_classifier_resnet50.hdl""pretrained_dl_classifier_resnet50.hdl""pretrained_dl_classifier_resnet50.hdl""pretrained_dl_classifier_resnet50.hdl"

Dateiendung: .hdl

NumClassesNumClassesNumClassesNumClassesnumClasses (input_control)  integer HTupleHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

Anzahl von Klassen.

Defaultwert: 3

DLModelDetectionParamDLModelDetectionParamDLModelDetectionParamDLModelDetectionParamDLModelDetectionParam (input_control)  dict HDict, HTupleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)

Parameter für das Objektdetektion-Modell.

Defaultwert: []

DLModelHandleDLModelHandleDLModelHandleDLModelHandleDLModelHandle (output_control)  dl_model HDlModel, HTupleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)

Deep Learning-Modell für die Objektdetektion.

Ergebnis

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

Nachfolger

set_dl_model_paramset_dl_model_paramSetDlModelParamSetDlModelParamSetDlModelParam, get_dl_model_paramget_dl_model_paramGetDlModelParamGetDlModelParamGetDlModelParam, apply_dl_modelapply_dl_modelApplyDlModelApplyDlModelApplyDlModel, train_dl_model_batchtrain_dl_model_batchTrainDlModelBatchTrainDlModelBatchTrainDlModelBatch

Alternativen

read_dl_modelread_dl_modelReadDlModelReadDlModelReadDlModel

Modul

Deep Learning Training