包括:
(1)读取图像文件
(2)将 .jpg文件解码为 RGB 像素网格。
(3) 将这些像素网格转换为浮点数张量。
(4)将像素值(0~255 范围内)缩放到 [0, 1] 区间
from keras.preprocessing.image import ImageDataGenerator
train_datagen = ImageDataGenerator(rescale=1./255)
test_datagen = ImageDataGenerator(rescale=1./255)
train_generator = train_datagen.flow_from_directory(
train_dir, #图像目录
target_size=(150, 150), #调整的图像尺寸
batch_size=20,
class_mode='binary')
validation_generator = test_datagen.flow_from_directory(
validation_dir,
target_size=(150, 150),
batch_size=20,
class_mode='binary')
利用生成器处理的数据拟合方法使用fit_generator,效果和 fit 相同
history = model.fit_generator(
train_generator,
steps_per_epoch=100, #样本数除以batch_size
epochs=30,
validation_data=validation_generator,
validation_steps=50)
数据增强
datagen = ImageDataGenerator(
rotation_range=40, #随机旋转的角度范围
width_shift_range=0.2, #图像在水平或垂直方向上平移的范围
height_shift_range=0.2,
shear_range=0.2, #随机错切变换的角度
zoom_range=0.2, #随机缩放发范围
horizontal_flip=True, #随机将一半图像水平翻转
fill_mode='nearest') #填充新创建像素的方法
#例子
#训练集进行数据增强
train_datagen = ImageDataGenerator(
rescale=1./255,
rotation_range=40,
width_shift_range=0.2,
height_shift_range=0.2,
shear_range=0.2,
zoom_range=0.2,
horizontal_flip=True,)
#验证集不进行数据增强
test_datagen = ImageDataGenerator(rescale=1./255)
#创建生成器
train_generator = train_datagen.flow_from_directory(
train_dir,
target_size=(150, 150),
batch_size=32,
class_mode='binary')
validation_generator = test_datagen.flow_from_directory(
validation_dir,
target_size=(150, 150),
batch_size=32,
class_mode='binary')