CNN卷积神经网络
整体架构介绍
上图中CNN要做的事情是:给定一张图片通过特征提取,识别出来是什么车。
CONV:卷积计算层,线性乘积 求和。
RELU:激励层,ReLU是激活函数的一种。
POOL:池化层,简言之,即取区域平均或最大。
FC:全连接层
一个完整的CNN结构包括:
输入层:输入图像
卷积层:特征提取
池化层:降低尺寸
全连接层:计算并输出
1、卷积层
卷积层:对图像(不同的数据窗口数据)和滤波矩阵(一组固定的权重:因为每个神经元的多个权重固定,所以又可以看做一个恒定的滤波器filter)做内积(逐个元素相乘再求和)的操作就是所谓的『卷积』操作,也是卷积神经网络的名字来源。
滤波器:提取图像的不同特征,则用不同的滤波器filter,提取想要的关于图像的特定信息:颜色深浅或轮廓。滤波矩阵就是我们常说的卷积核。
上面最后一个图是动态图,图片是3通道(RGB),每一个通道都一个卷积核做内积,再加上偏置。
0 * 1+0 * 1+0 *(-1)+0 (-1)+0 * 0+1 * 1+0(-1)+0 *(-1)+1 * 0=1
0 *(-1)+0 * 0+0 *(-1)+0 * 0+1 * 0+1 *(-1)+0 *(1)+0 *(-1)+2 * 0= -1
0 * 0+0 * 1+0 * 0+0 *(1)+2 * 0+0 * 1+0 * 0+0 *(-1)+1 * 0=0
1+(-1)+0 +b(偏置1)=1。其余的依次计算即可
2、池化层:
池化方式一般有两种,一种为取最大值,另一种为取均值,池化的过程也是一个移动窗口在输入矩阵上滑动,滑动过程中去这个窗口中数据矩阵上最大值或均值作为输出,池化层的大小一般为2*2,步长为1。
池化层夹在连续的卷积层中间, 用于压缩数据和参数的量,减小过拟合。简而言之,如果输入是图像的话,那么池化层的最主要作用就是压缩图像(下采样)。
3、全连接层
全连接层在整个卷积神经网络中起到“分类器”的作用,即通过卷积、激活函数、池化等深度网络后,再经过全连接层对结果进行识别分类。
4、卷积结果计算公式
FW,FH 卷积核的宽高,S步长(每次滑动长度),P边缘填充圈数,OH,OW输出特征图的高和宽。
为什么是2p,因为一个矩阵是对称的,zero-padding填充,左右,上下都要填充,所以是2p
5、边缘填充
1、第一个缺点是每次做卷积操作,你的图像就会缩小,从6×6缩小到4×4,你可能做了几次之后,你的图像就会变得很小了,可能会缩小到只有1×1的大小。你可不想让你的图像在每次识别边缘或其他特征时都缩小。
2、第二个缺点如果你注意角落边缘的像素,这个像素点(左上角红色框)只被一个输出所触碰或者使用,因为它位于这个2×2的区域的一角。但如果是在中间的像素点,比如这个(绿色 蓝色 红色方框交汇处),就会有许多2×2的区域与之重叠。所以那些在角落或者边缘区域的像素点在输出中采用较少,意味着你丢掉了图像边缘位置的许多信息。
解决:
卷积操作之前填充这幅图像。可以沿着图像边缘再填充一层像素。丢失信息或者更准确来说角落或图像边缘的信息发挥的作用较小的这一缺点就被削弱了。为什么添加0?添加0做计算不会对结果产生影响。
6、参数共享
输入是一张图片,提取特征不同,那么卷积参数应该是不同的这样才合理。那为什么要参数共享?
1、参数共享能够很好的降低全连接网络的过拟合
2、参数共享也可以极大的降低参数的个数