当前位置: 首页 > news >正文

用matlab探索卷积神经网络(Convolutional Neural Networks)-2

文章目录

  • 3.理解一个简单的神经网络结构
  • 4.层与滤波器(Layers and Filters)

3.理解一个简单的神经网络结构

CNN的架构和深度各有不同。但所有的CNN都会包含一些常见的层,比如图像输入层和卷积层。

后面,我们可以看到分类网络中的每一层如何处理一个简单示例图像。

在第二部分,我们创建了一个简单的深度网络结构,如下图所示,

在这里插入图片描述

例:用一个矩阵的例子表示上图的流程就如下图所示

在这里插入图片描述

第一层是图像输入层。该层定义了网络的输入尺寸,并对输入图像进行归一化处理。默认情况下,图像输入层会减去训练数据集的平均图像,从而使图像以零为中心。上图中,输入层就是一个5x5的图像(imageInputLayer([5 5]))

在这里插入图片描述

二维卷积层对输入图像应用滑动滤波器。卷积层是CNN架构中的关键部分,它们利用输入图像的空间结构来提取信息。上面例子中的卷积核就是一个通道,大小为2x2,即convolution2dLayer([2 2], 1)

在这里插入图片描述

卷积层通常后接一个非线性激活层,例如修正线性单元(ReLU)。ReLU层对输入的每个元素执行阈值操作,将小于零的值都设为零。

在这里插入图片描述

最大池化层通过将输入划分为矩形的池化区域,并计算每个区域的最大值来进行下采样。池化可以降低网络的复杂度,并使网络具有更强的泛化能力。上面例子的池化层大小为3x3,即maxPoolingLayer([3 3])

在这里插入图片描述

通过网络传递的特征被保存在一组矩阵中,直到它们到达全连接层。在全连接层中,输入会被“展平”,以便映射到输出类别上。该层的输出大小取决于你的分类问题中的类别数量。例如,如果你要对猫和狗进行分类,输出大小就是2。

在这里插入图片描述

Softmax层将每个输出类别的数值转换为归一化的分数。你可以将每个数值理解为输入图像属于对应类别的概率。

在这里插入图片描述

Softmax层中数值最大的那个对应于最有可能的类别。

在这里插入图片描述

4.层与滤波器(Layers and Filters)

当你创建一个卷积层时,需要指定滤波器的尺寸和数量。在训练过程中,这些滤波器会学习如何从图像中提取特征。为了帮助理解滤波器的作用,你可以将一张输入图像传入网络,并查看卷积层的激活值(即输出)。被网络处理过的图像称为激活图。首先,我们创建自己的滤波器,以了解卷积是如何工作的。

我们可以自己找一张花朵的照片,这是一张RGB图像,有三个通道,如下图所示,

在这里插入图片描述

为了模拟在 convolution2dLayer 中执行的卷积操作,你需要一个二维矩阵。你可以使用冒号(:)运算符提取其中一个通道的所有行和列,这里我们提取彩色图片的第一个通道,

% 读取彩色图片
img = imread("flower.jpg");
figure,imshow(img)

% 提取图片第一个通道
redIm = img(:,:,1);
figure,imshow(redIm)

在这里插入图片描述

这里我们将使用的滤波器是 3×3 的矩阵。在图像处理中,这种矩阵通常被称为卷积核(kernel)。这就类似于在创建 convolution2dLayer 时使用一个 [3 3] 的滤波器。

最简单的卷积核之一是单位卷积核(identity kernel)
[ 0 0 0 0 1 0 0 0 0 ] \begin{bmatrix} 0 & 0 & 0 \\ 0 & 1 & 0 \\ 0 & 0 & 0 \end{bmatrix} 000010000
在每个像素处,使用单位卷积核进行卷积时会返回相同的像素值。因此,输出图像与原始图像相同。

在matlab里,我们可以这样创建单位卷积核

% 单位卷积核
identityK = [0 0 0; 0 1 0; 0 0 0];

你可以使用 imfilter 函数和你的卷积核一起,对图像应用滤波操作。
filteredim = imfilter(im, kernel) 表示将滤波器 kernel 应用于图像 im,并将结果存储在 filteredim 中。

这里我们将identityK应用在提取的第一个通道上redIm,

% 应用单位卷积核
identityConv = imfilter(redIm, identityK);
figure,imshow(identityConv)

在这里插入图片描述

当我们使用不用的卷积核,就会对图像有不同的效果,我们可以使用下面的卷积核来模糊图像,
1 9 [ 1 1 1 1 1 1 1 1 1 ] \frac{1}{9} \begin{bmatrix} 1 & 1 & 1 \\ 1 & 1 & 1 \\ 1 & 1 & 1 \end{bmatrix} 91 111111111
这个卷积核计算一个像素及其周围像素的平局值。

% 卷积核
blurK = 1/9 * [1 1 1; 1 1 1;1 1 1];

% 应用卷积核
blurConv = imfilter(redIm, blurK);
figure,imshow(blurConv)

在这里插入图片描述

边缘通常是在卷积神经网络(CNN)早期层中提取的特征之一。你可以使用这个卷积核进行简单的边缘检测。
[ 0 1 0 1 − 4 1 0 1 0 ] \begin{bmatrix} 0 & 1 & 0 \\ 1 & -4 & 1 \\ 0 & 1 & 0 \end{bmatrix} 010141010

% 卷积核
edgeK = [0 1 0; 1 -4 1;0 1 0];

% 应用卷积核
edgeConv = imfilter(redIm, edgeK);
figure,imshow(edgeConv)

在这里插入图片描述

相关文章:

  • Anolis系统下安装Jenkins
  • 蓝桥杯杯赛-日期模拟
  • 【Tauri2】010——菜单menu(1)
  • 电脑基础之excel基础操作
  • 网络攻防快速入门笔记pwn | 02 栈溢出题型 | 2.1 ret2text和ret2shellcode
  • 鸿蒙Next-开发版本升级,API升级(例如API12升API16)
  • 前端界面在线excel编辑器 。node编写post接口获取文件流,使用传参替换表格内容展示、前后端一把梭。
  • Django学习笔记
  • 第二章:基础页面实现 - 第一节:登录与注册页面 - 表单与身份验证UI
  • 飞腾派OS(无桌面版本基于Debian11)安装weston桌面及Qt
  • LLM应用层推荐 -- 基于文档的问答tools Web UI 框架 开源向量库 -- 推荐、对比
  • 飞速(FS)HPC无损组网:驱动AI高性能计算网络转型升级
  • Qt笔记----》不同环境程序打包
  • 【docker】将docker容器中的文件复制到宿主机的方法
  • centos线程数查看
  • Typora 小乌龟 git 上传到gitee仓库教程
  • git push失败的解决办法
  • 北斗导航 | THE GNSS AMBIGUITY RATIO-TEST REVISITED: A BETTER WAY OF USING IT【论文要点】
  • linux-core分析-柔性数组越界访问
  • c++中int、float、double类型数据与string类型数据相互转换
  • 港理大研究揭示:塑胶废物潜藏微生物群落或引发生态危机
  • 上海优化营商环境十大攻坚突破任务中,为何第一项是实施世行对标改革?
  • 湖北奥莱斯轮胎公司逃避监管排放大气污染物被罚25万元
  • 起底新型保健品电话销售诈骗:从快递信息中筛选对象,忽悠其高价买药
  • 言短意长|如何看待“订不到酒店的游客住进局长家”这件事
  • 击败老对手韩国队夺冠!国羽第14次问鼎苏迪曼杯创历史