VisionGuard is a desktop application designed to help prevent eye strain from excessive screen time. It uses your PC's webcam to monitor how long you look at the screen and reminds you to take breaks. This approach helps reduce eye fatigue and promotes healthier computer usage habits. The app is user-friendly, allowing you to customize your break times and providing reports on your screen time. It operates efficiently by leveraging the AI PC's Neural Processing Unit (NPU), which eliminates the need for an internet connection and keeps power usage low. This ensures that VisionGuard is both private and practical for daily use, without slowing down your computer. All your data remains on your PC, safeguarding your privacy.
- Implement Gaze Detection Model
- Estimate Eye Gaze Time
- Alert User for Breaks through Notifications (20-20-20)
- Integrate the GUI
- Utilize NPU and GPU
- Customizable Settings (Interval and Duration)
- Screen Time Reports
- Daily
- Weekly
- Perform Reports
- Latency
- FPS
- Resource Utilization Graphs
- Calibrate the Gaze Vector Range
- Perform Optimizations
- Handle Multi-Monitor Setup
- Handle Multi-Users
- Real-time User Gaze Vector Display
- Ongoing Screen Time Widget
- Notification Alert Message Box
- Customizable Settings (Interval and Duration)
- Screen Time Reports
- Daily
- Weekly
- Perform Reports
- Latency
- FPS
- Resource Utilization Graphs
- Display device (CPU, NPU, GPU)
- Display model (INT8, FP16, FP32)
- Add AUTO to the list of devices and test the application with AUTO.
- Run inference at user-specified FPS
- Gaze Calibration Window
- Windows system tray application
- Adaptive UI
- Dark and Light Theme Support
- VisionGuard Logo
- Handle Multi-Monitor Setup
- Handle Multi-Users
- CPU vs. GPU vs. NPU
- Power Consumption
- Resource Utilization
- Performance Metrics
- Setup and Development Process
- Gaze Detection and Calibration Steps
- New Features and Optimizations
- User Guides for Initial and Advanced Features
- Benchmarking Results
- Initial User Testing and Feedback Collection
- Iterative Improvements Based on User Feedback
- Final User Testing and Validation
- Investigate why NPU is always active regardless of the selected device.
- Resolve discrepancies in CPU resource utilization between the application and Task Manager.
- Fix the GUI issue to ensure numbers are visible and indicate units (minutes and seconds).
- Provide feedback when "calibrate" is clicked.
- Propose an approach to test the accuracy of the solution.
- Research how accuracy depends on FPS and estimate the optimal FPS value for minimal power consumption.
- Review the provided procedure to measure power consumption.
- Create an executable and deploy on Windows.
- Create an executable and deploy on Linux (Ubuntu, Fedora, Arch).
- Create an executable and deploy on MacOS.
- Set up GitHub workflows for CI/CD.
-
Continuous Integration (CI) Workflow:
- Build: Ensure the application builds correctly on different operating systems (Windows, Linux, MacOS).
- Test: Run unit tests and integration tests to validate the application.
- Lint: Check the code for styling and potential errors using tools like
clang-tidy
for C++ andflake8
for Python scripts (if any).
-
Continuous Deployment (CD) Workflow:
- Release: Automatically create releases and deploy executables to GitHub Releases when new tags are pushed.
- Packaging: Package the application for different platforms and ensure the executables are uploaded to the release.
-
Code Quality Workflow:
- Static Analysis: Run static analysis tools to check for code quality and potential bugs.
-
Documentation Workflow:
- Generate Documentation: Automatically generate and deploy documentation.
This project is under development as a part of GSoC 2024 under OpenVINO. For more details, visit the GSoC Project Page.
- Contributor: Inbasekaran
- Mentors: ZhuoWu, Dmitriy Pastushenkov, Ria Cheruvu
- Organization: OpenVINO Toolkit
This project is licensed under the Apache 2.0 License - see the LICENSE file for details.