1

I am currently writing a script to augment a dataset for me using tf.keras (code given below). I'm pretty new to tf and data augmentation so I've been following a tutorial (https://blog.devgenius.io/data-augmentation-programming-e9a4703198be) pretty religiously. Despite this, I've been running into a lot of errors when I try to actually apply the ImageDataGenerator object to the image I'm loading. Specifically, I keep getting this error:

Exception has occurred: FileNotFoundError
[Errno 2] No such file or directory: '/home/kai/SURF22/yolov5/data/sc_google_aug/aug_0_3413.png'
  File "/home/kai/SURF22/yolov5/data_augmentation", line 45, in <module>
    for batch in idg.flow(aug_array,

It seems like tf can't find the image I want it to augment but I have no idea why because I load the image and input it as an array like the tutorial does. I tried inputting the absolute file path to the image instead one time but then I got a "string to float" error. Basically, I have no idea what is wrong and no one else seems to be getting this error when applying a for loop to .flow(). If anyone has advice on what could be going wrong I'd really appreciate it!

# images folder directory
folder_dir = "/home/kai/SURF22/yolov5/data/"

# initialize count
i = 0

for image in os.listdir(folder_dir + "prelim_data/sc_google_trans"):

    # open the image
    img = Image.open(folder_dir + "prelim_data/sc_google_trans/" + image)

    # make copy of image to augment
    # want to preserve original image
    aug_img = img.copy()

    # define an ImageDataGenerator object
    idg = ImageDataGenerator(horizontal_flip=True, 
                                vertical_flip=True, 
                                rotation_range=360, 
                                brightness_range=[0.2, 1.0], 
                                shear_range=45)

    # aug_img = load_img(folder_dir + "prelim_data/sc_google_trans/0.png")

    # reshape image to a 4D array to be used with keras flow function
    aug_array = img_to_array(aug_img)
    aug_array = aug_array.reshape((1,) + aug_array.shape)

    # augment image
    for batch in idg.flow(aug_array, 
                            batch_size=1, 
                            save_to_dir='/home/kai/SURF22/yolov5/data/sc_google_aug', 
                            save_prefix='aug', 
                            save_format='png'):
        i += 1
        if i > 3:
            break
Marie
  • 11
  • 1

0 Answers0