【深度学习】聊一聊什么是卷积神经网络,卷积是什么意思?

简介: 【深度学习】聊一聊什么是卷积神经网络,卷积是什么意思?

卷积

在泛函分析中,卷积、旋积或褶积(英语:Convolution)是通过两个函数f和g生成第三个函数的一种数学运算,其本质是一种特殊的积分变换,表征函数f与g经过翻转和平移的重叠部分函数值乘积对重叠长度的积分。

我们可以很容易的得到下面这个公式。直接看公式和概念是很抽象的,所以我们先看下面的这个例子。


举个例子

假如有一个人24小时内不间断吃食物,那么进食的就可以用下面这张图表示。横坐标表示进食的时间,纵轴表示进食的量。


但是呢一个人不可能只进食,所以他还会消化。所以消化也可以用一张表来表示。横轴表示消化的时间,纵轴表示对应时间你消化的比例。时间越长 消化就越多。


那么此时问:下午2点这个人体内还有什么食物?

不定时的进食,和不间断的消化是一个动态过程,并没有那么容易计算出来。但是卷积却能很好的替你解决这个问题。


解决方法

这里设 f函数表示进食,g函数表示消化。

假如我们不考虑消化的话,我们只需要将每次进食的量进行一个累加即可。那么反应到图上就是求[0,14]点的一个区域面积。

但是,他吃了东西还会一直消化,所以单纯的看f函数是远远不够的,假如这个人在12点吃了一碗米饭,那么在下午2点还剩多少呢?这里就需要看g函数了。


从12吃米饭,到下午2点共用了2小时,那么我们就需要看g函数在2小时后还剩多少食物的一个百分比。那么我们就可以得出一个公式 residue = f(12) * g(14 - 12) 。那么我们就可以得出一个进食点在下午2点还剩的食物量。

所以我们要计算所有食物最后的剩余量,需要在[0,14]点这段区间内吃的所有食物进行一个计算即可。假如我们在x时刻进食,计算t时刻还剩多少食物。可以得到一个公式。

我们仔细看f的参数和g的参数最近会把x消掉,这也是卷积的一个标志。接下来我们聊一聊xg-x分别表示什么含义。

假如我们T时刻进食,那么对应在g函数就是0时刻,就会有下面图中这样一条连线。

那么将所有进食时刻进行一个连线就是下面这张图的样子。

那么这个时候我们就得出一个相加积分公式:


现在我们推出来公式和卷积公式仅仅是符号的差异,其他均相同。我们的[0,t]表示的是时间,所有不可能有负数,有一定的物理意义。


总结

有一个系统,input不稳定 output稳定,那么我们就可以拿卷积来计算这个数值。

神经网络中的卷积

卷积神经网络主要的作用就是识别图片中的某一些特征。例如获取图片中的人脸、以及面部表情等。

像素、灰度值

例如下面这种图片是一个分辨率为80*40照片,我将其做了一个放大处理。我们可以看到其有很多的小方格。这里的每一个方格就是一个像素。灰度值就是每个格子中RGB颜色对应的数值。


卷积操作

卷积操作是使用一个二维的卷积核在一个批处理的图片上进行不断扫描。

这里我们以一个3*3的卷积核进行演示。卷积核与图片对应的俩个位置进行相乘,得到9组结果然后进行累加,得到一个新的像素点。


但是呢,这样处理完图像后,后少一圈。

所以引入Padding:为了使输入的矩阵尺寸和输出的矩阵尺寸一致,我们会在输入矩阵的外层一圈补0像素,这样就可以得到同样尺寸的图片。


思考

这和前面说的卷积操作好像不太一致啊。 哪个是f函数,哪个是g函数?

图像的卷积操作就是拿图片和卷积核先相乘后相加。这个和前面说的卷积的方法是相同的。

那么我们就可以得出图片和卷积核必然一个是f另一个是g。因为图片是一直在变化的,而卷积核是全程不变的。


卷积核作用

周围很多像素点对某一个像素点产生的影响。

为什么这么说呢,看下面这几种卷积核操作完后的效果。


平滑卷积

平滑卷积就是将图片变得更加平滑、朦胧。


这里以一张教材的图片为例。左侧为平滑前的图片,右侧为平滑后的图片。我们可以明显感觉到差异。


周围的像素点是如何对当前像素点产生影响的,理论来说可以从周围一圈像素点到无穷远的像素点为当前像素点进行的影响。但是呢当我们只需要考虑周围一圈就可以解决问题时绝对不会考虑俩圈,效率问题么。


垂直边界卷积核与水平边界卷积核

我们可以看下面这种图,垂直边界卷积核就只把垂直方向的线条给提取出来了,忽略水平方向的线条。

水平边界卷积核就只把水平方向的线条给提取出来了。


那么就是说只要我们选取的卷积核合适,最后就可以对图片实现过滤然后把想要的特征保存下来。

卷积核在数学的运算

令x,y表示在图片上某一个点位置。那么我们得出公式:f(x, y) * g(x, y) = ∑ f(x, y) · g(m-x, n-y)

这里为了方便计算。卷积核为3*3的,只考虑周围一圈对当前像素点的影响。


对应关系应该是这样的:

f(x-1, y-1) * g(1, 1) ;

f(x, y-1) * g(0, 1) ;

f(x+1, y-1) * g(-1, 1) ;

f(x-1, y) * g(1, 0) ;

f(x, y) * g(0, 0) ;

f(x, y-1) * g(0, 1) ;

f(x-1, y+1) * g(1, -1) ;

f(x, y+1) * g(0, -1) ;

f(x+1, y+1) * g(-1, -1) ;


仔细发现就是刚好g表倒过来。


所以我们发现g函数不等于卷积核。因为卷积核并没有进行翻转操作。


卷积神经网络

卷积神经网络一般用来做图像识别的,就比如下面这种情况,输入x/o通过卷积神经网络(CNN)就可以识别出来他们是x还是o。

不仅可以识别整整齐齐的这种图片,就比如下面这种不规则的也可以识别。

这里我简化像素值,认为黑色是-1,白色是1。

我们可以将规则的x和不规则的x进行对比。发现虽然它们不是一模一样,但是局部是存在相同部分的。


所以卷积神经网络的第一步就是把图片的局部特征进行提取。然后将这些局部特征交给神经网络。然后由神经网络来做判别。

这里我们可以使用三个卷积核对特征进行一个提取。分别为左上到右下为1,x的位置是1,左下到右上都是1。

下面这种情况就是刚好匹配。最后结果为1;

然后将所有的图像都进行一次卷积操作。最后我们就可以得出三张卷积后的图像。

至于之后的池化啊、归一化等等后面再说。

目录
相关文章
|
5天前
|
机器学习/深度学习 人工智能 算法
猫狗宠物识别系统Python+TensorFlow+人工智能+深度学习+卷积网络算法
宠物识别系统使用Python和TensorFlow搭建卷积神经网络,基于37种常见猫狗数据集训练高精度模型,并保存为h5格式。通过Django框架搭建Web平台,用户上传宠物图片即可识别其名称,提供便捷的宠物识别服务。
111 55
|
15天前
|
机器学习/深度学习 人工智能 算法
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
宠物识别系统,本系统使用Python作为主要开发语言,基于TensorFlow搭建卷积神经网络算法,并收集了37种常见的猫狗宠物种类数据集【'阿比西尼亚猫(Abyssinian)', '孟加拉猫(Bengal)', '暹罗猫(Birman)', '孟买猫(Bombay)', '英国短毛猫(British Shorthair)', '埃及猫(Egyptian Mau)', '缅因猫(Maine Coon)', '波斯猫(Persian)', '布偶猫(Ragdoll)', '俄罗斯蓝猫(Russian Blue)', '暹罗猫(Siamese)', '斯芬克斯猫(Sphynx)', '美国斗牛犬
94 29
【宠物识别系统】Python+卷积神经网络算法+深度学习+人工智能+TensorFlow+图像识别
|
2天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于yolov4深度学习网络的公共场所人流密度检测系统matlab仿真,带GUI界面
本项目使用 MATLAB 2022a 进行 YOLOv4 算法仿真,实现公共场所人流密度检测。通过卷积神经网络提取图像特征,将图像划分为多个网格进行目标检测和识别,最终计算人流密度。核心程序包括图像和视频读取、处理和显示功能。仿真结果展示了算法的有效性和准确性。
47 31
|
18天前
|
机器学习/深度学习 资源调度 算法
图卷积网络入门:数学基础与架构设计
本文系统地阐述了图卷积网络的架构原理。通过简化数学表述并聚焦于矩阵运算的核心概念,详细解析了GCN的工作机制。
49 3
图卷积网络入门:数学基础与架构设计
|
9天前
|
机器学习/深度学习 算法 信息无障碍
基于GoogleNet深度学习网络的手语识别算法matlab仿真
本项目展示了基于GoogleNet的深度学习手语识别算法,使用Matlab2022a实现。通过卷积神经网络(CNN)识别手语手势,如"How are you"、"I am fine"、"I love you"等。核心在于Inception模块,通过多尺度处理和1x1卷积减少计算量,提高效率。项目附带完整代码及操作视频。
|
12天前
|
机器学习/深度学习 算法 数据安全/隐私保护
基于深度学习网络的宝石类型识别算法matlab仿真
本项目利用GoogLeNet深度学习网络进行宝石类型识别,实验包括收集多类宝石图像数据集并按7:1:2比例划分。使用Matlab2022a实现算法,提供含中文注释的完整代码及操作视频。GoogLeNet通过其独特的Inception模块,结合数据增强、学习率调整和正则化等优化手段,有效提升了宝石识别的准确性和效率。
|
14天前
|
机器学习/深度学习 人工智能 自然语言处理
深入理解深度学习中的卷积神经网络(CNN)##
在当今的人工智能领域,深度学习已成为推动技术革新的核心力量之一。其中,卷积神经网络(CNN)作为深度学习的一个重要分支,因其在图像和视频处理方面的卓越性能而备受关注。本文旨在深入探讨CNN的基本原理、结构及其在实际应用中的表现,为读者提供一个全面了解CNN的窗口。 ##
|
15天前
|
机器学习/深度学习 人工智能 算法
深度学习入门:用Python构建你的第一个神经网络
在人工智能的海洋中,深度学习是那艘能够带你远航的船。本文将作为你的航标,引导你搭建第一个神经网络模型,让你领略深度学习的魅力。通过简单直观的语言和实例,我们将一起探索隐藏在数据背后的模式,体验从零开始创造智能系统的快感。准备好了吗?让我们启航吧!
42 3
|
24天前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习中的卷积神经网络(CNN): 从理论到实践
本文将深入浅出地介绍卷积神经网络(CNN)的工作原理,并带领读者通过一个简单的图像分类项目,实现从理论到代码的转变。我们将探索CNN如何识别和处理图像数据,并通过实例展示如何训练一个有效的CNN模型。无论你是深度学习领域的新手还是希望扩展你的技术栈,这篇文章都将为你提供宝贵的知识和技能。
76 7
|
21天前
|
机器学习/深度学习 自然语言处理 算法
深入理解深度学习中的卷积神经网络(CNN)
深入理解深度学习中的卷积神经网络(CNN)
29 1

热门文章

最新文章

下一篇
DataWorks