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

深度学习之第四课卷积神经网络CNN(一)

目录

简介:

一、CNN 基础

二、卷积层

1.什么是卷积

2.卷积相关概念

三、池化层

1.池化层的作用

2.最大池化

四、全连接层

五、感受野

六、卷积神经网络的构造


简介:

        在深度学习的知识版图中,卷积神经网络(CNN)无疑是计算机视觉领域的 “核心引擎”。经过上一课对 CNN 基本概念的初步铺垫,本节课(一)将进一步带领大家 “拆解” CNN 的核心架构,从原理本质到实际应用,逐步揭开它为何能在图像识别、目标检测等任务中 “大显身手” 的秘密。相较于传统神经网络处理图像时存在的参数冗余、空间信息丢失等问题,CNN 通过卷积操作池化操作两大核心机制,实现了对图像局部特征的高效提取与维度压缩。在这篇博客中,我们会先从 “卷积核的作用原理” 讲起 —— 用通俗的比喻解释卷积核如何像 “放大镜” 一样扫描图像,捕捉边缘、纹理等基础特征;再深入剖析感受野的概念,让大家明白不同层级的神经元如何协同作用,构建从局部到全局的特征映射。

        同时,为了避免纯理论的枯燥,我还会在下一篇博客结合具体案例展开:比如通过对比 “传统全连接网络” 与 “CNN” 处理 MNIST 手写数字数据集的参数数量差异,直观展示 CNN 在降低计算复杂度上的优势;再以简单的灰度图像卷积过程为例,用动态示意图呈现卷积操作的每一步计算细节,帮助大家突破公式理解的难点。

一、CNN 基础

图像在计算机中的表达与核心挑战

        要理解 CNN,首先得明白图像在计算机中的呈现方式。在计算机里,图像并非我们肉眼看到的色彩和形状,而是一堆按顺序排列的数字。对于黑白的灰度图,每个像素的数值范围在 0 到 255 之间,0 代表最暗,255 代表最亮。而我们日常生活中更常见的彩色图片,通常采用 RGB 颜色模型,即通过红、绿、蓝三原色的色光以不同比例相加产生各种颜色。在这种模型下,单个图像矩阵会扩展成有序排列的三个矩阵,也可以用三维张量来理解,其中每一个矩阵被称为图像的一个 “通道(channel)”,我们可以用宽、高、深三个维度来描述图像。

        在图像识别任务中,CNN 面临着一个核心挑战 —— 实现画面不变性。这意味着无论物体在图像的左侧还是右侧、无论物体发生旋转或视角变化、无论物体大小改变,甚至在不同光照条件下,CNN 都能将其识别为同一物体。传统神经网络在应对这些问题时显得力不从心,它会将图像的像素逐个摊开作为输入,一旦物体位置、大小等发生变化,输入数据的排列顺序就会改变,导致网络无法准确识别。为了解决这个问题,传统方法往往需要用大量物体位于不同位置、不同状态的数据进行训练,同时增加网络隐藏层个数,但这会带来巨大的计算成本和过拟合风险。而 CNN 的出现,正是为了更高效、更精准地解决这些图像识别难题。

        传统神经网络解决办法是:用大量物体位于不同位置的数据训练,同时增加网络的隐藏层个数从而扩大网络学习这些变体的能力。

        CNN 的核心结构主要由卷积层、池化层和全连接层三部分组成,这三层各司其职,共同完成从图像特征提取到最终分类的过程。

二、卷积层

1.什么是卷积

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

        上图这个绿色小窗就是数据窗口。简而言之,卷积操作就是用一个可移动的小窗口来提取图像中的特征,这个小窗口包含了一组特定的权重,通过与图像的不同位置进行卷积操作,网络能够学习并捕捉到不同特征的信息。文字解释可能太难懂,下面直接上动图:

        这张图中蓝色的框就是指一个数据窗口,红色框为卷积核(滤波器),最后得到的绿色方形就是卷积的结果(数据窗口中的数据与卷积核逐个元素相乘再求和)

2.卷积相关概念

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

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

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

 数据窗口每次移动两个步长取3*3的局部数据,即stride=2。  两组神经元(卷积核),即depth=2,意味着有两个滤波器。 zero-padding=1。

卷积层计算的结果

        例如输入数据为32*32*3的图像,用10个5*5*3的卷积核来进行操作,步长为1,边界0填充为2,最终输出结果为?

        (32-5+2*2)/1 +1 =32,输出规模为32*32*10的特征图

三、池化层

1.池化层的作用

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

常见的池化层:

最大池化、平均池化、全局平均池化、全局最大池化。

平均池化(average pooling):计算图像区域的平均值作为该区域池化后的值。

最大池化(max pooling):选图像区域的最大值作为该区域池化后的值。是最为常见的。

通常来说,CNN的卷积层之间都会周期性地插入池化层。

池化层操作方法:

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

2.最大池化

        Max pooling的主要功能是压缩,却不会损坏识别结果。 这意味着卷积后的Feature Map中有对于识别物体不必要的冗余信息。 那么我们就反过来思考,这些“冗余”信息是如何产生的。

四、全连接层

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

五、感受野

        例如图片是3通道: 卷积核为7*7的,则卷积核所需要的参数个数为:7*7=49个

        卷积核为3个3*3的,则卷积核所需要的参数个数为:(3*3*3) =27

一张250*250的图片和一张500*500的图片,卷积层的权重参数数谁多?当然卷积层的权重参数跟图片大小是没有关系的,是跟卷积核相关的

六、卷积神经网络的构造

1 输入层
输入层接收原始图像数据。图像通常由三个颜色通道(红、绿、蓝)组成,形成一个二维矩阵,表示像素的强度值。

2 卷积和激活
卷积层将输入图像与卷积核进行卷积操作。然后,通过应用激活函数(如ReLU)来引入非线性。这一步使网络能够学习复杂的特征。

3 池化层
池化层通过减小特征图的大小来减少计算复杂性。它通过选择池化窗口内的最大值或平均值来实现。这有助于提取最重要的特征。

4 多层堆叠
CNN通常由多个卷积和池化层的堆叠组成,以逐渐提取更高级别的特征。深层次的特征可以表示更复杂的模式。

5 全连接和输出
最后,全连接层将提取的特征映射转化为网络的最终输出。这可以是一个分类标签、回归值或其他任务的结果。

最后图片精通卷积核处理后的样子如下:

以下是几个比较有名的卷积神经网络结构

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

相关文章:

  • 不卡顿、不掉线!稳定可靠的体育赛事直播系统源码解析
  • 【Chrome】更新后白屏无法显示问题
  • 【力扣】面试经典150题总结04-区间/栈
  • python 自学笔记13 numpy数组规整
  • 智能驾驶机器学习知识总结
  • 越过千万生死线,鸿蒙直面商业化考验
  • ME_INFORECORD_MAINTAIN_MULTI,创建采购单信息记录,报错ME 816 系统错误(方法PROCESS_CONDITION中错误)
  • Feign 调用为服务报 `HardCodedTarget(type=xxxClient, name=xxxfile, url=http://file)`异常
  • 关于C#中运算符的简单说明
  • 为什么的中小企业很难承受“大型系统”的成本
  • 【RAGFlow代码详解-10】文本处理和查询处理
  • 深度学习(五):正则化:约束模型的复杂度
  • 什么样的 IP 能穿越周期,持续被用户买单?​
  • 深入解析交换机端口安全:Sticky MAC的工作原理与应用实践
  • 自动化测试概念与 Web 自动化实战(基于 Selenium)
  • 第一篇:MySQL安装部署全攻略
  • 计算机毕业设计 java 养老院管理系统 基于 Java 的养老院管理平台 Java 开发的养老服务系统
  • Linux云计算运维简明教程02 应用运维
  • 视频合成素材视频-多合一功能-青柠剪吧
  • 智能手机使用(2015-2019)
  • 基于MATLAB的运动模糊图像修复方法研究(LW+源码+讲解+部署)
  • vue2+elementui 表格单元格增加背景色,根据每列数据的大小 颜色依次变浅显示
  • 科研笔记:SCI论文中的功能性图表
  • 【技术教程】如何将文档编辑器集成到用 .Net 编写的网络应用程序中
  • VScode,设置自动保存
  • 支持向量机学习
  • Ubuntu22.04 安装和使用标注工具labelImg
  • GZ-CTF平台pwn题目部署
  • GitHub 热榜项目 - 日榜(2025-08-26)
  • word批量修改交叉引用颜色