gen_dl_model_heatmap — Infer the sample and generate a heatmap.
gen_dl_model_heatmap( : : DLModelHandle, DLSample, HeatmapMethod, TargetClasses, GenParam : DLResult)
The operator gen_dl_model_heatmap infers the sample given
by DLSample and generates a heatmap for the class specified by
TargetClasses.
DLSample can be a single dictionary or a tuple of dictionaries for
different samples.
To do so, the operator uses the deep learning model given by
DLModelHandle.
The parameter HeatmapMethod determines, which method is used
to calculate the heatmap.
The operator returns DLResult with a result dictionary for every
given sample.
Note, DLResult will be newly created
and already existing parameters with this name will be overwritten.
A heatmap can be useful to analyze which parts of an image have a strong
influence for the inference into a certain class.
Shape and area of these parts and therewith the heatmaps may vary widely
for differing networks especially if their architectures differ.
There are different methods how a heatmap is calculated.
The following ones can be selected using HeatmapMethod:
Provides region-based heatmap information based on Gradient-weighted Class Activation Mapping (Grad-CAM). For a more detailed description refer to the referenced paper below.
Provides pixel-based heatmap information based on Guided gradient-weighted Class Activation Mapping (Guided Grad-CAM). For a more detailed description refer to the referenced paper below.
The input parameter TargetClasses determines the target class, the
class for which the heatmap is generated.
As value the class ID has to be set.
Alternatively, an empty tuple can be handed over. In this case, the heatmap
is calculated for the class with the highest confidence value, thus the
top inferred class.
Currently, TargetClasses only supports a single value or an
empty tuple.
The following entries can be set in the dictionary GenParam:
target_conv_layer:
Specifies the convolution layer whose activation and gradient are
used for the heatmap.
The convolution layer can be specified using its NAME,
as returned using 'summary' in get_dl_model_param,
e.g., 'conv10'.
As default, the last (deepest) convolution layer of the network with a
non-trivial activation (width and height not equal to 1) is used.
As a general rule, the activation of the deepest convolution layer
is most suitable for calculating the heatmap, therefore it is
recommended to keep the default layer.
use_conv_only:
In case the convolution layer (selected with target_conv_layer)
is fused with a directly following ReLU activation layer, this parameter can
be used to determine, from which of these layers the activation and gradient
will be used for the heatmap. The following values are supported:
'true': convolution layer
'false': ReLU layer
Restriction:
Only applicable if HeatmapMethod is set to
'grad_cam'.
Default:
use_conv_only = 'true'.
scaling:Sets the scaling method for the heatmap. The following values are supported:
'scale_after_relu': Negative values of the heatmap are set to 0 and then all values are scaled within the range [0,1]. As a consequence, areas within the heatmap can attain very high values close to 1 although their contribution to the classification result might be small.
'scale_before_relu': All values of the heatmap are divided by the maximum absolute value and then negative values are set to 0. This leads to values for the heatmap in [0,1]. However, areas of less activation (and hence with a small contribution to the classification result) may not tend to attain values near 1.
'none': The heatmap values are not scaled.
Restriction:
Only applicable if HeatmapMethod is set to
'grad_cam'.
Default:
scaling = 'scale_after_relu'.
Every output dictionary in DLResult contains the inference results
as obtained using apply_dl_model.
Additionally it includes a nested dictionary under the key
heatmap_method, where method is the name of the
specified method as given in HeatmapMethod.
In this nested dictionary the heatmap is saved under the key
heatmap_image_class_classID, in case of 'guided_grad_cam'
the key is guided_grad_cam_image_class_classID,
where classID is the ID of the target class.
System requirements:
This operator performs a backward pass. As a consequence the same system
requirements apply as for the training of deep-learning-based models.
For further details, please refer to the “Installation Guide”,
paragraph “Requirements for Deep Learning and Deep-Learning-Based Methods”.
The heatmap should be used as a tool for visualizing and better
understanding classification results. It is not intended as a
segmentation tool.
Moreover, gen_dl_model_heatmap currently only supports models with
'type'='classification'.
DLModelHandle (input_control) dl_model → (handle)
Handle of a Deep learning model.
DLSample (input_control) dict(-array) → (handle)
Dictionaries with the sample input data.
HeatmapMethod (input_control) string → (string)
Method to be used for the heatmap calculation.
Default: 'grad_cam'
List of values: 'grad_cam', 'guided_grad_cam'
TargetClasses (input_control) tuple → (integer)
ID of the target class.
Default: []
GenParam (input_control) dict → (handle)
Dictionary for generic parameters.
Default: []
DLResult (output_control) dict(-array) → (handle)
Dictionaries with the result data.
R. R. Selvaraju, M. Cogswell, A. Das, R. Vedantam, D. Parikh, D. Batra: "Grad-CAM: Visual Explanations from Deep Networks via Gradient-Based Localization," 2017 IEEE International Conference on Computer Vision (ICCV), Venice, 2017, pp. 618-626. doi: 10.1109/ICCV.2017.74
Deep Learning Enhanced