写在前面
类激活热力图:用于检查图像哪一部分对模型的最终输出有更大的贡献。具体某个类别对应到图片的那个区域响应最大,也就是对该类别的识别贡献最大
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 =<

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

769

被折叠的 条评论
为什么被折叠?



