Tensorflow2.0 卷积神经网络可视化 (三)类激活热力图 (CAM,class activation map)

本文介绍了如何使用Tensorflow2.0进行类激活热力图(CAM)的实现,通过VGG16网络对图像进行预测并可视化网络关注的特征。实验表明,网络在识别埃及猫、虎斑猫和Tabby猫时,关注的特征分别是耳朵、眼部和嘴及斑纹。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在神经网络分别中,我们不仅想知道最终预测结果,还需要了解网络是凭借图像什么特征进行判断的。其中类激活热力图 (CAM,class activation map)就是一种很好的呈现方式。

类激活热力图 (CAM,class activation map)

导入ImageNet VGG16网络

导入基础包

import numpy as np
import matplotlib.pyplot as plt
import tensorflow as tf

导入ImageNet VGG16网络

VGG16_model = tf.keras.applications.VGG16(include_top=True)
VGG16_model.summary()

加载任一图片

随便网上找一张图,比如使用率最高的猫星人
在这里插入图片描述
加载对应网络的图像处理方法,以及类别解码表
读取本地图片

from tensorflow.keras.applications.vgg16 import preprocess_input, decode_predictions
def prepocess(x):
    x = tf.io.read_file(x)
    x = tf.image.decode_jpeg(x, channels=3)
    x = tf.image.resize(x, [224,224])
    x =tf.expand_dims(x, 0) # 扩维
    x = preprocess_input(x)
    return x

img_path=
### 关于残差卷积神经网络可视化 残差卷积神经网络(Residual Convolutional Neural Networks, ResNet)是一种通过引入跳跃连接来解决深层网络训练困难问题的有效方法[^1]。其核心思想在于允许梯度直接传播到较浅层,从而缓解了梯度消失现象并提升了模型性能。 对于 **ResNet 的可视化**,通常可以通过以下几种方式实现: #### 1. 特征可视化 特征可以展示每一层卷积操作后的激活情况。通过对中间层的输出进行可视化,能够直观了解不同层次学习到的模式和结构。以下是 Python 中基于 PyTorch 实现的一个简单示例代码片段用于提取某一层的特征: ```python import torch from torchvision import models import matplotlib.pyplot as plt def visualize_feature_maps(model, layer_name, input_image): activation = {} def get_activation(name): def hook(model, input, output): activation[name] = output.detach() return hook model.eval() getattr(model, layer_name).register_forward_hook(get_activation(layer_name)) _ = model(input_image.unsqueeze(0)) # Pass the image through the model feature_map = activation[layer_name].squeeze().numpy() # Get and process activations fig, axes = plt.subplots(4, 8, figsize=(16, 8)) for i, ax in enumerate(axes.flat): if i < feature_map.shape[0]: ax.imshow(feature_map[i], cmap='viridis') ax.axis('off') visualize_feature_maps(models.resnet18(pretrained=True), 'layer3', some_input_tensor) ``` 上述代码展示了如何利用钩子函数捕获指定层的输出,并将其绘制成像形式以便观察。 #### 2. 梯度加权激活映射 (Grad-CAM) 另一种流行的可视化技术称为 Grad-CAM(Gradient-weighted Class Activation Mapping),它可以帮助理解哪些区域对最终预测贡献最大。这种方法适用于任何 CNN 架构,包括 ResNet,在解释模型决策方面非常有用[^2]。 要生成 Grad-CAM 像,可参考如下伪代码逻辑: - 计算目标别相对于最后一层卷积输出的梯度; - 对这些梯度取全局平均池化得到权重向量; - 将该权重应用于对应的特征上再求和形成热力。 具体实现细节超出了当前讨论范围,但有许多开源库支持快速部署此功能,比如 `torchcam` 或者 TensorFlow 提供的相关工具包。 #### 推荐资源链接 由于无法直接提供片文件,请访问下面列举的一些公共资源获取更多有关 ResNet 及其实验结果的信息: - 官方论文附带实验数据与分析表:https://arxiv.org/abs/1512.03385 - GitHub 上有众多项目实现了各种版本的 ResNet 并配有详细的说明文档以及样例演示程序。
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值