一、卷积神经网络介绍
卷积神经网络广泛应用于计算机视觉领域。就处理图像数据来说,由于一幅图像有许多像素点和通道数,人工神经网络需要很多的权重值w,这样会大大损耗计算资源,也很容易造成过拟合现象。因此,产生了卷积神经网络,仅需很少的神经元就可以对图像进行很好地训练。
卷积神经网络主要有以下层次:
1、数据输入层/ input layer
2、卷积计算层/ conv layer
3、ReLU激励层/ ReLU layer
4、池化层/ Pooling layer
5、全连接层/ FC layer
6、Batch Normalization层(一般没有)
各层之间连接顺序如下图所示:
该图演示了卷积神经网络识别汽车图片的过程,经过几层卷积和池化后,输出的为预测的概率大小。
下面详细讲解下每一层次的结构内容:
1、数据输入层:
该层要做的处理主要是对原始图像数据进行预处理,其中包括:
• 去均值:把输入数据各个维度都中心化为0,如下图所示,其目的就是把样本的中心拉回到坐标系原点上。(每个数据都减去该维度数据的平均值)
• 归一化:幅度归一化到同样的范围,如下所示,即减少各维度数据取值范围的差异而带来的干扰,比如,我们有两个维度的特征A和B,A范围是0到10,而B范围是0到10000,如果直接使用这两个特征是有问题的,好的做法就是归一化,即A和B的数据都变为0到1的范围。
• PCA/白化:用PCA降维;白化是对数据各个特征轴上的幅度归一化
去均值与归一化效果图:
PCA和白化效果图:
2、卷积计算层
这一层就是卷积神经网络最重要的一个层次,也是“卷积神经网络”的名字来源。
在这个卷积层,有两个关键操作:
• 局部关联。每个神经元看做一个滤波器(filter)
• 窗口(receptive field)滑动, filter对局部数据计算
先介绍卷积层遇到的几个名词:
• 深度/depth(解释见下图)
• 步长/stride (窗口一次滑动的长度)
• 填充值/zero-padding
卷积层深度/depth与神经元的个数相等,如下图中有五个神经元ABCDE,卷积层的深度就是5,即有5组不同的窗口分别对图像进行卷积计算,得到的特征图像的通道数也是5。
填充值是什么呢?以下图为例子,比如有这么一个55的图片(一个格子一个像素),我们滑动窗口取22,步长取2,那么我们发现还剩下1个像素没法滑完,那怎么办呢?