Определение психоэмоционального состояния человека в настоящее время становится предметом значительного интереса в контексте широкого применения, от медицинских исследований до маркетинговых стратегий [1]. Эмоции играют ключевую роль в общении, отражая взаимодействие человека с окружающим миром и самим собой. В современном обществе расширяются области применения распознавания эмоций, увеличивая потребность в точных методах определения человеческих эмоций.
Особый интерес представляет задача распознавания эмоций по изображению лица, и это обусловлено несколькими факторами. Прежде всего, изображения лиц легко доступны и широко распространены в повседневной жизни. Лица обладают высокой информативностью для распознавания эмоций, так как мимика, выражение глаз и другие физические признаки могут явно выражать или намекать на определенные эмоции [2, 3]. Более того, сбор больших наборов данных с изображениями лиц проще по сравнению с другими типами данных, такими как речь или почерк [4, 5].
Несмотря на активные исследования в области распознавания эмоций по мимике, в настоящее время недостаточно разработаны приложения, которые могли бы эффективно определять человеческие эмоции и использовать эту информацию для научных и медицинских целей. Машинное обучение представляется перспективным методом решения этой проблемы на практике [6].
Цель работы заключается в развитии методов распознавания эмоций по лицам людей в видеопотоке в реальном времени и создании приложения, способного решать указанные проблемы. Теоретическая и практическая значимость исследования заключается в возможности использования наилучших моделей распознавания эмоций для дальнейших исследований в психологии, медицине, маркетинге и других областях.
Разрабатываемый программный комплекс позволит в реальном времени определять эмоции на лице человека по видеопотоку с веб-камеры. Для достижения этой цели приложение должно соответствовать следующим функциональным требованиям:
1. Программный комплекс должен проводить распознавание эмоций на лице человека в режиме реального времени.
2. Точность распознавания эмоций должна составлять не менее 85 %.
3. Программный комплекс должен формировать линейчатый график и круговую диаграмму на основе данных о распознанных эмоциях в реальном времени.
4. Пользователь должен иметь возможность использовать программный комплекс на своем локальном компьютере.
Математические модели и методы распознавания эмоций
В настоящее время в научных исследованиях и при создании программных комплексов активно используется техника решения задач с использованием методов глубокого обучения. Из-за изменений в изображениях, вызванных освещением, старением и другими факторами, достижение точности при распознавании эмоций в реальном времени является важной проблемой [7].
Для решения задачи распознавания эмоций в реальном времени был проведен сравнительный анализ следующих методов машинного обучения с акцентом на математические алгоритмы – SVM (Support Vector Machines), ANN (Artificial Neural Networks), и CNN (Convolutional Neural Networks).
Метод опорных векторов (SVM) использует математическую модель для разделения данных на классы. В случае распознавания эмоций SVM стремится построить гиперплоскость, максимально разделяющую изображения лиц по их эмоциональному состоянию. Основная математика SVM включает оптимизацию и поиск опорных векторов, минимизируя функцию потерь.
,
где ω – веса, b – смещение, C – параметр регуляризации, ξi – штраф за нарушение гипперплоскости.
Искусственные нейронные сети (ANN) состоят из взаимосвязанных узлов, имитируя работу человеческого мозга. В случае распознавания эмоций ANN обучается весам между узлами, оптимизируя функцию потерь. Основные математические аспекты включают в себя обратное распространение ошибки и применение градиентного спуска.
,
где – перекрестная энтропия, измеряющая разницу между предсказанными (Oij) и истинными Yij метками.
Основным инструментом из технологий нейронных сетей для решения задач распознавания эмоций является сверточная нейронная сеть (CNN) [8, 9].
В основе данного решения находятся сверточные слои. Операция свертки для i-го фильтра и j-го канала описывается следующим образом:
,
где W – ядро свертки, I – входные данные, l – коэффициент расширения.
В работе используется нейронная сеть, архитектура которой представлена на рис. 1. На первом этапе происходит определение входного слоя и количества фильтров в первом сверточном слое. Далее проводится эксперимент для определения количества сверточных слоев, размеров фильтров и полностью связанных слоев, что позволяет оптимизировать производительность модели. Для того чтобы предотвратить переобучение и улучшить обобщающую способность модели, были использованы такие методы, как dropout и batch normalization [10].
Модель обучалась на наборе данных, где каждое изображение лица относится к одной из следующих категорий эмоций: злость, отвращение, страх, счастье, грусть, удивление и нейтральное состояние.
Рис. 1. Пример архитектуры нейронной сети
Рис. 2. Результаты вычислительного эксперимента
Для обучения модели используются изображения лиц размером 48x48 пикселей. Важно, чтобы лица находились в центральной части изображения и занимали примерно одинаковое пространство. Таким образом, будут получены более точные результаты. Обучающий набор данных содержал 28709 примеров, а тестовый – 3589 [11].
Полученный набор данных был разбит на обучающую и тестовую выборку. Данный подход позволяет обеспечить валидацию точности модели по метрикам Precision, Recall и F-Score, благодаря тому, что не весь набор данных используется при обучении модели. Использование полного набора данных при моделировании и подборе параметров может привести к переобучению модели – модель с высокой точностью будет справляться с примерами из обучающей выборки, но будет показывать хуже результаты в данных на реальных примерах [12].
Проведено сравнение CNN с другими методами машинного обучения, используемыми в задачах распознавания эмоций – SVM, ANN [13]. В качестве метрики качества работы модели была использована Precision.
где TP – количество экспериментов, когда классификатор верно соотнес объект к выбранному классу, FP – количество экспериментов, когда классификатор неверно соотнес объект к выбранному классу.
Результаты вычислительного эксперимента показаны на рис. 2.
Создание программного комплекса на основе streamlit.io
Принцип работы разработанного программного комплекса описан ниже. Система распознает лицо, по которому возможно определить эмоцию. Выражения лица обычно формируются движениями лицевых мышц. Затем различным эмоциям, которые они изображают, присваиваются определенные названия. После этого происходит процесс загрузки модели. Изображение bgr в градации серого преобразуется в изображение RGB, как только включается камера. После этого серое изображение масштабируется. Сразу после преобразования в градацию серого кадр пропускается через классификатор эмоций, который был предварительно обучен и настроен. Он предназначен для сопоставления настроения с ранее записанными эмоциями и классификации эмоций на основе вероятности. Затем классифицированное изображение маркируется. Возможно, что эмоция не будет распознана, если не будет ярко выражена. Если заданные эмоции присутствуют в базе данных, вычисляется вероятность присутствия конкретной эмоции.
После того, как получены результаты распознавания эмоций на тестовой выборке, необходимо проверить эффективность модели на видео в реальном времени. Программный комплекс включает в себя веб-приложения на основе streamlit.io. Как показывает практика [14], streamlit.io является довольно популярным решением для подобных задач. Разработанное приложение позволяет наглядно продемонстрировать результаты исследований, вывести дополнительные графики вероятности возникновения определенных эмоций для визуализации.
Код на Python преобразуется в веб-приложение при помощи библиотеки Streamlit. Данная библиотека позволяет добавлять виджеты, ввод текста, списки, выбор значений, визуализацию, графики, интерактивные панели, карты, различные элементы управления и запускать их во встроенном сервере.
При запуске было указано имя на Python с описанием веб-страницы, в нашем случае app.py. Streamlit запустил встроенный веб-сервер, а в нем – страницу на основе скрипта app.py. Сервер Streamlit запущен по адресу http://localhost:8501. Он запускается только на локальном компьютере, другие пользователи не смогут подключиться к этому приложению по сети.
Рис. 3. Архитектура разработанного приложения Streamlit
В веб-приложении реализована визуализация видеопотока с веб-камеры. На основе данного видеопотока с помощью ранее обученной нейронной сети определяется эмоция человека. Результат работы нейронной сети выводится в левом верхнем углу видеопотока зелеными буквами.
Помимо видеопотока с прогнозом эмоций реализованы два графика:
− Круговая диаграмма – определенные нейросетью эмоции отображаются в виде круговой диаграммы, которая отображается в реальном времени.
− Линейный график – отображает определенные нейросетью эмоции во времени. По оси x – время, по оси y – эмоции. График обновляется в режиме реального времени.
Заключение
В исследовании был приведен анализ существующих методов распознавания эмоций на основе машинного обучения. Сверточная архитектура нейронной сети позволила распознать эмоции с точностью 89 %, что является лучшим результатом, по сравнению с другими исследуемыми моделями машинного обучения. Был разработан комплекс программ для распознавания эмоций человека по видео с использованием языка программирования Python. Программный комплекс включает в себя веб-приложение на основе streamlit.io, которое позволяет визуализировать исследуемые и обработанные данные. Полученные результаты могут быть полезны при решении практических задач в психологии, медицине и маркетинге.
Библиографическая ссылка
Тетеревенков Д.Л., Корчагин С.А. МАТЕМАТИЧЕСКИЕ МОДЕЛИ И КОМПЛЕКС ПРОГРАММ ДЛЯ ОПРЕДЕЛЕНИЯ ЭМОЦИЙ ЧЕЛОВЕКА С ИСПОЛЬЗОВАНИЕМ ТЕХНОЛОГИЙ КОМПЬЮТЕРНОГО ЗРЕНИЯ // Современные наукоемкие технологии. – 2024. – № 1. – С. 82-86;URL: https://top-technologies.ru/ru/article/view?id=39912 (дата обращения: 16.08.2024).