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 Modell 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. Daher gibt es in dem Netzwerk keine vollverbundenen Layer. Daraus ergibt sich, dass ein Klassifikator als Merkmalsextraktor für das angeschlossene Erkennungsnetzwerk eingelesen wird. Hierfür kann ein Modell im HALCON Format oder im ONNX Format eingelesen werden, siehe read_dl_modelread_dl_modelReadDlModelReadDlModelReadDlModel für weitere Informationen.

create_dl_model_detectioncreate_dl_model_detectionCreateDlModelDetectionCreateDlModelDetectionCreateDlModelDetection hängt eine Merkmalspyramide an verschiedene Ebenen des Backbones an. Genauer, im Backbone ist für verschiedene Ebenen ein Layer als Docking Layer spezifiziert. Wird ein Detektions-Modell erstellt, so wird die Merkmalspyramide an den entsprechenden Docking Layern angedockt. Bei vortrainierten Klassifikatoren, die von HALCON zur Verfügung gestellt werden, sind die Docking Layers bereits spezifiziert. Wird ein selbsterstellter Klassifikator als Backbone verwendet, müssen die Docking Layer jedoch spezifiziert werden. backbone_docking_layersbackbone_docking_layersbackbone_docking_layersbackbone_docking_layersbackboneDockingLayers kann als Eigenschaft des Klassifikators über set_dl_model_paramset_dl_model_paramSetDlModelParamSetDlModelParamSetDlModelParam oder als Eigenschaft des Backbones über diesen Operator gesetzt werden.

Die Docking Layer gehören zu verschiedenen Ebenen und entsprechend haben ihre Merkmalskarten in der Merkmalspyramide verschiedene Größen. Genauer, in der Merkmalspyramide werden die Längen der Merkmalskarten von Ebene zu Ebene halbiert. Dies bedeutet, dass auch die Längen der Eingabebilder für jede weitere Ebene halbiert werden. Die Netzwerkarchitekturen erlauben Änderungen bezüglich der Bilddimensionen, aber die Dimensionen 'image_width'"image_width""image_width""image_width""image_width" und 'image_height'"image_height""image_height""image_height""image_height" müssen ein ganzzahliges Mehrfaches von sein. Dabei steht für die höchste Ebene, an welche die Merkmalspyramide anbaut. Dies hängt sowohl von den zusätzlichen Netzwerken als auch den Docking Layern ab. Für die zur Verfügung gestellten Klassifikatoren wird in der unten stehenden Liste erwähnt, bis zu welcher Ebene die Merkmalspyramide standardmäßig geht.

backbone_docking_layersbackbone_docking_layersbackbone_docking_layersbackbone_docking_layersbackboneDockingLayers

Für ein gegebenes Backbones hat einen minimalen Wert (siehe die Liste unten im Falle der Standard-Docking Layer), 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_alexnet.hdl'"pretrained_dl_classifier_alexnet.hdl""pretrained_dl_classifier_alexnet.hdl""pretrained_dl_classifier_alexnet.hdl""pretrained_dl_classifier_alexnet.hdl":

Dieses Neuronale Netzwerk ist geeignet für einfache Klassifikationsaufgaben. Es zeichnet sich durch die Faltungskerne der ersten Faltungs-Layer aus, welche größer sind als bei Netzwerken vergleichbarer Klassifikationsleistung (z.B. '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"). Dies kann für das Extrahieren von Merkmalskarten von Vorteil 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 Standardmerkmalspyramide geht bei diesem Backbone bis zur 4. Ebene.

'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 Standardmerkmalspyramide geht bei diesem Backbone 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 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 Standardmerkmalspyramide geht bei diesem Backbone 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 Neuronale 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 Neuronale 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 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 Standardmerkmalspyramide geht bei diesem Backbone 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 'gpu'"gpu""gpu""gpu""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_alexnet.hdl'"pretrained_dl_classifier_alexnet.hdl""pretrained_dl_classifier_alexnet.hdl""pretrained_dl_classifier_alexnet.hdl""pretrained_dl_classifier_alexnet.hdl", '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