[深度学习] 深入理解什么是卷积神经网络

🌈 博客个人主页Chris在Coding

🎥 本文所属专栏:[深度学习]

❤️ 热门学习专栏:[Linux学习]

⏰ 我们仍在旅途                             

目录

1.卷积的定义

2.卷积的"卷"在哪里

3.什么又是卷积神经网络

4.卷积神经网络的第一层的作用及其与卷积的关系

5.卷积的三层含义


1.卷积的定义

卷积(Convolution)是数学和计算机科学中一种重要的操作,常用于信号处理、图像处理、神经网络等领域。在信号处理和图像处理中,卷积用于将两个信号或图像进行融合,生成一个新的输出信号或图像。在神经网络中,卷积层是一种常见的层类型,用于从输入数据中提取特征。

  • 在离散情况下,卷积的定义为:

                                     (f * g)[n] = \sum_{m=-\infty}^{\infty} f[m] \cdot g[n - m]

  •  在连续情况下,卷积的定义为:

                                     (f * g)(x) = \int_{-\infty}^{\infty} f(\tau) \cdot g(x - \tau) \, d\tau

2.卷积的"卷"在哪里

卷积的名字来源于它的运算过程。在卷积操作中,我们将两个函数进行加权求和,并在不同的位置进行移位。这个过程可以类比为将一个函数“卷”到另一个函数上,并对其进行加权叠加。这种“卷”的过程使得卷积得名。 

当然就这样说过于抽象抽象,我们不妨直接直接举个例子来感受:

咱就说那吃饭来说,分别描述了一个人的进食和消化过程。这个过程可以用两个函数来表示:

  • f(t)函数描述了他待消化食物剩余情况
  • g(t)函数描述了他的消化情况
  • 我们假设一个人的消化过程是固定的函数,即g(t),食物剩余的百分比随时间的流逝都保持相同的变化
  • 而相对应的待消化食物剩余量的函数f(t)则显得随机,不固定,这时由于我们会有随机的进食行为

这个时候,我们在已知在8点的时候我们吃了面条,10点时我们吃了面包,而12点时我们又进食了米饭

这个时候如果我们想要去求14点时肠胃中的剩余食物,即f(14)时,我们可以得到下面这个公式

此时胃里在下午14点剩下的东西则为米饭剩余量+面包剩余量+面条剩余量。也就是图片右边的三个公式之和

既然这样,我们可不可以推广一下这个计算方法?

如果现在要求的是任意t时刻胃里还剩多少东西

那其实就是要把把在t时刻之前,对应的每一个时间吃的食物的剩余量分别算出来,在进行相加。

这是不是就和我们前面的离散型卷积公式一模一样

                                  (f * g)[n] = \sum_{m=-\infty}^{\infty} f[m] \cdot g[n - m]

也就是说,通过卷积操作,我们可以得到在某一时刻他胃里还剩下多少食物,这个过程就好像是将消化情况“卷”到进食情况上,然后根据位置和时间进行加权叠加,最终得到一个关于时间的函数,表示在每个时刻他的胃里还剩下多少食物。

在图像上体会x和t-x在图像上的对应关系

​这时候我们我们把两个函数每个时刻对应相乘的点连接起来,会发现看起来十分别扭难受

如果这个时候我们把记函数翻转一下,会怎么样呢

是不是豁然开朗了,所以说啊卷积说得通俗一点,就是把记函数翻转一下,因为翻转了所以叫卷积

在这个问题的基础上我们甚至可以总结一下卷积的含义:

一个系统满足:

  • 输入不稳定,对应f(t)
  • 输出稳定,对应g(t)

那么我们就可以用卷积求系统的存量

3.什么又是卷积神经网络

卷积神经网络(Convolutional Neural Network,CNN)是一种深度学习模型,专门用于处理具有网格结构数据的任务,例如图像识别、语音识别和自然语言处理等。

就卷积神经网络识别图片而言,它之所以叫卷基神经网络就是因为在把图片交给神经网络之前,先要对图像进行一个卷积操作。

我们前面才总结了卷积的定义,也就是要找到那两个函数,一个输入不稳定和一个输出稳定

那就看看什么是卷积操作

具体来说,卷积操作的步骤如下:

  1. 卷积核与图像相乘: 将一个小的卷积核(通常是一个小的矩阵)应用于输入图像的局部区域,对应位置的像素值相乘。这相当于将卷积核覆盖在图像的局部区域上,并将卷积核中的值与图像中对应位置的像素值相乘。

  2. 相乘结果求和: 对相乘得到的结果进行求和,得到新的像素值。这个新的像素值表示了卷积核与图像局部区域之间的相似度或相关性。

  3. 扫描整个图像: 将卷积核在整个输入图像上移动,重复进行相乘和求和操作。这样就可以得到输出图像中的所有像素值。

  4. 处理边缘像素: 对于输出图像中的边缘像素,由于卷积核无法完全覆盖,因此可能无法进行完整的卷积操作。一种常见的处理方法是在进行卷积操作之前,对输入图像的边缘进行填充(通常使用零值填充),以确保输出图像与输入图像具有相同的大小。

这时候来看卷积操作,会发现我们之前所学习的f函数和g函数无法进行很好地理解和对应。

这个时候我们得换个视角重新深入理解卷积操作

回到一维问题,这里我们重新来理解一下卷积是什么.假如在t时刻有一个飓风,在x时刻有一只蝴蝶煽动翅膀,在飓风之前有很多蝴蝶对他产生影响,这个影响会随着时间的变化,他的影响力随着时间变化,这个变化就是g函数。

而这个卷积呢,其实就是在处理这个飓风发生的时候,它之前蝴蝶扇动翅膀对自己产生了多少的影响

那如果我们抛开具体的例子,我们是不是就可以这样来去理解卷积

在某一个时刻发生了一件事,而这件事的产生呢它是会受到之前发生很多事的影响的,就比如说在x时刻它发生了一件事,这件事会对t时刻产生影响        

具体怎么影响呢?

它还要看从x时刻到t 时刻经历的时间,它会随着时间进行变化而规定

随时间如何变化呢?

就是g(t)函数,g(t)函数就规定了之前发生的一些事情,它随着时间影响力是如何变化的.当然不论是之前吃饭呢还是这个蝴蝶扇动翅膀.从直觉上看它的影响力都是随着时间减小的,但这不是必然的如果我们换一个其他例子.这就有可能随着时间在发生不同的变化甚至还可能是增长

甚至我们还可以把视野放的更广一点

假如说这个影响力的变化不是随着时间产生变化的,而是随着距离,就比如说在t位置发生了一件事

而对这个位置产生影响的是其他的很多位置,就比如说其中一个是x位置,那这样子,这个g(t)函数

它的横坐标也可能变成不是时间而是距离了

我们还是回到图像卷积操作,图像的卷积操作是什么

在图像上进行卷积操作,那会不会它就是在去看很多像素点,对某一个像素点是如何产生影响的呢?

blur操作,即降噪平滑操作.,就是认为目标像素点的值是周围值的平均数,即周围各点对它的影响是一样的,此处卷积核以3X3为例。

什么是平滑操作?

平滑其实就是让周围的像素点和自己相差不要太大,从这个卷积核我们可以看到啊,它是在求平均值,什么是求平均?就是看到周围的像素点和你这个像素点相比啊,这个像素点的数值是不是太高了?如果太高了就拉低点,如果太低了那就拉高一点,如果是这样的话那卷积核就容易理解了它其实就是规定了周围的像素点是如何对当前像素点产生影响的.

那怎么来从数学上理解二维的卷积操作呢?

现在我们需要考虑(x-1,y-1)的像素点对选定的像素点(x,y)的影响,那我们应该找到他对应的像素值f(x-1,y-1),再乘上其对应的影响比例,即g函数中的值

如图,我们现在假设(x-1,y-1)是x时刻,而(x,y)是t时刻。吃饭的例子是需要用t-x,而此处类比过来则是x-(x-1)以及y-(y-1),那么则对应g(1,1)

同理,如果把所有的点对应的g函数的情况都计算出来就会如上图所示

其实可以根据箭头的对应关系看出,还是f函数和g函数的一一对应关系还是比较难看的但是此时,我们只需要对g函数的图像旋转180°,就会很清晰了

所以说呢,旋转前表现的是那个g函数,它不等于卷积核.它要旋转180度之后才是卷积核

卷积核它是可以扣在图像上直接相乘再相加,它其实是已经把旋转这个步骤啊给省略了

但是它本质上仍然是一个卷积运算

4.卷积神经网络的第一层的作用及其与卷积的关系

卷积操作,是卷积神经网络第一层的关键,这又有点像是人的视网膜,看到图像之后啊,先进行一个预处理,然后再交给大脑

卷机神经网络,一般是用来做图像识别的,就比如这种情况

输入图片里面的有差有圆,通过卷积神经网络就能识别出来,它们是x和o,但重点呢,不是识别这种规规整整的情况,而是像下面这样不规整的差和圆

这种情况我们人是能一眼就看出来的,但是交给计算机就不行了,因为计算机看到的都是这样的情况

像素点都是数字,当然了这里是把问题简化了一下认为一个像素就有两种情况1和-1

如果把像素点挨个进行比较的话,这就是两种东西是不一样的

其实我们仔细看的话,可以发现,两边的图像虽然不同,但是如果只看局部的话,还是有相同地方的

所以卷积神经网络识别图像的第一步,就是把图像的局部特征给调出来,把这些局部特征交给神经网络,由神经网络去判断

卷积还怎么还能去提取图像的局部特征呢?

我们之前所说的卷积核只是平滑卷积核,目的是让图像经过卷积操作后变得更加平滑朦胧。

但事实上,卷积操作还有很多的卷积核。

所以,卷积操作其实还有个功能,如果挑选的卷积和合适,最后就可以对图片进行过滤,把某些特征保存下来 而其他的特征就被过滤掉了。此时,卷积核被叫做过滤器,上图所展示的两个卷积核分别叫做垂直边界过滤器和水平边界过滤器。

当进行图像处理中的卷积操作时,可以将其理解为像素点之间的相互影响、试探和选择。卷积核就像是一个模板,它在图像上移动时,与每个像素点进行相乘再相加的操作,试图捕捉图像中的特征信息。在平滑卷积操作中,卷积核试图找到图像中的平滑区域,并通过调整像素点的值来使图像变得更加平滑。

在其他类型的卷积操作中,如边缘检测或特征提取,卷积核可能更注重捕捉图像中的不同特征,例如边缘、纹理或形状等。总的来说,卷积操作通过对周围像素点的主动试探和选择,帮助我们从图像中提取出有用的特征信息。(当我们不想考虑某个位置的时候,就可以把它设置成零而,需要重点考虑某个位置的时候,就可以把这个位置的权重设置的比较高,通过卷积核把周围有用的特征给保留了下来。)

回到前面识别x的那个问题,利用这三个卷积核就可以把三个特征都给找出来,分别是左上到右下,全是1. 还有x的位置都是1,以及从左下到右上都是1。

就比如说这种情况吧,就是完美匹配,计算出来的结果是1

而这种情况呢,就可以看出来了,它虽然也能匹配上,但不能算是完美匹配,最后计算的结果就是0.55

将整个图像,都进行一次这样的卷积操作之后,最后就包含了,与这个特征匹配的全部信息

然后再把三个特征的卷积核,都分别再操作一遍,接下来神经网络就开始干活了,神经网络通过对这些特征信息的判断就可以进行图像识别了

5.卷积的三层含义

  • 第一层就是吃饭的例子里面一个系统,它有不稳定的输入,有稳定的输出,则可以通过卷积计算系统的存量
  • 第二层就是图像处理,一个卷积核其实就是规定周围像素点对当前像素点会产生怎样的影响。
  • 第三层就是一个过滤器的卷积核,规定了一个像素点会如何试探周围的像素点,以此筛选图像的特征。

不论哪一层,卷积在数学上其实是没有差别的,它们的意义都是相同的,但是利用到不同的地方,这意义就发生了改变。

最后一句话总结:卷积就是瞬时行为持续性后果的总和

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

七、动态菜单—递归组件的使用

layout布局 左侧菜单menu页面刷新后默认高亮 左侧菜单组件 Menu <template><template v-for"(item, index) in menuList" :key"item.path"><!-- 没有子路由 --><template v-if"!item.children"><el-menu-item v-if&…

宇通壹基金交通安全训练营走进瑞金市九天社区

春节即将临近&#xff0c;孩子的安全是家长们最大的牵挂&#xff0c;培养良好的交通安全意识和出行习惯从日常教育做起。2月6日上午&#xff0c;瑞金赋能公益联合瑞金市九天社区新时代文明实践站&#xff0c;在九天御景小区开展宇通壹基金交通安全训练营进社区暨“关注交通安全…

机器人初识 —— 电机传动系统

一、背景 波士顿动力公司开发的机器人&#xff0c;其电机传动系统是其高性能和动态运动能力的核心部分。电机传动系统通常包括以下几个关键组件&#xff1a; 1. **电动马达**&#xff1a;波士顿动力的机器人采用了先进的电动马达作为主要的动力源&#xff0c;如伺服电机或步进…

【Docker】docker安装

需要云服务器等云产品来学习Linux可以移步/-->腾讯云<--/官网&#xff0c;轻量型云服务器低至112元/年&#xff0c;新用户首次下单享超低折扣。 目录 一、Ubuntu安装docker 1、查看操作系统和CPU架构 2、卸载docker 3、配置docker下载源 4、安装docker 5、解决报错…

springboot745简历系统

springboot745简历系统 获取源码——》公主号&#xff1a;计算机专业毕设大全

vue+springboot登录与注册功能的实现

①首先写一个登录页面 <template> <div style"background-color: #42b983;display: flex;align-items: center;justify-content: center;height: 100vh"><div style"background-color: white;display: flex;width: 50%;height: 50%;overflow: h…

力扣题目训练(13)

2024年2月6日力扣题目训练 2024年2月6日力扣题目训练492. 构造矩形495. 提莫攻击500. 键盘行166. 分数到小数199. 二叉树的右视图85. 最大矩形 2024年2月6日力扣题目训练 2024年2月6日第十三天编程训练&#xff0c;今天主要是进行一些题训练&#xff0c;包括简单题3道、中等题…

【Redis】深入理解 Redis 常用数据类型源码及底层实现(4.详解Hash数据结构)

Hash数据结构 看过前面的介绍,大家应该知道 Redis 的 Hash 结构的底层实现在 6 和 7 是不同的,Redis 6 是 ziplist 和 hashtable,Redis 7 是 listpack 和 hashtable。 我们先使用config get hash*看下 Redis 6 和 Redis 7 的 Hash 结构配置情况(在Redis客户端的命令行界面…

图数据库 之 Neo4j - Cypher语法基础(5)

节点(Nodes) Cypher使用()来表示一个节点。 () # 最简单的节点形式&#xff0c;表示一个任意无特征的节点&#xff0c;其实就是一个空节点(movie) # 如果想指向一个节点在其他地方&#xff0c;我们可以给节点添加一个变量名(如movie)&#xff0c;表示一个变量名为 movie的节点…

后端扫盲系列 - vue入门指南

vue特点 组件化&#xff1a;用户界面分解为可重用的组件&#xff0c;这些组件可以使开发的页面更加模块化和可维护双向数据绑定&#xff1a;vue提供了一种轻松绑定数据和DOM元素之间的机制&#xff0c;意味着数据发送变化时&#xff0c;视图会自动更新&#xff0c;反之亦然虚拟…

阿里云香港轻量应用服务器怎么样,建站速度快吗?

阿里云香港服务器中国香港数据中心网络线路类型BGP多线精品&#xff0c;中国电信CN2高速网络高质量、大规格BGP带宽&#xff0c;运营商精品公网直连中国内地&#xff0c;时延更低&#xff0c;优化海外回中国内地流量的公网线路&#xff0c;可以提高国际业务访问质量。阿里云服务…

华为配置旁挂二层组网直接转发示例

配置旁挂二层组网直接转发示例 组网图形 图1 配置旁挂二层组网直接转发示例组网图 业务需求组网需求数据规划配置思路配置注意事项操作步骤配置文件扩展阅读 业务需求 企业用户通过WLAN接入网络&#xff0c;以满足移动办公的最基本需求。且在覆盖区域内移动发生漫游时&#xff…

基于51/STM32单片机的智能药盒 物联网定时吃药 药品分类

功能介绍 以51/STM32单片机作为主控系统&#xff1b; LCD1602液晶显示当前时间、温湿度、药品重量 3次吃药时间、药品类目和药品数量 HX711压力采集当前药品重量 红外感应当前药盒是否打开 DS1302时钟芯片显示当前年月日、时分秒、星期 DHT11采集当前环境温度和湿度 …

STM32学习·HAL库·STM32CubeMX系列学习(安装和使用)

目录 ​编辑 1. STM32CubeMX简介 2. STM32CubeMX安装 2.1 STM32CubeMX软件获取 2.1.1 获取Java软件 2.1.2 STM32CubeMX软件获取 2.2 搭建Java运行环境 2.3 安装STM32CubeMX软件 2.4 下载和关联STM32cube固件包 1. STM32CubeMX简介 STM32CubeMX 是 ST 微电子公…

HarmonyOS router页面跳转

默认启动页面index.ets import router from ohos.router import {BusinessError} from ohos.baseEntry Component struct Index {State message: string Hello World;build() {Row() {Column() {Text(this.message).fontSize(50).fontWeight(FontWeight.Bold)//添加按钮&am…

nginx upstream server主动健康检测模块添加https检测功能[完整版]

目录 1 缘起1.1 功能定义2. 实现后的效果2.1 配置文件2.2 运行效果3. 代码实现3.1 配置指令3.1.1 配置指令定义:3.1.2 配置指令结构体:3.1.3 配置指令源码定义:3.2 模块的初始化3.3 添加新的健康检测类型的定义3.4 握手完成后的处理3. 5 发送http请求3.6 接收http响应3.7 连…

[Angular 基础] - 生命周期函数

[Angular 基础] - 生命周期函数 之前的笔记&#xff1a; [Angular 基础] - Angular 渲染过程 & 组件的创建 [Angular 基础] - 数据绑定(databinding) [Angular 基础] - 指令(directives) 以上为静态页面&#xff0c;即不涉及到跨组件交流的内容 以下涉及到组件内的沟通&a…

Halcon 元组/数组基本操作

Halcon 元组/数组基本操作 ** 元组/数组 tuple *******数组创建与字典******* ** 创建一个数组 A : [1,3,45,6] A[0] : 1 A[1] : 2** 定义一个key value字典类型create_dict (DictHandle) set_dict_tuple (DictHandle, test_tuple, A) set_dict_tuple (DictHandle, test_obj, …

CrossOver 24.0 让Mac可以运行Windows程序的工具

CrossOver 24.0最新版重点添加了对 DirectX 12 支持&#xff0c;从而在 Mac 上更好地模拟运行 Windows 游戏&#xff0c;开发者在 CrossOver 23 中可以调用 DirectX 12&#xff0c;在模拟游戏的过程中同时调用所有 GPU 核心&#xff0c;从而实现更优秀的渲染效果。 目前CrossOv…

android中实现底部导航栏

1、引言 底部导航栏在app应用中是十分常见了&#xff0c;大部分的安卓应用中也都实现了底部导航栏的功能&#xff0c;这里我就以我以前做的一个简单小说阅读软件为例&#xff0c;为大家演示一下底部导航栏的使用&#xff0c;需要的朋友直接复制代码过去改写就行了。 2、代码实…