一、CNN简介
1、应用领域
- 检测任务
- 分类与检索
- 超分辨率重构
2、卷积网络与传统网咯的区别
- 传统神经网络和卷积神经网络都是用来提取特征的。
- 神经网络:
- 可以将其看作是一个二维的。
- 卷积神经网络:
- 可以将其看作是一个三维的。
3、整体框架
二、输入层
- 该层主要是对原始图像数据进行预处理,保留了图片本身的结构。
- 对于黑白的32×32的图片,CNN的输入是一个32*32的二维神经元;对于RGB格式的28×28 图片,CNN的输入则是一个32*32*3的三维神经元。
- 三维包括宽度、高度和深度。
- 深度可以看作是不同的颜色通道,例如:RGB,可拆分为R、G、B三个通道。
三、卷积层
1、卷积的任务
- 卷积的任务,就是将图像分成若干区域,然后计算每个区域的特征值。
- 例如:
- 将图像分割为5*5*3个小块,每3*3*3个小块矩阵看作是一个区域,从每个区域中提取一个特征。(上图只演示了一个通道)
- 区域的数据:,区域的权重参数矩阵:,特征图:
2、卷积特征值计算方法
2.1、图像颜色通道
- 计算特征值的过程中,让每个通道都要做计算,然后将每个通道的结果加在一起。
2.2、特征值计算过程
- ,每一个通道会有一个权重参数矩阵,方法是计算它们的内积,3个通道的计算结果之和加上偏移值(b0=1),即为最终特征值。
- 【注】上图中的三个权重参数矩阵,统称为卷积核。
- 例如:
- 最终结果:
- (0+2+0)+b=3(b为偏置值,已知为1)
3、特征图表示
- 特征图可以不唯一,下图中就有两个特征图。
- 主要原因是,卷积核可以不唯一(使用不同的方法进行特征提取),这样的话就会计算出多个特征图来,如下图。
- 【注】有几个卷积核就有几个特征图;卷积核中权重参数矩阵的个数与输入的通道个数相同。
- 计算特征图时,每个区域平移了两个单元格(可自行定义)即步长为2,如下图。
4、步长与卷积核大小对结果的影响
4.1、堆叠的卷积层
- 由下图可知,在分类图像的过程中,做了很多次卷积。
- 多次卷积并不是对一张图片从粗到细地多次计算特征,而是从所得到特征图的基础上去做卷积,如下图。
4.2、卷积层涉及参数
4.2.1、滑动窗口步长
- 步长为1的卷积
- 步长为2的卷积
- 步长越小,得到的特征越丰富,但计算效率越慢。
4.2.2、卷积核尺寸
- 卷积核尺寸即为卷积核中权重参数矩阵的维度。下图卷积核的尺寸即为3*3*3。
- ,也可以4*4*3,卷积核尺寸越小,得到的特征越丰富。
4.2.3、边缘填充
- 一张图片在划分区域计算特征时,有些点会被重复利用,即会影响多个结果。例如下图划红线的区域,就会影响特征图中的两个值。
- 边缘的点只会影响一个值,而靠近中心的点可能会影响多个值,这对边缘来说是不公平的。例如下图画圈的点,影响了特征图中的四个值。
- 原始输入中,即为下图5*5紫色矩阵。在其边界加上一圈全0的值,这样的话,原本的边界就不再是边界了,一定程度上弥补了边界信息缺失的问题。
- ,添加0对最终结果不会产生影响。
4.2.4、卷积核个数
- 卷积核个数决定了最终得到的特征图个数。
- 每个卷积核的数值是不同的。
5、特征图尺寸计算与参数共享
5.1、卷积结果计算公式
- 长度:
- 宽度:
- 其中W1、H1表示输入的宽度、长度;W2、H2表示输出特征图的宽度、长度;F表示卷积核长和宽的大小;S表示滑动窗口的步长;P表示边界填充(加几圈0)。
- 例如:
5.2、卷积参数共享
- 图片中的每个区域,都是使用同一卷积核进行计算,然后得到一个特征图,即为参数共享。
- 这样可以大量节省参数,例如:
四、池化层
1、池化层的作用
- 池化层的作用是对得到的特征图进行压缩。
- 下图就是对特征图的长、宽进行了压缩,而不是减少特征图的个数。
2、最大池化
- 池化过程中,是选择某个区域中最大的特征值(值越大,越重要),如下图。
五、全连接层
- 全连接层的作用:将得到的所有特征图整合起来,便于分类处理。
- 全连接层把所有二维特征图转换为一个二维向量。