赞
踩
keras中有直接的图片生成器读取类,keras.preprocessing.image.ImageDataGenerator
在读取时可以给图片添加的一些强化从而更好满足要求。
keras.preprocessing.image.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, # 水平翻转
fill_mode = 'nearest', # 填补方式
featurewise_center = False, # 设置输入图像的均值为0
featurewise_std_normalization = False, # 设置输入图像的方差为1
zca_whitening = False # 白化处理
)
当构建训练集时,可以将图像数据进行一些强化处理;当构建验证集和测试集时往往只需要rescale数值归一化就可以了。
当featurewise_center、featurewise_std_normalization、zca_whitening被设置时才需fit。flow则是将已经成为变量的图像数据以生成器的方式送入模型。
# 数据读取 (x_train, y_train), (x_test, y_test) = cifar10.load_data() y_train = np_utils.to_categorical(y_train, num_classes) y_test = np_utils.to_categorical(y_test, num_classes) # 迭代起构建 datagen = ImageDataGenerator( featurewise_center=True, featurewise_std_normalization=True, rotation_range=20, width_shift_range=0.2, height_shift_range=0.2, horizontal_flip=True) # 生成器适应 datagen.fit(x_train) # 送入模型 model.fit_generator(datagen.flow(x_train, y_train, batch_size=32), steps_per_epoch=len(x_train) / 32, epochs=epochs)
从文件夹中读取数据,使用flow_from_directory方法。
这种方法需要我们将数据组织为:
-/train/
-/clasee_name1
-/clasee_name2
-/clasee_name3
…
-/val/
-/clasee_name1
-/clasee_name2
-/clasee_name3
…
# 下面是方法的参数介绍 flow_from_directory( directory, # 根目录的位置,根目录下的,包含有子目录 target_size=(256, 256), # 图像大小 color_mode='rgb', classes=None, class_mode='categorical', # 类别标签的编码格式,这里是One-Hot编码后的格式,‘binary’代表了类似于1,2,3,...这样的一维编码 batch_size=32, shuffle=True, seed=None, save_to_dir=None, save_prefix='', save_format='png', follow_links=False, subset=None, interpolation='nearest' )
每次生成器的会生成一个元组,(image,label),image是四维的数据(batch,height,width,channle);label的维度为二维(batch,label_id)。
完成生成器后,直接想生成器送入模型(model.fit_generator)即可
从DataFrame中读取,需要预先有存储这文件信息的DataFrame。这个DF需要至少两列,一列是输入图像的位置,一列是输入图像的标签。同理,调用flow_from_dataframe方法:
flow_from_dataframe( dataframe, # 存储数据信息的DF名称 directory=None, # 文件夹位置,如果DF中写的为绝对路径这里可以省略为None x_col='filename', # 图像绝对路径列 y_col='class', # 标签列 weight_col=None, target_size=(256, 256), color_mode='rgb', classes=None, class_mode='categorical', batch_size=32, shuffle=True, seed=None, save_to_dir=None, save_prefix='', save_format='png', subset=None, interpolation='nearest', validate_filenames=True, **kwargs )
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。