【卷积神经网络CNN】基本原理
文章目录
- 0.卷积神经网络CNN常用场景:
- 1.卷积神经网络整体结构
- 2.图像在计算机中的本质
- 3.全连接神经网络存在的问题
- 4.卷积层
- 4.1卷积运算
- 4.2步幅
- 4.3填充
- 4.4输出特征图大小计算公式
- 4.5多通道卷积运算
- 5.池化层
- 5.1最大池化运算
- 5.2平均池化运算
- 5.3输出特征图大小计算公式
- 6.卷积神经网络整体结构
0.卷积神经网络CNN常用场景:
- 图像分类:ResNet
- 目标检测:Yolo
- 图像分割:UNet
1.卷积神经网络整体结构
这里先有个印象,学习完后面的内容会帮你更好理解这个结构。

2.图像在计算机中的本质
以 矩阵 形式存储,0代表黑色,255代表白色,
来看一个 单通道 (灰度图)示例:

与单通道对应的,就是 三通道 彩色图了:

3.全连接神经网络存在的问题
为什么不用全连接神经网络而用卷积神经网络来处理图片?
因为全连接神经网络会破坏原有图像的 空间信息。
来看如下示例,采用全连接神经网络的话,原来图像中的上下左右信息,就只剩下了左右信息。

4.卷积层
4.1卷积运算
核:也可以叫做 卷积核,即参数 W,输出是怎么计算的?对应位置 相乘再相加。
比如:0*0 + 1*1 + 2*3 + 3*4 = 19

来看完整的卷积运算过程:

既然有参数 w,那肯定也会有参数 b,来看看 加入偏置b的卷积运算:
就是在原来的运算结果上再加上b。0*0 + 1*1 + 2*3 + 3*4 + 2= 21

4.2步幅
顾名思义,就是一次走多少步。
上面的卷积运算过程默认步幅为1,来看一个步幅为2的运算过程:注意黄色部分是怎么移动的

4.3填充
不知道你注意没,上面的运算结果都是输出特征图变小了,比如:3*3–>2*2,4*4–>2*2,怎么让输出图变大呢?填充 可以实现,
准确来说,填充 可以控制输出图的大小。
填充具体操作就是:外圈填充0 即可。
来看一个示例:填充后,输入图从 3*3 变成了 5*5

4.4输出特征图大小计算公式
公式参数如下:
- W:输入特征图的宽,示例中为3
- H:输入特征图的高,示例中为3
- P:输入特征图填充大小,示例中为1,因为只填充了1圈
- FW:卷积核的宽,示例中为2
- FH:卷积核的高,示例中为2
- S:步幅大小,示例中为1,一次只移动一格
- OW:输出特征图的宽,示例中为4
- OH:输出特征图的高,示例中为4
此公式很重要,务必牢记。
此外,运算结果可能为小数,但是不同框架有不同取舍策略,有的向上取整,有的向下取整,PyTorch是向下取整。

4.5多通道卷积运算
前面的示例中用的都是单通道图,但实际应用中多采用三通道图,来看看三通道图卷积运算是怎么操作的。如下:
卷积核通道数要和输入特征图通道数 保持一致。
某通道的特征图与对应的某通道卷积核 相乘再相加,得到1个结果,三个通道都操作完成后得到3个结果,然后把这3个结果相加,得到最终结果。

可能会发现4*4*3的输入特征图和3*3*3的卷积核运算后得到了一个 单通道 输出特征图,即如下示例:

怎么控制输出特征图的通道数?增加卷积核数量。

5.池化层
池化层也有 填充和步幅,但是 没有池化核,我们把这个区域称为 感受野。
池化就是个操作,没有参数w,因此池化层算不上神经网络层。
池化层不会改变输入特征图的通道数,而卷积层可能会改变,和卷积核数量有关。
5.1最大池化运算
顾名思义,在一个区域选取 最大值,来看一个示例,步幅为2:

5.2平均池化运算
顾名思义,在一个区域选取 平均值,来看一个示例,步幅为2:

5.3输出特征图大小计算公式
感受野算法是每步池化的区域大小,不要把FH、FW理解为特定的东西,你就理解为每步运算时运算区域的尺寸就好记了。
下面的示例中的参数详细介绍可以看看4.4输出特征图大小计算公式,一模一样。

6.卷积神经网络整体结构

再次看到这个图,会发现:
- 卷积运算会改变输入特征图的大小和通道数。 输出特征图通道数大小由卷积核数量决定。
- 池化运算仅仅改变输入特征图的大小,不会改变通道数。
2025.10.14结束,把这些内容又学了一次,感觉挺简单的,一听就会,一练就废,哈哈。准备开PyTorch实战应用了。
