Сервис на Python, который отслеживает глаза пользователя через камеру и автоматически запускает видео при обнаружении отвлечения от работы.
- ✅ Отслеживание глаз и направления взгляда в реальном времени
- ✅ Детекция отвлечения (телефон в руках, отворот, закрытые глаза)
- ✅ Автоматическое воспроизведение видео при отвлечении
- ✅ Работа на macOS и Windows
- ✅ GUI интерфейс с визуализацией детекции в реальном времени
- ✅ Отображение landmarks лица и глаз
- ✅ Метрики в реальном времени (EAR, направление взгляда, поворот головы)
- ✅ Консольная версия для работы без GUI
- Python 3.8 или выше
- Камера (встроенная или внешняя)
- VLC Media Player (для воспроизведения видео)
macOS:
brew install vlcWindows: Скачайте и установите VLC с официального сайта: https://www.videolan.org/vlc/
-
Клонируйте репозиторий или скачайте файлы проекта
-
Создайте и активируйте виртуальное окружение:
macOS/Linux:
python3 -m venv venv
source venv/bin/activateWindows:
python -m venv venv
venv\Scripts\activateПосле активации в начале строки терминала появится (venv).
- Установите зависимости:
pip install -r requirements.txt- Скачайте модель MediaPipe Face Landmarker:
python download_model.pyМодель будет автоматически скачана в директорию models/.
Важно: Всегда активируйте виртуальное окружение перед работой с проектом!
- Поместите видео файл для воспроизведения:
- Создайте файл
distraction_video.mp4в корне проекта, или - Измените путь
VIDEO_PATHв файлеconfig.py
- Создайте файл
Не забудьте активировать виртуальное окружение:
source venv/bin/activate # macOS/Linux
# или
venv\Scripts\activate # WindowsЗапустите сервис с графическим интерфейсом:
python main.py --guiИли используйте скрипт:
./run.shВозможности GUI:
- 📹 Видео с камеры в реальном времени с визуализацией детекции
- 👁️ Отображение landmarks лица и глаз
- 📊 Метрики в реальном времени (EAR, направление взгляда, поворот головы)
- ⚙️ Настройки визуализации (включить/выключить landmarks и информацию)
- 🎬 Управление воспроизведением видео
- 📈 Отображение времени отвлечения
Запустите сервис в консольном режиме:
python main.py- Q - Выход из программы
- S - Вручную переключить воспроизведение видео
Откройте файл config.py для настройки параметров:
CAMERA_INDEX- индекс камеры (0 - первая доступная)DISTRACTION_THRESHOLD- время отвлечения в секундах перед запуском видеоEYE_ASPECT_RATIO_THRESHOLD- порог для определения закрытых глазGAZE_DEVIATION_THRESHOLD- порог отклонения взглядаVIDEO_PATH- путь к видео файлуVIDEO_LOOP- зацикливать видео
eyeglass/
├── main.py # Главный модуль
├── gui.py # GUI интерфейс с визуализацией
├── eye_tracker.py # Модуль отслеживания глаз
├── distraction_detector.py # Детектор отвлечения
├── video_player.py # Плеер для воспроизведения видео
├── config.py # Конфигурация
├── check_dependencies.py # Скрипт проверки зависимостей
├── run.sh # Скрипт запуска
├── requirements.txt # Зависимости
└── README.md # Документация
- Отслеживание глаз: Использует MediaPipe Face Mesh для детекции лица и определения направления взгляда
- Детекция отвлечения:
- Определяет наличие телефона в руках (на основе движения объектов)
- Отслеживает отклонение взгляда от центра
- Определяет поворот головы
- Обнаруживает закрытые глаза
- Воспроизведение видео: При обнаружении отвлечения на заданное время автоматически запускается видео
- Использование YOLO или другой модели для более точной детекции телефона
- Настройка чувствительности через GUI
- Сохранение статистики отвлечений
- Поддержка нескольких камер
- Веб-интерфейс для управления
- Проверьте, что камера не используется другим приложением
- Попробуйте изменить
CAMERA_INDEXвconfig.py(0, 1, 2...)
- Убедитесь, что VLC установлен и доступен в системе
- Проверьте путь к видео файлу в
config.py - Убедитесь, что видео файл существует и поддерживается VLC
- Убедитесь, что освещение достаточное
- Лицо должно быть хорошо видно в кадре
- Попробуйте настроить пороги в
config.py
MIT License