TechFusion.ruКейсыНайти свою Анджелину: как работает распознавание лиц в «Двойниках» Badoo

Найти свою Анджелину: как работает распознавание лиц в «Двойниках» Badoo

Lookalike

У Дэвида Бекхэма нет двойников, а Анджелина Джоли хоть и остается идеалом для многих поклонников, но привлекает меньше внимания, чем Ким Кардашян, Бейонсе или Селена Гомес  

Сервис знакомств и высокие технологии? Одно без другого сегодня не работает. Необходимо не только обеспечить пользователю возможность комфортного общения с интересными ему людьми, но и сделать так, чтобы сетевое знакомство не оказалось разочаровывающим или даже опасным.

Badoo

Дмитрий Поздняков

Продолжаем рассказывать о применении технологий распознавания образов в современном мире. Об особенностях использования детектирования и сопоставления лиц в сетевом дейтинге в интервью TechFusion.ru рассказал руководитель направления развития сообщества и локализации Badoo Дмитрий Поздняков

Летом этого года сервис знакомств Badoo запустил новую фичу  — «Двойники» (в англоязычных странах — Lookalike), позволяющую находить похожих людей по фото. Разработка вызвала сильный резонанс: СМИ «тестировали» функцию на звездах, пользователи соцсетей — на самих себе. Попутно внутри Badoo новую разработку использовали для борьбы с фейковыми аккаунтами.

— «Двойники» для обычного пользователя — очередная фишка. Но распознавание лиц — это не так уж просто. Что у вашего сервиса «под капотом»?

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

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

— Примерно как тысячи точек в Apple FaceID?

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

Bad

Для того, чтобы система работала точно, ее надо натренировать. Процесс этих тренировок весьма скрупулезен. Нельзя просто пойти и взять какую-нибудь опенсорсную распознавалку и построить на ее основе такой сервис. К нам вообще часто приходят какие-нибудь конторы и говорят: «Мы такое сделали, возьмите наше решение и дайте нам миллион долларов». Я такие вещи видел — сумасшедшие и смешные. Мы спрашиваем: а у вас какая скорость? А сколько изображений вы можете обрабатывать в секунду? А под какой нагрузкой держитесь? Что вам нужно для того, чтобы эти показатели улучшить? На каком вы этапе? Сколько времени разрабатываете? После этого люди понимают, что у них ничего нет. На одной машине все работает, но если их поставить 300, то те даже общаться между собой не смогут. А чтобы обрабатывать миллиард фотографий, как у нас…

— Действительно — миллиард фото?

— Действительно, мы обсчитали миллиард фотографий, они у нас в базе, и по этому миллиарду нужно «бегать». Пользователь загружает фотографию — и надо «пробежаться» по всей базе, сравнить фото, причем не за 3 минуты и даже не за минуту. Речь идет о секундах.

— Сколько секунд сейчас занимает сравнение лиц?

— Сам поиск по базе — меньше секунды, 200-400 миллисекунд, но большую часть времени занимает нахождение лица на фото, а затем обсчет его признаков — выстраивание цифрового портрета — это 300-500 миллисекунд. Да, медленно, но путем оптимизации работы с базой данных мы  ускоримся.

— С какими сложностями распознавания вы столкнулись? 

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

Кстати, оказалось, что именно у Бекхэма такая внешность, что невозможно найти реального двойника. То есть, загружаешь его фото, а в результате показывается что-то, ну, совсем не то. Не работает! Как так? Почему? Это был такой, знаете, не то чтобы баг, но серьезный затык, который было непросто переступить. Перед нами стоял вопрос: оставить выдачу по Бекхэму такой, какая есть, либо вообще убрать, чтобы не было. В итоге оставили, как есть. Но мне часто приходиться объяснять людям, почему он ни на кого не похож. Вот Бейонсе — похожа. Том Круз — тоже похож. Может у нас просто нет пользователей с внешностью Бекхэма… Либо он слишком уникальный — все возможно.

— А какова вероятность «попадания» в среднем?

— Вот вы загружаете фотографию, а мы с определенной долей уверенности вам сообщаем, что этот человек похож на искомого на 95%, а этот — на 80%. Результаты в выдаче идут на понижение. Результативность  распознавания зависит от многих факторов. Например, насколько качественные фотографии используются. Сейчас мы работаем с фото 500 х 500 пикселей. Если взять, например, 920 х 920, сопоставление будет работать медленно, а эффективность будет примерно такая же. Если взять фото 300 х 300, то работать сервис будет быстрее, но искать двойников — хуже. Пока мы нашли оптимальный размер для работы. Также понятно, что если качество хорошее — результат лучше, вероятность «попасть» в двойника выше. Если много шума — к примеру, фото сделано ночью — то результат, естественно, будет хуже.

Еще вопрос в том, кого мы ищем. Мы можем искать похожего человека, а можем того самого человека. Так мы использовали нашу систему для поисков фейковых аккаунтов, которые надо вычищать. Если кто-то залил на аватарку Анджелину Джоли, то, естественно, при поиске двойников она будет в первую очередь находиться как Анджелина Джоли, с вероятностью 99%. Для «лукэлайков» тоже нужна высокая вероятность — скажем, 95%, но на фото будет не сама Анджелина Джоли, а просто очень похожая на нее девушка.

Я занимаюсь фото-модерацией уже много лет, и фейковые фотографии — это основная головная боль. Всегда их заливают. А мы ведь не можем проверять фотографии на 100% — точнее, мы проверяем все фото, но не можем быть уверенными, что кто-то не зальет фото малоизвестной локальной звезды, например. Сверка идет по базовым вещам: мужчина/женщина, запрещенные изображения… У нас комбинированная система проверки — фото проверяются сначала нейронной сетью, а затем людьми. Модератор не всегда знает, что на фото какая-нибудь модель или актриса — женщина и женщина, красивая и красивая… Вот если модератор нажмет кнопку «подозреваю, что это это селебрити», тогда фото пойдет на дополнительную модерацию, его прогонят по всей базе данных.

— Для чего вы эту систему изначально делали — чтобы искать фейки или чтобы развлечь пользователей?

— Изначально это вообще воспринималось просто как прикол. Одна из компаний-партнеров пришла и рассказала, что так можно сделать, и я сказал — давайте сделаем! На юбилее компании я презентовал идею, и руководство меня поддержало. Ну а потом мы поняли, что очень непросто заставить такую штуковину быстро работать с нужным нам объемом фотографий. Пока мы тестировали систему, все было крайне медленно, все постоянно «падало». Хорошо, если одну фотографию загружаешь — а если у тебя 500 пользователей одновременно заливают фотографии?  А если 4 миллиона пользователей? Конечно, про 4 миллиона одновременно — преувеличение. Но 500, 600, тысяча запросов в секунду может быть вполне. Представляете, сколько серверов должно принимать эту нагрузку?

— А сколько их у вас?

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

— То есть, в итоге вам не подошла внешняя разработка и вы построили свою систему?  

— Скажем так: это было партнерство, благодаря которому родилось кастомное решение. Мы работали над ним почти год.

— На что ушло больше всего времени?

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

— Расскажите о базе фото — что входит в этот самый миллиард фотографий?

—  Это фотографии наших пользователей, соответствующие определенным требованиям. Фотография должна быть портретная с изображением одного человека того же пола, что и профиль. Для этого есть раздел «Я». Есть и другие разделы, где могут быть фото с друзьями, с вечеринок и прочие. Но их мы не используем. Наш миллиард — это фотографии, которые могут быть использованы как аватар, заглавная фотография профиля. Это фото активных пользователей, «живые» фото, вот-вот сделанные. И они добавляются каждый день. Что-то добавляется, что-то удаляется. Пересчет индекса идет непрерывно.

Badoo

— То есть, пока я пользуюсь сервисом, вы меня показываете в «Двойниках», но если я удалилась — то мое фото нигде не всплывет случайно?

— Да. И все это работает быстро и надежно.

— Получается, пользуясь Badoo, я автоматически соглашаюсь на обработку своих фото?

— Terms and Conditions, да. Но можно поставить галочку «не использовать мои данные нигде в поиске». Есть режим невидимки, есть настройки «использовать там», «не использовать там» и так далее. Это право пользователя.

Сейчас в Европе сильно ужесточается регуляторика, и через какое-то время правила по обработке любых данных будут еще жестче, чем в США. Поэтому разработчики вынуждены на каждый чих просить разрешения пользователя: вы согласны на это? Подтверждаете? Точно-точно? В нашей сфере у пользователя все больше и больше прописанных прав на все материалы, фотографии и прочее.

— Это усложняет вам жизнь?

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

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

— Допустим, есть кто-то, очень похожий на некую звезду, которая сейчас на пике популярности. Бывало такое, что масса людей загружает фото звезды, находит двойника и начинает писать одному человеку?

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

— Или возьмем другой параноидальный сценарий: вдруг появится «коллекционер», который решит перезнакомиться со всеми двойниками Джоли…

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

— Что вы — компания Badoo — получили от внедрения «Двойников», какие увидели результаты? Оно вообще стоило этого почти года работы, закупок оборудования?

— Во первых, пользователям нравится эта фича и они стали активно ее использовать. Нескольких миллионов человек в сутки обращаются к «Двойникам» — больше 10% всех пользователей за день. Плюс это обеспечило нам интерес со стороны СМИ и большое количество публикаций по всему миру — не только в Великобритании и США, но и в Австралии, Канаде, Германии, Франции, Голландии. У всех есть свои селебрити, всем было интересно поискать похожих людей. О нас много говорили: вышло много статей, телесюжетов, мы попали в какие-то ток-шоу. Но я считаю главным не это. Я хочу, чтобы у нас на сайте был минимум фейковых фотографий, чтобы у пользователя был наилучший опыт использования продукта в целом. Плюс важно, что люди могут встретить партнера мечты — они хотя бы проверят теорию, что это может их осчастливить.

— Или разочаровать окончательно

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

— Помимо распознавания лиц у вас есть какие-то актуальные технологические задумки? Например, как вы относитесь к теме VR? 

— Конкретно в виртуальную реальность мы не углубляемся. Пробовали, когда только-только пошла волна VR-проектов. Естественно, купили себе эти шлемы, думали, обсуждали, что можно сделать. На поверхности, конечно, идея виртуальных свиданий. Берешь и отправляешься с дамой сердца посмотреть на Гранд-Каньон или «ведешь» ее в ресторан на невероятной высоте. Было бы интересно попробовать, как это все будет работать. Но наш сервис — массовый. У кого-то из пользователей последний iPhone, а кто-то заходит со старенького китайского смартфона. Пока невозможно создать такую виртуальную среду, чтобы по ней можно было «гулять» всем пользователям, чтобы были одинаковые возможности у всех. Должен произойти какой-то технологический прорыв, чтобы люди могли легко создавать и посещать виртуальные миры. Сейчас — не то чтобы мы были не готовы к этому, сама технология еще на очень ранней стадии развития.

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

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

— Стало интересно: что такое «хороший» пользователь и «плохой» пользователь дейтинг-сервиса?  

— «Плохой» пользователь — это, определенно, тот, кто выдает себя за кого-то другого, спамер, мошенник или просто назойливый грубиян. «Хорошие» пользователи — это обыкновенные люди, которые пришли на сайт поговорить, познакомиться для встречи, просто посмотреть на людей или себя показать, знаете ли…. Не все люди хотят выходить в офлайн — некоторым просто нравится общаться на сайте, получать внимание, лайки. Если пользователь более активен, то, соответственно, его увидит больше других пользователей, он получит больше внимания. Кстати, девушкам в этом плане проще.