AI-based_Emotion_Recognition_from_Media_Stream

0

Описание

Программный комплекс на основе применения ИИ, позволяющий в режиме реального времени распознавать эмоции человека, основываясь на анализе видеопотока и/или аудиопотока (данные с видеокамер).

Языки

  • Python100%
15 дней назад
15 дней назад
README.md

🎭 Распознавание эмоций на основе ИИ анализа медиапотока

Python OpenCV DeepFace License

Проект команды ТОП ИИ | Уральский Федеральный Университет | 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: Подготовка шрифта

Убедитесь, что файл шрифта

arial.ttf
находится в папке проекта:


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

Запуск основного модуля

Управление программой

КлавишаДействие
ESCВыход из программы
QАльтернативный выход

Пример вывода в консоль


🏗 Архитектура решения

┌─────────────────────────────────────────────────────────┐ │ УРОВЕНЬ СБОРА ДАННЫХ │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ Камера 1 │ │ Камера 2 │ │ Камера N │ │ │ └────┬─────┘ └────┬─────┘ └────┬─────┘ │ │ │ │ │ │ └───────┼─────────────┼─────────────┼─────────────────────┘ │ │ │ ▼ ▼ ▼ ┌─────────────────────────────────────────────────────────┐ │ УРОВЕНЬ ОБРАБОТКИ │ │ ┌──────────────────────────────────────────────────┐ │ │ │ Сервер обработки │ │ │ │ ┌────────────┐ ┌────────────┐ ┌────────────┐ │ │ │ │ │ Воркер 1 │ │ Воркер 2 │ │ Воркер N │ │ │ │ │ │ (Поток 1) │ │ (Поток 2) │ │ (Поток N) │ │ │ │ │ └─────┬──────┘ └─────┬──────┘ └─────┬──────┘ │ │ │ │ │ │ │ │ │ │ │ ▼ ▼ ▼ │ │ │ │ ┌────────────────────────────────────────────┐ │ │ │ │ │ DeepFace Model (CNN) │ │ │ │ │ └────────────────────────────────────────────┘ │ │ │ └──────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────┘ │ │ │ ▼ ▼ ▼ ┌─────────────────────────────────────────────────────────┐ │ УРОВЕНЬ ОТОБРАЖЕНИЯ │ │ ┌──────────────────────────────────────────────────┐ │ │ │ Интерфейс: Эмоция + Статус + Цветовая индикация │ │ │ └──────────────────────────────────────────────────┘ │ └─────────────────────────────────────────────────────────┘

Оптимизация производительности

  1. Уменьшение кадра: 640x480 → 320x240 перед анализом
  2. Дискретизация: Анализ каждые 0.5 секунды (не каждый кадр)
  3. Кэширование: Сохранение последней распознанной эмоции

📊 Метрики качества

ПараметрЗначениеМетод измерения
Точность (записанное видео)≥98%Тестовый датасет
Точность (реальное время)≥95%Live-тестирование
Задержка обработки<500 мсТайминг циклов
FPS видеопотока30OpenCV CAP_PROP_FPS
Поддерживаемые эмоции5 базовыхDeepFace output

📁 Структура репозитория


👥 Команда проекта

УчастникРольКомпетенцииЗадачи
[Имя Фамилия]AI DeveloperMachine Learning, PythonРазработка ИИ-модуля, метрики
[Имя Фамилия]CV EngineerOpenCV, OptimizationИнтеграция компьютерного зрения
[Имя Фамилия]Tech LeadArchitecture, DocumentationАрхитектура, документация, Git

Канбан-доска: teamproject.urfu.ru


📈 История разработки

ИтерацияДатаОсновные изменения
1[Дата]Инициализация проекта, настройка окружения
2[Дата]Интеграция OpenCV, захват видеопотока
3[Дата]Подключение DeepFace, базовое распознавание
4[Дата]Оптимизация производительности, русский текст
5[Дата]Финальное тестирование, документация

🔧 Конфигурация

Параметры камеры (main.py)

Переменные окружения


⚠️ Известные ограничения

  1. Освещение: Требуется достаточное освещение для точного распознавания
  2. Угол лица: Оптимальный угол — анфас (0-30 градусов отклонения)
  3. Расстояние: Рекомендованное расстояние до камеры — 0.5-2 метра
  4. Одно лицо: MVP обрабатывает одно лицо в кадре (первое обнаруженное)

🎯 Планы развития

  • Поддержка множественных лиц в кадре
  • Дообучение модели на российском датасете
  • REST API для интеграции с внешними системами
  • Docker-контейнеризация для масштабирования
  • Веб-интерфейс для просмотра статистики
  • Экспорт отчетов (CSV, JSON)