首页 文章

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

提问于
浏览
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

提前致谢 .

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

相关问题