文章目录
- 卷积神经网络算法原理(卷积层,卷积运算,填充,步幅,经过卷积运算后的特征图大小,池化层,最大池化,平均池化,经过池化层运算后的特征图大小)
- 前言
- 1、图像的本质
- 1.1、灰度图
- 1.2、彩色图
- 2、卷积神经网络的整体结构
- 3、卷积层
- 3.1、全连接神经网络存在的问题
- 3.2、卷积层-卷积运算
- 卷积运算的过程:
- 加入偏置的卷积运算:
- 3.3、卷积层-填充
- 3.4、卷积层-步幅
- 3.5、卷积层-经过卷积运算后的特征图大小
- 3.6、卷积层-多通道特征图的卷积运算
- 4、池化层
- 4.1、池化层-最大池化:目标区域内取最大值
- 4.2、池化层-平均池化:将目标区域中的值进行平均求和
- 4.2、池化层-经过池化层运算后的特征图大小
- 总结
卷积神经网络算法原理(卷积层,卷积运算,填充,步幅,经过卷积运算后的特征图大小,池化层,最大池化,平均池化,经过池化层运算后的特征图大小)
前言
深度学习三大领域:大数据与数据挖掘、计算机视觉、自然语言处理;
在计算机视觉中,卷积神经网络(CNN)扮演着重要角色,用来提取图像的特征;
1、图像的本质
灰度图在计算机中保存为1个数字矩阵;
彩色图在计算机中保存为3个数字矩阵;
1.1、灰度图
灰度图就是我们常见的黑白图像,下面图像的高度为24,宽度为16,因此这个图片是由24*16一共384个小方格所组成的;
从图中可以看到有黑色、白色、灰色,同时灰色的程度还不尽相同。图像中的每一个小块都代表一个像素,每一个小块都有一个像素值,这些像素值表示像素的强度,像素值的大小范围为0到255,其中0为黑色,255为白色,图像越深的地方说明像素值越接近0,图像越浅的地方说明像素值越接近255。因此灰度图在计算机中保存为1个数字矩阵;
1.2、彩色图
不知道大家在生活中观察到这样的情况,就是有时候不小心把水溅到了手机屏幕或者电视屏幕上,通过水珠可以观察到一个又一个很小的小方格,这些方格有不同的颜色,但是只有红色、绿色和蓝色。初中的时候学习物理的时候知道,这3个颜色称为3原色,可以按不同的比例生成各种颜色。如下图所示:
计算机表示彩色图的时候是用3个数字矩阵表示的。具体形式如下图所示:
1个用于显示红色的矩阵,矩阵的中的数值大小范围也是在0到255,当数值越接近0的时候红色的表示就越深,当数值越接近0的时候,红色的表示就越浅;
1个用于显示绿色的矩阵,矩阵的中的数值大小范围也是在0到255,当数值越接近0的时候绿色的表示就越深,当数值越接近0的时候,绿色的表示就越浅;
1个用于显示蓝色的矩阵,矩阵的中的数值大小范围也是在0到255,当数值越接近0的时候蓝色的表示就越深,当数值越接近0的时候,蓝色的表示就越浅;
这些像素数值在0到255之间,其中每个数字代表像素的强度,所有这些通道矩阵叠加在一起就变成了三通道图像,当图像的形状加载到计算机中时,像素矩阵为H×W×3。其中H是整个高度上的像素数量,W是整个宽度上的像素数,3表示通道数。
2、卷积神经网络的整体结构
相对于全连接神经网络,卷积神经网络中出现了卷积层和池化层,输入卷积神经网络中的数据特征图通过卷积运算和池化运算,将其中的有效特征提取出来输入到全连接层,并对数据进行分类或者预测;
3、卷积层
图片在计算机中就是一个数字矩阵,而卷积神经网络的输入就是这样的一个数字矩阵,输入的数据的格式应该是CHW(C就是数据的通道数,H就是数据矩阵的高,W就是数据矩阵的宽),
3.1、全连接神经网络存在的问题
在全连接神经网络中,相邻的神经元全部连接在一起,因此一个神经网络层呈现长条状,但是输入的数据是图像这样具有3维形状的数据的时候,全连接神经网络的处理是将数据拉平为一维的状态;
像图像这样的3维形状的数据中含有重要的空间信息,比如,空间上相邻的地方像素值应该是相似的值、RGB通道之间分别有着密切的关联性,但是相距比较远的像素之间的关联性比较低,但是全连接层会忽视形状,将全部的信息作为相同的神经元处理,因此无法利用与形状相关的信息;
卷积神经网络中的卷积层可以保持形状不变,当输入的数据是图像的时候,卷积层会以3维的数据形式接受数据,同样以3维的形式输出到下一层,因此相对于全连接神经网络,卷积神经网络可以比较好的理解空间形状的数据;
3.2、卷积层-卷积运算
卷积神经网络的核心就是存在卷积运算的卷积层,卷积运算相当于图像处理中的滤波运算,因此卷积核又被称之为滤波器;
卷积运算的过程:
对于输入特征图,通过不断滑动卷积核,将卷积核与图像的对应位置相乘并求和,得到卷积运算后的输出特征图;
加入偏置的卷积运算:
在全连接神经网络中,神经网络有两种参数,一种是权重参数、一种是偏置参数,在卷积神经网络中,卷积核就是卷积神经网络网络的权重参数,当然卷积神经网络中也是存在偏置参数的:
3.3、卷积层-填充
填充:对输入特征图周围填入固定的数据(通常这个数据为0);
在一个输入为(3,3)大小的矩阵周围填充一圈0后,这时输入的矩阵大小变为(5,5),填充的幅度为1,填充幅度可以设置为大于等于1的任意整数。然后利用填充好的矩阵与大小为(2,2)卷积核进行卷积运算,得到(4,4)的输出特征图;
注意:使用填充的主要目的是调整输出数据的大小,如果在一个卷积神经网络中有多个卷积层,需要进行多次的卷积运算,如果每次进行卷积运算都会缩小空间,那么在某个时刻可能输出数据的大小为(1,1)这个时候就无法进行下一步卷积运算了。因此为了避免输出数据无法进行卷积运算,可以利用填充操作保持输出数据的空间大小不变或者变大;
3.4、卷积层-步幅
步幅:在卷积运算过程中,卷积核在输入特征图上进行滑动的间隔称为步幅,步幅可以设置为大于等于1的任意整数;
3.5、卷积层-经过卷积运算后的特征图大小
下图输入特征图大小为(4,4)卷积核的大小为(2,2)步幅大小为2,填充P=0,请计算输出特征图的大小;
注意:步幅和填充是可以自己设定的,但是可能会出现最终的计算结果不是整数的情况,会导致最后的程序的运行出现报错,这样的情况要尽量的避免,当然有的深度学习框架会进行四舍五入,不进行报错进行继续运算;
3.6、卷积层-多通道特征图的卷积运算
图像除了通道数为1的灰度图还有通道数为3的彩色图,同时卷积运算也可以改变输入特征的通道数,使输出变成多通道的特征图;
多通道的数据不仅仅要考虑高和宽,还需要考虑通道数,多通道特征图进行卷积运算时,将不同通道的特征图和对应通道的卷积核进行卷积运算,并将最终的计算结果相加,从而得到输出特征图;
卷积核的通道必须要和输入数据的通道一样,同时每个通道的卷积核的形状大小也必须一样;
多通道特征图经过卷积运算后,输出的特征图的通道数等于卷积核的数量(在卷积神经网络中,每个卷积核都会在输入特征图上进行卷积运算,生成一个输出通道。因此,如果有N个卷积核参与运算,那么输出特征图就会有N个通道);
如上图所示:
输入特征图的通道数为3,形状大小为(4,4);卷积核的大小为(3,3)通道数为3(上图为,1张输入特征图,1个卷积核);
由于输入特征图的通道为3,卷积核的通道必须要和输入数据的通道一样,同时每个通道的卷积核的形状大小也必须一样,因此这里设置的卷积核的通道数为3,形状大小为(3,3);
将不同通道的特征图和对应通道的卷积核进行卷积运算,并将最终的计算结果相加,因为上图只有1个卷积核,最终的输出的特征图的通道大小为1,形状为(2,2);
利用立体图来表示卷积运算:
当输入的数据大小为(C,H,W)的时候,卷积核一共有FN个且大小为(C,FH,FW)因此输出的特征图的大小为(FN,OH,OW)
卷积神经网络中不仅仅有权重参数(卷积核),还有偏置参数:
当输入的数据大小为(C,H,W)的时候,卷积核一共有FN个且大小为(C,FH,FW)经过卷积运算后输出的特征图的大小为(FN,OH,OW)因此偏置的通道数需要和输出特征图的通道数一样,因此偏置的大小为(FN,1,1)将偏置和输出特征图进行像素相加,最后得到的输出特征图的大小为(FN,OH,OW)因此加上偏置是不改变输出特征的形状的,只改变输出特征数值的大小;
4、池化层
池化运算的特点:
在图像识别领域,使用最多的还是最大池化;
输入特征图经过池化运算后,其通道数保持不变,因为池化操作是按通道独立进行的,每个通道内的特征值会分别进行池化计算,而不会影响到其他通道;
池化层对于输入特征图中的微小位置变化具有强大的鲁棒性,这增强了模型的健壮性。即便输入特征数据发生细微的变化,池化层的输出特征图结果仍能保持稳定;
池化层和卷积层的不同:
卷积层的核心操作是特征图与卷积核之间的卷积运算,这一过程中涉及参数的学习。具体来说,卷积层通过前向传播计算误差,随后利用反向传播机制更新参数,以优化模型性能;
池化层则主要执行从目标区域提取最大值或平均值的操作,其主要作用在于缩小特征图的空间,它并不涉及任何参数的学习过程;
4.1、池化层-最大池化:目标区域内取最大值
4.2、池化层-平均池化:将目标区域中的值进行平均求和
4.2、池化层-经过池化层运算后的特征图大小
池化层的输入特征图和输出特征图之间的关系,跟卷积层的输入输出计算公式类似,只不过把卷积核的大小变成池化窗口的大小而已
下图输入特征图大小为(4,4)池化窗口的大小为(2,2)步幅大小为2,填充P=0,请计算输出特征图的大小;
总结
卷积神经网络是深度学习中极其重要的神经网络模型,在此基础上发展成计算机视觉领域,目前计算机神经有图像分类、目标检测、图像分割等分支,其落地项目也很多。其中大部分算法都是在卷积神经网络的基础上进行改进而成,想学习好卷积神经网络需要配合各种网络模型图去理解。