AI-based_Emotion_Recognition_from_Media_Stream
Описание
Программный комплекс на основе применения ИИ, позволяющий в режиме реального времени распознавать эмоции человека, основываясь на анализе видеопотока и/или аудиопотока (данные с видеокамер).
Языки
- Python100%
🎭 Распознавание эмоций на основе ИИ анализа медиапотока
Проект команды ТОП ИИ | Уральский Федеральный Университет | 2026
📋 О проекте
Программный комплекс для распознавания эмоций человека в реальном времени на основе анализа видеопотока с использованием технологий искусственного интеллекта. Система способна обрабатывать несколько параллельных медиапотоков и работать в локальном режиме без передачи данных во внешние сети.
🎯 Цель проекта
Разработка рабочего прототипа программного комплекса анализа эмоций, работающего в режиме реального времени с точностью распознавания:
- ≥98% на записанном видео
- ≥95% на потоковом видео
✨ Возможности
- 🔴 Real-time анализ эмоций с веб-камеры
- 🎬 Поддержка видеопотоков с нескольких камер
- 🇷🇺 Русскоязычный интерфейс с корректным отображением кириллицы
- 🎨 Цветовая индикация распознанных эмоций
- ⚡ Оптимизированная обработка (анализ каждые 0.5 секунды)
- 🔒 Локальная работа без передачи данных в облако
- 📊 Статистика и логирование результатов анализа
Распознаваемые эмоции
| Эмоция (RU) | Эмоция (EN) | Цвет индикации |
|---|---|---|
| РАДОСТЬ | happy | 🟢 Зеленый |
| ГРУСТЬ | sad | 🟠 Оранжевый |
| ЗЛОСТЬ | angry | 🔵 Синий |
| НЕЙТРАЛЬНО | neutral | ⚪ Серый |
| УДИВЛЕНИЕ | surprise | 🟡 Желтый |
🛠 Технологический стек
| Технология | Назначение | Версия |
|---|---|---|
| Python | Язык программирования | 3.8+ |
| OpenCV | Захват и обработка видео | 4.5+ |
| DeepFace | ИИ-модель для распознавания эмоций | Latest |
| PIL/Pillow | Отрисовка текста (кириллица) | 9.0+ |
| NumPy | Работа с массивами данных | 1.20+ |
| TensorFlow | Бэкенд для нейросетей | 2.10+ |
Обоснование выбора технологий
- Python — стандарт де-факто для задач ИИ, богатая экосистема библиотек
- OpenCV — высокопроизводительная библиотека компьютерного зрения
- DeepFace — готовая предобученная модель с поддержкой multiple backends
- PIL — единственное надежное решение для отображения кириллицы в OpenCV
📦 Установка
Требования к системе
- ОС: Windows 10/11, Linux, macOS
- RAM: минимум 4 GB (рекомендуется 8 GB)
- Камера: любая USB или встроенная веб-камера
- Python: 3.8 или выше
Шаг 1: Клонирование репозитория
Шаг 2: Создание виртуального окружения
Шаг 3: Активация окружения
Windows:
Linux/macOS:
Шаг 4: Установка зависимостей
Шаг 5: Подготовка шрифта
Убедитесь, что файл шрифта находится в папке проекта:
🚀 Использование
Запуск основного модуля
Управление программой
| Клавиша | Действие |
|---|---|
| ESC | Выход из программы |
| Q | Альтернативный выход |
Пример вывода в консоль
🏗 Архитектура решения
┌─────────────────────────────────────────────────────────┐
│ УРОВЕНЬ СБОРА ДАННЫХ │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ │
│ │ Камера 1 │ │ Камера 2 │ │ Камера N │ │
│ └────┬─────┘ └────┬─────┘ └────┬─────┘ │
│ │ │ │ │
└───────┼─────────────┼─────────────┼─────────────────────┘
│ │ │
▼ ▼ ▼
┌─────────────────────────────────────────────────────────┐
│ УРОВЕНЬ ОБРАБОТКИ │
│ ┌──────────────────────────────────────────────────┐ │
│ │ Сервер обработки │ │
│ │ ┌────────────┐ ┌────────────┐ ┌────────────┐ │ │
│ │ │ Воркер 1 │ │ Воркер 2 │ │ Воркер N │ │ │
│ │ │ (Поток 1) │ │ (Поток 2) │ │ (Поток N) │ │ │
│ │ └─────┬──────┘ └─────┬──────┘ └─────┬──────┘ │ │
│ │ │ │ │ │ │
│ │ ▼ ▼ ▼ │ │
│ │ ┌────────────────────────────────────────────┐ │ │
│ │ │ DeepFace Model (CNN) │ │ │
│ │ └────────────────────────────────────────────┘ │ │
│ └──────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────┘
│ │ │
▼ ▼ ▼
┌─────────────────────────────────────────────────────────┐
│ УРОВЕНЬ ОТОБРАЖЕНИЯ │
│ ┌──────────────────────────────────────────────────┐ │
│ │ Интерфейс: Эмоция + Статус + Цветовая индикация │ │
│ └──────────────────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────┘
Оптимизация производительности
- Уменьшение кадра: 640x480 → 320x240 перед анализом
- Дискретизация: Анализ каждые 0.5 секунды (не каждый кадр)
- Кэширование: Сохранение последней распознанной эмоции
📊 Метрики качества
| Параметр | Значение | Метод измерения |
|---|---|---|
| Точность (записанное видео) | ≥98% | Тестовый датасет |
| Точность (реальное время) | ≥95% | Live-тестирование |
| Задержка обработки | <500 мс | Тайминг циклов |
| FPS видеопотока | 30 | OpenCV CAP_PROP_FPS |
| Поддерживаемые эмоции | 5 базовых | DeepFace output |
📁 Структура репозитория
👥 Команда проекта
| Участник | Роль | Компетенции | Задачи |
|---|---|---|---|
| [Имя Фамилия] | AI Developer | Machine Learning, Python | Разработка ИИ-модуля, метрики |
| [Имя Фамилия] | CV Engineer | OpenCV, Optimization | Интеграция компьютерного зрения |
| [Имя Фамилия] | Tech Lead | Architecture, Documentation | Архитектура, документация, Git |
Канбан-доска: teamproject.urfu.ru
📈 История разработки
| Итерация | Дата | Основные изменения |
|---|---|---|
| 1 | [Дата] | Инициализация проекта, настройка окружения |
| 2 | [Дата] | Интеграция OpenCV, захват видеопотока |
| 3 | [Дата] | Подключение DeepFace, базовое распознавание |
| 4 | [Дата] | Оптимизация производительности, русский текст |
| 5 | [Дата] | Финальное тестирование, документация |
🔧 Конфигурация
Параметры камеры (main.py)
Переменные окружения
⚠️ Известные ограничения
- Освещение: Требуется достаточное освещение для точного распознавания
- Угол лица: Оптимальный угол — анфас (0-30 градусов отклонения)
- Расстояние: Рекомендованное расстояние до камеры — 0.5-2 метра
- Одно лицо: MVP обрабатывает одно лицо в кадре (первое обнаруженное)
🎯 Планы развития
- Поддержка множественных лиц в кадре
- Дообучение модели на российском датасете
- REST API для интеграции с внешними системами
- Docker-контейнеризация для масштабирования
- Веб-интерфейс для просмотра статистики
- Экспорт отчетов (CSV, JSON)