卷积神经网络基础:从滤波器到特征图
全连接网络把图像拉平后会丢失空间结构、参数量爆炸。卷积神经网络(CNN)用局部连接与权值共享,让模型在图像上滑动同一组滤波器,高效提取边缘、纹理到语义的特征。
卷积与滤波器
卷积运算把一个小滤波器(kernel)在输入上逐位置滑动,做逐元素乘加,得到一张特征图(feature map)。同一个滤波器在整张图上共享权重,因此参数少、且对位置平移有一定不变性。
填充与步长
填充(padding)在输入边缘补零,控制输出尺寸并保留边缘信息;步长(stride)决定滤波器每次移动几格,步长大于 1 会下采样。输出尺寸由输入大小、kernel、padding、stride 共同决定。
池化与通道
池化(如最大池化)在局部窗口取最值,进一步压缩尺寸、提供平移不变性。随着层数加深,通道数增加、空间尺寸减小,特征从低级(边缘)走向高级(物体部件)。多通道卷积每层用多组滤波器得到多张特征图。
import torch.nn as nn
conv = nn.Conv2d(in_channels=3, out_channels=16,
kernel_size=3, stride=1, padding=1)
pool = nn.MaxPool2d(kernel_size=2, stride=2)
out = pool(conv(torch.randn(1, 3, 32, 32))) # 输出 16×16×16
典型结构
经典做法是用「卷积块堆叠加池化」逐步抽象,最后展平接全连接做分类。现代架构(ResNet 等)在卷积基础上加入残差连接以训练更深的网络。
小结
CNN 通过共享权重的滑动滤波器提取局部特征,配合填充、步长、池化控制尺寸与抽象层级。它用极少参数保留空间结构,是视觉任务的基石,也为后续 Transformer 视觉化奠定基础。
参考与延伸阅读
- CS231n 课程笔记「卷积神经网络」系统讲解卷积、步长与池化。已核验。https://cs231n.github.io/convolutional-networks/
- 经典架构 AlexNet(Krizhevsky 等, 2012, NeurIPS)。已核验。https://arxiv.org/abs/1404.5997
- PyTorch 二维卷积文档。已核验。https://pytorch.org/docs/stable/generated/torch.nn.Conv2d.html
本文累计阅读 — 次