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

深度学习--卷积神经网络CNN原理


文章目录

  • 一、CNN图像原理
    • 1、了解CNN如何处理图像
  • 二、CNN图像识别
    • 1、画面不变性
    • 2、主要表现
      • 1)平移不变性
      • 2)尺度不变性
      • 3)旋转不变性
    • 3、传统神经网络
      • 1)数据预处理
      • 2)特征提取
      • 3)搭建神经网络模型
      • 4)模型训练
      • 5)模型评估和预测
      • 6)缺点
    • 4、卷积神经网络
      • 1)如果存在稍微的变形,计算机能识别出来么?
      • 2)什么是卷积?
      • 3) 卷积层
      • 5)卷积操作存在的问题:
  • 三、卷积神经网络原理
    • 1、图片经过卷积核处理
    • 2、卷积神经网络系统
    • 3、卷积层计算结果
    • 4、池化层Pooling
      • 1)池化层的作用
      • 2) 常见的池化方法
      • 3)池化层操作方法
      • 4)最大池化的原理
    • 5、全连接层
    • 6、感受野
      • 1)例子
    • 7、卷积神经网络的多种模型


一、CNN图像原理

1、了解CNN如何处理图像

图像在计算机中是一堆按顺序排列的数字,数值为0到255。0表示最暗,255表示最亮,每个数字代表像素点的亮度或颜色值。这些数字矩阵被输入到神经网络中进行处理和学习。神经网络由多个层组成,每一层都包含一些神经元,这些神经元通过学习从输入数据中提取特征。
在这里插入图片描述
上图是只有黑白颜色的灰度图,而更普遍的图片表达方式是RGB颜色模型,即红、绿、蓝三原色的色光以不同的比例相加,以产生多种多样的色光。RGB颜色模型中,单个矩阵就扩展成了有序排列的三个矩阵,也可以用三维张量去理解。
其中的每一个矩阵又叫这个图片的一个channel(通道),宽, 高, 深来描述。
在这里插入图片描述

二、CNN图像识别

1、画面不变性

一个物体不管在画面左侧还是右侧,都会被识别为同一物体,这一特点就是不变性。
我们的目的就是希望所建立的网络可以尽可能的满足这些不变性特点。

在这里插入图片描述

2、主要表现

1)平移不变性

CNN对于图像中物体的平移(即位置的改变)具有一定的不变性。即使物体在图像中移动了一些,CNN仍然能够正确地识别它。这是因为CNN中的卷积层对输入图像的局部区域进行特征提取,并且在后续的池化层中进行降采样,所以即使物体移动了一点,某些特征仍然能够被正确检测到。

2)尺度不变性

CNN对于图像中物体的尺度(即大小的改变)具有一定的不变性。即使物体的大小发生变化,CNN仍然能够正确地识别它。这是因为在卷积层中使用的滤波器是局部感知场,可以检测到物体的不同尺度的特征。

3)旋转不变性

CNN对于图像中物体的旋转具有一定的不变性。即使物体发生了旋转,CNN仍然能够正确地识别它。这是因为卷积层中的滤波器能够检测到旋转不变的特征,例如边缘和纹理。

3、传统神经网络

在这里插入图片描述

1)数据预处理

首先,将图像数据进行预处理,包括缩放、裁剪、归一化等操作。这些操作有助于提高模型的鲁棒性和减少计算负担。

2)特征提取

将预处理后的图像数据转化为向量形式。通常使用特征提取方法,如边缘检测、颜色分布等,将图像转化为有意义的特征向量。这些特征向量可以直接作为输入数据供神经网络处理。

3)搭建神经网络模型

定义一个前馈神经网络模型。前馈神经网络由输入层、隐藏层和输出层组成。隐藏层可以包含多个层,每个层包含多个神经元。每个神经元通过权重和激活函数将上一层的输出传递给下一层。

4)模型训练

使用带有标记的训练数据集对神经网络模型进行训练。在训练过程中,通过反向传播算法计算模型参数的梯度,并使用优化算法(如随机梯度下降)更新模型参数,以使模型能够更好地拟合训练数据。

5)模型评估和预测

使用带有标记的测试数据集对训练好的模型进行评估。通过计算模型在测试数据上的准确率、精确率、召回率等指标,可以评估模型的性能和泛化能力。对于新的未知图像,将其输入训练好的模型中,通过前向传播算法计算模型的输出。输出通常是一个概率分布,表示图像属于各个类别的概率。可以选择概率最高的类别作为图像的分类结果。

6)缺点

传统神经网络在图像识别任务上的性能可能相对较弱,因为它往往难以自动地提取和学习到更高级别、更抽象的特征表示。
最好的解决办法就是用大量物体位于不同位置的数据训练,同时增加网络的隐藏层个数从而扩大网络学习这些变体的能力。

4、卷积神经网络

1)如果存在稍微的变形,计算机能识别出来么?

在这里插入图片描述
有上述一个标准的X图片(左侧),如何才能识别略微变形的图片X(右侧),此时可以利用一个卷积核来不停地扫描整幅原始图片中的部分内容,将图片一块一块的取出,得到原始图片的数据信息,然后再将待测试的图片以同样的方式取出,比对两幅图像中的构造来判断结果,例如下图所示:
在这里插入图片描述

2)什么是卷积?

对图像(不同的数据窗口数据)和卷积核(一组固定的权重:因为每个神经元的多个权重固定,所以又可以看做一个恒定的滤波器filter)做内积(逐个元素相乘再求和)的操作就是所谓的【卷积】操作,也是卷积神经网络的名字来源。
在这里插入图片描述
首先,将这个卷积核顺序对应图片的每一个位置,将然后使其进行点乘,将相乘的结果求和得到一个值即为卷积后图片的像素点的像素值,最终内积完得到一个结果叫特征图。

3) 卷积层

对于一张彩色图像,其由三个通道的颜色构成,所以对其进行卷积操作的时候也是需要使用一个卷积核分别对每个通道的图片进行内积操作,每张图片中的一个部位和卷积核相乘后求和得到一个值,然后再将三个通道相乘得到的值相加即可得到卷积后的单个像素值,如下所示:
在这里插入图片描述
卷积层需要更多的卷积核来获取特征,使用同样的操作,再次得到一个新的卷积,多个卷积核做内积后得到多个结果即可表示为该图片的多个特征,即为多个特征图。
在这里插入图片描述

5)卷积操作存在的问题:

a. 步长stride:卷积核每次滑动的位置步长。

b. 卷积核的个数:决定输出的depth厚度。同时代表卷积核的个数。

c. 填充值zero-padding:在外围边缘补充若干圈0,方便从初始位置以步长为单位可以刚好滑倒末尾位置,通俗地讲就是为了总长能被步长整除。
在这里插入图片描述

三、卷积神经网络原理

1、图片经过卷积核处理

在这里插入图片描述
和人眼相似,看物体先看轮廓

2、卷积神经网络系统

CNN的系统结构包括多个层级,一般包括输入层卷积层池化层全连接层输出层
在这里插入图片描述
在这里插入图片描述

  • 输入层:接收原始图像作为输入。
  • 卷积层:通过应用卷积核对输入图像进行卷积操作,提取图像的特征。每个卷积层可以包含多个卷积核,每个卷积核负责提取不同的特征。
  • 激活函数层:通过应用非线性的激活函数(如ReLU)来引入非线性变换,增强网络的表达能力。
  • 池化层:通过减少空间维度,降低特征图的大小,同时保留主要的特征。常用的池化操作包括最大池化和平均池化。
  • 全连接层:将池化层的输出连接到一个或多个全连接层,进行全局特征关联,提取更高级别的特征。
  • 输出层:最后一个全连接层通常是一个softmax层,用于输出模型的预测结果。

通过反向传播算法,CNN可以从标记的训练数据中学习到最优的网络参数,以便能够准确地识别和分类图像。

3、卷积层计算结果

在这里插入图片描述
例如输入数据为32323的图像,用10个553的卷积核来进行操作,步长为1,边界0填充为2,结果为?
(32-5+22)/1 +1 =32,输出规模为3232*10的特征图。

4、池化层Pooling

1)池化层的作用

一种降采样,减小数据的空间大小,因此参数的数量和计算量也会下降,这在一定程度上也控制了过拟合。

2) 常见的池化方法

最大池化、平均池化、全局平均池化、全局最大池化。
平均池化(average pooling):计算图像区域的平均值作为该区域池化后的值。
最大池化(max pooling):选图像区域的最大值作为该区域池化后的值。是最为常见的。
通常来说,CNN的卷积层之间都会周期性地插入池化层。

3)池化层操作方法

与卷积层类似,池化层运算符由一个固定形状的窗口组成,该窗口根据其步幅大小在输入的所有区域上滑动,为固定形状窗口(有时称为 池化窗口)遍历的每个位置计算一个输出。 然而,不同于卷积层中的输入与卷积核之间的互相关计算,池化层不包含参数。
在这里插入图片描述
如图由44 —> 22

4)最大池化的原理

在这里插入图片描述
最大池化的主要功能是压缩,却不会损坏识别结果。 这意味着卷积后的特征图中有对于识别物体不必要的冗余信息。 那么我们就反过来思考,这些“冗余”信息是如何产生的。

5、全连接层

当抓取到足以用来识别图片的特征后,接下来的就是如何进行分类。 全连接层(也叫前馈层)就可以用来将最后的输出映射到线性可分的空间。 通常卷积网络的最后会将末端得到的长方体平摊(flatten)成一个长长的向量,并送入全连接层配合输出层进行分类。
在这里插入图片描述

6、感受野

感受野(Receptive Field) 是深度学习(尤其是计算机视觉任务)中的一个核心概念,用于描述神经网络中某一层特征图(Feature Map)上的一个像素点,能够“看到”输入图像中的多大区域。简单来说,它反映了网络对输入图像不同位置的感知范围。
在这里插入图片描述

1)例子

两层33的卷积核卷积操作之后的感受野是5 * 5,其中卷积核(filter)的步长(stride)为1、padding为0,如图:
在这里插入图片描述
由此可见,两层3
3卷积核操作之后的感受野是5* 5。

三层3 * 3卷积核操作之后的感受野是7 * 7,其中卷积核的步长为1,padding为0,如图:
在这里插入图片描述
由此可见,三层3* 3卷积核操作之后的感受野是7* 7

7、卷积神经网络的多种模型

  • LeNet:第一个成功的卷积神经网络应用
  • AlexNet:类似LeNet,但更深更大。使用了层叠的卷积层来抓取特征(通常是一个卷积层马上一个max pooling层)
  • ZF Net:增加了中间卷积层的尺寸,让第一层的stride和filter size更小。
  • GoogLeNet:减少parameters数量,最后一层用maxpooling层代替了全连接层,更重要的是Inception-v4模块的使用。
  • VGGNet:只使用3x3 卷积层和2x2 pooling层从头到尾堆叠。
  • ResNet:引入了跨层连接和batch normalization。
  • DenseNet:将跨层连接从头进行到尾。

相关文章:

  • 功能性高斯泼溅扩散——DiffGS: Functional Gaussian Splatting Diffusion
  • yolov8的数据处理lableimg的安装以及使用
  • 【更新完毕】2025华中杯C题数学建模网络挑战赛思路代码文章教学数学建模思路:就业状态分析与预测
  • Python 赋能区块链教育:打造去中心化学习平台
  • 一些C语言常用函数(后续会继续更新)
  • 力扣刷题Day 21:两数之和(1)
  • day28 学习笔记
  • 面试题之如何设计一个秒杀系统?
  • LRU Java实现
  • 移动自动化测试-appium
  • jQuery — 动画和事件
  • kimi+deepseek制作PPT
  • 【java实现+4种变体完整例子】排序算法中【桶排序】的详细解析,包含基础实现、常见变体的完整代码示例,以及各变体的对比表格
  • spring-batch批处理框架(2)
  • 已注册商标如何防止被不使用撤销!
  • UDS中功能寻址可以请求多帧数据嘛?当ECU响应首帧后,诊断仪是通过物理寻址发送流控帧嘛?
  • 如何给云开发生成的智能体增加权限判断
  • 【排队论】Probabilistic Forecasts of Bike-Sharing Systems for Journey Planning
  • NestJS——使用TypeORM连接MySQL数据库(Docker拉取镜像、多环境适配)
  • 文献×材料 | 基于ANSYS的刹车片环保材料分析研究
  • 国家税务总局镇江市税务局原纪检组组长朱永凯接受审查调查
  • 谁在贩卖个人信息?教培机构信息失守,电商平台“订单解密”
  • 世界读书日|南京图书馆开了首个网络文学主题阅读空间
  • 吕治国执掌全国唯一的热带海洋大学,曾从教育部“空降”海南
  • 北理工再通报:开除宫某党籍,免去行政职务,解除聘用关系
  • 明查|俄罗斯征兵部门突袭澡堂抓捕壮丁?