数据增强过程

17 Mar 2025 | 4 分钟阅读

之前,我们看到模型准确度有显著提高。我们的模型有效地训练了分类训练数据。它对验证数据的泛化效果不佳,无法解决过度拟合的问题。现在,让我们讨论另一种改进模型训练过程的技术。这种技术被称为数据增强。它是我们为模型在训练过程中使用而创建新数据的过程。

这是通过获取我们现有的数据集并以有用的方式转换或更改图像来创建新图像来完成的。

Data Augmentation Process

应用转换后,新创建的图像被称为增强图像,因为它们本质上允许我们通过向数据集中添加新数据来增强我们的数据集。数据增强技术很有用,因为它允许我们的模型从各种不同的角度查看我们数据集中的每个图像。这允许我们的模型更准确地提取相关特征,并从每个训练图像中获取更多与特征相关的数据。

现在我们最大的问题是如何使用这种增强来减少过拟合。当我们的模型过于拟合训练集时,就会发生过拟合。

无需开始收集新图像并将它们添加到我们的数据集中。我们可以使用数据增强,它对我们现有数据集引入了细微的改变,例如更暗的阴影、翻转、缩放、旋转或平移。我们的模型会将它们解释为单独的图像。它不仅会减少过度拟合,而且还能防止我们的网络学习无关的模式并提高整体性能。我们有以下步骤来执行数据增强

步骤 1

要在训练数据集上执行数据增强,我们必须创建一个单独的变换语句。对于验证数据集,变换将保持不变。所以我们首先复制我们的transform1语句,并将其视为transform_train,例如

步骤 2

现在,我们将在transform_train语句中添加修改。修改将是 RandomHorizontalFlip、RandomRotation,它用于以某个角度旋转图像,该角度将作为参数传递。

为了给我们的数据集增加更多多样性,我们将使用精细类型转换。精细转换代表保留直线和平面的简单转换,以及对象。缩放、平移、剪切和缩放是属于此类别的一种转换。

在 RandomAffine() 中,第一个参数是 decrease,我们将其设置为零以停用旋转,第二个参数是剪切变换,最后一个是缩放变换,并使用 topple 来定义我们所需的缩放范围。我们定义了 0.8 和 1.2 的上下限,将图像缩放到其大小的 80% 或 120%。

步骤 3

现在,我们继续我们的下一个增强,以创建具有各种随机亮度、对比度和饱和度的新增强图像。我们将添加另一个转换,即 ColorJitter,例如

步骤 4

在执行我们的代码之前,我们必须更改 training_dataset 语句,因为现在我们有另一个用于训练数据集的转换。所以

现在,我们将执行我们的代码,并且在执行之后,它将为我们提供预期的输出以及正确的预测。

Data Augmentation Process

Data Augmentation Process

完整代码


Data Augmentation Process

Data Augmentation Process