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)、物理 含义不明确,神经网络本身就是一种难以理解的“黑箱”模型

     

     

     

     

        

        

           

      

     

     

     

       

  • 相关阅读:
    Deployment descriptor
    实体、list 、xml之间的转化
    关于C# 汉字转拼音问题
    NPoco学习笔记(1)
    SQL(二)
    SQL(一)
    sobel算子及cvSobel
    图像的平滑处理
    erase的用法
    int main(int argc, char* argv[ ])
  • 原文地址:https://www.cnblogs.com/baoxuhong/p/10182404.html
Copyright © 2011-2022 走看看