卷积神经网络(CNN)基础知识
1.前言
如果说深度神经网络模型中的“明星”是谁?那么非卷积神经网络莫属。
下面给大家简单介绍一下CNN的基础知识。其中CNN基础主要涉及卷积层、池化层、全连接层在卷积神经网络扮演的角色、实现的具体的功能和工作原理。
2.卷积层
1.主要作用:对输入的数据进行特征提取。
2.工具:卷积核——完成对数据提取的功能。
3.卷积核是怎么处理数据数据的呢?我们知道卷积核其实是一个指定窗口大小的扫描器,通过一次又一次地扫描输入的数据,来提取数据中的特征。那么在通过卷积核处理后,就可以识别出图像中的重要特征了。
4.下面讲解卷积核的定义:
一、 假定有一张32* 32*3的输入图像,其中32 * 32是图像的高度和宽度,3是指图像具有R,G,B三个色彩通道。
二、我们定义一个5 * 5 * 3的卷积核 ,其中3是指卷积核的深度,对应之前输入图像的三个彩色通道。(目的:当卷积核窗口在输入图像上滑动时,能够一次在三个彩色通道上同时进行卷积操作)
三、 常用的卷积核5 *5和3 *3
我们知道了卷积核后,那么怎么进行卷积操作呢?
现在我们定义步长为对卷积核的窗口进行滑动
下图为一个步长为2的卷积核经过一次滑动窗口位置变化情况
仔细观察不难发现,在上面的输入图像的最外界多了一圈全为0的像素,这其实就是一种用于提升卷积效果的边界像素扩充的方法
共有两种方式进行填充Same和Valid
1.Same在输入图像的最外界加上指定层数的值全为0的像素边界:为了让输入图像的全部像素能被滑动窗口捕捉。
2.Valid直接对输入图像进行卷积,不对输入图像进行任何的前期处理和图像填充。缺点就是会导致部分像素点不嫩被滑动窗口捕捉。
通过对卷积过程的计算,可以得出卷积通用公式
用于计算输入图像经过一轮卷积操作后的输出图像的宽度和高度的参数
其中W,H分别代表图像的宽度和高度的值;下标input代表输入图像的相关参数;下标output表示输出图像的相关参数,filter代表卷积核的相关参数,S代表卷积的步长,P(padding)代表在图像边缘增加的边界像素层数。
例如,输入一个7 *7 *1的数据图像,卷积核窗口为3 * 3 * 1,输入图像的最外界扩充了一层边界像素填充,卷积核的步长S为1,可以计算出最后是输出特征图的高度和宽度都为7.
现在已经了解了单通道的卷积操作,那么多通道怎么处理呢?
其实将单个分别进行卷积操作,然后相加。
下面用一个动图进行描述卷积操作过程,不要眨眼睛哦
3.池化层
1.类似卷积核,可以被看作卷机神经网络中一种提取输入数据的核心特征方法
2.不仅实现了对原始数据的压缩,还大量减少了参与模型计算的参数,
3.其中最常被用的到的池化层方法是平均值池化层和最大值池化层。
值得注意的是池化层也需要定义一个类似卷积层中的卷积核滑动窗口,但是这个滑动窗口仅用来提取特征图中的重要特征。
平均池化
顾名思义,很好理解,选取滑动窗口取平均值
最大池化
顾名思义,很好理解,选取滑动窗口取最大值
我们也可以得出池化层的通用公式:
同样可以举例:当输入一个16 * 16 * 6 图像,池化层的滑动窗口为2 * 2 * 6,其中步长S为2;经过计算得到,宽和高都为8,这里可以看出得到的特征图像的宽和高变成了原来的一半,体现了池化层不仅可以最大限度地提取输入的特征核心特征,还能对输入图像进行压缩功能。
4.全连接层
全连接层的主要作用是将输入图像,在经过卷机和池化操作后提取的特征进行压缩,并且根据压缩的特征完成模型的分类功能。
一个全连接层的简化流程
5.经典的卷积神经网络
- LeNet模型
- AlexNet模型
- VGGNet模型
- GoogleNet模型
- ResNet模型