浅易理解:卷积神经网络(CNN)

浅易理解卷积神经网络流程

本文的目录:

  1 什么卷积神经网络

  2 输入层

  3 卷积层

  4 池化层

  5 全连接层

1 什么是卷积神经网络

1.1卷积神经网络(Convolutional Neural Networks, CNN)

        是一种前馈神经网络,它的人工神经元可以响应一部分覆盖范围内的周围单元,对于大型图像处理有出色表现。 它包括卷积层(convolutional layer)和池化层(pooling layer)。

1.2卷积神经网络整个运算过程:
  • 输入层:输入图像等信息
  • 卷积层:用来提取图像的底层特征
  • 池化层:防止过拟合,将数据维度减小
  • 全连接层:汇总卷积层和池化层得到的图像的底层特征和信息
  • 输出层:根据全连接层的信息得到概率最大的结果

  其中最重要的一层就是卷积层,这也是卷积神经网络名称的由来

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

1.3什么是卷积

        对图像(不同的数据窗口数据)和滤波矩阵(一组固定的权重:因为每个神经元的多个权重固定,所以又可以看做一个恒定的滤波器filter)做内积(逐个元素相乘再求和)的操作就是所谓的『卷积』操作,也是卷积神经网络的名字来源。

        非严格意义上来讲,下图中红框框起来的部分便可以理解为一个滤波器,即带着一组固定权重的神经元。多个滤波器叠加便成了卷积层。

        具体的例子。比如下图中,图中左边部分是原始输入数据,图中中间部分是滤波器filter,图中右边是输出的新的二维数据。

计算过程是“相乘后相加”

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

1.4 人工神经网络
1.4.1 神经元

在人工智能领域中,人工神经元是对生物神经元进行模拟的概念模型,它是构建人工神经网络的基本单元。人工神经元的设计意图是模仿生物大脑中神经元处理信息的方式,即接收输入信号、对信号进行加权处理并产生输出响应的能力。

神经网络的每个神经元如下:

基本wx + b的形式,其中

  • 表示输入向量
  • 为权重,几个输入则意味着有几个权重,即每个输入都被赋予一个权重
  • b为偏置bias
  • g(z) 为激活函数
  • a 为输出

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

1.5 激活函数

        常用的非线性激活函数有sigmoid、tanh、relu等等,前两者sigmoid/tanh比较常见于全连接层,后者relu常见于卷积层。这里先简要介绍下最基础的sigmoid函数(btw,在本博客中SVM那篇文章开头有提过)

        sigmoid的函数表达式如下

        其中z是一个线性组合,比如z可以等于:b + * + *。通过代入很大的正数或很小的负数到g(z)函数中可知,其结果趋近于0或1。

        因此,sigmoid函数g(z)的图形表示如下( 横轴表示定义域z,纵轴表示值域g(z) ):

        也就是说,sigmoid函数的功能是相当于把一个实数压缩至0到1之间。当z是非常大的正数时,g(z)会趋近于1,而z是非常小的负数时,则g(z)会趋近于0

//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++//

2 输入层

        输入图像,将其转换为对应的二维矩阵,这个二位矩阵就是由图像每一个像素的像素值大小组成的,一个例子,如下图所示的手写数字“8”的图像,计算机读取以像素值大小组成的二维矩阵存储的图像。​

        上图又称为灰度图像,因为其每一个像素值的范围是0~255(由纯黑色到纯白色),表示其颜色强弱程度。另外还有黑白图像,每个像素值要么是0(表示纯黑色),要么是255(表示纯白色)。我们日常生活中最常见的就是RGB图像,有三个通道,分别是红色、绿色、蓝色。每个通道的每个像素值的范围也是0~255,表示其每个像素的颜色强弱。但是我们日常处理的基本都是灰度图像,因为比较好操作(值范围较小,颜色较单一),有些RGB图像在输入给神经网络之前也被转化为灰度图像,也是为了方便计算,否则三个通道的像素一起处理计算量非常大。随着计算机性能的高速发展,现在有些神经网络也可以处理三通道的RGB图像。

          输入层的作用就是将图像转换为其对应的由像素值构成的二维矩阵,并将此二维矩阵存储。

//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++//

3 卷积层

3.1 CNN怎么进行识别

        通过卷积运算我们可以提取出图像的特征,通过卷积运算可以使得原始信号的某些特征增强,并且降低噪声。

        用一个滤波器fx去卷积一个输入的图像(第一阶段是输入的图像,后面的阶段就是卷积特征map了),然后加一个偏置bx,得到卷积层Cx。
下采样层:因为对图像进行下采样,可以减少数据处理量同时保留有用信息,采样可以混淆特征的具体位置,因为某个特征找出来之后,它的位置已经不重要了,我们只需要这个特征和其他特征的相对位置,可以应对形变和扭曲带来的同类物体的变化。

每邻域四个像素求和变为一个像素,然后通过标量Wx+1加权,再增加偏置bx+1,然后通过一个sigmoid激活函数,产生一个大概缩小四倍的特征映射图Sx+1。
 

3.2过滤器(卷积核)

        在卷积运算时,会给定一个大小为F*F的方阵,称为过滤器,又叫做卷积核,该矩阵的大小又称为感受野。过滤器的深度d和输入层的深度d维持一致,因此可以得到大小为F*F*d的过滤器,从数学的角度出发,其为d个F*F的矩阵。在实际的操作中,不同的模型会确定不同数量的过滤器,其个数记为K,每一个K包含d个F*F的矩阵,并且计算生成一个输出矩阵。

        一定大小的输入和一定大小的过滤器,再加上一些额外参数,会生成确定大小的输出矩阵。以下先介绍这些参数。

3.3 Padding

        在进行卷积运算时,输入矩阵的边缘会比矩阵内部的元素计算次数少,且输出矩阵的大小会在卷积运算中相比较于输入变小。因此,可在输入矩阵的四周补零,称为padding,其大小为P。比如当P=1时,原5*5的矩阵如下,蓝色框中为原矩阵,周围使用0作为padding。

from tensorflow.keras.layers import Conv2D

# 在Keras中创建一个卷积层并指定'padding'参数
conv_layer = Conv2D(filters=32, kernel_size=(3, 3), strides=1, padding='same')

        在这个例子中,kernel_size=(3, 3)意味着使用的是3x3大小的卷积核,而padding='same'表示我们想要保持输入和输出在空间维度上的尺寸相同。如果改为padding='valid',则不会有额外的填充,输出尺寸将会减小。

+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

3.4 卷积的感受野
3.4.1感受野的概念

        在卷积神经网络中,感受野(Receptive Field)的定义是卷积神经网络每一层输出的特征图(feature map)上的像素点在输入图片上映射的区域大小。再通俗点的解释是,特征图上的一个点对应输入图上的区域,如图1所示。

//+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++//

4 池化层

4.1 池化层的作用

池化层的作用:是对卷积层中提取的特征进行挑选。

        常见的池化操作有最大池化和平均池化,池化层是由n×n大小的矩阵窗口滑动来进行计算的,类似于卷积层,只不过不是做互相关运算,而是求n×n大小的矩阵中的最大值、平均值等。

池化层主要有以下几个作用:

1. 挑选不受位置干扰的图像信息。

2. 对特征进行降维,提高后续特征的感受野,也就是让池化后的一个像素对应前面图片中的一个区域。

3. 因为池化层是不进行反向传播的,而且池化层减少了特征图的变量个数,所以池化层可以减少计算量。

//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++//

5 全连接层

        池化层的后面一般接着全连接层,全连接层将池化层的所有特征矩阵转化成一维的特征大向量,全连接层一般放在卷积神经网络结构中的最后,用于对图片进行分类,到了全连接层,我们的神经网络就要准备输出结果了

        如下图所示,倒数第二列的向量就是全连接层的数据

        从池化层到全连接层会进行池化操作,数据会进行多到少的映射,进行降维,也就是为什么上图从20×12×12变成100个神经元了,数据在慢慢减少,说明离输出结果越来越近,从全连接层到输出层会再一次减少数据,变成更加低维的向量,这个向量的维度就是需要输出的类别数。然后将这个向量的每个值转换成概率的表示,这个操作一般叫做softmax,softmax使得向量中每个值范围在(0,1)之间,它是二分类函数sigmoid在多分类上的推广,目的是将多分类的结果以概率的形式展现出来。

        

5.1 全连接层的作用

因为从卷积层过来的数据太多了,全连接层的作用主要是对数据进行降维操作,不然数据骤降到输出层,可能会丢失一些图像特征的重要信息。

参考文章:卷积神经网络—感受野与特征图_特征图越大,对检测效果有什么影响-CSDN博客

参考文章:卷积神经网络中卷积层、池化层、全连接层的作用_池化层作用-CSDN博客

池化层图片来自:卷积神经网络概念与原理_卷积神经网络原理-CSDN博客

参考文章:CNN卷积神经网络(图解CNN)-CSDN博客

参考文章:CNN笔记:通俗理解卷积神经网络_cnn卷积神经网络-CSDN博客

参考文章:神经网络——最易懂最清晰的一篇文章-CSDN博客​​​​​​

参考文章:卷积神经网络(CNN)详细介绍及其原理详解-CSDN博客​​​​​​

参考文章:卷积神经网络CNN基本原理详解_cnn工作原理-CSDN博客​​​​​​

相关推荐

  1. 神经网络 (CNN)

    2024-03-13 07:20:04       46 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-13 07:20:04       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-13 07:20:04       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-13 07:20:04       87 阅读
  4. Python语言-面向对象

    2024-03-13 07:20:04       96 阅读

热门阅读

  1. 分布式微服务 - 3.降级熔断 - 3.Sentinel

    2024-03-13 07:20:04       40 阅读
  2. C++中箭头运算符重载的细节

    2024-03-13 07:20:04       40 阅读
  3. 【XR806开发板试用】xr806 RTC实验

    2024-03-13 07:20:04       42 阅读
  4. awk命令——显示第2列至最后1列的内容

    2024-03-13 07:20:04       40 阅读
  5. python bug与debug

    2024-03-13 07:20:04       44 阅读
  6. HTML和CSS是前端开发中最基础的两个技术[入门级]

    2024-03-13 07:20:04       43 阅读
  7. 布尔盲注+时间盲注+堆叠注入

    2024-03-13 07:20:04       46 阅读
  8. 动态规划在算法中的实践

    2024-03-13 07:20:04       28 阅读
  9. WPF —— ComboBox控件详解

    2024-03-13 07:20:04       36 阅读