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

问题描述 投票:1回答:1

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

我已经建模了我的顺序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

提前致谢。

deep-learning keras
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.