CNN学习(6):卷积神经网络CNN动态演示和输出特征图计算公式

目录

一、卷积运算

1、卷积(Convolution)

2、填充(Padding)

(1)Valid Padding

(2)Same Padding

3、步长

4、卷积核大小为什么一般为奇数×奇数?

5、卷积核kernel和滤波器fliter的区别

二、卷积运算公式

1、经过卷积层输出的图片尺寸

2、卷积层中计算输入通道高度

3、经过池化层的特征图尺寸

4、经过全连接层的输出向量尺寸

5、特别说明


为了方便查看,搬运一个比较直观的CNN卷积过程动图:https://zhuanlan.zhihu.com/p/77471866

在线latex公式编辑器:在线LaTeX公式编辑器-编辑器

一、卷积运算

1、卷积(Convolution

左侧的image是输入数据,右侧的权重矩阵(也就是卷积核kernel)逐步在二维输入数据上进行“扫描”,卷积核按照“步长”进行滑动的同时,计算权重矩阵和扫描得到的数据矩阵的乘积,然后结果相加得到一个输出像素的值。输出的像素值最后组成一个输出矩阵。

2、填充(Padding)

上述运算过程中,输入图像和卷积核进行卷积后得到的二维矩阵比原有规模较小,此时输入图像的边缘处只检测了部分像素点,丢失了图片边缘的部分信息。

为了保证输入和输出的大小保持一致,可以在进行卷积操作之前,对输入矩阵进行边界填充(Padding),也就是在矩阵的边缘填充“0”。

这样填充后,当卷积核扫描输入数据时,能延伸到边缘以外的伪像素,从而使输入和输出的大小相同。

常用的两种padding方法如下。

(1)Valid Padding

  • 定义:Valid padding,也称为“无填充”(No Padding),在这种情况下,卷积核只在输入特征图的边界内进行滑动,不进行任何边缘填充。
  • 特点:由于没有添加额外的像素,输出特征图的尺寸会小于输入特征图的尺寸。具体来说,如果输入特征图的大小为 𝑊×𝐻,卷积核(或滤波器)的大小为 𝐾𝑤×𝐾ℎ,并且步长(Stride)为1,那么输出特征图的大小将是 (𝑊−𝐾𝑤+1)×(𝐻−𝐾ℎ+1)。
  • 应用:Valid padding通常用于当需要减小特征图尺寸,或者在网络的中间层中,不需要保持特征图的原始尺寸。

(2)Same Padding

  • 定义:Same padding,也称为“全填充”(Full Padding),在这种情况下,会在输入特征图的边缘添加一定数量的零值(即填充),使得卷积核可以覆盖到边缘,并且输出特征图的尺寸与输入特征图的尺寸相同。
  • 特点:为了实现这一点,通常会在输入特征图的每一边添加 ⌊(𝐾𝑤−1)/2⌋个填充(对于宽度)和 ⌊(𝐾ℎ−1)/2⌋个填充(对于高度),其中 ⌊𝑥⌋表示不大于 𝑥的最大整数。如果卷积核大小是奇数,则填充的数量会略有不同。
  • 应用:Same padding通常用于网络的第一层,或者任何需要保持特征图尺寸不变的层,例如在某些风格迁移或图像分割任务中。

3、步长

滑动卷积核时,会先从输入的左上角开始,每次向左滑动一列或者向下滑动一行计算输出,将每次滑动的行数和列数称为Stride,在之前的图片中,Stride=1;在下图中,Stride=2。

卷积过程中,有时需要通过padding来避免信息损失,有时也要在卷积时通过设置的步长(Stride)来压缩一部分信息,或者使输出的尺寸小于输入的尺寸。

卷积核为3×3,步长为2,padding为1

Stride的作用:是成倍缩小尺寸,而这个参数的值就是缩小的具体倍数,比如步幅为2,输出就是输入的1/2;步幅为3,输出就是输入的1/3。以此类推。

4、卷积核大小为什么一般为奇数×奇数?

  1. 中心对称性:奇数尺寸的卷积核具有中心对称性,即卷积核的中心位于其几何中心。这使得卷积核在应用到输入特征图上时,可以围绕一个中心点进行操作,这在某些情况下有助于增强特征提取的对称性。

  2. 更容易padding:在卷积时,有时候需要卷积前后的尺寸不变。这时候就需要用到padding。假设图像的大小,也就是被卷积对象的大小为n*n,卷积核大小为k*k,padding的幅度设为(k-1)/2时,卷积后的输出就为(n-k+2*((k-1)/2))/1+1=n,即卷积输出为n*n,保证了卷积前后尺寸不变。但是如果k是偶数的话,(k-1)/2就不是整数了。

  3. 减少参数数量:相比于偶数尺寸的卷积核,奇数尺寸的卷积核(如3x3)可以减少参数数量。例如,一个3x3的卷积核有9个参数,而一个4x4的卷积核有16个参数。使用更小的卷积核可以在保持有效性的同时减少模型的复杂度。

  4. 计算效率:奇数尺寸的卷积核在处理边界像素时可以更高效。当卷积核是奇数尺寸时,其在输入特征图的边缘位置不需要额外的填充,因为卷积核的中心可以正好对齐到边缘像素上。这可以减少边界处的填充量,从而减少计算量。

  5. 特征提取:奇数尺寸的卷积核可以更好地捕捉局部特征。由于卷积核的中心位于中心位置,它可以更直接地响应输入特征图中的局部变化,这对于提取图像中的边缘、纹理等特征是有益的。

5、卷积核kernel和滤波器fliter的区别

当只有一个通道的时候,卷积核就相当于fliter,两者的概念可以互换。

如果有多个通道,每个fliter实际上是卷积核的一个集合。在当前层,每个通道都对应一个卷积核,且卷积核时唯一的。

多通道卷积的计算过程:将矩阵和滤波器对应的每个通道进行卷积运算,最后将通道的对应结果进行相加,形成一个单通道输出,加上偏置项后,就得到一个最终的单通道输出。然后根据滤波器的个数,确定输出通道数。

其中需要注意:

某一层滤波器的通道数 = 上一层特征图的通道数。

某一层输出特征图的通道数 = 当前层滤波器的个数。

二、卷积运算公式

输入 x:[batch, height, width, in_channel]      四个维度

权重 w:[height, width, in_channel, out_channel]

输出 y:[batch, height, width, out_channel]

1、经过卷积层输出的图片尺寸

输入图片的尺寸:一般用 n×n 表示输入的image大小。

卷积核的大小:一般用 k×k 表示卷积核的大小。

填充(Padding):一般用 p 来表示填充大小。

步长(Stride):一般用 s 来表示步长大小。输出图片的尺寸:一般用 o 来表示。b_{ih}=(b_{oh}-1)*stride-padding*2+k可以求得 o ,计算公式如下:

o=\left \lfloor \frac{n+2p-k}{s} \right \rfloor +1

其中"⌊ ⌋"是向下取整符号,用于结果不是整数时进行向下取整。

其中输出规模的大小可以区分为高度和宽度,都可以用上述公式进行计算。

2、卷积层中计算输入通道高度

b_{ih}=(b_{oh}-1)*stride-padding*2+k

3、经过池化层的特征图尺寸

o=\frac{n-k}{stride}-1

当计算出来不是整数的时候,就要向上取整。

4、经过全连接层的输出向量尺寸

全连接层的输出向量长度等于该层神经元的个数。

5、特别说明

当卷积层和池化层的输出特征图尺寸计算时,可能出现结果不是整数的情况,此时卷积层向下取整,池化层向上取整。

  • 10
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值