apply_dl_modelT_apply_dl_modelApplyDlModelApplyDlModelapply_dl_model (Operator)

Name

apply_dl_modelT_apply_dl_modelApplyDlModelApplyDlModelapply_dl_model — 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)

def apply_dl_model(dlmodel_handle: HHandle, dlsample_batch: Sequence[HHandle], outputs: Sequence[str]) -> Sequence[HHandle]

Beschreibung

apply_dl_modelapply_dl_modelApplyDlModelApplyDlModelapply_dl_model wendet das durch DLModelHandleDLModelHandleDLModelHandleDLModelHandledlmodel_handle gegebene Deep Learning-basierte Netzwerk auf ein Batch von Eingabebildern an, die über das Tupel von Dictionarys DLSampleBatchDLSampleBatchDLSampleBatchDLSampleBatchdlsample_batch übergeben werden. Der Operator gibt DLResultBatchDLResultBatchDLResultBatchDLResultBatchdlresult_batch zurück, ein Tupel mit einem Ergebnis-Dictionary DLResultDLResultDLResultDLResultdlresult pro Eingabebild.

Für weitere Informationen zum Konzept und den Dictionarys 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 Dictionarys DLSampleBatchDLSampleBatchDLSampleBatchDLSampleBatchdlsample_batch ü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 DLSampleBatchDLSampleBatchDLSampleBatchDLSampleBatchdlsample_batch kann eine beliebige Anzahl Dictionarys enthalten. Der Operator apply_dl_modelapply_dl_modelApplyDlModelApplyDlModelapply_dl_model 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_modelApplyDlModelApplyDlModelapply_dl_model intern über die notwendige Anzahl an Batches um alle Bilder zu verarbeiten. Für ein DLSampleBatchDLSampleBatchDLSampleBatchDLSampleBatchdlsample_batch 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_paramGetDlModelParamGetDlModelParamget_dl_model_param 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_modelApplyDlModelApplyDlModelapply_dl_model übergeben werden können. Mit get_dl_model_paramget_dl_model_paramGetDlModelParamGetDlModelParamget_dl_model_param 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 DLResultBatchDLResultBatchDLResultBatchDLResultBatchdlresult_batch zurückgegeben, einem Tupel mit einem Dictionary DLResultDLResultDLResultDLResultdlresult für jedes Eingabebild. Für weitere Informationen zu den Ausgabe-Dictionarys DLResultBatchDLResultBatchDLResultBatchDLResultBatchdlresult_batch und dessen Schlüssel siehe das Kapitel Deep Learning / Modell. In OutputsOutputsOutputsoutputsoutputs kann spezifiziert werden, welche Daten vom Netzwerk in den Ergebnis-Dictionarys DLResultBatchDLResultBatchDLResultBatchDLResultBatchdlresult_batch 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. Falls apply_dl_modelapply_dl_modelApplyDlModelApplyDlModelapply_dl_model über eine AI 2-Schnittstelle genutzt wird, kann es notwendig sein, dass 'is_inference_output'"is_inference_output""is_inference_output""is_inference_output""is_inference_output" = 'true'"true""true""true""true" für alle Layer in OutputsOutputsOutputsoutputsoutputs gesetzt werden muss, bevor das Modell für die AI 2-Schnittstelle optimiert wird, siehe optimize_dl_model_for_inferenceoptimize_dl_model_for_inferenceOptimizeDlModelForInferenceOptimizeDlModelForInferenceoptimize_dl_model_for_inference und set_dl_model_layer_paramset_dl_model_layer_paramSetDlModelLayerParamSetDlModelLayerParamset_dl_model_layer_param für Details dazu. Die Werte für OutputsOutputsOutputsoutputsoutputs sind abhängig vom Modelltyp des verwendeten Netzwerks:

Modell mit 'type'"type""type""type""type"='3d_gripping_point_detection'"3d_gripping_point_detection""3d_gripping_point_detection""3d_gripping_point_detection""3d_gripping_point_detection"

  • OutputsOutputsOutputsoutputsoutputs='[]'"[]""[]""[]""[]": DLResultDLResultDLResultDLResultdlresult, welches folgende Einträge enthält:

    • 'gripping_map': Binärbild, das für jedes Pixel der Szene angibt, ob das Modell einen Greifpunkt vorhergesagt hat (Pixelwert = 1.0) oder nicht (0.0).

    • 'gripping_confidence': Bild, das für jeden Punkt der Szene unverarbeitete, unkalibrierte Konfidenzwerte enthält.

Modell mit 'type'"type""type""type""type"='3d_pose_estimation'"3d_pose_estimation""3d_pose_estimation""3d_pose_estimation""3d_pose_estimation"

Dieser Modelltyp kann nicht mit dem Operator apply_dl_modelapply_dl_modelApplyDlModelApplyDlModelapply_dl_model ausgeführt werden.

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

  • OutputsOutputsOutputsoutputsoutputs='[]'"[]""[]""[]""[]": DLResultDLResultDLResultDLResultdlresult enthält ein Bild, in dem jedes Pixel den Score des entsprechenden Pixels des Eingabebildes erhält. Zusätzlich enthält es einen Score für das Bild als Ganzes.

Modell mit 'type'"type""type""type""type"='counting'"counting""counting""counting""counting"

Dieser Modelltyp kann nicht mit dem Operator apply_dl_modelapply_dl_modelApplyDlModelApplyDlModelapply_dl_model ausgeführt werden.

Modell mit 'type'"type""type""type""type"='gc_anomaly_detection'"gc_anomaly_detection""gc_anomaly_detection""gc_anomaly_detection""gc_anomaly_detection"

Für jeden Wert von OutputsOutputsOutputsoutputsoutputs enthält DLResultDLResultDLResultDLResultdlresult ein Bild, in dem jedes Pixel den Score des entsprechenden Pixels des Eingabebildes erhält. Zusätzlich enthält es einen Score für das Bild als Ganzes.

  • OutputsOutputsOutputsoutputsoutputs='[]'"[]""[]""[]""[]": Der Score jedes Pixels wird aus der Kombination aller verfügbaren Netzwerke berechnet.

  • OutputsOutputsOutputsoutputsoutputs='anomaly_image_local'"anomaly_image_local""anomaly_image_local""anomaly_image_local""anomaly_image_local": Der Score jedes Pixels wird nur aus dem Netzwerk mit dem Namen 'local'"local""local""local""local" berechnet. Falls dieses Netzwerk nicht zur Verfügung steht, wird ein Fehler geworfen.

  • OutputsOutputsOutputsoutputsoutputs='anomaly_image_global'"anomaly_image_global""anomaly_image_global""anomaly_image_global""anomaly_image_global": Der Score jedes Pixels wird nur aus dem Netzwerk mit dem Namen 'global'"global""global""global""global" berechnet. Falls dieses Netzwerk nicht zur Verfügung steht, wird ein Fehler geworfen.

  • OutputsOutputsOutputsoutputsoutputs='anomaly_image_combined'"anomaly_image_combined""anomaly_image_combined""anomaly_image_combined""anomaly_image_combined": Der Score jedes Pixels wird aus einer Kombination der Scores aus den Netzwerken mit den Namen 'local'"local""local""local""local" und 'global'"global""global""global""global" berechnet. Falls nicht beide Subnetzwerke zur Verfügung stehen, wird ein Fehler geworfen.

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

  • OutputsOutputsOutputsoutputsoutputs='[]'"[]""[]""[]""[]": DLResultDLResultDLResultDLResultdlresult enthält ein Tupel mit den Konfidenzwerten in absteigender Reihenfolge sowie weitere Tupel mit den Klassennamen und Klassen-IDs in entsprechender Sortierung.

Modell mit 'type'"type""type""type""type"='multi_label_classification'"multi_label_classification""multi_label_classification""multi_label_classification""multi_label_classification"

  • OutputsOutputsOutputsoutputsoutputs='[]'"[]""[]""[]""[]": DLResultDLResultDLResultDLResultdlresult enthält ein Tupel mit anhand von 'min_confidence'"min_confidence""min_confidence""min_confidence""min_confidence" ausgewählten Klassennamen, Klassen-IDs und zugehörigen Konfidenzwerten. Zusätzlich enthält es ein Tupel mit allen Klassennamen, Klassen-IDs und zugehörigen Konfidenzwerten.

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

  • OutputsOutputsOutputsoutputsoutputs='[]'"[]""[]""[]""[]": DLResultDLResultDLResultDLResultdlresult enthält für alle Modell-Ebenen die Koordinaten der umschließenden Rechtecke, sowie die geschätzten Klassen und deren Konfidenzwerte.

  • OutputsOutputsOutputsoutputsoutputs= '[bboxhead + level + _prediction, classhead + level + _prediction]'"[bboxhead + level + _prediction, classhead + level + _prediction]""[bboxhead + level + _prediction, classhead + level + _prediction]""[bboxhead + level + _prediction, classhead + level + _prediction]""[bboxhead + level + _prediction, classhead + level + _prediction]", wobei 'level'"level""level""level""level" die ausgewählte Ebene angibt und einen Wert zwischen 'min_level'"min_level""min_level""min_level""min_level" und 'max_level'"max_level""max_level""max_level""max_level" annehmen kann: DLResultDLResultDLResultDLResultdlresult enthält für die ausgewählten Modell-Ebenen die Koordinaten der umschließenden Rechtecke, sowie die geschätzten Klassen und deren Konfidenzwerte.

Modell mit 'type'"type""type""type""type"='ocr_recognition'"ocr_recognition""ocr_recognition""ocr_recognition""ocr_recognition"

  • OutputsOutputsOutputsoutputsoutputs='[]'"[]""[]""[]""[]": DLResultDLResultDLResultDLResultdlresult enthält das erkannte Wort. Zusätzlich enthält es Kandidaten für jedes Zeichen eines Wortes und deren Konfidenzwerte.

Modell mit 'type'"type""type""type""type"='ocr_detection'"ocr_detection""ocr_detection""ocr_detection""ocr_detection"

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

  • OutputsOutputsOutputsoutputsoutputs='segmentation_image'"segmentation_image""segmentation_image""segmentation_image""segmentation_image": DLResultDLResultDLResultDLResultdlresult enthält ein Bild, in dem jedes Pixel einen Wert entsprechend der Klasse erhält, welcher das entsprechende Pixel zugeordnet wurde.

  • OutputsOutputsOutputsoutputsoutputs='segmentation_confidence'"segmentation_confidence""segmentation_confidence""segmentation_confidence""segmentation_confidence": DLResultDLResultDLResultDLResultdlresult enthält ein Bild, in dem jedes Pixel den Konfidenzwert der Klassifikation des entsprechenden Pixels erhält.

  • OutputsOutputsOutputsoutputsoutputs='[]'"[]""[]""[]""[]": DLResultDLResultDLResultDLResultdlresult enthält alle Ausgabewerte.

Achtung

Systemvoraussetzungen: Um diesen Operator auf der GPU auszuführen, indem 'device'"device""device""device""device" auf 'gpu'"gpu""gpu""gpu""gpu" gesetzt ist (siehe get_dl_model_paramget_dl_model_paramGetDlModelParamGetDlModelParamget_dl_model_param), werden cuDNN und cuBLAS benötigt. Für weitere Details wird auf den „Installation Guide“, Abschnitt „Requirements for Deep Learning and Deep-Learning-Based Methods“, verwiesen.

Ausführungsinformationen

Dieser Operator unterstützt Cancel-Timeouts und Interrupts.

Dieser Operator unterstützt Break-Timeouts und Interrupts.

Parameter

DLModelHandleDLModelHandleDLModelHandleDLModelHandledlmodel_handle (input_control)  dl_model HDlModel, HTupleHHandleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)

Handle des Deep Learning-Modells.

DLSampleBatchDLSampleBatchDLSampleBatchDLSampleBatchdlsample_batch (input_control)  dict-array HDict, HTupleSequence[HHandle]HTupleHtuple (handle) (IntPtr) (HHandle) (handle)

Eingabedaten.

OutputsOutputsOutputsoutputsoutputs (input_control)  string-array HTupleSequence[str]HTupleHtuple (string) (string) (HString) (char*)

Angeforderte Ausgabedaten.

Default: []

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"

DLResultBatchDLResultBatchDLResultBatchDLResultBatchdlresult_batch (output_control)  dict-array HDict, HTupleSequence[HHandle]HTupleHtuple (handle) (IntPtr) (HHandle) (handle)

Dictionary mit Ergebnisdaten.

Ergebnis

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

Vorgänger

read_dl_modelread_dl_modelReadDlModelReadDlModelread_dl_model, train_dl_model_batchtrain_dl_model_batchTrainDlModelBatchTrainDlModelBatchtrain_dl_model_batch, train_dl_model_anomaly_datasettrain_dl_model_anomaly_datasetTrainDlModelAnomalyDatasetTrainDlModelAnomalyDatasettrain_dl_model_anomaly_dataset, set_dl_model_paramset_dl_model_paramSetDlModelParamSetDlModelParamset_dl_model_param

Modul

Foundation. Dieser Operator verwendet dynamische Lizenzierung (siehe 'Installation Guide'). Welches der folgenden Module benötigt wird hängt von der Anwendung des Operators ab:
3D Metrology, OCR/OCV, Deep Learning Enhanced, Deep Learning Professional