深度学习 卷积神经网络原理

news2024/11/24 7:50:37

深度学习 卷积神经网络原理

  • 一、前言
  • 二、全连接层的局限性
  • 三、卷积层
    • 3.1 如何进行卷积运算?
    • 3.2 偏置
    • 3.3 填充
    • 3.4 步长
    • 3.5 卷积运算是如何保留图片特征的?
    • 3.6 三维卷积
    • 3.7 多种特征提取
  • 四、池化层
  • 五、全连接层
  • 六、参考资料

一、前言

本文分析了全连接层存在的局限性,然后引出卷积的思想方法,介绍了如何进行卷积、池化计算,提取特征。学习了卷积神经网络,就可以用神经网络高效地进行图像处理,比如说用于人脸识别、图片清晰化、风格迁移等。

卷积神经网络(Convolutional Neural Networks,CNN)主要包含以下结构:

  • 卷积层( Conv) – 用于保留图片特征
  • 池化层(POOL) – 用于数据降维,减少输入维度,避免过拟合
  • 全连接层(FC) – 根据不同任务输出我们想要的结果

二、全连接层的局限性

在之前介绍的神经网络中,相邻层的所有神经元之间都有连接,这称为全
连接(fully-connected)。全连接层(Affine层)存在局限性,就拿图片识别的例子来说,存在一些问题。

1.1 参数过多的问题
如果输入是一张1000*1000像素的彩色图片,因为有RGB三个通道,那么就有 3 × 1 0 6 3×10^6 3×106 个输入变量,假设隐藏层有1000个单元,那么权重参数将达到 1000 × 3 × 1 0 6 1000×3×10^6 1000×3×106,即30亿个,这是一个庞大的数字,非常容易导致神经网络过拟合、并且需要巨大的计算机内存和计算资源。

1.2 丢失了空间特征信息
比如说,图片中的一个物品,其轮廓是连续的,而且平移、缩放、旋转等操作不影响其语义信息。图像通常含有宽、高、通道方向上的3维形状,而全连接层把这些输入全部作为一维信息处理,会忽视这种空间特征。

三、卷积层

卷积层(Convolutional layers)进行的处理就是卷积运算,相当于图像处理中的“滤波器运算”。

3.1 如何进行卷积运算?

我们来看一个具体的例子:

在这里插入图片描述
输入数据经过滤波器转换,得到了另一个矩阵。滤波器在一些文献中也叫“核”、“卷积核”。

下面是步长为1的卷积运算过程:
在这里插入图片描述
15=1×2+2×0+3×1+0×0+1×1+2×2+3×1+0×0+1×1

每次移动一个像素,同理:
在这里插入图片描述
下面这张动态图更加形象,这也是步长为1的卷积运算(右移和下移都是1个像素):
在这里插入图片描述
如果步长为n,那么右移或下移时移动n个像素。

3.2 偏置

下面这张图很形象地说明了如何添加偏置,不再多说:
在这里插入图片描述

3.3 填充

上面的图中,每次进行卷积运算都会导致输出矩阵变小,经过多次卷积运算后可能导致矩阵大小为1×1,无法再进行卷积计算。为了避免这种情况,我们可以对输入矩阵进行填充(padding),如下图,输入大小为4×4,进行幅度为1像素的0填充,再卷积,输出大小保持不变。
在这里插入图片描述

3.4 步长

滤波器每次卷积移动的长度称为步长(stride)。

假设输入大小为(H, W),填充为P,滤波器大小为(FH, FW),步幅为S,输出大小为(OH, OW),那么:
O H = H + 2 P − F H S + 1 OH=\frac{H+2P-FH}{S}+1 OH=SH+2PFH+1 O W = W + 2 P − F W S + 1 OW=\frac{W+2P-FW}{S}+1 OW=SW+2PFW+1

3.5 卷积运算是如何保留图片特征的?

1981 年的诺贝尔医学奖,颁发给了 David Hubel(出生于加拿大的美国神经生物学家) 和TorstenWiesel,以及 Roger Sperry。前两位的主要贡献,是“发现了视觉系统的信息处理”,可视皮层是分级的。

人类的视觉原理如下:从原始信号摄入开始(瞳孔摄入像素 Pixels),接着做初步处理(大脑皮层某些细胞发现边缘和方向),然后抽象(大脑判定,眼前的物体的形状,是圆形的),然后进一步抽象(大脑进一步判定该物体是只气球)。下面是人脑进行人脸识别的一个示例:
在这里插入图片描述

卷积运算可以通过设置不同矩阵的滤波器,将边缘特征保留。

如下图(Excel倾情制作 😃 ),经过特殊矩阵的滤波器卷积后,垂直边缘特征被保留了下来:
在这里插入图片描述

3.6 三维卷积

RGB彩色图片有三个通道,你可以把它想象成三张图片的堆叠。那么我们的过滤器也要有三层,对应红绿蓝三个通道。

有多个通道时,分别按通道对输入数据进行卷积运算,并将结果相加,从而得到输出。如下图所示:
在这里插入图片描述
为什么是相加呢?我们可以想象一下,把这个图像矩阵数据看成是一个4×4×3的大立方体,而过滤器是一个3×3×3的小立体,小立方体在大立方体中,移动一下就做一次卷积运算,把三维空间里对应的值相乘再相加。

3.7 多种特征提取

上面用一个卷积核提取的是某一类特征,比如说垂直边缘,现在我们还想提取水平边缘等多种特征(可能几百个不同特征),怎么处理呢?
添加不同特征算子的过滤器就行了,如下图所示:
在这里插入图片描述
这里有2个3通道的滤波器,得到了2个4×4的矩阵。接下来可以加上偏置然后用Relu激活函数进行计算。

四、池化层

池化层(Pooling layers)可以极大地降低数据维度。其过程如下:
在这里插入图片描述
上图中,原始图片为20×20,采样窗口为10×10,步长为10,最终将其采样成为一个2×2大小的特征图。(一般而言,步长与窗口大小一致)

下图展示的是Max池化过程,即在目标区域内选取最大值作为该窗口输出:
在这里插入图片描述
除了Max池化,还有Average池化等。Average池化则是计算目标区域的平均值。在图像识别领域,主要使用Max池化。

五、全连接层

假设有2个滤波器,图片经过卷积和池化处理后,得到2个2×2的矩阵。我们将其展开成长度为8的一维数组,作为全连接层的输入数据,接下来我们激活函数是使用sigmoid还是softmax,取决于我们的任务类型,是想识图片上有没有猫,还是想识别𝐾种不同对象中的一种。

六、参考资料

《AndrewNG深度学习视频》
《AndrewNG深度学习笔记V5.61—黄海广》
《深度学习入门:基于Python的理论与实现》
《卷积神经网络 – CNN》

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

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

相关文章

burpsuite利用sql注入漏洞猜解数据库名称

目录 一、前提条件 二、burpsuite猜解数据库名 (一)设置firefox代理 (二)使用burpsuite的proxy模块截取数据包 (三)将proxy截取的数据包右击发送到intruder模块 (四)设置2个变量…

【Spring】快速入门Spring框架

文章目录1. 对Spring的理解2. Spring IoC3. DI4. 如何创建一个Spring项目4.1 创建一个Maven项目4.2 添加Spring框架支持4.3 添加启动类5. 存储Bean对象5.1 添加配置文件5.2 创建Bean对象5.3 注册Bean6. 获取并使用Bean对象7. 更简单存储Bean对象的方式7.1 前置工作7.2 添加存储…

python爬虫1

1.1 网络爬虫概述 网络爬虫(又被称为网络蜘蛛、网络机器人,在某社区中经常被称为网页追逐者),可以按照指定的规则(网络爬虫的算法)自动浏览或抓取网络中的信息,通过 Python 可以很轻松地编写爬…

二叉搜索树+二叉进阶oj

索引二叉搜索树1.二叉搜索树概念与性能分析2.二叉树的应用3.二叉树的实现细节4.类中函数递归调用5.二叉树实现总体代码6.二叉进阶oj7.二叉树三种遍历非递归实现二叉搜索树 1.二叉搜索树概念与性能分析 什么是二叉搜索树 二叉搜索树也被称为二叉排序树,其也可以是一…

热视觉2:使用Python和OpenCV从图像中测量温度

热视觉2:使用Python和OpenCV从图像中测量温度 这篇博客将介绍学习热/中远红外视觉的基础知识,gray8 和 gray16 图像(即最常见的热成像格式)之间的差异,学习如何使用Python和OpenCV从热图像中的每个像素点测量温度,并以不同的调色板显示结果。以及如何实时计算视频流和UV…

2022高频经典前端面试题(vue2+vue3+typescript+nodejs下篇,含答案)

vue2篇 1.vue的生命周期(重点) 2.父子组件的钩子函数顺序 页面初次渲染的时候: 父beforeCreate-> 父created -> 父beforeMount 子beforeCreate-> 子created ->子beforeMount-> 子mounted 父mounted 页面更新的时候&#xff…

大数据之Hive

文章目录前言一、数据仓库介绍(一) 数据仓库的基本概念(二)数据仓库的主要特征(三)数据仓库与数据库的区别二、Hive的概念(一)Hive的介绍(二)Hive的架构总结前…

4种方法!怎么把电脑上的音频传到苹果手机上?

案例分享 我新买了iphone13,想把macbook上下载的音乐传输一份到手机上,怎么把电脑上的音频传到苹果手机上?能否通过网络实现将电脑音乐传输到手机播放?” 很多果粉在刚拿到心爱的苹果手机后,都先把之前收藏的歌曲传到…

Grpc简介

博主在5月份已经从上一家公司辞职了,七月份已经到现在的公司了,能在整个互联网大环境都不好的前提下,还能找到工作,待遇还不错,已经很知足了。grpc是进到公司的第一个项目用到的技术,已经用了很久也总结了&…

三菱FX5U系列PLC内置高速计数器的使用方法示例

三菱FX5U系列PLC内置高速计数器的使用方法示例 三菱FX5U系列PLC内置高速计数器如何使用? 具体的使用方法可参考如下: 如下图所示,打开GX-WORKS3编程软件,在左侧的项目树中找到参数—FX5U—模块参数—高速I/O, 如下图所示,在弹出的右侧窗口中双击高速计数器—详细设置,…

没有十几年的积累,你还真写不出什么好的代码

如标题所说,我不知道大家怎么看待这句话? 拿一个正常的程序员举个例子,18开始上大学学习写代码,22岁大学毕业,一直干到30岁就需要考虑程序员的中年危机。 小编身边很多程序员都不喜欢写代码,感觉写代码没有…

C · 进阶 | 指针的进阶

啊我摔倒了..有没有人扶我起来学习.... 👱个人主页:《CGod的个人主页》\color{Darkorange}{《CGod的个人主页》}《CGod的个人主页》交个朋友叭~ 💒个人社区:《编程成神技术交流社区》\color{Darkorange}{《编程成神技术交流社区》…

数电学习(六、时序逻辑电路)(一)

文章目录引言概述特点时序电路的一般结构形式与功能描述方法时序电路分类时序电路的分析方法同步时序电路的分析方法状态转换表状态转换图(回顾)在现在的场景下看触发器的动态特性(四个时间)(举例)分析下面…

计算机毕设(附源码)JAVA-SSM佳音大学志愿填报系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

python有哪些编译器

python有哪些编译器 1、Brython把Python转换成Javascript代码。 是一个流行的Python编译器,它可以把Python转换成Javascript代码。该软件支持所有网络浏览器(包括手机网络浏览器)。 它还支持最新的Html5/CSS3标准,可以使用流行的CSS框架,如…

200、无线网桥与无线AP的带机量是多少?一篇文章搞明白

正文: 一个无线ap的带机量是多少?也有朋友提到无线网桥的带机量?这个我们之前有提到过,在了解他们的带机量的话,我们就不得不了解ap的性能指标了,那么本期我们来总结下带机量的问题。 一、选择AP前需要考虑…

用通俗易懂的大白话彻底搞明白mysql的数据类型以及mysql中的int(11),这个11到底是啥?

今天抽时间来讲一下mysql里的知识点,之前有不少人问过我,mysql中的int(11),这个11到底是啥意思?是11位的意思吗?你是否也想过这个问题,是否也有这个疑问? ok,今天就展开来讲一下&am…

深度分析React源码中的合成事件

热身准备 明确几个概念 在React17.0.3版本中: 所有事件都是委托在id root的DOM元素中(网上很多说是在document中,17版本不是了);在应用中所有节点的事件监听其实都是在id root的DOM元素中触发;React自…

【MySQL 第十一天 创建和存储|复合结构的存储|存储过程和函数的区别】

【MySQL 第十一天 创建和存储|复合结构的存储|存储过程和函数的区别】【1】mysql储存过程及语法结构【1.1】mysql过程体【2】mysql创建和使用存储过程【2.1】mysql创建无参的存储过程【2.2】mysql创建有参的输入输出存储过程【3】mysql删除存储过程【4】mysql创建复合结构的存储…

专精特新小巨人的认定条件

奖励:对新认定的专精特新“小巨人”企业,聊城市财政最高一次性奖励50万元。其他地区各有不同。 认定条件 专精特新“小巨人”企业认定需同时满足专、精、特、新、链、品六个方面指标。 (一)专业化指标:坚持专业化发展道路,长期…