Getting Wrong output even though vgg16 model showing 95% val_accuracy

In this project i have been trying to classify 3 hairstyles - Braided , curly and straight …i am using transfer learning to classify the images … vvg16 model is giving roughly same training and testing accuracy … but when trying to predict actual image , its giving wrong result ( predicting different class)…
My Dataset is roughly 400 images for training and 100 for testing ( all are evenly divided )

Please suggest something , and help me out
Attaching model code -

from keras.applications import VGG16
# Load the pre-trained VGG16 model without the top (fully connected) layers
base_model = VGG16(weights='imagenet', include_top=False, input_shape=(224, 224, 3))

# Freeze the base model layers so they are not trainable
for layer in base_model.layers:
    layer.trainable = False

# Create a new model by adding custom top layers on top of the base model
model = Sequential()
model.add(Dense(128, activation='relu'))
model.add(Dense(128, activation='relu'))
model.add(Dense(3, activation='softmax'))  # Assuming 3 classes

# Compile the model
model.compile(optimizer='Adam', loss='categorical_crossentropy', metrics=['accuracy'])

# Print the model summary

Hi @Harsh_Shinde, Even though you have got the val_acc 95% as the model is predicting wrong there might be a chance of model overfitting. Could you please try to increase the dataset by applying data augmentation and let us know how the model performs. Thank You.