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

    http://mp.weixin.qq.com/s?__biz=MzA3NDIyMjM1NA==&mid=2649031503&idx=1&sn=52124c89fd52d197db4e3f089bceec3a&chksm=8712bd32b0653424acdbdb1515ec009741bfe1a189eb44690cf71017ff0def71520534a4e5b3&scene=21#wechat_redirect

    1.什么是卷积

    在图像上滑动,取与卷积核大小相等的区域,逐像素做乘法然后相加

     例如原始图像大小是5*5,卷积核大小是3*3。首先卷积核与原始图像左上角3*3对应位置的元素相乘求和,得到的数值作为结果矩阵第一行第一列的元素值,然后卷积核向右移动一个单位(即步长stride为1),与原始图像前三行第2、3、4列所对应位置的元素分别相乘并求和,得到的数值作为结果矩阵第一行第二列的元素值,以此类推。

    故卷积就是:一个核矩阵在一个原始矩阵上从上往下、从左往右扫描,每次扫描都得到一个结果,将所有结果组合到一起得到一个新的结果矩阵。

    2.为什么用卷积来学习

    图像都是用方形矩阵来表达的,学习的本质就是要抽象出特征,以边缘检测为例。它就是识别数字图像中亮度变化明显的点,这些点连接起来往往是物体的边缘。

    传统的边缘检测常用的方法包括一阶和二阶导数法,本质上都是利用一个卷积核在原图上进行滑动,只是其中各个位置的系数不同,比如3*3的sobel算子计算x方向的梯度幅度,使用的就是下面的卷积核算子。

     如果要用sobel算子完成一次完整的边缘检测,就要同时检测x方向和y方向,然后进行融合。这就是两个通道的卷积,先用两个卷积核进行通道内的信息提取,再进行通道间的信息融合。

    这就是卷积提取特征的本质,而所有基于卷积神经网络来学习的图像算法,都是通过不断的卷积来进行特征的抽象,直到实现网络的目标。

    3,卷积神经网络的优势在哪?

     前面说了全连接神经网络的原理和结构上的缺陷,而这正好是卷积的优势。

    (1) 首先是学习原理上的改进,卷积神经网络不再是有监督学习了,不需要从图像中提取特征,而是直接从原始图像数据进行学习,这样可以最大程度的防止信息在还没有进入网络之前就丢失。

    (2) 另一方面是学习方式的改进。前面说了全连接神经网络一层的结果是与上一层的节点全部连接的,100×100的图像,如果隐藏层也是同样大小(100*100个)的神经元,光是一层网络,就已经有 10^8 个参数。要优化和存储这样的参数量,是无法想象的,所以经典的神经网络,基本上隐藏层在一两层左右。而卷积神经网络某一层的结点,只与上一层的一个图像块相连。

    用于产生同一个图像中各个空间位置像素的卷积核是同一个,这就是所谓的权值共享。对于与全连接层同样多的隐藏层,假如每个神经元只和输入10×10的局部patch相连接,且卷积核移动步长为10,则参数为:100×100×10×10,降低了2个数量级。

    又能更好的学习,参数又低,卷积神经网络当然是可以成功了。

    4.卷积神经网络的核心基础概念

    在卷积神经网络中,有几个重要的基本概念是需要注意的,这在网络结构的设计中至关重要。

    (1) 感受野

    直观上讲,感受野就是视觉感受区域的大小。在卷积神经网络中,感受野是CNN中的某一层输出结果的一个元素对应输入层的一个映射,即feature map上的一个点所对应的输入图上的区域,具体示例如下图所示。

     如果一个神经元的大小是受到上层N*N的神经元的区域的影响,那么就可以说,该神经元的感受野是N*N,因为它反映了N*N区域的信息。在上图conv2中的像素点5,是由conv1的2*2的区域计算得来,而该2*2区域,又是由raw image中5*5的区域计算而来,所以,该像素的感受野是5*5。可以看出感受野越大,得到的全局信息越多。在物体分割,目标检测中这是非常重要的一个参数。

    (2) 池化

    有了感受野再来解释池化(pooling)也很简单,上图的raw image到conv1,再到conv2,图像越来越小。每过一级就相当于一次降采样,这就是池化。池化可以通过步长不为1的卷积实现,也可以通过pool直接插值采样实现,本质上没有区别,只是权重不同。

     通过卷积获得了特征之后,下一步则是用这些特征去做分类。理论上讲,人们可以把所有解析出来的特征关联到一个分类器,例如softmax分类器,但计算量非常大,并且极易出现过度拟合(over-fitting)。而池化层则可以对输入的特征图进行压缩,一方面使特征图变小,简化网络计算复杂度;一方面进行特征压缩,提取主要特征。

     一般而言池化操作的池化窗口都是不重叠的,所以池化窗口的大小等于步长stride。如下图所示,采用一个大小为2*2的池化窗口,max pooling是在每一个区域中寻找最大值,这里的stride=2,最终在原特征图中提取主要特征得到右图。

    除此之外,还有卷积核的大小,卷积的步长,通道的边界填充值等等,都是很好理解的基本概念。

    一般的,卷积核边长大小F为奇数

    1、方便padding = same卷积操作,左右(上下)两边对称补零;

    2、奇数卷积核有中心像素,便于确定卷积核的位置。

    被卷积对象的大小为n*n,卷积核大小为k*k,padding幅度为(k-1)/2

    如何计算加padding之后的新合成图的(w,h)?

    w=h=n+2p-f+1

    卷积后的输出为n+2*(k-1)/2-k+1=n,即卷积输出为n*n,保证了卷积前后尺寸不变

    如何计算无padding新合成图的(w,h)?

    w=h=n-f+1

  • 相关阅读:
    HDU 5585 Numbers
    HDU 3308 LCIS
    POJ 2991 Crane
    POJ 1436 Horizontally Visible Segments
    POJ 3667 Hotel
    HaiHongOJ 1003 God Wang
    【SDOI 2008】 递归数列
    5月19日省中提高组题解
    【HDU 1588】 Gauss Fibonacci
    【POJ 3233】Matrix Power Series
  • 原文地址:https://www.cnblogs.com/Lazycat1206/p/11943892.html
Copyright © 2011-2022 走看看