get_dl_model_paramT_get_dl_model_paramGetDlModelParamGetDlModelParam (Operator)

Name

get_dl_model_paramT_get_dl_model_paramGetDlModelParamGetDlModelParam — Auslesen der Parameter des Deep Learning-Modells.

Signatur

get_dl_model_param( : : DLModelHandle, GenParamName : GenParamValue)

Herror T_get_dl_model_param(const Htuple DLModelHandle, const Htuple GenParamName, Htuple* GenParamValue)

void GetDlModelParam(const HTuple& DLModelHandle, const HTuple& GenParamName, HTuple* GenParamValue)

HTuple HDlModel::GetDlModelParam(const HString& GenParamName) const

HTuple HDlModel::GetDlModelParam(const char* GenParamName) const

HTuple HDlModel::GetDlModelParam(const wchar_t* GenParamName) const   (Nur Windows)

static void HOperatorSet.GetDlModelParam(HTuple DLModelHandle, HTuple genParamName, out HTuple genParamValue)

HTuple HDlModel.GetDlModelParam(string genParamName)

Beschreibung

get_dl_model_paramget_dl_model_paramGetDlModelParamGetDlModelParamGetDlModelParam gibt die Parameterwerte von GenParamNameGenParamNameGenParamNameGenParamNamegenParamName für das Deep Learning-Modell DLModelHandleDLModelHandleDLModelHandleDLModelHandleDLModelHandle in GenParamValueGenParamValueGenParamValueGenParamValuegenParamValue aus.

Für ein Deep Learning-Modell können die Parameter GenParamNameGenParamNameGenParamNameGenParamNamegenParamName, je nach Parameter und Modelltyp, mit Hilfe von set_dl_model_paramset_dl_model_paramSetDlModelParamSetDlModelParamSetDlModelParam oder create_dl_model_detectioncreate_dl_model_detectionCreateDlModelDetectionCreateDlModelDetectionCreateDlModelDetection gesetzt werden.

Mit diesem Operator, get_dl_model_paramget_dl_model_paramGetDlModelParamGetDlModelParamGetDlModelParam, können die Parameterwerte GenParamValueGenParamValueGenParamValueGenParamValuegenParamValue abgefragt werden. Nachstehend ist ein Überblick über die verschiedenen Parametern zu gegeben sowie eine Erklärung zu den Parametern, mit Ausnahme jener die nur gesetzt werden können. Für eine Erklärung letztgenannter Parameter wird auf die Dokumentation der entsprechenden Operatoren verwiesen.

GenParamNameGenParamNameGenParamNameGenParamNamegenParamName Ano. Det. Class. Obj. Det. Sem. Seg.
'batch_size'"batch_size""batch_size""batch_size""batch_size"
'batch_size_multiplier'"batch_size_multiplier""batch_size_multiplier""batch_size_multiplier""batch_size_multiplier"
'class_ids'"class_ids""class_ids""class_ids""class_ids"
'enable_resizing'"enable_resizing""enable_resizing""enable_resizing""enable_resizing"
'fuse_conv_relu'"fuse_conv_relu""fuse_conv_relu""fuse_conv_relu""fuse_conv_relu"
'gpu'"gpu""gpu""gpu""gpu"
'image_dimensions'"image_dimensions""image_dimensions""image_dimensions""image_dimensions"
'image_height'"image_height""image_height""image_height""image_height"
'image_width'"image_width""image_width""image_width""image_width"
'image_num_channels'"image_num_channels""image_num_channels""image_num_channels""image_num_channels"
'image_range_max'"image_range_max""image_range_max""image_range_max""image_range_max"
'image_range_min'"image_range_min""image_range_min""image_range_min""image_range_min"
'learning_rate'"learning_rate""learning_rate""learning_rate""learning_rate"
'momentum'"momentum""momentum""momentum""momentum"
'num_classes'"num_classes""num_classes""num_classes""num_classes" (NumClassesNumClassesNumClassesNumClassesnumClasses)
'runtime'"runtime""runtime""runtime""runtime"
'runtime_init'"runtime_init""runtime_init""runtime_init""runtime_init"
'summary'"summary""summary""summary""summary"
'type'"type""type""type""type"
'weight_prior'"weight_prior""weight_prior""weight_prior""weight_prior"
GenParamNameGenParamNameGenParamNameGenParamNamegenParamName Ano. Det. Class. Obj. Det. Sem. Seg.
'complexity'"complexity""complexity""complexity""complexity"
'standard_deviation_factor'"standard_deviation_factor""standard_deviation_factor""standard_deviation_factor""standard_deviation_factor"
'class_names'"class_names""class_names""class_names""class_names"
'extract_feature_maps'"extract_feature_maps""extract_feature_maps""extract_feature_maps""extract_feature_maps"
'anchor_angles'"anchor_angles""anchor_angles""anchor_angles""anchor_angles"
'anchor_aspect_ratios'"anchor_aspect_ratios""anchor_aspect_ratios""anchor_aspect_ratios""anchor_aspect_ratios"
'anchor_num_subscales'"anchor_num_subscales""anchor_num_subscales""anchor_num_subscales""anchor_num_subscales"
'backbone'"backbone""backbone""backbone""backbone" (BackboneBackboneBackboneBackbonebackbone)
'backbone_docking_layers'"backbone_docking_layers""backbone_docking_layers""backbone_docking_layers""backbone_docking_layers"
'bbox_heads_weight'"bbox_heads_weight""bbox_heads_weight""bbox_heads_weight""bbox_heads_weight"
'capacity'"capacity""capacity""capacity""capacity"
'class_heads_weight'"class_heads_weight""class_heads_weight""class_heads_weight""class_heads_weight"
'class_ids_no_orientation'"class_ids_no_orientation""class_ids_no_orientation""class_ids_no_orientation""class_ids_no_orientation"
'class_weights'"class_weights""class_weights""class_weights""class_weights"
'ignore_direction'"ignore_direction""ignore_direction""ignore_direction""ignore_direction"
'instance_type'"instance_type""instance_type""instance_type""instance_type"
'max_level'"max_level""max_level""max_level""max_level"
'min_level'"min_level""min_level""min_level""min_level"
'max_num_detections'"max_num_detections""max_num_detections""max_num_detections""max_num_detections"
'max_overlap'"max_overlap""max_overlap""max_overlap""max_overlap"
'max_overlap_class_agnostic'"max_overlap_class_agnostic""max_overlap_class_agnostic""max_overlap_class_agnostic""max_overlap_class_agnostic"
'min_confidence'"min_confidence""min_confidence""min_confidence""min_confidence"
'ignore_class_ids'"ignore_class_ids""ignore_class_ids""ignore_class_ids""ignore_class_ids"

Hierbei stehen die verwendeten Symbole für folgendes:

Gewisse Parameter werden als nicht-optionale Parameter gesetzt, die entsprechende Repräsentation ist in Klammern angegeben.

Im Folgenden werden die Parameter GenParamNameGenParamNameGenParamNameGenParamNamegenParamName, deren Werte mit get_dl_model_paramget_dl_model_paramGetDlModelParamGetDlModelParamGetDlModelParam abgefragt werden können, aufgelistet und erläutert. Die Auflistung ist dem Modelltyp entsprechend sortiert. Für Modelle mit 'type'"type""type""type""type"='segmentation'"segmentation""segmentation""segmentation""segmentation" hängen die Standardwerte vom spezifischen Netzwerk ab und müssen somit abgefragt werden.

Jedes Modell

'batch_size'"batch_size""batch_size""batch_size""batch_size"

Anzahl der Bilder (und ihren entsprechenden Labels) in einem Batch, die gleichzeitig in den Gerätespeicher transferiert werden.

Bei einem Training mittels train_dl_model_batchtrain_dl_model_batchTrainDlModelBatchTrainDlModelBatchTrainDlModelBatch ist die Menge der Bilder, die in einer Iteration miteinander verarbeitet werden, beinhaltet eine Anzahl 'batch_size'"batch_size""batch_size""batch_size""batch_size" mal 'batch_size_multiplier'"batch_size_multiplier""batch_size_multiplier""batch_size_multiplier""batch_size_multiplier" Bilder. Für weitere Details siehe train_dl_model_batchtrain_dl_model_batchTrainDlModelBatchTrainDlModelBatchTrainDlModelBatch.

Bei der Inferenz kann die 'batch_size'"batch_size""batch_size""batch_size""batch_size" im Allgemeinen unabhängig von der Anzahl der gleichzeitig zu inferierenden Bilder gesetzt werden. Siehe apply_dl_modelapply_dl_modelApplyDlModelApplyDlModelApplyDlModel für weitere Informationen, wie man diesen Parameter setzt, um eine größere Effizienz zu erzielen.

Modelle mit 'type'"type""type""type""type"='classification'"classification""classification""classification""classification":

Der Parameter 'batch_size'"batch_size""batch_size""batch_size""batch_size" ist im vortrainierten Modell gespeichert. Standardmäßig ist 'batch_size'"batch_size""batch_size""batch_size""batch_size" so gesetzt, dass ein Training des vortrainierten Klassifikators mit bis zu 100 Klassen problemlos auf einer GPU mit einem Speicher von 8 Gigabyte durchgeführt werden kann.

Für die vortrainierten Klassifikatoren ergeben sich so folgende Standardwerte für die Batchgröße:
Vortrainierter Klassifikator Standardwerte für 'batch_size'"batch_size""batch_size""batch_size""batch_size"
'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" 230
'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" 160
'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" 96
'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" 23
'batch_size_multiplier'"batch_size_multiplier""batch_size_multiplier""batch_size_multiplier""batch_size_multiplier"

Multiplikationsfaktor für 'batch_size'"batch_size""batch_size""batch_size""batch_size", um das Training mit einer größeren Anzahl an Bildern in einem Schritt zu ermöglichen, was aufgrund limitierter GPU-Speichergröße sonst nicht möglich wäre. Dieser Parameter beeinflusst nur das Training mit train_dl_model_batchtrain_dl_model_batchTrainDlModelBatchTrainDlModelBatchTrainDlModelBatch und hat somit weder auf die Evaluierung noch auf die Inferenz einen Einfluss. Für weitere Details, siehe train_dl_model_batchtrain_dl_model_batchTrainDlModelBatchTrainDlModelBatchTrainDlModelBatch.

Modelle mit 'type'"type""type""type""type"='anomaly_detection'"anomaly_detection""anomaly_detection""anomaly_detection""anomaly_detection":

Der Parameter 'batch_size_multiplier'"batch_size_multiplier""batch_size_multiplier""batch_size_multiplier""batch_size_multiplier" hat keinen Einfluss.

Default: 'batch_size_multiplier'"batch_size_multiplier""batch_size_multiplier""batch_size_multiplier""batch_size_multiplier" = 1

'class_ids'"class_ids""class_ids""class_ids""class_ids":

Eindeutige IDs der Klassen, die vom Modell unterschieden werden sollen. Daher hat das Tupel die Länge von 'num_classes'"num_classes""num_classes""num_classes""num_classes".

Hierbei sollen die leicht unterschiedlichen Bedeutungen und Beschränkungen in Abhängigkeit des Modelltyps betont werden:

Modelle mit 'type'"type""type""type""type"='anomaly_detection'"anomaly_detection""anomaly_detection""anomaly_detection""anomaly_detection":

Der Parameter 'class_ids'"class_ids""class_ids""class_ids""class_ids" wird nicht unterstützt.

Modelle mit 'type'"type""type""type""type"='classification'"classification""classification""classification""classification":

Die IDs sind eindeutige Bezeichner, die automatisch den Klassen zugeordnet werden. Dabei entsprechen die ID einer Klasse dem Index der Klasse im Tupel 'class_names'"class_names""class_names""class_names""class_names".

Modelle mit 'type'"type""type""type""type"='detection'"detection""detection""detection""detection":

Beinhaltet nur die Klassen der zu erkennenden Objekte, und somit keine Hintergrund-Klasse. Dabei kann als Klassen-ID ein beliebiger Integer-Wert aus dem Wertebereich gesetzt werden.

Es gilt zu beachten, dass die Werte in 'class_ids_no_orientation'"class_ids_no_orientation""class_ids_no_orientation""class_ids_no_orientation""class_ids_no_orientation" von jenen in 'class_ids'"class_ids""class_ids""class_ids""class_ids" abhängen. Falls die Werte in 'class_ids'"class_ids""class_ids""class_ids""class_ids" nach der Erzeugung des Modells verändert werden, wird 'class_ids_no_orientation'"class_ids_no_orientation""class_ids_no_orientation""class_ids_no_orientation""class_ids_no_orientation" auf ein leeres Tupel zurückgesetzt.

Default: 'class_ids'"class_ids""class_ids""class_ids""class_ids" = '[0,...,num_classes-1]'"[0,...,num_classes-1]""[0,...,num_classes-1]""[0,...,num_classes-1]""[0,...,num_classes-1]"

Modelle mit 'type'"type""type""type""type"='segmentation'"segmentation""segmentation""segmentation""segmentation":

Jede zum Training genutzte Klasse muss enthalten sein und damit ebenfalls die Klassen-ID der Klasse 'background'. Daher hat für ein solches Modell das Tupel die die minimale Länge 2. Dabei kann als Klassen-ID ein beliebiger Integer-Wert aus dem Wertebereich gesetzt werden.

'gpu'"gpu""gpu""gpu""gpu":

Identifikationsnummer der GPU, auf der die Trainings- und Inferenz-Operatoren (train_dl_model_batchtrain_dl_model_batchTrainDlModelBatchTrainDlModelBatchTrainDlModelBatch und apply_dl_modelapply_dl_modelApplyDlModelApplyDlModelApplyDlModel) ausgeführt werden. Standardmäßig wird die erste verfügbare GPU verwendet.

Mit dem get_systemget_systemGetSystemGetSystemGetSystem Parameter 'cuda_devices'"cuda_devices""cuda_devices""cuda_devices""cuda_devices" kann die Liste der verfügbaren GPUs abgefragt werden. In 'gpu'"gpu""gpu""gpu""gpu" muss der Index der gewünschten GPU in dieser Liste übergeben werden.

Default: 'gpu'"gpu""gpu""gpu""gpu" = 0

'image_dimensions'"image_dimensions""image_dimensions""image_dimensions""image_dimensions":

Tupel, das die Dimensionen der Eingabebilder 'image_width'"image_width""image_width""image_width""image_width", 'image_height'"image_height""image_height""image_height""image_height" und Anzahl der Bildkanäle 'image_num_channels'"image_num_channels""image_num_channels""image_num_channels""image_num_channels" beinhaltet.

Die jeweiligen Standardwerte und möglichen Wertebereiche sind vom Modelltyp und Modell selbst abhängig. Weitere Angaben dazu finden sich in der Beschreibung des jeweiligen Dimensionsparameters.

'image_height'"image_height""image_height""image_height""image_height", 'image_width'"image_width""image_width""image_width""image_width":

Höhe und Breite die die Eingabebilder aufweisen und mit denen das Netzwerk arbeitet.

Dieser Parameter kann abhängig vom Modelltyp verschiedene Werte annehmen:

Modelle mit 'type'"type""type""type""type"='anomaly_detection'"anomaly_detection""anomaly_detection""anomaly_detection""anomaly_detection":

Die Standardwerte hängen von dem zu verwendenden Netzwerk ab, siehe read_dl_modelread_dl_modelReadDlModelReadDlModelReadDlModel. Die Netzwerkarchitekturen erlauben verschiedene Bildgrößen, welche über set_dl_model_paramset_dl_model_paramSetDlModelParamSetDlModelParamSetDlModelParam gesetzt werden können. Dies muss vor dem Training des Modells erfolgen, da ansonten das Modell in einen unbrauchbaren Zustand versetzt würde. Falls versucht wird, die oben genannten Parameter in einem bereits trainierten Modell zu setzen, wird ein Fehler ausgegeben und das Modell bleibt unverändert.

Modelle mit 'type'"type""type""type""type"='classification'"classification""classification""classification""classification":

Die Standardwerte hängen vom vortrainierten Klassifikator ab, siehe read_dl_modelread_dl_modelReadDlModelReadDlModelReadDlModel. Die Netzwerkarchitekturen erlauben verschiedene Bildgrößen, welche über set_dl_model_paramset_dl_model_paramSetDlModelParamSetDlModelParamSetDlModelParam 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.

Modelle mit 'type'"type""type""type""type"='detection'"detection""detection""detection""detection":

Die Netzwerkarchitekturen erlauben Änderungen der Bilddimensionen. Jedoch werden für jede Ebene die Bildlängen halbiert, weshalb 'image_width'"image_width""image_width""image_width""image_width" und 'image_height'"image_height""image_height""image_height""image_height" ganzzahlige Vielfache von sein müssen. 2 Dabei ist die Anzahl Ebenen vom Backbone und dem Parameter 'max_level'"max_level""max_level""max_level""max_level" abhängig, siehe create_dl_model_detectioncreate_dl_model_detectionCreateDlModelDetectionCreateDlModelDetectionCreateDlModelDetection.

Default: 'image_height'"image_height""image_height""image_height""image_height" = 640, 'image_width'"image_width""image_width""image_width""image_width" = 640

Modelle mit 'type'"type""type""type""type"='segmentation'"segmentation""segmentation""segmentation""segmentation":

Die Netzwerkarchitekturen erlauben Änderungen der Bilddimensionen. Der Standardwert und Minimalwerte werden dabei vom Netzwerk vorgegeben, siehe read_dl_modelread_dl_modelReadDlModelReadDlModelReadDlModel.

'image_num_channels'"image_num_channels""image_num_channels""image_num_channels""image_num_channels":

Anzahl Kanäle der Eingabebilder, die vom Netzwerk verarbeitet werden. Der Standardwert wird dabei vom Netzwerk vorgegeben, siehe read_dl_modelread_dl_modelReadDlModelReadDlModelReadDlModel und create_dl_model_detectioncreate_dl_model_detectionCreateDlModelDetectionCreateDlModelDetectionCreateDlModelDetection.

Für Modelle mit 'type'"type""type""type""type"='anomaly_detection'"anomaly_detection""anomaly_detection""anomaly_detection""anomaly_detection" werden nur die Werte 1 und 3 unterstützt. Außerdem kann für Modelle mit 'type'"type""type""type""type"='anomaly_detection'"anomaly_detection""anomaly_detection""anomaly_detection""anomaly_detection" dieser Parameter nur vor dem Training des Modells gesetzt werden. Ansonten würde das Modell in einen unbrauchbaren Zustand versetzt. Falls versucht wird, 'image_num_channels'"image_num_channels""image_num_channels""image_num_channels""image_num_channels" in einem bereits trainierten Modell zu setzen, wird ein Fehler ausgegeben und das Modell bleibt unverändert. Für andere Modelle ist eine beliebige Anzahl an Kanälen möglich.

Wird die Anzahl auf einen Wert >1 geändert, werden die Werte aller Layer nach dem Eingabe-Layer mit Zufallswerten initialisiert. In diesem Fall sind mehr Daten zum Nachtrainieren notwendig. Wird die Anzahl Kanäle der Eingabebilder auf 1 geändert, so werden die Gewichte der entsprechenden Layer vereinigt.

Modelle mit 'type'"type""type""type""type"='anomaly_detection'"anomaly_detection""anomaly_detection""anomaly_detection""anomaly_detection":

Default: 'image_num_channels'"image_num_channels""image_num_channels""image_num_channels""image_num_channels" = 3

Modelle mit 'type'"type""type""type""type"='detection'"detection""detection""detection""detection":

Default: 'image_num_channels'"image_num_channels""image_num_channels""image_num_channels""image_num_channels" = 3

'image_range_max'"image_range_max""image_range_max""image_range_max""image_range_max", 'image_range_min'"image_range_min""image_range_min""image_range_min""image_range_min":

Maximaler und minimaler möglicher Grauwert der Eingabebilder, welche das Netzwerk verarbeitet.

Die Werte werden dabei vom Netzwerk vorgegeben, siehe read_dl_modelread_dl_modelReadDlModelReadDlModelReadDlModel und create_dl_model_detectioncreate_dl_model_detectionCreateDlModelDetectionCreateDlModelDetectionCreateDlModelDetection.

'learning_rate'"learning_rate""learning_rate""learning_rate""learning_rate":

Wert des Faktors, der den Einfluss des Gradienten während des Trainings mit train_dl_classifier_batchtrain_dl_classifier_batchTrainDlClassifierBatchTrainDlClassifierBatchTrainDlClassifierBatch bestimmt. Mehr Information können in der Dokumentation von train_dl_model_batchtrain_dl_model_batchTrainDlModelBatchTrainDlModelBatchTrainDlModelBatch gefunden werden.

Der Standardwert ist vom Modell abhängig.

Modelle mit 'type'"type""type""type""type"='anomaly_detection'"anomaly_detection""anomaly_detection""anomaly_detection""anomaly_detection":

Der Parameter 'learning_rate'"learning_rate""learning_rate""learning_rate""learning_rate" hat keinen Einfluss.

'momentum'"momentum""momentum""momentum""momentum":

Werden die Gewichte des Netzwerkes aktualisiert, gibt der Hyperparameter 'momentum'"momentum""momentum""momentum""momentum" an, zu welchem Ausmaß vorherige Aktualisierungsvektoren im aktuellen Aktualisierungsvektor berücksichtigt werden. Für weitere Informationen verweisen wir auf die Dokumentation von train_dl_model_batchtrain_dl_model_batchTrainDlModelBatchTrainDlModelBatchTrainDlModelBatch.

Der Standardwert wird vom Modell gegeben.

Modelle mit 'type'"type""type""type""type"='anomaly_detection'"anomaly_detection""anomaly_detection""anomaly_detection""anomaly_detection":

Der Parameter 'momentum'"momentum""momentum""momentum""momentum" hat keinen Einfluss.

'num_classes'"num_classes""num_classes""num_classes""num_classes":

Anzahl unterschiedlicher Klassen, die das Modell für seine Vorhersagen unterscheiden kann.

Dieser Parameter unterscheidet sich für die Modelltypen:

Modelle mit 'type'"type""type""type""type"='anomaly_detection'"anomaly_detection""anomaly_detection""anomaly_detection""anomaly_detection":

Der Parameter 'num_classes'"num_classes""num_classes""num_classes""num_classes" wird nicht unterstützt.

Modelle mit 'type'"type""type""type""type"='classification'"classification""classification""classification""classification":

'num_classes'"num_classes""num_classes""num_classes""num_classes" wird implizit durch die Länge von 'class_names'"class_names""class_names""class_names""class_names" bestimmt und wird dadurch nicht unterstützt.

Modelle mit 'type'"type""type""type""type"='detection'"detection""detection""detection""detection":

Dieser Wert wird über den Parameter NumClassesNumClassesNumClassesNumClassesnumClasses mit dem Operator create_dl_model_detectioncreate_dl_model_detectionCreateDlModelDetectionCreateDlModelDetectionCreateDlModelDetection gesetzt. Dabei muss 'class_ids'"class_ids""class_ids""class_ids""class_ids" stets eine Anzahl Elemente gleich 'num_classes'"num_classes""num_classes""num_classes""num_classes" haben.

Modelle mit 'type'"type""type""type""type"='segmentation'"segmentation""segmentation""segmentation""segmentation":

Da ein Modell des Typs 'type'"type""type""type""type"='segmentation'"segmentation""segmentation""segmentation""segmentation" die Klasse 'background' vorhersagt, ist diese Klasse in 'num_classes'"num_classes""num_classes""num_classes""num_classes" enthalten. Für diese Modelle wird 'num_classes'"num_classes""num_classes""num_classes""num_classes" automatisch aus der Länge von 'class_ids'"class_ids""class_ids""class_ids""class_ids" bestimmt.

'runtime'"runtime""runtime""runtime""runtime":

Bestimmt das Gerät, auf dem die Operatoren ausgeführt werden.

Default: 'runtime'"runtime""runtime""runtime""runtime" = 'gpu'"gpu""gpu""gpu""gpu"

'cpu'"cpu""cpu""cpu""cpu":

Der Operator apply_dl_modelapply_dl_modelApplyDlModelApplyDlModelApplyDlModel wird auf der CPU ausgeführt, der Operator train_dl_model_batchtrain_dl_model_batchTrainDlModelBatchTrainDlModelBatchTrainDlModelBatch kann hingegen nicht ausgeführt werden.

Falls zuvor auf der GPU gerechnet wurde, wird Speicher auf der CPU initialisiert und falls notwendig werden auf der GPU gespeicherte Werte auf die CPU verschoben.

Auf Intel oder AMD Architekturen verwendet die 'cpu'"cpu""cpu""cpu""cpu" Laufzeit zur Parallelisierung des Operators apply_dl_modelapply_dl_modelApplyDlModelApplyDlModelApplyDlModel OpenMP, wobei standardmäßig alle verfügbaren Threads der OpenMP Laufzeitumgebung verwendet werden. In diesem Fall kann mit dem threadspezifischen Parameter 'tsp_thread_num'"tsp_thread_num""tsp_thread_num""tsp_thread_num""tsp_thread_num" des Operators set_systemset_systemSetSystemSetSystemSetSystem die zu verwendende Anzahl von Threads spezifiziert werden.

Auf Arm Architekturen verwendet die 'cpu'"cpu""cpu""cpu""cpu" Laufzeit zur Parallelisierung einen globalen thread pool. In diesem Fall kann mit dem globalen Parameter 'thread_num'"thread_num""thread_num""thread_num""thread_num" des Operators set_systemset_systemSetSystemSetSystemSetSystem die zu verwendende Anzahl von Threads spezifiziert werden. Auf Arm Architekturen kann keine Thread-spezifische Anzahl von Threads eingestellt werden.

'gpu'"gpu""gpu""gpu""gpu":

Der Speicher wird auf der GPU initialisiert. Die Operatoren apply_dl_modelapply_dl_modelApplyDlModelApplyDlModelApplyDlModel und train_dl_model_batchtrain_dl_model_batchTrainDlModelBatchTrainDlModelBatchTrainDlModelBatch werden auf der GPU ausgeführt. Mehr Informationen zu diesen speziellen Voraussetzungen befinden sich im HALCON „Installation Guide“.

'summary'"summary""summary""summary""summary":

Mit diesem Parameter werden Informationen über die Layer des Modells zurückgegeben. Genauer gesagt wird ein Tupel zurückgegeben, welches für jeden Layer einen String der folgenden Form enthält ID; NAME; TYPE; OUTPUT_SHAPE; CONNECTED_NODES

  • ID: Index des Layers im CNN Graphen.

  • NAME: Von Menschen lesbarer Bezeichner (optional).

  • TYPE: Bezeichner für den Typ des Layers (z. B. input oder convolution).

  • OUTPUT_SHAPE: Größe der Ausgabe in der Form (Breite, Höhe, Tiefe, 'batch_size'"batch_size""batch_size""batch_size""batch_size"). Dies bedeutet, der Layer hat Merkmalskarten der Größe Breite mal Höhe und davon eine Anzahl entsprechend der Tiefe. Zusammen bilden diese ein Ikonisches Objekt mit einem Kanal pro Merkmalskarte. Die verschiedenen Objekte sind die Layer-Ausgaben verschiedener Samples. Der Parameter 'batch_size'"batch_size""batch_size""batch_size""batch_size" bestimmt, wie viele Objekte zusammen zurückgegeben werden.

  • CONNECTED_NODES: Komma separierte Liste mit den Indices der Layer, die die Ausgabe des aktuellen Layers als Eingabe verwenden

Z.B.: '3; conv1; convolution; (112, 112, 64, 160); 4'.

Es ist zu beachten, dass für manche mit HALCON ausgelieferten Modelle die Architektur vertraulich ist. In diesem Fall gibt get_dl_model_paramget_dl_model_paramGetDlModelParamGetDlModelParamGetDlModelParam ein leeres Tupel für 'summary'"summary""summary""summary""summary" zurück.

'type'"type""type""type""type":

Dieser Parameter gibt den Modelltypen zurück. Folgende Typen werden unterschieden:

  • 'anomaly_detection'"anomaly_detection""anomaly_detection""anomaly_detection""anomaly_detection"

  • 'classification'"classification""classification""classification""classification"

  • 'detection'"detection""detection""detection""detection"

  • 'segmentation'"segmentation""segmentation""segmentation""segmentation"

  • 'generic'"generic""generic""generic""generic" - einzig für spezifische eingelesene Modelle, siehe set_dl_model_paramset_dl_model_paramSetDlModelParamSetDlModelParamSetDlModelParam.

'weight_prior'"weight_prior""weight_prior""weight_prior""weight_prior":

Regularisierungsparameter für die Regularisierung der Zielfunktion. Für eine genaue Beschreibung des Regularisierungsterms wird auf train_dl_model_batchtrain_dl_model_batchTrainDlModelBatchTrainDlModelBatchTrainDlModelBatch verwiesen. Einfach gesagt begünstigt die Regularisierung einfachere Modelle, die weniger anfällig sind, Rauschen in den Daten zu lernen. Dadurch generalisieren diese Modelle in der Regel besser. Für den Fall einer Überanpassung des Klassifikators, empfehlen wir verschiedene Werte für den Parameter 'weight_prior'"weight_prior""weight_prior""weight_prior""weight_prior" zu testen. Die Wahl des Wertes ist ein Abwägen zwischen der Fähigkeit des Netzwerkes zu Generalisieren, einer Überanpassung oder einer Unteranpassung. Ist zu klein, ist eine Überanpassung möglich, ist es zu groß kann es passieren, dass das Modell seine Fähigkeit verliert, sich an die Daten anzupassen, da dann alle Gewichte effektiv Null sind. Um einen idealen Wert für zu finden, empfehlen wir eine Kreuzvalidierung durchzuführen. Das heißt, das Training wird für eine Reihe von Werten durchgeführt und man wählt den Wert, der den besten Validierungsfehler liefert. Üblich sind zum Testen die Werte für 'weight_prior'"weight_prior""weight_prior""weight_prior""weight_prior" auf einer logarithmischen Skala zwischen . Falls das Training sehr lange dauert, besteht die Möglichkeit für die Optimierung der Hyperparameter einen reduzierten Datensatz zu verwenden.

Modelle mit 'type'"type""type""type""type"='anomaly_detection'"anomaly_detection""anomaly_detection""anomaly_detection""anomaly_detection":

Der Parameter 'weight_prior'"weight_prior""weight_prior""weight_prior""weight_prior" hat keinen Einfluss.

Default: 'weight_prior'"weight_prior""weight_prior""weight_prior""weight_prior" = 0.0 (mit der Ausnahme der vortrainierten Klassifikatoren pretrained_dl_classifier_resnet50: 'weight_prior'"weight_prior""weight_prior""weight_prior""weight_prior" = 0.0001, pretrained_dl_classifier_alexnet: 'weight_prior'"weight_prior""weight_prior""weight_prior""weight_prior" = 0.0005)

Modelle mit 'type'"type""type""type""type"='anomaly_detection'"anomaly_detection""anomaly_detection""anomaly_detection""anomaly_detection"

'complexity'"complexity""complexity""complexity""complexity":

Dieser Parameter steuert die Kapazität des Modells, komplexere Anwendungen zu lösen. Ein höherer Wert ermöglicht es dem Modell, Bilder mit größerer Komplexität darstellen zu können. Allerdings steigen dann auch die Laufzeiten von Training und Inferenz. Dieser Parameter kann nur vor dem Training des Modells gesetzt werden, da ansonsten das Modell in einen unbrauchbaren Zustand versetzt würde. Falls versucht wird, 'complexity' in einem bereits trainierten Modell zu setzen, wird ein Fehler ausgegeben und das Modell bleibt unverändert.

Default: 'complexity'"complexity""complexity""complexity""complexity" = 15

'standard_deviation_factor'"standard_deviation_factor""standard_deviation_factor""standard_deviation_factor""standard_deviation_factor":

Der Anomalie-Score auf Bildebene wird intern als Mittelwert bestimmter interner Scores s plus ein Vielfaches von deren Standardabweichung berechnet. Dabei bezeichnet s einen Pixelwert des internen anomaly_imageanomaly_imageanomaly_imageanomaly_imageanomalyImage, der Mittelwert von s und die Standardabweichung von s. Der Parameter 'standard_deviation_factor'"standard_deviation_factor""standard_deviation_factor""standard_deviation_factor""standard_deviation_factor" setzt den Wert für und steuert dadurch, wie stark die Standardabweichung im Vergleich zum Mittelwert gewichtet wird.

Default: 'standard_deviation_factor'"standard_deviation_factor""standard_deviation_factor""standard_deviation_factor""standard_deviation_factor" = 3.0

Modelle mit 'type'"type""type""type""type"='classification'"classification""classification""classification""classification"

'backbone_docking_layers'"backbone_docking_layers""backbone_docking_layers""backbone_docking_layers""backbone_docking_layers":

Der Parameter 'backbone_docking_layers'"backbone_docking_layers""backbone_docking_layers""backbone_docking_layers""backbone_docking_layers" spezifiziert, welche Layer des Backbones von der Merkmalspyramide als Docking Layer verwendet werden sollen. Dabei werden die Layer über ihre Namen referenziert.

Die Spezifikation der Docking Layer kann bei jedem Klassifikator erfolgen, auch ohne dass diese als Backbone eingelesen werden. Berücksichtigt wird diese Angabe jedoch nur für Backbones der Objektdetektion. Beim Auswählen der Docking Layer muss beachtet werden, dass die Längen der Merkmalskarten von einem Docking Layer zum nächsten jeweils halbiert werden. Daumenregel: Jeweils der tiefste Layer für jede (seitliche) Auflösung im Backbone (entspricht einer Ebene, welche für die spezifische Objektdetektions-Aufgabe notwendigen ist).

Informationen zu den Namen und Größen der Layer eines Modells können mittels 'summary'"summary""summary""summary""summary" abgefragt werden.

Default: Für die vortrainierten Backbones die von HALCON ausgeliefert werden, hängen die Standardwerte vom Klassifikator ab. Andere Klassifikatoren haben keine standardmäßig gesetzten Docking Layer, weshalb dieser Parameter gesetzt werden muss, bevor sie als Backbone verwendet werden können.

'class_names'"class_names""class_names""class_names""class_names":

Eindeutige Namen der vom Modell zu unterscheidenden Klassen. Die Anordnung der Klassennamen bleibt nach dem Setzen unverändert. Das Tuple hat die Länge 'num_classes'"num_classes""num_classes""num_classes""num_classes".

'extract_feature_maps'"extract_feature_maps""extract_feature_maps""extract_feature_maps""extract_feature_maps":

Mit diesem Parameterwert kann man die Merkmalskarten des angegebenen Modell-Layers für ein inferiertes Bild extrahieren.

Der ausgewählte Layer muss Bestandteil des vorhandenen Netzwerks sein. Eine Übersicht aller vorhandenen Layer des Modells kann durch den Operator get_dl_model_paramget_dl_model_paramGetDlModelParamGetDlModelParamGetDlModelParam mit dem zugehörigen Parameter 'summary'"summary""summary""summary""summary" zurückgegeben werden.

Beachte, die Netzwerkarchitektur wird durch diese Option verändert: Das Netzwerk wird nach dem ausgewählten Layer abgeschnitten. Dies kann nicht rückgängig gemacht werden. Soll die originale Netzwerkarchitektur wieder verwendet werden, muss diese mit read_dl_modelread_dl_modelReadDlModelReadDlModelReadDlModel erneut eingelesen werden.

Modelle mit 'type'"type""type""type""type"='detection'"detection""detection""detection""detection"

'anchor_angles'"anchor_angles""anchor_angles""anchor_angles""anchor_angles":

Der Parameter 'anchor_angles'"anchor_angles""anchor_angles""anchor_angles""anchor_angles" bestimmt den Orientierungswinkel der Anchors eines Modells mit 'instance_type'"instance_type""instance_type""instance_type""instance_type" = 'rectangle2'"rectangle2""rectangle2""rectangle2""rectangle2". Dabei ist die Orientierung in Bogenmaß angegeben und gibt den Winkel zwischen der horizontalen Achse und 'Length1'"Length1""Length1""Length1""Length1" an (mathematisch positiv). Für weitere Informationen zu Anchors siehe das Kapitel Deep Learning / Objektdetektion.

Es kann ein Tupel mit Werten gesetzt werden. Eine höhere Anzahl an Winkel erhöht die Anzahl vorgeschlagener umschließender Rechtecke, was zu einer besseren Lokalisierung führen kann, allerdings auch mehr Laufzeit und Speicherplatz in Anspruch nimmt.

Mögliche Werte: 'anchor_angles'"anchor_angles""anchor_angles""anchor_angles""anchor_angles" für 'ignore_direction'"ignore_direction""ignore_direction""ignore_direction""ignore_direction" = 'false'"false""false""false""false", 'anchor_angles'"anchor_angles""anchor_angles""anchor_angles""anchor_angles" für 'ignore_direction'"ignore_direction""ignore_direction""ignore_direction""ignore_direction" = 'true'"true""true""true""true"

Default: 'anchor_angles'"anchor_angles""anchor_angles""anchor_angles""anchor_angles" = '[0.0]'"[0.0]""[0.0]""[0.0]""[0.0]"

'anchor_aspect_ratios'"anchor_aspect_ratios""anchor_aspect_ratios""anchor_aspect_ratios""anchor_aspect_ratios" (veraltet: 'aspect_ratios'"aspect_ratios""aspect_ratios""aspect_ratios""aspect_ratios"):

Der Parameter 'anchor_aspect_ratios'"anchor_aspect_ratios""anchor_aspect_ratios""anchor_aspect_ratios""anchor_aspect_ratios" bestimmt das Seitenverhältnis des umschließenden Referenzrechtecks. Dabei bestimmt der Instanztyp 'instance_type'"instance_type""instance_type""instance_type""instance_type", wie dieses Verhältnis definiert ist:

  • 'rectangle1'"rectangle1""rectangle1""rectangle1""rectangle1": Verhältnis von Höhe zu Breite

  • 'rectangle2'"rectangle2""rectangle2""rectangle2""rectangle2": Verhältnis von 'Length1'"Length1""Length1""Length1""Length1" zu 'Length2'"Length2""Length2""Length2""Length2"

So ergibt z.B. für Instanztyp 'rectangle1'"rectangle1""rectangle1""rectangle1""rectangle1" ein Wert von 2 ein schmales initiales Referenzrechteck, während 0.5 ein breites Referenzrechteck ergibt.

Die Größe des generierten umschließenden Rechtecks wird durch den Parameter 'anchor_num_subscales'"anchor_num_subscales""anchor_num_subscales""anchor_num_subscales""anchor_num_subscales" beeinflusst und mit seiner Erklärung findet sich auch die genaue Formel für die Größen und die Längen der resultierenden umschließenden Anchors. Für weitere Informationen zu umschließenden Rechtecken siehe das Kapitel Deep Learning / Objektdetektion.

Es kann ein Tupel mit Werten gesetzt werden. Eine höhere Anzahl an Seitenverhältnissen erhöht die Anzahl vorgeschlagener umschließender Rechtecke, was zu einer besseren Lokalisierung führen kann, allerdings auch mehr Laufzeit und Speicherplatz in Anspruch nimmt.

Aus Gründen der Rückwärtskompatibilität kann anstelle des Parameters 'anchor_aspect_ratios'"anchor_aspect_ratios""anchor_aspect_ratios""anchor_aspect_ratios""anchor_aspect_ratios" auch der Parameter 'aspect_ratios'"aspect_ratios""aspect_ratios""aspect_ratios""aspect_ratios" verwendet werden.

Default: 'anchor_aspect_ratios'"anchor_aspect_ratios""anchor_aspect_ratios""anchor_aspect_ratios""anchor_aspect_ratios" = '[1.0, 2.0, 0.5]'"[1.0, 2.0, 0.5]""[1.0, 2.0, 0.5]""[1.0, 2.0, 0.5]""[1.0, 2.0, 0.5]"

'anchor_num_subscales'"anchor_num_subscales""anchor_num_subscales""anchor_num_subscales""anchor_num_subscales" (veraltet: 'num_subscales'"num_subscales""num_subscales""num_subscales""num_subscales"):

Dieser Parameter bestimmt die Anzahl an Anchors, die für jedes angegebenen Größenverhältnis in verschiedenen Skalierungen generiert werden.

In HALCON werden für jedes Pixel jeder Merkmalskarte der Merkmalspyramide umschließende Rechtecke vorgeschlagen. Der Parameter 'anchor_aspect_ratios'"anchor_aspect_ratios""anchor_aspect_ratios""anchor_aspect_ratios""anchor_aspect_ratios" beeinflusst die Form, der Parameter 'anchor_num_subscales'"anchor_num_subscales""anchor_num_subscales""anchor_num_subscales""anchor_num_subscales" die Größe. So werden auf jedem oben erwähnten Pixel 'anchor_aspect_ratios'"anchor_aspect_ratios""anchor_aspect_ratios""anchor_aspect_ratios""anchor_aspect_ratios" mal 'anchor_num_subscales'"anchor_num_subscales""anchor_num_subscales""anchor_num_subscales""anchor_num_subscales" umschließende Rechtecke generiert. Für weitere Informationen zu umschließenden Rechtecken siehe das Kapitel Deep Learning / Objektdetektion. Ein Beispiel findet sich in unten stehender Darstellung.

image/svg+xml
Mit 'anchor_num_subscales'"anchor_num_subscales""anchor_num_subscales""anchor_num_subscales""anchor_num_subscales"=2 werden für jedes Seitenverhältnis 2 verschieden große umschließende Referenzrechtecke auf jeder Ebene generiert: Ein Referenzrechteck mit Basislänge (durchgezogene Linie) und zusätzlich ein Größeres (gepunktete Linie). Dabei konvergieren diese zusätzlichen umschließenden Referenzrechtecke der unteren Ebene (orange) zu den umschließenden Referenzrechtecken mit Basislänge der nächsthöheren Ebene (blau).

Ein umschließendes Referenzrechteck der Ebene hat auf dem Eingabebild standardmäßige Kantenlängen von , wobei der Parameter den Wert Pixel hat. Mit dem Parameter 'anchor_num_subscales'"anchor_num_subscales""anchor_num_subscales""anchor_num_subscales""anchor_num_subscales" können zusätzliche umschließende Rechtecke generiert werden, die größenmässig zur Größe des kleinsten umschließenden Referenzrechtecks der Ebene konvergiert. Genauer haben diese umschließenden Referenzrechtecke der Ebene auf dem Eingabebild die Kantenlängen wobei . Dies ergibt auf der Ebene für subscale ein umschließendes Referenzrechteck mit Höhe und Breite von wobei das Seitenverhältnis dieses umschließenden Referenzrechtecks ist (siehe 'anchor_aspect_ratios'"anchor_aspect_ratios""anchor_aspect_ratios""anchor_aspect_ratios""anchor_aspect_ratios".

Eine große Anzahl von Subskalierungen erhöht die Anzahl vorgeschlagener umschließender Rechtecke und nimmt daher auch mehr Laufzeit und Speicherplatz in Anspruch.

Aus Gründen der Rückwärtskompatibilität kann anstelle des Parameters 'anchor_num_subscales'"anchor_num_subscales""anchor_num_subscales""anchor_num_subscales""anchor_num_subscales" auch der Parameter 'num_subscales'"num_subscales""num_subscales""num_subscales""num_subscales" verwendet werden.

Default: 'anchor_num_subscales'"anchor_num_subscales""anchor_num_subscales""anchor_num_subscales""anchor_num_subscales" = 3

'backbone'"backbone""backbone""backbone""backbone":

Der Parameter 'backbone'"backbone""backbone""backbone""backbone" ist der Name (inklusiv Pfad) des Backbone-Netzwerks, das zum Erstellen des Modells verwendet wird. Eine Liste der verschiedenen mitgelieferten Backbone-Netzwerke ist unter create_dl_model_detectioncreate_dl_model_detectionCreateDlModelDetectionCreateDlModelDetectionCreateDlModelDetection zu finden.

'bbox_heads_weight'"bbox_heads_weight""bbox_heads_weight""bbox_heads_weight""bbox_heads_weight", 'class_heads_weight'"class_heads_weight""class_heads_weight""class_heads_weight""class_heads_weight"

Die Parameter 'bbox_heads_weight'"bbox_heads_weight""bbox_heads_weight""bbox_heads_weight""bbox_heads_weight" und 'class_heads_weight'"class_heads_weight""class_heads_weight""class_heads_weight""class_heads_weight" sind Gewichtungsfaktoren bei der Bestimmung der Gesamt-Zielfunktion. Dies bedeutet, wenn die einzelnen Zielfunktionswerte aufsummiert werden, werden die Beiträge der Heads zur Bestimmung der umschließenden Rechtecke mit dem Faktor 'bbox_heads_weight'"bbox_heads_weight""bbox_heads_weight""bbox_heads_weight""bbox_heads_weight" gewichtet und die Beiträge der Heads zur Klassifikation mit dem Faktor 'class_heads_weight'"class_heads_weight""class_heads_weight""class_heads_weight""class_heads_weight".

Default: 'bbox_heads_weight'"bbox_heads_weight""bbox_heads_weight""bbox_heads_weight""bbox_heads_weight" = 1.0, 'class_heads_weight'"class_heads_weight""class_heads_weight""class_heads_weight""class_heads_weight" = 1.0

'capacity'"capacity""capacity""capacity""capacity":

Bestimmt die Anzahl der Parameter (oder Filtergewichte) in den tieferen Teilen des Netzwerkes zur Objektdetektion (d.h., nach dem Backbone). Mögliche Werte sind 'high'"high""high""high""high", 'medium'"medium""medium""medium""medium" und 'low'"low""low""low""low".

Er kann verwendet werden, um zwischen Detektionsleistung und Geschwindigkeit abzuwägen. Für einfachere Objektdetektionsaufgaben können die Einstellungen 'low'"low""low""low""low" oder 'medium'"medium""medium""medium""medium" ausreichen, um ähnliche Detektionsleistung wie mit 'high'"high""high""high""high" zu erzielen.

Default: 'capacity'"capacity""capacity""capacity""capacity" = 'high'"high""high""high""high"

'class_ids_no_orientation'"class_ids_no_orientation""class_ids_no_orientation""class_ids_no_orientation""class_ids_no_orientation":

Mit diesem Parameter können Klassen angegeben werden, für welche die Orientierung nicht berücksichtigt wird, z.B. runde oder andere punktsymmetrische Objekte. Für jede Klasse, deren Klassen-ID in 'class_ids_no_orientation'"class_ids_no_orientation""class_ids_no_orientation""class_ids_no_orientation""class_ids_no_orientation" präsent ist, gibt das Netzwerk ein achsen-paralleles umschließendes Rechteck zurück.

Dieser Parameter betrifft nur Netzwerke mit 'instance_type'"instance_type""instance_type""instance_type""instance_type" = 'rectangle2'"rectangle2""rectangle2""rectangle2""rectangle2".

Es gilt zu beachten, dass die Werte in 'class_ids_no_orientation'"class_ids_no_orientation""class_ids_no_orientation""class_ids_no_orientation""class_ids_no_orientation" von jenen in 'class_ids'"class_ids""class_ids""class_ids""class_ids" abhängen. Falls die Werte in 'class_ids'"class_ids""class_ids""class_ids""class_ids" nach der Erzeugung des Modells verändert werden, wird 'class_ids_no_orientation'"class_ids_no_orientation""class_ids_no_orientation""class_ids_no_orientation""class_ids_no_orientation" auf ein leeres Tupel zurückgesetzt.

Default: 'class_ids_no_orientation'"class_ids_no_orientation""class_ids_no_orientation""class_ids_no_orientation""class_ids_no_orientation" = []

'class_weights'"class_weights""class_weights""class_weights""class_weights":

Der Parameter 'class_weights'"class_weights""class_weights""class_weights""class_weights" ist ein Tupel klassenspezifischer Gewichtungsfaktoren für die Zielfunktion. Erhalten die verschiedenen Klassen unterschiedliche Gewichte, so wird das Netzwerk forciert, den Klassen beim Lernen eine unterschiedliche Bedeutung zu geben. Dies ist nützlich, wenn eine Klasse den Datensatz dominiert. Die einzelnen Gewichtungsfaktoren müssen innerhalb des Intervalls sein. Dabei gilt, je größer das Gewicht einer Klasse, desto stärker ist ihr Einfluss beim Training. Im Tupel 'class_weights'"class_weights""class_weights""class_weights""class_weights" sind die Faktoren gleich angeordnet wie die Klassen im Tupel 'class_ids'"class_ids""class_ids""class_ids""class_ids". Eine Ausnahme bildet der Fall, wenn alle Klassen den selben Gewichtungsfaktor haben, wo nur ein einzelner Wert zurück gegeben wird.

Default: 'class_weights'"class_weights""class_weights""class_weights""class_weights" = 0.25 (für jede Klasse)

'instance_type'"instance_type""instance_type""instance_type""instance_type":

Der Parameter 'instance_type'"instance_type""instance_type""instance_type""instance_type" bestimmt, welcher Instanztyp für das Objektdetektion-Modell verwendet wird. Die Implementierungen unterscheiden sich bezüglich der erlaubten Orientierungen der umschließenden Rechtecke. Für weitere Erklärungen der verschiedenen Typen und ihren umschließenden Rechtecke wird auf das Kapitel Deep Learning / Objektdetektion verwiesen.

Mögliche Werte: 'rectangle1'"rectangle1""rectangle1""rectangle1""rectangle1", 'rectangle2'"rectangle2""rectangle2""rectangle2""rectangle2"

Default: 'instance_type'"instance_type""instance_type""instance_type""instance_type" = 'rectangle1'"rectangle1""rectangle1""rectangle1""rectangle1"

'max_level'"max_level""max_level""max_level""max_level", 'min_level'"min_level""min_level""min_level""min_level":

Diese Parameter bestimmen, an welche Ebenen die zusätzlichen Netwerke an die Merkmalspyramide angehängt werden. Für weitere Informationen zu Merkmalspyramiden und den angeschlossenen Netzwerken wird auf das Kapitel Deep Learning / Objektdetektion verwiesen.

Von diesen ('max_level'"max_level""max_level""max_level""max_level" - 'min_level'"min_level""min_level""min_level""min_level" + 1) Netzwerken werden alle Vorhersagen, die eine minimale Konfidenz und keine zu starke Überlappung aufweisen, beibehalten (siehe 'min_confidence'"min_confidence""min_confidence""min_confidence""min_confidence" und 'max_overlap'"max_overlap""max_overlap""max_overlap""max_overlap").

Die Ebene gibt an, wie oft die Größe der Merkmalskarte bereits herabskaliert wurde. Somit entspricht Ebene 0 den Merkmalskarten mit Größe des Eingabebildes, Ebene 1 den einmalig herabskalierten Merkmalskarten und so weiter. Kleinere Objekte werden daher besser auf den unteren Ebenen, größere Objekte auf den oberen Ebenen erkannt.

Falls 'max_level'"max_level""max_level""max_level""max_level" größer ist als die Anzahl Ebenen des Backbones, wird das Backbone durch zusätzliche (zufällig initialisierte) Faltungs-Layer erweitert um tiefere Ebenen zu generieren. Dies bedeutet, dass 'max_level'"max_level""max_level""max_level""max_level" einen Einfluss auf die minimale Größe der Eingabebilder haben kann.

Bei der Eingabe kleiner Bilddimensionen ist zu beachten, dass hohe Ebenen weniger aussagekräftig sein können, da die Merkmalskarten bereits zu klein sein könnten um aussagekräftige Informationen zu enthalten.

Eine höhere Anzahl verwendeter Ebenen kann zu einer Erhöhung von Laufzeit und Speicherplatz führen, wobei insbesondere die tiefen Ebenen ins Gewicht fallen.

Default: 'max_level'"max_level""max_level""max_level""max_level" = 6, 'min_level'"min_level""min_level""min_level""min_level" = 2

'max_num_detections'"max_num_detections""max_num_detections""max_num_detections""max_num_detections":

Dieser Parameter bestimmt die maximale Anzahl vom Netzwerk vorgeschlagener Detektionen (umschließende Rechtecke) pro Bild.

Default: 'max_num_detections'"max_num_detections""max_num_detections""max_num_detections""max_num_detections" = 100

'max_overlap'"max_overlap""max_overlap""max_overlap""max_overlap":

Der maximal zulässige Quotient aus Schnittmenge und Vereinigungsmenge (IoU, von engl. intersection over union) zweier umschließender Rechtecke derselben Klasse. Anders ausgedrückt, wenn zwei umschließende Rechtecke derselben Klasse zugeordnet werden und einen IoU höher als 'max_overlap'"max_overlap""max_overlap""max_overlap""max_overlap" aufweisen, wird das Rechteck mit dem niedrigeren Konfidenzwert unterdrückt. Weitere Informationen zu IoU sind im Kapitel Deep Learning / Objektdetektion zu finden.

Default: 'max_overlap'"max_overlap""max_overlap""max_overlap""max_overlap": = 0.5

'max_overlap_class_agnostic'"max_overlap_class_agnostic""max_overlap_class_agnostic""max_overlap_class_agnostic""max_overlap_class_agnostic":

Der maximal zulässige Quotient aus Schnittmenge und Vereinigungsmenge (IoU, von engl. intersection over union) zweier Rechtecke unabhängig ihrer Klasse. Anders ausgedrückt, wenn zwei umschließende Rechtecke einen IoU höher als 'max_overlap_class_agnostic'"max_overlap_class_agnostic""max_overlap_class_agnostic""max_overlap_class_agnostic""max_overlap_class_agnostic" aufweisen, wird das Rechteck mit dem niedrigeren Konfidenzwert unterdrückt. Der Standardwert für 'max_overlap_class_agnostic'"max_overlap_class_agnostic""max_overlap_class_agnostic""max_overlap_class_agnostic""max_overlap_class_agnostic" liegt bei 1.0, wodurch die Klassenagnostische Unterdrückung von umschließenden Rechtecken keine Auswirkung hat.

Default: 'max_overlap_class_agnostic'"max_overlap_class_agnostic""max_overlap_class_agnostic""max_overlap_class_agnostic""max_overlap_class_agnostic" = 1.0

'min_confidence'"min_confidence""min_confidence""min_confidence""min_confidence":

Dieser Parameter bestimmt bei der Klassifizierung des Bildausschnitts innerhalb des umschließenden Rechtecks die minimale Konfidenz um das vorgeschlagene umschließende Rechteck beizubehalten. Das heißt, wenn apply_dl_modelapply_dl_modelApplyDlModelApplyDlModelApplyDlModel aufgerufen wird, wird die Ausgabe aller umschließender Rechtecke mit einem Konfidenzwert kleiner als 'min_confidence'"min_confidence""min_confidence""min_confidence""min_confidence" unterdrückt.

Default: 'min_confidence'"min_confidence""min_confidence""min_confidence""min_confidence" = 0.5

'ignore_direction'"ignore_direction""ignore_direction""ignore_direction""ignore_direction":

Dieser Parameter bestimmt ob für das orientierte umschließende Rechteck auch die Ausrichtung des Objekts innerhalb des umschließenden Rechtecks berücksichtigt wird oder nicht. Falls die Ausrichtung innerhalb des umschließenden Rechtecks nicht berücksichtigt werden soll, kann 'ignore_direction'"ignore_direction""ignore_direction""ignore_direction""ignore_direction" = 'true'"true""true""true""true" gesetzt werden, Um das umschließende Rechteck eindeutig zu bestimmen, gelten dabei (aber nur dann) die folgende Konventionen:

  • 'phi'"phi""phi""phi""phi"

  • 'bbox_length1'"bbox_length1""bbox_length1""bbox_length1""bbox_length1" > 'bbox_length2'"bbox_length2""bbox_length2""bbox_length2""bbox_length2"

Dies ist konsistent zu smallest_rectangle2smallest_rectangle2SmallestRectangle2SmallestRectangle2SmallestRectangle2.

Dieser Parameter betrifft nur Netzwerke mit 'instance_type'"instance_type""instance_type""instance_type""instance_type" = 'rectangle2'"rectangle2""rectangle2""rectangle2""rectangle2".

Mögliche Werte: 'true'"true""true""true""true", 'false'"false""false""false""false"

Default: 'ignore_direction'"ignore_direction""ignore_direction""ignore_direction""ignore_direction" = 'false'"false""false""false""false"

Modelle mit 'type'"type""type""type""type"='segmentation'"segmentation""segmentation""segmentation""segmentation"

'ignore_class_ids'"ignore_class_ids""ignore_class_ids""ignore_class_ids""ignore_class_ids":

Mit diesem Parameter können eine oder mehrere Klassen auf 'ignore' gesetzt werden. Für weitere Informationen siehe Deep Learning / Semantische Segmentierung. Diese Klassen werden über ihre ID (Integer-Wert) deklariert.

Zu beachten ist, dass eine Klassen-ID nicht gleichzeitig in 'ignore_class_ids'"ignore_class_ids""ignore_class_ids""ignore_class_ids""ignore_class_ids" und 'class_ids'"class_ids""class_ids""class_ids""class_ids" gesetzt werden kann.

Ausführungsinformationen

Parameter

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

Handle des Deep Learning-basierten Modells.

GenParamNameGenParamNameGenParamNameGenParamNamegenParamName (input_control)  attribute.name HTupleHTupleHtuple (string) (string) (HString) (char*)

Name des generischen Parameters.

Defaultwert: 'batch_size' "batch_size" "batch_size" "batch_size" "batch_size"

Werteliste: 'anchor_angles'"anchor_angles""anchor_angles""anchor_angles""anchor_angles", 'anchor_aspect_ratios'"anchor_aspect_ratios""anchor_aspect_ratios""anchor_aspect_ratios""anchor_aspect_ratios", 'anchor_num_subscales'"anchor_num_subscales""anchor_num_subscales""anchor_num_subscales""anchor_num_subscales", 'backbone'"backbone""backbone""backbone""backbone", 'backbone_docking_layers'"backbone_docking_layers""backbone_docking_layers""backbone_docking_layers""backbone_docking_layers", 'batch_size'"batch_size""batch_size""batch_size""batch_size", 'batch_size_multiplier'"batch_size_multiplier""batch_size_multiplier""batch_size_multiplier""batch_size_multiplier", 'bbox_heads_weight'"bbox_heads_weight""bbox_heads_weight""bbox_heads_weight""bbox_heads_weight", 'capacity'"capacity""capacity""capacity""capacity", 'class_heads_weight'"class_heads_weight""class_heads_weight""class_heads_weight""class_heads_weight", 'class_ids'"class_ids""class_ids""class_ids""class_ids", 'class_ids_no_orientation'"class_ids_no_orientation""class_ids_no_orientation""class_ids_no_orientation""class_ids_no_orientation", 'class_names'"class_names""class_names""class_names""class_names", 'class_weights'"class_weights""class_weights""class_weights""class_weights", 'complexity'"complexity""complexity""complexity""complexity", 'extract_feature_maps'"extract_feature_maps""extract_feature_maps""extract_feature_maps""extract_feature_maps", 'gpu'"gpu""gpu""gpu""gpu", 'ignore_class_ids'"ignore_class_ids""ignore_class_ids""ignore_class_ids""ignore_class_ids", 'ignore_direction'"ignore_direction""ignore_direction""ignore_direction""ignore_direction", 'image_dimensions'"image_dimensions""image_dimensions""image_dimensions""image_dimensions", 'image_height'"image_height""image_height""image_height""image_height", 'image_num_channels'"image_num_channels""image_num_channels""image_num_channels""image_num_channels", 'image_range_max'"image_range_max""image_range_max""image_range_max""image_range_max", 'image_range_min'"image_range_min""image_range_min""image_range_min""image_range_min", 'image_width'"image_width""image_width""image_width""image_width", 'instance_type'"instance_type""instance_type""instance_type""instance_type", 'learning_rate'"learning_rate""learning_rate""learning_rate""learning_rate", 'max_level'"max_level""max_level""max_level""max_level", 'max_num_detections'"max_num_detections""max_num_detections""max_num_detections""max_num_detections", 'max_overlap'"max_overlap""max_overlap""max_overlap""max_overlap", 'max_overlap_class_agnostic'"max_overlap_class_agnostic""max_overlap_class_agnostic""max_overlap_class_agnostic""max_overlap_class_agnostic", 'min_confidence'"min_confidence""min_confidence""min_confidence""min_confidence", 'min_level'"min_level""min_level""min_level""min_level", 'momentum'"momentum""momentum""momentum""momentum", 'num_classes'"num_classes""num_classes""num_classes""num_classes", 'runtime'"runtime""runtime""runtime""runtime", 'standard_deviation_factor'"standard_deviation_factor""standard_deviation_factor""standard_deviation_factor""standard_deviation_factor", 'summary'"summary""summary""summary""summary", 'type'"type""type""type""type", 'weight_prior'"weight_prior""weight_prior""weight_prior""weight_prior"

GenParamValueGenParamValueGenParamValueGenParamValuegenParamValue (output_control)  attribute.name(-array) HTupleHTupleHtuple (integer / string / real) (int / long / string / double) (Hlong / HString / double) (Hlong / char* / double)

Wert des generischen Parameters.

Ergebnis

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

Vorgänger

read_dl_modelread_dl_modelReadDlModelReadDlModelReadDlModel, set_dl_model_paramset_dl_model_paramSetDlModelParamSetDlModelParamSetDlModelParam

Nachfolger

set_dl_model_paramset_dl_model_paramSetDlModelParamSetDlModelParamSetDlModelParam, apply_dl_modelapply_dl_modelApplyDlModelApplyDlModelApplyDlModel, train_dl_model_batchtrain_dl_model_batchTrainDlModelBatchTrainDlModelBatchTrainDlModelBatch, train_dl_model_anomaly_datasettrain_dl_model_anomaly_datasetTrainDlModelAnomalyDatasetTrainDlModelAnomalyDatasetTrainDlModelAnomalyDataset

Siehe auch

set_dl_model_paramset_dl_model_paramSetDlModelParamSetDlModelParamSetDlModelParam

Modul

Deep Learning Inference