1. VGG 使用可重复使用的卷积块来构建深度卷积神经网络
1.1什么是卷积块?
VGG 不再像早期 AlexNet 那样零散堆叠卷积层,而是设计了 **标准化的卷积块(Conv Block)** 作为基础重复单元: 一个标准 VGG 卷积块的固定结构为: 连续若干个 3×3 卷积层 + ReLU激活函数 + 1个 2×2最大池化层
举个最常见的块结构: 比如一个卷积块内连续堆叠 2 次3×3卷积+ReLU,最后接池化;下一个卷积块可以堆叠 3 次3×3卷积+ReLU再接池化。
1.2为什么要用可重复的卷积块?
- 结构规整、易复用:把相同模式的层封装成块,代码可以循环调用同一个模块,不用重复写大量卷积层代码,工程实现更简洁。
- 用小卷积堆叠替代大卷积 :连续多层
3×3小卷积,感受野可以等价于大尺寸卷积(2 层 3×3=5×5 感受野、3 层 3×3=7×7 感受野),同时参数量更少、非线性表达能力更强,能学习更复杂的图像特征。 - 方便加深网络 :依靠重复堆叠卷积块,VGG 轻松把网络做到 16 层(VGG16)、19 层(VGG19),验证了网络深度提升可以显著提升图像分类精度。
2. 不同的卷积块个数和超参数可以得到不同复杂度的变种
VGG 论文里一共给出了 A、A-LRN、B、C、D、E 六种网络结构变种,我们最常用的就是 D(VGG16)、E(VGG19),差异来源主要就是两点:
① 卷积块内的卷积层数(超参数)
每个卷积块里可以设置连续堆叠 2 次、3 次卷积:
- 浅层卷积块:一般堆叠 2 次
3×3卷积,提取边缘、纹理这类基础特征; - 深层卷积块:堆叠 3 次
3×3卷积,用来提取目标轮廓、局部语义这类高级特征。
② 整体卷积块的总数量
VGG 所有变种统一用5 组卷积块,区别在于每组卷积块内部重复多少次卷积:
- VGG16:5 个卷积块内卷积总数依次是 2、2、3、3、3,总共 13 个卷积层 + 3 层全连接层 = 16 层;
- VGG19:5 个卷积块内卷积总数依次是 2、2、4、4、4,总共 16 个卷积层 + 3 层全连接层 = 19 层。
不同变种的区别
- 卷积层数越多、卷积块内重复次数越多:网络复杂度越高、参数量越大、拟合能力越强,但训练需要更多数据、更容易过拟合、推理速度更慢;
- 层数少的轻量变种(比如 VGG11):训练快、算力消耗小,适合小数据集或者部署在算力弱的设备上,但特征提取能力弱,精度偏低。
补充小知识点
除了卷积重复次数,卷积核大小、通道数、学习率这些超参数调整,也可以衍生出自定义的 VGG 轻量化 / 改进版本,这也是这句话里 "超参数" 涵盖的内容。