首页 > 其他分享 >卷积神经网络 – CNN

卷积神经网络 – CNN

时间:2023-06-21 20:01:43浏览次数:75  
标签:池化层 卷积 特征 神经网络 图像 CNN

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

卷积神经网络 – CNN_卷积


图:纪念1981年诺贝尔医学奖的邮票。

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

下面是人脑进行人脸识别的一个示例:

卷积神经网络 – CNN_卷积神经网络_02

对于不同的物体,人类视觉也是通过这样逐层分级,来进行认知的:

卷积神经网络 – CNN_卷积_03

我们可以看到,在最底层特征基本上是类似的,就是各种边缘,越往上,越能提取出此类物体的一些特征(轮子、眼睛、躯干等),到最上层,不同的高级特征最终组合成相应的图像,从而能够让人类准确的区分不同的物体。

那么我们可以很自然的想到:可以不可以模仿人类大脑的这个特点,构造多层的神经网络,较低层的识别初级的图像特征,若干底层特征组成更上一层特征,最终通过多个层级的组合,最终在顶层做出分类呢?答案是肯定的,这也是CNN的灵感来源。

CNN 解决了什么问题?

在 CNN 出现之前,图像对于人工智能来说是一个难题,有2个原因:

  • 图像需要处理的数据量太大,导致成本很高,效率很低;
  • 图像在数字化的过程中很难保留原有的特征,导致图像处理的准确率不高;

1、需要处理的数据量太大

现在随随便便一张图片都是 1000×1000 像素以上的, 每个像素都有RGB的3个参数来表示颜色信息。

卷积神经网络 – CNN_神经网络_04

假如我们处理一张 1000×1000 像素的图片,我们就需要处理3百万个参数!

$ 1000 × 1000 × 3 = 3,000,000 $

这么大量的数据处理起来是非常消耗资源的,而且这只是一张不算太大的图片!

CNN 解决的第一个问题就是“将复杂问题简化”,把大量参数降维成少量参数,再做处理。更重要的是:我们在大部分场景下,降维并不会影响结果。比如1000像素的图片缩小成200像素,并不影响肉眼认出来图片中是一只猫还是一只狗,机器也是如此。

卷积神经网络 – CNN_池化_05

2、保留图像特征

如果你训练一个神经网络来检测狗,不管狗出现在图像的什么地方,以何种姿势,何种背景,都是期望能检测出来的。这就是要保留狗的特征,而不管其它干扰因素。

卷积神经网络 – CNN_卷积_06

下面是一个非常简化的例子:确定一幅图像是包含有"X"还是"O"?

像下面X和O两个字符,都非常标准,很容易识别。

卷积神经网络 – CNN_池化_07

但是如果这个图翻转了、不在中心位置了、缩小放大了、画笔粗了,这些场景下,识别难度就大很多了,这就是CNN要解决的问题。

卷积神经网络 – CNN_卷积神经网络_08

CNN用类似视觉的方式保留了图像的特征,当图像做翻转,旋转或者变换位置时,它也能有效的识别出来是类似的图像。

CNN的构成

典型的 CNN 由3个部分构成:

  • 卷积层 , 卷积层负责提取图像中的局部特征;
  • 池化层 , 池化层用来大幅降低参数量级(降维);
  • 全连接层 , 全连接层类似传统神经网络的部分,用来输出想要的结果。

1、卷积层

卷积层负责提取图像中的局部特征;

卷积层的运算过程如下图,用一个卷积核扫完整张图片:

卷积神经网络 – CNN_神经网络_09

这个过程我们可以理解为我们使用一个过滤器(卷积核)来过滤图像的各个小区域,从而得到这些小区域的特征值。

在具体应用中,往往有多个卷积核,可以认为,每个卷积核代表了一种图像模式,如果某个图像块与此卷积核卷积出的值大,则认为此图像块十分接近于此卷积核。如果我们设计了6种卷积核,可以理解:我们认为这个图像上有6种底层纹理模式,也就是我们用6种基础模式就能描绘出一副图像。

下图就是25种不同的卷积核的示例:

卷积神经网络 – CNN_卷积神经网络_10

总结:卷积层的通过卷积核的过滤提取出图片中局部的特征,跟上面提到的人类视觉的特征提取类似。

池化层

池化层用来大幅降低参数量级(降维),池化就是将输入图像进行缩小,减少像素信息,只保留重要信息。

池化层简单说就是下采样,他可以大大降低数据的维度。其过程如下:

卷积神经网络 – CNN_池化_11

上图中,我们可以看到,原始图片是20×20的,我们对其进行下采样,采样窗口为10×10,最终将其下采样成为一个2×2大小的特征图。

之所以这么做的原因,是因为即使做完了卷积,图像仍然很大(因为卷积核比较小),所以为了降低数据维度,就进行下采样。

总结:池化层相比卷积层可以更有效的降低数据维度,这么做不但可以大大减少运算量,还可以有效的避免过拟合。

全连接层

全连接层类似传统神经网络的部分,用来输出想要的结果。经过卷积层和池化层处理过的数据输入到全连接层,得到最终想要的结果。

经过卷积层和池化层降维过的数据,全连接层才能”跑得动”,不然数据量太大,计算成本高,效率低下。

卷积神经网络 – CNN_神经网络_12

多层组合应用

典型的 CNN 并非只是上面提到的3层结构,而是多层结构,例如 最早由Yann LeCun在1998年提出并应用在手写字体识别上(MINST)的LeNet-5就有5层:

卷积层 – 池化层- 卷积层 – 池化层 – 卷积层 – 全连接层

其网络结构如下:

卷积神经网络 – CNN_池化_13

LeNet-5 是一个很小的网络,只有约 6 万个参数,现代的神经网络经常有上千万甚至上亿个参数。

卷积神经网络 – CNN_池化_14

  • LeNet-5 名字中的“5”也可以理解为整个网络中含可训练参数的层数为 5。)
  • LeNet-5 大约有 60,000 个参数。详细计算可以看Lenet5参数计算详解

一些有助于理解CNN的动图

数字识别

卷积神经网络 – CNN_CNN_15

分类场景下的CNN

卷积神经网络 – CNN_卷积_16

目标定位检测

卷积神经网络 – CNN_CNN_17

骨骼、动作识别

卷积神经网络 – CNN_神经网络_18

卷积神经网络 – CNN_卷积_19

总结

综合起来说,CNN通过卷积来模拟特征区分,并且通过卷积的权值共享及池化,来降低网络参数的数量级,最后通过传统神经网络完成分类等任务。

参考资料:

标签:池化层,卷积,特征,神经网络,图像,CNN
From: https://blog.51cto.com/u_15588078/6531143

相关文章

  • 深度学习-强化学习-图神经网络-自然语言处理等AI课程超级大列表-最新版
        本篇文章内容整理自网络,汇集了大量关于深度学习、强化学习、机器学习、计算机视觉、语音识别、强化学习、图神经网络和自然语言处理相关的各种课程。之前分享过一次,经过一年的更新,又补充了很多2019、2020年的最新资源,补充了一些主题,提供给不间断学习,充实自己的朋友,借下面Hi......
  • 深度学习阅读笔记(四)之卷积网络CNN
    卷积神经网络  17.《基于卷积神经网络的木材缺陷识别》(具体应用)(1)主要内容:采用卷积神经网络(CNN)来建立木材缺陷识别系统。详细介绍了CNN网络的基本结构和技术特点。详细介绍了实验CNN网络模型的构件。(2)采用方法:卷积神经网络(CNN)(3)特点:权值共享,下采样,局部感受野(4)优点:卷积神经网络在处......
  • matlab的基于遗传算法优化bp神经网络多输入多输出预测模型
    matlab的基于遗传算法优化bp神经网络多输入多输出预测模型,有代码和EXCEL数据参考,精度还可以,直接运行即可,换数据OK。原创文章,转载请说明出处,资料来源:http://imgcs.cn/5c/632809753171.html这个程序是一个基于遗传算法优化的BP神经网络多输入两输出模型。下面我将对程序进行详细分析......
  • 神经网络基础知识与实现
    目录神经网络是人工智能领域中的一个重要概念,它是指一种模拟人脑神经元的计算方法。神经网络通过从大量数据中学习,来预测未来的状态或执行特定的任务。本文将介绍神经网络的基础知识与实现,包括神经网络的基本概念、技术原理、实现步骤以及示例与应用。同时,本文还将探讨神经网络的性......
  • 基于神经网络的大模型在图像识别中的应用
    目录1.引言2.技术原理及概念3.实现步骤与流程4.示例与应用5.优化与改进6.结论与展望随着深度学习技术的不断发展,特别是在计算机视觉领域,基于神经网络的大模型在图像识别中的应用越来越广泛。这些模型能够在处理大量图像数据的同时,准确地识别出各种物体和场景,取得了令人瞩目的......
  • 基于神经网络的经济景气预测模型软件设计
    国内生产总值(GrossDomesticProduct)是国民经济核算的核心指标。它不仅能从总体上度量国民产出和收入规模,也能从整体上度量经济波动和经济周期状态,成为宏观经济中最受关注的经济数据,被认为是衡量国民经济发展、判断宏观经济运行状况的一个重要指标,也是政府制定经济发展战略和经济......
  • TensorFlow09.1 神经网络-其他训练Tricks(Early Stopping和Dropout)
    Tricks▪EarlyStopping▪Dropout▪StochasticGradientDescent1Earlystopping我们走到最大指的时候我们可以提交stop掉,防止它overfitting。1.1How-To▪Validationsettoselectparameters(选择一个参数)▪Monitorvalidationperformance(检测变量的表现)▪......
  • 多输入通道和多输出通道的卷积计算
    ......
  • TensorFlow08 神经网络-keras实战
    1数据集:这个照片很模糊,大小只有[32,32],所以我们预测的结果也不是很好。2自定义网络层(MyDenselayer)原本的网络层:w@x+b然后我们自己定义了一个,特意的把+b去掉了。3数据加载importosos.environ['TF_CPP_MIN_LOG_LEVEL']='2'importtensorflowastffromtensorfl......
  • TensorFlow08 神经网络-模型的保存和加载
    一般情况下有三种方式:▪save/loadweights(只保存网络的参数,状态不管)▪save/loadentiremodel(把所有的状态都保存)▪saved_model(交给工厂的时候可以用,可以跨语言)1save/loadweights比如说你的网络里面有[w1,b1,w2,b2,w3,b3]这些参数,我们使用model.save_weights('')可以......