【深度学习-卷积神经网络CNN-基础】

news2024/10/5 15:33:42

文章目录

    • 发展历史
    • 卷积神经网络的应用领域
    • 卷积的原理和作用
      • 卷积和传统的神经网络的区别
    • 卷积网络的整体架构
      • 输入层
      • 卷积层
      • 池化层
      • 全连接层
      • 卷积和池化叠加多层
      • 卷积可以处理什么类型的数据
      • 卷积的超参数
      • 卷积最大的优势
    • 卷积的细节
      • 卷积的原理
      • 卷积的参数
        • 卷积的次数
        • 步长 卷积核尺寸 边缘填充 卷积核个数
        • 卷积的特征尺寸计算
        • 卷积参数共享
        • 最大池化
        • 卷积的层数
        • 感受野

本文介绍深度学习中极为重要的一个神经网络CNN,卷积神经网络

发展历史

最早 98年 yann LeCun 在论文中提出了一个LeNet-5模型,当初美国的很多银行都用它来识别支票上面的手写数字。
在这里插入图片描述

09年 李飞飞 号召进行全美的图像识别,并举行了IMAGE NET比赛,这个比赛一直持续了很多年
目前这个网站依然存在,分类达到了21841类
在这里插入图片描述

  • 2012年

冠军,Hinton和他的学生alex 准确率57% top1-5达到80.2%

  • 2014年

冠亚军 模型分别是googlenet和vgg
googlenet google提出
VGG牛津大学提出,但它在迁移学习任务中表现要比googlenet更优,而且从图像中提取CNN特征,VGG模型是首选,缺点就是参数需要140M,需要更大的存储空间
在这里插入图片描述

  • 2015年

ResNet 采用了152层,采用残差学习的方法进行训练,简单并且实用,并且衍生了ResNet50等一系列模型
后来Alpha zero,训练8小时可以打败alpha go,作者是毕业于清华的何凯明
下面可以看到,15年 深度学习在图像识别方面超越人类了,IMAGENET 比赛也从此停办了
在这里插入图片描述

卷积神经网络的应用领域

检测任务
分类与检索(比如找相似的产品)
超分辨率重构
在这里插入图片描述

医学任务
字体识别
无人驾驶
在这里插入图片描述

人脸识别
在这里插入图片描述

卷积的原理和作用

提取特征时,使用具备原图特征的卷积核提取的图,就具备同样的特征
在这里插入图片描述

卷积和传统的神经网络的区别

在这里插入图片描述
先从直观上看区别:
左图:传统的神经网络的输入是一维的,被拉伸的数据
右图:卷积神经网络则是输入一个立体的图像,不需要拉伸

卷积网络的整体架构

输入层

比如输入的图片,常用的(h,w,c)三位的数据

卷积层

作用:提取特征参数
比如一个图片, 每块对应的特征都是不同的,于是划分成一个小区域去提取特征,跟传统的网络一样,就需要一组权重参数去提取这一块小区域数据的特征。

池化层

作用:降低计算量,保留的特征的同时,降低尺寸
在这里插入图片描述
分为最大和平均池化,一般来说最大池化表现的最好,究竟什么是池化后面会有详细描述

全连接层

最终的输出一般都是一维的数据,需要全连接层,比如分类任务,最终是要输出10分类的概率,一个多维的图片最终要输出一个一维的数据,所以需要全连接层

卷积和池化叠加多层

通常的卷积结构是卷积、池化、激活函数,堆叠的多少是随意的,一般情况下叠加的层数越多,特征曲线就能表达的越丰富,但实验证明,并不是越多越好。

卷积可以处理什么类型的数据

可以处理多维的,但是特征要呈现图像类似的特征,什么意思呢?比如一张图片像素点如果随意换位置,那这个图片与原图肯定不是同一张图片了,所以文本、语音类都可以处理,但是呢,对于前后无关,信息前后又无关联(举个例子来说,一个人员信息,人员 姓名 地址这三个特征,换一下位置,这个信息是不变的,这种就是前后无关的)的不适用

卷积的超参数

hyperparameter 是指卷积网络初始,参数包括:

  • 卷积中特征数 特征尺寸
  • 池化中的window size、stride
  • 全连接层:neuron个数

卷积最大的优势

提取特征 分类图片等特别有用

卷积的细节

卷积的原理

已突破为例,卷积操作是将输入图片中每个通道与卷积核每个通道内积后的矩阵和,这个矩阵和就是feature map
所以这就要去卷积核的通道数必须与图片的通道数相同

先用一维数据展示一下,下面是一个卷积核的一个通道的数据
在这里插入图片描述
也就是下图中小点表示的数字,蓝色框大点的为输入,最终的输出是右边的绿色部分

在这里插入图片描述
执行的操作,移动卷积核,每移动一次卷积核与被覆盖的输入部分进行内积操作,比如此时的计算就是:
(10+3! + 12 + 22+ 22 + 30 + 00 + 21 + 2*2 = 19),对应右图输出中的加深的19,当然每次卷积移动的步长是可以选择的,这是移动的步长是1

所以当输入的图像是3通道立体的图象时,卷积核也是3维的,最终输出的特征图将三个通道分别卷积后的和。下图最终输出是第4列的2图,那第二个图是什么情况呢? 因为我们可以输入两组卷积(一般也称做filter),所以可以输出一个2个特征图
在这里插入图片描述

卷积的参数

卷积的次数

卷积一次够么?
通常模型都 需要执行多次卷积

步长 卷积核尺寸 边缘填充 卷积核个数

卷积的动态展示
在这里插入图片描述

  • 步长

步长小的时候,提取的特征比较丰富,步长过大会导致提取到的特征很少,特征丰富的话计算量就会很大。
卷积核的尺寸也是同样如此
所以一般模型的步长和卷积核尺寸都不会太大

  • 边缘填充

观察卷积的操作发现,卷积操作时,边界的点具备劣势,它被利用的次数少,这对于提取的特征来说是不公平的,导致特征确实,为解决这个问题就有边缘填充这个操作。
边缘填充后,可以提高边界点的利用率,填充的值,一般是zero padding ,这样不影响内积值,另有其他用途的除外

  • 卷积核的个数
    决定可以得到的特征图的个数

卷积的特征尺寸计算

计算卷积后H W
在这里插入图片描述
padding*2 是因为填充的时候,肯定上下或者左右对称填充的
dilation表示空洞,当没有空洞,stride是一维的时候,可以用这个

在这里插入图片描述

卷积参数共享

卷积参数共享是卷积中重要的概念,也是卷积比全连接层的优势所在,它可以让卷积操作的参数数据量大大缩减的情况下
参数共享是指:卷积是对一张图像的位置,都是使用相同的卷积核,得出一个feature map
在这里插入图片描述
比如32323的图片,继续用10个553的卷积核进行卷积,与使用全连接的模型的权重参数的量差距极大:
一个卷积核 553 总共个10个filter,那么权重参数是750个
而全连接层 需要3232100 78400个

最大池化

最大提取特征的意义是:相当于只挑选最重要的参数

在这里插入图片描述
最大池化的操作:跟卷积有点类似,只不过没有权重参数需要更新,是从池化核框住的部分选择最大值,平均池化就是取平均值
一般都是选择最大池化 优于平均池化

池化层的作用,除了可以降低数据量,也可以防止过拟合

卷积的层数

卷积的层数是不是越多越好?
注意一般说的层不包括激活函数和池化层,因为这些层不带参数,不需要更新,不算层数

在这里插入图片描述

普通的卷积RELU和池化后,深度20层甚至比50层的效果要好
这就带来一个问题,特征在经过卷积之后的提取特征还是好的特征么? 在经过多次提取以后,前面层的特征就不一定能够保持住了

这个问题的在ResNet 也已经解决了,增加一些同等映射
在这里插入图片描述

感受野

在这里插入图片描述
卷积中最长用的多组3*3的卷积核,这是为什么呢? 这里牵扯一个感受野的概念

  1. 使用3个(3,3)的卷积,保持步长1,经过两次卷积后感受野就是7*7(inut输入特征的大小)
  2. 使用一次(7,7)的卷积核的效果,同样可以提取7*7的特征
    感受野是一样的,为什么使用更多更小的卷积核来做卷积呢?

举个例子:输入是h w c ,得到 c个特征图
假设用(7*7),那么需要的参数就是c * 7 * 7 * c 个权重参数
如果使用上述1方案,则使用3 *c *3 * 3 * c 使用的参数更少
所以卷积中,通常是堆叠小的卷积核,这样需要的参数更少,并且卷积越多,可以加入的非线性也越多,特征提取的就越细致,这也是VGG网络的基本出发点,用小的卷积核提取特征

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

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

相关文章

成为UI设计高手:如何规划和创建UI设计组件库!

今天给大家分享一篇关于组件化设计的总结,希望可以带给大家更多设计思考。 什么是组件化 组件化化是构成界面的最基础元素和重复出现控件的集合体,也就是常说的组件库。通过对基础元素和控件的规范命名与排列组合,最终形成一个可快速调用与便…

每日一题——地下迷宫(迷宫问题II)

迷宫问题(地下迷宫)——II 题目链接 前言: 这题是在昨天迷宫问题——I的基础上进行的变形,因此,如果昨天的题目没看或者对迷宫问题不怎么了解,建议先看看昨天的解析。 迷宫问题——I源代码: …

安装redis,适配阿里云服务器,Liunx安装redis

下载redis以及编译安装 下载redis文件 wget http://download.redis.io/releases/redis-6.0.8.tar.gz #下载redis压缩文件 tar xzf redis-6.0.8.tar.gz #解压缩 cd redis-6.0.8 make 查看是否安装了gcc编译输入gcc --version如果没有…

AtcoderABC236场

A - chukodaiA - chukodai 题目大意 题目要求交换字符串S中第a个字符和第b个字符的位置,并输出结果。 思路分析 借用临时变量t,进行记录交换。 时间复杂度 O(∣S∣) 输出交换后的字符串的时间复杂度为O(∣S∣),其中∣S∣表示字符串SS的…

autohotkey实战:窗口透明化

文章目录 实现方法代码讲解WinGet和WinSet 注 本文采用的是V1版本语法 实现方法 窗口透明不仅实用性强,关键是非常炫酷,如果用AHK实现一个实时调节窗口透明度的工具,那么就可以一边敲代码,一边透过半透明的IDE,愉快地…

vue 3.0 如何实现 文本框只能输入数字 避免文字和符号

<input v-model.number"form.payTime" :min"0" type"number" οninput"valuevalue.replace(/[^0-9.]/g,)" type"text" /> v-model 后面的.numer 一定要加上不然没效果 οninput"valuevalue.replace(/[^0-9.]/g…

Pdb蛋白质数据库网址!+30蛋白质数据库网站!

蛋白质数据库是指专门存储蛋白质相关信息的数据库。它们收集、整理和存储大量的蛋白质数据&#xff0c;包括蛋白质序列、结构、功能、互作关系、表达模式、疾病关联等信息。蛋白质数据库提供了对这些数据的检索、查询和分析功能&#xff0c;为科学研究人员、生物信息学家和药物…

为什么deferred probe将设备挂入延迟链表而不是将驱动挂入延迟链表

1. 代码流程(drivers/base/dd.c) 可以看到在probe失败的时候(驱动返回-EPROBE_DEFER)是把设备挂到deferred_probe_pending_list上面的。 这就带来了一个疑问: 我当前明明是驱动加载的过程(driver_attach()->bus_for_each_dev()), 为什么要将设备挂到pending list上面而不是…

Maven高级(继承与聚合+私服)

分模块设计和开发 为什么要分模块设计&#xff1f; 一个项目往往是分为好几个模块的 如果不同模块全写在一个项目里面 所有的程序员都要调用这有个项目就难以维护 比如我们之前设计的板块 就不太合理&#xff0c;现在我们把实体类和对应的工具类单独开出两个maven模块存储 然…

安装openai和简单使用

Anaconda的界面创建open ai环境&#xff0c;选择python10 控制台 #或者 conda info -e 注意不是anaconda命令开头 (base) C:\Users\su>conda env list # conda environments: # base * F:\anaconda3 openai F:\anaconda3\envs\opena…

TCP的拥塞控制、提高网络利用率的方法【TCP原理(笔记四)】

文章目录 拥塞控制慢启动 提高网络利用率的规范Nagle算法延迟确认应答捎带应答 拥塞控制 有了TCP的窗口控制&#xff0c;收发主机之间即使不再以一个数据段为单位发送确认应答&#xff0c;也能够连续发送大量数据包。然而&#xff0c;如果在通信刚开始时就发送大量数据&#x…

新能源汽车交流充电桩CP信号详解

随着新能源汽车的推广&#xff0c;交流充电桩迎来了巨大的市场需求&#xff0c;人们对车辆充电的便利性、安全性有着越来越高的要求。CP信号主要用于交流充电桩&#xff0c;充电桩和汽车之间只能通过CP信号进行通讯&#xff0c;判断、控制充电电流和状态。 汽车充电桩CP信号…

QT之自定义表格控件

继承QWidget来绘制的一款自定义控件&#xff0c;设计原因是因为Qt自带的QTableWidget的大批量操作很卡&#xff0c;特别是在嵌入式设备上时。 该控件特色功能&#xff1a; 1、支持拖动自适应。 2、支持各种颜色&#xff0c;字体&#xff0c;行列数设置。 代码如下&#xff1a; …

win10安装cuda11.4及cudnn

查看nvidia驱动版本 在windows终端键入nvidia-smi&#xff0c;查看nvidia显卡驱动。显卡驱动的版本决定了CUDA的版本下限。 如果出现上述的问题&#xff0c;则终端进入C:\Program Files\NVIDIA Corporation\NVSMI文件夹内&#xff0c;再键入nvidia-smi&#xff0c;可以看到我…

[MySQL]MySQL视图特性

[MySQL]MySQL视图特性 文章目录 [MySQL]MySQL视图特性1. 视图的概念2. 视图的基本操作创建视图删除视图 3. 视图规则和限制 1. 视图的概念 视图是一个虚拟表&#xff0c;其内容由查询定义&#xff0c;同真实的表一样&#xff0c;视图包含一系列带有名称的列和行数据。基表是对…

Git标签管理(对版本打标签,起别名)

tag 理解标签创建标签git tag [name]git show [tagname] 操作标签删除标签git tag -d < tagname > 推送某个标签到远程git push origin < tagname > 理解标签 标签 tag &#xff0c;可以简单的理解为是对某次 commit 的⼀个标识&#xff0c;相当于起了⼀个别名。 …

数据库备份mysqldump、mydumper、xtrabackup

数据库备份&#xff0c;数据库为school&#xff0c;素材如下 1.创建student和score表 CREATE TABLE student ( id INT(10) NOT NULL UNIQUE PRIMARY KEY , name VARCHAR(20) NOT NULL , sex VARCHAR(4) , birth YEAR, department VARCHAR(20) , address VARCHAR(50) );创建sco…

《面试1v1》如何提高远程用户的吞吐量

&#x1f345; 作者简介&#xff1a;王哥&#xff0c;CSDN2022博客总榜Top100&#x1f3c6;、博客专家&#x1f4aa; &#x1f345; 技术交流&#xff1a;定期更新Java硬核干货&#xff0c;不定期送书活动 &#x1f345; 王哥多年工作总结&#xff1a;Java学习路线总结&#xf…

FPGA配置文件从串并模式下载

FPGA配置文件的下载模式有5种&#xff1a; 主串模式&#xff08;master serial&#xff09;从串模式&#xff08;slave serial&#xff09;主并模式&#xff08;master selectMAP&#xff09;从并模式&#xff08;slave selectMAP&#xff09;JTAG模式 其中&#xff0c;JTAG模…

SQL 常见函数整理 _ SOUNDEX() 和 DIFFERENCE()

SOUNDEX() 1. 用法 是一种针对字符串进行音似匹配的函数。它将一个字符串作为输入&#xff0c;并返回一个代表该字符串音似编码的字符串。此编码可用于比较和匹配具有相似发音的字符串。 2. 基本语法 SOUNDEX(expression)其中&#xff0c;expression 是要进行音似编码的字符串…