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

【超详细】卷积神经网络CNN基本架构以及工作原理详解

《------往期经典推荐------》

一、AI应用软件开发实战专栏【链接】

项目名称项目名称
1.【人脸识别与管理系统开发】2.【车牌识别与自动收费管理系统开发】
3.【手势识别系统开发】4.【人脸面部活体检测系统开发】
5.【图片风格快速迁移软件开发】6.【人脸表表情识别系统】
7.【YOLOv8多目标识别与自动标注软件开发】8.【基于YOLOv8深度学习的行人跌倒检测系统】
9.【基于YOLOv8深度学习的PCB板缺陷检测系统】10.【基于YOLOv8深度学习的生活垃圾分类目标检测系统】
11.【基于YOLOv8深度学习的安全帽目标检测系统】12.【基于YOLOv8深度学习的120种犬类检测与识别系统】
13.【基于YOLOv8深度学习的路面坑洞检测系统】14.【基于YOLOv8深度学习的火焰烟雾检测系统】
15.【基于YOLOv8深度学习的钢材表面缺陷检测系统】16.【基于YOLOv8深度学习的舰船目标分类检测系统】
17.【基于YOLOv8深度学习的西红柿成熟度检测系统】18.【基于YOLOv8深度学习的血细胞检测与计数系统】
19.【基于YOLOv8深度学习的吸烟/抽烟行为检测系统】20.【基于YOLOv8深度学习的水稻害虫检测与识别系统】
21.【基于YOLOv8深度学习的高精度车辆行人检测与计数系统】22.【基于YOLOv8深度学习的路面标志线检测与识别系统】
23.【基于YOLOv8深度学习的智能小麦害虫检测识别系统】24.【基于YOLOv8深度学习的智能玉米害虫检测识别系统】
25.【基于YOLOv8深度学习的200种鸟类智能检测与识别系统】26.【基于YOLOv8深度学习的45种交通标志智能检测与识别系统】
27.【基于YOLOv8深度学习的人脸面部表情识别系统】28.【基于YOLOv8深度学习的苹果叶片病害智能诊断系统】
29.【基于YOLOv8深度学习的智能肺炎诊断系统】30.【基于YOLOv8深度学习的葡萄簇目标检测系统】
31.【基于YOLOv8深度学习的100种中草药智能识别系统】32.【基于YOLOv8深度学习的102种花卉智能识别系统】
33.【基于YOLOv8深度学习的100种蝴蝶智能识别系统】34.【基于YOLOv8深度学习的水稻叶片病害智能诊断系统】
35.【基于YOLOv8与ByteTrack的车辆行人多目标检测与追踪系统】36.【基于YOLOv8深度学习的智能草莓病害检测与分割系统】
37.【基于YOLOv8深度学习的复杂场景下船舶目标检测系统】38.【基于YOLOv8深度学习的农作物幼苗与杂草检测系统】
39.【基于YOLOv8深度学习的智能道路裂缝检测与分析系统】40.【基于YOLOv8深度学习的葡萄病害智能诊断与防治系统】
41.【基于YOLOv8深度学习的遥感地理空间物体检测系统】42.【基于YOLOv8深度学习的无人机视角地面物体检测系统】
43.【基于YOLOv8深度学习的木薯病害智能诊断与防治系统】44.【基于YOLOv8深度学习的野外火焰烟雾检测系统】
45.【基于YOLOv8深度学习的脑肿瘤智能检测系统】46.【基于YOLOv8深度学习的玉米叶片病害智能诊断与防治系统】
47.【基于YOLOv8深度学习的橙子病害智能诊断与防治系统】48.【基于深度学习的车辆检测追踪与流量计数系统】
49.【基于深度学习的行人检测追踪与双向流量计数系统】50.【基于深度学习的反光衣检测与预警系统】
51.【基于深度学习的危险区域人员闯入检测与报警系统】52.【基于深度学习的高密度人脸智能检测与统计系统】
53.【基于深度学习的CT扫描图像肾结石智能检测系统】54.【基于深度学习的水果智能检测系统】
55.【基于深度学习的水果质量好坏智能检测系统】56.【基于深度学习的蔬菜目标检测与识别系统】
57.【基于深度学习的非机动车驾驶员头盔检测系统】58.【太基于深度学习的阳能电池板检测与分析系统】
59.【基于深度学习的工业螺栓螺母检测】60.【基于深度学习的金属焊缝缺陷检测系统】
61.【基于深度学习的链条缺陷检测与识别系统】62.【基于深度学习的交通信号灯检测识别】
63.【基于深度学习的草莓成熟度检测与识别系统】64.【基于深度学习的水下海生物检测识别系统】
65.【基于深度学习的道路交通事故检测识别系统】66.【基于深度学习的安检X光危险品检测与识别系统】
67.【基于深度学习的农作物类别检测与识别系统】68.【基于深度学习的危险驾驶行为检测识别系统】
69.【基于深度学习的维修工具检测识别系统】70.【基于深度学习的维修工具检测识别系统】
71.【基于深度学习的建筑墙面损伤检测系统】72.【基于深度学习的煤矿传送带异物检测系统】
73.【基于深度学习的老鼠智能检测系统】

二、机器学习实战专栏【链接】,已更新31期,欢迎关注,持续更新中~~
三、深度学习【Pytorch】专栏【链接】
四、【Stable Diffusion绘画系列】专栏【链接】
五、YOLOv8改进专栏【链接】持续更新中~~
六、YOLO性能对比专栏【链接】,持续更新中~

《------正文------》

目录

  • 引言
  • CNN简介
  • CNN架构的关键组件
    • 1.输入层
    • 2.卷积层
    • 3.激活函数(ReLU)
    • 4.池化层(下采样)
    • 5.全连接层(密集层)
    • 6.输出层
  • 高阶CNN层
  • CNN如何训练
    • 🔹CNN中的反向传播
    • 🔹损失函数的梯度:
    • 🔹反向传播过程可以分解如下:
    • 🔹CNN中的优化器
  • 反向传播和优化器如何协同工作
  • 示例CNN架构:LeNet-5
  • 现代CNN架构

引言

在这里插入图片描述

卷积神经网络(CNN)是一类专门为涉及图像和空间数据的任务而设计的深度学习模型,例如图像识别,分类,分割等。CNN的架构受到人类视觉系统的启发,具有自动从数据中学习特征的层。本文将详细介绍CNN的基本架构。

CNN简介

CNN旨在利用图像中的空间结构,使其成为图像相关任务的强大工具。

它们通过对输入数据应用一系列过滤器(内核)来提取重要特征,如边缘、纹理和模式。

CNN架构的关键组件

CNN通常由以下类型的层组成:

  • 输入层
  • 卷积层
  • 激活层
  • 池化层
  • 全连接层(密集层)
  • 输出层

1.输入层

形状: 输入层表示将通过网络传递的数据。对于图像分类,这可以是具有3个颜色通道(RGB)的2D图像(高度x宽度)。对于大小为32 x32 x3的图像,输入形状将是**(32,32,3)**

2.卷积层

卷积层将一组滤波器(也称为内核)应用于输入图像。这些过滤器在图像上滑动(卷积)以产生特征图,这些特征图用于检测输入图像中的特定特征。

过滤器/核: 这些是小权重矩阵(例如,3x 3或5x 5),其从图像提取局部特征。当内核在图像上移动时,它会计算内核和它当前所在的图像部分之间的点积。

步幅: 步幅控制滤镜在图像上移动时的步长。步幅为1表示过滤器一次移动一个像素,步幅为2表示过滤器一次移动两个像素。

填充: 填充在图像周围添加额外的像素(通常为零),以保留卷积后的空间维度。有两种类型:

有效填充: 无填充,导致输出较小。

Padding: 添加Padding以保持输出大小与输入大小相同。

🔹数学概念

应用于输入图像*I*的大小为(m,m)的滤波器F*导致产生输出特征图O***的卷积运算。

在这里插入图片描述

3.激活函数(ReLU)

在每个卷积操作之后,应用激活函数以将非线性引入模型中。CNN中最常用的激活函数是ReLU(Rectified Linear Unit)

它将特征图中的所有负值替换为零,并保持正值不变。

在这里插入图片描述

这有助于模型通过引入非线性来学习更复杂的模式。

4.池化层(下采样)

池化层用于减少特征图的空间维度(高度和宽度),使网络的计算效率更高,更不容易过拟合。

  • 最大池化: 从特征映射的区域中获取最大值。
  • Average Pooling: 从特征映射的区域中获取平均值。

例如,应用2x2最大池化操作将通过从每个2x2区域中选择最大值来将4x4特征图减少为2x2特征图。

在这里插入图片描述

5.全连接层(密集层)

在卷积层和池化层之后,输出的特征图通常被展平为1D向量。然后,该向量通过一个或多个完全连接的层,其中每个节点连接到前一层中的每个节点。

  • 这些层通过组合卷积层学习的特征来执行分类。
  • 最后的全连接层对应于分类任务中的类别数量。

6.输出层

输出层表示CNN计算的最终结果。对于分类任务,输出层通常使用softmax激活函数来提供每个类别的概率。

在这里插入图片描述

其中z是i的得分,输出是类的概率分布。

高阶CNN层

除了标准层,还有一些用于特定情况的高级CNN层:

批量归一化: 这一层将输入归一化到下一层,使其具有零均值和单位方差。这有助于稳定和加快训练。

Dropout层: Dropout是一种正则化技术,用于通过在训练过程中随机丢弃神经元来防止过拟合。

残差连接: 在更深的网络中(例如,ResNet),残差连接用于帮助模型避免梯度消失问题,允许梯度在反向传播期间直接流过跳过连接。

CNN如何训练

CNN使用反向传播进行训练,其中预测输出和真实标签之间的误差通过网络反向传播,以使用优化算法(例如,梯度下降)。

🔹CNN中的反向传播

反向传播是一种用于训练CNN的算法,它根据预测输出和真实输出之间的误差更新网络的权重。目标是使用梯度下降或其他优化技术来最小化损失函数。

前向传递: 在前向传递过程中,输入图像通过CNN层(卷积层,激活函数,池化层和全连接层)。结果是一个预测,将其与真实标签进行比较。

Loss计算:在向前传递之后,使用loss函数计算预测输出和实际标签之间的差异。对于分类任务,通常使用交叉熵损失

在这里插入图片描述

反向传递(Backpropagation):在反向传递中,我们计算损失函数相对于网络权重的梯度(导数)。这涉及到应用微积分的链式规则将错误从输出层通过网络传播回来,调整卷积层和全连接层的权重。

🔹损失函数的梯度:

梯度告诉我们网络中每个权重对误差的贡献有多大。它是逐层计算的,从输出层开始,向后移动到输入层。

对于网络中的一个权重*w*,梯度[*RightLoss/Rightw*]表示如何改变权重以减少误差。该梯度是针对网络中的每个权重、偏置和过滤器计算的。

🔹反向传播过程可以分解如下:

计算**输出层的损耗:**基于输出计算损耗(例如,用于分类的交叉熵)。计算损失相对于输出激活的梯度。

**通过层反向传播梯度:**对于每一层,损失的梯度向后传播。链式规则被应用于计算卷积层、激活层、池化层等中的权重梯度。

更新权重:在计算梯度之后,使用梯度下降等优化算法(下面将详细介绍)基于梯度更新权重。

🔹CNN中的优化器

优化器是一种通过在反向传播过程中调整权重来最小化损失函数的方法。

它确定如何使用反向传播期间计算的梯度来更新网络中的权重和偏差。

有几种类型的优化器,每种都有独特的更新权重的策略。

梯度下降: 优化的基本形式是梯度下降。在梯度下降中,权重在损失函数的梯度的相反方向上更新,以最小化误差。基本梯度下降更新规则:

在这里插入图片描述

在这里,

  • W_new是𝓌更新后的,
  • W_old是当前的权重,
  • η学习率(小标量值),
  • Δ Loss/Δ Ww是损失相对于重量的梯度。

学习率η控制我们在梯度方向上迈出的一步。高学习率会导致模型超过最优解,而低学习率会使训练变慢。

随机梯度下降(SGD): 在随机梯度下降(SGD)中,不是使用整个数据集来计算梯度,而是使用数据的随机子集(小批量)来估计梯度。这使得SGD更快,更高效,特别是在处理大型数据集时。

小批量梯度下降:

  • 数据集被分成小批。
  • 模型参数在每个小批处理之后更新,而不是在处理整个数据集之后更新。

Momentum: Momentum是一种用于加速梯度下降的技术,通过将先前权重更新的一小部分添加到当前更新。它有助于优化器更快地向正确的方向移动,避免振荡。动量更新规则:

在这里插入图片描述

在这里,

  • v是速度(梯度的连续和),
  • β是动量因子(通常在0和1之间)。

Adam优化器:Adam优化器(自适应矩估计的缩写)结合了MomentumRMSProp(均方根传播)的优点。它根据梯度的一阶矩和二阶矩(均值和方差)调整学习率。Adam是最受欢迎的优化器之一,因为它单独调整每个参数的学习率,这有助于更快的收敛。Adam更新规则:

在这里插入图片描述

Adam根据梯度的均值和方差调整学习率,使其对许多类型的神经网络非常有效。

RMSProp: RMSProp(均方根传播)是一个优化器,它根据平方梯度的移动平均值调整学习率。它和亚当类似,但没有用到动量项. RMSProp更新规则:

在这里插入图片描述

在这里,

  • *E[g²]*是梯度平方的移动平均值,
  • β是衰减因子(通常接近1)。

反向传播和优化器如何协同工作

以下是他们如何在训练CNN的背景下一起工作:

前馈:输入数据通过CNN层进行预测。通过将预测输出与实际标签进行比较来计算损失。

反向传播(Backpropagation): 通过网络反向传播误差来计算反向传播。梯度指示应如何调整每个权重以使误差最小化。

优化器: 优化器(例如,Adam,SGD)使用这些梯度通过在减少损失的方向上调整权重来更新权重。优化器可能会根据梯度调整学习率,以帮助模型更快地收敛。

重复:向前和向后传递重复几次迭代(epoch),直到模型收敛,这意味着损失停止减少或达到令人满意的值。

示例CNN架构:LeNet-5

最早成功的CNN架构之一是LeNet-5,由Yann LeCun于1998年开发,用于数字识别(MNIST)。

  • 输入: 32 x32灰度图像
  • 第1层(卷积): 6个大小为5x 5的过滤器,然后是ReLU
  • 第2层(池化): 使用2x2过滤器的最大池化
  • 第3层(卷积): 16个大小为5x 5的滤波器
  • 第4层(池化): 使用2x2过滤器的最大池化
  • 第5层(完全连接): 120
  • 第6层(完全连接): 84
  • 输出: 10个分类类别(数字0-9)

现代CNN架构

AlexNet: AlexNet于2012年推出,性能显著优于传统机器学习技术,并使用了ReLU、dropout和GPU加速等技术。

VGGNet: 以其简单的架构和深层和小过滤器(3x3)而闻名。

ResNet: 使用剩余连接来允许非常深的网络(高达1000+层),而不会遭受消失梯度。

Inception:使用不同过滤器大小的混合方法并行捕获不同尺度的特征。

CNN是处理图像和空间数据的最强大和最广泛使用的深度学习模型之一。该架构包括卷积层、激活函数、池化和全连接层,允许模型自动学习分层特征,使其有效地用于图像识别和分类等任务。了解基本组件以及它们如何协同工作对于构建和优化各种应用的CNN至关重要。


在这里插入图片描述

好了,这篇文章就介绍到这里,喜欢的小伙伴感谢给点个赞和关注,更多精彩内容持续更新~~
关于本篇文章大家有任何建议或意见,欢迎在评论区留言交流!


http://www.kler.cn/a/408805.html

相关文章:

  • 冒泡排序(Java)
  • web前端开发--动画效果
  • macOS安装nvm node
  • apache、iis屏蔽限制ip访问(适用虚拟主机)
  • 开源宝藏:Smart-Admin 重复提交防护的 AOP 切面实现详解
  • Spring Boot OA:企业办公自动化的高效路径
  • YB2503HV:高效率降压IC,助力电动车、太阳能设备等领域的能源转换
  • CFD平台如何接入实时行情源
  • 实时数据开发 | 怎么通俗理解Flink容错机制,提到的checkpoint、barrier、Savepoint、sink都是什么
  • Redis入门(六)
  • 【电路设计】基于CD4511的八路抢答器电路解析
  • Kimi模型调用联动前端简单交互页面
  • Spring Boot教程之八:Spring Boot执行器(Actuator)
  • NoteExpress导入知网论文无法智能更新题录的处理方法
  • 修改docker0默认IP地址
  • 字节青训营开课啦
  • 华为昇腾 acl_pytorch
  • js+jqeury纯前端实现像素鸟小游戏
  • 基于卡尔曼滤波器的 PID 控制
  • matlab蜗轮蜗杆设计优化问题
  • Docker 容器的初始化设置
  • 抓包工具Wireshark
  • PL/I语言的起源?Objective C语言起源哪里?JavaScript的起源?Java的起源?B语言的起源?C++语言的起源?C#的起源?
  • 麦肯锡报告 | 科技落地的真谛:超越技术本身的价值创造
  • ue5第三人称闯关游戏学习(一)
  • Axios案例练习