人工智能详细笔记 :卷积神经网络(CNN)

news2025/2/24 3:10:35

卷积神经网络和深度学习

    • 1.卷积神经网络的结构
    • 2.卷积神经网络的卷积运算
    • 3.卷积神经网络中的关键技术

BP神经网络存在的问题

  • 输入类型限制:BP神经网络以数值作为输入。如果需要计算图像相关的信息的话,首先需要从图像中提取特征。
  • 隐层数量限制:BP学习算法需要巨大的计算量,因此只能包含少量隐含层,从而限制了BP神经网络算法的性能,影响了其在诸多工程领域中的应用。

深度学习的相关概念

  • 深度神经网络(DNN):许多研究通过很多数学和工程技巧来增加神经网络隐层的层数,也就是神经网络的深度,所以称为深度神经网络。
  • 深度学习(DL):深度神经网络的学习算法就被称为深度学习。

卷积神经网络(CNN)的相关概念

  • 卷积神经网络的提出:2006年,加拿大多伦多大学欣顿教授等人受到生物学的启发,提出了卷积神经网络。
  • 卷积神经网络的地位:卷积神经网络是深度学习的基础,已经成为当前众多科学领域的研究热点之一,特别是模式分类、语音分析和图像识别领域。
  • 卷积神经网络的特点:该网络避免了对图像的复杂前期预处理,可以直接输入原始图像,避免了传统识别算法中复杂的特征提取和数据重建过程。

1.卷积神经网络的结构

卷积神经网络的基本结构:卷积神经网络是一种多层神经网络,每层由多个二维平面组成,而每个平面由多个独立神经元组成。卷积神经网络的基本结构图如下所示:
卷积神经网络结构示意图
特征提取层(C层)

  • 特征提取层别称:特征提取层也被称为卷积层。
  • 特征提取层作用:对输入图像进行卷积处理后得到的所有组成的层。
  • 特征提取层的神经元连接:每个神经元的输入与前一层的局部感知域相连,并提取该局部的特征。

特征映射层(S层)

  • 特征映射层别称:特征映射层也被称为池化层、下采样层或计算层。
  • 特征映射层作用:对输入图像进行池化处理得到的层。
  • 特征映射层的组成:每个特征映射层由多个特征映射组成,每个特征映射为一个平面,平面上所有神经元的权重相等。
  • 特征映射结构的激活函数:特征映射结构采用Sigmoid函数作为卷积网络的激活函数,使得特征映射具有位移不变性。

特征提取层和特征映射层的关系

  • 特征提取层和特征映射层的连接方式:CNN中每一个C层都会紧跟着一个用来求局部平均和二次提取的S层。
  • 连接方式的优点:这种特有的两次特征提取结构能够容许识别过程中输入样本有较严重的畸变。
  • 特征提取层和特征映射层的共同点:每一层都是由多个二维平面构成,每一个二维平面是一个特征图。

卷积神经网络的运转过程

  1. 卷积过程:输入图像和多个卷积核以及可加偏置进行卷积,在第一个卷积层上产生多个特征图。
  2. 池化过程:对上一步产生的多个特征图进行池化,对特征图中每组的四个像素再进行求和、加权重和加偏置处理,产生处理后的多个特征图。
  3. 循环迭代:上一步的处理结果作为输入进行下一次卷积过程和下一次池化过程,循环这样一个过程。
  4. 特征图光栅化:将最后一次卷积核池化后的特征图进行光栅化,变为向量。
  5. 使用NN产生结果:将上一步得到的向量作为输入,使用传统的全连接神经网络NN中进行进一步的分类,得到输出结果。

卷积过程使得原始数据的特征增强且噪声降低;池化过程可以减少数据处理量同时保留有用信息。

特征图的相关概念

  • 特征图的图像大小:可以用“像素×像素”的形式来定义特征图的大小。
  • 像素与神经元的关系:由于特征图组成了神经网络的卷积层和池化层,这些特征图中的每一个像素恰恰代表了一个神经元。
  • 某层网络的神经元个数:该层所有特征图的像素个数就是该层网络的神经元个数。

2.卷积神经网络的卷积运算

卷积的概述:卷积是数学上一种重要的运算,具有丰富的物理、生物和生态意义。

CNN中卷积的作用概述:对输入图像或上一层的特征图进行变换,也就是特征抽取,得到新的特征。

图片表示的相关概念

  • 灰度图片的表示:可以用一个像素矩阵表示,其中矩阵中每一个数字的取值范围是0-255的整数(0表示黑色,255表示白色)。
  • 彩色图片的表示:用RGB三个像素矩阵共同表示。
  • 通道的概念:每个像素矩阵都被称为通道,因此灰度图像为单通道,彩色图像为三通道。
  • 张量的相关概念:在数学上,把这样的三通道数据矩阵称为三阶张量。张量的长度和宽度标识出图像的分辨率。通道数被称为高度。

对张量的理解:矩阵是向量构成的;张量是矩阵构成的。

卷积的计算方式

  1. 定义卷积核矩阵:卷积的计算首先需要定义卷积核矩阵,这是一个比输入矩阵的维度更小的矩阵。
  2. 卷积滑动的过程:用卷积核矩阵在输入矩阵上从左到右、从上到下滑动,每次滑动s个像素,滑动的距离称为步幅。
  3. 计算卷积特征矩阵:卷积特征矩阵的每个位置上的值是输入矩阵与卷积核矩阵重合部分的内积,也就是对应位置元素乘积的求和。卷积特征矩阵就是特征图

卷积的计算例题

  • 输入矩阵以及卷积核矩阵

在这里插入图片描述

  • 卷积部分运算过程

在这里插入图片描述
卷积特征矩阵的维度控制

  • 卷积运算会降维:很明显卷积特征矩阵会比输入矩阵的维度更低。
  • 补零操作:通过在原输入矩阵四周进行零填充,可以扩大输入矩阵的维数,这种操作被称为补零。

输出矩阵的大小计算(重点)

  • 题目要求:根据输入矩阵的大小(H×W)、卷积核矩阵的大小(FH×FW)、填充大小P、步幅S计算输出矩阵的大小(OH×OW)。
  • 计算公式
    在这里插入图片描述
  • 例题分析(均向上取整)

①输入矩阵大小为8×8;填充:1;步幅:1;过滤器(卷积核矩阵)大小:3×3。

答案:输出矩阵的大小为8×8。OH=(8+2×1-3)/1+1=8;OW=(8+2×1-3)/1+1=8。

②输入矩阵大小32×28;填充:2;步幅:3;过滤器(卷积核矩阵)大小:5×5。

答案:输出矩阵的大小为12×10。OH=(32+2×2-5)/3+1=12;OW=(28+2×2-5)/3+1=10。

卷积核矩阵的作用:不同的卷积核矩阵所提取的图像特征不同,因此可以通过选择合适的卷积核矩阵来提取不同类型的图像特征。

对卷积核矩阵的理解:可以把卷积核矩阵视为一个从原始图像中提取指定信息的过滤器。

3.卷积神经网络中的关键技术

图像的一般表示方法:在图像处理中,往往把图像表示为像素的向量。

卷积神经网络的四种关键技术:局部连接、权重共享、多卷积核、池化。

卷积神经网络的局部连接

  • 局部连接的定义:每个神经元只对局部进行感知,然后在更高层将局部信息综合起来得到全局信息。
  • 局部连接的优点:可以减少神经元之间的连接数,从而减少神经网络需要训练的权重参数的个数。

卷积神经网络的权重共享

  • 权重共享的基本原理:图像一部分的统计特性和其他部分是一样的。
  • 权重共享的优点:一个部分的学习特征可以用于另一部分,所以每个映射面上的神经元共享权重减少了神经网络自由参数的个数。

卷积神经网络的多卷积核

  • 多卷积核的背景:参数个数较少时对特征的提取是不充分的。
  • 多卷积核的优点:可以添加多个卷积核提取不同的特征,每个卷积核都会将原图像生成为另一幅图像。

卷积神经网络的池化

  • 池化方法的背景:通过卷积获得的特征后,直接利用这些特征训练模型的计算量仍然非常大,且对于高维数据容易出现过拟合现象。
  • 池化方法的概念:对不同位置的特征进行聚合统计,如可以计算图像上一个趋于的某个指定特征的平均值或最大值。
  • 池化方法的作用:使得特征的维度大大降低,同时还能改善模型效果。
  • 池化方法的分类:池化的方法有平均池化和最大池化两种,最常用的是最大池化法。

简单理解四种关键技术:局部连接和权重共享通过减少模型的参数个数从而避免模型过于复杂;多卷积核用于对图像特征的充分提取;池化方法用于降低特征维度。

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

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

相关文章

直播预告 | 嵌入式BI如何将数据分析真正融入业务流程

在信息化高速发展的今天,数据成为企业最有价值的资产之一。而数据本身很难直接传递有价值的信息,只有通过对数据进行挖掘、分析,才能让数据真正成为生产力。 商业智能(BI)应运而生,可以帮助企业更好地从数…

ASP.NET MVC | 简介

目录 前提 1.教程 2.MVC 编程模式 最后 前提 在学习学过很多课程,但是最主要学的还是ASP.NET MVC这门课程,工作也是用的ASP.NET MVC,所以写一点ASP.NET MVC的东西,大家可以来看看,我自己不会的时候也不用找别的地方…

django项目实战六(django+bootstrap实现增删改查)进阶优化modelform类与视图

目录 一、将视图里面的modelform类分离出去 二、按模块迁移视图 1、新建views视图文件夹 2、views下新建对应模块文件,并从views.py当中迁移代码 三、删除views.py 四、修改url路由 接上一篇《django项目实战五(djangobootstrap实现增删改查&#xf…

数据结构-考研难点代码突破(C++实现树型查找 - 平衡二叉树(AVL树)的基本操作(增删))

文章目录1. 平衡二叉树的概念AVL树的插入AVL树查找效率AVL树的删除(了解)2. C代码3. 考研数据结构代码仓库1. 平衡二叉树的概念 二叉搜索树虽然可以提高搜索效率,但如果数据接近有序的话搜索二叉树的效率退化为链表了。为了解决这个问题&…

跨境群店安全运营神器—超级浏览器

有点跨境电商经验的跨境人都知道,物理隔离是比较安全稳妥的防关联办法。但是多台电脑多条网络的办公方式,不仅设备成本高,人员的费用也高得吓人。后来大家开始使用VPS来防关联。VPS是一种虚拟专用服务器,它是一种将一台服务器分割…

企业微信机器人发送消息

前言 随着科技的发展,各企业公司的业务不断发展,那么就需要强有力的沟通软件,其中企业微信、钉钉的能力得到了大众的认可,今天这篇文章就讲其中的一个功能-调用企业微信机器人(下文简称应用)进行消息传递。它的好处有哪些呢?自然是可以让相关人员及时追踪任务进度。 一、…

记住这12个要点,你也能打造出让HR和技术主管前一亮的前端简历

第一篇章:吸引HR 如果你想在众多简历中脱颖而出,需要注意以下几点: 1、突出你的亮点: 给你的简历一个吸引人的文件命名和头部,突出你的关键技能和经验。 2、采用简洁的语言: 用简单易懂的语言来描述你的…

JavaScript-XHR-深入理解

JavaScript-XHR-深入理解1. XHR(Asynchronous JavaScript And XML)初始1.1. xhr request demo1.2. status of XHRHttpRequest1.3. send synchronous request by xhr1.4. onload监听数据加载完成1.5. http status code1.6. get/post request with josn/form/urlcoded1.7. encaps…

mysql和sqlserver查询数据库表的数量的方法

一、mysql查询数据库表的数量 1、查询mysql下所有数据库表的数量 SELECT COUNT(*) TABLES, table_schema FROM information_schema.TABLES GROUP BY table_schema; 2、查询指定数据库的表的数量 SELECT COUNT(*) TABLES, table_schema FROM information_schema.TABLES WHER…

LeetCode第494题-目标和-python实现-图解思路与手撕代码

LeetCode第494题-目标和-python实现-图解思路与手撕代码 文章目录一、题目描述二、解题思路与代码实现1.解题思路2.代码实现总结一、题目描述 二、解题思路与代码实现 1.解题思路 这道题可以进行递归,遍历数组,对于当前这个数字,要么加上要…

Revit项目浏览器的标准设置应用和快速视图样板?

一、Revit项目浏览器的标准设置应用 设计院阶段的BIM应用,主要是Revit出施工图方面,需要涉及到很多标准的制定方面的问题,而且这个标准不仅仅是一个命名标准,还有很多的符合本院的出图标准等等,本期就不做详细讨论&…

【论文阅读】SCRFD: Sample and Computation 重分配的高效人脸检测

原始题目Sample and Computation Redistribution for Efficient Face Detection中文名称采样和计算 重分配的 高效人脸检测发表时间2021年5月10日平台ICLR-2022来源Imperial College, InsightFace文章链接https://arxiv.org/pdf/2105.04714.pdf开源代码官方实现&…

重压之下,特斯拉并不心甘情愿地召回FSD

/ 导读 /近日,美国国家公路交通安全管理局(NHTSA)宣布,其将召回近37万辆已安装或待安装全自动驾驶测试版(FSD Beta)的汽车。其实早在今年1月份的时候,NHTSA就要求特斯拉提交召回申请。而特斯拉在…

LabVIEW快速创建事件插件

LabVIEW快速创建事件插件此插件包含在LabVIEW2018及更高版本中。如果使用的是LabVIEW2017或更早版本,则只需从此处下载并安装它。在控件和控制终端上添加新的“创建>事件结构”:选择此选项将在控件上为指定事件配置新的事件结构:一些附加说…

jupyter使用指北:如何打开.ipynb文件|修改jupyter notebook的默认路径|在jupyter按照包

文章目录打开.ipynb文件、修改jupyter的默认路径笨办法好办法用jupyter notebook直接安装包运行代码打开.ipynb文件、修改jupyter的默认路径 比如,在该目录下有一个.ipynb文件,想用jupyter notebook直接打开: 笨办法 先进入jupyter再把文…

FFMPEG自学二 ⾳频编码实战

一、FFmpeg编码流程二、流程关键函数avcodec_find_encoder:根据指定的AVCodecID查找注册的编码器。 avcodec_alloc_context3:为AVCodecContext分配内存。 avcodec_open2:打开编码器。 avcodec_send_frame:将AVFrame⾮压缩数据给…

LVGL Styles

LVGL StylesGet started按钮添加标签按钮添加风格滑动条值显示StylesSize stylesBackground stylesBorder stylesOutline stylesShadow stylesImage stylesArc stylesText stylesLine stylesGet started 按钮添加标签 /*** brief 按钮事件回调函数* param e */ void btn_eve…

【Python实战】一大波高颜值主播来袭:快看,某网站颜值排名,为了这个排名我可是大费周章啦,第一名不亏是你...(人脸检测+爬虫实战)

导语 民间一直有个传闻......「听说某站的小哥哥小姐姐颜值都很高哦!」 (不是颜值高才能加入,是优秀的人恰好颜值高) 所有文章完整的素材源码都在👇👇 粉丝白嫖源码福利,请移步至CSDN社区或文末…

Qt C++ 自定义仪表盘控件03

简介仪表盘是工控领域不可缺少的一类软件UI元素,通常出现在各类电子看板软件上,以及一些高级的上位机软件界面上,目的是将繁杂的数据转化为可视化的图表能大幅提高后台管理效率。本文分享了几个经典常用的仪表盘控件,在项目中可以…

系列一、SQL

一、SQL分类 二、DDL 定义:Data Definition Language,数据定义语言,用来定义数据库对象(数据库,表,字段) 2.1、数据库操作 2.1.1、查询所有数据库 show databases; 2.1.2、查询当前数据库 select database(); 2.…