Путь к бесконтактному детектору лжи, или Как устроить себе хакатон на максималках

    image


    Когда-то Стив Джобс и Стив Возняк закрылись в гараже и выкатили первый Mac. Было бы классно, если всегда можно было закрыть программистов в гараже и получить MVP с большим потенциалом. Однако, если добавить к программистам пару людей, готовых оценивать пользовательский опыт и искать что-то инновационное, то шансы на успех растут.


    У нашей команды из 5 человек появилась определённая идея, ради которой мы решили слегка захватить мир похакатонить.


    Описание MVP


    Приложение для HR-менеджеров, позволяющее определять психотип соискателя и паттерны поведения.


    Обязательные составляющие:


    1. База данных вопросов, видов реакций и система приведения этих вещей к психотипу
    2. Определение эмоций человека, основанное на проявлениях AU — определенных движениях мышц лица.
    3. Бесконтактное определение пульса
    4. Определение направления взгляда
    5. Определение частоты моргания
    6. Система агрегирования вышеописанных извлекаемых данных в график стресса и другие полезные метаданные.

    MVP для нас — это островок безопасности между самой идеей и большим проектом "Anne", к которому мы держим путь.


    Как всё было


    Чтобы при разработке не было отвлекающих факторов, было решено снимать квартиру в ближайшем городе-курорте с обеспечением питания. Приехав туда в воскресенье и устроив свои рабочие места, мы сразу сели за обсуждение. В первую же ночь были определены кирпичики, которые однозначно должны быть в итоговом MVP. И пока ребята шлифовали идею, ездили в город за консультациями к HR-менеджерам, разработчики(я в их числе) уже во всю готовили фундамент.


    Техническая часть


    Определение эмоций решено было делать строго через FACS, поскольку данный способ имеет достаточную научную обоснованность по сравнению с, например, таким грубым подходом. Соответственно, задача разбилась на


    1. Обучение сети, предсказывающей 68 лэндмарков лица
    2. Нормализация / фильтрация изображения лица
    3. Алгоритм, детектирующий лицевые движения в динамике

    Обучение, к слову, производилось на Radeon RX580 с помощью PlaidML, про который я уже рассказывал в своей предыдущей статье. Большое спасибо здесь нужно сказать библиотеке imgaug, которая позволяет применять аффинные преобразования одновременно к изображениям и точкам на нём (в нашем случае, к лэндмаркам).


    Немного аугментированных изображений:


    image


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


    Первые наработки начались еще летом и существовали грязным скриптом на Python'e:


    image


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


    Определение пульса по видеопотоку основывалось на идее поглощения зеленой составляющей света частицами крови и дополнилось алгоритмами трекинга и извлечения областей интереса (кожного покрова).


    Жутковатая маска выходит, конечно:


    image


    На самом деле, создание вышеописанных кирпичиков свелось к реализации State Of The Art алгоритмов с доработками, позволяющими повысить точность в нашем частном случае. Благо, что существует arxiv.org.


    Сложности появились при создании логики нормализации изображения лица и алгоритмов оценки полученных данных. Например, при распознавании лиц активно используются Active Appearance Model — лицо по найденным точкам натягивается на общую текстуру лица. Но нам важно взаимное расположение точек! Как вариант — фильтровать слишком повернутые лица, либо же натягивать на текстуру только по "якорям", ключевым точкам, которые не отображают движение мышц(например, точка на переносице и края лица). Данная проблема сейчас является одной основной и не позволяет получать достоверные данные, если лицо слишком повернуто(угол поворота мы тоже умеем считать!). Допустимые рамки на сегодня — +-20° по обеим осям. Иначе, лицо просто не обрабатывается.


    Конечно, есть и другие проблемы:


    • Определение лэндмарков, если человек в очках
    • Извлечение базовой линии, если человек кривляется
    • Определение пульса при сильно мерцающем освещении

    Ах, да, а что такое "Базовая линия поведения"? Фундаментальное понятие при обработке эмоций методами FACS. Алгоритм извлечения базовой линии, наверное, является одним из важнейших ноу-хау по итогам нашего хакатона.


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


    Итог — 30-40% на Intel i5 при 15-20 fps. Понятно, что есть определенный запас, который будет исчезать по мере добавления дополнительных модулей.


    В планах определять:


    • Пересыхание в горле
    • Изменение цвета лица
    • Частоту дыхания
    • Интенсивность движений тела
    • Паттерны поз человека
    • Дрожь в голосе

    А что мы умеем еще?


    Я, как любитель компьютерного зрения и ML, рассказал вам немного про использованные алгоритмы в нашем ПО. Но в силу своей незавершенности, для данного приложения вышеописанные возможности являются, скорее, приятным дополнением. Важнейшая же часть — это разработанная система определения психотипа человека. В чем суть? К сожалению, этим занимались мои коллеги(друзья!) и разъяснить, что и откуда, я не смогу. Но для минимального понимания можно рассмотреть порядок работы с полученным ПО:


    HR задает качества, которые особенно необходимы для рассматриваемой вакансии:


    image


    HR проводит собеседование, задавая часть вопросов подготовленной базы данных (во время собеседования HR имеет перед собой дополнительную информацию о проявляемых эмоциях и уровне стресса)


    Во время или после собеседования HR заполняет ответы на вопросы и проявленные паттерны поведения:


    image


    Через разработанные матрицы ПО строит инфографику, отображающую совпадение заданных и определенных качеств:


    image


    После собеседования имеется запись, позволяющая в любое время вернуться к собеседованию и оценить тот или иной момент


    Итого


    image


    14 дней x 12 часов + 3 разработчика + 2 специалиста в области определения лжи = готовый MVP. Погружение было максимальным — вплоть до того, что в обеденное время мы смотрели сериал Обмани меня — очень советую.


    Чтобы не быть голословным, прикладываю пример того, как работает приложение сейчас:


    А также промо-ролик большого решения "Anne", к которому мы шагаем.


    image

    Поделиться публикацией
    Комментарии 25
      +3
      Если хотите чтобы взлетело, упростите все в 100 раз и дайте действительно интересные ответы. Никому не нужно ни направление взгляда, ни коррупция, ни даже наркотики. Ваше ПО должно давать 1-2 четких ответа-рекомендации на уровне да-нет. Как детектор лжи. И тогда появится шанс выбраться из этой хрущевки.
        +1
        1-2 четких ответа-рекомендации на уровне да-нет. Как детектор лжи.

        Угу, в кино! Реальные полиграфы это устройства регистрации не более, а определением лжи занимается оператор, которому в большинстве случаев прибор не очень и нужен, он больше для протокола…
            +1
            Мало того что фуфлометр, так еще и ошибки недопсихолога добавить?
              0
              Эхх, если бы просто прибавляли, так нет, умножают или в степень возводят.
                0
                Степень не компетентности оператора и\или заказчика исследования…
                … и думаю что попытка снизить порок вхождения не самая лучшая идея
          +1
          Посмотрите на софт от группы из MIT, если еще не видели.
            0

            На рынке уже несколько лет несколько компаний, включая русских http://nostradamus.ai/

              0
              интересно было бы иметь мониторинг усталости оператора ПК
                –2
                Никогда не пойду на собеседование к ИИ, это унизительно, лучше буду фрилансить за жалкие центы, чем признать верховенство ИИ над живым человеком.
                  0
                  Танк превосходит тело человека в живучести, мощности, вооруженности, почему бы это не признать?

                  Более гиковские пример компьютер, калькулятор, они ведь гораздо быстрее считают чем человек.
                    0
                    Вы таки не понимаете. ИИ будет решать — жить вам интересно, или на заправке телом зарабатывать. И если решение человека вы можете обжаловать, обратившись например к другому человеку — решение ИИ будет выполнятся автоматически — дернул бровью не вовремя — и теперь зарплата у вас в полтора раза меньше. А самое главное — при общении с человеком вы сразу получаете обратную связь, если конечно не совсем бревно, а в случае ИИ вам даже не объяснят почему вы Г.
                      +1
                      Ну такой мрачный сценарий… такой ии не станет спрашивать наше мнение о собственном превосходстве над людьми.
                        0
                        Конкуренция между системами приведет к победе ИИ которые будт больше похожи в общении на людей.
                          0
                          Знаешь, смотря где. На низовке, при поиске кассира для супермаркета — да, будет рулить ИИ, а если ты захочешь управляющим в банк — тут только люди будут смотреть. В итоге мир будет разделен — ИИ-роботы будут управлять человеко-роботами, а Люди — Людьми.
                      +1
                      лучше буду фрилансить за жалкие центы


                      Интересно, а что вы скажете, когда выяснится, что на фрилансе вы выполняли заказы ИИ?
                      0
                      Дмитрий, сам продукт и его идея очень нужны рынку сегодня. Приведу в качестве примера суть одного англоязычного исследования. Кандидаты на работу проходили собеседование при трудоустройстве, но после его окончания им сообщали, что они участвовали в эксперименте и оплачивали-компенсировали это самое участие. Одновременно с этим предлагали продолжить эксперимент и получить еще одно вознаграждение. Вторая часть эксперимента предполагала указание обследуемыми участков интервью где они лгали и раскрытие сути этой лжи. Оказалось, что 81 процент обследуемых лгали во время интервью. Лгали по направлениям — преувеличение своих профессиональных компетенций и умолчание негативных фактов биографии, особенностей личности. Вывод — большая часть кандидатов (почти все) лгут во время стандартных кадровых собеседований и это естественно как показал эксперимент. Ваш продукт должен отбраковать всех как лгущих, а кто тогда будет работать?)
                      Законодателями мод в англоязычной периодике (научной) давно произошел отход от всего «невербального» как тупиковой ветви в диагностике лжи. Основной вектор другой.
                        0
                        Детектор лжи не работает. Этот прибор работает как нечто региструющее нечто. У оператора нет даже научной базы что бы хоть как то показатели чего то там связать хоть во что-то.
                          0
                          Почему не работает, работает, просто народное понимание «детектора лжи» бесконечно далеко от реальных кейсов использования полиграфа…
                            0
                            Есть научное понимание принципов работы детектора лжи. «Реальный кейс» -это регистрация «чего то там». Как это связано с ложью или иными эмоциями триггерящими в мозгу — нет исследований. Если человека спросить «воровал ли он на работе», а он не воровал, но его ложно обвинили в этом (привет любым работникам сферы торговли и общепита), то будут некие реакции. Как по этим реакциям понять ложь или правда — ни кто не знает.
                            Оператор фактически менталист и прибор лишь усиливает его собственные наблюдения. В случае при приеме на работу, когда вот абсолютно нет никаких последствий за результат (вакансий полно и это место с проверкой самим фактом говорит зачастую только о не совсем адекватах в в руководстве компании) — можно врать без напряга. Особенно когда спрашивают некую хрень вроде «вы изменяли своей жене?» (интересно как свингеры отвечают и что регистрирует прибор) — всегда отвечаю «регулярно» или «да». вообще всегда отвечайте «да».
                              0
                              Есть научное понимание принципов работы детектора лжи.

                              Где оно есть? Если сама формулировка «детектор лжи» уже не корректна.
                              Вы совершенно правильно описываете проблему «не правильного вопроса», но подбирая сотрудников на склад такие не задают именно потому, что вопрос не о чём.
                              Разговор строится иначе, и может вообще не содержать вопросов, да и разговора может не быть, разные есть варианты, но в итоге на работу будут приняты люди, для которых брать то что плохо лежит ниже собственного достоинства. Это если в общих чертах…
                          0
                          Уже кучу раз доказывали, что полиграф можно обмануть. Также и обратное: человек может не врать, но детектор и оператор скажут, что человек врал. А всё по причине того, что одно и тоже состояние может быть как и во время лжи, так и просто от волнения, неустойчивого эмоционального состояния.
                          0
                          Так это же тест для ловли репликантов.
                            0
                            So, guys… Хактон у вас получился суперский, результат впечатлят, а вот практическая применимость оного вызывает вопросы, тут слишком много важных деталей, ну и чисто теоретически, мимика как таковая, плохой канал утечки, ибо люди сознательно или нет но используют её и весьма эффективно. Она полезна для машинных интерфейсов, что бы понимать контекст общения, на уровне человека, со всеми его погрешностями…
                            … если говорить про не вербальные признаки, то посмотрите корреляцию межу ЭКГ и пульсом из видео потока в динамике, узнаете много чего интересного, кроме того невербалка не работает в лоб
                              0
                              Да и насчет того сериала. Эмоции не коррелируют с мимикой. Как и ложь. Это не врожденная схема, мимика тренируется социумом. Так что сериал — ненаучная фантастика.

                              Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                              Самое читаемое