cnn卷积神经网络

1.介绍

卷积神经网络(Convolutional Neural Networks,简称CNN)是一种具有部分衔接、权值同享等特点的神经网络(Feedforward Neural Networks),是深度学习(deep learning)的代表算法之一,擅长处理图画特别是图画识别等相关机器学习问题,比方图画分类、方针检测、图画切割等各种视觉使命中都有明显的提升效果,是现在使用最广泛的模型之一。

cnn卷积神经网络

图1.左为神经网络(全衔接结构),右为卷积神经网络。

2.为什么是cnn能够处理图画处理问题

2.1.图画

图片在核算机中保存的格局为一个个的像素,比方一张长度为1080,宽度为1024的图片,一共包括了1080 * 1024的像素,假如为RGB图片,因为RGB图片由3种颜色叠加而成,包括3个通道,因而咱们需要用1080 * 1024 * 3的数组来表明RGB图片。举例如下图:打印一个RGB图画并观察成果。

cnn卷积神经网络

图2.RGB图画

cnn卷积神经网络

图3.RGB图画形状输出

咱们读入后的数组的终究一个维度是 3,关于核算视觉使命来说,绝大多数处理的图片都是 RGB 格局,假如不是 RGB 格局的话,要记得事前转化成 RGB 格局。

2.2为什么是cnn

在卷积网络之前,一般的网络选用的是矩阵乘法的方法,前一层的每一个单元都对下一层每一个单元有影响。下面看图理解:

cnn卷积神经网络

图中s是由矩阵乘法产生,响应层的每一个神经元,都会遭到输入层每一个神经元的影响。

举个例子,全衔接网络的输入层是 1000* 1000* 3 的一张图片,那么这个向量维度便是 300w 。那么就会有一个 300w个神经元节点的输入层。同时,下一层的神经元节点个数就不能取的太少,太少的话,原始的输入又多,这就导致很难捕捉到更多的信息。假定下一层神经元节点个数取4000个,那么两层之间有多少个权重参数w呢?即:300w * 4K 个权重 w 。

这样会导致参数量过大,单单一层就有 300w * 4K 参数,过多的参数会带来两方面问题:

1.参数量太大,关于工程上是一个很大的挑战,终究更新参数时压力较大;

2.参数量大,简单导致过拟合(overfitting),参数量大,会导致模型的拟合才能十分强,这个时分会带来过拟合问题,而且很难控制;

由此可见,图画处理进程中参数量过大是一个问题。那么有没有一个办法能够保持它的学习才能,使得它能够在图画上捕捉到尽或许多的信息,又能把参数量降下来呢?在此需求下,卷积神经网络这类的网络由此呈现。

下面,从cnn网络架构讲起。

3.cnn网络架构

cnn卷积神经网络

10分类卷积神经网络架构图

3.1.卷积层

3.1.1卷积核算

cnn卷积神经网络

以上述单通道的灰度图画为例。能够在上图中看到,图中黑色色块中的白色数字为4,假定白色区域(即数字4对应部分)的值为1,而与之相邻的黑色色块的值为0,那么咱们便能得到色块不同区域对应的值,将其用表格的方式进行展示,如下图所示:

cnn卷积神经网络

假定色块能够用8*8的像素表明,像素值为0(白色)或1(黑色)。

单次的卷积运算,即为左面赤色框内的数字与卷积核(kernel)/过滤器(filter)中对应方位的数字相乘再求和,其成果为右边赤色框内示出的值(0)。能够看到,框的巨细,即卷积核的巨细是人为设定的,直观地,能够将卷积核的巨细与“时间分辨率”类比,卷积核越大,分辨率越低。

然后,将赤色框向右移动一个单位(即滑动步长stride=1),再次进行卷积运算,这个进程如下图所示:

cnn卷积神经网络

然后不断重复以上进程(向右移动到末端之后,回到开始方位,再向下移动同样的stride,再重复以上进程即可),能够得到终究成果:

cnn卷积神经网络

例如,下图中左面赤色框内数字与卷积核所做卷积运算所得成果为右边赤色框内的3,图中给出了在步长stride=1的状况下,卷积运算所得新的表格的边长的核算公式(其间f即为filter边长)。别的,过滤器和卷积核在CNN中是一个意思,以下统一用卷积核来表述。

cnn卷积神经网络

3.1.2填充(也便是说卷积层不必定降维)

由以上卷积进程能够看到,卷积运算或许导致“表格”(以下表述为“图画”)减小,有些状况下或许不希望呈现这种状况,这时会选用填充(padding)的方法来处理,填充其实便是进行卷积前的一些预处理。但在CNN中padding也或许指代这种特别类型的卷积运算。

cnn卷积神经网络

由上图能够看到,为了使得巨细为66的图画(N2)经卷积运算后巨细不变,能够事前填充,将其变为88的图画(这儿用0填充),经过卷积运算能够得到6*6的图画(N3)。称这种图画经卷积运算后巨细不变的填充方法为same(在许多CNN的模型如VGG-16中都会用到same方法的卷积运算)。

3.1.3.卷积层的效果-特征提取

卷积层有很多卷积核,经过做越来越多的卷积,提取到的图画特征会越来越抽象。

cnn卷积神经网络

上图挑选了2种filter分别对图中的矩阵做卷积,能够看到值越大的就表明找到的特征越匹配,值越小的就表明找到的特征越违背。

  • Filter1主要是找到为”|”形状的特征,能够找到1处,转化后相乘值为3的网格就表明原始的图画中有”|”,
  • Filter2主要是找到为””形状的特征,能够找到2处,转化后相乘值为3的网格就表明原始的图画中有””。

3.1.4.感触野

感触野:卷积神经网络每一层输出的特征图(featuremap)上的像素点在输 入图片上映射的区域巨细,即特征图上的一个点对应输入图上的区域。下图反映了经过几层卷积之后,卷积成果所对应前几层的图画数据范围。

cnn卷积神经网络

感触野的巨细的能够核算的,核算进程衔接。

3.1.5.三通道图画的卷积核算

在实际使用中,CNN中往往用到多个通道的情形,以三个通道的情形为例,卷积运算进程如下图所示:

cnn卷积神经网络

能够看出,此时依旧是对应方位的数字相乘然后再求和。

一般用立方体的方式表明以上进程,且往往卷积核数目为多个(卷积层的深度) ,如下图所示:

cnn卷积神经网络

cnn卷积神经网络

三通道图画(883)经过4个卷积核(33),输出是664特征图,当时层神经元的个数(66*4个)。 能够看到当时层卷积核的深度也决议了后边成果的层数,也是成果的厚度。

3.1.6.卷积层对应的神经网络方式

cnn卷积神经网络

注:左侧输入层,以及中心卷积核非神经元节点。

如上图所示,最右侧卷积层的神经元个数由特征图矩阵的巨细决议。比方上文说到三通道图画(883)经过4个卷积核(33),输出是664特征图,当时层神经元的个数(66*4个)。

来自同一Feature Map的每个神经元与上一层22区域部分相连,22也是滤波器的巨细,这也是卷积神经网络部分衔接的思维。

激活函数 :是一种非线性函数,对输出成果进行转化,使模型取得非线性特性。用来归一化输出成果使其限制在必定的范围内。

3.2.池化层(降维)

在卷积运算之后,经常进行池化处理(但这不是有必要的)以进一步削减运算量,如下图所示,挑选3*3的区域(赤色框),最大池化即为从中选取最大值(这儿是2)。

cnn卷积神经网络

步长stride=3(图中用s表明),因而能够得到四个池化后的值。均匀池化与最大池化相似,差异仅在于核算赤色框内数值的均匀值,最大池化与均匀池化的终究成果如下图所示:

cnn卷积神经网络

3.2.1.池化层的效果

对特征进行降维,进步后续特征的感触野,也便是让池化后的一个像素对应前面图片中的一个区域。

3.3全衔接层

池化层的后边一般接着全衔接层,全衔接层将池化层的一切特征矩阵转化成一维的特征大向量,全衔接层一般放在卷积神经网络结构中的终究,用于对图片进行分类,到了全衔接层,咱们的神经网络就要准备输出成果了。

cnn卷积神经网络

因为从卷积层过来的数据太多了,全衔接层的效果主要是对数据进行降维操作,否则数据骤降到输出层,或许会丢掉一些图画特征的重要信息。

值得注意的是全衔接层便是一个彻底衔接的神经网络,依据权重每个神经元反馈的比重不一样,终究经过调整权重和网络得到分类的成果。

因为全衔接层占用了神经网络80%的参数,因而对全衔接层的优化就显得至关重要,现在也有用均匀值来做终究的分类的。

3.4输出层

从全衔接层到输出层会再一次削减数据,变成更加低维的向量,这个向量的维度便是需要输出的类别数。然后将这个向量的每个值转化成概率的表明,这个操作一般叫做softmax,softmax使得向量中每个值范围在(0,1)之间,它是二分类函数sigmoid在多分类上的推广,目的是将多分类的成果以概率的方式展示出来

cnn卷积神经网络

4.CNN的练习进程

  • Step 1:用随机数初始化一切的卷积核和参数/权重
  • Step 2:将练习图片作为输入,执行前向过程(卷积, ReLU,池化以及全衔接层的前向传播)并核算每个类别的对应输出概率。
  • Step 3:核算输出层的总误差
  • Step 4:反向传播算法核算误差相关于一切权重的梯度,并用梯度下降法更新一切的卷积核和参数/权重的值,以使输出误差最小化

注:卷积核个数、卷积核尺寸、网络架构这些参数,是在 Step 1 之前就现已固定的,且不会在练习进程中改变——只要卷 积核矩阵和神经元权重会更新。

5.经典cnn模型

链接

6.传统cv算法

链接