ImageDataGenerator 图像预处理
官方文档:https://keras.io/preprocessing/image/
导入:from keras.preprocessing.image import ImageDataGenerator
使用:
keras.preprocessing.image.ImageDataGenerator(featurewise_center=False,
samplewise_center=False,
featurewise_std_normalization=False,
samplewise_std_normalization=False,
zca_whitening=False,
zca_epsilon=1e-06,
rotation_range=0,
width_shift_range=0.0,
height_shift_range=0.0,
brightness_range=None,
shear_range=0.0,
zoom_range=0.0,
channel_shift_range=0.0,
fill_mode='nearest',
cval=0.0,
horizontal_flip=False,
vertical_flip=False,
rescale=None,
preprocessing_function=None,
data_format='channels_last',
validation_split=0.0,
interpolation_order=1, dtype='float32')
参数:
参数 | 类型 | 含义 |
---|---|---|
featurewise_center | bool | 使输入数据集去中心化(均值为0), 按feature执行 |
samplewise_center | bool | 使输入数据的每个样本均值为0 |
featurewise_std_normalization | bool | 将输入除以数据集的标准差以完成标准化, 按feature执行 |
samplewise_std_normalization | bool | 将输入的每个样本除以其自身的标准差 |
zca_whitening | bool | 对输入数据施加ZCA白化 |
rotation_range | int | 数据提升时图片随机转动的角度。随机选择图片的角度,是一个0~180的度数,取值为0-180 |
width_shift_range | float | 图片宽度的某个比例,数据提升时图片随机水平偏移的幅度 |
height_shift_range | float | 图片高度的某个比例,数据提升时图片随机竖直偏移的幅度 |
shear_range | float | 剪切强度(逆时针方向的剪切变换角度)。是用来进行剪切变换的程度 |
zoom_range | 浮点数或形如[lower,upper]的列表 | 随机缩放的幅度,若为浮点数,则相当于[lower,upper] = [1 - zoom_range, 1+zoom_range]。用来进行随机的放大 |
channel_shift_range | float | 随机通道偏移的幅度 |
fill_mode | ‘constant’,‘nearest’,‘reflect’或‘wrap’ | 当进行变换时超出边界的点将根据本参数给定的方法进行处理 |
cval | int or float | 当fill_mode=constant时,指定要向超出边界的点填充的值 |
horizontal_flip | bool | 进行随机水平翻转。随机的对图片进行水平翻转,这个参数适用于水平翻转不影响图片语义的时候 |
vertical_flip | bool | 进行随机竖直翻转。 |
rescale | float | 值将在执行其他处理前乘到整个图像上,我们的图像在RGB通道都是0-255的整数,这样的操作可能使图像的值过高或过低,所以我们将这个值定为0~1之间的数。 |
preprocessing_function | 将被应用于每个输入的函数。该函数将在任何其他修改之前运行。该函数接受一个参数,为一张图片(秩为3的numpy array),并且输出一个具有相同shape的numpy array | |
data_format | “channel_first”或“channel_last” | 代表图像的通道维的位置。该参数是Keras 1.x中的image_dim_ordering,“channel_last”对应原本的“tf”,“channel_first”对应原本的“th”。以128x128的RGB图像为例,“channel_first”应将数据组织为(3,128,128),而“channel_last”应将数据组织为(128,128,3)。该参数的默认值是~/.keras/keras.json中设置的值,若从未设置过,则为“channel_last” |
实例:
train_datagen = ImageDataGenerator(rescale = 1./255.,
rotation_range = 10,
width_shift_range = 0.25,
height_shift_range = 0.25,
shear_range = 0.1,
zoom_range = 0.25,
horizontal_flip = False)
调用,使用.flow(X, y):
history = model.fit_generator(
train_datagen.flow(X_train,Y_train, batch_size=batch_size),
steps_per_epoch=100,
epochs=epochs,
callbacks=[LearningRateScheduler(lr_decay),
es
],
validation_data=valid_datagen.flow(X_valid,Y_valid),
validation_steps=50,
verbose=2)