卷积神经网络CNN动态演示和输出特征图计算公式

目录

一、卷积运算

1、卷积(Convolution)

2、填充(Padding)

[(1)Valid Padding](#(1)Valid Padding)

[(2)Same 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 来表示。可以求得 o ,计算公式如下:

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

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

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

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

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

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

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

5、特别说明

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

相关推荐
OceanBase数据库官方博客3 分钟前
蚂蚁集团 CTO 何征宇:AGI时代,海量数据带来的质变|OceanBase 开发者大会实录
人工智能·oceanbase·分布式数据库·开发者大会
wx_xkq128828 分钟前
智能体赋能效率,企业知识库沉淀价值:UMI企业智脑的双轮驱动!
人工智能·aigc
小鸡吃石子32 分钟前
大语言模型(LLM)入门项目推荐
人工智能·机器学习·语言模型
思绪漂移1 小时前
深度学习中的卷积和反卷积
人工智能·深度学习
tomplus211 小时前
ai客服平台哪家好:AnKo多模型AI聚合时代!
人工智能·ai·ai网站·ai软件·ai聚合·ai智能化·ai代运营
blues_C1 小时前
AI测试用例生成系统设计与实现:融合多模态、OCR解析与知识库增强
人工智能·ai·ocr·测试用例·ai生成测试用例
FnTop2 小时前
为什么共现矩阵是高维稀疏的
人工智能·线性代数·矩阵
AIGC_ZY2 小时前
DiT、 U-Net 与自回归模型的优势
人工智能·数据挖掘·回归
这张生成的图像能检测吗2 小时前
OpenGAN:基于开放数据生成的开放集识别
人工智能·pytorch·深度学习·算法·机器学习·生成对抗网络·聚类
chatshare镜像2 小时前
GPT-4o 风格提示词案例大全(持续更新 ing...)
人工智能