可视化CNN和特征图

这篇具有很好参考价值的文章主要介绍了可视化CNN和特征图。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

卷积神经网络(cnn)是一种神经网络,通常用于图像分类、目标检测和其他计算机视觉任务。CNN的关键组件之一是特征图,它是通过对图像应用卷积滤波器生成的输入图像的表示。

可视化CNN和特征图

理解卷积层

1、卷积操作

卷积的概念是CNN操作的核心。卷积是一种数学运算,它把两个函数结合起来产生第三个函数。在cnn的上下文中,这两个函数是输入图像和滤波器,而得到的结果就是特征图。

2、卷积的层

卷积层包括在输入图像上滑动滤波器,并计算滤波器与输入图像的相应补丁之间的点积。然后将结果输出值存储在特征映射中的相应位置。通过应用多个过滤器,每个过滤器检测一个不同的特征,我们可以生成多个特征映射。

3、重要参数

Stride: Stride 是指卷积滤波器在卷积运算过程中在输入数据上移动的步长。

Padding:Padding是指在应用卷积操作之前在输入图像或特征映射的边界周围添加额外像素。

Padding的目的是控制输出特征图的大小,保证滤波窗口能够覆盖输入图像或特征图的边缘。如果没有填充,过滤器窗口将无法覆盖输入数据的边缘,导致输出特征映射的大小减小和信息丢失。有两种类型的填充“valid”和“same”。

可视化CNN和特征图

kernel/filter :kernel(也称为filter 或 weight )是一个可学习参数的小矩阵,用于从输入数据中提取特征。

在下图中,输入图像的大小为(5,5),过滤器filter 的大小为(3,3),绿色为输入图像,黄色区域为该图像的过滤器。在输入图像上滑动滤波器,计算滤波器与输入图像的相应像素之间的点积。Padding是valid (也就是没有填充)。stride值为1。

可视化CNN和特征图

4、特征图:

特征图是卷积神经网络(CNN)中卷积层的输出。它们是二维数组,包含卷积滤波器从输入图像或信号中提取的特征。

卷积层中特征图的数量对应于该层中使用的过滤器的数量。每个过滤器通过对输入数据应用卷积操作来生成单个特征映射。

特征图的大小取决于输入数据的大小,卷积操作中使用的过滤器、填充和步幅的大小。通常,随着我们深入网络,特征图的大小会减小,而特征图的数量会增加。特征图的大小可以用以下公式计算:

 Output_Size = (Input_Size  -  Filter_Size + 2 * Padding) / Stride + 1

这个公式非常重要,因为在计算输出时肯定会用到,所以一定要记住

来自一个卷积层的特征映射作为网络中下一层的输入数据。随着层数的增加,网络能够学习越来越复杂和抽象的特征。通过结合来自多层的特征,网络可以识别输入数据中的复杂模式,并做出准确的预测。

特征图可视化

这里我们使用TF作为框架进行演示

 ## Importing libraries
 # Image processing library
 importcv2
 # Keras from tensorflow
 importkeras
 # In Keras, the layers module provides a set of pre-built layer classes that can be used to construct neural networks.
 fromkerasimportlayers
 # For ploting graphs and images
 importmatplotlib.pyplotasplt
 importnumpyasnp

使用OpenCV导入一张图像,并将其大小调整为224 x 224像素。

 img_size = (224, 224)
 file_name = "./data/archive/flowers/iris/10802001213_7687db7f0c_c.jpg"
 img = cv2.imread(file_name)      # reading the image
 img = cv2.resize(img, img_size)

我们添加2个卷积层:

 model = keras.Sequential()
 filters = 16
 model.add(layers.Conv2D(input_shape = (224, 224, 3),filters = filters, kernel_size= 3))
 model.add(layers.Conv2D(filters = filters, kernel_size= 3))

从卷积层中获取过滤器。

 filters, bias = model.layers[0].get_weights()
 min_filter = filters.min()
 max_filter = filters.max()
 filters = (filters - min_filter) / (max_filter - min_filter)p

可视化

 figure = plt.figure(figsize= (10, 20))
 filters_count = filters.shape[-1]
 channels = filters.shape[0]
 index = 1
 for channel in range(channels):
     for filter in range(filters_count):
         plt.subplot(filters_count, channels, index)
         plt.imshow(filters[channel, :, :, filter])
         plt.xticks([])
         plt.yticks([])
         index+=1
 plt.show()

可视化CNN和特征图

将图像输入到模型中得到特征图

 normalized_img = (img - img.min()) / (img.max() - img.min())
 normalized_img =  normalized_img.reshape(-1, 224, 224, 3)
 feature_map = model.predict(normalized_img)

特征图需要进行归一化这样才可以在matplotlib中显示

 feature_map = (feature_map - feature_map.min())/ (feature_map.max() - feature_map.min())

提取特征图并显示

 total_imgs = feature_map.shape[0]
 no_features = feature_map.shape[-1]
 fig = plt.figure(figsize=(10, 50))
 index = 1
 
 for image_no in range(total_imgs):
     for feature in range(no_features):
         # plotting for 16 filters that produced 16 feature maps
         plt.subplot(no_features, 3, index)
         plt.imshow(feature_map[image_no, :, :, feature], cmap="gray")
         plt.xticks([])
         plt.yticks([])
         index+=1
 plt.show()

可视化CNN和特征图

总结

通过可视化CNN不同层的特征图,可以更好地理解网络在处理图像时“看到”的是什么。例如,第一层可能会学习简单的特征,如边缘和角落,而后面的层可能会学习更抽象的特征,如特定物体的存在。通过查看特征图,我们还可以识别图像中对网络决策过程重要的区域。

https://avoid.overfit.cn/post/1132e4f9872a490e95bcbd0477d38426

作者:Ahzam Ejaz文章来源地址https://www.toymoban.com/news/detail-409779.html

到了这里,关于可视化CNN和特征图的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【使用 k 折叠交叉验证的卷积神经网络(CNN)】基于卷积神经网络的无特征EMG模式识别研究(Matlab代码实现)

    💥💥💞💞 欢迎来到本博客 ❤️❤️💥💥 🏆博主优势: 🌞🌞🌞 博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️ 座右铭: 行百里者,半于九十。 📋📋📋 本文目录如下: 🎁🎁🎁 目录 💥1 概述 📚2 运行结果 🎉3 参考文献 🌈4 Matlab代码实现 文献来源

    2024年02月11日
    浏览(43)
  • 可视化CNN和特征图

    卷积神经网络(cnn)是一种神经网络,通常用于图像分类、目标检测和其他计算机视觉任务。CNN的关键组件之一是特征图,它是通过对图像应用卷积滤波器生成的输入图像的表示。 1、卷积操作 卷积的概念是CNN操作的核心。卷积是一种数学运算,它把两个函数结合起来产生第三

    2023年04月10日
    浏览(50)
  • # Pytorch 深度卷积模型的特征可视化

    可视化模型的特征层需要打印各层的名称: 安装torchsummary包 打印各层名称

    2024年02月16日
    浏览(43)
  • 【神经网络结构可视化】PlotNeuralNet的安装、测试及创建自己的神经网络结构可视化图形

    1、下载MikTeX 下载链接: MikTeX ( https://miktex.org/download ) 2、下载Git bash 下载链接: Git bash ( https://git-scm.com/download/win ) 3、下载PlotNeuralNet 下载链接: PlotNeuralNet ( https://github.com/HarisIqbal88/PlotNeuralNet?tab=readme-ov-file ) 1、解压PlotNeuralNet-master.zip 将下载的PlotNeuralNet-master.zip解压到当前

    2024年04月25日
    浏览(47)
  • 神经网络的可视化:使用3D可视化和交互式界面来展示模型

    作者:禅与计算机程序设计艺术 作为人工智能领域的从业者,我们常常需要与其他技术人员或者领域内的专家进行交流。在这个过程中,一个关键的问题是如何让复杂的神经网络模型变得易于理解和分析。今天,我们将探讨如何使用3D可视化和交互式界面来展示神经网络模型

    2024年02月14日
    浏览(49)
  • 神经影像脑网络图、brain map可视化汇总

    神经影像可视化构成了科学结果解释和交流的核心,也是数据质量控制的基石。 通常,这些图像和图形是通过手动更改图形用户界面 (GUI) 上的设置来生成的。 现在存在许多有据可查的基于代码的大脑可视化工具,允许 5 个用户直接在 R、Python 和 MATLAB 环境中以编程方式生成

    2024年02月14日
    浏览(40)
  • 用c动态数组(实现权重矩阵可视化)实现手撸神经网络230902

    变量即内存、指针使用的架构原理: 1、用结构struct记录 网络架构,如 float*** ws 为权重矩阵的指针(指针地址); 2、用 = (float*)malloc (Num * sizeof(float)) 给 具体变量分配内存; 3、用 = (float**)malloc( Num* sizeof(float*) ) 给 指向 具体变量(一维数组)的指针…… 给分配 存放指针的

    2024年02月07日
    浏览(41)
  • Python用GAN生成对抗性神经网络判别模型拟合多维数组、分类识别手写数字图像可视化...

    生成对抗网络(GAN)是一种神经网络,可以生成类似于人类产生的材料,如图像、音乐、语音或文本 ( 点击文末“阅读原文”获取完整 代码数据 )。 相关视频 最近我们被客户要求撰写关于GAN生成对抗性神经网络的研究报告,包括一些图形和统计输出。 近年来,GAN一直是研

    2024年02月09日
    浏览(54)
  • Python中TensorFlow的长短期记忆神经网络(LSTM)、指数移动平均法预测股票市场和可视化...

    本文探索Python中的长短期记忆(LSTM)网络,以及如何使用它们来进行股市预测 ( 点击文末“阅读原文”获取完整 代码数据 )。 相关视频 在本文中,你将看到如何使用一个被称为长短时记忆的时间序列模型。LSTM模型很强大,特别是在保留长期记忆方面。在本文中,你将解

    2024年02月16日
    浏览(38)
  • R语言软件对房屋价格预测:回归、LASSO、决策树、随机森林、GBM、神经网络和SVM可视化|数据分享...

    在房地产市场中,准确地预测房屋价格是至关重要的。过去几十年来,随着数据科学和机器学习的快速发展,各种预测模型被广泛应用于房屋价格预测中。而R语言作为一种强大的数据分析和统计建模工具,被越来越多的研究者和从业者选择用于房屋价格预测 ( 点击文末“阅

    2024年02月21日
    浏览(119)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包