• Shreya Namath
  • Mudit Singhal


  • Malvika Koushik
  • Swetha Mary Thomas
  • Harish Gumnur
  • Rohan Kamat


With advances in AI and deep learning, much progress has been made in the field of computer vision and high accuracies have been achieved for classification tasks. This deep learning project essentially aims to use a convolutional neural network architecture to recognize facial expressions and will then display an emoji corresponding to the expression.


  • We used the FER-2013 dataset to train our model that contained about 28709 training examples.
  • The Keras API integrated with Tensorflow was used to classify the images into one of 7 categories(Angry, Disgust, Fear, Happy, Sad, Surprise, Neutral).
  • The total number of layers were 17 including Convolutional 2D layers, Dropout layers, BatchNormalization layers,MaxPool(2x2) layers and lastly Dense layers.
  • Mainly, 5 conv layers and 2 dense layers were used.
  • The ReLu activation function was used as the main activation function, and a softmax layer was used for the final layer.
  • The Adam optimizer was used along with the ‘Categorical Cross-Entropy’ loss function.

To further improve accuracy, following techniques were used:

  • Image data generation - preprocessing technique to augment image data.
  • Batch normalization - to reduce the risk of vanishing gradients
  • Dropout - as a form of regularization


  • We achieved a validation of 63% and are still working to improve it further.
  • The results are pretty good considering that as a kaggle challenge, the same task had a highest accuracy of about 68%.