1
$\begingroup$

I am trying to train a MobileNetV2 on a custom dataset, to image Classification task. Cardinality is 864 images, split in 70%/20%/10%, balanced between the 3 different classes.

Weights are pre-loaded from imagenet, I froze the net and I added to the bottom of the net a GlobalAveragePooling, a Dropout (with 50% drop probability), and a Dense layer with 3 classes and softmax as activation function, since i want the output layer to give me an output like (1,0,0) if the inference image is from the first class, and so on.

  • image size: 96x96 (I normalized, too)
  • batch_size: 32
  • Learning rate: 0.001
  • trainable params: 3843
  • optimizer: sgd ('adam' doesn't improve my accuracy)
  • loss: categorical cross entropy
  • metrics: accuracy

Training for 20 epochs gives me these results: First learning curve

After that I decided to try some fine-tuning, by freezing only the first 100 layers of the net. Trained again for 10 epochs, that's what I get:

Learning Curve after fine-tuning

My net is overfitting, but I don't know why it's happening and what am I expected to do in order to improve my accuracy.

Edit: I also tried increasing dataset images with some source images or even with some data augmentation, up to more than 3K images, but it didn't work out at any rate.

$\endgroup$

0

Your Answer

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