深度学习--卷积神经网络
卷积神经网络
1、图像原理
图像在计算机中是一堆按顺序排列的数字,数值为0到255。0表示最暗,255表示最亮。

上图是只有黑白颜色的灰度图,而更普遍的图片表达方式是RGB颜色模型,即红、绿、蓝三原色的色光以不同的比例相加,以产生多种多样的色光。RGB颜色模型中,单个矩阵就扩展成了有序排列的三个矩阵,也可以用三维张量去理解。 其中的每一个矩阵又叫这个图片的一个channel(通道),宽, 高, 深来描述。

2、图像识别
画面不变性
知道一个物体不管在画面左侧还是右侧,都会被识别为同一物体,这一特点就是不变性

传统神经网络

解决办法是:用大量物体位于不同位置的数据训练,同时增加网络的隐藏层个数从而扩大网络学习这些变体的能力。
3、原理
1)什么是卷积
对图像(不同的窗口数据)和卷积核(一组固定的权重:因为每个神经元的多个权重固定,所以又可以看做一个恒定的滤波器filter)做内积(逐个元素相乘再求和)的操作就是所谓的『卷积』操作,也是卷积神经网络的名字来源。
2)卷积层
a.步长stride:每次滑动的位置步长。
b. 卷积核的个数:决定输出的depth厚度。同时代表卷积核的个数。
c. 填充值zero-padding:在外围边缘补充若干圈0,方便从初始位置以步长为单位可以刚好滑倒末尾位置,通俗地讲就是为了总长能被步长整除。
数据窗口每次移动两个步长取3*3的局部数据,即stride=2。
两组神经元(卷积核),即depth=2,意味着有两个滤波器。
zero-padding=1。

3)网络构架


4)卷积层计算结果

5)池化层

1.池化层作用
一种降采样,减小数据的空间大小,因此参数的数量和计算量也会下降,这在一定程度上也控制了过拟合。
2.常见的池化层
最大池化、平均池化、全局平均池化、全局最大池化。
平均池化(average pooling):计算图像区域的平均值作为该区域池化后的值。
最大池化(max pooling):选图像区域的最大值作为该区域池化后的值。是最为常见的。
通常来说,CNN的卷积层之间都会周期性地插入池化层。
3.池化层操作方法
与卷积层类似,池化层运算符由一个固定形状的窗口组成,该窗口根据其步幅大小在输入的所有区域上滑动,为固定形状窗口(有时称为 池化窗口)遍历的每个位置计算一个输出。 然而,不同于卷积层中的输入与卷积核之间的互相关计算,池化层不包含参数。
4.最大池化原理分析
Max pooling的主要功能是压缩,却不会损坏识别结果。 这意味着卷积后的Feature Map中有对于识别物体不必要的冗余信息。 那么我们就反过来思考,这些“冗余”信息是如何产生的。

6)全连接层
当抓取到足以用来识别图片的特征后,接下来的就是如何进行分类。 全连接层(也叫前馈层)就可以用来将最后的输出映射到线性可分的空间。 通常卷积网络的最后会将末端得到的长方体平摊(flatten)成一个长长的向量,并送入全连接层配合输出层进行分类。

7)感受野

例如图片是3通道: 卷积核为3个7*7的,则卷积核所需要的参数个数为:3*(3*7*7)=441个
卷积核为3个3*3的3层,则卷积核所需要的参数个数为:3*(3*3*3)+3*(3*3*3) +3*(3*3*3) =243
4、卷积神经网络的多种模型
LeNet:第一个成功的卷积神经网络应用
AlexNet:类似LeNet,但更深更大。使用了层叠的卷积层来抓取特征(通常是一个卷积层马上一个max pooling层)
ZF Net:增加了中间卷积层的尺寸,让第一层的stride和filter size更小。
GoogLeNet:减少parameters数量,最后一层用max pooling层代替了全连接层,更重要的是Inception-v4模块的使用。
VGGNet:只使用3x3 卷积层和2x2 pooling层从头到尾堆叠。
ResNet:引入了跨层连接和batch normalization。 DenseNet:将跨层连接从头进行到尾。








