I am training a Boat Type classifier using dataset (https://www.kaggle.com/clorichel/boat-types-recognition 3) with 75-25 train-validation split.
Dataset is imbalanced.
to counter imbalance I did

used train_test_split with stratify to divide the data.
Over/Under Sampled the dataset using WeightedRandomSampler
Added data augmentation for train and validation sets. (CenterCrop, RandomRotation([0,30]), etc …)

I used pretrained resnet18 as the backbone, and modified  the last fc layer for classification.
I am using ReduceLROnPlateau scheduler.
still model is getting overfitted.