Як настрій?

За останні 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