🎓 总站 🏠 本课目录 01 图像基础 02 空间滤波 03 频率滤波 04 彩色处理 05 神经网络 06 表征学习 07 Transformer 08 CNN
视觉计算 · 第8章

卷积神经网络(CNN)

从 MLP 的归纳偏置不足讲起,理解卷积层(局部连接、参数共享、平移等变)、步长/空洞卷积与特征图尺寸计算、池化、感受野,以及 LeNet/AlexNet/VGG/ResNet 等经典网络与残差连接。

📚 学习进度
0%

🎯学习目标

  • 理解 MLP 的不足与 CNN 的归纳偏置(局部性、平移等变、参数共享);
  • 掌握卷积层的五个视角、多通道卷积与参数量计算
  • 掌握步长 stride、填充 padding、空洞卷积及特征图尺寸公式
  • 理解最大/平均/全局池化、1×1 卷积、降采样与上采样;
  • 掌握感受野、特征图概念,编码器-解码器与 U-Net;
  • 熟悉 LeNet/AlexNet/VGG/GoogLeNet/ResNet 与残差连接

1从 MLP 到 CNN

MLP 是通用、简洁、易并行的近似器,但缺点明显:

⚠️ MLP 的缺点① 归纳偏置弱(weak inductive biases);② 样本效率低、数据饥渴;③ 全连接线性层计算量巨大。

图像具有局部性平移不变性:相关的事物聚集在一起,相距甚远的可假设相互独立;同样的内容在不同位置应被同样处理。

若假设输出是输入的局部函数,并对每个局部用相同权重(权重共享)计算,就得到了卷积神经网络。

⭐ FC → Conv全连接层 → 局部连接(只连接局部)→ 权重共享(各局部用同一组权重)= 卷积层。卷积核 W 就是应用于整张图像的同一滤波器。

2卷积层与五个视角 ⭐

卷积层是一种受约束的线性层:其权重矩阵是 Toeplitz(托普利茨)矩阵(每条左上到右下对角线元素相同)。约束带来更少的参数 → 更易学习、更少过拟合,且能应用于任意尺寸输入。

卷积层的五个视角

🔁

平移等变

输入平移,输出同样平移。

🧩

区域块处理

对每个 patch 做处理。

🎛️

图像滤波

卷积即滤波运算。

🔗

参数共享

各位置共用一组权重。

📏

处理可变尺寸

可处理任意大小张量。

输入 + 滑动卷积核(3×3) 输出特征图 滑窗 + 权重共享 → 平移等变 → 参数远少于 FC
图1 · 卷积核在输入上滑动,权重共享产生输出特征图

3多通道卷积与参数量 ⭐

图像处理中卷积常指单通道滤波;但神经网络的卷积层更通用——把多通道输入映射为多通道输出

  • 多通道输入:对 RGB 图像 x∈ℝ3×H×W,用多通道滤波器 w∈ℝ3×K×K,对各输入通道分别滤波再相加,得到单通道输出;
  • 多通道输出:用一个滤波器组 {w₀,…,w_{C-1}},每个滤波器产生一个输出通道(称为特征图 feature map);
  • 通用卷积层:把 C_in 通道映射为 C_out 通道,滤波器组是张量 w∈ℝC_out×C_in×K×K
⭐ 卷积层参数量公式
每个滤波器参数 = C_in × K × K
(加偏置则 +1)
整层参数量 = C_out × (C_in × K × K + 1)
例:输入 3 通道、3×3 核,则每个滤波器有 3×3×3 = 27 个参数;滤波器个数 = 输出通道数(题目未给则无法确定)。

4步长、填充、空洞卷积与尺寸计算 ⭐

步长卷积(Strided Convolution)

标准卷积保持空间分辨率;步长卷积以步长 S 跳跃扫描,实现下采样H×W→ℝH/S×W/S。可显著降低算力/内存,但会降低卷积质量("跳跃式扫描"漏细节),DFT 上可见混叠 aliasing 伪影。

⭐ 输出尺寸公式(必考)
输出 = ⌊ (W − F + 2P) / S ⌋ + 1
  W=输入尺寸  F=卷积核大小  P=填充  S=步长

填充(Padding)

在输入边缘补零(P),可控制输出尺寸(如 same 填充保持尺寸不变)。

空洞卷积(Dilated Convolution)

把卷积核元素在空间上拉开间距(空洞率 d),在不降分辨率、不增参数的前提下指数级扩大感受野。等效核大小:

K_dilated = (K − 1) × d + 1
💡 注意空洞卷积也会引入伪影,且改变滤波器行为(不再具备平滑作用)。

5池化层(Pooling)

池化是一种降采样层,用某种聚合统计量概括一个图像块内的信息:

类型聚合方式作用
最大池化 Max取窗口最大值对小平移稳定(不管边缘精确位置都有大响应)
平均池化 Avg取窗口平均值平滑、降采样
跨通道池化在特征通道间池化可实现旋转不变性(总有某角度滤波器响应)
全局池化 Global对整张特征图池化C×M×N → 长度 C 的向量,常用于输出端
13 24 Max 2×2 4 Max → 取最大(=4) Avg → 取平均(=2.5)
图2 · 2×2 池化:最大池化取最大值、平均池化取均值

此外还有非线性滤波层:与卷积类似在张量上滑窗、相同独立处理,但执行的是局部窗口的非线性函数(如池化即一种)。

61×1 卷积与上下采样

1×1 卷积

  • 跨通道信息集成;升维与降维;
  • 引入非线性(后接激活函数),让网络更深、学更复杂决策边界;
  • 不改变感受野与特征图尺寸,且只增极少参数、计算代价微乎其微。

降采样与上采样

CNN 可构建为分析-合成金字塔:分析时降采样(减空间维度、降算力、扩感受野、提取高级语义),合成时上采样(恢复空间细节)。

方向方法
降采样步长卷积、池化
上采样反池化 (Unpooling)、插值(最近邻/双线性)、转置卷积(反卷积,先膨胀再卷积)

7感受野与特征图

感受野(Receptive Field)

一个神经元的感受野是输入信号中它所敏感的区域。MLP 中每个神经元的感受野是整个输入;CNN 中每个神经元只能"看到"输入的一部分(由卷积核大小决定)。网络越深,感受野越大;常希望最后一层感受野覆盖整张图(如全局平均池化天然覆盖全图)。

特征图(Feature Map)

  • 特征图既可指卷积层输出的某个通道,也可指某层所有通道的整体堆叠;
  • 对图像是 2D 空间数组;对视频是 3D 时空数组;
  • 随网络加深:空间分辨率越来越低,通道数越来越多——浅层敏感于边缘/线条,深层组合成角点、纹理乃至高级语义(信息重组)。
💡 可视化深层特征图深层 512/2048 通道无法逐个看,可用 PCA 取方差最大的 3 个主成分映射到 RGB——同色区域代表网络提取到相似特征(如所有"天空"呈蓝色、"建筑"呈红色)。

从分类到像素级理解:分类输出单个类别向量(全局池化压成一点);稠密预测(如语义分割)需保留空间位置。降采样太多则语义强但位置模糊,太少则位置准但语义弱(感受野太小)。

8编码器-解码器与 U-Net

编码器以图像为输入逐层降采样到低维特征图;解码器以低维特征为输入逐层上采样到图像输出。二者结合即编码器-解码器架构,强制信号通过一个信息瓶颈——迫使网络抽象,同时降采样省内存算力。

⭐ U-Net 的跳跃连接低维瓶颈让解码器难以输出高频细节。U-Net 增加跳跃连接(skip connection):把每个下采样层最后的通道激活,与对应上采样层的第一组通道拼接,既维持信息瓶颈,又让高分辨率空间信息流过,恢复高频细节。
Encoder↓ 瓶颈 Decoder↑ skip connection 跳跃连接
图3 · U-Net:编码器-解码器 + 跳跃连接

9经典网络与 ResNet ⭐

ImageNet 数据集:约 100 万张带标签图像、1000 个类别,是经典网络的试金石(ILSVRC 竞赛)。

网络层数特点
LeNet~7 层最早的卷积网络(手写数字)
AlexNet8 层2012 ImageNet 突破,ReLU + Dropout
VGG16 层统一用 3×3 小卷积堆叠
GoogLeNet22 层Inception 模块
ResNet152 层2015 ILSVRC 冠军,错误率 3.57%,引入残差连接
⭐ 残差连接(Residual Connection)给非线性卷积层增加一条直连边提高信息传播效率:把目标函数拆为恒等函数 + 残差函数,让单元 f(x;θ) 去近似 h(x) − x,用 f(x;θ) + x 逼近 h(x)。这样形成嵌套函数类——更复杂的函数类一定包含较简单者,保证不会因加深而变差,从而可训练极深网络(缓解退化/梯度问题)。
x 卷积+ReLU 卷积 f(x) + h(x) 恒等捷径 (skip): + x
图4 · 残差块:输出 = f(x) + x(学习残差 h(x)−x)

重点例题

例题1:卷积输出尺寸计算 输入 32×32,卷积核 5×5,padding P=2,stride S=1,求输出尺寸。
输出 = (W − F + 2P)/S + 1
     = (32 − 5 + 2×2)/1 + 1
     = 31/1 + 1 = 32
结论:输出为 32×32(same 填充,尺寸不变)。
例题2:卷积层参数量计算 输入 3 通道、卷积核 3×3、输出 64 通道(含偏置),求参数量。
每个滤波器 = C_in × K × K = 3 × 3 × 3 = 27(+1 偏置 = 28)
整层 = C_out × (C_in·K·K + 1) = 64 × 28 = 1792
对应课件例题:输入 3 通道、3×3 核,每个滤波器参数 = 3×3×3 = 27(答案 b);滤波器个数 = 输出通道数,题目未给则无法确定
例题3:空洞卷积等效核大小与残差作用 ① 3×3 卷积、空洞率 d=2:K_dilated = (3−1)×2 + 1 = 5,等效 5×5 感受野,但参数仍只 9 个。
残差连接作用:让网络学习残差 h(x)−x 而非直接学 h(x),形成嵌套函数类,缓解深层退化与梯度问题,使极深网络(152 层)可训练。

🎯自测(点击展开)

从全连接层如何一步步得到卷积层?
全连接 → 局部连接(只连局部)→ 权重共享(各局部用同一组权重)= 卷积层。
卷积层为什么参数比全连接少?
局部连接 + 权重共享,是受约束的线性层(Toeplitz 矩阵),参数大幅减少,更易学、更不易过拟合。
写出卷积输出尺寸公式。
输出 = (W − F + 2P)/S + 1,W 输入尺寸、F 核大小、P 填充、S 步长。
最大池化为什么能带来平移稳定性?
在空间局部取最大值,无论边缘精确位置如何都有较大响应,对小平移不敏感。
1×1 卷积有哪些用途?
跨通道信息集成、升降维、引入非线性,几乎不增计算与感受野。
残差连接如何表达目标函数?
拆成恒等+残差:用 f(x;θ) 近似 h(x)−x,再用 f(x;θ)+x 逼近 h(x)。

📝强化题库

选择题点选即时判分;填空题输入后"检查"或"显示答案"。

已答 0/0答对 0正确率
已答 0/0答对 0