文章目录

  • 1. 人类的视觉原理
  • 2. 发展历程
  • 3. CNN 解决了什么问题?
    • 3.1 需要处理的数据量太大
    • 3.2 很难保留原有的特征
  • 4. CNN 的基本结构
    • 4.1 卷积——提取特征
    • 4.2 池化层(下采样)——数据降维,避免过拟合
    • 4.3 全连接层——输出结果

卷积神经网络 – CNN 最擅长的就是图片的处理。它受到人类视觉神经系统的启发。

CNN 有2大特点:

  1. 能够有效的将大数据量的图片降维成小数据量
  2. 能够有效的保留图片特征,符合图片处理的原则

目前 CNN 已经得到了广泛的应用,比如:人脸识别、自动驾驶、美图秀秀、安防等很多领域。

1. 人类的视觉原理

深度学习的许多研究成果,离不开对大脑认知原理的研究,尤其是视觉原理的研究。

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

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

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

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

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

答案是肯定的,这也是许多深度学习算法(包括CNN)的灵感来源。

2. 发展历程

Yann Lecun等人在1983年提出基于梯度学习的卷积神经网络算法,并将其成功用于手写数字字符识别,在那时的技术条件下就能取得低于于1%的错误率。因此, LeNet这一卷积神经网络便在当时效力于全美几乎所有的邮政系统,用来识别手写邮政编码进而分拣邮件和包裹。可以说, LeNet是第一个产生实际商业价值的卷积神经网络,同时也为卷积神经网络以后的发展奠定了坚实的基础。

时间来到2012年,在有计算机视觉界“世界杯”之称的 Imagenet图像分类竞赛四周年之际, Geoffrey E. Hinton等人凭借卷积神经网络 Alex-net力挫日本东京大学、英国牛津大学VGG组等劲旅,且以超过第二名近12%的准确率一举夺得该竞赛冠军,霎时间学界业界纷纷惊愕哗然。自此便揭开了卷积神经网络在计算机视觉领城逐渐称霸的序幕。

3. CNN 解决了什么问题?

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

  1. 图像需要处理的数据量太大,导致成本很高,效率很低

  2. 图像在数字化的过程中很难保留原有的特征,导致图像处理的准确率不高

3.1 需要处理的数据量太大

图像是由像素构成的,每个像素又是由颜色构成的。


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

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

1000×1000×3=3,000,000

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

卷积神经网络 – CNN 解决的第一个问题就是「将复杂问题简化」,把大量参数降维成少量参数,再做处理。

更重要的是:我们在大部分场景下,降维并不会影响结果。比如1000像素的图片缩小成200像素,并不影响肉眼认出来图片中是一只猫还是一只狗,机器也是如此。

3.2 很难保留原有的特征

图片数字化的传统方式我们简化一下,就类似下图的过程:

图像简单数字化无法保留图像特征
假如有圆形是1,没有圆形是0,那么圆形的位置不同就会产生完全不同的数据表达。但是从视觉的角度来看,图像的内容(本质)并没有发生变化,只是位置发生了变化。

所以当我们移动图像中的物体,用传统的方式的得出来的参数会差异很大!这是不符合图像处理的要求的。

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

4. CNN 的基本结构

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

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

4.1 卷积——提取特征

用一个卷积核扫完整张图片:

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

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


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

4.2 池化层(下采样)——数据降维,避免过拟合

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

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

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

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

4.3 全连接层——输出结果

这个部分就是最后一步了,经过卷积层和池化层处理过的数据输入到全连接层,得到最终想要的结果。

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


典型的 CNN 并非只是上面提到的3层结构,而是多层结构,例如 LeNet-5 的结构就如下图所示:

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

卷积神经网络 – CNN相关推荐

  1. 卷积神经网络(CNN)张量(图像)的尺寸和参数计算(深度学习)

    卷积神经网络(CNN)张量(图像)的尺寸和参数计算(深度学习) 分享一些公式计算张量(图像)的尺寸,以及卷积神经网络(CNN)中层参数的计算. 以AlexNet网络为例,以下是该网络的参数结构图. A ...

  2. 卷积神经网络(CNN,ConvNet)

    卷积神经网络(CNN,ConvNet) 卷积神经网络(CNN,有时被称为 ConvNet)是很吸引人的.在短时间内,变成了一种颠覆性的技术,打破了从文本.视频到语音等多个领域所有最先进的算法,远远超出 ...

  3. 卷积神经网络(CNN)的简单实现(MNIST)

    卷积神经网络(CNN)的基础介绍见http://blog.csdn.net/fengbingchun/article/details/50529500,这里主要以代码实现为主. CNN是一个多层的神经 ...

  4. 卷积神经网络(CNN)实现CIFAR100类别分类

    卷积神经网络(CNN)实现CIFAR100类别分类 1. CIFAR100数据集介绍 这个数据集就像CIFAR-10,除了它有100个类,每个类包含600个图像.,每类各有500个训练图像和100个测 ...

  5. 卷积神经网络(CNN)简介

    卷积神经网络(CNN)简介 多层的线性网络和单层的线性网络没有区别,而且线性模型的能够解决的问题也是有限的 1. 更复杂抽象的数据 一个单隐含层有更多的神经元,就能捕捉更多的特征.而且有更多隐层,意味 ...

  6. 一文看懂卷积神经网络-CNN(基本原理+独特价值+实际应用)

    http://blog.itpub.net/29829936/viewspace-2648775/ 2019-06-25 21:31:18 卷积神经网络 – CNN 最擅长的就是图片的处理.它受到人类 ...

  7. 卷积神经网络(CNN)反向传播算法

    在卷积神经网络(CNN)前向传播算法中,我们对CNN的前向传播算法做了总结,基于CNN前向传播算法的基础,我们下面就对CNN的反向传播算法做一个总结.在阅读本文前,建议先研究DNN的反向传播算法:深度 ...

  8. 卷积神经网络(CNN)前向传播算法

    在卷积神经网络(CNN)模型结构中,我们对CNN的模型结构做了总结,这里我们就在CNN的模型基础上,看看CNN的前向传播算法是什么样子的.重点会和传统的DNN比较讨论. 1. 回顾CNN的结构 在上一 ...

  9. 深度学习(DL)与卷积神经网络(CNN)学习笔记随笔-04-基于Python的LeNet之MLP

    原文地址可以查看更多信息 本文主要参考于:Multilayer Perceptron  python源代码(github下载 CSDN免费下载) 本文主要介绍含有单隐层的MLP的建模及实现.建议在阅读 ...

  10. 深度学习(DL)与卷积神经网络(CNN)学习笔记随笔-03-基于Python的LeNet之LR

    原地址可以查看更多信息 本文主要参考于:Classifying MNIST digits using Logistic Regression  python源代码(GitHub下载 CSDN免费下载) ...

最新文章

  1. 【每日一算法】二叉搜索树结点最小距离
  2. 一路去**ddss第二天
  3. 【NLP】21个经典深度学习句间关系模型|代码技巧
  4. ZOJ1654(二分构图题典例)
  5. 信息学奥赛一本通 1147:最高分数的学生姓名 | OpenJudge NOI 1.9 02:输出最高分数的学生姓名
  6. 2c语言程序设计_大学生学C语言的理由是什么
  7. CCNA培训课总结笔记--RIP的基本配置(五)
  8. 随手一写,简单的四则运算练习
  9. OEM XP 让你的盗版xp像品牌机一样华丽
  10. 原来找展会会刊(参展商名录)这么简单
  11. 华为安全 HCIP722笔记
  12. 多个PDF文件怎么合并?PDF合并的方法教程
  13. photoshop去眼袋
  14. 板岩Slate Digital发布FG-X 2 ML-1 FG-36A
  15. 学习FPGA的网站推荐
  16. SIM显示字 SPN,PLMN ,MCC,MNC
  17. 计算机桌面怎么能添加文字,怎么在电脑桌面上添加文字
  18. Linux添加IP黑名单
  19. CDH 的Kerberos认证配置
  20. Golang 发送html Gmail邮件

热门文章

  1. Query Designer中的特征限制(Characteristic Restrictions)、缺省值(Default Values)、自由特性(Free Characteristics)...
  2. 字符串匹配算法总结(转)
  3. twisted学习资料
  4. 【PHP】【PHP100改进系列】上传图片水印、缩略图、图片大小预处理类
  5. Oracle物化视图的简单使用
  6. ORA-01810格式代码出现两次 的解决方案
  7. PyQT5-QProgressBar
  8. 浙大PAT CCCC L3-014 周游世界 ( 最短路变形 )
  9. 关于在Android中访问和使用到上下文变量
  10. [Java_kaikeba]java中堆和栈的区别(对象变量的理解)