- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
We use OpenVINO C++ Package for our inference tasks. Our users require a heatmap visualization to gain trust in the classifications of our CNN. Can a heatmap generation technique like "layer-wise relevance propagation" or "Grad-CAM" be implemented using OpenVINO?
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Alexander,
You can use class activation maps to visualize the "decision-making." In order to calculate Class Activation Maps in OpenVINO, you need to access the output feature maps of the last layer and the corresponding weights. This can be done through the CNNNetwork: addOutput() function call when initializing the network. After running the inference, you calculate the weighted sum of the weights with the feature maps and use this to generate the visualization.
Regards,
Mauricio R.
Link Copied
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Thanks for reaching out.
The following project shows how to implement a heatmap visualization for a people counter using OpenVINO™ toolkit: https://github.com/intel-iot-devkit/store-aisle-monitor-cpp
Regards,
Mauricio R.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Mauricio! Thank you for the quick response, but the people counter project uses a accumulation buffer to generate a motion heatmap. The generated heatmap has nothing to do with the neural network and its decisions.
What my users need, is a heatmap showing the pixelwise relevance/ importance of the input image for the result of the classification, as described at www.heatmapping.org
In the best case, if the network is working as expected, the heatmap shows hotspots in the input image where faults are located. That way the user can gain trust in the networks decisions.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Alexander,
We are consulting this with engineering, we will get back to you as soon as we get an answer.
Regards,
Mauricio R.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Alexander,
You can use class activation maps to visualize the "decision-making." In order to calculate Class Activation Maps in OpenVINO, you need to access the output feature maps of the last layer and the corresponding weights. This can be done through the CNNNetwork: addOutput() function call when initializing the network. After running the inference, you calculate the weighted sum of the weights with the feature maps and use this to generate the visualization.
Regards,
Mauricio R.
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report Inappropriate Content
Hi Mauricio!
Just wanted to let you know I was able to implement class activation mapping based on OpenVINO. Selecting the correct weights and activations from the CNNNetwork is not very convenient, but I managed it in the end. Thanks for your help.
![](/skins/images/C4F7392A5C68ACA60290C9576F107044/responsive_peak/images/icon_anonymous_message.png)
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page