This week was spent getting the project ready for the demo and testing the mvp_prototype constantly. We experimented and fine tuned many of the parameters in our implementation to find what gives us the best results. We also collected many new sets of data, including new sets for stranger data and much higher quality recognition training images from ourselves.
At this point, things are on schedule as it is the end and we have a working mvp, and since it is the last week there are no deliverables in the up coming week except for the report.
This week we spent most of the time live testing. We collected new data and tested our system in various lighting conditions. The final results are good and we are hoping that we will have a successful demo on Monday.
This week we did a lot of fine-tuning with the project. I wrote a script that easily collects training and stranger data. The user just has to change facial expressions while the script collects data and sanitizes it. We also improved a lot of the parameters used in the mvp prototype script (stranger E2 and cosine thresholds for example. We also collected a lot more data and realized that the more data we have the better it performs.
This week I spent a lot of time on testing and fine tuning parameters for detection. The cascading classifier has been integrated into the mvp and is producing solid results. I also worked on the face alignment code to help get it integrated into the mvp. A lot of time was spent on live testing the entire system, and fine-tuning all the parts.
This week I made modifications (using help from https://medium.com/datadriveninvestor/understanding-and-implementing-the-viola-jones-image-classification-algorithm-85621f7fe20b) to the facial detection code and retrained the model to create a strong classifier comprising of 75 features. The results were very promising. I achieved 95% accuracy and live testing produced good results. Below is sample output:
Next week, the focus will be solely on raised hand detection. Everything is almost in place and we just need to fine tune algorithms to get higher accuracies.
Using SVM over Kmeans led to remarkable success with recognition. We also found a better combo of PCA eigenvectors to keep. We fixed a bug in stranger detection. We implemented a live display of coefficients in the eigenspace. Facial detection is also seeing major improvements.
This week I pair-programed with Neeraj to implement the usage of SVM over Kmeans for recognition of the fisherface eigen coefficients. In other words, rather than trying to match a new face to the nearest centroid in the eigenspace, we partition the eigenspace into zones using SVM and label them accordingly. We also selected a more optimal selection of PCA eigenvectors (dropping only the first two). The combination of these led to remarkable success in our recognition algorithms. We are now seeing more than 90% accuracy in recognition.
Part of our success above was thanks to implementing a tool which helps us visualize where faces land in the eigenspace. I programmed a tool which displays live the location of a face in the eigenspace along with the existing camera frame visualizer. Below image displays that tool (X marks the spot of the live face representation).
I found some bugs with the cosine and E2 stranger detection metrics and fixed them.
This week I worked with Omar to get the PCA and LDA part of our facial recognition to give us good results. We merged the rewritten PCA code that I had at the start of the week with the existing LDA code. Our new results look really good. Below is a picture of the LDA output for each of the three classes (each color is a different person).
I am slightly behind schedule for the week as the main part of recognition has been finished, but we need to finish the classification part. For the final week before the presentation, we need to now integrate the rewritten recognition components with the MVP file.
Neeraj finished some early testing for our new fisherfaces implementation and we got very good results with that. Neeraj and Kevan are now working on combining that with our existing codebase.