VGG:用小卷积块把 CNN 做深的经典解读

VGG:用小卷积块把 CNN 做深的经典解读

本文是一篇原创中文论文解读,参考 Dive into Deep Learning 的 "Networks Using Blocks (VGG)" 章节,并回到 Simonyan 与 Zisserman 的经典论文 Very Deep Convolutional Networks for Large-Scale Image Recognition。原文与图示来源、许可说明见文末。

如果说 AlexNet 证明了"深度卷积网络 + 大规模数据 + GPU 训练"可以在 ImageNet 上击穿传统视觉方法,那么 VGG 的价值在于进一步回答了一个更工程化、也更长期的问题:CNN 变深时,结构应该如何保持清晰、可复用、可扩展?

VGG 的答案很朴素:少用特别大的卷积核,把网络拆成重复的 block,每个 block 内部堆叠若干个 3 x 3 卷积,最后接一个 2 x 2 最大池化。这个设计今天看起来像常识,但在 2014 年,它把"网络结构模块化"和"用小卷积核堆深网络"这两件事推到了主流舞台。

一、VGG 想解决什么问题?

早期 CNN 常常像手工搭积木:第一层用多大的卷积核、每一层输出多少通道、何时池化,很多选择都带有很强的经验色彩。AlexNet 中就能看到 11 x 115 x 53 x 3 等不同大小卷积核混用的痕迹。

VGG 的研究重点不是提出一种新算子,而是系统研究"深度"本身对大规模图像识别精度的影响。原论文的核心实验思路是:在尽量控制其他变量的前提下,用更深的卷积层、更小的卷积核,观察 ImageNet 分类与定位任务上的收益。

这使 VGG 的贡献不只是某个具体模型,而是一套可复用的设计语言:

  • 卷积核尽量统一为 3 x 3
  • 每个卷积层后接非线性激活;
  • 多个卷积层组成一个 block;
  • block 之间用池化逐步降低空间分辨率;
  • 通过改变 block 内卷积层数量和通道数,得到 VGG-11、VGG-16、VGG-19 等网络族。

二、为什么连续使用 3 x 3 卷积?

VGG 最有代表性的选择,是用多个 3 x 3 卷积替代更大的卷积核。直觉上,一个 3 x 3 卷积只能看局部邻域;但连续堆叠后,感受野会扩大。

例如,两个 stride 为 1、padding 为 1 的 3 x 3 卷积叠在一起,输出位置实际覆盖输入上的 5 x 5 区域;三个 3 x 3 卷积则对应 7 x 7 的有效感受野。也就是说,小卷积核并不意味着只能看很小的范围,关键在于堆叠。

更重要的是,参数量和非线性也发生了变化。假设输入和输出通道数都为 C

text 复制代码
一个 5 x 5 卷积:参数量约为 25C^2
两个 3 x 3 卷积:参数量约为 18C^2

两个 3 x 3 卷积在感受野接近 5 x 5 的同时,参数更少,并且中间多了一次 ReLU 非线性。三层 3 x 3 对比一层 7 x 7 时,这个优势更明显:27C^2 对比 49C^2,还额外增加了两次非线性变换。

这就是 VGG 的关键工程美学:用简单、统一、可重复的小组件,换来更深的表示能力。

三、VGG block:把网络结构变成可复用模块

D2L 对 VGG 的讲解抓住了一个非常重要的点:VGG 的真正影响在于 block 设计。一个 VGG block 可以抽象成下面的伪代码:

python 复制代码
def vgg_block(num_convs, out_channels):
    layers = []
    for _ in range(num_convs):
        layers += [
            Conv2d(kernel_size=3, padding=1, out_channels=out_channels),
            ReLU()
        ]
    layers += [MaxPool2d(kernel_size=2, stride=2)]
    return Sequential(*layers)

这里有两个参数最关键:

  • num_convs:这个 block 里堆叠多少个 3 x 3 卷积;
  • out_channels:这个 block 输出多少个通道。

空间尺寸的变化交给池化层处理,通道数和深度则由 block 配置控制。这样一来,网络结构不再是一长串互不相干的层,而变成了"若干个 block 的序列"。这也是后来 ResNet、DenseNet、Transformer block 等架构都延续的思路:先定义稳定模块,再堆叠模块形成网络。

四、VGG-11、VGG-16、VGG-19:网络族而不是单个模型

D2L 示例中的 VGG-11 可以用一个简洁的配置表示:

python 复制代码
arch = (
    (1, 64),
    (1, 128),
    (2, 256),
    (2, 512),
    (2, 512),
)

这个配置的含义是:网络有五个卷积 block,前两个 block 各包含 1 个卷积层,后三个 block 各包含 2 个卷积层;通道数从 64 增至 512。卷积层总数为 1 + 1 + 2 + 2 + 2 = 8,再加上 3 个全连接层,因此常称为 VGG-11。

原论文中更知名的是 VGG-16 和 VGG-19。它们延续同样的 block 逻辑,只是在若干 block 内放入更多 3 x 3 卷积层。这个思想后来变得非常自然:我们不再只讨论"一个网络",而是讨论"一个网络家族",通过深度、宽度、block 数量等维度形成一组可比较的模型。

五、VGG 的代价:清晰,但不轻量

VGG 的结构非常整洁,但它并不是一个高效模型。它有两个明显代价:

第一,计算量大。连续的小卷积虽然比同等感受野的大卷积参数更省,但网络整体变深后,卷积计算仍然昂贵。

第二,参数量集中在全连接层。经典 VGG 保留了 AlexNet 风格的巨大全连接分类头,两个 4096 维全连接层会带来大量参数。后来许多 CNN 架构改用全局平均池化等方式,正是在削减这类沉重分类头。

因此,VGG 今天未必是部署优先的选择,但它仍然适合作为理解 CNN 结构演进的基准:它足够简单,能清楚展示深度、小卷积核、模块化设计三者之间的关系。

六、为什么 VGG 影响深远?

VGG 的历史地位主要体现在三点。

首先,它强化了"深度"是视觉表示能力的重要来源。原论文系统评估了更深网络在大规模识别中的效果,为后续继续加深网络提供了经验基础。

其次,它把 CNN 设计变得更规整。VGG block 让网络结构可以用少量配置描述,这种模块化表达大幅降低了模型设计、复现和对比的复杂度。

最后,VGG 特征曾长期作为视觉迁移学习的通用表征。即使后来的 ResNet、EfficientNet、ViT 等架构在性能和效率上超过 VGG,VGG 仍然是理解深度视觉网络的一块关键踏板。

七、用一句话概括 VGG

VGG 的核心不是"某个特别神奇的层",而是一个深度学习架构设计原则:用统一的小卷积核构造可重复的 block,再通过堆叠 block 把网络做深。它把 CNN 从早期的经验式拼装,推向了更现代、更模块化的结构设计。

这也是 VGG 至今值得重读的原因:它提醒我们,经典架构的力量往往不来自复杂技巧,而来自把一个简单选择坚持到足够清晰、足够系统。

参考来源与许可说明

  • D2L 原文:Dive into Deep Learning 1.0.3, "Networks Using Blocks (VGG)", https://d2l.ai/chapter_convolutional-modern/vgg.html
  • 原论文:Karen Simonyan, Andrew Zisserman, "Very Deep Convolutional Networks for Large-Scale Image Recognition", arXiv:1409.1556, https://arxiv.org/abs/1409.1556
  • D2L 页面版本信息:HTTP Last-Modified: Fri, 18 Aug 2023 23:29:02 GMT
  • D2L 授权说明:D2L LICENSE-SUMMARY 声明文档采用 Creative Commons Attribution-ShareAlike 4.0 International License,示例代码采用 modified MIT license。本文为原创中文解读,引用 D2L 的章节脉络与一张 VGG 结构图,并保留来源与许可说明。
相关推荐
奈斯先生Vector1 小时前
AI 视频不是会动的图片:用 Shot Contract、时间码与音画质检构建可交付流水线
人工智能·重构·架构·prompt·aigc·音视频
男孩李1 小时前
浅谈JiuwenSwarm安装
人工智能·语言模型·自然语言处理
anscos1 小时前
案例分享| Latitude AI × Parasoft:搭建 L2-L3 自动驾驶量产验证与功能安全完整链路
人工智能·安全·自动驾驶
深念Y1 小时前
基于 NapCat 与本地 RAG 的群聊 AI 机器人方案(ARM64 部署)
人工智能·ai·机器人·node.js·自动化·情感陪伴·bot
工业HMI实战笔记1 小时前
解放双手,声控未来:抗噪语音交互如何革新嘈杂车间的HMI操作体验
人工智能·学习·自动化·制造
ai产品老杨1 小时前
AI视频分析并发优化参数配置说明
人工智能·音视频
怪奇云呼军1 小时前
G.711、Opus 和重采样会拖慢识别吗?闪电智能VoiceAgent 的音频入口怎么选
java·人工智能·python·算法·云计算·音视频
星空彼岸0071 小时前
AI大模型的能力边界
人工智能
chen_zn951 小时前
《VLA 系列》π0 | Flow Matching 动作专家 | 跨本体机器人策略 | 论文与源码解析
人工智能·具身智能·vla