关于卷积神经网络特征可视化

卷积神经网络CNN,一个大号/深层的,现代的,黑箱的,信号/图像处理器。

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

本例来源于Mathworks公司的大佬,需要用到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层清晰地精确定位图像中具有强烈激活的面部区域特征。

注意:先检查MATLAB是否安装了预训练的AlexNet ,输入net=AlexNet进行验证。如果Neural Network Toolbox Model for AlexNet Network没有安装,则MATLAB会提供按照链接。

完整代码:关于卷积神经网络特征可视化

卷积神经网络特征可视化存在的难点是什么

1)对于可视化方法,仍存在噪声、稳定性、解释能力有限等问题。

通过对多种可视化方法的实验比较发现,多数可视化方法生成的热力图含有一定的噪声,噪声产生的原因仍没有权威统一的解释。同时,面对不同图像时的可视化效果不尽相同,有些图像可能直接导致可视化方法的失效,而失效的原因尚不清楚,仍有待进一步的探究。此外,面对复杂背景条件的图像、多目标场景、小目标图像等,受限于模型本身在面对这些情形时的性能约束,可视化方法的解释效果并不一定好。未来可能的研究趋势是将可视化方法与其他解释方法的结合,从不同侧面不同角度解释模型,从而缓解单一可视化方法解释效果受限的问题。

2)对于可视化效果的评估,仍欠缺标准统一的评估方法。

目前很难找到适用于大多数可视化方法的评估标准,原因在于许多方法的目标并不相同,也即每种方法对“可解释性”的理解并不相同,导致各种可视化方法的解释结果差别较大。同时,很多可视化方法自身同样缺乏清晰明确的数学与逻辑机理,导致结果难以量化比较。如果可以从“可解释性”的概念出发,统一数个可解释性的标准,那么对于可视化结果的评估也就有了依据。同时,还可以根据可视化方法产生的热力图的特点进行分类评价,每类热力图使用与之适应的评价标准,提升其侧重解释某方面的能力。

3)对于可视化的对象,细粒度的识别模型难以可视化解释。可视化方法多应用于对图像分类、目标定位及场景识别等任务的解释,能够实现对多目标图像中语义级目标的区分。例如,“Cat”和“Dog”虽然同属动物,但是在语义级上属于明显不同的两种动物。而单独对于“Cat”这一动物,实现的不同品种猫的细粒度图像分类,受限于分类网络自身准确性,可视化方法很难找到用于区分目标的细节特征,此时的解释效果非常有限,甚至对于不同的目标可视化效果始终相同。与人们的视觉观察及解释能力相差较远。这一问题或许可以通过视觉解释与语言解释相结合的途径来改善解释效果。对可视化解释难以描述的细微之处,辅助加以自然语言描述形式的解释(比如对猫的颜色、猫耳形状的描述),能够实现更好的解释效果。

4)对于可视化解释的完备性,现有研究中的解释结果与预测结果无法相互印证。

理论上看,一个完备可靠的解释可以使用户从中推理并得到被解释的预测结果,而目前的可视化方法仍不具备这一能力,仅能从预测结果中得到解释结果,而无法根据解释来推断出模型的预测,即两者之间的相互印证关系没有被建立起来。例如,如果可视化方法给出了错误的解释,但这一解释恰好符合用户根据预测结果推测的预期解释,进而使得用户相信了解释的可靠性,这将对其形成误导。此时,若能根据解释结果推断预测结果,发现推断出的预测结果和实际预测结果不相符合,则可通过进一步分析发现其中存在的问题,从而提升用户对可视化方法的信任。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/466437.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

IP代理技术革新:探索数据采集的新路径

引言: 随着全球化进程不断加深,网络数据采集在企业决策和市场分析中扮演着愈发重要的角色。然而,地域限制和IP封锁等问题常常给数据采集工作带来了巨大挑战。亿牛云代理服务凭借其强大的网络覆盖和真实住宅IP资源,成为解决这些问…

大A为何频繁跳水,Python量化1200W条交易数据给你答案!| 邢不行

这是邢不行第 110 期量化小讲堂的分享 作者 | 邢不行、密斯锌硒 常看我文章的读者应该能发现,我介绍过的量化策略大多都会在开盘时买入。 比如小市值策略和散户反着买策略: 小市值策略文章 散户反着买策略 它们都会在每个周期的第一个交易日开盘去…

Git Bash命令初始化本地仓库,提交到远程仓库

git init:初始化空仓库 // 初始化一个空仓库或者重新初始化一个存在的仓库 git init git remote // 为当前本地仓库添加一个远程仓库地址 git remote add origin https://gitee.com/xxx/demo.git git pull // 从设置好链接的远程仓库拉去已经存在的数据,…

Python自动化测试——postman,jmeter接口测试

关于众所postman,jmeter,做自动化测试的我想对这两个词并不陌生。大家都知道postman用来做接口测试很方便,下面我们就用一些例子来演示一下它该如何进行接口测试: 首先我们来介绍一下接口测试的概念: 1、什么是接口测试&#xf…

被围绕的区域c++

题目 链接:登录—专业IT笔试面试备考平台_牛客网 来源:牛客网 输入 4 4 XXXX XOOX XOXX XXOX输出 XXXX XXXX XXXX XXOX思路 由题知边界上的"O"和 与边界的"O"相连的"O"不会被标记,我们可以用一个数组st[][]标…

SpringBoot项目如何打包成war包,并部署在tomcat上运行

项目场景: 正常情况下,我们开发 SpringBoot 项目,由于内置了Tomcat,所以项目可以直接启动,部署到服务器的时候,直接打成 jar 包,就可以运行了。 有时我们会需要打包成 war 包,放入外…

23.1 微服务理论基础

23.1 微服务基础 1. 微服务介绍2. 微服务特点3. 微服务优缺点4. 微服务两大门派5. 微服务拆分6. 微服务扩展6.1 服务扩展6.2 按需扩展7. 微服务重要模块******************************************************************************************************************

【华为Datacom数通认证】HCIA-HCIP-HCIE

华为认证课程概述 华为认证是华为技术有限公司(简称"华为")基于"平台生态"战略,围绕"云-管-端"协同的新ICT技术架构,打造的业界覆盖ICT领域最广的认证体系,包含"ICT技术架构认证"、"ICT开发者…

【鸿蒙HarmonyOS开发笔记】动画过渡效果之布局更新动画

概述 动画的原理是在一个时间段内,多次改变UI外观,由于人眼会产生视觉暂留,所以最终看到的就是一个“连续”的动画。UI的一次改变称为一个动画帧,对应一次屏幕刷新,而决定动画流畅度的一个重要指标就是帧率FPS&#x…

怎么看一手伦敦银多少钱?

做伦敦银投资的朋友需要搞清楚“一手伦敦银多少钱”的问题,这也是伦敦银交易的基础问题。为什么需要搞清楚这个基础问题呢?有些基础问题我们不需要搞懂,但是关于一手伦敦银多少钱却需要搞清楚,因为这决定了投资者的资金利用率。 关…

Java-Java基础学习(1)-重写和多态对比分析

Java中的重写(Override)和多态(Polymorphism)是两个核心概念,它们在面向对象编程中扮演着非常重要的角色。下面我将对这两个概念进行详细的对比分析,包括它们的区别、联系以及应用场景,并附上相…

为什么关掉了公众号留言功能?

为什么公众号没有留言功能?根据要求,自2018年2月12日起,新申请的微信公众号默认无留言功能。有些人听过一个说法:公众号粉丝累计到一定程度或者原创文章数量累计到一定程度就可以开通留言功能。其实这个方法是2018年之前才可以&am…

2024年阿里云服务器所在机房位置详细说明

阿里云服务器地域和可用区有哪些?阿里云服务器地域节点遍布全球29个地域、88个可用区,包括中国大陆、中国香港、日本、美国、新加坡、孟买、泰国、首尔、迪拜等地域,同一个地域下有多个可用区可以选择,阿里云服务器网aliyunfuwuqi…

Linux应用 线程同步之自旋锁

1、概念 1.1 定义 自旋锁(Spinlock)是一种特殊的锁机制,当线程尝试获取锁而锁不可用时,线程会进入忙等待(即循环检查锁是否可用),而不是进入睡眠状态。这种机制适用于锁持有时间非常短的场景&…

深度学习指标| 置信区间、Dice、IOU、MIOU、Kappa

深度学习部分指标介绍 置信区间混淆矩阵DiceIOU和MIOUKappa 置信区间 95%CI指标 读论文的时候,常会看到一个“95%CI”的评价指标。 其中CI指的是统计学中的置信区间(Confidence interval,CI)。在统计学中,一个概率样…

用python写网络爬虫:2.urllib库的基本用法

文章目录 urllib库抓取网页data参数timeout参数更灵活地配置参数登录代理Cookies 参考书籍 建议新入门的小伙伴先看我同一专栏的文章:用python写网络爬虫:1.基础知识 urllib库 urllib是python中一个最基础的HTTP库,一般是内置的,…

Linux网络基础2

目录 实现网络版本计算器 自己定协议实现用json协议实现 重谈OSI七层模型HTTP协议 域名介绍url介绍HTTP请求和响应 实现一个简易的HTTP服务器 实现简易Http服务器初级版实现简易Http服务器中级版 实现一个简易的HTTP服务器最终版 请求方法HTTP状态码HTTP常见的Header 实现网…

【鸿蒙HarmonyOS开发笔记】常用组件介绍篇 —— Progress进度条组件

概述 Progress为进度条组件,用于显示各种进度。 参数 Progress组件的参数定义如下 Progress(options: {value: number, total?: number, type?: ProgressType})● value value属性用于设置当前进度值。 ● total total属性用于设置总值。 ● type type属…

加拿大光量子计算公司Xanadu入局英国多企业量子合作计划

内容来源:量子前哨(ID:Qforepost) 编辑丨慕一 编译/排版丨沛贤 深度好文:1200字丨8分钟阅读 英国航空发动机制造商罗尔斯罗伊斯(Rolls-Royce)、英国量子计算公司Riverlane和加拿大量子计算公…

【赠书】从深度学习到图神经网络:模型与实践

文章目录 赠书:《从深度学习到图神经网络:模型与实践》一、编辑推荐二、内容简介三、作者简介张玉宏杨铁军 四、精彩书评五、目录第1章 图上的深度学习 11.1 人工智能与深度学习 21.2 图神经网络时代的来临 61.3 图数据处理面临的挑战 91.4 图神经网络的…