Pytorch图像识别

2025年3月25日 | 阅读 4 分钟

图像识别是从给定图像中提取有意义的信息(例如图像内容)的过程。在图像识别中,对给定图像中的主要内容进行分类至关重要,因此它不涉及确定已识别内容的位置和姿势。

术语“图像识别”介绍用于计算机技术,该技术借助算法和机器学习概念来识别某些动物、物体、人物或其他目标主体。图像识别计算机视觉相关,计算机视觉是像人类一样观察训练计算机和图像处理的综合标签。对于计算机而言,这是一个用于处理大量数据的通用术语。

图像识别有多种方法。使用卷积神经网络是许多识别技术的基础,它通过一系列人工神经元层来过滤图像。卷积神经网络是专门为图像识别和类似的图像处理而设计的。借助最大池化、填充和步幅配置等技术的结合,CNN 滤波器对图像进行处理,以帮助机器学习程序更好地识别图像的主题。

图像识别的挑战

图像识别是当今广泛使用的技术之一。由于其受欢迎程度和持续使用,它面临许多具有挑战性的问题。这些问题如下所示:

1) 变形

即使物体变形,也不会改变。系统从原始图像中学习,并形成一种感知,即该物体只能具有特定的形状。在现实世界中,形状会发生变化,因此当系统遇到物体变形的图像时,就会出现不准确的情况。

2) 类内差异

某些对象在类中发生变化。它们可以具有不同的尺寸、形状,但仍然代表同一类。例如,瓶子、按钮、袋子、椅子的大小和外观各不相同。

3) 视角变化

当将图像(其中实体在不同的方向上对齐)输入到系统中时,它会预测不准确的值。系统无法理解更改图像的对齐方式(例如左、右、底部和顶部)不会使其变得不同,这就是导致图像识别中出现挑战的原因。

4) 尺寸变化

如果物体的大小发生变化,物体的分类会受到影响。我们观察物体越近,它在尺寸上看起来越大,反之亦然。

5) 遮挡

某些物体会阻碍图像的完整视图,导致系统获得不完整的信息。有必要开发一种对这些变化敏感并包含大量数据样本的算法。

PyTorch 中的图像分类

PyTorch 是深度学习最受欢迎的框架之一。图像分类是一个监督学习问题。图像分类借助预训练模型完成。

1) 预训练模型

预训练模型是在 ImageNet 等大型基准数据集上训练的神经网络模型。有各种预训练模型,例如 AlexNetResNet101。这两个模型都在 ImageNet 数据集上进行了训练。预训练一词是指例如深度学习架构 ResNet101 和 AlexNet 已经在一​​些数据集上进行了训练,并随身携带了由此产生的权重和偏差。TorchVision 具有这两种架构和预训练模型。

a) 模型推理过程

如何使用预训练模型来预测输入的类别。这个过程涉及一个被称为模型推理的过程。此过程具有以下步骤:

  1. 读取输入图像。
  2. 对图像执行转换。
  3. 前向传递
  4. 显示基于获得的评分的预测。

b) 使用 TorchVision 加载预训练网络

我们可以借助 TorchVision 模块轻松使用预训练模型。为此,我们首先必须安装 torchvision 并从 torchvision 模块导入模型,并借助 dir (models) 查看我们可用的不同模型和架构。

c) 使用 AlexNet 进行图像分类

当使用 AlexNet 执行图像分类时,我们有以下步骤:

步骤 1: 加载预训练模型
步骤 2: 指定图像转换
步骤 3: 加载输入图像并对其进行预处理
步骤 4: 模型推理

d) 使用 ResNet 进行图像分类

当使用 AlexNet 执行图像分类时,我们有以下步骤:

步骤 1: 加载预训练模型。
步骤 2: 将模型置于评估模式。
步骤 3: 执行模型推理。
步骤 4: 打印模型预测的前 5 个类别。

在下一个主题中,我们将讨论 MNIST 数据集 以及如何使用深度神经网络来拟合图像数据。我们将讨论验证集,该验证集用于验证神经网络并检查其在新数据上的泛化程度。在训练了最佳神经网络之后,我们将其用于预测来自网络的新图像。