zoukankan      html  css  js  c++  java
  • 卷积神经网络CNN

    一、图片识别--前馈神经网络

          

           前馈神经网络 要识别上面各图中不同位置的“横折”,必须要用大量物体位于图片的不同位置的数据进行训练,同时增加网络的隐藏层个数从而扩大网络学习这些变体的能力。

            然而这样做效率并不高,不管“横折”在哪个位置,都是横折,明明是相同的东西,在不同位置为什么就要重新学习。有没有方法可以将中间所学到的规律也运用到其它位置,换句话说,就是让不同的位置用相同的权重。

    二、卷积神经网络

        卷积神经网络(Convolution Neural Network),简称CNN。卷积神经网络就是让权重在不同位置共享的神经网络。

        常见的卷积神经网络框架有LeNet-5、AlexNet、ZFNet、VGGNet、GoogleNet、ResNet,我们常用的是VGGNet,GoogleNet,ResNet。

    CNN主要用于图像分类和物品识别等应用场合。

      1、卷积神经网络的工作原理

      在卷积神经网络中,我们选择一个局部区域去扫描整张图片,局部区域所圈起来的所有节点会被连接到下一层的一个节点上,如下图所示:

      卷积层是卷积核在上一级输入层上通逐一滑动窗口计算而得,卷积核中的每一个参数都相当于传统神经网络中的权值参数,与对应的局部像素相连接,将卷积核的各个参数与对应的局部像素相乘之和,得到卷积层上的结果。卷积核的作用就是进行特征提取和特征映射。通过对卷积层的处理,再用模型对其训练,即可进行数据分类。

    所以,用不同的卷积核可以提取到不同的图片特征。

    左边两个卷积核可以分别提取水平特征和垂直特征,下图为用不同的卷积核得到的不同的卷积层。

      2、CNN的核心思想

       CNN模型限制了参数个数并挖掘了局部特征结构。主要用于识别位移、缩放及其它形式的扭曲不变性的二维图形。局部感受视野,权值共享以及时间或空间的采样三种思想的结合,获得某种程度的位移、尺度、形变不变性。通过“卷积核”作为中介。同一个卷积核在所有图像内是共享的,图像通过卷积操作后,仍然保留原先的位置关系。

       3、CNN的实质

      CNN本质上是一种输入到输出的映射,它能够学习大量的输入与输出的映射关系,而不需要任何输入与输出的精确数学表达示,只要用已知的模式对卷积网络加以训练,网络就具有输入与输出之间的映射能力,在开始训练前,所有的权重都应该用一些不同的小随机数进行初始化。“小随机数”用来保证网络不会因权值过大而进入饱和状态从而导致训练失败,用来保证可以正常的学习。

      4、CNN的结构

    卷积神经网络结构一般包括以下几层:

      

     

      1)、输入层

      用于数据的输入。

      2)、卷积层

      卷积层是卷积核在上一层输入层上通过逐一滑动窗口计算而得,卷积核中的每一个参数都相当于传统神经网络中的权值参数,将卷积核中的各个参数与对应的局部象素相乘之和,得到的卷积层上的结果。一般的,使用卷积核进行特征提取与特征映射。

      特征提取:每个神经元的输入与前一层的局部接受域相连,并提取该局部的特征。一旦该局部特征被提取后,它与其它特征之间的位置关系也相应被确定下来了;

      特征映射:网络的每个计算层由多个特征映射组成,每个特征映射是一个平面,平面上所有神经元的权值相等。由于一个映射面上的神经元共享权值,因而减少了网络自由参数的个数。

      3)、激励层

      由于卷积也是一种线性运算,因此需要增加非线性映射。使用的激励函数一般用Relu函数。

      4)、池化层

      进行下采样,对特征图进行稀疏处理,减少数据运算量。通过卷积层获得了图像的特征之后,理论上可以直接使用这些特征进行训练分类,但这样可能会面对巨大的数据量挑战,从而会产生过拟合现象。为了进一步降低网络训练参数及模型的过拟合程度,需要对卷积层进行池化/采样处理。池化采样方式有两种:

      a)、max_pool:最大池化,取池化窗口中最大值作为采样值

      b)、mean_pool:平均池化,取池化窗口中所有数的平均值作为采样值

      5)、全链接层

      CNN尾部进行重新拟合,减少特征信息损失。

      6)、输出层

      用于最后结果的输出

       5、CNN优点

      1)、输入图像与网络的拓扑结构能够很好的吻合

      2)、尽管使用较少的参数,仍然有出色的性能

      3)、避免了显式的特征抽取,而隐式地从训练数据中抽取

      4)、特征提取与模式分类同时进行,并同时在训练中产生,网络可以并行学习

      5)、权值共享减少网络的训练参数,降低了网络的复杂性,适用性更强

      6)、无需手动选取特征,训练好权重,即得特征,分类效果好

      7)、直接输入网络,避免了提取和分类过程中数据重建的复杂度

      6、CNN缺点

      1)、需要调整参数

      2)、需要大样本量,训练最好用GPU

      3)、物理 含义不明确,神经网络本身就是一种难以理解的“黑箱”模型

     

     

     

     

        

        

           

      

     

     

     

       

  • 相关阅读:
    Codeforces 1045C Hyperspace Highways (看题解) 圆方树
    Codeforces 316E3 线段树 + 斐波那切数列 (看题解)
    Codeforces 803G Periodic RMQ Problem 线段树
    Codeforces 420D Cup Trick 平衡树
    Codeforces 295E Yaroslav and Points 线段树
    Codeforces 196E Opening Portals MST (看题解)
    Codeforces 653F Paper task SA
    Codeforces 542A Place Your Ad Here
    python基础 异常与返回
    mongodb 删除
  • 原文地址:https://www.cnblogs.com/baoxuhong/p/10182404.html
Copyright © 2011-2022 走看看