如何将数据扩充应用于数据集

问题描述

我的数据集非常小,我需要进行数据扩充。 我正在使用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)
 ....

我的问题是:如果我将数据集中包含的N张图像传递给 model.fit 这些数据将仅被翻转或旋转,那么数据增强将如何帮助我获得一个小的数据集?有两个相似的图像:例如原始图像和一个翻转图像。

我应该先保存增强图像吗?

在我的代码中,我遵循此教程选项1 https://www.tensorflow.org/tutorials/images/data_augmentation

解决方法

在训练模型而不进行扩充的过程中,将按照数据集中的图像进行处理。添加增强时,将随机选择输入图像以将其转换为其他图像,并用作模型的输入。例如,如果您有猫的图像,并且随机选择要水平翻转的猫,则有时训练模型时不翻转图像,有时不翻转图像。因此,您的模型可以看到更广泛的输入图像分布。可以使用ImageDataGenerator.flow或ImageDataGenerator.flow_from_directory存储转换后的图像。文档为here.。然后可以将保存的转换图像添加到输入数据集中。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...