如何将数据扩充应用于数据集
How to apply data augmentation to a dataset
我有一个非常小的数据集,我需要做数据扩充。
我正在使用 Keras,但我无法理解这种方法如何帮助我。
我看了一些教程,他们建议在模型中添加层来做数据增强。
data_augmentation = tf.keras.Sequential([
layers.experimental.preprocessing.RandomFlip("horizontal_and_vertical"),
layers.experimental.preprocessing.RandomRotation(0.2),
])
model = Sequential()#add model layers
model.add(data_augmentation)
....
我的问题是:如果我传递给数据集中包含的 model.fit N 个图像,那么数据扩充如何帮助我处理一个小数据集,这些图像将只翻转或旋转,我不会有两个相似的图像:例如原始图像和翻转图像。
我应该先保存增强图像吗?
在我的代码中,我遵循本教程的选项 1
https://www.tensorflow.org/tutorials/images/data_augmentation
在训练过程中,没有增强的模型会处理数据集中的图像。当您添加增强时,随机选择输入图像以将其转换为不同的图像并用作模型的输入。例如,如果您有一张猫的图像,并且随机选择它进行水平翻转,那么有时会在不翻转图像的情况下训练模型,有时会翻转图像。因此,您的模型会看到更广泛的输入图像分布。可以使用 ImageDataGenerator.flow 或 ImageDataGenerator.flow_from_directory 存储转换后的图像。文档是 here.。然后可以将保存的转换图像添加到输入数据集中。
我有一个非常小的数据集,我需要做数据扩充。 我正在使用 Keras,但我无法理解这种方法如何帮助我。
我看了一些教程,他们建议在模型中添加层来做数据增强。
data_augmentation = tf.keras.Sequential([
layers.experimental.preprocessing.RandomFlip("horizontal_and_vertical"),
layers.experimental.preprocessing.RandomRotation(0.2),
])
model = Sequential()#add model layers
model.add(data_augmentation)
....
我的问题是:如果我传递给数据集中包含的 model.fit N 个图像,那么数据扩充如何帮助我处理一个小数据集,这些图像将只翻转或旋转,我不会有两个相似的图像:例如原始图像和翻转图像。
我应该先保存增强图像吗?
在我的代码中,我遵循本教程的选项 1 https://www.tensorflow.org/tutorials/images/data_augmentation
在训练过程中,没有增强的模型会处理数据集中的图像。当您添加增强时,随机选择输入图像以将其转换为不同的图像并用作模型的输入。例如,如果您有一张猫的图像,并且随机选择它进行水平翻转,那么有时会在不翻转图像的情况下训练模型,有时会翻转图像。因此,您的模型会看到更广泛的输入图像分布。可以使用 ImageDataGenerator.flow 或 ImageDataGenerator.flow_from_directory 存储转换后的图像。文档是 here.。然后可以将保存的转换图像添加到输入数据集中。