Ch.14
CNN 完全攻略:从卷积核、步幅、填充到骨干演进
基础卷积 → 现代骨干
从左到右:卷积、池化与残差逐层堆叠。
卷积核扫过图像得到特征,池化摘要,再进入分类。深层块中 残差 F(x) 与 跳跃 x 相加得输出。
输入卷积池化全连接输出
基础 CNN(卷积神经网络)是让 AI 理解图像的最伟大发明之一。本章细讲 CNN 的核心——卷积核如何扫过图像、步幅如何决定移动间距、填充如何在边缘补零。
你会看到:这些基础积木如何拼成 ResNet(让深层仍稳定训练),又如何演进到 ConvNeXt 等现代巨型骨干,从入门到进阶一次掌握。
如何读公式(卷积核、步幅、填充)
1. 输出边长
2. 步幅与填充
步幅越大重叠越少,特征图缩小更快;填充缓解边缘欠采样。
3. 标准卷积参数(含偏置)
4. 残差与现代骨干
如 的跳跃有助于训练极深网络,并通向 ResNet、ConvNeXt 等。
现代 CNN:从卷积基础到 ResNet
1. 卷积核 / 滤波器:找特征的放大镜印章
概念: 卷积核通常是 或 的数字小瓦片(矩阵)。它在原图上滑动,在重叠位置把像素对应相乘再全部相加(卷积),从而计算“这里有没有横线”“颜色是否急剧变化形成边界”。
直觉: 像玩《威利在哪里》——不要一眼扫全图,而是用小放大镜一块块看。放大镜(卷积核)若和要找的图案(例如红条纹)很吻合,就会像盖章一样打出“在这儿!”的高激活值。
2. 步幅与填充:步长与安全软垫
步幅: 放大镜(卷积核)一次移动几像素,即步长。为 1 则密;为 2 则跳格。步幅越大,同样大小的输入被更快扫完,单步计算相对更轻,但特征图的高宽也更快变小。
填充: 反复卷积时,边缘像素比中心重叠次数少,边缘信息相对更弱;不填充则分辨率还会一直被吃掉。因此在四周补 0(零填充) 当软垫,保持尺寸,也让边缘能被“公平地盖到章”。
3. 池化:只留精华的摘要
概念: 从卷积得到的大量响应里,主要保留最突出的值,大幅缩小空间尺寸。通常用窗口内最大值——最大池化(有时也用平均池化)。
直觉: 像嘈杂会议室里多人同时发言:忽略细碎闲聊(背景、弱响应),只把最大、最清晰的那一声(强特征)记进纪要。数据量少了,做判断仍够用的核心信号还在。
4. 通道与三维卷积:层层叠叠的酥皮
概念: 灰度图 1 个通道;彩色图是 R、G、B 三层薄膜叠成的 3 通道数据。因此卷积核不是一张平面,而是与输入通道等深的 3D 块,在同一位置一次性看全通道。网络越深,高宽往往越小,而表示不同模式的滤波器(输出通道)会像 64、128、256… 层层叠叠的酥皮一样变厚。
重要性
参数共享(效率最大化)
若像全连接那样每个像素各有一套权重,分辨率稍涨,参数就会爆炸。CNN 则在全空间复用同一套卷积核(放大镜)——好比打扫大房间时,不是每块地砖雇一名清洁工,而是一个人一把扫帚扫全屋。于是可训练参数与 FLOPs 一起下降,智能手机、实时监控摄像头等资源紧张场景也能跑视觉模型。
平移鲁棒性
狗在正中央端端正正坐着,还是挤在左下角,CNN 都在找同一套“狗”线索。它不是死记坐标,而是让卷积核扫遍整幅图找模式。加上池化后,像素略有抖动、错位时,响应更容易被整理成稳健输出,接近实务里说的稳健物体识别。(仍不等于对旋转、尺度完全不变。)
层次化特征(从局部到整体)
浅层抓线、角、粗糙纹理等简单线索,深层把它们连成圆与轮廓,再拼出狗眼、车轮等物体部件。直觉上像用小积木搭大造型。同一骨干便于从分类扩到检测(边界框)、分割,也与人类视觉皮层的分层处理相呼应。
视觉生态的共同语言与必备素养
在 PyTorch、TensorFlow 里,`Conv2d` 是随手就用的基础模块。即便 ViT(第 05 章) 等 Transformer 很火,把图像先切碎或抽局部特征时,卷积仍会出现在 stem、混合结构里。ImageNet 预训练权重常是论文与产品的起点。掌握“图像如何变成数”的 CNN 语法,才能阅读、修改、按项目改造开源代码与最新论文。
如何使用
第 1 步:特征提取 — 澄清浑水
图像依次通过 [卷积(找特征) 激活(如 ReLU,去掉负值) (可选)批归一化 池化(摘要)] 组成的传送带,重复多遍。靠前层像滤粗沙(简单边缘与颜色),靠后层滤掉更细噪声,只留更抽象的形状。背景杂音被压下去,留下标明何种关键特征在何处最强的特征图。
第 2 步:展平 — 把积木排成一行
卷积结束后,把通道×高×宽的 3D 特征图 摊成每张图一条长向量,像把复杂 3D 积木拆开、在地上排成一长条。批次维 (一次喂几张)保持不变,只把单张图的空间与通道维串起来,方便后面全连接层打出各类分数。
第 3 步:全连接 — 法官的终局判决
向量送入 Dense(全连接) 层,为每类输出 logit;多分类时常用 softmax 变概率,训练配交叉熵。“这张照片有 95% 概率是猫”只是把本步输出用人话包了一层。
第 4 步:迁移学习与微调
实务中很少从零训练上百层 CNN。更常见是加载用数百万张图训好的 ResNet、EfficientNet 等预训练骨干(优质骨架)。数据少时冻结骨干,只按任务换掉分类头(法官)再训;输入尺寸(如 )和 RGB 归一化(如 ImageNet 均值/标准差)必须与预训练流水线一致。数据多时解冻上层块做微调。ViT / 混合流程里,“卷积抽局部结构”的直觉依然成立。
总结
一句话: CNN 用卷积核找特征,用步幅移动,用填充护边,用池化做摘要。
衔接: 这些基础块演化为 ResNet 的残差连接与 ConvNeXt 等强现代 CNN。
实务: 最常见报错是形状不匹配;用输出尺寸公式逐层追踪高、宽与通道,习惯养成后写代码会轻松很多。
解题提示
CNN 题的核心通常是输出特征图尺寸与参数量。把这两类公式练熟,再复杂的现代结构也能拆着看。
关键公式 1:输出边长
输入边长 ,核 ,填充 ,步幅 ,输出边长 为
例: , 核,,,得 ,尺寸因填充而保持。
关键公式 2:参数量(含偏置)
对 核,输入通道 ,输出通道 ,每个输出通道 1 个偏置:
例: ,(RGB), → 。
概念练习
“使用填充的主要目的最接近?
① 单纯增加运算
② 减轻边缘信息损失并控制尺寸
③ 改颜色空间” → 答案 2
概念练习 2
“步幅从 1 提到 2,特征图宽高大致如何变?” → 跨度变大,约减半。