FaceX is a personal project
that allows you to get information about people emotions
based on their face
.
The purpose of this project is to show you a demo of how a system like this can be used. The project is intended to work on the edge devices like Raspberry Pi 4 and others.
The purpose of this project, as I said above, is to work on edge devices. Due to the low computational power of such devices I had to find a suitable model in order to make the inference on the edge. The model used can be found HERE. Also, the conversion of the model in TFLite version was mandatory for running the inference on the edge.
The dataset used for training the model is FER2013. Applying data augmentation was necessary for increasing the model performance.
In the FaceX- research directory you can find the jupyter notebooks which were used in the research environment. Also, you can find my analyse of FER2013 before and after data augmentation. In the Training folder is the notebook for training. In the FER2013 original and augmented analysis folder are three notebooks where I did analysis of the dataset. The notebook from model inference analysis was used for analysing the performance of the model. Also, in the same package is the performance tables file in which you can find the performance of the model.
In the FaceX- application directory are stored the necessary packages for the application.
- TensorFlow - version 2.2.0
- OpenCV - version 4.1.2
- tensorboard - version 2.1.1
- scikit-learn - version 0.23.1
- matplotlib - version 3.2.1
- seaborn - version 0.10.1
- pandas - version 1.0.4
- plotly - version 4.8.1
- numpy - version 1.18.4
- imutils - version 0.5.3
- virtualenv - version 20.0.16
The setup is simple, you need:
- Create a virtual environment
python -m venv name_of_your_env
- Install the above packages with
pip install package_name
After you install the necessary packages you can run the app like this:
python app.py
The app.py file can be found in the FaceX- application directory.
List of features ready and TODOs for future development
- Based on the emotions frequency the app shows you a bar chart in order to get the most frequent emotion.
To-do list:
- Improve the performance of the model
- Get relevant data for training
- Get quality data
Project is: in progress, because the purpose of the project was to get more knowledge about Edge Computing and ML tools. However, for more development on top of this project I think that this work is a good start point.
The project was built for improving my machine learning and data science skills. Also, the inspiration was brought by a very good friend of mine who has a in-depth vision in this field.
If you want to contact me feel free to reach me at paul_damsa9@yahoo.com.