Ch07 CNN与CV
CNN 卷积神经网络 (Convolutional Neural Network)
一句话理解
CNN 是专门为图像设计的神经网络——通过卷积核扫描图像提取局部特征,通过池化压缩信息,通过多层堆叠从边缘到纹理到物体逐级抽象。它是计算机视觉过去十年的绝对统治者。
零基础理解
你看一张猫的照片,不是在”逐像素”看——你看到的是耳朵的形状、眼睛的颜色、毛发的纹理,最后组合成”这是一只猫”。CNN 模仿这个过程:第一层看出边缘和颜色块,第二层从边缘组合出纹理和形状,第三层从形状组合出”耳朵”和”眼睛”,最后判断”这是猫”。
为什么全连接网络不适合图像
| 问题 | 说明 |
|---|---|
| 参数爆炸 | 224×224×3 的图像有 150,528 个像素,第一层 1000 个神经元就需要 1.5 亿个参数 |
| 丢失空间结构 | 全连接把所有像素打平成一维,丢失了”相邻像素相关”的信息 |
| 平移不变性 | 猫在图片左边和右边应该是同一个猫,全连接无法天然处理 |
CNN 通过局部连接(卷积核只看局部)和权重共享(同一个卷积核扫过整张图)解决了这三个问题。
核心组件
1. 卷积核 (Convolution Kernel / Filter)
卷积核是一个小矩阵(如 3×3),在图像上滑动,每次计算”核覆盖区域”与”核值”的逐元素乘积之和。
输入图像 (5×5): 卷积核 (3×3): 输出特征图 (3×3):
┌ ┐ ┌ ┐ ┌ ┐
│ 1 2 3 0 1 │ │ 1 0 1 │ │ 7 8 6 │
│ 0 1 2 3 0 │ │ 0 1 0 │ │ 5 9 7 │
│ 3 0 1 2 1 │ │ 1 0 1 │ │ 8 6 5 │
│ 2 3 0 1 2 │ └ ┘ └ ┘
│ 1 2 3 0 1 │
└ ┘
计算示例 (左上角):
1×1 + 2×0 + 3×1 + 0×0 + 1×1 + 2×0 + 3×1 + 0×0 + 1×1 = 7
卷积核的作用:不同的核值检测不同的特征——有的检测水平边缘,有的检测垂直边缘,有的检测纹理,有的检测颜色变化。
| 卷积核类型 | 核值示例 | 检测内容 |
|---|---|---|
| 水平边缘 | [[1,1,1],[0,0,0],[-1,-1,-1]] | 水平方向明暗变化 |
| 垂直边缘 | [[1,0,-1],[1,0,-1],[1,0,-1]] | 垂直方向明暗变化 |
| 锐化 | [[0,-1,0],[-1,5,-1],[0,-1,0]] | 增强边缘 |
| 模糊 | [[1,1,1],[1,1,1],[1,1,1]]/9 | 平滑降噪 |
2. 通道 (Channel)
| 概念 | 说明 |
|---|---|
| 输入通道 | 彩色图有 3 个通道(RGB),每个通道是一个二维矩阵 |
| 输出通道 | 每个卷积核产生一个输出通道(特征图)。N 个卷积核 → N 个输出通道 |
| 通道间的卷积 | 每个输出通道的卷积核是三维的(kernel_h × kernel_w × 输入通道数),对输入所有通道做卷积后求和 |
3. 池化 (Pooling)
池化对特征图进行下采样,减小尺寸,同时保留重要信息。
| 池化类型 | 操作 | 效果 |
|---|---|---|
| 最大池化 (Max Pooling) | 取窗口内最大值 | 保留最强特征,对微小位移鲁棒 |
| 平均池化 (Avg Pooling) | 取窗口内平均值 | 平滑特征,保留背景信息 |
| 全局平均池化 (Global Avg Pooling) | 整个特征图取平均 | 替代全连接层,减少参数 |
最大池化 (2×2, stride=2):
┌ ┐ ┌ ┐
│ 1 3 2 4 │ │ 3 4 │
│ 5 6 7 8 │ → │ 8 9 │
│ 2 1 9 3 │ └ ┘
│ 4 5 6 2 │
└ ┘
4. 感受野 (Receptive Field)
感受野是输出特征图上一个像素”看到”的原始输入图像区域大小。
| 层数 | 卷积核大小 | 感受野大小 | 理解的层次 |
|---|---|---|---|
| 第 1 层 | 3×3 | 3×3 | 边缘、颜色 |
| 第 2 层 | 3×3 | 5×5 | 纹理、角点 |
| 第 3 层 | 3×3 | 7×7 | 简单形状 |
| 第 5 层 | 3×3 | 11×11 | 物体部件(眼睛、轮子) |
| 第 10 层 | 3×3 | 21×21 | 完整物体(脸、车) |
感受野公式:
其中 是第 l 层的卷积核大小, 是第 i 层的步长。
CNN 经典架构
| 模型 | 年份 | 层数 | 核心创新 | 地位 |
|---|---|---|---|---|
| LeNet-5 | 1998 | 5 | 卷积+池化+全连接 | CNN 鼻祖 |
| AlexNet | 2012 | 8 | ReLU + Dropout + GPU | 深度学习革命开端 |
| VGG-16/19 | 2014 | 16-19 | 只用 3×3 卷积,层数加深 | 简洁优雅,影响深远 |
| GoogLeNet (Inception) | 2014 | 22 | 多尺度卷积核并行 | 拓宽网络而非加深 |
| ResNet | 2015 | 50-152 | 残差连接,解决深层退化 | 里程碑级突破 |
| DenseNet | 2017 | 121-264 | 密集连接 | 特征复用极致 |
| MobileNet | 2017 | 28 | 深度可分离卷积 | 移动端高效 |
| EfficientNet | 2019 | B0-B7 | 复合缩放(深度/宽度/分辨率) | 精度和效率的平衡 |
| ConvNeXt | 2022 | T/S/B/L | CNN 现代化——借鉴 Transformer | 2022 年 CNN 最强 |
2026 年 CNN 的地位
| 领域 | CNN 使用情况 |
|---|---|
| 图像分类 | 仍广泛使用,ViT 在追赶 (大数据集 ViT 更强) |
| 目标检测 | YOLO 系列(CNN)仍是实时检测首选 |
| 图像分割 | CNN (U-Net) 在医学图像仍占主导 |
| 视频理解 | 3D CNN + Transformer 混合 |
| 自动驾驶 | CNN 是感知模块主力 |
| 手机端 AI | MobileNet/EfficientNet 是唯一选择 |
结论:Transformer 在 NLP 取代了 RNN/LSTM,但在 CV 领域 CNN 和 ViT 仍在竞争——CNN 在小数据和实时场景更有优势,ViT 在大数据和预训练场景更有优势。
相关笔记
- 第7章 · CNN 与计算机视觉 — CNN 的完整工程实践
- 卷积核 (Convolution Kernel) — 卷积核的深入理解
- 第9章 · Transformer 架构精讲 — ViT 如何将 Transformer 用于图像
- 深度学习 (Deep Learning) — CNN 在深度学习体系中的位置
- 注意力机制 (Attention Mechanism) — 注意力机制 vs 卷积的对比
来源
- LeCun et al., “Gradient-Based Learning Applied to Document Recognition” (1998, LeNet) — http://yann.lecun.com/exdb/publis/pdf/lecun-01a.pdf
- Krizhevsky et al., “ImageNet Classification with Deep Convolutional Neural Networks” (2012, AlexNet) — https://papers.nips.cc/paper/2012/hash/c399862d3b9d6b76c8436e924a68c45b-Abstract.html
- He et al., “Deep Residual Learning for Image Recognition” (2015, ResNet) — https://arxiv.org/abs/1512.03385
- Liu et al., “A ConvNet for the 2020s” (2022, ConvNeXt) — https://arxiv.org/abs/2201.03545
- Tan & Le, “EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks” (2019) — https://arxiv.org/abs/1905.11946