  Facial expressions vary from person to person, and the brightness, contrast,
and resolution of every random image are different. This is why recognizing
facial expressions is very difficult. This article proposes an efficient system
for facial emotion recognition for the seven basic human emotions (angry,
disgust, fear, happy, sad, surprise, and neutral), using a convolution neural
network (CNN), which predicts and assigns probabilities to each emotion. Since
deep learning models learn from data, thus, our proposed system processes each
image with various pre-processing steps for better prediction. Every image was
first passed through the face detection algorithm to include in the training
dataset. As CNN requires a large amount of data, we duplicated our data using
various filters on each image. Pre-processed images of size 80*100 are passed
as input to the first layer of CNN. Three convolutional layers were used,
followed by a pooling layer and three dense layers. The dropout rate for the
dense layer was 20%. The model was trained by combining two publicly available
datasets, JAFFE and KDEF. 90% of the data was used for training, while 10% was
used for testing. We achieved maximum accuracy of 78.1 % using the combined
dataset. Moreover, we designed an application of the proposed system with a
graphical user interface that classifies emotions in real-time.
