【问题标题】:Image data agumentation tequniques using keras.preprocessing.image.ImageDataGenerator?使用 keras.preprocessing.image.ImageDataGenerator 的图像数据增强技术?
【发布时间】:2017-08-29 18:56:51
【问题描述】:

我想通过随机旋转、移位、剪切和翻转为图像生成增强数据。

我找到了this keras 函数。

函数keras.preprocessing.image.ImageDataGenerator 但是我看到它被用来直接训练网络。

有没有办法输入图像,然后将转换后的图像保存在 HDD 上,而不是在此 link 中的示例中当前如何工作

或者是否有另一个简单的即插即用 python 包我可以使用,而不是使用 numpyopencv 实现所有内容?

【问题讨论】:

    标签: image-processing machine-learning tensorflow computer-vision keras


    【解决方案1】:

    您可以将 ImageGenerator 输出的图像保存到 HDD。一种选择是使用 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 等将转换后的图像保存到 HDD。

    第三种选择是手动循环遍历每个图像,加载它,然后使用第三方程序应用随机变换。我推荐imgaug,找到here

    【讨论】:

      【解决方案2】:

      基本上 - 这是generator,它无限返回一批图像。可以执行以下操作:

      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图像生成器保存图像。

      【讨论】: