🎯 学习目标

  • 理解卷积操作的数学原理
  • 掌握卷积核(滤波器)的作用机制
  • 理解步长、填充对输出的影响
  • 了解多通道卷积的实现方式
卷积操作示意

什么是卷积

卷积(Convolution)是一种数学运算,在图像处理中,卷积操作通过一个小的矩阵(卷积核/滤波器) 在图像上滑动,对每个位置进行元素乘积求和,从而提取图像的局部特征。卷积神经网络正是利用这一操作实现自动特征学习。

🔧 卷积操作过程

输入与卷积核

输入图像 (5x5): [1 2 3 4 5] [2 3 4 5 6] [3 4 5 6 7] [4 5 6 7 8] [5 6 7 8 9] 卷积核 (3x3): [1 0 1] [0 1 0] [1 0 1]

卷积计算

卷积过程: 1*1 + 2*0 + 3*1 + 2*0 + 3*1 + 4*0 + 3*1 + 4*0 + 5*1 = 1+3+3+5+3+5 = 15 输出特征图 (3x3): [15 21 27] [21 27 33] [27 33 39]

📊 输出尺寸计算

# 输出尺寸公式 output_size = (input_size - kernel_size + 2*padding) / stride + 1 # 示例计算 输入: 224x224, 卷积核: 3x3, 步长: 1, 填充: 0 输出 = (224 - 3 + 0) / 1 + 1 = 222 输入: 224x224, 卷积核: 3x3, 步长: 1, 填充: 1 输出 = (224 - 3 + 2) / 1 + 1 = 224 (尺寸不变) 输入: 224x224, 卷积核: 3x3, 步长: 2, 填充: 1 输出 = (224 - 3 + 2) / 2 + 1 = 112 (尺寸减半)

⚙️ 卷积参数详解

参数 说明 常见取值 影响
kernel_size 卷积核大小 1x1, 3x3, 5x5, 7x7 感受野大小
stride 滑动步长 1, 2 输出尺寸、计算量
padding 边缘填充 0, 1, 'same' 输出尺寸
dilation 空洞卷积率 1, 2, 4 感受野(不增加参数)
groups 分组卷积 1, in_channels 参数量、计算量

💻 PyTorch卷积层实现

import torch import torch.nn as nn # 基本卷积层 conv = nn.Conv2d( in_channels=3, # 输入通道数(RGB图像) out_channels=64, # 输出通道数(特征图数量) kernel_size=3, # 卷积核大小 stride=1, # 步长 padding=1, # 填充(保持尺寸) bias=True # 是否使用偏置 ) # 输入: (batch_size, channels, height, width) x = torch.randn(1, 3, 224, 224) out = conv(x) print(out.shape) # torch.Size([1, 64, 224, 224]) # 步长为2的卷积(下采样) conv_stride2 = nn.Conv2d(3, 64, kernel_size=3, stride=2, padding=1) out = conv_stride2(x) print(out.shape) # torch.Size([1, 64, 112, 112]) # 1x1卷积(通道变换) conv_1x1 = nn.Conv2d(64, 128, kernel_size=1)

🎨 多通道卷积

🖼️

RGB图像

3通道输入
每个滤波器3层深度

🔢

64个滤波器

产生64个特征图
输出64通道

📊

参数计算

3×3×3×64 + 64
= 1792个参数

🔍 常见卷积类型

# 深度可分离卷积(MobileNet) depthwise = nn.Conv2d(64, 64, kernel_size=3, padding=1, groups=64) pointwise = nn.Conv2d(64, 128, kernel_size=1) # 空洞卷积(扩大感受野) dilated = nn.Conv2d(64, 64, kernel_size=3, padding=2, dilation=2) # 转置卷积(上采样) transpose = nn.ConvTranspose2d(64, 32, kernel_size=4, stride=2, padding=1) # 分组卷积(ResNeXt) grouped = nn.Conv2d(64, 128, kernel_size=3, padding=1, groups=32)
💡
关键理解

卷积核的数量决定了输出特征图的通道数,每个卷积核学习一种特征模式(如边缘、纹理等)。更大的卷积核提供更大的感受野,但3x3卷积堆叠可以在减少参数的同时获得相同感受野。

卷积神经网络特征提取
图:卷积操作从图像中提取层次化特征

📝 本节小结

  • • 卷积通过滑动窗口进行特征提取
  • • 输出尺寸由输入尺寸、卷积核大小、步长、填充共同决定
  • • 多通道卷积:输入通道数×输出通道数个独立的滤波器
  • • 3x3是最常用的卷积核大小,参数效率高
  • • padding='same'可保持输出尺寸与输入相同