PyTorch 教程-图像识别
图像识别 是从给定的图像中提取有意义信息(如图像内容)的过程。在图像识别中,要对给定图像中的主要内容进行分类是至关重要的,因此它不涉及确定识别内容的位置和姿态。
术语 "图像识别" 是为了表示利用算法和机器学习概念识别特定动物、物体、人物或其他目标主题的计算机技术而引入的。图像识别 与计算机视觉相关,后者是一个广泛的标签,用于描述使计算机像人类一样看的过程,涉及训练计算机和图像处理。这是一个对在数据上进行密集工作的计算机的总称。
进行图像识别有几种方法。使用 卷积神经网络 位于许多识别技术的顶端,它通过一系列人工神经元层对图像进行过滤。卷积神经网络专为图像识别和类似图像处理而设计。通过结合诸如最大池化、填充和步幅配置等技术,CNN过滤器在图像上工作,帮助机器学习程序更好地识别图片中的主题。
图像识别的挑战
图像识别是当今广泛使用的技术之一。由于其受欢迎程度和持续使用,它面临许多具有挑战性的问题。这些问题包括:
1) 扭曲
对象即使扭曲也不会改变。系统从原始图像中学习,并形成这个对象只能是特定形状的认知。在现实世界中,形状会改变,因此当系统遇到对象的扭曲图像时,会发生不准确的情况。
2) 类间变化
某些对象在类内发生变化。它们可能具有不同的大小、形状,但仍然代表相同的类。例如,瓶子、按钮、包、椅子的大小和外观可能各不相同。
3) 视点变化
当将具有不同方向对齐的图像(实体对齐方式不同)输入系统时,它会预测不准确的值。系统无法理解更改图像的对齐方式(例如左、右、底部和顶部)不会使其不同,这是因为它会对图像识别造成挑战。
4) 尺度变化
如果对象的尺寸发生变化,将影响对对象的分类。我们越近观察对象,它在尺寸上看起来越大,反之亦然。
5) 遮挡
某些对象阻挡图像的完整视图,导致系统获取不完整的信息。需要开发一种对这些变化敏感且包含大量数据样本的算法。
在PyTorch中进行图像分类
PyTorch是深度学习中最流行的框架之一。图像分类是一个监督学习问题。使用预训练模型进行图像分类。
1) 预训练模型
预训练模型是在大型基准数据集(如ImageNet)上训练的神经网络模型。有各种预训练模型,如AlexNet和ResNet101。这两个模型都在ImageNet数据集上进行了训练。预训练一词表示深度学习架构,例如ResNet101和AlexNet,已经在某些数据集上进行了训练,并携带了相应的权重和偏差。TorchVision包含这两个体系结构和预训练模型。
a) 模型推断过程
如何使用预训练模型来预测输入的类别。这个过程涉及到模型推断,其中包含以下步骤:
- 读取输入图像。
- 对图像执行转换。
- 正向传递。
- 基于获得的分数显示预测。
b) 使用TorchVision加载预训练网络
我们可以轻松使用TorchVision模块使用预训练模型。为此,我们首先需要安装torchvision并从torchvision模块导入models,然后使用dir(models)查看我们可以使用的不同模型和体系结构。
pip install torchvision
from torchvision import models
dir(models)
c) 使用AlexNet进行图像分类
在使用AlexNet进行图像分类时,需要执行以下步骤:
步骤1: 加载预训练模型。
步骤2: 指定图像转换。
步骤3: 加载输入图像并进行预处理。
步骤4: 模型推断。
d) 使用ResNet进行图像分类
在使用ResNet进行图像分类时,需要执行以下步骤:
步骤1: 加载预训练模型。
步骤2: 将模型置于评估模式。
步骤3: 进行模型推断。
步骤4: 打印模型预测的前5个类别。
在下一个主题中,我们将讨论MNIST数据集以及如何使用深度神经网络使模型适应图像数据。我们将讨论验证集,该集用于验证神经网络并检查其对新数据的泛化效果。在训练出最佳神经网络后,我们将使用它来预测来自网络的新图像。