--- created: 2025-08-03 21:19:11 tags: - "Research" - "基础" - "CNN" - "卷积层" - "池化层" - "全连接层" --- #CNN # 0. 参考文献 \[1]首先参考[李宏毅老师CNN的内容](https://youtu.be/OP5HcXJg2Aw?si=SULJ9bH5feP6LEKE)以及下面两篇博客 \[2][一文看懂卷积神经网络-CNN(基本原理+独特价值+实际应用)- 产品经理的人工智能学习库](https://easyai.tech/ai-definition/cnn/) \[3][深入学习卷积神经网络(CNN)的原理知识 - 战争热诚 - 博客园](https://www.cnblogs.com/wj-1314/p/9754072.html) \[4][深度学习知识系列(二) 各种卷积形式 | BaiDing's blog](https://baidinghub.github.io/2020/04/03/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0%E7%9F%A5%E8%AF%86%E7%B3%BB%E5%88%97(%E4%BA%8C)%20%E5%90%84%E7%A7%8D%E5%8D%B7%E7%A7%AF%E5%BD%A2%E5%BC%8F/#%E4%B8%80%E3%80%81%E5%8D%B7%E7%A7%AF%E7%9A%84%E6%9C%AC%E8%B4%A8) \[5][一文弄懂CNN及图像识别(Python) · Issue #37 · aialgorithm/Blog · GitHub](https://github.com/aialgorithm/Blog/issues/37) \[6][【图解AI:动图】各种类型的卷积,你认全了吗?\_卷积运算过程示意图-CSDN博客](https://blog.csdn.net/Together_CZ/article/details/115494176) \[7][Animations of Convolution and Deconvolution — Machine Learning Lecture](https://hannibunny.github.io/mlbook/neuralnetworks/convolutionDemos.html) \[8][终于搞懂了卷积神经网络:卷积层,池化层,全连接层!图文并茂、透彻解析!](https://mp.weixin.qq.com/s/f3HESCIBBN6ADRM53x3Jrg) ---------------------------------------------------- # 1. 卷积层 ![conv_kernel.gif|169](https://maucher.home.hdm-stuttgart.de/Pics/gif/no_padding_no_strides.gif) ## 1.0 关于卷积核里面的参数 参数貌似不是人工设置的, 是后面学习而来的? ## 1.1 卷积层的作用 - **特征提取** 卷积层通过 卷积核在输入图像上滑动并及进行元素乘积的求和操作, 来**提取图像的局部特征**. 这些特征可以是 *边缘, 纹理* 等 ## 1.2 卷积层的优点 - **降低了计算的复杂度** 由于一个图像的像素很多, 如果使用全连接层计算, 将是不可接受的参数量 同一个卷积核的**参数在整个输入图像上共享**, 减少了模型的参数量, 降低了计算的复杂度 - **具有平移不变性, 保留了空间关系** 由于参数共享, 卷积层能够学习到的**特征**对于图像中物体的位置变化具有不变性. ## 1.3 卷积层可调整的参数 ### 改变卷积核**大小** (kernel_size) 通常经典的卷积核大小是 $3 \times 3$ , 但是我们可以通过改变卷积核的大小, 来**捕捉不同范围的特征** (获取[[感受野(receptive field)|感受野]]的大小不同) - **大卷积核** 例如 $7 \times 7$ 或者更大的卷积核. 可以捕捉**更大范围的特征**, (比如说一个猫头?) 有助于提取**全局化的特征**. 但是*参数量多, 计算量大* - **小卷积核** 一般为 $1 \times 1$ 或 $3 \times 3$ . 可以捕捉**更细粒度的特征**, (比如说猫眼?), 有助于提取**局部特征**. *参数量小, 计算量小* ![20200302193514928.gif|250](https://img-blog.csdnimg.cn/20200302193514928.gif#pic_center%20%20=300x) ### 改变步长 (stride) 步长是卷积在图像上每次跨几步, 用于**控制输出特征图的尺寸** - **增加步长** **减少***输出特征图的尺寸*, **增加感受野** 但是可能会**丢失一些*细节*信息** (很直观, 卷积核的步子跨大了就会忽略中间跨过的信息) - **减少步长** **增加***输出特征图的尺寸*, **减少感受野** 但是有可能会*增加计算量* (同样直观, 卷积核迈小步子进行计算的参数就多了) ![stride=2|194](https://maucher.home.hdm-stuttgart.de/Pics/gif/no_padding_strides.gif) ### 改变填充 (padding) 当我们的卷积核走到边上的时候, 有可能存在原图像的行或列不够用的情况, 这时候就需要填充 改变填充同样可以**控制输出特征图的尺寸**, 并且由于填充是应对边缘的参数, 所以与边缘信息的损失有关 - **增加填充** **增大**输出特征图的尺寸, **避免损失***边缘信息* - **减少填充** **减少**输出特征图的尺寸, 可能会**丢失边缘信息** ![padding=1|195](https://maucher.home.hdm-stuttgart.de/Pics/gif/same_padding_no_strides.gif) ### 改变卷积核的数量 不同的卷积核数量, 控制着不同的输出通道个数. 二者有这样的关系$$卷积核个数 == 输出通道个数$$ 有一个个人比较迷惑的点: 卷积核个数与卷积核通道数, 可以参考[本篇博客](https://zhuanlan.zhihu.com/p/251068800)进行理解. ### 改变卷积层数量 - **增加卷积层** 提高网络深度, 有助于**提取更复杂的特征**. 但是有可能导致*过拟合* - **减少卷积层** 降低网络深度, 减少计算量. 但是可能会**丢失一些有用的特征** ## 1.4 关于经过卷积层计算之后的图像大小 我们常见的网络中, 经过卷积层常常会发现输出图像变小了, 这是起到了 *减少计算量的作用* . 但是实际上, 通过卷积层**并不一定会导致图像变小**, 毕竟卷积层不是为了缩小图像而存在的, 而是为了**提取特征**而存在的. 输出图像的大小会变化主要是**由卷积层的参数**来决定的. 假设输入图像的大小 $input=w \times w$, 卷积核大小$kernel=f \times f$ , 步长$Stride=s$, 填充$Padding=p$. 则输出图像大小为: $$output=(w - f + 2 \times p) / s + 1$$ ----- # 2. 池化层 ## 2.1 池化层的作用 - **降维** 池化层将输入图像的子区域进行聚合 (如取最大值或平均值) 来降低特征图的维度. **减少了计算量** - **特征不变性** 池化操作提供了一定程度的特征不变性,例如最大池化(Max Pooling)可以提供对图像中物体位置的不变性 ## 2.2 池化层的优点 - **减少计算量** 降低特征图的维度(大小)意味着在后续层中的计算量会减少 - **抗干扰能力** 池化层有助于网络对*小的形变*, *抖动*等干扰保持稳定性. (毕竟本来就损失了一些特征, 聚合成一个了) 其实池化层对现代网络而言并不常有, 可以说基本没有, 因为现在计算资源上去了, 不需要节约池化少的这一点点. 反而池化层会损失一些特征可能是个问题. (但是扛干扰能力如何获得呢?) ## 2.3 池化层可调整的参数 ### 改变池化窗口的大小 - **大池化窗口** 提供更强的不变性, 但是可能会**丢失更多的细节信息**. - **小池化窗口** 保留更多的细节信息, 不变性较弱 ### 改变步长 - **增加**步长 **减少**输出特征图的尺寸, *减少计算量* 但是有可能会丢失细节信息 - **减少**步长 **增加**输出特征图的尺寸 增加计算量,但可能保留更多的细节信息。 ### 改变池化层类型 - **最大池化层** (MaxPooling) 保留**最显著的特征**, 有助于**突出重要的特征**. - **平均池化层** (AvePooling) 保留**更平滑的特征**, 有助于**减少噪声的影响**. - **自适应池化层** (AdaptivePooling) **自定义输出尺寸**, 更灵活地控制特征图的尺寸 ### 去掉池化层 保留更多**细节信息** 但是计算量变大, 会增加特征图的尺寸 ### 增加池化层 可以进一步降低特征图的尺寸,减少计算量,但可能会增加特征的不变性。 ----- # 3. 全连接层 ## 3.1 全连接层的作用 - **分类决策** 全连接层通常位于**网络的末端**, 用于**整合前面层提取的特征**, 并进行**最终的分类**或回归任务 - 输出结果 在图像识别中, 全连接层会输出类别概率, 通常通过 Softmax函数 转化为归一化的类别分布.