tensorflow2.0-从文件夹中读取图片数据

tensorflow2.0-从文件夹中读取图片数据

keras中有直接的图片生成器读取类,keras.preprocessing.image.ImageDataGenerator

1. 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数值归一化就可以了。

2.读取方法

2.1 fit 和 flow

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)

2.2 直接从文件夹读取

从文件夹中读取数据,使用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)即可

2.3 从路径DF读取图片数据

从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
)
  • 2
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值