卷积神经网络的应用领域
(1)检测任务
(2)分类与检索
(3)超分辨率重构
(4)医学任务
(5)无人驾驶
(6)人脸识别
卷积的作用
卷积神经网络总整体架构:
输入层->卷积层(提取特征)->池化层(压缩特征)->全连接层
卷积的作用:
卷积的作用就是为了将Input的数据做特征提取。
卷积特征提取:
卷积特征值计算方法
图像颜色通道介绍:
卷积特征值 = 输入数据 · 权重参数(内积)+ b(偏重参数)
其中,一组权重参数的矩阵数量必须与输入数据的color数量(输入数据的矩阵数量)相同。
举个栗子:Output[ ; ; ] (7x7x3) = X[ ; ; ] (3x3x3) · W0[ ; ; ] (3x3x1)
其中详细计算展示:
特征图个数:一组权重参数计算后获得对应的一个特征图,多组不同的权重参数filter可获得多个对应的特征图。当然,同一个卷积层中所有权重参数规格必须相同,不同卷积层中规格可能不同。
例如:下图中由两组权重参数,可获得两个特征图。
卷积层涉及参数
- ①滑动窗口步长;
输入数据一致时,步长越小,所得到的特征越丰富;步长越大时,所得到的特征越少。步长的选取需根据实际情况选取,一般情况下图像任务的步长选取为1,但有时计算效率较低。
- ②卷积核尺寸;
卷积核尺寸即特征提取时输入数据选择矩阵的大小,一般情况下为3x3的矩阵。卷积核越小,特征提取越细致。 - ③边缘填充;
为使得提取特征过程中所有输入数据尽可能多的被使用到(尤其是边缘数据),可进行边缘数据填充。一般使用数据0进行边缘填充,从而在不影响真实特征效果的前提下,对输入数据进行扩充。
图中灰色部分为边缘填充数据
- ④卷积核个数。
卷积核个数即为权重参数组数,根据需要得到的特征图个数选择卷积核个数,且每个人卷积核不同。若需要10个特征图,则需选择10个卷积核。
卷积结果计算公式:
其中W1、H1表示输入的宽度、长度;W2、H2表示输出特征图的宽度、长度;F表示卷积核长和宽的大小;S表示滑动窗口的步长;P表示边界填充(加几圈0)。
举个栗子:如果输入数据是32 x 32 x 3的图像,用10个5 x 5 x 3的filter来进行卷积操作,指定步长为1,边界填充为2,最终输出的规模为?
答:(32-5+2x2)/1 + 1 = 32,所以输出规模为32x32x10。
经过卷积操作后也可以保持特征图长度、宽度不变。
卷积参数共享:对输入数据的每一个区域都使用同一组卷积参数进行特征提取,使用相同的卷积核。
问:数据依旧是32x2x3的图像,继续用10个5x5x3的filter来进行卷积操作,所需的权重参数有多少个呢?
答:5x5x3=75,表示每一个卷积核只需要75个参数,此时有10个不同的卷积核,就需要10x75 =750个卷积核参数,不要忘记还有b参数,每个卷积核都有一个对应的偏置参数,最终只需要750+10=760个权重参数。
池化层
池化层只是削减特征的一种运算规则,其并没有参数。池化层被认为是卷积神经网络中不可缺少的一部分,其提供了卷积神经网络强壮的鲁棒性(平移不变性、旋转不变性、尺度不变性;特征降维,防止过拟合;实现非线性;扩大下一层卷积层的感受野)。
最大池化:在数据压缩过程中,选择每个小区域的最大值留下。
感受野:最终当前一个点能感受到的原始数据的大小。感受野的作用是确定神经元对输入数据的感知范围。通过调整感受野的大小,我们可以控制神经元对输入数据的敏感程度。感受野越大,神经元能够感知到的输入信息就越多,但也可能会增加计算量和参数数量。
提问:如果堆叠3个3x3的卷积层,并且保持滑动窗步长为1,其感受野就是7x7的了,这跟一个便用7x7卷积核的结果是一样的, 那为什么非要堆叠3个小卷积呢?
答:假设输入大小都是h·w·c,并且都使用c个卷积核(得到c个特征图),可以来计算一下其各自所需参数:
一个7x7卷积核所需参数:C x (7 x 7 x C) = 49C·C
3个3x3的卷积核所需参数:3 x C x (3 x 3 x C) = 27C·C
很明显,堆叠小的卷积核所需的参数更少一些, 并且卷积过程越多,特征提取也会越细致,加入的非线性变换也随着增多,还不会增大权重参数个数,这就是VGG网络的基本出发点,用小的卷积核来完成体特征提取操作。
整体网络架构
输入数据->多次卷积层特征提取->必要池化层压缩数据->全连接层得到分类结果
特征图的变化:
(1)经典网络-Alexnet:近现代卷积神经网络开篇之作。
存在问题:①卷积尺寸过大;②步长过大;③未使用边缘填充
(2)VGG网络架构:
优点:①卷积大小为3x3;②网络有16|19层;③在池化压缩数据后的卷积过程中使得特征值翻倍,从而用特征值个数弥补。
缺点:训练时长大。
(3)残差网络-Resnet:
由于当我们增加网络层数时,训练和测试错误率也会增加。并非所有的卷积层都能使得数据特征提取的效果往更好的方向走,Resnet解决了相关问题,使得卷积神经网络效果至少不能比之前的差。
在这个网络中,我们使用一种称为跳过连接的技术。跳过连接通过跳过中间的一些层将一个层的激活连接到其他层。这就形成了一个残块。通过将这些剩余的块堆叠在一起形成Resnets。