Team Status Report for 5/8

The most significant risk at this point in the semester, since our MVP is complete, is ensuring that our design process is well documented and clear in the final report. We are mitigating this risk by taking the feedback we received during our final presentation and following the final report guidance provided on Canvas. We also made notes of the feedback we received from our midterm report and we will focus on the design trade offs section of the report as these are the primary areas we were asked to improve. For the results section that will be expanded on, based on the notes given to all teams during the final presentations, we shall ensure to include details such as size of datasets, number of trials and equations used for our percentages.

We were able to get our system to work on boot. This required creating a systemd service file to call our python script. Additionally we improved our frames per second by reducing the size of the cv2 frame the Jetson was seeing. No additional changes were made to our software or hardware design.

We have no changes to our schedule. We are finishing up the final deliverables of the semester: final video, public demo, poster and report.

Team Status Report for 5/1

The most significant risk is that we will be unable to debug a permission error that is preventing us from running our system upon boot. We configured a systemd such that our system will run when the Jetson Xavier is powered up. However, we currently receive an error that “Home directory not accessible: permission denied” as a result of Gstreamer. We attempted to fix this, but methods that worked for other users did not work for us. This risk is being managed by manually starting our system through a terminal, instead of having it start upon boot. If we are unable to fix this permission error before the final demo, then we will continue doing this. 

We made several changes to our software specifications since last week. One change we made was the library we were using for audio. Upon testing our system upon the Jeston, we noticed that we weren’t receiving any threaded audio. After some debugging, we realized that this was due to the library we were using for audio, so we switched from playsound to pydub. Additionally, another change was that we took out the down label from the head pose model because we improved our head pose calculations and our alert is already being triggered by the eye classifier for heads pointed downward. This is because, if someone is looking down, their eyes are classified as closed. 

Below is the updated schedule. The deadline of the final video and poster were moved up for everyone in the class. 

Team Status Report for 04/24

We have completed most of our project, so the most significant risk could be when we gather the metrics that we need for our final presentation. Some of the metrics such as system latency, accuracy, etc. may be rather difficult to collect and require a large amount of data to make an accurate metric assessment. In order to manage these risks, we have discussed exact plans about how we will be testing every single one of the metrics so we can properly assess how our system works. Vaheeshta has started writing a script for getting the metrics for eye classification from various datasets, so we will continue doing similar scripts for the other metrics to make it easier to test.

There were no major changes made to the existing design of the system. However, we have decided to completely forego doing head pose calibration during the calibration step, as we believe that just having a pre-trained data set will be faster and simpler. We have been having some issues with head pose calibration, so this should help the program run more smoothly. Vaheeshta has found some datasets for this which we will be finishing up this week.

We have gotten the audio prompts completely working and have added both the left and down direction to our head pose estimation. Thus, we are pretty much done with our project, and we just need to spend the next week fine tuning our hardware setup and getting prepared for the final presentation and gathering metrics by testing in the car.

Team Status Report for 4/10

One risk that could jeopardize our success is when we implement GPU acceleration to remove any delay of the system. It is important to be as close to real-time as possible. Right now we noticed a small delay when we integrated the head pose and eye classification code. Our plan for this is to get it as close to realtime first on the CPU and then implement GPU acceleration using CUDA Python and following the NVIDIA walk through. Additionally, for our testing we have been using a monitor to visually see how our algorithms are working so when we remove the cv2.show calls this should also improve the delay we see. For the interim demo we will most likely have this delay still but are working on minimizing it by checking the frames per second.

There have not been any significant changes to our existing design since last week. We have just been working on integration. To improve our integrated design, the calibration for head pose will resemble the calibration for eye classification. The ratio used will be the area of the cheek areas of each side of the face to determine whether the driver is looking right, left, forward, etc.

Some changes were made to the Gantt chart. We updated it with the actual dates we integrated the two algorithms and added additional tasks to ensure our MVP will be ready to test in a car setting.

Our updated Gantt chart is below.

 

Gantt Chart pdf

Team Status Report for 4/3

At this moment, one risk that could jeopardize our success is that we may not have given ourselves enough time for adding concurrency to our integration of our drowsiness detection system and head pose estimation system, as well as testing it. We want to use Python threading to have our eye classification and head pose estimation run at the same time after the facial landmarking. Since we all do not have much experience with concurrency, we may have underestimated the challenges we may face with this. Our contingency plan is that we will not use concurrency, and instead do the EAR calculations and head pose classifications linearly, and then determine if the driver is drowsy. 

One change we made is that we are only going to use our own custom datasets for training of eye classification. Thus, we will only be using public datasets for testing. For instance, we will use DROZY, a drowsiness database, for testing our drowsiness detection. Additionally, another change we made is that, after comparing our calibration systems for head pose and eye classification, we decided to model the head pose calibration after the eye classification calibration. Therefore, each will use the calibration time to generate vectors to then train separate SVM models. This way, we can make our head pose system more accurate for the user. Additionally, we clarified what type of audio prompts we would like to use during calibration, so that our user experience will be as smooth as possible for this crucial step. We want the user to perform our calibration requests while still not inconveniencing the driver with repetitive, and thus seemingly excessive, calibration requests.

 

Team Status Report for 03/27

The most significant risks that we have, especially with the interim demo coming up, is that integration of head pose and eye classification will not work/be difficult. Currently, both Heidi and Vaheeshta are working on the algorithms separately and are testing on their own laptops. If integration takes too long or we run into problems, it may push back the rest of our schedule. In order to manage these risks, our team is communicating with each other extremely well. Also, Heidi and Vaheeshta are both using the same landmarking algorithm so there is a point of reference that may make this integration easier. Danielle set up the Jetson this week, so we will continue testing on the Jetson and will test together to ensure that we can solve any issues that may arise.

There are currently no changes being made to the design of the system. Perhaps within the next couple of weeks, as we begin integration of the algorithms, this may change.

There have been some changes to the schedule following the advice of Professor Mukherjee. We are currently putting a pin in creating our custom dataset, and focusing more on making sure that our algorithms are working.

Danielle has set up the Jetson and configured the Raspberry Pi Camera, and Heidi has begun testing of her algorithms on the Jetson! Pictures below !!! 🙂

Team Status Report for 3/13

One significant risk that could jeopardize our project is calibration of our landmark detection. From the feedback we received on our design presentation, there was a question on would we need to calibrate our EAR algorithm and if we needed to calibrate every time the user turned on the system. To mitigate this, we will dedicate time this week when beginning to set up how we will take our picture for the data set to make sure that our design works with images we are getting. 

From the design presentation and the positive feedback we received the design of the system has remained the same. We have been asked to color code like we did on the software block diagram what will be off the shelf and what we will be making ourselves. The switch to an audio output was well received so we will order a USB speaker to attach to the Xavier. Because of our daylight scope of our project, we had planned to take pictures in different lighting conditions but from the recommendation of the professor with the time constraint of the class our scope will change to daytime with good lighting conditions. This does not change our system design but will simplify creating our dataset.

No changes were made to our schedule this week. 

We are on schedule. We will be focusing on the design report this week. The primary hardware, the Jetson Xavier arrived so we will be working towards creating our training data set and will build upon the working examples we have from last week.

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.

Team Status Report for 02/27

The most significant risks that could jeopardize the success of the project is that, based on professor feedback from our proposal presentation, we have decided to use the NVIDIA Jetson Xavier NX Developer Kit instead of the Nano as previously decided. The biggest risk associated with this is the cost, namely that it costs $399, which is significantly higher than the Jetson Nano which was $99. This eats into our overall budget pretty heavily and does not allow room for any mistakes to occur. If, for some reason, the Xavier were to somehow become usable, we would have to re-evaluate how to proceed with our contingency plans. To lower the risk of damaging the Jetson Xavier in some way, all of us will educate ourselves on how to properly handle it. We will also be storing it at Danielle’s apartment since the carpet in Heidi and Vaheeshta’s apartments pose a significant ESD risk, as well. Our current contingency plan is to try to find a cheaper, used Jetson Xavier option on a resale website such as eBay. We will discuss with our TA, Abha, about any other suggestions that she may have for contingency plans.

We have made several changes to the existing design of the system, following our Project Proposal presentation from Wednesday. We met to take into account the feedback that we received and think about how it would affect our project. As stated above, we have decided to use the NVIDIA Jetson Xavier NX Developer Kit instead of the Nano. We have also decided to adjust the scope by removing eye detection as one of our requirements, since it combines with facial detection, and instead using DLib 68 points landmarking. We also intend to look into adjusting our landmarking accuracy by researching more based on Professor Savvides’ comments following our presentation.

None of our changes have affected the schedule of the project, so there are no updates.

Team Status Report for 2/20

The most significant risks at the moment that could jeopardize the success of the project is integrating all the software algorithms we have together and integrating the hardware components. We plan on testing each algorithm extensively before integrating in steps with the others. Once the algorithms are fully integrated for each hardware part. The plan to test communication between the two devices is to start with simple messaging examples and then proceed to our actual software connecting between the devices. We have done research about each of the components to ensure compatibility. Additional research will be done throughout the project as needed. Another concern will be making sure we are able to power both the Nano and Pi with power banks and enough power is received for multiple hours to run software on each. Before integration we will make sure that they work with charging cables, to observe performance and then move to using power banks. Another risk with the power source will be having scripts automatically run the algorithms when power is plugged in or to switch to using a switch to turn the Pi and Nano on and off. Our plan for this to test our script that runs the algorithms in the correct sequence to ensure it works properly without us intervening. Once this is working fully, we will add the command to start upon plugged into outlet, and then plugged into power bank.

So far no changes have been made, but there might be after the proposal presentation on Monday. Thus, there is no updated schedule.