目录
对于普通的神经网络,假如一张图片像素是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 向量)
再接一个或多个全连接层,进行模型学习
都看到这里了,点个赞把!!!!
本站资源均来自互联网,仅供研究学习,禁止违法使用和商用,产生法律纠纷本站概不负责!如果侵犯了您的权益请与我们联系!
转载请注明出处: 免费源码网-免费的源码资源网站 » 卷积神经网络(一)
发表评论 取消回复