Мой круг corporate blog
Machine learning
Start-up development
Personnel Management
IT career
August 27

Компьютерное зрение видит эмоции, пульс, дыхание и ложь — но как построить на этом стартап. Разговор с Neurodata Lab



Наши отношения с компьютерным зрением не были такими шумными, пока оно не научилось творить чудеса с человеческими лицами. Алгоритмы подменяют людей на фото и видео, меняют возраст, расу и пол. Это и главное интернет-развлечение последних лет, и источник тревог. Сегодня приложения штурмуют чарты, завтра протестующие пилят столбы с камерами, распознающими лица. И, кажется, мы только в самом начале пути. Того, что компьютер может считать с нашего лица, будет все больше и больше.

В начале месяца мы посетили офис Neurodata Lab. Основное направление для компании — распознавание человеческих эмоций. Мы постарались выяснить как это делается и зачем нужно.

Neurodata Lab получила на «Моём круге» среднюю оценку 4,6 и среднюю рекомендацию 95% от своих сотрудников, которые выше всего оценили такие критерии, как профессиональный рост, интересные задачи, хорошие отношения с коллегами и то, что компания делает мир лучше.



В 2016 году десять актеров — пять мужчин и пять женщин — приняли участие в необычных съемках. Они выходили на пустую площадку, одетые в черные обтягивающие костюмы, и на камеры, расположенные в разных углах комнаты, на фоне зеленой стены изображали «ничего» — просто свое нейтральное состояние.

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



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

Актеры, закончив работу, описывали, где и какие эмоции они в действительности испытывали во время игры. Затем видеоматериалы посмотрел еще 21 человек, и в каждом из видео они отмечали, какую эмоцию, как им кажется, испытывает актер. В какой момент эта эмоция начинается, и когда заканчивается.



Так начиналась работа над первым русскоязычным мультимодальным датасетом для распознавания эмоций — RAMAS.

Но полученный материал подходил только для научных исследований и экспериментов — не для обучения алгоритмов промышленного масштаба.

— (Ольга Перепелкина) Нам нужно было собрать гигантский датасет. Не 7, а 107 и больше часов. Мы построили веб-платформу Emotion Miner, выгрузили туда кучу видео, которые есть в открытом доступе в интернете, привели туда десятки тысяч людей со всего мира, и они начали размечать данные. Таким образом мы разметили 140 часов видео по 20-ти шкалам (не только эмоции, но и разные когнитивные и социальные характеристики), и собрали самый большой в мире эмоциональный датасет.

— А как вам удалось найти столько людей для разметки?
— (О.П.) Все просто — мы платили им деньги за работу. Проводили рекламные акции, вложили небольшой бюджет в маркетинг. В принципе, это было не очень сложно. Сейчас на платформе зарегистрированы почти 70 тысяч человек. Но в действительности размечали датасет около двух тысяч человек.



Продукты


Стартап Neurodata Lab создали предприниматели Георгий Плиев и Максим Рябов. Они финансировали исследования не ради научного любопытства, а чтобы найти для технологии коммерческое применение. Сейчас Affective Computing или «эмоциональные вычисления» — не самая популярная сфера на рынке нейросетей и компьютерного зрения. Есть высокая конкуренция в сфере распознавания лиц. Развлекательные приложения попадают в центр внимания одно за другим. А системы, которые работают с эмоциями, не выходят из статуса «перспективных» уже несколько лет. Однако по прогнозам Gartner и других исследований ей прогнозируют бурный рост

Neurodata Lab около трех лет занималась исследованиями, собирала данные и разрабатывала алгоритмы. Сейчас результаты исследований они используют в коммерческих продуктах. Например, Neurodata Lab разработала эмоциональный ИИ для роботов компании Promobot. Робот использовал систему распознавания эмоций, чтобы правильно реагировать на реплики людей, которые к нему обращаются. Демоверсию показывали на выставке CES в этом году.

Алгоритм используется в колл-центрах для мониторинга звонков и оценки работы сотрудников. Сейчас все это делается вручную — менеджерам приходится выборочно слушать записи звонков и проверять, не нагрубил ли сотрудник клиенту, держался ли в рамках приличия. Система может делать это автоматически и в реальном времени. Попутно оценивается и эмоциональный настрой клиента — остался он доволен обращением или нет. Пилот похожего продукта Neurodata Lab запустила в Росбанке. Алгоритм анализирует звонки, чтобы измерить уровень удовлетворенности клиентов.

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



Принцип работы


Человек учится определять эмоции неосознанно — с самого детства он начинает ассоциировать определенные паттерны поведения с эмоциями, которые испытывают люди вокруг. Уже научившись этому, он может проанализировать, по каким признакам это делает. Самое очевидное — по тому, какое выражение принимают рот и глаза. Но на лице множество мимических мышц, которые создают невероятное количество выразительных нюансов. Их мы воспринимаем автоматически, хотя можем осознанно зацепиться взглядом за определенные детали.

Нейросеть также анализирует сотни часов видео, размеченных людьми. И признаки, с помощью которых система классифицирует эмоции, не всегда оказываются очевидными.

— (Андрей Беляев) Есть общие паттерны для некоторых классов. Например, для классов «злость» и «удивление» характерна сильная экспрессия на лице — поднятые брови, округленные глаза, дым из ушей. Сетка, безусловно, реагирует на них, но не только. Например, при маленьких бровях, которые выглядят как поднятые, она спокойно определит правильный класс, потому что реагирует еще и на динамику изменений. Один из интересных классов в этом плане «грусть». Чаще всего, когда человек грустит, его лицо не меняется довольно длительное время. Сетка замечает нулевую динамику в экспрессии и делает предположение, что это либо «нейтраль», либо «грусть», и уже потом уточняет остальные признаки и делает вывод о правильном классе.

— А что насчет звука? Определенные частоты, диапазоны, тона?
— (А.Б.) Со звуком сложнее. У каждого человека своя стандартная громкость, к силе звука не привяжешься. Кто-то может говорить тихо и ровно, но на самом деле он ужасно злится. И даже если мы визуализируем звук и поймем, на что система обращает внимание, то не сможем это также хорошо объяснить, как с лицом. У лица есть понятные точки: брови, глаза, уши и прочее. А у звука нет. Звук в сетку подается в виде спектрограммы, и какие конкретно ее кусочки за что и в какой момент отвечают — понять гораздо сложнее. Поэтому стандартного ответа, на что обращает внимание сетка, когда работает со звуком, нет.

— Как по записи можно определить пульс?
— (О.П.) Отслеживаются микроизменения цвета кожи. Когда бьется сердце, кровь насыщается кислородом, меняется оксигенация крови и из-за этого изменяется цвет кожи. Глазом этого различить не получится, а при помощи алгоритма можно.

— Но это же очень сильно зависит от качества видео.
— (О.П.) Мы довольно долго пилим этот алгоритм и умеем работать не только с крутой камерой, но и с обычной вебкой. Умеем работать, когда экран мерцает. Например, когда человек смотрит фильм, и у него постоянно меняется интенсивность освещения. Умеем работать с условиями, когда человек двигается и разговаривает.

Пульс — это периодический сигнал, и он четко отслеживается, а освещение от фильма меняется не периодично. Поэтому можно отделить полезный сигнал от шума. Мы сравнивали эту технологию даже с фитнес-трекерами. Наш алгоритм справляется не хуже — и даже лучше, чем некоторые из них.

— Система может видеть то, что не видит человек, но человек все равно распознает эмоции лучше. Почему?
— (О.П.) У человека получается лучше, потому что он учитывает контекстуальную информацию. Но для этого и нужна мультимодальная система, которая повышает точность за счет анализа сразу и лица, и голоса, жестов, пульса, дыхания, семантического анализа текста.

Так работает человеческое восприятие. Ты видишь человека со спины, смотришь, как он сидит, и думаешь, «кажется, он грустненький». И наша цель сделать алгоритм, который мог бы воспринимать эмоции как человек — вообще в любых условиях, по всем обрывкам информации.

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

— Если я испытываю эмоцию, но пытаюсь ее скрыть, система это поймет?
— (О.П.) Возможно.



Как идет разработка


Neurodata Lab — небольшая компания, которая до недавнего времени существовала только как лаборатория. В ней есть научный отдел, команда Data Science и отдел разработки, который упаковывает новые разработки и открытия в продукты. Каждый отдел — это 5-6 человек. Всего в команде около 30 сотрудников.

Ученые-исследователи


В научном отделе работают психологи, физиологи и биологи. В штате всего четыре человека и три стажера, но они построили целую международную сеть коллабораций. Например, в России есть проекты совместно с МГУ, ВШЭ и РАНХиГС. За рубежом — с университетом Глазго, Парижским технологическим университетом, университетом Женевы, инженерной лабораторией в Генуе, которая занимается анализом движений.

Ученые, которые занимаются «эмоциональными вычислениями» — это целое сообщество. Они регулярно собираются на совместные воркшопы в разных университетах мира. Раз в два года проходит главная конференция, посвященная исключительно эмоциональным технологиям. В этом году Neurodata Lab организует на этой конференции свой отдельный воркшоп.



— Мне интересно, а в чем заключается ежедневная работа научного сотрудника?
— (О.П.) Во-первых, они читают статьи. Например, мы захотели научиться распознавать ложь, а не только эмоции, и нужно разобраться — а что же такое ложь, как работает детектор лжи, что уже сделано в этой сфере, каковы проблемы классического полиграфа, как его можно обмануть, какие алгоритмы самые классные, как устроена человеческая психика, какие есть психологические особенности, возникающие, когда человек врет, как работает физиология, почему (и действительно ли) у человека холодеет нос и краснеют уши, когда он обманывает, и так далее.

Потом мы проводим огромное количество экспериментов. Для того, чтобы создать систему, которая распознает пульс и частоту дыхания по видео, нужно было собрать много данных. К нам постоянно приходят испытуемые, у нас есть оборудование и всякие штуки, которые контактным образом измеряют пульс человека. Измеряем ЭКГ, фотоплетизмографию, кожно-гальваническую реакцию. У нас были прикольные эксперименты, когда мы хотели понять, как двигается кровоток по лицу, и тогда мы наклеивали электроды прямо на лицо.



Наконец, мы показываем людям разные видосики. Пытаемся их напугать или наоборот — развеселить. Научные сотрудники анализируют данные, считают статистику, на основе этих данных пишут статьи и патенты. Приходят потом в технический отдел к Андрею и говорят: «Мы вычитали классную штуку, провели эксперимент, можно попробовать сделать алгоритм, который будет работать вот так». Или Андрей приходит к нам и говорит: «Мы хотим детектировать падения, нужно придумать как собрать данные». И научный отдел садится и думает, как это можно сделать просто и быстро.

— Работа мечты.
— (А.Б.) Одни думают — другие делают.



Дата сайентисты и разработчики


Отдел Data Science работает параллельно с разработкой продуктов. Датасаентисты обучают нейросети на Torch, когда есть пространство для маневра в исследованиях, и на MXnet, когда нужно сделать быстро работающее решение. После подтверждения всех гипотез о применимости нейросетей ребята переносят их на TensorRT для увеличения скорости работы и отдают команде разработки для внедрения в продакшн.

В Neurodata Lab создали свой облачный сервис, к которому могут получать доступ другие разработчики — для научных исследований или коммерческих проектов.

— (А.Б.) Программное ядро, которое распределяет задачи между нейросетями, написано на Python. Нам нужно было писать его быстро, но получилось довольно неплохо. Работает с докерами, общается через RabbitMQ, бегает в Postgres, а сверху висит gRPC прослойка, которая позволяет создавать безопасное соединение с внешним миром и дает доступ к нашим технологиям другим программистам и исследователям.

Веб написан на Symphony. API реализовано с помощью gRPC. Это крутая гугловская штука, которая позволяет сделать защищенный канал и обмениваться ключами с системой — чтобы она давала доступ только к определенным внутренним функциям. Например, можно дать ключ только к инструментам, которые могут детектировать лица и распознавать эмоции.

Я сейчас прорабатываю идею — хочу собрать свой небольшой дата-центр, где будет крутиться инференс. И он будет основан на Jetson Nano. Это такой маленький одноплатный компьютер за десять тысяч рублей. Как Raspberry Pi, только с видеокартой. С процессором, оперативкой и всем прочим он стоит в 6 раз дешевле, чем 1080Ti без учета остальных комплектующих компьютера, но и работает примерно в 6 раз медленнее.

— А что это даст?
— (А.Б.) Во-первых, дешевле, а работать будет примерно также. Во-вторых, перестанет так сильно вредить окружающей среде. В-третьих — им не нужно много электроэнергии. Шесть Jetson Nano, которые вместе по мощности почти как 1080 Ti, тратят в шесть раз меньше энергии, плюс занимают гораздо меньше места.

— Почему до них еще не добрались майнеры?
— (А.Б.) Майнерам нужно, чтобы у них одна видеокарта умела делать очень много всего сразу. А для нас это не так важно. У нас легковесные задачи, которые нужно быстро сделать, используя маленькие мощности, и вернуть результат. Когда у тебя есть шесть таких задач, их разумнее распределить на шесть маленьких карточек, чем все одновременно засунуть в одну большую и мощную, где эти задачи будут пихаться локтями.



Как идет набор команды


Весной в команду пришли продакт-менеджеры, и теперь стартапу нужны разработчики. Бэкендеры, которые будут поддерживать веб на PHP и Symphony, либо убедят переехать, например, на Python или Go. Фронтендер, который будет делать страницы для новых веб-сервисов, расширять функционал и улучшать юзабилити уже существующих. Разработчик ядра, который, помимо знания Python на высоком уровне, понимает Data Science и специфику работы с железом, тестировщики, С++ разработчики для работы с SDK и многие другие.



— Как у вас проходит найм?
— (А.Б.) Для дата сайентистов я скидываю не очень сложную, но довольно показательную задачу, по которой можно судить о навыке думать и программировать. Я сам делаю ее за сорок минут. Джуниор справляется за 4-6 часов. После этого мы созваниваемся и обсуждаем технические моменты. Я ему предлагаю побрейнштормить над новой задачей. Мы вместе строим гипотезы, вместе проверяем. Я просто смотрю, как человек себя чувствует в незнакомой обстановке в плане задач. Понимает ли он, как происходит процесс разработки моделей, с чем там можно столкнуться и чего не стоит бояться.

После этих этапов остается где-то 10% людей. На джунов обычно откликается человек 50. Пятерых оставшихся мы зовем на финальное собеседование к нам в офис, и просто общаемся с почти полной готовностью взять в команду.

— А с разработчиками?
— (А.Б.) А вот с разработчиками у нас все немного хуже. Мы даем им такое тестовое: нужно развернуть маленький сервис на любом фреймворке, какой нравится, внутри докера. Этот сервис должен общаться с другими докерами, в которых лежит Postgres и RabbitMQ. Есть задача читать в рэббите канал, принимать оттуда задачу по наполнению БД и записывать все в базу данных. Казалось бы, задача эта очень простая, ее делать где-то час. Но все рушится, когда мы говорим, что будем передавать для записи в базу данных картинки.

Постоянно получается так, что эту задачу все решают абсолютно по-разному. И у каждого человека почти всегда есть какая-то новая идея, которую я до этого вообще даже не видел и не представлял. Но при этом все чего-то не досматривают. На тестовом отсекается примерно половина кандидатов. Потом мы тоже зовем разработчиков в офис. Начинаем разговаривать на общие темы, узнавать, что дальше, что хочется и прочее. И после этого, к сожалению, у нас почти 0% выхлопа.

— По каким критериям вы понимаете, что человеку не хватает софт скиллов или он не сможет работать в стартапе?
— (А.Б.) Простыми разговорами из разряда: «Слушай, а представь, что...». Он начинает развивать мысль, и ты случайно добавляешь, что у нас горят сроки, и осталось две недели на проект, который надо делать два месяца. Некоторые говорят: «Такого нельзя допускать». Окей. Другие говорят: «Это очень плохо, но мы выжмем максимум. Всего, конечно же, не сделаем. Может половину, но это уже лучше, чем четверть. И вообще все будет классно, потому что самое ужасное — это незаконченный проект». Вот такие люди — сразу да. Дело в отношении к задаче.



Этические нормы и моральные дилеммы


Распознавание лиц, эмоциональные вычисления — все это исследования и технологии, основанные на данных. Вопросы из разряда, «кому должны принадлежать данные», «кто и как должен контролировать их сбор» — современная пограничная территория.

Один из компромиссов, на который все сейчас более менее согласны — обезличенный сбор. Например, в соответствии с европейским законом о защите персональных данных GDPR на улице можно повесить камеру и собирать обобщенные данные об эмоциях людей в целом. Но анализировать эмоции конкретного человека без его согласия нельзя.

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

И это порождает новые дилеммы. Если прогресс не остановить, то что заставляет нас вставлять ему палки в колеса?

— (О.П.) Конечно, есть какая-то грань. Технология должна принести пользу человечеству. И мы не можем игнорировать этические вопросы. Но что такое этические нормы? Откуда они берутся? Есть вещи, которые связаны с ригидностью человеческого мышления: «мы привыкли думать вот так, мы привыкли, что это нельзя, что это плохо». Любые инновации очень часто воспринимаются обществом в штыки.

Когда появились автомобили, люди боялись и говорили: «О Боже, что это за бешеные повозки, мы все умрём, верните лошадей!» Но прошло время, общество к этому привыкло и теперь не представляет, как без автомобилей жить. То же самое с трансгуманизмом и трансформацией человеческого тела. «Эй, как же так, неужели мы когда-нибудь согласимся модифицировать наших детей, выращивать им третьи руки, какой кошмар, какой ужас, этические комиссии должны это запретить». Пройдет 50 лет, и у нас у всех будет по 5-6 рук и две головы, и будем мы с помощью нейроинтерфейсов считывать мысли людей вокруг. Конечно, общество поспорит и попытается защитить вид человеческий от его изменения. Но этика в какой-то момент отступит от технологии. Так всегда случалось в истории, так и будет и в будущем.

+24
4.7k 53
Support the author
Comments 26