【问题标题】: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 包我可以使用,而不是使用 numpy 或 opencv 实现所有内容?
【问题讨论】:
标签:
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图像生成器保存图像。