create_dl_model_detection
— Create a deep learning network for object detection.
create_dl_model_detection( : : Backbone, NumClasses, DLModelDetectionParam : DLModelHandle)
With the operator create_dl_model_detection
a deep learning network
for object detection is created.
See the chapter Deep Learning / Object Detection for further
information on object detection based on deep-learning.
The handle of this network is returned in DLModelHandle
.
You can specify your model and its architecture over the parameters listed
below.
To successfully create a detection model, you need to specify its backbone
and the number of classes the model shall be able to distinguish.
The first information is handed over through the parameter
Backbone
which is explained below in the section
“Possible Backbones”.
The second information is given through the parameter NumClasses
.
Note, this parameter fixes the number of classes the network will
distinguish and therewith also the number of entries in
'class_ids' .
The values of all other applicable parameters can be specified using
the dictionary DLModelDetectionParam
.
A list of parameters that can be set is given below in the section
“Settable Parameters”.
In case a parameter is not specified, the default value is taken to create
the model.
Note, parameters influencing the network architecture will not be changeable
anymore once the network has been created.
All the other parameters can still be set or changed using the operator
set_dl_model_param
.
An overview, how parameters can be set is given in
get_dl_model_param
, where also a description of the specific
parameters is provided.
After creating the object detection model, the type
will
automatically be set to 'detection' .
The parameter Backbone
determines the backbone your
network will use. See the chapter Deep Learning / Object Detection
for more information to the backbone. In short, the backbone consists of a
pretrained classifier, from which only the layers generating the
feature maps are kept.
This implies that you read in a classifier as feature extractor for
the subsequent detection network.
Hence, there are no fully connected layers anymore in the network.
create_dl_model_detection
attaches a feature pyramid on the
backbone. This feature pyramid has a minimal number of levels
depending on the backbone, given in the list below.
The network architectures allow changes concerning the image
dimensions, but as for every level the image lengths
are halved, the dimensions 'image_width' and
'image_height'
need to be an integer multiple of
.
Here, is the highest level up to which the feature
pyramid is built.
For every backbone, has a minimal value (see the list
below), which can be increased through the parameter
max_level
.
HALCON provides the following pretrained classifiers you can read in as backbone:
This neural network is designed to be memory and runtime efficient.
This backbone expects the images to be of the type 'real' .
Additionally, the backbone is designed for certain image properties.
The corresponding values can be retrieved with
get_dl_model_param
. Here we list the default values with
which the classifier has been trained:
'image_width': 224
'image_height': 224
'image_num_channels': 3
'image_range_min': -127
'image_range_max': 128
The feature pyramid built on this backbone goes at least up to level 4.
This neural network has more hidden layers than 'pretrained_dl_classifier_compact.hdl' and is therefore assumed to be better suited for more complex tasks. But this comes at the cost of being more time and memory demanding.
This network expects the images to be of the type 'real' .
Additionally, the backbone is designed for certain image properties.
The corresponding values can be retrieved with
get_dl_model_param
. Here we list the default values with
which the classifier has been trained:
'image_width': 224
'image_height': 224
'image_num_channels': 3
'image_range_min': -127
'image_range_max': 128
The feature pyramid built on this backbone goes at least up to level 5.
As the network 'pretrained_dl_classifier_enhanced.hdl' , this network 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 network expects the images to be of the type 'real' .
Additionally, the backbone is designed for certain image properties.
The corresponding values can be retrieved with
get_dl_model_param
. Here we list the default values with
which the classifier has been trained:
'image_width': 224
'image_height': 224
'image_num_channels': 3
'image_range_min': -127
'image_range_max': 128
The feature pyramid built on this backbone goes at least up to level 5.
Parameters you can set for your model when creating it using
create_dl_model_detection
(see get_dl_model_param
for
explanations):
'aspect_ratios'
'capacity'
'class_ids'
'class_weights'
'image_height' , 'image_width'
'image_num_channels'
'max_level' , 'min_level'
'max_num_detections'
'max_overlap'
'min_confidence'
'num_subscales'
To successfully set 'gpu' parameters, cuDNN and cuBLAS are
required, i.e., to set the parameter GenParamName
'runtime' to 'gpu' .
For further details, please refer to the “Installation Guide”
,
paragraph “Requirements for Deep Learning”.
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.
Backbone
(input_control) filename.read →
(string)
Deep learning classifier, used as backbone network.
Default value: 'pretrained_dl_classifier_compact.hdl'
List of values: 'pretrained_dl_classifier_compact.hdl' , 'pretrained_dl_classifier_enhanced.hdl' , 'pretrained_dl_classifier_resnet50.hdl'
File extension: .hdl
NumClasses
(input_control) integer →
(integer)
Number of classes.
Default value: 3
DLModelDetectionParam
(input_control) dict →
(handle)
Parameters for the object detection model.
Default value: []
DLModelHandle
(output_control) dl_model →
(handle)
Deep learning model for object detection.
If the parameters are valid, the operator create_dl_model_detection
returns the value 2 (H_MSG_TRUE). If necessary, an exception is raised.
set_dl_model_param
,
get_dl_model_param
,
apply_dl_model
,
train_dl_model_batch
Deep Learning Training