Used Convolutional neural networks (CNN) for facial expression recognition . The goal is to classify each facial image into one of the seven facial emotion categories considered .
We trained and tested our models on the data set from the Kaggle Facial Expression Recognition Challenge, which comprises 48-by-48-pixel grayscale images of human faces,each labeled with one of 7 emotion categories: anger, disgust, fear, happiness, sadness, surprise, and neutral .
Image set of 35,887 examples, with training-set : dev-set: test-set as 80 : 10 : 10 .
Python 2.7, sklearn, numpy, Keras.
- Keras
- Sklearn
- numpy
To run the code -
-
Download FER2013 dataset from Kaggle Facial Expression Recognition Challenge and extract in the main folder.
-
To run deep CNN model. Open terminal and navigate to the project folder and run cnn_major.py file
python cnn_major.py
No need to train the model , already trained weights saved in model4layer_2_2_pool.h5 file. -
Want to train model yourself ?
Just change the statementis_model_saved = True // to is_model_saved = False
Code Link - cnn_major_shallow
Model Structure- Link
Saved model trained weights - Link
Code Link - cnn_major
Model Structure- Link
Saved model trained weights - Link
First we built a shallow CNN. This network had two convolutional layers and one FC layer.
First convolutional layer, we had 32 3×3 filters, along with batch normalization and dropout and max-pooling with a filter size 2×2.
Second convolutional layer, we had 64 3×3 filters, along with batch normalization and dropout and max-pooling with a filter size 2×2.
In the FC layer, we had a hidden layer with 512 neurons and Softmax as the loss function.
To improve accuracy we used deeper CNN . This network had 4 convolutional layers and with 2 FC layer.
Model predicts softmax output for 7 label for an image
[ 4.99624775e-07 3.69855790e-08 9.91190791e-01 8.15907307e-03 2.62175627e-06 9.97206644e-06 1.02341000e-03]
which is converted to
[ 2 ]
label having highest value .
For evaluation , categorial accuracy is used .
Some Experiment are done by changing number of layers and changing hyper-parameters.
-
"Dataset: Facial Emotion Recognition (FER2013)" ICML 2013 Workshop in Challenges in Representation Learning, June 21 in Atlanta, GA.
-
"Convolutional Neural Networks for Facial Expression Recognition" Convolutional Neural Networks for Facial Expression Recognition Shima Alizadeh, Azar Fazel
-
"Andrej Karpathy's Convolutional Neural Networks (CNNs / ConvNets)" Convolutional Neural Networks for Visual Recognition (CS231n), Stanford University.
Licensed under MIT License