特征可视化技术(CAM)

article/2025/10/6 11:56:39

https://zhuanlan.zhihu.com/p/269702192
在这里插入图片描述

CAM技术可以帮助我们理解CNN在图像中寻找目标对象的过程,并且可以用于可视化CNN的中间层特征,以及对图像分类结果的解释和可视化。CAM技术的实现比较简单,可以使用常用的深度学习框架如PyTorch和TensorFlow来实现。

CAM(Class Activation Map)是一种特征可视化技术,它可以帮助我们理解神经网络对图像分类的决策过程。CAM技术可以生成一个热力图,用来可视化输入图像中哪些区域对于神经网络的分类决策起到了重要作用。CAM技术主要适用于基于卷积神经网络的图像分类任务。

在CNN中,每个卷积层都会生成一组特征图,其中每个特征图对应一个卷积核。CAM技术利用全局平均池化(Global Average Pooling,GAP)操作来捕捉每个特征图中与目标类别相关的特征。然后,将这些特征映射到输入图像的空间位置上,从而生成对应于每个类别的类激活图(Class Activation Map)。

具体地说,CAM技术的步骤如下:

  1. 将图像输入到CNN中,并获得最后一个卷积层的输出特征图。

  2. 对于每个目标类别,计算其在卷积层输出特征图中的权重,即使用全局平均池化操作对该类别对应的特征图进行加权平均。

  3. 将这些权重与卷积层输出特征图相乘,并对结果进行求和,得到对应于该类别的类激活图(Class Activation Map)。

  4. 对类激活图进行归一化处理,从而得到可视化结果。

以下是一个简单的示例代码,它使用PyTorch和CAM技术来可视化图像中哪些区域对于神经网络的分类决策起到了重要作用:

import torch
import torch.nn as nn
import torchvision.transforms as transforms
import matplotlib.pyplot as plt
import numpy as np# 加载预训练的ResNet50模型
model = torch.hub.load('pytorch/vision', 'resnet50', pretrained=True)# 定义CAM模型
class CAM(nn.Module):def __init__(self, feature_extractor, classifier):super(CAM, self).__init__()self.feature_extractor = feature_extractorself.classifier = classifierself.gradient = Nonedef gradients_hook(self, grad):self.gradient = graddef forward(self, x):x = self.feature_extractor(x)h = x.register_hook(self.gradients_hook)x = self.classifier(x)h.remove()return x# 定义CAM可视化函数
def visualize_CAM(image, model, target_class):# 转换图像为张量transform = transforms.Compose([transforms.Resize((224, 224)),transforms.ToTensor(),transforms.Normalize(mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225])])image = transform(image).unsqueeze(0)# 定义CAM模型feature_extractor = nn.Sequential(*list(model.children())[:-2])classifier = model.fccam_model = CAM(feature_extractor, classifier)# 前向传播output = cam_model(image)target = torch.Tensor([target_class])loss = nn.functional.binary_cross_entropy_with_logits(output, target)# 反向传播cam_model.zero_grad()loss.backward()# 计算CAMfeatures = cam_model.feature_extractor(image).detach().squeeze()weights = cam_model.gradient.squeeze().mean(dim=(1, 2), keepdims=True)cam = (weights * features).sum(dim=0)cam = np.maximum(cam, 0)cam = cam / cam.max()# 可视化CAMplt.imshow(image.squeeze().permute(1, 2, 0))plt.imshow(cam, cmap='jet', alpha=0.5, interpolation='nearest')plt.axis('off')plt.show()# 加载一张测试图像
image = plt.imread('test_image.jpg')# 可视化CAM
visualize_CAM(image, model, target_class=0)

在上述代码中,我们首先加载了一个预训练的ResNet50模型,并定义了一个CAM模型。然后,我们定义了一个可视化CAM的函数,该函数接受一张图像、一个神经网络模型和一个目标类别,然后使用CAM技术生成一个热力图来可视化输入图像中哪些区域对于神经网络的分类决策起到了重要作用。最后,我们加载一张测试图像,并使用可视化CAM函数将其可视化。

请注意,这只是一个简单的示例代码,您可以根据需要进行修改来适应您的数据和可视化需求。


http://chatgpt.dhexx.cn/article/RRn9MIfi.shtml

相关文章

大数据可视化学期总结

学期总结 知识点总结个人总结 知识点总结 个人总结 在本学期的开始,我们接触了一门新兴的课程—大数据可视化。数据可视化,是关于数据视觉表现形式的科学技术研究。其中,这种数据的视觉表现形式被定义为,一种以某种概要形式抽提出…

深度神经网络可视化技术

深度神经网络可视化技术 深度学习模型表述的难点与意义深度神经网络的可视化云脑 Deepro 采用的 CNN 可视化独立单元激活的可视化图案和区域生成法云脑 Deepro 采用的 RNN 可视化LSTM 解释元与激活门统计 人工智能模型可视化实例结语 深度学习模型表述的难点与意义 深度神经网…

三维可视化技术的应用现状及发展前景

地质体的三维建模与可视化结合基础的自然地理数据信息、钻孔数据信息、物探解译模型数据信息,运用有关技术搭建三维空间数据场,选用硬件配置技术完成系统化。它应用可视化技术揭示了地下世界,是地质学的前沿课题研究之一。以可视化技术为基础…

大屏可视化关键技术

大屏可视化的技术中涉及的范围会比较广,拆开来说诸如各种LED视频技术、互联网技术、智能技术、视觉设计技术等等这些技术,都是跟大屏可视化有着千丝万缕断不开的关系,但真正影响到大屏可视化关键技术却在于下面的3点上。 大屏可视化关键技术&…

大数据可视化技术与应用作业一的经验总结

大数据可视化技术与应用的作业一总结 可视化课的第一次作业,老师让我们参照课本做出个性化的词云图,以下是此次做作业过程中关于背景色,成品效果不好等等问题的总结。 最终做出的词云图: 这是我参考书本上的例子经修改过后运行…

CNN可视化技术总结(一)--特征图可视化

导言: 在CV很多方向所谓改进模型,改进网络,都是在按照人的主观思想在改进,常常在说CNN的本质是提取特征,但并不知道它提取了什么特征,哪些区域对于识别真正起作用,也不知道网络是根据什么得出了…

机器学习可视化技术(Towards Data Science)

介绍 作为任何数据科学项目的一部分,数据可视化在了解更多可用数据和识别任何主要模式方面发挥着重要作用。 如果能够使分析中的机器学习部分尽可能直观,那不是很好吗? 在本文中,我们将探讨一些可以帮助我们应对这一挑战的技术&am…

大数据可视化技术面临的挑战及应对措施

来源:科技导报 本文约5400字,建议阅读10分钟 本文介绍了适用于大数据的数据可视化技术,讨论了针对大数据可视化应用需求自主研发的交互式可视化设计平台AutoVis及其应用。 [ 导读 ]本文从大数据本身的特点及其应用需求出发,结合数…

大数据可视化技术应用学习目标与复习小结

大数据可视化技术与应用 一、大数据可视化概述学习目标1.1 什么是大数据可视化:1.2 大数据可视化的类型1.3大数据可视化的标准 1.4大数据可视化的作用1.5大数据可视化的特征 二、大数据可视化原理学习目标2.1 光源种类,原色、间色、复色概念,…

三维可视化技术都有哪些运用

伴随着数据在当前互联网技术迅速发展壮大下变的层面更广,总数更大、构造愈来愈繁杂,大家如果想要更加清楚,迅速的认识和了解一份数据,传统化的二维平面图数据图表现已不能够满足需求,三维可视化技术越融合多媒体技术、…

【可视化开发】数据大屏可视化技术汇总

由于工作原因,需要用到一些大屏可视化技术,于是通过网上整理、自我学习等多途径,汇总了一份大屏可视化技术的思维导图,如下: 这里主要汇总的是: 大屏可视化技术! 大屏可视化技术! …

基于BIMFILM虚拟施工系统进行可视化技术交底的应用

基于BIMFILM虚拟施工系统进行可视化技术交底的应用 赵飞摘 要:目前技术交底还是以传统施工管理模式下的纸质的二维技术交底为主,而纸质的二维技术交底,技术方案无法细化、不直观,再有纸质的二维技术交底对于结构复杂的项目&#…

技术15期:4种常用的可视化技术【web前端】

说到可视化这个词,可能有的人会一脸懵逼,感觉很陌生,有的人会觉得索然无味,感觉这又是程序员闲暇之余想出的噱头而已。 no,no,no,如果这么想你就错了。 可视化的应用已经深入我们的生活中&#…

windows环境下如何进入到mysql命令行界面

第一步:打开cmd,进入到mysql安装目录下的bin目录 第二步:输入mysql -hlocalhost -uroot -p 第三步:输入mysql的数据库连接密码 看到如下界面就是进入到了mysql 因为我安装的是MariaDB数据库,所以如果出现mysql>也是正确的

mysql篇:如何进入mysql

1、单击windows图标–搜索框内输入cmd,点击运行。 2、在弹出的CMD命令框中输入: “net start mysql”,按下回车。 3、再次输入"mysql -hlocalhost -uroot -p"命令回车 进入mysql数据库。 4、当显示下面的界面时表示成功链接到了…

cmd中怎么进mysql

第一步:启动mysql服务,可以通过“net start myql”命令实现; 第二步:先使用DOS命令进入mysql的安装目录下的bin目录中; (dos命令的基本操作: 盘符: 例如想进入D盘 d: cd 进入到当前盘…

win系统进入mysql

1,使用管理员身份运行cmd 2,进入到mysql所在的bin目录 3,执行mysql -u root -p输入pw 4,查询已存在的数据库show databases;

Windows下cmd进入MySql的命令界面

winR快捷键打开运行,输入cmd,进入cmd若未将MySql加入环境变量,切换到mysql的安装目录下的bin目录;若已加入环境变量,则不必切换目录。输入主机名、数据库名、密码 mysql -h localhost -u root -p输入数据库密码

进入mysql命令行之后,怎么退出

展开全部 进入mysql命令行之后可以按键ctrlc来退出mysql命令客户端; 也可以在命令行输入quit按回车键来62616964757a686964616fe4b893e5b19e31333431366338退出命令行。 扩展资料 mysql命令行常用命令使用方法介绍: 1、连接和断开服务器 shell>…

linux开启并进入Mysql

rootubuntu-server: /etc# ./init.d/mysql start rootubuntu-server: /etc# mysql -uroot -p111111 mysql> show databases; mysql> show tables;