Operator Reference

read_dl_classifierT_read_dl_classifierReadDlClassifierReadDlClassifierread_dl_classifier (Operator)

read_dl_classifierT_read_dl_classifierReadDlClassifierReadDlClassifierread_dl_classifier — Read a deep-learning-based classifier from a file.

Warning

read_dl_classifierread_dl_classifierReadDlClassifierReadDlClassifierread_dl_classifier is obsolete and is only provided for reasons of backward compatibility. The operator will be removed with HALCON 25.05. New applications should use the common CNN-based operator read_dl_modelread_dl_modelReadDlModelReadDlModelread_dl_model.

Signature

read_dl_classifier( : : FileName : DLClassifierHandle)

Herror T_read_dl_classifier(const Htuple FileName, Htuple* DLClassifierHandle)

void ReadDlClassifier(const HTuple& FileName, HTuple* DLClassifierHandle)

void HDlClassifier::HDlClassifier(const HString& FileName)

void HDlClassifier::HDlClassifier(const char* FileName)

void HDlClassifier::HDlClassifier(const wchar_t* FileName)   ( Windows only)

void HDlClassifier::ReadDlClassifier(const HString& FileName)

void HDlClassifier::ReadDlClassifier(const char* FileName)

void HDlClassifier::ReadDlClassifier(const wchar_t* FileName)   ( Windows only)

static void HOperatorSet.ReadDlClassifier(HTuple fileName, out HTuple DLClassifierHandle)

public HDlClassifier(string fileName)

void HDlClassifier.ReadDlClassifier(string fileName)

def read_dl_classifier(file_name: str) -> HHandle

Description

The operator read_dl_classifierread_dl_classifierReadDlClassifierReadDlClassifierread_dl_classifier reads a neural network written by write_dl_classifierwrite_dl_classifierWriteDlClassifierWriteDlClassifierwrite_dl_classifier. As a result, the handle DLClassifierHandleDLClassifierHandleDLClassifierHandleDLClassifierHandledlclassifier_handle is returned.

HALCON provides pretrained neural networks. These neural networks are good starting points to train a custom classifier for image classification. They have been pretrained on a large image dataset. The provided pretrained neural networks are:

'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":

This neural network is designed to be memory and runtime efficient.

This classifier expects the images to be of the type real. Additionally, the network is designed for certain image properties. The corresponding values can be retrieved with get_dl_classifier_paramget_dl_classifier_paramGetDlClassifierParamGetDlClassifierParamget_dl_classifier_param. Here we list the default values with which the classifier has been trained:

'image_width'"image_width""image_width""image_width""image_width": 224

'image_height'"image_height""image_height""image_height""image_height": 224

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

'image_range_min'"image_range_min""image_range_min""image_range_min""image_range_min": -127.0

'image_range_max'"image_range_max""image_range_max""image_range_max""image_range_max": 128.0

This network does not contain any fully connected layer. The network architecture allows changes concerning the image dimensions, but requires a minimum 'image_width'"image_width""image_width""image_width""image_width" and 'image_height'"image_height""image_height""image_height""image_height" of 15 pixels.

'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":

This neural network has more hidden layers than '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" and is therefore assumed to be better suited for more complex classification tasks. But this comes at the cost of being more time and memory demanding. As a result, e.g., in comparison to the above compact network, the batch size has to be decreased network during the training, see set_dl_classifier_paramset_dl_classifier_paramSetDlClassifierParamSetDlClassifierParamset_dl_classifier_param.

This classifier expects the images to be of the type real. Additionally, the network is designed for certain image properties. The corresponding values can be retrieved with get_dl_classifier_paramget_dl_classifier_paramGetDlClassifierParamGetDlClassifierParamget_dl_classifier_param. Here we list the default values with which the classifier has been trained:

'image_width'"image_width""image_width""image_width""image_width": 224

'image_height'"image_height""image_height""image_height""image_height": 224

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

'image_range_min'"image_range_min""image_range_min""image_range_min""image_range_min": -127.0

'image_range_max'"image_range_max""image_range_max""image_range_max""image_range_max": 128.0

The network architecture allows changes concerning the image dimensions, but requires a minimum 'image_width'"image_width""image_width""image_width""image_width" and 'image_height'"image_height""image_height""image_height""image_height" of 47 pixels. There is no maximum image size, but large image sizes will increase the memory demand and the runtime significantly. Changing the image size will reinitialize the weights of the fully connected layers and therefore makes a retraining necessary.

'pretrained_dl_classifier_resnet18.hdl'"pretrained_dl_classifier_resnet18.hdl""pretrained_dl_classifier_resnet18.hdl""pretrained_dl_classifier_resnet18.hdl""pretrained_dl_classifier_resnet18.hdl":

As the neural network '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", this classifier is suited for more complex tasks. But its structure differs, bringing the advantage of making the training more stable and being internally more robust. Compared to the neural network '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" it is less complex and has faster inference times.

This classifier expects the images to be of the type real. Additionally, the network is designed for certain image properties. The corresponding values can be retrieved with get_dl_classifier_paramget_dl_classifier_paramGetDlClassifierParamGetDlClassifierParamget_dl_classifier_param. Here we list the default values with which the classifier has been trained:

'image_width'"image_width""image_width""image_width""image_width": 224

'image_height'"image_height""image_height""image_height""image_height": 224

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

'image_range_min'"image_range_min""image_range_min""image_range_min""image_range_min": -127.0

'image_range_max'"image_range_max""image_range_max""image_range_max""image_range_max": 128.0

The network architecture allows changes concerning the image dimensions, but a minimum 'image_width'"image_width""image_width""image_width""image_width" and 'image_height'"image_height""image_height""image_height""image_height" of 32 pixels is recommended. There is no maximum image size, but large image sizes will increase the memory demand and the runtime significantly. Despite the fully connected layer a change of the image size does not lead to a reinitialization of the weights.

'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":

As the neural network '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", this classifier is suited for more complex tasks. But its structure differs, bringing the advantage of making the training more stable and being internally more robust.

This classifier expects the images to be of the type real. Additionally, the network is designed for certain image properties. The corresponding values can be retrieved with get_dl_classifier_paramget_dl_classifier_paramGetDlClassifierParamGetDlClassifierParamget_dl_classifier_param. Here we list the default values with which the classifier has been trained:

'image_width'"image_width""image_width""image_width""image_width": 224

'image_height'"image_height""image_height""image_height""image_height": 224

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

'image_range_min'"image_range_min""image_range_min""image_range_min""image_range_min": -127.0

'image_range_max'"image_range_max""image_range_max""image_range_max""image_range_max": 128.0

The network architecture allows changes concerning the image dimensions, but a minimum 'image_width'"image_width""image_width""image_width""image_width" and 'image_height'"image_height""image_height""image_height""image_height" of 32 pixels is recommended. There is no maximum image size, but large image sizes will increase the memory demand and the runtime significantly. Despite the fully connected layer a change of the image size does not lead to a reinitialization of the weights.

The values listed above are the default image dimensions and gray value range for the networks and these are the values with which the classifiers have been trained. The network architectures allow different image sizes which can be set with set_dl_classifier_paramset_dl_classifier_paramSetDlClassifierParamSetDlClassifierParamset_dl_classifier_param. For networks with at least one fully connected layer such a change makes a retraining necessary. Networks without fully connected layers are directly applicable to different image sizes. However, images with a size differing from the size with which the classifier has been trained are likely to show a reduced classification accuracy.

The actually configured dimensions can be queried by get_dl_classifier_paramget_dl_classifier_paramGetDlClassifierParamGetDlClassifierParamget_dl_classifier_param. Every image that is fed into a network must be present according to the required dimensions. To adjust images accordingly, the procedure preprocess_dl_classifier_images is available.

Typically it is easier, faster and better to retrain a pretrained classifier for a given classification problem. A pretrained classifier has already learned good general purpose features. To retrain the network for a custom problem, the new 'classes'"classes""classes""classes""classes" of the classifier have to be set with set_dl_classifier_paramset_dl_classifier_paramSetDlClassifierParamSetDlClassifierParamset_dl_classifier_param.

The neural network is loaded from the file FileNameFileNameFileNamefileNamefile_name. This file is hereby searched in the directory ($HALCONROOT/dl/) as well as in the currently used directory.

Please note that the runtime specific parameter 'gpu'"gpu""gpu""gpu""gpu" of the classifier is not read from file. Instead it is initialized with its default value (see set_dl_classifier_paramset_dl_classifier_paramSetDlClassifierParamSetDlClassifierParamset_dl_classifier_param).

The default HALCON file extension for deep learning classifiers is '.hdl'.

For an explanation of the concept of deep-learning-based classification see the introduction of chapter Deep Learning / Classification. The workflow involving this legacy operator is described in the chapter Legacy / DL Classification.

Execution Information

  • Multithreading type: reentrant (runs in parallel with non-exclusive operators).
  • Multithreading scope: global (may be called from any thread).
  • Processed without parallelization.

This operator returns a handle. Note that the state of an instance of this handle type may be changed by specific operators even though the handle is used as an input parameter by those operators.

Parameters

FileNameFileNameFileNamefileNamefile_name (input_control)  filename.read HTuplestrHTupleHtuple (string) (string) (HString) (char*)

File name.

Default: '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"

List of values: '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_resnet18.hdl'"pretrained_dl_classifier_resnet18.hdl""pretrained_dl_classifier_resnet18.hdl""pretrained_dl_classifier_resnet18.hdl""pretrained_dl_classifier_resnet18.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"

File extension: .hdl

DLClassifierHandleDLClassifierHandleDLClassifierHandleDLClassifierHandledlclassifier_handle (output_control)  dl_classifier HDlClassifier, HTupleHHandleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)

Handle of the deep learning classifier.

Result

If the indicated file is available and the format is correct, the operator read_dl_classifierread_dl_classifierReadDlClassifierReadDlClassifierread_dl_classifier returns the value 2 ( H_MSG_TRUE) . Otherwise an exception will be raised.

Possible Successors

set_dl_classifier_paramset_dl_classifier_paramSetDlClassifierParamSetDlClassifierParamset_dl_classifier_param, get_dl_classifier_paramget_dl_classifier_paramGetDlClassifierParamGetDlClassifierParamget_dl_classifier_param, apply_dl_classifierapply_dl_classifierApplyDlClassifierApplyDlClassifierapply_dl_classifier, train_dl_classifier_batchtrain_dl_classifier_batchTrainDlClassifierBatchTrainDlClassifierBatchtrain_dl_classifier_batch

Alternatives

read_dl_modelread_dl_modelReadDlModelReadDlModelread_dl_model, read_class_mlpread_class_mlpReadClassMlpReadClassMlpread_class_mlp, read_class_svmread_class_svmReadClassSvmReadClassSvmread_class_svm

Module

Deep Learning Enhanced