bts merchandisebts shopbts sweatshirtbts clothesarmy bombbts official army bombbangtan bombbts army bomb ver 4bts army bomb ver 3bts army bombbts light stickbts official light stickbts light stick ver 4bts light stick ver 3bts dollsbt21 plushiesbts hoodiebts jacketbt21 hoodiebts shirt
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, а кто-то заходит со старенького китайского смартфона. Пока невозможно создать такую виртуальную среду, чтобы по ней можно было «гулять» всем пользователям, чтобы были одинаковые возможности у всех. Должен произойти какой-то технологический прорыв, чтобы люди могли легко создавать и посещать виртуальные миры. Сейчас — не то чтобы мы были не готовы к этому, сама технология еще на очень ранней стадии развития.

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

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

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

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