如何使用Keras ImageDataGenerator进行图像变换输入

时间:2017-09-18 05:01:31

标签: deep-learning keras

我正在尝试训练将图像转换为另一图像的模型(因此,不是图像分类问题)。它是自动着色,即将灰度图像转换为颜色。

我已经建模了我的顺序DL模型。

我想提供(image_x,image_y)而不是(image_x,label)作为model.fit()方法的输入。

我如何使用ImageDataGenerator来做到这一点?

如果ImageDataGenerator不是合适的方法,请您参考适当的Keras方法来完成这项工作吗?

我有目录中的图像

  • train/grayscale/
  • train/color/
  • validation/grayscale
  • validation/color
  • test/grayscale
  • test/color

提前致谢。

1 个答案:

答案 0 :(得分:1)

您的问题就像图像分割任务一样。有一个例子是将图像和蒙版(在你的情况下是彩色图像)与keras documentation中的ImageDataGenerator一起转换。

以下是示例:

# we create two instances with the same arguments
data_gen_args = dict(featurewise_center=True,
                     featurewise_std_normalization=True,
                     rotation_range=90.,
                     width_shift_range=0.1,
                     height_shift_range=0.1,
                     zoom_range=0.2)
image_datagen = ImageDataGenerator(**data_gen_args)
mask_datagen = ImageDataGenerator(**data_gen_args)

# Provide the same seed and keyword arguments to the fit and flow methods
seed = 1
image_datagen.fit(images, augment=True, seed=seed)
mask_datagen.fit(masks, augment=True, seed=seed)

image_generator = image_datagen.flow_from_directory(
    'data/images',
    class_mode=None,
    seed=seed)

mask_generator = mask_datagen.flow_from_directory(
    'data/masks',
    class_mode=None,
    seed=seed)

# combine generators into one which yields image and masks
train_generator = zip(image_generator, mask_generator)

model.fit_generator(
    train_generator,
    steps_per_epoch=2000,
    epochs=50)
  

请注意,如果class_mode = None,数据仍然需要   驻留在目录的子目录中,以使其正常工作。

例如,当您将train/grayscaletrain/color传递给两个flow_from_directory函数时,列车图像的目录应如下所示:

  • train/grayscale/images

  • train/color/images