VGGNet-16 架构

17 Mar 2025 | 6 分钟阅读
VGGNet-16 Architecture

VGG 的全称是 Visual Geometry Group,隶属于牛津大学工程科学系。它开发了一系列卷积网络模型,从 VGG 到 VGG16 再到 VGG19,可用于人脸识别和图像分类。VGG 在卷积网络深度方面的研究主要目标是探究卷积网络的深度对大规模图像识别的准确性和精度有着怎样的影响。-Deep-16 CNN为了在避免过多参数的情况下增加网络层数,在每一层都采用了较小的 3x3 卷积核。

结构

VGG 的输入被设置为 224x244 尺寸的 RGB 图像。对训练集中的所有图像取平均 RGB 值,然后将图像输入 VGG 卷积网络。使用的是 3x3 或 1x1 的滤波器,卷积步长是固定的。VGG 有三个全连接层,根据卷积层和全连接层的总数不同,可以从 VGG11 到 VGG19。最小的 VGG11 包含八个卷积层和三个全连接层。最大的 VGG19 包含 16 个卷积层。+3 个全连接层。此外,VGG 网络在每个卷积层下方不包含池化层,总共分布在多个卷积层上的池化层共有五个。下图展示了 VGG 的结构

VGGNet-16 Architecture
VGGNet-16 Architecture

VGG16 有 16 层,而 VGG19 有 19 层。最后三个全连接层包含一系列相同的 VGG。整体结构由五组卷积层组成,然后是 MaxPool。区别在于五组卷积层包含数量递增的级联卷积层。

VGGNet-16 Architecture

AlexNet 的卷积层每层只有一个卷积,卷积核尺寸为 7x7。VGGNet 的每个卷积层包含两到四次卷积操作。卷积核为 3x3,卷积步长为 1,池化核为 2x2,步长为 2。VGGNet 最明显的改进是减小卷积核尺寸,增加卷积层数量。

VGGNet-16 Architecture

使用多个具有较小卷积核的卷积层,而不是使用具有大卷积核的单个卷积层,一方面可以减少参数,另一方面作者认为它等同于更多的非线性映射,从而增强了拟合能力。

VGGNet-16 Architecture

两个连续的 3x3 卷积等于一个 5x5 的感受野,而三个等于一个 7x7。使用三个 3x3 卷积代替一个 7x7 卷积的好处是双重的:首先,通过引入三个 ReLu 层而不是一个,决策函数变得更具辨别力;其次,参数减少了。例如,所有输入和输出都是 C 通道。三个使用 3x3 的卷积层需要三次 (3x3xC x C) = 27 x C x C,而一个使用 7x7 的卷积层需要七次 (7x7xC x C) = 49 x C。这可以看作是对 7x7 卷积的正则化,得到了三个 3x3 卷积。

1x1 卷积层的目的是在保持卷积层感受野的同时,增加决策函数的非线性。尽管 1x1 卷积技术是线性的,但 ReLu 引入了非线性。

网络配置

VGGNet-16 Architecture

这张图无疑是用来介绍 VGG16 的。这张图包含了丰富的信息。

  • 这是一张六种网络的对比表。从 A 到 E,网络变得越来越复杂。为了测试效果,应用了多层。
  • 每一列都详细解释了每种网络的结构。
  • 这是进行实验的正确方法:使用最简单的策略来解决问题,然后逐步优化遇到的任何困难。

训练

  • 优化方法是随机梯度下降 (SGD) 加动量 (0.9)。批次大小为 256。
  • 应用了 L2 正则化,权重衰减为 5e-4。在前两个全连接层之后进行 Dropout (p = 0.5)。
  • 尽管它比 AlexNet 网络更深,参数更多,但我们假设 VGGNet 可以以更少的周期收敛,原因有两个:一是更深的深度和更小的卷积带来了隐式正则化;二是部分层的预训练。
  • 对于浅层 A 网络,参数是随机初始化的,权重 w 从 N (0, 0.01) 中抽取,偏差设置为零。然后,对于更深的网络,前四个卷积层和三个全连接层使用 A 网络参数进行初始化。然而,后来发现可以直接初始化,无需预训练参数。
  • 为了得到 224x224 的输入图像,在每个 SGD 周期中,对每个缩放后的图像进行随机裁剪。为了丰富数据集,对裁剪后的图像进行随机水平翻转并改变 RGB 颜色。

现在我们将使用 VGGNet-16 模型来识别图像中的物体。

代码

导入库

接下来我们将定义输入的大小。

VGG-16 模型

接下来我们将布置 VGG-16 模型以供使用。我们希望使用预训练模型,以便使此过程易于理解。

预训练模型

Keras 库还包含一个预训练模型,允许您导入存储的模型权重并将其用于各种任务,包括迁移学习、图像特征提取和对象识别。我们可以加载库中提供的模型架构,然后将所有权重分配给相应的层。在我们使用预训练模型之前,先构建一些用于进行预测的函数。首先,加载图像并进行预处理。

我们将使用预训练权重以节省时间并使此过程简单化。

输出

VGGNet-16 Architecture
VGGNet-16 Architecture

在这里可以看到它提供了图像中存在的元素,如果您仔细观察,它工作得相当好。


下一主题独立成分分析