Inception 模型

2025年3月17日 | 阅读13分钟

Inception 模型是创造力和有效性的象征。由 Google 研究人员创建的 Inception 架构在推动图像分类、物体识别和其他领域的边界方面发挥了至关重要的作用。

2014 年发布的 Inception 模型是计算机视觉问题机器学习架构发展的一个重要转折点。Inception 模型,通常被称为 GoogLeNet,由 Google 研究人员创建,并提出了新颖的 Inception 模块概念,该模块将各种尺寸的多个卷积滤波器组合到单个层中,以在不同尺度上收集数据。

该模型在保持计算经济性的同时提供更优越的表示能力,这得益于其模块化架构。Inception 模型在后来的版本中得到了显著改进,例如 Inception v2、v3 和 v4,重点在于降低计算复杂度和增强训练稳定性。Inception 模型因其在学术界和商业界的广泛应用,在机器学习领域留下了持久的遗产,并极大地推动了计算机视觉研究和实际应用。

Inception 模型的主要创新

Inception 模型独特的设计,巧妙地在计算效率和模型复杂性之间取得了平衡,是其主要创新。以下是对主要创新的简要描述。

  • Inception 模块:Inception 模型引入的 Inception 模块的概念是由具有不同尺寸的多个并行卷积层组成的。这些并行路径通过在不同空间尺度上捕获信息,使模型能够学习输入数据的丰富表示。通过在单个层中集成不同尺寸的卷积,模型有效地捕获了数据中的局部和全局模式。
  • 辅助分类器:向网络中间层添加辅助分类器是 Inception 模型又一个重要的创新。这些辅助分类器有两个主要功能:首先,它们充当正则化器,鼓励模型学习更具判别性的特征;其次,它们在训练期间提供额外的监督信号,有助于缓解梯度消失问题。这种设计选择已被证明可以提高模型的整体性能和收敛速度。
  • 降维:该模型利用 1x1 卷积等降维技术来减少 Inception 模块中参数数量增加带来的计算负担。在应用较大的卷积之前,使用这些卷积来减少输入通道的数量,从而在保留重要信息的同时降低计算负荷。
  • 梯度流优化:除了辅助分类器外,Inception 模型还采用了多种优化策略来增强训练期间的梯度流。这些策略包括应用 RMSprop 或 Adam 等先进的优化算法,以及使用批标准化层,它们可以稳定每个层内激活值的分布。这些策略通过改善跨网络的梯度流,提高了训练效率和泛化性能。

Inception 模型应用

  • Inception 模型非常擅长将图像准确地分类到预定义的组中。它们已被应用于搜索引擎、场景解释和物体识别系统。
  • Inception 模型已应用于遥感领域,例如环境监测、灾害管理和卫星图像解释。它们通过简化从海量地理数据中提取有价值信息的过程,有助于决策过程。
  • 生物识别系统已将 Inception 模型用于虹膜扫描、指纹识别和面部识别等任务。其强大的特征提取能力可实现可靠的访问控制和验证。
  • 用于视频分析的应用,例如动作识别、视频摘要和内容审核,已经使用了 Inception 模型。它们使得能够高效地解释视频数据,从而增强了对视觉内容的理解和管理。
  • 已使用 Inception 模型解决了医学影像问题,包括使用 MRI 扫描、X 射线和组织病理学图像识别疾病。它们有助于医学专家识别异常并提供准确的诊断。
  • 在物体识别任务中,目标是在图像中识别和定位多个物体,Inception 模型已被应用于这些任务。应用包括增强现实、自动驾驶汽车和监控。

Inception 架构

Inception 模型的主要新颖之处在于其 Inception 模块,它们是较大网络内的小型子网络。这些模块通过同时使用多种滤波器尺寸(1x1、3x3 和 5x5)来捕获不同尺度的特征。目标是使网络在捕获输入图像的精细和粗糙信息的同时,学习广泛的特征。

1x1 卷积在应用较大的滤波器尺寸之前对于降低特征图的维度至关重要。这有助于降低计算复杂性,同时保留关键信息。此外,使用 1x1 卷积可以使网络学习复杂的分层特征,同时提高其表示能力。

引入辅助分类器是为了激励网络在不同级别学习有价值的特征,从而减轻梯度消失问题并提高训练收敛速度。

导入库

构建 Inception 模块

Inception 模块通过在输入上运行具有多个核尺寸的卷积来捕获多尺度信息。

这种方法创建了一个 Inception 模块,它是深度卷积神经网络 (CNN) 中使用的 Inception 架构的组成部分。Inception 模块通过在同一层中使用不同尺寸的滤波器,使网络能够有效地捕获不同空间尺度上的信息。

构建 GoogLeNet

该模型是计算单元(Inception 模块)的复杂网络,它们协同工作以分析和分类图像。通过结合辅助分类器和分析不同尺寸的图像,该模型可以更有效地训练并产生更准确的预测。

模型训练

输出

Inception Model
Inception Model

CIFAR-10 数据集

现在我们将加载 CIFAR-10 数据集。

在 CIFAR-10 数据集上进行训练和评估

现在我们将查看训练过程,包括损失和准确性指标随每个 epoch 的变化(针对训练和验证集),以及学习率如何根据计划进行更改。


输出

Inception Model
Inception Model

这是理解输出的简单方法

  • Epoch Number:这表示训练的总轮数还剩多少轮。
  • Learning Rate Scheduler:显示在训练过程中更改学习率的计划。
  • Loss:总损失以及模型每个输出的特定损失,例如主输出和辅助输出。
  • Accuracy:指标衡量模型预测与模型每个输出的实际标签的匹配程度。
  • Validation Accuracy and Loss:基于不同的验证数据集,这些指标的生成方式与训练指标类似。这有助于评估模型的泛化能力。
  • LR:当前 epoch 的学习率值。

Inception 实现

在标准神经网络层或卷积神经网络层中,前一层的输出作为下一层的输入,直到做出预测。Inception 块代表了 Inception 网络的基本概念。它将不同的层分开,而不是将其通过一个层,而是获取前一层的输入,将其馈送到四个不同的并行处理过程,然后再将所有这些不同级别的输出串联起来。

现在我们将实现一个 Inception 模型。

导入库

数据集准备


模型开发

让我们定义 Inception 块并解释它是如何工作的。Google Net 由九个 Inception 块组成。在深入讨论 Inception 块之前,我们假设您熟悉反向传播概念,如随机梯度下降和 CNN 相关术语,如最大池化、卷积、步幅和填充。应该注意的是,在前面的图形中,最大池化是通过 SAME 池化执行的。有几种执行池化类型,包括 VALID 池化和 SAME 池化。

上面的第一个可视化显示了 VALID 池化,这意味着没有对图像进行填充。最后一个选项是 SAME 池化。在这里,我们对输入进行填充(如果需要),以确保您选择的滤波器和步幅完全覆盖输入图像。对于步幅 1,这确保输出图像尺寸与输入图像尺寸相同。

现在,理解概念块。在标准的 CNN 设计中,一个层的输出作为输入传递到下一层;然而,对于 Inception 块,每个滤波器独立应用于前一层的输出,然后将结果串联起来并作为输入传递到下一层。对于 28x28x192(高度、宽度、通道)输入,我们使用了四种不同的滤波器:1x1、3x3、5x5 和 3x3。现在,您可能会想,为什么我们使用 1x1、3x3 和 5x5 滤波器。并且由于 1x1 卷积不会产生任何变化。

早期的设计使用了固定尺寸的卷积窗口;例如,在 VGG16 中,卷积滤波器是 3x3 并且对所有人都是固定的,但在这里我们同时使用 3x3 和 5x5 来处理图像中不同大小的对象。我们使用 1x1 滤波器来减小光谱维度。“光谱维度”是指一个频带。例如,如果 Inception 块的输入尺寸为 28x28x192,则数字 192 被称为频带或光谱维度。使用 1x1 滤波器来减小光谱维度可以节省大量的处理工作。为了节省计算资源,我们在执行 3x3 和 5x5 操作之前,还应用了 1x1 滤波器。我们将详细介绍如何通过使用 1x1 滤波器来节省计算能力。

Inception V3 架构与 Inception V2 在 2015 年的同一篇文章中发布,可以看作是早期 Inception 架构的升级。

输出

Inception Model
Inception Model
Inception Model

输出

Inception Model
Inception Model

我们能够确定 Inception V3 模型总共有 2120 万个可训练参数。


下一主题机器学习架构