These past 2 weeks, I focused heavily on advancing the facial recognition and emotion detection components of the project. Given that we decided to create our own emotion detection model, I wanted to get a head start on this task to ensure that we could reach accuracy numbers that are high enough for our project to be successful. My primary accomplishments these couple weeks included:
- Leveraged the Haar-Cascade facial recognition model to act as a lightweight solution to detect faces in real-time
- Integrated with open-CV to allow for real-time processing and emotion recognition in the near future
- Created the first iterations of the emotion detection model
- Started testing with the FER-2013 dataset to classify emotions based on facial features.
- Created a training loop using PyTorch. Learning about and implementing features like cyclic learning rates and gradient clipping to stabilize training and prevent overfitting.
- The model is starting to show improvements reaching a test accuracy of over 65%. This is already at the acceptable range for our project; however, I think we have enough time to improve the model up to 70%.
- The model is still pretty lightweight using 5 convolution layers; however, I am considering simplifying a little bit to keep it very lightweight.
- Significantly improved image preprocessing with various transformations which have kept our model from overfitting.
I am now ahead of schedule given that we have a usable emotion recognition model much before the deadline.
Goals for next week:
- Continue to update the hyperparameters of the model to obtain the best accuracy as possible.
- Download the model to my local machine which should allow me to integrate with OpenCV and test the recognition capabilities in real-time.
- Then, Download our model onto the Nvidia Jetson to ensure that it will run in real-time as quick as we want it.
- After this, I want to experiment with some other facial recognition models and boundary boxes that might make our system more versatile.