How to Implement Emotion Detection Using Deep Learning

May 1, 2023 | Data Science

Welcome to the world of artificial intelligence where we’re about to embark on an exciting journey of emotion detection using deep learning! In this blog, we’ll explore how to classify emotions on a person’s face into seven distinct categories using deep convolutional neural networks (CNN).

Understanding Emotion Detection

Our project aims to classify facial expressions into one of seven categories: angry, disgusted, fearful, happy, neutral, sad, and surprised. The backbone of this classification system is the FER-2013 dataset, which comprises 35,887 grayscale images of size 48×48 pixels, published at the International Conference on Machine Learning (ICML).

Dependencies

Before diving in, ensure you have the following dependencies installed:

To install the required packages, run the following command:

pip install -r requirements.txt

Basic Usage

Let’s get started with the basic setup:

  1. First, clone the repository and navigate into the folder:
  2. git clone https://github.com/atulapra/Emotion-detection.git
    cd Emotion-detection
  3. Next, download the FER-2013 dataset inside the src folder.
  4. If you intend to train the model, use the command below:
  5. cd src
    python emotions.py --mode train
  6. To view the predictions without retraining, download the pre-trained model from here and run:
  7. cd src
    python emotions.py --mode display

Folder Structure

The folder structure is designed as follows:

  • src:
    • data (folder)
    • emotions.py (file)
    • haarcascade_frontalface_default.xml (file)
    • model.h5 (file)

This implementation by default detects emotions on all faces in the webcam feed. A simple four-layer CNN achieved a test accuracy of 63.2% over 50 epochs.

Accuracy plot

Data Preparation (Optional)

For those who are eager to dig deeper, the original FER-2013 dataset can be found on Kaggle as a single CSV file. I converted it into images in PNG format for ease of training/testing. If you’re experimenting with new datasets, the dataset_prepare.py file provides helpful code for preprocessing.

Deep Learning Algorithm

Let’s draw an analogy to understand how our algorithm works:

Think of the emotion detection model as a skilled chef preparing a unique dish (the predicted emotion). First, the chef (the algorithm) must gather ingredients (face images) and carefully chop them into uniform sizes (resizing the image to 48×48 pixels). The chef uses their secret recipe (the CNN) to mix the ingredients and serve the final dish (classify the emotion). At the end of the process, the dish that the chef believes is the best (the maximum softmax score) is served to the diners (users) as the predicted emotion on screen.

Troubleshooting

While implementing this emotion detection model, you may encounter some common issues:

  • Face Detection Failures: If faces aren’t being detected, ensure that the cascade file haarcascade_frontalface_default.xml is correctly placed in the src directory and that your webcam is functioning properly.
  • Import Errors: Ensure all dependencies are correctly installed. If you face issues, try reinstalling TensorFlow and OpenCV using the requirements file.
  • Slow Performance: If lag occurs while running the webcam feed, ensure your machine meets the recommended specifications and close unnecessary applications.

For more insights, updates, or to collaborate on AI development projects, stay connected with fxis.ai.

Conclusion

Emotion detection using deep learning is a fascinating task that combines technology with human psychology. The methods discussed can be adapted and expanded upon for various applications involving sentiment analysis and user interaction.

At fxis.ai, we believe that such advancements are crucial for the future of AI, as they enable more comprehensive and effective solutions. Our team is continually exploring new methodologies to push the envelope in artificial intelligence, ensuring that our clients benefit from the latest technological innovations.

Stay Informed with the Newest F(x) Insights and Blogs

Tech News and Blog Highlights, Straight to Your Inbox