This week I worked with my teammates to finalize the final software components and testing for the final presentation and beyond. We found a new face recognition library that has much higher accuracy with some smaller trade offs, but it is great for what we need. On top of the new face recognition library, I worked with Ryan to get a large portion of the web app done. While Ryan worked on all of the CSS, I worked on the backend and client-side JS code for the different functionalities of our web app (logs, allowing for transitions, manual checkout, User model saving). For testing I worked with Doreen to get the final software tests done for the final presentation (also obtained testing data with the new face recognition library that wasn’t present during the presentation but needed for the final deliverables later on).
I am currently on schedule and on track to finish with the rest of the team
Next week I plan on working extensively with both Ryan and Doreen to get the final deliverables done and ready for the final showcase!
This week, I focused on getting the web app to communicate with the project’s other components and conducting tests of the facial recognition system to see if it meets our design requirements. Once I was able to get facial recognition to work using the web app, I added the code that would allow it to communicate with the rack and complete the process. There were some issues with the wireless transceivers that postponed testing the web app, but it will happen next week. On top of testing the design requirements, I tested both the SVM classifier implementation we had previously with the current Euclidean Distance implementation to see what performed better. Testing shows that the SVM classifier produces a higher accuracy, so I want to put it back in with the main recognition implementation.
With the issues around the transceivers, Carnival, and increased coursework in other classes I have fallen behind, but plan to use the upcoming week to get fully back on track.
Next week I want to make sure the web app works well with the rest of the project and iron out any bugs that may come about from that, and fully complete the testing for the facial recognition system. I also want to reintroduce the SVM classifier back into the recognition system, which produces higher accuracies as seen from testing.
My part of the project involved facial recognition, so I had to familiarize myself with not only OpenCV but with computer vision as a whole. These topics and technologies were completely new to me coming into this project so I had to learn them to implement this part of the project. To learn these new tools and technologies, I mostly read articles and watched videos that described what was going on under the hood of all of the OpenCV methods I used, and I looked at simple examples of what I wanted to do with the recognition system and used that knowledge to help implement the facial recognition system.
This week, I prepared for the interim demo by ironing out the final kinks in the facial recognition software. Most notably, there was a bug that caused recognition to occur when almost all of the frames currently saved still included the face of the previous person (basically, it was trying to do recognition while not updating the list of recent embeddings, causing it to still guess the previous person). I was able to solve this by making sure to update the recent embeddings I was keeping track of so that they align with the recent frames (something I’m also keeping track of).
When it comes to facial recognition I am on track, but the web app will become my primary focus to fully implement before carnival.
As I stated above, next week will be solely focused on getting the web app fully up and running before Carnival.
For verification and validation, I currently plan on testing facial recognition in two ways, with a static image database and real-time facial recognition (as each has their requirements that I must make sure they are fulfilling). Firstly, testing is needed to make sure the recognition is accurate enough based on the design requirement (which is currently 95% accuracy). To do this, I plan on using a well-known face database and gathering a collection of 20 faces (each face having some amount of pictures of them) and splitting the dataset into training and testing sets. Then I will use the recognition system to first train on the training set and then introduce the testing set to see how well it can recognize the new faces.
As for real-time facial recognition, our design requirements state that the system must be able to detect faces within 0.5 meters, within 5 seconds (while still keeping 95% accuracy). I plan on testing this by marking different distances away from our camera (distances both within and outside 0.5 meters), and then timing how long it takes to detect my face. To still make sure we are meeting the 95% accuracy requirement, I plan on repeating this test on at least 20 different faces.
This week I worked with Ryan and Doreen to get all of the components of the project connected and working together. During this, after discussing further plans of action, I ended up replacing the SVM classifier (that did the guessing of faces based on the known face embeddings) with a much simpler solution that involves calculating and finding the face embeddings that have the minimum Euclidean distance (now we don’t have to rerun scripts to retrain the SVM classifier). Also, I was able to get the OpenCV video stream up and displaying on the webapp.
I think I have recovered a good amount of what I was behind on because I was sick, but still have to continue to be fully back on track.
Next week, I plan on continuing to connect all of the components with my teammates and (time permitting) getting the face recognition to work on the webapp.
This week I focused on tuning the training models used for facial recognition so that it can produce the best results for our project. The most important thing I noticed in pursuit of this goal was that the training we were initially doing for the recognition models was based on a linear kernel. Since the data we were using to train was most likely not going to be linearly separable, I changed it so that the training used a non-linear kernel.
After being sick for the majority of this week, I have fallen behind schedule and plan on getting back on track this week.
Next week, I will turn my focus to the web application part of the project by integrating the code I have written already into the webapp and getting it working on there. I also plan on setting up the initial infrastructure in the webapp to send/receive information to/from the other components of our project.
This week, I focused on adding a way for users to register their faces into the system. By keeping track of the most recent frames, when a new face is detected it will save those recent frames and then retrain the recognition model. These users can now be recognized after the model is retrained. I have also made a little progress with sending information using the wireless transceiver, but it is still in its early stages and will be one of the focuses of next week.
I am currently on schedule.
As mentioned above, the main focus of next week is to work on the wireless communication of the face recognition system to the other components and tuning the recognition model to achieve better results (accuracy-wise).
This week I worked on both adding some sort of countdown (per instructor recommendation) to give users time to get ready for their face to get scanned, and adding a way for new users to scan their face in. I was able to add the countdown into the system, so now users have 5 seconds before the system attempts to recognize their face. I am still working on the actual face check-in functionality, and it will be my goal to finish it this week.
My progress is currently a bit behind schedule because I wasn’t able to work on this as much as I wanted to over spring break (had to attend to some unexpected business), but my main focus this week will to get back on track.
Next week, I plan on getting the check-in function up and running and (time permitting) figure out how to send information through the wireless transceiver
This week I created an initial face recognition system after doing some research on OpenCV. This initial system currently recognizes faces through a live video stream somewhat accurately using images I inputted manually. Accuracy numbers could be improved with more data to train on and tweaking different model parameters. This system can also check the size of the drawn bounding box to see if we should process a face, which is an important part of our project. Additionally, I was also preparing for the design presentation early on in the week.
I am currently on schedule with the face recognition system, but it could change this week as I have a midterm coming up this week. I will try to find time before my exam to do work and will shift my focus to this after I complete my exam.
Next week, I plan on implementing a way to register new faces into the current face recognition system and (time permitting) adding code to allow communication with the other components.
This week I did some actual testing on different facial recognition libraries to figure out what would be the best library to use for our project. As a team, we narrowed it down to either OpenCV or dlib and after testing, I concluded that using OpenCV would be best for our project.
Since there were changes to the web app component of our project, I wasn’t able to create mockups of the UI so I am a bit behind schedule. Once the web app component is solidified, I will get back on schedule
Next week, I plan on using OpenCV to create an initial face recognition system that can do real-time face recognition and (time permitting) add the initial software that will communicate with the rack.
This week I worked with the team to research different facial recognition libraries to use with our project. I also experimented with creating the web application (messing with the UI and attempting to stream my webcam to the web application).
My progress is currently on schedule.
Next week, I plan on creating mock-ups for the web application UI to illustrate what all of the pages of the web application will look like and (time permitting) attempt to integrate the facial recognition library of choice into the web application.