欢迎访问宙启技术站
智能推送

Python中ImageDataGenerator()的图像数据生成与处理的示例代码

发布时间:2023-12-26 10:54:30

ImageDataGenerator是Keras中一个很常用的图像数据生成器,用于数据增强和预处理。它可以在训练过程中自动生成更多的训练样本,扩充训练集的规模,提高模型的泛化能力。

ImageDataGenerator()可以通过一系列的参数来控制图像的生成和处理,包括旋转、平移、缩放、翻转、剪裁等操作。下面是一个使用ImageDataGenerator()的示例代码:

from keras.preprocessing.image import ImageDataGenerator

# 定义数据生成器
datagen = ImageDataGenerator(
    rotation_range=30,  # 随机旋转角度范围为±30°
    width_shift_range=0.2,  # 随机水平平移范围为±20%
    height_shift_range=0.2,  # 随机垂直平移范围为±20%
    shear_range=0.2,  # 随机错切变换范围为±20°
    zoom_range=0.2,  # 随机缩放范围为±20%
    horizontal_flip=True,  # 随机水平翻转
    vertical_flip=True,  # 随机垂直翻转
    rescale=1./255  # 归一化像素值到[0, 1]
)

# 从文件夹中加载数据
train_generator = datagen.flow_from_directory(
    'train',
    target_size=(128, 128),
    batch_size=32,
    class_mode='categorical'
)

# 使用生成器训练模型
model.fit_generator(
    train_generator,
    steps_per_epoch=100,
    epochs=10
)

上述代码中,首先创建了一个ImageDataGenerator对象,通过设置参数控制数据生成和处理的方式。然后使用ImageDataGenerator.flow_from_directory()方法从文件夹中加载数据,同时设置图片的大小、批次大小和类别等信息。最后使用model.fit_generator()方法训练模型,其中的训练数据使用了上一步生成的数据生成器。

这个示例代码中使用了常见的数据增强方式,包括随机旋转、平移、缩放、错切变换、翻转等,并且将像素值归一化到[0, 1]的范围。通过使用ImageDataGenerator,可以有效增加训练样本的多样性,提高模型的泛化能力,并且不会每次将所有样本都加载到内存中,减少了内存的占用和训练时间。