Предобученные модели распознавания эмоций EmoPy выложили в открытый доступ

EmoPy распознавание эмоций

EmoPy набор инструментов для распознавания эмоций на Python, который содержит несколько моделей с открытым исходным кодом, показывающих точность до 92% для трех эмоций и 68% для семи. Модели предлагается использовать в качестве предобученных и повышать точность для конкретного датасета. 

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

Модели распознавания EmoPy ориентируются на стандартный набор классификации эмоций:

  • Гнев;
  • Отвращение;
  • Страх;
  • Счастье;
  • Грусть;
  • Удивление;
  • Спокойствие.

Обучение модели

EmoPy был создан в рамках программы ThoughtWorks Arts, где художники работают над социальными и технологическими проектами. Команда ThoughtWorks оказала поддержку художнику-резиденту Карен Палмер в создании интерактивного фильма под названием RIOT. Зрителям показывался фильм с различными событиями, в то время как камера записывала их реакцию. Для распознавания эмоций использовался подход EmoPy.

EmoPy обучали при помощи нескольких разных архитектур. Наилучший результат показала архитектура ConvolutionalNN, которая включает несколько сверточных нейронных сетей. Точность для трех эмоций — 91,48%. Сеть показывают хорошие результаты на тестовых изображениях, но на новых работает хуже — ошибка достигает 37%. Это говорит о том, что сеть переобучена. Исправить это поможет расширение датасета.

Архитектура ConvolutionalNN EmoPY
Архитектура ConvolutionalNN

Некоторые архитектуры имеют гораздо больше слоев, чем показано на приведенном выше примере. TransferLearningNN, модель с архитектурой на базе Inception-v3 Google, имеет сотни слоев.

Полный список архитектур, предоставляемых с EmoPy, приведен в файле определения класса neuralnets.py , а также в документации по EmoPy. Сравнение моделей нейронных сетей включено в EmePy readme и в обзорную статьюКаждый из четырех подклассов в neuralnets.py реализует различную архитектуру нейронной сети, используя Keras с бэкэндом Tensorflow, позволяя пользователям экспериментировать и видеть, какой из них лучше всего подходит для решения их задач.

Датасеты

Сети обучались на датасетах Microsoft FER2013 и Cohn-Kanade .

FER2013 содержит более 35 000 изображений выражений лица для семи классов эмоций, описанных выше. Распределение меток на изображениях показывает перекос в сторону счастья и отвращения.

Примеры из датасета распознавания эмоций
Примеры изображений из датасета Cohn-Kanade

Датасеты были разделены на две части — обучающую и тестовую. Обучающий процесс проходит так:

  • Сначала нейронная сеть делает прогноз эмоций на основе ее текущих весов и параметров;
  • Затем она сравнивает предсказанную эмоцию с истинной эмоцией изображения, чтобы вычислить значение функции потерь;
  • Функция потерь используется для корректировки весов.

Результаты

Вопрос, на который команда исследователей стремилась ответить: насколько точны выбранные архитектуры для прогнозирования эмоций? Модель ConvolutionalNN показала лучшие результаты. В случае с отвращением, счастьем и удивлением, нейронная сеть правильно распознала эмоцию в 9 из 10 раз. Для других эмоций результаты были не столь удачными. Разработчики подчеркивают, что результат напрямую зависит от количества и качества обучающих данных, поэтому на большем датасете он будет более точным.

Подписаться
Уведомить о
guest

0 Comments
Межтекстовые Отзывы
Посмотреть все комментарии

gogpt