一. 卷积神经网络概述
1.1 CNN的核心价值
卷积神经网络(CNN)通过局部感知和权值共享两大特性,成为计算机视觉领域的基石:
局部感知:模仿生物视觉皮层,仅关注局部区域(如3×3窗口)
权值共享:同一卷积核在全图滑动,大幅减少参数量(AlexNet比全连接网络参数少60倍)
典型应用:
图像分类(ImageNet Top-5准确率从71.8%提升至99.3%)
目标检测(YOLO系列)
医学影像分析(病理切片识别)
二. 卷积操作详解
2.1 数学定义
离散卷积计算:
其中:
ff:输入图像
gg:卷积核(滤波器)
2.2 图像处理实例
边缘检测卷积核:
代码示例:OpenCV实现边缘检测
三. CNN架构解析
3.1 卷积层(Convolutional Layer)
核心参数:
输入通道数(in_channels)
输出通道数(out_channels)
卷积核尺寸(kernel_size)
代码示例:PyTorch实现
3.2 池化层(Pooling Layer)
最大池化操作:
输入矩阵: 输出矩阵:
[[1, 2, 3, 4], [[4, 4],
[5, 6, 7, 8], [8, 8]]
[9, 10,11,12],
[13,14,15,16]]
窗口大小2×2,步长2
代码示例:池化层实现
pool_layer = nn.MaxPool2d(kernel_size=2, stride=2)
output = pool_layer(input_tensor) # 尺寸减半
四. CNN超参数调优
4.1 卷积核尺寸(Kernel Size)
4.2 步长(Stride)
输出尺寸公式:
对比实验:
Stride=1:保留更多细节,计算量大
Stride=2:快速降维,可能丢失信息
4.3 填充(Padding)
Valid:不填充,输出尺寸缩小
Same:填充使输出尺寸不变
# 计算所需填充量
padding = (kernel_size - 1) // 2
4.4 卷积核数量
浅层:64-128个(捕获基础边缘/纹理)
深层:512-1024个(捕获高级语义特征)
五. 感受野(Receptive Field)
5.1 定义与计算
感受野表示输入像素对输出特征的可见区域。递推公式:
其中:
klkl:第ll层卷积核尺寸
sisi:第ii层步长
案例:
3×3卷积,stride=1,堆叠3层 → 最终感受野7×7
3×3卷积,stride=2,堆叠3层 → 最终感受野15×15
5.2 重要性分析
目标检测:需覆盖目标物体尺度(如YOLO设计不同感受野分支)
医学影像:小病灶需要小感受野精细定位
六. CNN参数效率揭秘
6.1 权值共享
传统MLP全连接层参数量:
784×256=200,704
CNN卷积层参数量(3×3核,64通道):
3×3×3×64=1,728
6.2 局部连接
全连接:每个神经元连接全部输入
卷积层:每个神经元仅连接局部区域
参数减少比例:
附:完整训练代码模板
注:本文代码基于PyTorch 2.0实现,运行前需安装: