卷积神经网络中卷积核的作用是提取图像更高维的特征,一个卷积核代表一种特征提取方式,对应产生一个特征图,卷积核的尺寸对应感受野的大小。
经典的卷积示意图如下:
5*5的图像使用3*3的卷积核进行卷积,结果产生3*3(5-3+1)的特征图像。
卷积核的大小一般是(2n+1)*(2n+1)的奇数乘奇数大小(n>=1),最常用的有3*3,5*5,7*7的。之所有使用奇数*奇数而不是偶数*偶数大小的,主要原因有两点:
1. 一般情况下,使用n*n大小的卷积核对大小为N*N的图像卷积,结果图像尺寸缩小为(N-n+1),这种卷积操作的都是图像上真实的像素,不需要对图像进行扩充,也叫有效补白(Valid Padding)。
另一种补白方式是相同补白(Same Padding),在卷积核对图像执行相同补白(Same Padding)卷积时,要求卷积后图像大小跟原图像大小保持一致,这就需要提前给原图像做Padding(补白)操作,即给图像增加额外的空白,增大图像尺寸使得卷积后大小为原图像大小,Padding操作示意图如下:
在相同补白(Same Padding)模式下,需要补充的像素大小是N-(N-n+1)= n-1个,这里的n表示的是卷积核大小,如果n为奇数,则n-1为偶数,补得这n-1个像素可以在图像两侧对称分布,如果使用偶数的卷积核,n-1为奇数,无法在图像两侧对称分布。
2. 奇数卷积核有中心点,可以方便的确定位置,而偶数的卷积核不存在绝对的中心点。
1*1 卷积核
在残差网络的Bootleneck残差模块和GoogleNet的Inception模块里出现了1*1的卷积核:
与(2n+1)*(2n+1)的卷积核提取图像特征顺便降低图像尺寸不同,1*1的卷积核的作用是提升或者降低特征(个数)的维度,而不改变图像的宽高。这里的维度是指图像的通道数(厚度,如RGB图像的通道数是3, 10个单通道的特征图一起组成通道数是10)。
例如经过某次卷积后,得到W*H*10的特征图,这里通道数是10,如果需要降维成W*H*6,即把10个特征图减少到6个。这就需要使用6组,每组10个的1*1的卷积核来实现。10个1*1的卷积核和上一层W*H*10的特征图卷积,得到一个W*H*1的特征图,使用6组这样的1*1卷积核,就可以得到W*H*6维度的特征图,实现了特征图的压缩,而不改变图像的宽高。这里一共有6*10=60个可训练参数。
同理,使用1*1卷积核也可以实现特征图升维。
从图像处理的角度看1*1的卷积操作,可以把它理解成是把N个图像按N个不同的系数融合的操作,需要多少个特征图就融合多少次。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:卷积神经网络 1*1 卷积核 - Python技术站