使用keras.preprocessing.image.ImageDataGenerator的图像数据增强技术?

3
我想通过随机旋转、平移、剪切和翻转来生成图像的增强数据。
我找到了 thiskeras 函数。
函数keras.preprocessing.image.ImageDataGenerator,但我看到它被用于直接训练网络。
是否有一种方法可以输入图像,然后将转换后的图像保存在硬盘上,而不是像目前在这个link的示例中那样工作?
还是有其他简单的插件可用的 Python 包,可以代替使用numpyopencv来实现所有功能?
2个回答

2
基本上,这是一个“生成器”,它可以无限返回一批图像。你可以这样做:
def save_images_from_generator(maximal_nb_of_images, generator):
    nb_of_images_processed = 0
    for x, _ in generator:
        nb_of_images += x.shape[0]
        if nb_of_images <= maximal_nb_of_images:
            for image_nb in range(x.shape[0]):
                your_custom_save(x[image_nb]) # your custom function for saving images
        else:
            break

从keras图像生成器保存图像。

1

您可以将ImageGenerator输出的图像保存到硬盘中。一种选项是使用datagen.flow,如下所示:

for X_batch, y_batch in datagen.flow(X_train, y_train, batch_size=9, save_to_dir='images', save_prefix='aug', save_format='png')

第二个选项是手动循环遍历每个图像,加载它并应用随机变换。一旦您实例化了ImageGenerator,只需调用:
img_trans = datagen.random_transform(img)

然后,使用PIL等工具将转换后的图像保存到硬盘上。
第三个选项是手动循环遍历每个图像,加载它,并使用第三方程序应用随机变换。我推荐imgaug,可以在这里找到。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接