SarahData
SarahData

Reputation: 819

keras ImageDataGenerator flow_from_directory generated data

I'm trying to see the result of using ImageDataGenerator for data augmentation. Keras reads the data but it seems that it doesn't perform any generation on them. I get as output:

Found 32 images belonging to 1 classes.

but no generated images are saved in the directory I mentioned in save_to_dir parameter of flow_from_directory method.

Here my code:

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')

I even tried to perform augmentation on one image and it wasn't saved.

What could be the reason? I'm a starter with Keras.

Note: class mode is None because I don't have a specific category.

Upvotes: 1

Views: 4242

Answers (2)

DappWind
DappWind

Reputation: 726

Its only a declaration, you must use that generator, for example, .next()

datagen.next()

then you will see images in saved

Upvotes: 0

Yu-Yang
Yu-Yang

Reputation: 14619

flow_from_directory() returns a DirectoryIterator. The files are not saved until you iterate over this iterator.

For example,

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

will save a batch of augmented images to save_to_dir. You can also use a for loop over the iterator to control how many images will be generated.

Upvotes: 1

Related Questions