卷积神经网络的入门基本介绍 | 带你快速上手各种概念【附图解】

文章目录

  • 1、简介
  • 2、核心概念
  • 3、关键操作
  • 4、常见架构
  • 5、训练过程
  • 6、重要概念图解⭐
    • 6.1、卷积神经网络工作⭐
    • 6.2、卷积核
    • 6.3、全连接与卷积网络的对比
    • 6.4、池化层
    • 6.5、感受野和卷积堆叠
    • 6.6、神经元计算和激活函数
  • 7、卷积网络可以改进的地方
  • 8、结论

🍃作者介绍:双非本科大三网络工程专业在读,阿里云专家博主,专注于Java领域学习,擅长web应用开发、数据结构和算法,初步涉猎人工智能和前端开发。
🦅个人主页:@逐梦苍穹
📕所属专栏:人工智能
🌻gitee地址:xzl的人工智能代码仓库
✈ 您的一键三连,是我创作的最大动力🌹

1、简介

卷积神经网络(Convolutional Neural Network, CNN)理论知识

卷积神经网络(Convolutional Neural Network,简称CNN)是一种专门用于处理数据具有网格拓扑(如图像)的深度神经网络。
CNN广泛应用于计算机视觉任务,如图像分类、目标检测和图像分割等。

2、核心概念

  1. 卷积层(Convolutional Layer)
    • 卷积层是CNN的核心组件。它使用卷积核(或称滤波器)在输入数据上进行滑动操作,提取特征。
    • 卷积操作本质上是对局部区域进行加权和,这些权重由卷积核参数决定。
    • 卷积层可以减少参数数量,因为卷积核在输入数据上共享参数。
  2. 池化层(Pooling Layer)
    • 池化层用于减少数据的空间尺寸降低计算量防止过拟合
    • 常见的池化操作包括最大池化(Max Pooling)和平均池化(Average Pooling)。
    • 最大池化取池化窗口中的最大值,平均池化取池化窗口中的平均值。
  3. 激活函数(Activation Function)
    • 激活函数用于引入非线性,使模型可以表示更复杂的函数
    • 常用的激活函数包括ReLU(Rectified Linear Unit)、Sigmoid和Tanh。
  4. 全连接层(Fully Connected Layer)
    • 全连接层将前面层的输出展开为一维向量,并通过一个或多个线性层进行处理。
    • 全连接层通常用于分类任务的最后几层,将特征映射到类别空间。
  5. 批量归一化(Batch Normalization)
    • 批量归一化用于加速训练,稳定模型。它在每层之后对每个小批次的输出进行归一化,使其均值为0,方差为1。
  6. 正则化(Regularization)
    • 正则化技术用于防止过拟合。
    • 常用的正则化方法包括L2正则化(权重衰减)和Dropout(随机丢弃部分神经元)。

3、关键操作

  1. 卷积操作
    • 输入数据通常是一个多通道(如RGB图像有三个通道)的三维矩阵。
    • 卷积核也是一个三维矩阵,它在输入数据上进行滑动,每次计算局部区域的加权和。
    • 卷积操作的输出称为特征图(Feature Map)。
  2. 步幅(Stride)
    • 步幅是卷积核在输入数据上滑动的步长。
    • 较大的步幅可以减少特征图的尺寸。
  3. 填充(Padding)
    • 填充是在输入数据的边缘添加额外的像素,通常为零值。
    • 填充可以保持特征图的空间尺寸,使得边缘信息不丢失。

4、常见架构

  1. LeNet
    • LeNet是最早的CNN之一,最初用于手写数字识别。
    • 结构简单,包括多个卷积层、池化层和全连接层。
  2. AlexNet
    • AlexNet在ImageNet竞赛中取得了突破性的成绩,推动了深度学习的发展。
    • 采用较深的网络结构,引入了ReLU激活函数和Dropout正则化。
  3. VGGNet
    • VGGNet通过使用多个小卷积核(3x3)堆叠来增加网络深度。
    • 结构统一,便于理解和实现。
  4. ResNet
    • ResNet引入了残差连接(Residual Connections),解决了深层网络训练困难的问题。
    • 残差连接允许梯度直接通过跳跃层传播,有助于训练更深的网络。
  5. Inception
    • Inception网络通过并行的多尺度卷积核和池化操作提取特征。
    • Inception模块有效地减少了计算量和参数数量。

5、训练过程

  1. 前向传播(Forward Propagation)
    • 输入数据通过网络的每一层,逐层计算输出,直到得到最终的预测结果。
  2. 损失计算(Loss Calculation)
    • 通过损失函数计算预测结果与真实标签之间的误差。
  3. 反向传播(Backward Propagation)
    • 计算损失相对于每个参数的梯度,使用链式法则逐层传播梯度。
  4. 参数更新(Parameter Update)
    • 使用优化算法(如SGD、Adam)更新模型参数,减小损失。

6、重要概念图解⭐

6.1、卷积神经网络工作⭐

这里以输入汽车数据为例子,输入层输入数据集之后,经由卷积层、池化层、全连接层之后,到达输出层,此时经过训练,完成汽车品牌分类。
image.png
上图的卷积层

输入图片通过多个卷积核(滤波器),提取出特征图(红色矩形表示)。
卷积操作在图片的局部区域内滑动,并进行加权和运算,从而提取特征。

下图则强调了卷积操作在多尺度特征提取的作用。
卷积核(滤波器)在图片的不同局部区域滑动,提取出多种尺度的特征图
(红色和蓝色矩形表示不同尺度的特征图)
image.png
全连接层

多尺度特征图被展开成一维向量,并传递到全连接层。
全连接层对这些多尺度特征进行组合和处理(绿色矩形表示全连接层)。
图中展示了从“局部”到“整体”的特征组合过程,强调了全连接层如何整合多尺度特征进行最终的分类。

6.2、卷积核

卷积核
中间部分展示了三个不同的卷积核(滤波器):

  1. 第一个卷积核:用于提取边缘特征。具体的卷积核参数为[[1, 2, 1], [0, 0, 0], [-1, -2, -1]],这类似于Sobel算子,用于检测垂直边缘。
  2. 第二个卷积核:用于提取不同方向的边缘特征。具体的卷积核参数为[[-1, 0, 1], [-2, 0, 2], [-1, 0, 1]],这也是Sobel算子的一种,用于检测水平边缘。
  3. 第三个卷积核:用于模糊图像。具体的卷积核参数为[[0.1, 0.1, 0.1], [0.1, 0.2, 0.1], [0.1, 0.1, 0.1]],这是一个简单的模糊滤波器。

卷积结果
右边展示了通过这三个卷积核对原始图片进行卷积操作后的结果:

  1. 使用第一个卷积核提取出的垂直边缘特征图。
  2. 使用第二个卷积核提取出的水平边缘特征图。
  3. 使用第三个卷积核模糊处理后的图像。

image.png
下图则是演示滑动效果:
image.png
卷积操作
中间部分展示了卷积操作的过程:

  1. 卷积核在输入图像上滑动,每次在局部区域进行加权和运算。
  2. 滑动窗口(卷积核)逐步覆盖输入图像的不同部分。

6.3、全连接与卷积网络的对比

全连接网络:
image.png
image.png
image.png
卷积网络:
image.png
对比分析:

  1. 连接方式
    • 全连接层:每个神经元与前一层的每个神经元相连,捕捉输入的全局信息。这种连接方式会产生大量的参数。
    • 卷积层:每个神经元仅与前一层的局部区域相连,捕捉局部特征,并通过参数共享减少了参数数量。
  2. 参数数量
    • 全连接层:参数数量非常庞大,尤其是在处理高维输入数据时。
    • 卷积层:通过参数共享和局部连接,参数数量显著减少,更加高效。
  3. 特征提取
    • 全连接层:对输入数据进行全局特征提取,适用于处理展平后的数据。
    • 卷积层:对输入数据进行局部特征提取,保留空间结构和位置信息,适用于处理图像等具有空间结构的数据。
  4. 空间平移不变性
    • 全连接层:没有空间平移不变性,输入数据的微小变化可能导致输出的较大变化。
    • 卷积层:具有空间平移不变性,输入图像的平移不会显著影响特征图。

总结:

  • 全连接层:适用于对输入数据进行全局特征提取,参数较多,计算量较大。
  • 卷积层:适用于对图像等具有空间结构的数据进行局部特征提取,参数较少,具有空间平移不变性。

6.4、池化层

池化层的优势——降低数据维度、减少训练参数、避免过拟合:
image.png

6.5、感受野和卷积堆叠

卷积操作
image.png
感受野:
image.png
卷积堆叠:
image.png
总结:

  1. 卷积操作
    • 卷积操作通过卷积核在输入图像上滑动,提取局部特征。卷积核的值用于计算输入图像中每个感受野区域的加权和。
  2. 感受野
    • 感受野是卷积核作用的局部区域。通过不断滑动卷积核,可以覆盖整个输入图像,生成特征图。
  3. 多层卷积堆叠
    • 多层卷积的堆叠允许模型逐层提取特征,从低级特征(如边缘)到高级特征(如复杂形状和对象)。这种层次化的特征提取方式使得卷积神经网络能够处理复杂的视觉任务。

6.6、神经元计算和激活函数

神经元计算

  1. 神经元接收多个输入特征,通过各自的权重加权,然后将结果相加,最后通过激活函数得到输出。
  2. 这种计算方式允许神经网络通过调整权重和偏置来学习数据中的模式。

image.png激活函数的作用

  1. 激活函数引入非线性,使得神经网络能够表示和学习复杂的非线性函数。
  2. ReLU是最常用的激活函数之一,具有计算简单和缓解梯度消失问题的优点。

ReLU激活函数

  1. ReLU函数将输入中的负值全部变为0,正值保持不变,有助于提高模型的训练效率和性能。
  2. ReLU在特征图上的应用可以清楚地看到其对负值的抑制作用,这有助于提高模型的稀疏性和鲁棒性。

image.png

7、卷积网络可以改进的地方

①级联和初始化方法
image.png
②激活函数的改进
image.png

8、结论

卷积神经网络通过引入局部连接、参数共享和池化操作,有效地处理了高维数据(如图像)中的特征提取和分类任务。
其多层次的特征表示使得CNN在图像处理、语音识别和自然语言处理等领域取得了显著的成功。
理解CNN的基本概念和操作是进一步研究和应用深度学习的基础。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/3280349.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

vue3集成LuckySheet实现导入本地Excel进行在线编辑

第一步:克隆或者下载下面的代码 git clone https://github.com/dream-num/Luckysheet.git第二步:安装依赖 npm install npm install gulp -g 第三步:运行 npm run dev效果如下图所示 第四步:打包 打包执行成功后,…

TypeError: Components is not a function

Vue中按需引入Element-plus时,报错TypeError: Components is not a function。 1、参考Element-plus官方文档 安装unplugin-vue-components 和 unplugin-auto-import这两款插件 2、然后需要在vue.config.js中配置webPack打包plugin配置 3、重新启动项目会报错 T…

程序员开发指南

在这个快节奏的时代,作为一名程序员,大家都希望能更快地开发出高质量的应用,而不是花费大量时间在基础设施和后台服务的搭建上。今天,我要向大家介绍一款专为懒人开发者准备的一站式开发应用的神器——MemFire Cloud。 一站式开发…

制品库nexus

详见:Sonatype Nexus Repository搭建与使用(详细教程3.70.1)-CSDN博客 注意事项: 1.java8环境使用nexus-3.69.0-02-java8-unix.tar.gz包 2.java11环境使用nexus-3.70.1-02-java11-unix.tar.gz包 3.注意使用制品库/etc/yum.repos.…

动物大联盟游戏攻略:必备游戏攻略!VMOS云手机升级攻略教程!

在《动物大联盟》中,合理的称号选择、活动参与和组队合作可以极大提升游戏体验和效率。以下是详细的攻略建议: 称号选择 称号不仅能展示玩家的实力和成就,还能提供额外的属性加成。合理选择和更换称号是提升战力的重要途径。 前期称号选择&…

Matlab编程资源库(19)级数与符号方程求解

一、级数符号求和 求无穷级数的和需要 符号表达式求和函数 symsum ,其调用 格式为: symsum(s,v,n,m) 其中 s 表示一个级数的通项,是一个符号表达式。 v 是求和变 量, v 省略时使用系统的默认变量。 n 和 m 是求和的开始项 和…

【康复学习--LeetCode每日一题】3111. 覆盖所有点的最少矩形数目

题目&#xff1a; 给你一个二维整数数组 point &#xff0c;其中 points[i] [xi, yi] 表示二维平面内的一个点。同时给你一个整数 w 。你需要用矩形 覆盖所有 点。 每个矩形的左下角在某个点 (x1, 0) 处&#xff0c;且右上角在某个点 (x2, y2) 处&#xff0c;其中 x1 < x…

职业教育计算机网络综合实验实训室建设应用案例

近年来&#xff0c;职业教育在培养技能型人才方面发挥着越来越重要的作用。然而&#xff0c;传统的计算机网络技术教学模式往往重理论、轻实践&#xff0c;导致学生缺乏实际操作能力和职业竞争力。为了改变这一现状&#xff0c;唯众结合职业教育特点&#xff0c;提出了“教、学…

04.FreeRTOS任务创建

04. FreeRTOS任务创建与任务删除 1. FreeRTOS创建和删除任务相关API函数 函数描述xTaskCreate()动态方式创建任务xTaskCreateStatic()静态方式创建任务xTaskCreateRestricted()动态方式创建使用 MPU 限制的任务xTaskCreateRestrictedStatic()静态方式创建使用 MPU 限制的任务…

C# Unity 面向对象补全计划 之 继承(字段与属性)

本文仅作学习笔记与交流&#xff0c;不作任何商业用途&#xff0c;作者能力有限&#xff0c;如有不足还请斧正 本系列旨在通过补全学习之后&#xff0c;给出任意类图都能实现并做到逻辑上严丝合缝 Q&#xff1a;为什么要单讲继承字段与属性&#xff0c;不讲继承方法了吗&#x…

Centos 7配置问题

在VMWare12上面安装Centos 7 Linux虚拟机&#xff0c;在切换到命令界面时&#xff0c;需要登录用户名和密码&#xff0c;但发现输入用户后有字符显示&#xff0c;但是密码没有。 经过一系列查看后&#xff0c;发现这个是Linux的一种机制&#xff0c;即当你输入密码时不显示&…

为什么阿里开发手册不建议使用Date类?

在日常编码中&#xff0c;基本上99%的项目都会有一个DateUtil工具类&#xff0c;而时间工具类里用的最多的就是java.util.Date。 大家都这么写&#xff0c;这还能有问题&#xff1f;&#xff1f; 当你的“默认常识”出现问题&#xff0c;这个打击&#xff0c;就是毁灭性的。 …

Python学习计划——7.2数据可视化

数据可视化是数据分析的重要组成部分&#xff0c;通过图表和图形将数据直观地展示出来&#xff0c;帮助我们发现数据中的模式和趋势。Python中常用的数据可视化库有matplotlib和seaborn。以下是对这些库的详细讲解及可运行的Python案例。 1. matplotlib 库 matplotlib 是一个…

Git 基础操作手册:轻松掌握常用命令

Git 操作完全手册&#xff1a;轻松掌握常用命令 引言一、暂存&#xff1a;git add ✏️二、提交&#xff1a;git commit &#x1f4dd;三、拉取、拉取合并 &#x1f504;四、推送&#xff1a;git push &#x1f310;五、查看状态&#xff1a;git status &#x1f4ca;六、查看历…

数据库管理-第225期 Oracle DB 23.5新特性一览(20240730)

数据库管理225期 2024-07-30 数据库管理-第225期 Oracle DB 23.5新特性一览&#xff08;20240730&#xff09;1 二进制向量维度格式2 RAC上的复制HNSW向量索引3 JSON集合4 JSON_ID SQL函数5 优化的通过网络对NVMe设备的Oracle的原生访问6 DBCA支持PMEM存储7 DBCA支持标准版高可…

[PM]面试题-工作问题

画一个原型需要多久?写一篇PRD文档需求多久? 时间长短取决于项目规模和业务难度, 规模大难度高,就要花费很长的时间, 规模下难度低时间就短, 一般来说, 1-2周的时间就可以完成原型和RED文档 市场需求文档写什么? 从打到下进行编写, 大的方面以市场为主体,包括市场规模, 发…

AI-PaddleOCR2.8在VS2019编译运行基于C++引擎推理CPU版本

1、下载PaddleOCR-release-2.8开源项目 https://github.com/PaddlePaddle/PaddleOCR https://github.com/PaddlePaddle/PaddleOCR/releases https://gitee.com/paddlepaddle/PaddleOCR?_fromgitee_search 2、下载安装Windows预测库 https://paddleinference.paddlepaddle.o…

轻量级服务器资源监控平台Beszel

什么是 Beszel &#xff1f; Beszel 是一个轻量级平台&#xff0c;借助 Beszel&#xff0c;可以访问 CPU 和内存使用情况的历史数据&#xff0c;以及 Docker 容器指标&#xff08;例如特定于容器的 CPU 和内存统计信息&#xff09;。还能收到针对潜在问题的可自定义警报通知&am…

【Docker】安装 Docker(Server-Centos、GUI-Windows11)—— 超详细教程

一、各版本平台支持情况 1、Server 版本 2、桌面版本 二、Server 版本安装&#xff08;Centos&#xff09; 1、安装依赖 &#xff08;1&#xff09;支持的操作系统 CentOS 7&#xff1a;推荐 CentOS 8 (stream) CentOS 9 (stream) &#xff08;2&#xff09;支持的 CPU A…

spring源码 循环依赖

spring框架两大核心&#xff1a;IOC和AOP IOC(Inverse of Control)控制反转 将对象的创建权交给 Spring 容器去创建&#xff0c;利用了工厂模式将对象交给容器管理&#xff0c;只需要在spring配置文件中配置相应的bean&#xff0c;以及设置相关的属性&#xff0c;让spring容器…