使用块的网络(VGG)
参考文章
核心思想:用“块”构建深度网络
VGG的最大创新在于提出了模块化设计理念:将多个小卷积核(3x3)和ReLU激活堆叠成块(Block,通过块的重复组合构建深层网络)。这种设计使网络结构清晰,易于理解和复现。
对比传统设计:
- 传统CNN(如AlexNet)的卷积核尺寸多样(11×11、5x5、3x3),结构零散。
- VGG则统一使用3x3卷积核,仅通过调整块内卷积层数和通道数来扩展网络。
主要设计理念
使用多个 3×3 卷积代替大卷积核(如 5×5 或 7×7)
- 两个 3×3 卷积的感受野 ≈ 一个 5×5 卷积;
- 三个 3×3 卷积的感受野 ≈ 一个 7×7 卷积;
- 但参数更少、非线性更强(每层都有 ReLU)。
网络由多个“卷积块”组成,每个块包含若干卷积层 + 池化层
- 每个块内卷积层使用相同通道数;
- 块之间通过最大池化(MaxPooling)下采样;
- 随着网络加深,通道数翻倍(64 → 128 → 256 → 512),逐步提取更抽象的特征。
最后接全连接层进行分类
- 通常是 2~3 个全连接层 + Dropout + Softmax。
VGG 的典型结构(以 VGG16 为例)
| 层类型 | 配置 |
|---|---|
| Block 1 | Conv3×3×64, Conv3×3×64, MaxPool |
| Block 2 | Conv3×3×128, Conv3×3×128, MaxPool |
| Block 3 | Conv3×3×256 ×3, MaxPool |
| Block 4 | Conv3×3×512 ×3, MaxPool |
| Block 5 | Conv3×3×512 ×3, MaxPool |
| Classifier | FC-4096, ReLU, Dropout → FC-4096, ReLU, Dropout → FC-1000 (Softmax) |
📌 VGG16 共有 16 个带权重的层(13 个卷积 + 3 个全连接),故名 VGG16;
还有 VGG19(19 层,Block 3~5 各多一个卷积)。
为什么“块”的设计重要?
- 模块化:便于理解和复用,为后续网络(如 ResNet 的残差块)提供范式。
- 深度可控:通过增减块的数量或每块中卷积层数,可灵活调整网络深度。
- 性能稳定:尽管参数量大,但训练相对稳定,在迁移学习中表现优异。
- 推动小卷积核普及:证明了堆叠小卷积核比单一大卷积核更有效。
四、VGG 的优缺点
✅ 优点
- 结构简单、规律性强,易于实现和教学;
- 特征提取能力强,广泛用于特征提取器(如 Faster R-CNN 中用 VGG16 作 backbone);
- 在 ImageNet 上 Top-5 错误率仅 7.3%(2014 年 SOTA)。
❌ 缺点
- 参数量巨大(VGG16 约 1.38 亿参数),计算开销大;
- 内存占用高,不适合移动端或实时应用;
- 后续被更高效的网络(如 GoogLeNet、ResNet)超越。
