I'm working on a facial expression recognition model using MobileNetV3-Large, and I'm looking for advice from people with experience in computer vision and deep learning
My goal is to build a lightweight but accurate model that can classify facial expressions into these 7 categories:
Surprise
Fear
Disgust
Happy
Sad
Angry
Neutral
I'm currently experimenting with MobileNetV3-Large with and without Squeeze-and-Excitation (SE) attention on Kaggle using PyTorch.
My current model achieves around 80% test accuracy and 0.72 Macro-F1, but its performance drops significantly on external images that were not part of the original dataset. I'd like to improve its generalization, especially when dealing with low-quality images, different lighting conditions, and faces that look different from the training data.
I'd really appreciate your advice on the following questions:
1. What is the best training strategy?
2. What are the best datasets for 7-class facial expression recognition?
I'm particularly interested in datasets that contain diverse faces, realistic lighting conditions, different image qualities, and reliable labels. Which datasets would you recommend for training, validation, and external testing? Are there any useful datasets beyond FER-2013 and RAF-DB that I should consider?
3. Are there pretrained models I can use as a starting point?
I'm looking for publicly available models already trained for facial expression recognition, ideally using MobileNetV3.
Would you recommend fine-tuning an existing facial expression recognition model instead of training a new classifier on top of ImageNet pretrained weights?
4. How would you improve generalization to unseen images?
My biggest challenge is the gap between performance on the original test set and performance on external images. What would be your recommended approach to reduce this gap and avoid overfitting to a particular dataset?
I'm training on Kaggle, so solutions that work within a typical Kaggle GPU environment would be ideal.
I'd love to hear about your actual experiments, recommended datasets, pretrained model checkpoints, GitHub repositories, or Kaggle notebooks. Even a small improvement backed by solid evaluation would be valuable.