卷积神经网络基础:从滤波器到特征图

全连接网络把图像拉平后会丢失空间结构、参数量爆炸。卷积神经网络(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 视觉化奠定基础。

参考与延伸阅读

本文累计阅读