Skip to content

apply_dl_modelApplyDlModelApplyDlModelapply_dl_modelT_apply_dl_model🔗

Short description🔗

apply_dl_modelApplyDlModelApplyDlModelapply_dl_modelT_apply_dl_model — Apply a deep-learning-based network on a set of images for inference.

Signature🔗

apply_dl_model( dl_model DLModelHandle, dict DLSampleBatch, string Outputs, out dict DLResultBatch )void ApplyDlModel( const HTuple& DLModelHandle, const HTuple& DLSampleBatch, const HTuple& Outputs, HTuple* DLResultBatch )static void HOperatorSet.ApplyDlModel( HTuple DLModelHandle, HTuple DLSampleBatch, HTuple outputs, out HTuple DLResultBatch )def apply_dl_model( dlmodel_handle: HHandle, dlsample_batch: Sequence[HHandle], outputs: Sequence[str] ) -> Sequence[HHandle]

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

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

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

Description🔗

apply_dl_modelApplyDlModel applies the deep-learning-based network given by DLModelHandleDLModelHandledlmodel_handle on the batch of input images handed over through the tuple of dictionaries DLSampleBatchDLSampleBatchdlsample_batch. The operator returns DLResultBatchDLResultBatchdlresult_batch, a tuple with a result dictionary DLResultDLResultdlresult for every input image.

Please see the chapter Deep Learning / Model for more information on the concept and the dictionaries of the deep learning model in HALCON.

In order to apply the network on images, you have to hand them over through a tuple of dictionaries DLSampleBatchDLSampleBatchdlsample_batch, where a dictionary refers to a single image. You can create such a dictionary conveniently using the procedure gen_dl_samples_from_images. The tuple DLSampleBatchDLSampleBatchdlsample_batch can contain an arbitrary number of dictionaries. The operator apply_dl_modelApplyDlModel always processes a batch with up to 'batch_size'"batch_size" images simultaneously. In case the tuple contains more images, apply_dl_modelApplyDlModel iterates over the necessary number of batches internally. For a DLSampleBatchDLSampleBatchdlsample_batch with less than 'batch_size'"batch_size" images, the tuple is padded to a full batch which means that the time required to process a DLSampleBatchDLSampleBatchdlsample_batch is independent of whether the batch is filled up or just consists of a single image. This also means that if fewer images than 'batch_size'"batch_size" are processed in one operator call, the network still requires the same amount of memory as for a full batch. The current value of 'batch_size'"batch_size" can be retrieved using get_dl_model_paramGetDlModelParam.

Note that the images might have to be preprocessed before feeding them into the operator apply_dl_modelApplyDlModel in order to fulfill the network requirements. You can retrieve the current requirements of your network, such as e.g., the image dimensions, using get_dl_model_paramGetDlModelParam. The procedure preprocess_dl_dataset provides guidance on how to implement such a preprocessing stage.

The results are returned in DLResultBatchDLResultBatchdlresult_batch, a tuple with a dictionary DLResultDLResultdlresult for every input image. Please see the chapter Deep Learning / Model for more information to the output dictionaries in DLResultBatchDLResultBatchdlresult_batch and their keys. In Outputsoutputsoutputs you can specify, which output data is returned in DLResultDLResultdlresult. Outputsoutputsoutputs can be a single string, a tuple of strings, or an empty tuple with which you retrieve all possible outputs. If apply_dl_modelApplyDlModel is used with an AI²-interface, it might be required to set 'is_inference_output'"is_inference_output" = 'true'"true" for all requested layers in Outputsoutputsoutputs before the model is optimized for the AI²-interface, see optimize_dl_model_for_inferenceOptimizeDlModelForInference and set_dl_model_layer_paramSetDlModelLayerParam for further details. The values for Outputsoutputsoutputs depend on the model type of your network:

  • Models of 'type'"type"='3d_gripping_point_detection'"3d_gripping_point_detection"

    • Outputsoutputsoutputs='[]'"[]": DLResultDLResultdlresult containing:

      • 'gripping_map': Binary image, indicating for each pixel of the scene whether the model predicted a gripping point (pixel value = 1.01.0) or not (0.00.0).

      • 'gripping_confidence': Image, containing raw, uncalibrated confidence values for every point in the scene.

  • Models of 'type'"type"='3d_pose_estimation'"3d_pose_estimation" This model type cannot be run with the operator apply_dl_modelApplyDlModel.

  • Models of 'type'"type"='anomaly_detection'"anomaly_detection"

    • Outputsoutputsoutputs='[]'"[]": DLResultDLResultdlresult contains an image where each pixel has the score of the according input image pixel. Additionally it contains a score for the entire image.
  • Models of 'type'"type"='counting'"counting" This model type cannot be run with the operator apply_dl_modelApplyDlModel.

  • Models of 'type'"type"='gc_anomaly_detection'"gc_anomaly_detection" For each value of Outputsoutputsoutputs, DLResultDLResultdlresult contains an image where each pixel has the score of the according input image pixel. Additionally it contains a score for the entire image.

    • Outputsoutputsoutputs='[]'"[]": The scores of each input image pixel are calculated as a combination of all available networks.

    • Outputsoutputsoutputs='anomaly_image_local'"anomaly_image_local": The scores of each input image pixel are calculated from the 'local'"local" network only. If the 'local'"local" network is not available, an error is raised.

    • Outputsoutputsoutputs='anomaly_image_global'"anomaly_image_global": The scores of each input image pixel are calculated from the 'global'"global" network only. If the 'global'"global" network is not available, an error is raised.

    • Outputsoutputsoutputs='anomaly_image_combined'"anomaly_image_combined": The scores of each input image pixel are calculated by combining the 'global'"global" and the 'local'"local" networks. If one or both of the networks are not available, an error is raised.

  • Models of 'type'"type"='classification'"classification"

    • Outputsoutputsoutputs='[]'"[]": DLResultDLResultdlresult contains a tuple with confidence values in descending order and tuples with the class names and class IDs sorted accordingly. If Out-of-Distribution Detection is available, DLResultDLResultdlresult additionally contains the out-of-distribution score, the out-of-distribution result and the threshold that was used for the prediction.
  • Models of 'type'"type"='multi_label_classification'"multi_label_classification"

    • Outputsoutputsoutputs='[]'"[]": DLResultDLResultdlresult contains a tuple with the selected class names, class IDs and the corresponding confidence values according to the model parameter 'min_confidence'"min_confidence". Additionally, it contains tuples with all class names, class IDs and corresponding confidence values.
  • Models of 'type'"type"='detection'"detection", OD

    • Outputsoutputsoutputs='[]'"[]": DLResultDLResultdlresult contains the bounding box coordinates as well as the inferred classes and their confidence values resulting from all levels.

    • Outputsoutputsoutputs= '[bboxhead + level + _prediction, classhead + level + _prediction]'"[bboxhead + level + _prediction, classhead + level + _prediction]", where 'level'"level" stands for the selected level which lies between 'min_level'"min_level" and 'max_level'"max_level": DLResultDLResultdlresult contains the bounding box coordinates as well as the inferred classes and their confidence values resulting from specific levels.

  • Models of 'type'"type"='detection'"detection", AOD

    • Outputsoutputsoutputs='[]'"[]": DLResultDLResultdlresult contains the bounding box coordinates as well as the inferred classes and their confidence values.
  • Models of 'type'"type"='ocr_recognition'"ocr_recognition"

    • Outputsoutputsoutputs='[]'"[]": DLResultDLResultdlresult contains the recognized word. Additionally it contains candidates for each character of the word and their confidences.
  • Models of 'type'"type"='ocr_detection'"ocr_detection"

    • Outputsoutputsoutputs='[]'"[]": DLResultDLResultdlresult contains the bounding boxes coordinates of localized words.
  • Models of 'type'"type"='segmentation'"segmentation"

    • Outputsoutputsoutputs='segmentation_image'"segmentation_image": DLResultDLResultdlresult contains an image where each pixel has a value corresponding to the class its corresponding pixel has been assigned to.

    • Outputsoutputsoutputs='segmentation_confidence'"segmentation_confidence": DLResultDLResultdlresult contains an image where each pixel has the confidence value out of the classification of the according pixel.

    • Outputsoutputsoutputs='[]'"[]": DLResultDLResultdlresult contains all output values.

Attention🔗

System requirements: To run this operator on GPU by setting 'device'"device" to 'gpu'"gpu" (see get_dl_model_paramGetDlModelParam), cuDNN and cuBLAS are required. For further details, please refer to the “Installation Guide”, paragraph “Requirements for Deep Learning and Deep-Learning-Based Methods”.

Execution information🔗

Execution information
  • Multithreading type: reentrant (runs in parallel with non-exclusive operators).

  • Multithreading scope: global (may be called from any thread).

  • Automatically parallelized on internal data level.

This operator supports canceling timeouts and interrupts.

This operator supports breaking timeouts and interrupts.

Parameters🔗

DLModelHandleDLModelHandledlmodel_handle (input_control) dl_model → (handle)HTuple (HHandle)HDlModel, HTuple (IntPtr)HHandleHtuple (handle)

Handle of the deep learning model.

DLSampleBatchDLSampleBatchdlsample_batch (input_control) dict-array → (handle)HTuple (HHandle)HDict, HTuple (IntPtr)Sequence[HHandle]Htuple (handle)

Input data.

Outputsoutputsoutputs (input_control) string-array → (string)HTuple (HString)HTuple (string)Sequence[str]Htuple (char*)

Requested outputs.

Default: [][]
List of values: [], 'bboxhead2_prediction', 'classhead2_prediction', 'segmentation_confidence', 'segmentation_image'[], "bboxhead2_prediction", "classhead2_prediction", "segmentation_confidence", "segmentation_image"

DLResultBatchDLResultBatchdlresult_batch (output_control) dict-array → (handle)HTuple (HHandle)HDict, HTuple (IntPtr)Sequence[HHandle]Htuple (handle)

Result data.

Result🔗

If the parameters are valid, the operator apply_dl_modelApplyDlModel returns the value 2 (H_MSG_TRUE). If necessary, an exception is raised.

Combinations with other operators🔗

Combinations

Possible predecessors

read_dl_modelReadDlModel, train_dl_model_batchTrainDlModelBatch, train_dl_model_anomaly_datasetTrainDlModelAnomalyDataset, set_dl_model_paramSetDlModelParam

Module🔗

This operator uses dynamic licensing (see the ‘Installation Guide’). Which of the following modules is required depends on the specific usage of the operator:

3D Metrology, OCR/OCV, Deep Learning Enhanced, Deep Learning Professional