keras ImageDataGenerator flow_from_directory生成的数据

时间:2017-09-24 15:37:54

标签: keras

我试图查看使用 ImageDataGenerator 进行数据扩充的结果。 Keras读取数据,但似乎它不会对它们进行任何生成。我得到了输出:

  

找到属于1个班级的32个图像。

但是没有生成的图像保存在我在flow_from_directory方法的 save_to_dir 参数中提到的目录中。

这是我的代码:

from keras.preprocessing.image import ImageDataGenerator,  array_to_img, img_to_array, load_img
from keras import backend as K
K.set_image_dim_ordering('th')

#the path of images to apply augmentation on them
images_path='train'
#create an instance of ImageDataGenerator
datagen = ImageDataGenerator(width_shift_range=0.2,
        height_shift_range=0.2)
datagen.flow_from_directory(directory=images_path, target_size=(480,752),color_mode='grayscale', class_mode=None, save_to_dir='saved',save_prefix='keras_')
img = load_img('train/images/photon10.png')
x = img_to_array(img)
x = x.reshape((1,) + x.shape)
datagen.flow(x,batch_size=1,save_to_dir='saved',save_format='png')

我甚至尝试在一张图片上执行扩充,但它没有保存。

可能是什么原因?我是Keras的先发球员。

注意:课程模式为无,因为我没有特定的类别。

2 个答案:

答案 0 :(得分:1)

flow_from_directory()返回DirectoryIterator。在迭代此迭代器之前,不会保存文件。

例如,

iterator = datagen.flow_from_directory(...)
next(iterator)

会将一批增强图片保存到save_to_dir。您还可以在迭代器上使用for循环来控制将生成多少个图像。

答案 1 :(得分:0)

它只是一个声明,您必须使用该生成器,例如.next()

datagen.next()

然后您将在saved中看到图像