0
$\begingroup$

When classifying images with Keras, I am able to achieve a validation accuracy around 90-95%, however, I am trying to improve with the use of augmentation so have switched from image_dataset_from_directory, to flow_from_directory, to make use of the ImageDataGenerator.

For some reason the validation accuracy holds at 33% and does not improve? I have modified the augmentation parameters to see if that is affecting the training, but it does not seem to be that.

Could anyone explain if I am doing something wrong, or if there is an alternative method to implementing augmentation?

original: (Found 240 files belonging to 3 classes. Using 192 files for training. Found 240 files belonging to 3 classes. Using 48 files for validation. Found 60 files belonging to 3 classes.)

train_data = tf.keras.preprocessing.image_dataset_from_directory(train_dir,
                                                                image_size=img_size,
                                                                batch_size=batch_no,
                                                                seed=seed_no,                                                               
                                                                shuffle=True,
                                                                subset="training",
                                                                validation_split=0.2,
                                                                label_mode="categorical")

validation_data = tf.keras.preprocessing.image_dataset_from_directory(train_dir,
                                                                      image_size=img_size,
                                                                      batch_size=batch_no,
                                                                      seed=seed_no,
                                                                      shuffle=False,
                                                                      validation_split=0.2,
                                                                      subset="validation",
                                                                      label_mode="categorical")
                                                                      
test_data = tf.keras.preprocessing.image_dataset_from_directory(test_dir,
                                                                image_size=img_size,
                                                                batch_size=batch_no,
                                                                shuffle=False,
                                                                seed=seed_no,
                                                                label_mode="categorical")

Replaced: (Found 192 images belonging to 3 classes. Found 48 images belonging to 3 classes. Found 60 images belonging to 3 classes. )

dgen_test = ImageDataGenerator(rescale = 1./255.)
dgen_train = ImageDataGenerator(rescale = 1./255.,
                                zoom_range = 0.2,
                                horizontal_flip = True,
                                vertical_flip= True,
                                rotation_range=20,
                                shear_range=0.2,
                                validation_split=0.2
                                )

train_data = dgen_train.flow_from_directory(train_dir,
                                            subset='training',
                                            target_size=img_size,
                                            batch_size=batch_no,
                                            shuffle=True,
                                            seed=seed_no,
                                            class_mode="categorical")

validation_data = dgen_train.flow_from_directory(train_dir, 
                                                 subset='validation', 
                                                 target_size=img_size,
                                                 batch_size=batch_no, 
                                                 shuffle=False,
                                                 seed=seed_no,
                                                 class_mode='categorical')

test_data = dgen_test.flow_from_directory(test_dir, 
                                        target_size=img_size,
                                        batch_size=batch_no, 
                                        shuffle=False,
                                        seed=seed_no,
                                        class_mode='categorical')
```
$\endgroup$
1
  • $\begingroup$ Avoid shear range and zoom range. Flips and rotations are ok. $\endgroup$ Nov 11, 2022 at 4:56

1 Answer 1

0
$\begingroup$

Solved using tf.keras.layers and applying augmentation when building model.

https://www.tensorflow.org/tutorials/images/data_augmentation

ImageDataGenerator is depreciated.

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.