Team Status Report for 3/6

One significant risk that could jeopardize our success is training. It is possible that we underestimated the time required to complete our training. We foresee possible issues related to varying conditions such as different daylight lighting,  various positions of our camera on car dashboards due to different dashboard heights, and distinct eye aspect ratios of various individuals. During our team meetings this week, we tried to manage this risk by adding more time to training when we updated our schedule, which is discussed more below.

After feedback from our Monday meeting with Professor Savvides, we decided to change our driver alert system. Originally, we planned to have a Bluetooth-enabled vibration device that would alert the driver if they were distracted or drowsy. Our main components for this was a Raspberry Pi and a vibration motor. However, after talking with Professor Savvides and our TA, we found that this would not be reasonable in our time frame. Therefore, we eliminated the vibration device and replaced it with a speaker attached to our Jetson Xavier NX. This significantly shifted our hardware block diagram, requirements, system specifications, and schedule.This shift towards an audio alert system did reduce our costs as well. 

We have attached the updated schedule below that accounts for our recent changes in our design. We were able to consolidate tasks after taking out the tasks related to the vibration device, so that each team member still completes an equal amount of work. In our updated plan, we decided to add more time related to training, integration, and testing our several metrics. 

We are slightly ahead of schedule, since we have a simple working example of face detection and a simple working example of eye classification. They can be found at our Github repo, https://github.com/vaheeshta/focused.

Vaheeshta’s Status Report for 2/27

This week our group met after Wednesday’s proposal presentation to discuss our next steps. Specifically for me, my next steps were to finish researching eye detection algorithms and to select the best option to then begin working on programming our eye detection over this weekend and during the next week. I hope to then finish on schedule by 3/4/2021 to begin testing. Therefore, I researched and solidified that we would be using the eye detection algorithm of Dlib’s Histogram of Oriented Gradients (HOG) and Linear Support Vector Machines (SVM) method for object detection. The reason for this is that, according to the Towards Data Science article and other tutorials listed below, HOG is a better option compared to Dlib’s CNN algorithm since it has a faster computation time for real-time video processing. However, there is a tradeoff that HOG is slightly less accurate than CNN for non-frontal faces, but we are aiming to place our camera with a direct frontal perspective of the driver to help compensate. 

During our team meeting, Heidi and I decided to use the same algorithms for facial and eye detection, thus not relying on two different simultaneous algorithms to compute facial and eye detection, when the facial detection will already be determining the locations of the eyes. 

Then, I set up our codebase through a private Github repository and began working on setting up Dlib. I also started reading the user manual for the NVIDIA Jetson Xavier NX Developer Kit. Finally, I worked on perfecting our budget so that we can order all our necessary parts by Monday. Since we are using a much more expensive microprocessor ($99 NVIDIA Jetson Nano vs. $399 NVIDIA Jetson Xavier), we need to make sure that we stay under our $600 total budget.  

By next week, I hope to have my eye detection code working with preliminary testing, all pushed to the repository. This includes finding datasets for training. Then, I want to get started with eye classification to determine whether the eye is opened or closed. I will use the Eye Aspect Ratio (EAR) equation for this. 

Sources

Why HOG

 

https://maelfabien.github.io/tutorials/face-detection/#3-real-time-face-detection-1

https://towardsdatascience.com/cnn-based-face-detector-from-dlib-c3696195e01c

https://www.pyimagesearch.com/2014/11/10/histogram-oriented-gradients-object-detection/

 

Eye Detection

https://www.educative.io/edpresso/eye-blink-detection-using-opencv-python-and-dlib

https://www.pyimagesearch.com/2017/04/24/eye-blink-detection-opencv-python-dlib/

https://towardsdatascience.com/a-guide-to-face-detection-in-python-3eab0f6b9fc1

 

NVIDIA Xavier User Guide

https://developer.download.nvidia.com/assets/embedded/secure/jetson/Xavier%20NX/Jetson_Xavier_NX_Developer_Kit_User_Guide.pdf?a89SNG_TxN9K0wiYbBWmdVF5WdJvtGJEvS–YZxbCnhAurtz2dqKfuxi93w_rhKTroNbZb0Eu41atCdOGAqSVw02a2m7EphpIa4rIVu325GWAvCe1wMA5fBO2H6BgZb0rD0xy5jzxr5XfH9BHgKmihXzbslTwi7mEJ5k3DOA7xcuWxk8N9FofDfeNSo_kE0bbfDDOjwR

Vaheeshta’s Status Report for 2/20

This week for me involved working on our project proposal and researching eye detection and classification methods. My main focus on our project proposal was researching and defining our testing, verification, and metrics for our nine requirements. I also dove into learning the basics of facial landmarking and eye detection as well as researching various eye detection methods. Some eye detection algorithms I identified in various research papers and online literature are as follows: Peng Wang, Matthew B. Green, and Qiang Ji’s Haar wavelet and AdaBoost algorithm that has a 94.5% eye detection accuracy; the Viola-Jones algorithm from the OpenCV library; D. Sidibe, P. Montesinos, S. Janaqi’s algorithm with a 98.4% detection rate; and Dlib’s Convolutional Neural Networks. Since computer vision is a very new topic for me, I taught myself an introduction to Haar cascade classifiers using OpenCV, some basics of Histogram of Oriented Gradients (HOG) using Dlib, and Convolutional Neural Networks (CNN) using Dlib. For instance, Dlib’s facial landmarking detector produces 68 (x, y) coordinates that map to specific facial structures, such as the left eye with [42, 48] and the right eye with [36, 42].

The next step involves finding which algorithm would be the best option for our project, taking both accuracy and performance into consideration. At this rate, my progress is right on schedule.

Sources

https://www.ecse.rpi.edu/~qji/Papers/frgc_eye.pdf

https://lear.inrialpes.fr/people/triggs/pubs/Dalal-cvpr05.pdf

https://hal-ujm.archives ouvertes.fr/file/index/docid/374366/filename/article_ivcnz2006.pdf

https://towardsdatascience.com/a-guide-to-face-detection-in-python-3eab0f6b9fc1

https://www.pyimagesearch.com/2017/04/03/facial-landmarks-dlib-opencv-python/