问题描述
我的数据集非常小,我需要进行数据扩充。 我正在使用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.。然后可以将保存的转换图像添加到输入数据集中。