gen_dl_model_heatmapT_gen_dl_model_heatmapGenDlModelHeatmapGenDlModelHeatmapgen_dl_model_heatmap (Operator)

Name

gen_dl_model_heatmapT_gen_dl_model_heatmapGenDlModelHeatmapGenDlModelHeatmapgen_dl_model_heatmap — Inferieren eines Samples und generieren einer Heatmap.

Signatur

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   (Nur Windows)

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

Beschreibung

Der Operator gen_dl_model_heatmapgen_dl_model_heatmapGenDlModelHeatmapGenDlModelHeatmapGenDlModelHeatmapgen_dl_model_heatmap inferiert das Sample DLSampleDLSampleDLSampleDLSampleDLSampledlsample und generiert eine Heatmap der in TargetClassesTargetClassesTargetClassesTargetClassestargetClassestarget_classes angegebenen Klasse. Dabei kann DLSampleDLSampleDLSampleDLSampleDLSampledlsample ein einzelnes Dictionary oder ein Tupel von Dictionaries verschiedener Samples sein. Dafür wird das in DLModelHandleDLModelHandleDLModelHandleDLModelHandleDLModelHandledlmodel_handle gegebene Modell verwendet. Der Parameter HeatmapMethodHeatmapMethodHeatmapMethodHeatmapMethodheatmapMethodheatmap_method bestimmt, mit welcher Methode die Heatmap berechnet wird. Die Resultate werden in DLResultDLResultDLResultDLResultDLResultdlresult zurückgegeben mit einem Ergebnis-Dictionary für jedes übergebene Sample. Es gilt zu bemerken, dass DLResultDLResultDLResultDLResultDLResultdlresult jeweils neu angelegt wird und somit bereits existierende Parameter dieses Namens überschrieben werden.

Eine Heatmap kann nützlich sein bei der Analyse, welche Teile eines Bildes bei seiner Inferenz in eine bestimmte Klasse einen starken Einfluss haben. Form und Größe dieser Bereiche und somit die Heatmaps können sich für verschiedene Netzwerke stark von einander unterscheiden, insbesondere wenn sich die Architekturen unterscheiden. Es gibt verschiedene Methoden um eine Heatmap zu berechnen. Die folgenden Methoden können über den Parameter HeatmapMethodHeatmapMethodHeatmapMethodHeatmapMethodheatmapMethodheatmap_method ausgewählt werden:

'grad_cam'"grad_cam""grad_cam""grad_cam""grad_cam""grad_cam":

Liefert regionenbasierte Heatmap-Informationen basierend auf "Gradient-weighted Class Activation Mapping (Grad-CAM)". Für eine detailliertere Beschreibung wird auf auf das unten referenzierte Paper verwiesen.

'guided_grad_cam'"guided_grad_cam""guided_grad_cam""guided_grad_cam""guided_grad_cam""guided_grad_cam":

Liefert pixelgenaue Heatmap-Informationen basierend auf "Guided Gradient-weighted Class Activation Mapping (Guided Grad-CAM)". Für eine detailliertere Beschreibung wird auf auf das unten referenzierte Paper verwiesen.

Der Eingabeparameter TargetClassesTargetClassesTargetClassesTargetClassestargetClassestarget_classes bestimmt die Zielklasse, die Klasse, für welche die Heatmap generiert wird. Als Wert wird die Klassen-ID gesetzt. Alternativ kann auch ein leeres Tupel angegeben werden. In diesem Fall wird die Heatmap für die Klasse mit höchstem Konfidenzwert generiert, also die Klasse der besten Vorhersage. Derzeit kann für TargetClassesTargetClassesTargetClassesTargetClassestargetClassestarget_classes entweder ein einziger Wert oder ein leeres Tupel übergeben werden.

Folgende Werte können über das Dictionary GenParamGenParamGenParamGenParamgenParamgen_param gesetzt werden:

target_conv_layer:

Legt fest, von welchem Faltungs-Layer die Aktivierung und der Gradient zur Erstellung der Heatmap verwendet werden sollen. Der Faltungs-Layer kann über seinen Namen NAME bestimmt werden, wie er von 'summary'"summary""summary""summary""summary""summary" in get_dl_model_paramget_dl_model_paramGetDlModelParamGetDlModelParamGetDlModelParamget_dl_model_param zurückgegeben wird, z.B. 'conv10'"conv10""conv10""conv10""conv10""conv10". Als Standardwert wird der letzte (tiefste) Faltungs-Layer mit einer nicht-trivialen Aktivierung (Weite und Höhe ungleich 1) verwendet. Es wird empfohlen den Standardwert zu verwenden, da sich die Aktivierung des tiefsten Faltungs-Layer in der Regel am besten zum Erzeugen der Heatmap eignet.

use_conv_only:

Falls der ausgewählte Faltungs-Layer (mittels target_conv_layer) mit einem direkt folgenden ReLU-Layer fusioniert ist, kann mit diesem Parameter angegeben werden, von welchem dieser beiden Layer die Aktivierung und die Gradienten für die Heatmap genutzt werden sollen. Die folgenden Werte werden unterstützt:

'true'"true""true""true""true""true": Faltungs-Layer

'false'"false""false""false""false""false": ReLU-Layer

Restriktion: Nur anwendbar, wenn HeatmapMethodHeatmapMethodHeatmapMethodHeatmapMethodheatmapMethodheatmap_method auf 'grad_cam'"grad_cam""grad_cam""grad_cam""grad_cam""grad_cam" gesetzt ist.

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

scaling:

Bestimmt die Art der Skalierung der Heatmap. Die folgenden Werte werden unterstützt:

'scale_after_relu'"scale_after_relu""scale_after_relu""scale_after_relu""scale_after_relu""scale_after_relu": Alle negativen Werte der Heatmap werden auf 0 gesetzt. Anschließend werden alle Werte auf den Wertebereich [0,1] skaliert. Dadurch können auch Bereiche mit schwacher Aktivierung sehr hohe Werte nahe 1 erhalten.

'scale_before_relu'"scale_before_relu""scale_before_relu""scale_before_relu""scale_before_relu""scale_before_relu": All Werte der Heatmap werden durch den maximalen Wert der Absolutbeträge dividiert und anschließend alle negativen Werte auf 0 gesetzt. Dadurch werden die Werte in den Bereich [0,1] skaliert. Im Vergleich zu 'scale_after_relu'"scale_after_relu""scale_after_relu""scale_after_relu""scale_after_relu""scale_after_relu" müssen schwach aktivierte Bereiche jedoch nicht hohe Werte nahe der 1 bekommen.

'none'"none""none""none""none""none": Die Werte der Heatmap werden nicht skaliert.

Restriktion: Nur anwendbar, wenn HeatmapMethodHeatmapMethodHeatmapMethodHeatmapMethodheatmapMethodheatmap_method auf 'grad_cam'"grad_cam""grad_cam""grad_cam""grad_cam""grad_cam" gesetzt ist.

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

Jedes Ergebnis-Dictionary in DLResultDLResultDLResultDLResultDLResultdlresult beinhaltet die Inferenz-Resultate wie sie mit apply_dl_modelapply_dl_modelApplyDlModelApplyDlModelApplyDlModelapply_dl_model erhalten werden. Zusätzlich beinhaltet es ein verschachteltes Dictionary unter dem Schlüssel heatmap_method, wobei method der Name der Methode zur Berechnung der Heatmap ist, wie in HeatmapMethodHeatmapMethodHeatmapMethodHeatmapMethodheatmapMethodheatmap_method gegeben. In diesem verschachtelten Dictionary ist die Heatmap unter dem Schlüssel heatmap_image_class_classID abgespeichert, im Falle von 'guided_grad_cam'"guided_grad_cam""guided_grad_cam""guided_grad_cam""guided_grad_cam""guided_grad_cam" ist dieser Schlüssel guided_grad_cam_image_class_classID, wobei classID die ID der Zielklasse ist.

Achtung

Systemvoraussetzungen: Dieser Operator führt einen „backward pass“ durch, weshalb die gleichen Systemvoraussetzungen wie für das Training von Deep Learning-Modellen gelten. Für weitere Details wird auf den „Installation Guide“, Abschnitt „Requirements for Deep Learning and Deep-Learning-Based Methods“, verwiesen.

Die Heatmap dient als Hilfe um Klassifikationsergebnisse besser zu verstehen und ist nicht zur Segmentierung geeignet. Außerdem sei bemerkt, dass gen_dl_model_heatmapgen_dl_model_heatmapGenDlModelHeatmapGenDlModelHeatmapGenDlModelHeatmapgen_dl_model_heatmap derzeit nur Modelle mit 'type'"type""type""type""type""type"='classification'"classification""classification""classification""classification""classification" unterstützt.

Ausführungsinformationen

Parameter

DLModelHandleDLModelHandleDLModelHandleDLModelHandleDLModelHandledlmodel_handle (input_control)  dl_model HDlModel, HTupleHHandleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)

Handle des Deep Learning-basierten Modells.

DLSampleDLSampleDLSampleDLSampleDLSampledlsample (input_control)  dict(-array) HDict, HTupleMaybeSequence[HHandle]HTupleHtuple (handle) (IntPtr) (HHandle) (handle)

Dictionaries mit den Eingabedaten der Samples.

HeatmapMethodHeatmapMethodHeatmapMethodHeatmapMethodheatmapMethodheatmap_method (input_control)  string HTuplestrHTupleHtuple (string) (string) (HString) (char*)

Methode nach der die Heatmap berechnet wird.

Defaultwert: 'grad_cam' "grad_cam" "grad_cam" "grad_cam" "grad_cam" "grad_cam"

Werteliste: '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 (input_control)  tuple HTupleintHTupleHtuple (integer) (int / long) (Hlong) (Hlong)

IDs der Zielklasse.

Defaultwert: []

GenParamGenParamGenParamGenParamgenParamgen_param (input_control)  dict HDict, HTupleHHandleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)

Dictionary für generische Parameter.

Defaultwert: []

DLResultDLResultDLResultDLResultDLResultdlresult (output_control)  dict(-array) HDict, HTupleSequence[HHandle]HTupleHtuple (handle) (IntPtr) (HHandle) (handle)

Dictionaries mit den Resultaten.

Vorgänger

apply_dl_modelapply_dl_modelApplyDlModelApplyDlModelApplyDlModelapply_dl_model

Literatur

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

Modul

Deep Learning Inference