Team Members: Omar Al-Kofahi, Teresa Vincent, and Sejal Ghimire

Team Name: OcuRest

Inspiration

As first-year students, we've struggled with adjusting to new academic expectations, balancing our studies, and maintaining our personal well-being. We noticed that some students struggle to get started on their work, while others push through exhaustion and neglect taking breaks. Seeing these challenges in ourselves and our peers inspired us to create OcuRest, something that encourages students to become more aware of their well-being and develop healthier study habits.

What it does

OcuRest is a wellness application that uses computer vision to track eye movement patterns and identify potential signs of fatigue and reduced attention. Through real-time, personalized break reminders, it encourages students to take breaks and develop healthier study habits. It also prioritizes accessibility and customization, allowing users to personalize their experience to fit their needs and preferences.

How we built it

We utilized webcams built into laptops and pushed this feed of data into MediaPipe, which processes and draws face meshes with 450+ facial points. From these, we extracted the key points that allowed iris tracking, saccade (blinking) patterns, and facial movement. With the extracted features, we ran a heuristic model approach to determine fatigue and attention. When these are low, we suggest the user take a break. When they are high, in our adaptive mode, we avoid breaking the user's flow.

Challenges we ran into

There is extensive data backing Drowsy Drivers. However, fatigue and attention are things that require sequential photos or videos in order to accurately represent. Due to the lack of data, we weren't able to train a model; however, had we had the chance to collect it, we would've used an LSTM due to its high accuracy in continuously changing features. An LSTM would also raise the question of how much compute an individual's laptop or personal server can spare, which would have meant heavy optimizations and possibly even swapping over to a C++ variant in order to save on computation. Another major issue with Python in general is its lack of native true multithreading. Since Python has GIL, each core can only run one thread instead of multiple. With new versions such as 3.14, this problem has been addressed, but MediaPipe doesn't support Python versions newer than 3.12. We also ran into over-engineering problems, as we approached everything with the idea of scalability; we often times over spent on our resources and efforts when we could've managed to put this time elsewhere.

Accomplishments that we're proud of

This was our first hackathon, and we didn't get complacent. Each of us took on new challenges and expanded our technical and social horizons. We engaged in research, agentic coding, teamwork, and coordination.

What we learned

We learned how to containerize, branch and merge, and mess around with settings and code in order to truly understand what's under the hood. Some of us had never touched code before, while others had never pushed an entire backend and then connected it to a front end.

What's next for OcuRest

We recognize that eye movement patterns vary between people and can be affected by other factors, such as camera quality and lighting. Relying on a single source of data may also limit the reliability of our fatigue and attention estimates. Moving forward, we hope to improve the accuracy of OcuRest by incorporating additional biometric indicators, such as radio-based sensing for subtle body movements, heart rate variability (HRV), blood pressure, and skin conductance. Additionally, we aim to expand accessibility through more customizable features and alternative monitoring methods, ensuring that OcuRest can accommodate diverse needs and benefit a wider range of college students.

Share this project:

Updates

Submission history