卷积神经网络(一)

发布于:2024-09-18 ⋅ 阅读:(12) ⋅ 点赞:(0)

目录

一.卷积神经网络的组成

二.卷积层

目的:

参数:

计算公式

 卷积运算过程

三.padding-零填充

1.Valid and Same卷积

 2.奇数维度的过滤器

四.stride步长

五.多通道卷积

1.多卷积核(多个Filter)

六.卷积总结

七.池化层(Pooling)

八.全连接层

都看到这里了,点个赞把!!!! 


对于普通的神经网络,假如一张图片像素是1000*1000*3的格式,建立一层10个神经元的神经网络,那么计算次数就为1000*1000*3*10,三千万次的计算才能处理一张图片,而且害很难达到理想的效果,更别说建立多层的神经网络了。所以引入了卷积神经网络

一.卷积神经网络的组成

卷积神经网络由一个或多个卷积层,池化层以及全连接层组成。以其他深度学习相比,卷积神经网络在图像等方面有更好的结果。卷积神经网络可以使用反向传播算法进行训练。

卷积神经网络的整体结构为:

 输入层:输入图像等信息

卷积层:用来提取图像的底层特征

池化层:防止过拟合,将数据维度减小

全连接层:汇总卷积层和池化层得到的图像的底层特征和信息

输出层:根据全连接层的信息得到概率最大的结果

二.卷积层

目的:

卷积运算的目的是提取输入的不同特征,某些卷积层可能只能提取一些低级的特征,如边缘,线条和角度层级,更多层的网络能从低级特征中迭代提取更复杂的特征

参数:

size:卷积核/过滤器大小,选择有:1*1 , 3*3 , 5*5

padding:零填充,Valid与Same

stride:步长,通常为1

卷积核:比需要提取特征的图片大小要小或者相等,卷积核通过在输入的图片中按照步长不停的一定,每一次移动都进行一次的乘积求和,作为此位置的值

计算公式

计算后得到一个新的矩阵,这个矩阵也被称为特征图 

 卷积运算过程

对于一张5*5的单通道图片,使用一个3*3大小的卷积核运算得到一个3*3的运算结果

 

卷积结束后,图片变小了,假设N为图片大小,F为卷积核大小,就相当于 

N-F+1=5-3+1=3

如果我们换一个卷积核大小或者加入更多的卷积层之后,图片可能最后就变成1*1大小。而这样是不行的,对于原始图片当中的边源像素来说,只计算了一次,对于中间的像素会有许多次过滤器计算,这样导致了边缘信息丢失。

三.padding-零填充

零填充:在图片的最外层加上若干层0值,一层则记作p=1

为什么要增加0呢,因为0在权重乘积运算中对最终结果不造成影响,也避免了图片增加了额外的干扰信息

这张图片中,还是移动一个像素,并且外面加一层0.

5+2*p-3+1=5

假设为两层

5+2*2-3+1=7,这样得到的图片大小比之前的图片大小害大,所以对于0的填充会有一些选择

1.Valid and Same卷积

为了避免上述情况,一般选择Same这种填充的方法

Valid:不填充,也就是图片最终大小:(N-F+1)*(N-F+1)

Same:添加两层:(N+2p-F+1)*(N+2p-F+1),也就是P=F-1/2

 2.奇数维度的过滤器

通过上面式子,如果F不是奇数,那么最终结果就会出现0.5的情况,这样填充就不均匀,所以卷积一般都是使用奇数维度大小

四.stride步长

对于上面的都是步长为1的结果,那么步长不为11的呢

对于一个步长的公式

N+2P-F+1=6+0-3+1=4

对于步长为2的结果

(N+2p-F)/2+1=1.5+1=2.5,不是整数,乡下取整为2,

所以对于任意步长,大小为N,过滤器大小F,步长为S

 (​​​(N+2P−F​)​/S+1)*(​(​N+2P−F)/S​​+1)

五.多通道卷积

当输入有多个通道(channel)时,例如彩色图片就有3通道。卷积核需要拥有相同的通道数,每个卷积核通道与输入层的对应通道进行卷积,将每个通道的卷积结果通过按位相加得到最终的结果

1.多卷积核(多个Filter)

当有多个卷积核时,可以学习到多种不同的特征,对应产生包含多个channel的Feature Map,如果有两个filter,那么output就有两个通道。这里的多少个卷积核也可以理解位多个神经元。相当于外面把多个功能的卷积核的计算结果放在一起,能检测到图片中不同的特征(边缘检测)

六.卷积总结

假设外面有10个Filter,每个Filter3*3*3,并且只有一层卷积

假设有一张图片1000*1000*3,需要多大的零填充

((N+2P-F+1) /S+1)=N,解得P=1

卷积层相当于特征提取的角色,但是没有减少图片的特征数量,在最后的全连接依旧面对大量的计算,所以需要池化层进行特征的减少

七.池化层(Pooling)

从上面的卷积层可以看到,有几个卷积核就有多少个特征图,而当特征图特别多的时候,就意味着外面得到的特征也非常多,那么外面就可以用到池化层了。

池化层主要对卷积层学习到的特征图进行亚采样处理,主要有:

最大池化:Max Pooling,取窗口的最大值作为输出

平均池化:Avg Pooling,取窗口内的所有值的均值作为输出

意义在于:

降低了后续网络层的输入维度,缩减模型大小,提高计算速度,提高了Feature Map的鲁棒性,防止过拟合

对于一个输入的图片,外面使用区域大小为2 2,步长为2的参数进行求最大值操作,同样池化也有一组参数,f,s得到2 2的大小。当然如果外面调整这个超参数,比如是3*3,那么结果就不一样了,通常选择默认都是f=2*2,s=2

池化超参数特点,不需要学习,不像卷积通过下降进行更新。

八.全连接层

卷积层+激活层+池化层可以看成是CNN的特征学习/特征提取层,而学习到的特征(Feature Map)最终应用于模型任务(分类、回归):

先对所有 Feature Map 进行扁平化(flatten, 即 reshape 成 1 x N 向量)

再接一个或多个全连接层,进行模型学习

都看到这里了,点个赞把!!!!