深度学习基础概念:卷积层直观解释


深度学习基础概念

一、卷积的目标

卷积层的任务是:

从图像中自动提取特征(例如边缘、纹理、形状)

而这个提取过程就是卷积操作。


二、卷积的输入输出形式

在计算机视觉中,卷积层的输入通常是一个 4 维张量:

[B, C_in, H_in, W_in]

输出则是:

[B, C_out, H_out, W_out]
符号 含义
B batch size(一次放几张图片)
C_in 输入通道数(比如 RGB = 3)
H_in, W_in 输入的高和宽
C_out 输出通道数(卷积核数量)
H_out, W_out 输出特征图尺寸

三、卷积全过程

Step 1. 准备卷积核(Kernel)

每个卷积核是一个小窗口,比如 ($ 3×3×C_{in} $)。假设输入是彩色图(3个通道),卷积核就是 (3×3×3)。

每个卷积核都有一组权重,它负责检测一种特征:

  • 比如检测“垂直边缘”;
  • 或检测“亮度渐变”;
  • 或检测“圆形区域”。

一个卷积层会有很多卷积核,比如 64 个——那就能检测 64 种不同类型的特征。所以最后会产生 64 张特征图,也就是 64 个输出通道。


Step 2. 滑动窗口计算(Convolution)

卷积核会在整张图上滑动,每到一个位置:

  1. 把卷积核和对应的区域像素一一相乘;
  2. 然后把所有乘积加起来,得到一个数;
  3. 这个数就是输出特征图的一个像素值。

belike:把一个小滤镜在整张图片上滑动, 滤镜响应强的地方说明“这个位置有我想要的特征”。


Step 3. 步长 (Stride)

步长 stride 决定卷积核每次移动的距离:

  • stride = 1:移动一个像素 → 输出图大;
  • stride = 2:跳两个像素 → 输出图小一半。

应用场景:

  • 想保留更多细节 → stride=1;
  • 想快速降维、减小尺寸 → stride=2。

Step 4. 填充 (Padding)

卷积核在边缘时会溢出图片,所以要不要补 0:

  • padding = 0:不补 → 输出变小;
  • padding = 1(针对3×3卷积):补一圈0 → 尺寸不变。

这就是为什么常见的卷积设置:

nn.Conv2d(in_channels=3, out_channels=64, kernel_size=3, stride=1, padding=1)

输出尺寸和输入一样大。


Step 5. 计算输出尺寸

输出尺寸公式:

$ H_{out} = \frac{H_{in} - K + 2P}{S} + 1 $
$ W_{out} = \frac{W_{in} - K + 2P}{S} + 1 $

其中:

  • (K):卷积核大小(kernel size)
  • (P):填充(padding)
  • (S):步长(stride)

举例:

  • 输入 32×32,kernel=3, padding=1, stride=1
  • 输出:(32−3+2×1)/1+1 = 32
  • 尺寸不变。

Step 6. 激活函数 (Activation)

卷积输出是线性的(可能为负数),我们需要加一点非线性,常用激活函数是:

  • ReLU:f(x) = max(0, x) → 让负数变 0,只保留重要的响应;
  • Sigmoid / Tanh:在一些特殊任务用。

目的:让网络能够学习到复杂的非线性关系,而不是单纯的加权求和。


Step 7. 批归一化 (Batch Normalization, BN)

卷积和激活后,加一个 BN 层可以:

  • 稳定训练;
  • 让不同 batch 的数据分布更一致;
  • 加快收敛。

BN 在卷积层里几乎是标配:

x = F.relu(self.bn(self.conv(x)))

Step 8. 池化层 (Pooling)

卷积提取了特征后,池化层负责降采样 (down-sampling)

  • 最大池化 (MaxPool):保留局部最大值;
  • 平均池化 (AvgPool):取局部平均值。

例如:

nn.MaxPool2d(kernel_size=2, stride=2)

每 2×2 区域缩成 1×1,图片宽高减半。

这能让模型:

  • 减少参数;
  • 获得更大的感受野;
  • 忽略微小位置偏移(提高鲁棒性)。

Step 9. 通道的累积与抽象

随着卷积层的层数增加:

层数 通道数 学到的特征
第一层 3 → 64 颜色、边缘
第二层 64 → 128 角、线条组合
第三层 128 → 256 局部结构(眼睛、轮廓)
第五层 512+ 整体语义(猫、车、人脸)

每一层输出的特征图叠在一起形成更多通道。 这就是“深度学习”的由来:特征逐层加深。


四、卷积流程图

输入图像 (3通道 RGB)

Conv + BN + ReLU (特征提取)

Pooling (降采样)

Conv + BN + ReLU (抽象化特征)

Pooling

Flatten (展平)

Fully Connected (分类器)

五、术语与场景

术语 在哪里用 作用
kernel (卷积核) 卷积层 检测局部特征
stride (步长) 卷积层/池化层 控制输出大小
padding (填充) 卷积层 保持尺寸不变
channel (通道) 卷积层输入输出 表示特征维度
feature map (特征图) 卷积层输出 显示每个通道学到的特征
pooling (池化) 降维阶段 减少计算量
activation (激活函数) 每个卷积后 提供非线性能力
batch normalization 卷积后 加速收敛、稳定训练

Author: linda1729
Reprint policy: All articles in this blog are used except for special statements CC BY 4.0 reprint policy. If reproduced, please indicate source linda1729 !
评论
  TOC