gen_dl_model_heatmapT_gen_dl_model_heatmapGenDlModelHeatmapGenDlModelHeatmapgen_dl_model_heatmap (算子)

名称

gen_dl_model_heatmapT_gen_dl_model_heatmapGenDlModelHeatmapGenDlModelHeatmapgen_dl_model_heatmap — 推理样本并生成热图。

签名

gen_dl_model_heatmap( : : DLModelHandle, DLSample, HeatmapMethod, TargetClasses, GenParam : DLResult)

Herror T_gen_dl_model_heatmap(const Htuple DLModelHandle, const Htuple DLSample, const Htuple HeatmapMethod, const Htuple TargetClasses, const Htuple GenParam, Htuple* DLResult)

void GenDlModelHeatmap(const HTuple& DLModelHandle, const HTuple& DLSample, const HTuple& HeatmapMethod, const HTuple& TargetClasses, const HTuple& GenParam, HTuple* DLResult)

HDictArray HDlModel::GenDlModelHeatmap(const HDictArray& DLSample, const HString& HeatmapMethod, const HTuple& TargetClasses, const HDict& GenParam) const

HDict HDlModel::GenDlModelHeatmap(const HDict& DLSample, const HString& HeatmapMethod, const HTuple& TargetClasses, const HDict& GenParam) const

HDict HDlModel::GenDlModelHeatmap(const HDict& DLSample, const char* HeatmapMethod, const HTuple& TargetClasses, const HDict& GenParam) const

HDict HDlModel::GenDlModelHeatmap(const HDict& DLSample, const wchar_t* HeatmapMethod, const HTuple& TargetClasses, const HDict& GenParam) const   ( Windows only)

static void HOperatorSet.GenDlModelHeatmap(HTuple DLModelHandle, HTuple DLSample, HTuple heatmapMethod, HTuple targetClasses, HTuple genParam, out HTuple DLResult)

HDict[] HDlModel.GenDlModelHeatmap(HDict[] DLSample, string heatmapMethod, HTuple targetClasses, HDict genParam)

HDict HDlModel.GenDlModelHeatmap(HDict DLSample, string heatmapMethod, HTuple targetClasses, HDict genParam)

def gen_dl_model_heatmap(dlmodel_handle: HHandle, dlsample: MaybeSequence[HHandle], heatmap_method: str, target_classes: int, gen_param: HHandle) -> Sequence[HHandle]

def gen_dl_model_heatmap_s(dlmodel_handle: HHandle, dlsample: MaybeSequence[HHandle], heatmap_method: str, target_classes: int, gen_param: HHandle) -> HHandle

描述

算子 gen_dl_model_heatmapgen_dl_model_heatmapGenDlModelHeatmapGenDlModelHeatmapGenDlModelHeatmapgen_dl_model_heatmap infers the sample given by DLSampleDLSampleDLSampleDLSampleDLSampledlsample and generates a heatmap for the class specified by TargetClassesTargetClassesTargetClassesTargetClassestargetClassestarget_classes. DLSampleDLSampleDLSampleDLSampleDLSampledlsample 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 DLModelHandleDLModelHandleDLModelHandleDLModelHandleDLModelHandledlmodel_handle. The parameter HeatmapMethodHeatmapMethodHeatmapMethodHeatmapMethodheatmapMethodheatmap_method determines, which method is used to calculate the heatmap. The operator returns DLResultDLResultDLResultDLResultDLResultdlresult with a result dictionary for every given sample. Note, DLResultDLResultDLResultDLResultDLResultdlresult 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 HeatmapMethodHeatmapMethodHeatmapMethodHeatmapMethodheatmapMethodheatmap_method:

'grad_cam'"grad_cam""grad_cam""grad_cam""grad_cam""grad_cam"

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.

'guided_grad_cam'"guided_grad_cam""guided_grad_cam""guided_grad_cam""guided_grad_cam""guided_grad_cam"

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 TargetClassesTargetClassesTargetClassesTargetClassestargetClassestarget_classes 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, TargetClassesTargetClassesTargetClassesTargetClassestargetClassestarget_classes only supports a single value or an empty tuple.

The following entries can be set in the dictionary GenParamGenParamGenParamGenParamgenParamgen_param:

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'"summary""summary""summary""summary""summary" in get_dl_model_paramget_dl_model_paramGetDlModelParamGetDlModelParamGetDlModelParamget_dl_model_param, e.g., 'conv10'"conv10""conv10""conv10""conv10""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'"true""true""true""true""true":convolution layer

'false'"false""false""false""false""false":ReLU layer

Restriction: Only applicable if HeatmapMethodHeatmapMethodHeatmapMethodHeatmapMethodheatmapMethodheatmap_method is set to 'grad_cam'"grad_cam""grad_cam""grad_cam""grad_cam""grad_cam".

Default: use_conv_only = 'true'"true""true""true""true""true".

scaling

Sets the scaling method for the heatmap. The following values are supported:

'scale_after_relu'"scale_after_relu""scale_after_relu""scale_after_relu""scale_after_relu""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'"scale_before_relu""scale_before_relu""scale_before_relu""scale_before_relu""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'"none""none""none""none""none":The heatmap values are not scaled.

Restriction: Only applicable if HeatmapMethodHeatmapMethodHeatmapMethodHeatmapMethodheatmapMethodheatmap_method is set to 'grad_cam'"grad_cam""grad_cam""grad_cam""grad_cam""grad_cam".

Default: scaling = 'scale_after_relu'"scale_after_relu""scale_after_relu""scale_after_relu""scale_after_relu""scale_after_relu".

Every output dictionary in DLResultDLResultDLResultDLResultDLResultdlresult contains the inference results as obtained using apply_dl_modelapply_dl_modelApplyDlModelApplyDlModelApplyDlModelapply_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 HeatmapMethodHeatmapMethodHeatmapMethodHeatmapMethodheatmapMethodheatmap_method. In this nested dictionary the heatmap is saved under the key heatmap_image_class_classID, in case of 'guided_grad_cam'"guided_grad_cam""guided_grad_cam""guided_grad_cam""guided_grad_cam""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.更多详细信息,请参阅 “安装指南” 中的“深度学习及基于深度学习方法的要求”一章。

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_heatmapgen_dl_model_heatmapGenDlModelHeatmapGenDlModelHeatmapGenDlModelHeatmapgen_dl_model_heatmap currently only supports models with 'type'"type""type""type""type""type"='classification'"classification""classification""classification""classification""classification".

执行信息

参数

DLModelHandleDLModelHandleDLModelHandleDLModelHandleDLModelHandledlmodel_handle (输入控制)  dl_model HDlModel, HTupleHHandleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)

Handle of a Deep learning model.

DLSampleDLSampleDLSampleDLSampleDLSampledlsample (输入控制)  dict(-array) HDict, HTupleMaybeSequence[HHandle]HTupleHtuple (handle) (IntPtr) (HHandle) (handle)

Dictionaries with the sample input data.

HeatmapMethodHeatmapMethodHeatmapMethodHeatmapMethodheatmapMethodheatmap_method (输入控制)  string HTuplestrHTupleHtuple (string) (string) (HString) (char*)

Method to be used for the heatmap calculation.

默认值: 'grad_cam' "grad_cam" "grad_cam" "grad_cam" "grad_cam" "grad_cam"

值列表: 'grad_cam'"grad_cam""grad_cam""grad_cam""grad_cam""grad_cam", 'guided_grad_cam'"guided_grad_cam""guided_grad_cam""guided_grad_cam""guided_grad_cam""guided_grad_cam"

TargetClassesTargetClassesTargetClassesTargetClassestargetClassestarget_classes (输入控制)  tuple HTupleintHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

ID of the target class.

默认值: []

GenParamGenParamGenParamGenParamgenParamgen_param (输入控制)  dict HDict, HTupleHHandleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)

Dictionary for generic parameters.

默认值: []

DLResultDLResultDLResultDLResultDLResultdlresult (输出控制)  dict(-array) HDict, HTupleSequence[HHandle]HTupleHtuple (handle) (IntPtr) (HHandle) (handle)

Dictionaries with the result data.

可能的前趋

apply_dl_modelapply_dl_modelApplyDlModelApplyDlModelApplyDlModelapply_dl_model

参考文献

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

模块

深度学习推理