Skip to content

Repository files navigation

Сервис отслеживания глаз и автоматического воспроизведения видео

Сервис на Python, который отслеживает глаза пользователя через камеру и автоматически запускает видео при обнаружении отвлечения от работы.

Возможности

  • ✅ Отслеживание глаз и направления взгляда в реальном времени
  • ✅ Детекция отвлечения (телефон в руках, отворот, закрытые глаза)
  • ✅ Автоматическое воспроизведение видео при отвлечении
  • ✅ Работа на macOS и Windows
  • GUI интерфейс с визуализацией детекции в реальном времени
  • ✅ Отображение landmarks лица и глаз
  • ✅ Метрики в реальном времени (EAR, направление взгляда, поворот головы)
  • ✅ Консольная версия для работы без GUI

Требования

  • Python 3.8 или выше
  • Камера (встроенная или внешняя)
  • VLC Media Player (для воспроизведения видео)

Установка VLC

macOS:

brew install vlc

Windows: Скачайте и установите VLC с официального сайта: https://www.videolan.org/vlc/

Установка

  1. Клонируйте репозиторий или скачайте файлы проекта

  2. Создайте и активируйте виртуальное окружение:

macOS/Linux:

python3 -m venv venv
source venv/bin/activate

Windows:

python -m venv venv
venv\Scripts\activate

После активации в начале строки терминала появится (venv).

  1. Установите зависимости:
pip install -r requirements.txt
  1. Скачайте модель MediaPipe Face Landmarker:
python download_model.py

Модель будет автоматически скачана в директорию models/.

Важно: Всегда активируйте виртуальное окружение перед работой с проектом!

  1. Поместите видео файл для воспроизведения:
    • Создайте файл distraction_video.mp4 в корне проекта, или
    • Измените путь VIDEO_PATH в файле config.py

Использование

GUI версия (рекомендуется)

Не забудьте активировать виртуальное окружение:

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              # Документация

Принцип работы

  1. Отслеживание глаз: Использует MediaPipe Face Mesh для детекции лица и определения направления взгляда
  2. Детекция отвлечения:
    • Определяет наличие телефона в руках (на основе движения объектов)
    • Отслеживает отклонение взгляда от центра
    • Определяет поворот головы
    • Обнаруживает закрытые глаза
  3. Воспроизведение видео: При обнаружении отвлечения на заданное время автоматически запускается видео

Улучшения для будущих версий

  • Использование YOLO или другой модели для более точной детекции телефона
  • Настройка чувствительности через GUI
  • Сохранение статистики отвлечений
  • Поддержка нескольких камер
  • Веб-интерфейс для управления

Решение проблем

Камера не открывается

  • Проверьте, что камера не используется другим приложением
  • Попробуйте изменить CAMERA_INDEX в config.py (0, 1, 2...)

Видео не воспроизводится

  • Убедитесь, что VLC установлен и доступен в системе
  • Проверьте путь к видео файлу в config.py
  • Убедитесь, что видео файл существует и поддерживается VLC

Низкая точность детекции

  • Убедитесь, что освещение достаточное
  • Лицо должно быть хорошо видно в кадре
  • Попробуйте настроить пороги в config.py

Лицензия

MIT License

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages