Как настроение?

За последние 50 лет технология компьютерного зрения эволюционировала от решения простых задач по распознаванию букв до создания дополненной реальности. Одно из самых активно развивающихся ее практических применений — это создание антропоморфных роботов, способных к считыванию эмоционального состояния собеседника. Специально для организаторы конференции Яндекса «Data&Science: Мир глазами роботов» поговорили с одним из ее участников — Анатолием Бобе, главой отдела машинного обучения в компании Neurobotics, которая работает над созданием алгоритма по распознаванию эмоций «ЭмоДетект».

История распознавания эмоций

Еще в середине XIX века французский ученый Дюшен де Булонь изучал эмоции, стимулируя электрическим разрядом лицевые мышцы человека и наблюдая за их сокращениями. Датой начала основных исследований в области их автоматического распознавания можно считать 1872 год, когда Чарльз Дарвин написал книгу «The Expression of Emotion in Man and Animals», в которой он сделал очень неочевидное уточнение: проявление эмоций у людей разного происхождения, разных рас и разного этноса примерно одинаково. Дарвин объявил, что эмоция — это универсальная характеристика, а значит, мы можем строить системы по распознаванию эмоций любого человека.


В середине ХХ века стараниями психолога Рэя Бердвистела появилась наука кинесика, и одним из главных ее специалистов стал знаменитый психолог Пол Экман. В 1978 году он предложил Систему кодирования лицевых движений (англ. FACS, Facial Action Coding System), которая по-прежнему остается библией разработчиков, занимающихся алгоритмами распознавания эмоций. Пол Экман разработал универсальные критерии для описания состояния лица человека, выделив около 90 двигательных единиц лица и головы, а также ввел набор из шести базовых эмоций, которые складываются из их комбинаций: радость, удивление, печаль, гнев, отвращение и страх (иногда в этот список добавляют также эмоцию презрения).

В середине 90-х годов, когда появились достаточные вычислительные мощности и машины созрели для обработки изображений, разработчики ринулись создавать первые системы. В начале использовались алгоритмы оптического потока, которые отслеживали во времени движение различных областей лица. Чуть позже, в 2000-х, начали развиваться нейросети, появились датасеты с разметкой двигательных единиц, проводились хакатоны и большие международные конкурсы по распознаванию эмоций.

В середине 10-х годов разработчики разделились. Кто-то придерживался классических методов и продолжал рассчитывать отдельные двигательные единицы по Экману на основе геометрических признаков, а кто-то, вооружившись только что появившимся глубоким обучением, занялся обучением сверточных сетей и генеративных моделей.

Компьютерное зрение для распознавания эмоций

Задача классификации эмоций по изображению сводится к тому, чтобы определить, что такое базовые эмоции, и обучить машину по базе данных лиц. Компания Neurobotics использует два подхода к решению этой задачи: классическую обработку изображений и сверточную нейросеть.

Для тренировки нейросети был использован тип обучения с учителем. Модель обучалась на смешанных данных: часть была взята из стандартного открытого датасета Cohn-Kanade, который содержит около 800 последовательностей изображений, каждое из которых размечено определенной эмоцией. Для сверточной нейросети такого количества недостаточно, поэтому команда Neurobotics собирала свой датасет. Они сажали людей перед камерой и просили изобразить шесть эмоций согласно правилам из мануала Экмана. Так они добавили к датасету еще три тысячи изображений. На последующих этапах работы алгоритм тестировался уже на расширенной базе данных AffectNet, которая содержит сотни тысяч изображений и хорошо подходит для задач глубокого обучения.

Преимущества нейросети в том, что, обладая хорошей обобщающей способностью, она работает в универсальной ситуации и выдает результат даже в плохих условиях съемки. Это может хорошо работать в «развлекательных» приложениях, но не подойдет для более глубокого анализа психоэмоционального состояния. Просто разделив данные на семь классов, невозможно обосновать, на основе какого признака рассчитываются те или иные эмоции. Поэтому для работы с заказчиками-психологами Neurobotics используют классическую обработку изображений: она считает признаки непосредственно по правилам Экмана и при хороших условиях съемки ошибается реже, чем нейросеть.


Обработка изображений

В классической обработке для каждой эмоции рассчитываются информативные признаки и определяются контрольные точки на лице. Затем признаки нормируются и строится классификатор. У каждой эмоции может быть много индивидуальных вариаций, и строго определить, что эти эмоции являются независимым базисом, нельзя. Формально можно определить только двигательные единицы, которые человек способен воспроизвести на своем лице, напрягая определенные мышцы. Например, поднятие бровей, открытие рта или поднятие верхней губы. Пол Экман детально описал, как выглядит на лице каждая из 90 таких единиц и как выглядят разные степени их выраженности: где появляются морщины, если человек поднимает брови, где они углубляются и насколько.

Такой метод требует наличия опорного, «нейтрального» изображения лица, с которым сравниваются разные эмоции, поэтому при составлении своего датасета команда Neurobotics добавляла к шести эмоциям Экмана нейтральное выражение лица для каждого добровольца. Для построения карты признаков рассчитываются значения 20 двигательных единиц. Признаки строятся по локальным дескрипторам, которые описывают окрестности контрольных точек и геометрические расстояния между ними.

Для разных признаков подходят разные методы их расчета. Например, морщины удобно считать с помощью фильтров. Маленькие морщины в уголках рта считаются по степени разброса яркости пикселей: применяется сглаживающий фильтр Гаусса, и полученное изображение сравнивается с исходным. Если морщины были, при сглаживании они пропадут и разность изображений будет больше. Если морщин не было, гладкая кожа при сглаживании останется гладкой. Для морщин, которые имеют достаточно сильную выраженность и известную ориентацию (например, морщины на лбу или на крыльях носа), хорошо подходит фильтр Габора. Этот фильтр представляет собой двумерную синусоиду, сглаженную гауссовым окном, и хорошо «реагирует» на свойственные крупным морщинам перепады яркости в определенном направлении.

Так схематически выглядит алгоритм автоматического распознавания эмоций

COM_SPPAGEBUILDER_NO_ITEMS_FOUND