类别激活热力图grad-cam(pytorch)实战跑图

本文介绍了如何利用pytorch-grad-cam库对ResNet50模型进行类激活热力图可视化,以观察模型在图像识别中关注的区域。通过调整代码,可以应用于其他类别和模型。遇到的错误包括路径错误、属性错误和初始化错误,已分别通过修正路径、修改target_layer参数和更新方法名解决。文章提供了错误示例和解决方案,并强调了hook机制在Grad-CAM中的作用。

写在前面

类激活热力图:用于检查图像哪一部分对模型的最终输出有更大的贡献。具体某个类别对应到图片的那个区域响应最大,也就是对该类别的识别贡献最大

pytorch-grad-cam库代码GitHub代码
如果只想跑个图的话不用下!

作用:一是清晰直观的看看到底影响检测结果的特征;而是cv论文里出图真的很好看
本篇只是跑了代码给的猫狗图,下一篇要写如何可视化其他类别实战

先上跑完结果

在这里插入图片描述
使用的是resnet50,可以看出其关注度不仅仅只有狗,还有后面的背景,这会对以后的检测结果造成影响

实战

1.安装pytorch-grad-cam

在pycharm终端中输入

pip install grad-cam

我之前安装过了,页面如下
在这里插入图片描述

2.复制全部代码

'''
1)导入相关的包并加载模型
'''

from pytorch_grad_cam import GradCAM, ScoreCAM, GradCAMPlusPlus, AblationCAM, XGradCAM, EigenCAM
from pytorch_grad_cam.utils.image import show_cam_on_image, \
                                         deprocess_image, \
                                         preprocess_image
from torchvision.models import resnet50
import cv2
import numpy as np
import os

os.environ["KMP_DUPLICATE_LIB_OK"]="TRUE"

# 1.加载模型
model = resnet50(pretrained=True) #预先训练
# 2.选择目标层
# target_layer = model.layer4[-1]
target_layer = [model.layer4]
'''
Resnet18 and 50: model.layer4[-1]
VGG and densenet161: model.features[-1]
mnasnet1_0: model.layers[-1]
ViT: model.blocks[-1].norm1
'''
#------------------------------
'''
2)构建输入图像的Tensor形式,使其能传送到model里面去计算
'''



image_path =<
评论 60
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值