基于论文:Grad-CAM: Visual Explanations from Deep Networks via Gradient-based Localization

论文下载地址:https://arxiv.org/abs/1610.02391

Pytorch代码下载地址:https://github.com/jacobgil/pytorch-grad-cam

目录

Pytorch-Grad-CAM原理介绍

使用Grad-CAM绘制热力图


Pytorch-Grad-CAM原理介绍

以图像分类为例:

Activations:正向传播

Gradients:反向传播

A:从原图像中提取的特征层越往后抽象程度越高,语义信息越丰富,故在图像分类任务中我们取特征层的最后一层,即Features[-1]

在经过两个全连接层后得到损失,经过backpropagation后得到的彩色表示层表示的是A中相应层对图像的重要程度,对矩阵均值后加权求和然后经过ReLU激活函数激活,显色后得到热力图。

更多理论介绍可参见这篇blog,讲的很详细:https://blog.csdn.net/qq_37541097/article/details/123089851

使用Grad-CAM绘制热力图

从本文开头论文下载地址下载代码,我们来看main文件:

import os
import numpy as np
import torch
from PIL import Image
import matplotlib.pyplot as plt
from torchvision import models
from torchvision import transforms
from utils import GradCAM, show_cam_on_image, center_crop_imgdef main():model = models.mobilenet_v3_large(pretrained=True)target_layers = [model.features[-1]]   #层结构列表# model = models.vgg16(pretrained=True)# target_layers = [model.features]# model = models.resnet34(pretrained=True)# target_layers = [model.layer4]# model = models.regnet_y_800mf(pretrained=True)# target_layers = [model.trunk_output]# model = models.efficientnet_b0(pretrained=True)# target_layers = [model.features]data_transform = transforms.Compose([transforms.ToTensor(),transforms.Normalize([0.485, 0.456, 0.406], [0.229, 0.224, 0.225])])# load imageimg_path = "both.png"assert os.path.exists(img_path), "file: '{}' dose not exist.".format(img_path)img = Image.open(img_path).convert('RGB')img = np.array(img, dtype=np.uint8)# img = center_crop_img(img, 224)# [C, H, W]img_tensor = data_transform(img)# expand batch dimension# [C, H, W] -> [N, C, H, W]input_tensor = torch.unsqueeze(img_tensor, dim=0)   #增加Batch维度# 初始化CAM对象,包括模型,目标层以及是否使用cuda等cam = GradCAM(model=model, target_layers=target_layers, use_cuda=True)# target_category = 281  # tabby, tabby cat# target_category = 673  # mouse, computer mouse# target_category = 657  # missiletarget_category = 254  # pug, pug-doggrayscale_cam = cam(input_tensor=input_tensor, target_category=target_category)grayscale_cam = grayscale_cam[0, :]visualization = show_cam_on_image(img.astype(dtype=np.float32) / 255.,grayscale_cam,use_rgb=True)plt.imshow(visualization)plt.show()if __name__ == '__main__':main()

运行结果如下:

值得一提的是:在作者提供的 imagenet1k_classes.txt文件中提供了1000种不同识别特征,在代码的

target_category=

等号后面改成相应[行号-1]即可。

将target_category改成tabby cat对应的行号-1=281,输出结果为:

我们来识别鼠标试试(category=678):

识别导弹热力图:

初识Grad-CAM相关推荐

  1. 图像分类:13个Kaggle项目的经验总结

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 方向:图像分类,编辑:数据派THU 本文约2800字,建议阅读9分钟 本 ...

  2. 使用关键点进行小目标检测

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自|OpenCV学堂 [导语]本文搞了一个小的库,主要是用于 ...

  3. 自动驾驶中可解释AI综述和未来研究方向

    作者丨黄浴@知乎 来源丨https://zhuanlan.zhihu.com/p/453146210 编辑丨3D视觉工坊 arXiv上2021年12月21日上传的自动驾驶可解释AI的综述:" ...

  4. 图像分类:来自13个Kaggle项目的经验总结

    来源:机器学习实验室 本文约2800字,建议阅读9分钟 本文作者与你分享图像分类项目经验总结. 任何领域的成功都可以归结为一套小规则和基本原则,当它们结合在一起时会产生伟大的结果. 机器学习和图像分类 ...

  5. 涨点技巧!汇集13个Kaggle图像分类项目的性能提升指南

    点击上方,选择星标或置顶,不定期资源大放送! 阅读大概需要15分钟 Follow小博主,每天更新前沿干货 本文转载自:AI公园 作者:Prince Canuma  编译:ronghuaiyang 导读 ...

  6. 【综述专栏】自动驾驶中可解释AI的综述和未来研究方向

    来源:知乎-黄浴地址:https://zhuanlan.zhihu.com/p/453146210 在科学研究中,从方法论上来讲,都应"先见森林,再见树木".当前,人工智能学术研究 ...

  7. python大型项目经验_图像分类:13个Kaggle项目的经验总结

    来源:数据派THU 任何领域的成功都可以归结为一套小规则和基本原则,当它们结合在一起时会产生伟大的结果. 机器学习和图像分类也不例外,工程师们可以通过参加像Kaggle这样的竞赛来展示最佳实践. 在这 ...

  8. cv图像翻转_涨点技巧!汇集13个Kaggle图像分类项目的性能提升指南

    从数据预处理.增强.模型优化.调参再到损失函数... 本文转载自:AI公园 作者:Prince Canuma 编译:ronghuaiyang 注:文末附CV学习交流群 导读 覆盖了模型相关的方方面面, ...

  9. 【今日CV 计算机视觉论文速览 第111期】Fri, 3 May 2019

    今日CS.CV 计算机视觉论文速览 Fri, 3 May 2019 Totally 29 papers ?上期速览✈更多精彩请移步主页 Interesting: ?****Single Image P ...

  10. 中livechart显示大数据_Kaggle 大数据竞赛中的Tricks总结

    作者 | Prince Canuma 编译 | AI有道, ronghuaiyang 任何领域的成功都可以归结为一套小规则和基本原则,当它们结合在一起时会产生伟大的结果. 机器学习和图像分类也不例外, ...

最新文章

  1. elasticsearch的索引自动清理及自定义清理
  2. systypes的详解
  3. 线性表的顺序存储——顺序存储结构的抽象实现
  4. Consul入门03 - 注册服务
  5. Kubernetes入门——深入浅出讲Docker
  6. 电气simulink常用模块_ADAS/AD控制器模块开发:产品构成要素及产品需求
  7. 英语四级真题作文 计算机,2019年6月大学英语四级作文范文50例:电脑
  8. 2019中国民营企业500强发布:华为、海航、苏宁位列前三
  9. php扩展zval,PHP扩展开发(7):zval结构
  10. 重装驱动:Failed to initialize NVML: Driver/library version mismatch
  11. Editplus破解
  12. Facade模式简述
  13. AutoCAD Civil 3D-装配(标准横断面)
  14. bilibili弹幕游戏
  15. 什么是ActiveRecord
  16. 张开翅膀,放飞梦想,让光彩无限绽放!
  17. 论文解读 X-CLIP : Expanding Language-Image Pretrained Models for General Video Recognition
  18. coursera使用前准备
  19. C++程序控制本身重新启动功能
  20. 计算机专业进中国移动难吗,【计算机】中国移动面试技巧和注意事项

热门文章

  1. 【狄克特斯拉算法验证】
  2. BootStrap 模态框实现刷新网页并关闭
  3. 嘿,妈妈,我是设计师
  4. python数据采集培训
  5. ZOOM——C++软件开发岗(实习)——视频面试一面
  6. 同时支持手机号、用户名、邮箱登录
  7. 基于Tensorflow 2.x手动复现BERT
  8. upupoo服务器维护中是什么情况,upupoo用不了怎么办-解决upupoo打不开的方法 - 河东软件园...
  9. python行业中性_Python抓取分析淘宝连衣裙数据,128元真的是低价人群分界线吗?...
  10. WordPress中文汉字用户名不能注册怎么办?