Я разрабатывал сервис распознавания эмоций людей по видеосвязи (например, для Skype, Zoom и аналогичных сервисов) в рамках учебного проекта по курсам "My First Data Project 2: от идеи к продукту" и "MLOps и production подход к ML исследованиям 2.0". Данный сервис может быть полезен всем кто общается со своими клиентами по видео звонкам. Например, это может быть сотрудник технической поддержки банка дающий онлайн консультацию клиенту банка. Или преподаватель частной онлайн школы, например, Skillbox. Данный сервис может помочь оценить эмоциональное состояние как клиента, что поможет в оценке его удовлетворенности обслуживанием, так и контролем работы сотрудника(например, чтобы засечь агрессивное или неподобающее поведение).
Группа с репозиториями проекта расположена по (ссылке).
Репозиторий содержит модели для распознавания эмоций на лицах людей на видео из видеоконференций (Zoom
, Skype
и т.д.).
Пример работы одной из моделей на видео онлайн конференции с актерами из датасета RAVDESS(ссылка).
Подробный рассказ про весь проект с демо его возможностей и внутреннем устройстве (ссылка).
Презентация в формате PowerPoint
(gitlab-profile/repo_pics/Emotion_recognition_slides.pptx
)
Общая схема устройства системы компьютерного зрения
Система состоит из трех этапов:
crop'ы
c лицами людей на кадрах видео.id
crop'ов
его лицаРассмотрим каждый компонент подробнее:
crop'ы
c лицами людей на кадрах видео.Для детекции лиц используется нейросеть RetinaFace
(ссылка на оригинальный github-repo). Код авторов был написан для реализации научной статьи RetinaFace: Single-stage Dense Face Localization in the Wild.
Мной был разработан удобный python-пакет
в репозитории pytorch_retinaface_infer
(ссылка) для детекции лиц людей на фото.
id
Мы работаем с ПО для онлайн конференций, где каждый пользователь находится в своем отдельном окне.
Ввиду потенциального отсутствия сложных коллизий в данной задаче и для увеличения производительности я решил остановится на SORT
-треккинге.
crop'ов
его лицаИспользуется SOTA-модель(ссылка) показывающая лучший результат на датасете RAVDESS(ссылка) на данный момент времени intermediate transformer fusion
из статьи Self-attention fusion for audiovisual emotion recognition with incomplete data
(ссылка)
Особенностью обучения модели является то, что из всего видео с актером из датасета RAVDESS(ссылка) берется всего 15 кадров с помощью равномерного распределения.
Между кадрами есть интервалы
, для длинных видео они могут быть по 10 кадров
, для более коротких по 6 кадров
.
Особенностью разработанного мной python-пакета
для инференса данной модели multimodal-emotion-recognition_infer
(ссылка) является то, что все кадры из видео берутся последовательно по 15 кадров без интервалов между ними.
Проект представляет собой модульную структуру из отдельных проектов для удобного переиспользования.
Проекты предназначены для
Streamlit
приложения для распознавания эмоций на фото и видеоFast API
для распознавания эмоций на фото и видео с помощью POST
и GET
запросовpython-пакет
и использовать API
)Рассмотрим их подробнее
Проект emotion_streamlit_app_test
(ссылка) для Streamlit
приложения для распознавания эмоций на фото и видео
Проект emotion_recognize_serve
(ссылка) содержит веб-сервис с Fast API
для распознавания эмоций на фото и видео с помощью POST
и GET
запросов
Проект emotion_recognize_infer
(ссылка) представляет собой демо проект по использованию всех разработанных python-пакетов
для инференса моделей.
В нем демонстрируется как использовать
pytorch_retinaface_infer
(ссылка) python-пакет
для детекции лиц людей на фото
multimodal-emotion-recognition_infer
(ссылка) python-пакет
для предсказания эмоций человека по crop'у его лица. Используется модель intermediate transformer fusion
из статьи Self-attention fusion for audiovisual emotion recognition with incomplete data
(ссылка).
Обучение модели предсказывающей эмоции человека по crop'у его лица на датасете RAVDESS(ссылка) представлено в проекте multimodal-emotion-recognition
(ссылка).
как использовать pytorch_retinaface_infer
и multimodal-emotion-recognition_infer
вместе для предсказания эмоций людей на фото.
как использовать emotion_video_track
(ссылка) python-пакет
для предсказания эмоций людей на видео.
mlflow_services
(ссылка) для развертывания MlFlow
по сценарию 4 описанному в офф. документации (ссылка).Мы разворачиваем систему микросервисов MlFlow
(postgress
, pgadmin
, minio
, mlflow
) с помощью docker-compose
.
Проект был подготовлен как финальный итоговый проект при прохождении онлайн-курсов на платформе Open Data Science
:
My First Data Project 2: от идеи к продукту
(ссылка)Итогом данного курса стало поступление в онлайн магистратуру ИТМО "Искусственный интеллект" от AI Talen Hub
на бюджет(ссылка).
MLOps и production подход к ML исследованиям 2.0
(ссылка)Видео запись защиты данного проекта с подробным демо возможностей и рассказом о нем на курсе MLOps и production подход к ML исследованиям 2.0
(ссылка)
По итогу данного курса я занял 1-вое место
в общем лидерборде (ссылка).
Cookies help us deliver our services. By using our services, you agree to our use of cookies.