MATLAB环境下可视化卷积神经网络CNN的激活图

深度学习,一个大号/深层的,现代的,黑箱的,信号/图像处理器。

本文简单讲解如何将图像输入到卷积神经网络CNN并显示网络不同层的激活图,并通过将激活图与原始图像进行比较以探索网络学习哪些特征

本例需要用到MATLAB Neural Network Toolbox(TM), Image Processing

Toolbox 和 the Neural Network Toolbox(TM) Model _for AlexNet Network_.

加载预训练模型和数据

加载预训练的AlexNet 网络。如果Neural Network Toolbox Model _for AlexNet Network_没有安装,则MATLAB会提供下载链接。

net = alexnet;

读取一张图片并显示

imshow(im)
imgSize = size(im);
imgSize = imgSize(1:2);

可视化网络结构

显示网络的层信息,观察第一个卷积层有 96 个通道

net.Layers

ans =

25x1 Layer array with layers:

1 'data' Image Input 227x227x3 images with 'zerocenter' normalization
2 'conv1' Convolution 96 11x11x3 convolutions with stride [4 4] and padding [0 0]
3 'relu1' ReLU ReLU
4 'norm1' Cross Channel Normalization cross channel normalization with 5 channels per element
5 'pool1' Max Pooling 3x3 max pooling with stride [2 2] and padding [0 0]
6 'conv2' Convolution 256 5x5x48 convolutions with stride [1 1] and padding [2 2]
7 'relu2' ReLU ReLU
8 'norm2' Cross Channel Normalization cross channel normalization with 5 channels per element
9 'pool2' Max Pooling 3x3 max pooling with stride [2 2] and padding [0 0]
10 'conv3' Convolution 384 3x3x256 convolutions with stride [1 1] and padding [1 1]
11 'relu3' ReLU ReLU
12 'conv4' Convolution 384 3x3x192 convolutions with stride [1 1] and padding [1 1]
13 'relu4' ReLU ReLU
14 'conv5' Convolution 256 3x3x192 convolutions with stride [1 1] and padding [1 1]
15 'relu5' ReLU ReLU
16 'pool5' Max Pooling 3x3 max pooling with stride [2 2] and padding [0 0]
17 'fc6' Fully Connected 4096 fully connected layer
18 'relu6' ReLU ReLU
19 'drop6' Dropout 50% dropout
20 'fc7' Fully Connected 4096 fully connected layer
21 'relu7' ReLU ReLU
22 'drop7' Dropout 50% dropout
23 'fc8' Fully Connected 1000 fully connected layer
24 'prob' Softmax softmax
25 'output' Classification Output crossentropyex with 'tench', 'goldfish', and 998 other classes

显示第一个卷积层的激活图

act1 = activations(net,im,'conv1','OutputAs','channels');
sz = size(act1);
act1 = reshape(act1,[sz(1) sz(2) 1 sz(3)]);

使用mat2gray函数对输出进行规范化,并显示8 x 12的96张图像,层中的每个通道对应一张图像。

montage(mat2gray(act1),'Size',[8 12])

指定通道的激活图

调整通道 32 中激活的大小,使其与原始图像相同,并显示激活图

act1ch32 = act1(:,:,:,32);
act1ch32 = mat2gray(act1ch32);
act1ch32 = imresize(act1ch32,imgSize);
imshowpair(im,act1ch32,'montage')

查找最强的激活通道

[maxValue,maxValueIndex] = max(max(max(act1)));
act1chMax = act1(:,:,:,maxValueIndex);
act1chMax = mat2gray(act1chMax);
act1chMax = imresize(act1chMax,imgSize);
imshowpair(im,act1chMax,'montage')

下面研究更深的网络层的激活

以conv5层的激活图为例,代码与上面类似

conv5层的最强激活图

进一步查看通道3和通道5。

可视化relu5层的激活值

与conv5层的激活相比,relu5层清晰地精确定位图像中具有强烈激活的面部区域特征。

擅长现代信号处理(改进小波分析系列,改进变分模态分解,改进经验小波变换,改进辛几何模态分解等等),改进机器学习,改进深度学习,机械故障诊断,改进时间序列分析(金融信号,心电信号,振动信号等)

代码见评论区。

  • 0
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
### 回答1: 卷积神经网络(Convolutional Neural Network,简称CNN)是一种深度学习算法,广泛应用于计算机视觉领域。Matlab作为一种强大的科学计算工具,也提供了丰富的函数库和工具箱来支持CNN的实现。 在Matlab中,可以使用深度学习工具箱来构建和训练卷积神经网络。工具箱提供了一系列函数和类,用于创建网络模型、定义网络结构、加载和预处理数据以及训练和评估网络模型。 首先,可以使用网络迁移学习的方法,通过预训练的模型来构建自己的卷积神经网络Matlab提供了一系列经典的预训练模型,如AlexNet、VGG-16、GoogLeNet等,可以直接加载这些模型,并在其基础上进行微调。 其次,可以使用Matlab提供的工具函数来定义和配置网络结构。可以使用卷积层、池化层、全连接层等组件来构建自己的卷积神经网络模型。可以设置网络的参数、激活函数、连接方式等。 然后,可以使用Matlab提供的数据加载和预处理函数,将像数据转化为网络可接受的格式。可以进行数据增强操作,如旋转、平移、翻转等,以增加数据的多样性和泛化能力。 最后,可以使用深度学习工具箱提供的训练和评估函数,对构建好的卷积神经网络进行训练和评估。可以选择不同的优化算法、学习率策略等来优化网络的训练过程,并使用验证集和测试集来评估模型的性能。 总之,通过Matlab提供的深度学习工具箱,可以方便地实现卷积神经网络,并进行网络训练和评估。这一强大的工具可以帮助研究者和开发者在计算机视觉领域中应用CNN算法,提高像分类、目标检测、语义分割等任务的性能和效果。 ### 回答2: 卷积神经网络(Convolutional Neural Networks,简称CNN)是一种常用的深度学习模型,常用于像识别和计算机视觉任务中。Matlab是一款强大的科学计算软件,也提供了丰富的工具包和函数用于实现卷积神经网络。 在Matlab中,可以使用深度学习工具箱(Deep Learning Toolbox)来构建和训练卷积神经网络。该工具箱提供了一系列函数和算法,以及预先训练好的网络模型,方便用户进行像分类、目标检测、语义分割等任务。 构建一个卷积神经网络首先需要定义网络的结构。在Matlab中,可以通过网络设计工具(Deep Network Designer)进行可视化设计,也可以使用命令行函数进行代码编写。常用的网络层包括卷积层、池化层、全连接层等,用户可以根据任务需求自由搭建网络结构。 在网络构建完成后,可以使用预训练数据集对网络进行训练。Matlab提供了多种数据导入和处理函数,如ImageDatastore、augmentedImageDatastore等,方便用户准备训练数据。同时,可以使用trainNetwork函数选择适当的优化算法、学习率、迭代次数等参数进行网络的训练。 训练完成后,可以使用已训练的网络对新的数据进行预测。通过classify函数可以对像进行分类预测,而通过predict函数可以获取每个类别的概率输出。同时,可以使用confusionmat函数评估网络的分类准确率。 总之,使用Matlab可以轻松实现卷积神经网络,并在像识别和计算机视觉领域中取得良好的效果。Matlab提供了丰富的函数和工具,以及易于使用的界面,帮助用户快速构建和训练卷积神经网络模型。 ### 回答3: 卷积神经网络(Convolutional Neural Network,CNN)是一种基于人工神经网络的深度学习算法。它在计算机视觉领域中被广泛应用于像分类、目标检测和像生成等任务中。 在Matlab中,我们可以使用深度学习工具箱来构建和训练卷积神经网络。首先,我们需要定义网络的结构,包括卷积层、池化层和全连接层等。然后,我们可以使用提供的函数来配置网络参数,如学习率、迭代次数和优化算法等。 在开始训练之前,我们还需要准备好训练数据和标签。Matlab提供了许多函数来帮助加载、预处理和划分训练数据集。我们可以将像数据转换为合适的格式,并进行数据增强操作,如随机裁剪、翻转和缩放等,以增加数据样本的多样性。 训练过程中,我们可以使用批处理(batch)的方式来输入数据,以提高训练效率。通过迭代优化网络参数,目标是最小化损失函数,以提升预测的准确性。在训练过程中,我们可以监控损失值和精度等指标,以评估网络的性能。 训练完成后,我们可以使用训练好的模型来对新数据进行预测。Matlab提供了相应的函数来加载保存的模型,并使用预测函数来生成预测结果。我们可以将预测结果与真实标签进行比较,以评估模型的性能。 总之,使用Matlab中的卷积神经网络工具箱,我们可以方便地构建、训练和评估卷积神经网络模型。这为我们在计算机视觉领域中解决各种问题提供了强大的工具和技术支持。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

哥廷根数学学派

码字不易,且行且珍惜

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值