Eye strain is a serious health hazard to developers and muggles alike, and can lead to problems such as squinting and vision degradation.
What it does
BlinkBot is a revolution in modern ergonomics that compels computer users all over the world to finally address this issue. By utilising Artificial Intelligence and Computer Vision technologies, BlinkBot is able to provide persistent and annoying reminders to users who blink too infrequently. Facial tracking monitors the user's eyes and they receive a phone call whenever no blink activity is detected for more than a certain time. We have also added nod-controlled screen locking
How we built it
Face tracking was implemented using OpenCV, with dlib to track facial features (the eyes). This information was used to compute the Eye Aspect Ratio (EAR, confusingly). Fluctuations in the EAR can be used to detect eye open/closed state (some would say blinking). Using these results, distractions were produced to ensure the user kept blinking sufficiently. These were provided through automatic calls generated by Twilio when a certain time had passed during which the user had not blinked.
Challenges we ran into
- A bot almost stole all our money on Twilio... moral of the story, make sure your API keys are not on github.
- Building and installing dlib was surprisingly fiddly.
Accomplishments that we're proud of
- Improving on existing blink tracking algorithms with 'Advanced Data Science'
- Successfully avoided using languages other than Python
- Smooth(ish)ly integrating the blink counter with the automated call API (Twilio)
What's next for BlinkBot
- We would like to expand our supported interruption media to include fax, video calls and human couriers, to ensure everyone blinks enough.
- Explore further uses for blink detection.