zoukankan      html  css  js  c++  java
  • Python_DL_July_03_卷积神经网络与图像识别

    1. 神经网络与CNN的异同点

    • 传统的神经网络的神经元、参数比较多,而CNN可以大大简化神经元和参数的数量。但计算量要大大的提高。

    • 传统神经网络采用的是f(x) = wx+b。但CNN中虽保留了层级式的网络结构,但不同层次有不同的形式,即运算和功能。输出时做归一化,转化成概率向量,让CNN能最终知道它最可能的图片意思是什么?

    2. CNN层级结构

    • conv layer的工作原理:conv layer中的神经元看出做一个filter(3x3x3的矩阵,每个filter都带有不同的weights,即特征不同)。每个filter都要通过窗口滑动,并进行局部计算,分别得到每个位置的不同的feature maps(有多少个filter,就有多少了feature map)。
    • conv layer运算操作demo:https://cs231n.github.io/assets/conv-demo/index.html 。其中输入数据做了zero-padding,有2个filter,每个filter有3个通道,y=wx+b,输出时深度为2的feature map,通过点乘以后得到的值。
    • activation layer: 

          

    • pooling:本质是降维,在保证大多数的数据的情况下,把维度降下来有两种办法:1. 取max值,2. 求平均。
    • FC layer:两层之间的所有神经元都有权重连接,并出现在CNN的尾部。

    3. 卷积神经网络训练算法 

    • FP是利用y=(wx+b),再激励函数做激励。
    • BP就是对激励函数后的值算dw和db的偏导,最终在BP传播的过程中利用SGD进行更新w和b。

    4. 正则化,过拟合

    • Regulation:L1&L2,防止overfitting
    • Dropout:随机设置50%输出的值为0,而下一次再把设置改回来,再随机设置50%的输出值为0.  

    正文

     

    1. 神经网络与卷积神经网络

    神经网络可以处理各种数据,由文本数据、图像数据、语音数据和视频数据等等。在处理图像数据的神经网络就是CNN,它主要完成分类工作。

    传统的神经网络的神经元、参数比较多,而CNN可以大大简化神经元和参数的数量。但计算量要大大的提高。

    1)CNN层次结构 

    传统神经网络采用的是f(x) = wx+b。但CNN中虽保留了层级式的网络结构,但不同层次有不同的形式,即运算和功能。输出时做归一化,转化成概率向量,让CNN能最终知道它最可能的图片意思是什么?

      

    CNN的核心三层:conv为convolution layer,ReLU为activation layer,Pool为pooling layer。有时,conv layer和ReLU一起叫做conv layer。

    FC layer是全连接层,它的相邻层都是全连接。

    Batch Normalization层是个高级层次(15年提出),主要是训练用的。

       

    二维数据(x1,x2),做中心化就是把每个值减去相应的值,平移到原点。如果不做中心化,在工业上会发现它非常容易饱和。 中心化后,(x1,x2)的scale的幅度不一样,为了后面的计算更顺利,可以做normalization,即gaining除以它的方差。

    • 饱和的概念:BP是链式求导法则。如果你的activation非常大,它的导数接近0, 意味着我用梯度下降学不到东西。它就饱和了。这叫做梯度消失或梯度弥散

    有可能(x1,x2)是有关联的数据,那么我们就会将数据做纵坐标和横坐标的投影,得到的(x1,x2)维度无相关。

    以上都是数据的处理方式,但对于图像,我们大多只做去均值。因为图片的像素值在0~255之间的,所以不需要对它的幅度做调整。它的维度和幅度大小都一致。scanning的操作可做可不做,因为不做不会影响后续的工作,它的维度天生就限制在一个范围内了。 

    取均值有两种方式,Alexnet和VGG :

    • Alexnet:一张彩色图片是227x227x3,它去均值有两种方式:把所有训练集里的1W张图片的227x227x3的矩阵加在一起,再除以1W,得到一个均值的矩阵227x227x3,后续利用这个mean matrix的减法。
    • VGG:一张彩色图片是227x227x3,是三个通道,分别是RGB。可以简单认为 它是3维的向量,VGG是在这3个通道上,分别去剪掉这三个均值。

    1.1) conv layer

    conv layer的工作原理:conv layer中的神经元看出做一个filter(3x3x3的矩阵,每个filter都带有不同的weights,即特征不同)。每个filter都要通过窗口滑动,并进行局部计算,分别得到每个位置的不同的feature maps(有多少个filter,就有多少了feature map)。

    • 深度表示有多少个filter参与了计算,就有多少个feature map,深度就是多少,也是下一层filter的个数。
    • 步长表示窗口滑动的间隔大小。
    • 填充值:有时候输入数据的窗口,不能被filter的窗口和步长整除,所以要做padding,在边缘补一圈0。

      

    conv layer的数据处理:我们的filter是3x3的矩阵,利用filter和原始数据的相应位置上的矩阵做运算(Σwx),得到加权求和的值(-8),

    conv layer参数共享机制:每个神经元连接数据窗的权重weights是固定的,可以看成是不同的模板,并且灭个weight值关注自己的特性。

     

     1.2) activation layer 

    通过卷积后,我们还需要利用激励函数对卷积(点乘,y=Σwx+b)的值进行激励。

       

    • sigmoid和tahn的缺点就是他们的梯度弥散问题(饱和)。 
    • ReLU:max(0,x),当输入是负数时,为0, 当输入是正数时,为输入值。
    • leaky ReLu,当输入为负数时,权重为很小。
    • ELU:当输入为负数时,激励函数为a(ex-1)

    1.3) 池化/pooling layer

    2012-》2013年的2Fnet的冠军没有结构上的改变,但是改变了filter的个数,所以利用pooling把大部分的信息留下就好,称为下采样。

      

     pooling本质是降维,在保证大多数的数据的情况下,把维度降下来,有两种操作办法:1. 取max值,2. 求平均。

    1.4) FC layer

    FC layer:两层之间的所有神经元都有权重连接,并出现在CNN的尾部。

     

    1.5) 卷积层可视化理解

    图片为输入数据,每个卷积层的左图为filter,右图为通过卷积后的data。

       

      

     3)卷积神经网络训练算法 

    BP就是对激励函数算dw和db的偏导,最终在BP传播的过程中利用SGD进行更新w和b。

       

    4) 卷积神经网络优缺点:

     

    2. 正则化

    Regulation:L1&L2,防止overfitting

    Dropout:随机设置50%输出的值为0,而下一次再把设置改回来,再随机设置50%的输出值为0. 

         

    3. 经典结构与训练

     

     

      

    AlexNet为了得到很多的信息,把步长设置为1,这样扫图就会更仔细。 

  • 相关阅读:
    装饰器模式(Decorator)
    原语:从0到1,从硬件指令集到OS原语,锁原语的哲学
    从Oop-Klass模型看透反射
    从三数之和看如何优化算法,递推-->递推加二分查找-->递推加滑尺
    单例模式-静态内部类实现及原理剖析
    单例模式-DCL双重锁检查实现及原理刨析
    二分查找java实现
    I/O管理杂记
    PCB WCF Web接口增减参数后,在客户端不更新的情况,是否影响客户端,评估测试
    PCB MS SQL 排序应用(row_number rank dense_rank NTILE PARTITION)
  • 原文地址:https://www.cnblogs.com/tlfox2006/p/13163171.html
Copyright © 2011-2022 走看看