简介:keras ImageDataGenerator 实现批量数据增强(少量图片生成大量图片)
keras ImageDataGenerator 实现批量数据增强(少量图片生成大量图片)
在深度学习中,数据的质量和多样性对模型的训练和性能有着至关重要的影响。然而,在实际应用中,往往由于各种原因,我们可能只有少量的图片数据。为了解决这个问题,Keras提供了一个强大的工具:ImageDataGenerator。通过使用ImageDataGenerator,我们可以对原始数据进行批量增强,从而生成更多的训练样本。这种数据增强是非线性的,可以增加数据的多样性和鲁棒性。
ImageDataGenerator的主要特点包括:
在这个例子中,我们从’data’目录中读取图片,并通过ImageDataGenerator进行各种形式的增强。我们可以通过修改ImageDataGenerator的各种参数来调整增强的强度和种类。例如,我们可以增加旋转的角度、水平移动和垂直移动的范围、缩放的比例等来增加数据的多样性。同时,我们也可以选择不同的颜色变换方法,如亮度、对比度和饱和度等。最后,我们使用flow_from_directory方法生成新的图片,并使用matplotlib进行显示。
from keras.preprocessing.image import ImageDataGeneratorimport matplotlib.pyplot as plt# 定义ImageDataGenerator对象datagen = ImageDataGenerator(rotation_range=20, # 随机旋转的最大角度width_shift_range=0.1, # 随机水平移动的最大比例height_shift_range=0.1, # 随机垂直移动的最大比例zoom_range=0.1, # 随机缩放的最大比例horizontal_flip=True) # 随机水平翻转# 使用flow_from_directory从目录中读取图片,并生成新的图片img = datagen.flow_from_directory('data', target_size=(32, 32))# 显示生成的图片for i in range(10):plt.subplot(2, 5, i+1)plt.imshow(img[i])plt.axis('off')plt.show()