apply_dl_modelT_apply_dl_modelApplyDlModelApplyDlModel (Operator)

Name

apply_dl_modelT_apply_dl_modelApplyDlModelApplyDlModel — Anwenden des Deep Learning-basierten Netzwerkes zur Inferenz auf einer Menge an Bildern.

Signatur

apply_dl_model( : : DLModelHandle, DLSampleBatch, Outputs : DLResultBatch)

Herror T_apply_dl_model(const Htuple DLModelHandle, const Htuple DLSampleBatch, const Htuple Outputs, Htuple* DLResultBatch)

void ApplyDlModel(const HTuple& DLModelHandle, const HTuple& DLSampleBatch, const HTuple& Outputs, HTuple* DLResultBatch)

HDictArray HDlModel::ApplyDlModel(const HDictArray& DLSampleBatch, const HTuple& Outputs) const

static void HOperatorSet.ApplyDlModel(HTuple DLModelHandle, HTuple DLSampleBatch, HTuple outputs, out HTuple DLResultBatch)

HDict[] HDlModel.ApplyDlModel(HDict[] DLSampleBatch, HTuple outputs)

Beschreibung

apply_dl_modelapply_dl_modelApplyDlModelApplyDlModelApplyDlModel wendet das durch DLModelHandleDLModelHandleDLModelHandleDLModelHandleDLModelHandle gegebene Deep Learning-basierte Netzwerk auf ein Batch von Eingabebildern an, die über das Tupel von Dictionaries DLSampleBatchDLSampleBatchDLSampleBatchDLSampleBatchDLSampleBatch übergeben werden. Der Operator gibt DLResultBatchDLResultBatchDLResultBatchDLResultBatchDLResultBatch zurück, ein Tupel mit einem Ergebnis-Dictionary DLResultDLResultDLResultDLResultDLResult pro Eingabebild.

Für weitere Informationen zum Konzept und den Dictionaries des Deep Learning-Modells in HALCON siehe das Kapitel Deep Learning / Modell.

Um das Netzwerk auf Bilder anwenden zu können, müssen diese über ein Tupel von Dictionaries DLSampleBatchDLSampleBatchDLSampleBatchDLSampleBatchDLSampleBatch übergeben werden. Dabei bezieht sich jedes Dictionary auf ein einzelnes Bild. Mit Hilfe der Prozedur gen_dl_samples_from_images kann solch ein Dictionary passend erstellt werden. Das Tupel DLSampleBatchDLSampleBatchDLSampleBatchDLSampleBatchDLSampleBatch kann eine beliebige Anzahl Dictionaries enthalten. Der Operator apply_dl_modelapply_dl_modelApplyDlModelApplyDlModelApplyDlModel verarbeitet stets einen Batch mit bis zu 'batch_size'"batch_size""batch_size""batch_size""batch_size" Bildern simultan. Falls das Tupel mehr Bilder enthält, iteriert apply_dl_modelapply_dl_modelApplyDlModelApplyDlModelApplyDlModel intern über die notwendige Anzahl an Batches um alle Bilder zu verarbeiten. Für ein DLSampleBatchDLSampleBatchDLSampleBatchDLSampleBatchDLSampleBatch mit weniger als 'batch_size'"batch_size""batch_size""batch_size""batch_size" Bildern wird das Tupel zu einem vollen Batch aufgefüllt, was also bedeutet, dass die Laufzeit zur Verarbeitung eines solchen Batches unabhängig davon ist, ob dieser vollständig gefüllt ist oder nur ein einzelnes Bild enthält. Dies heißt auch, dass das Netzwerk stets den vollen Speicher benötigt, selbst wenn in einem Operatorenaufruf weniger als 'batch_size'"batch_size""batch_size""batch_size""batch_size" Bilder verarbeitet werden sollen. Der aktuelle Wert von 'batch_size'"batch_size""batch_size""batch_size""batch_size" kann mittels get_dl_model_paramget_dl_model_paramGetDlModelParamGetDlModelParamGetDlModelParam abgefragt werden.

Es ist zu beachten, dass die Bilder eventuell vorverarbeitet werden müssen um die die Netzwerkanforderungen zu erfüllen, bevor sie dem Operator apply_dl_modelapply_dl_modelApplyDlModelApplyDlModelApplyDlModel übergeben werden können. Mit get_dl_model_paramget_dl_model_paramGetDlModelParamGetDlModelParamGetDlModelParam können die aktuellen Anforderungen des Netzwerks wie z.B. die Bilddimensionen abgefragt werden. Die Prozedur preprocess_dl_dataset gibt eine Anleitung für die Implementierung dieser Vorverarbeitung.

Die Resultate werden in DLResultBatchDLResultBatchDLResultBatchDLResultBatchDLResultBatch zurückgegeben, einem Tupel mit einem Dictionary DLResultDLResultDLResultDLResultDLResult für jedes Eingabebild. Für weitere Informationen zu den Ausgabe-Dictionaries DLResultBatchDLResultBatchDLResultBatchDLResultBatchDLResultBatch und dessen Schlüssel siehe das Kapitel Deep Learning / Modell. In OutputsOutputsOutputsOutputsoutputs kann spezifiziert werden, welche Daten vom Netzwerk in den Ergebnis-Dictionaries DLResultBatchDLResultBatchDLResultBatchDLResultBatchDLResultBatch ausgegeben werden. Dabei kann OutputsOutputsOutputsOutputsoutputs ein einzelner String, ein Tupel von Strings, oder ein leeres Tupel, mit dem alle möglichen Ausgaben abgerufen werden können, sein. Die Werte sind abhängig vom Modelltyp des verwendeten Netzwerks:

Modell mit 'type'"type""type""type""type"='anomaly_detection'"anomaly_detection""anomaly_detection""anomaly_detection""anomaly_detection"

Modell mit 'type'"type""type""type""type"='classification'"classification""classification""classification""classification"

Modell mit 'type'"type""type""type""type"='detection'"detection""detection""detection""detection"

Modell mit 'type'"type""type""type""type"='segmentation'"segmentation""segmentation""segmentation""segmentation"

Achtung

Um diesen Operator ausführen zu können, werden cuDNN und cuBLAS benötigt, falls 'runtime'"runtime""runtime""runtime""runtime" auf 'gpu'"gpu""gpu""gpu""gpu" gesetzt ist (siehe get_dl_model_paramget_dl_model_paramGetDlModelParamGetDlModelParamGetDlModelParam). Für weitere Details wird auf den „Installation Guide“, Abschnitt „Requirements for Deep Learning“, verwiesen.

Ausführungsinformationen

Dieser Operator unterstützt Cancel-Timeouts und Interrupts.

Dieser Operator unterstützt Break-Timeouts und Interrupts.

Parameter

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

Handle des Deep Learning-Modells.

DLSampleBatchDLSampleBatchDLSampleBatchDLSampleBatchDLSampleBatch (input_control)  dict-array HDict, HTupleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)

Eingabedaten.

OutputsOutputsOutputsOutputsoutputs (input_control)  string-array HTupleHTupleHtuple (string) (string) (HString) (char*)

Angeforderte Ausgabedaten.

Defaultwert: []

Werteliste: [], 'bboxhead2_prediction'"bboxhead2_prediction""bboxhead2_prediction""bboxhead2_prediction""bboxhead2_prediction", 'classhead2_prediction'"classhead2_prediction""classhead2_prediction""classhead2_prediction""classhead2_prediction", 'segmentation_confidence'"segmentation_confidence""segmentation_confidence""segmentation_confidence""segmentation_confidence", 'segmentation_image'"segmentation_image""segmentation_image""segmentation_image""segmentation_image"

DLResultBatchDLResultBatchDLResultBatchDLResultBatchDLResultBatch (output_control)  dict-array HDict, HTupleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)

Handle der Ergebnisdaten.

Ergebnis

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

Vorgänger

read_dl_modelread_dl_modelReadDlModelReadDlModelReadDlModel, train_dl_model_batchtrain_dl_model_batchTrainDlModelBatchTrainDlModelBatchTrainDlModelBatch, train_dl_model_anomaly_datasettrain_dl_model_anomaly_datasetTrainDlModelAnomalyDatasetTrainDlModelAnomalyDatasetTrainDlModelAnomalyDataset, set_dl_model_paramset_dl_model_paramSetDlModelParamSetDlModelParamSetDlModelParam

Modul

Deep Learning Inference