Emotion recognition with CNN

This repository is the out project about mood recognition using convolutional neural network for the course Seminar Neural Networks at TU Delft.

Angry Test

67% Accuracy

Angry Test


We use the FER-2013 Faces Database, a set of 28,709 pictures of people displaying 7 emotional expressions (angry, disgusted, fearful, happy, sad, surprised and neutral). The dataset quality and image diversity is not very good and you will probably get a model with bad accuracy in other applications!

You have to request for access to the dataset or you can get it on Kaggle. Download fer2013.tar.gz and decompress fer2013.csv in the ./data folder.

Install all the dependencies using virtualenv.

virtualenv -p python3 ./
source ./bin/activate
pip install -r requirements.txt

The data is in CSV and we need to transform it using the script csv_to_numpy.py that generates the image and label data in the data folder.

$ python3 csv_to_numpy.py

By default this is using AlexNet architectures, but in the paper we propose different ones.


# To train a model
$ python3 emotion_recognition.py train
# To use it live
$ python3 emotion_recognition.py poc