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,可以有效增加训练样本的多样性,提高模型的泛化能力,并且不会每次将所有样本都加载到内存中,减少了内存的占用和训练时间。
