Победа в лиц-турнире

Как российский стартап обошел Google

В международном конкурсе алгоритмов распознавания лиц российский стартап неожиданно обошел команды Google и Пекинского государственного университета. Теперь победители монетизируют свою разработку с помощью необычного сервиса знакомств и приложений для ритейла.

Алгоритм N-techlab в 73,3% случаев правильно выбирает нужное лицо среди миллиона

Фото: Дмитрий Лебедев, Коммерсантъ

НИКИТА АРОНОВ

Малыми силами

— Мы разрабатывали алгоритм для наших продуктов и решили поучаствовать в конкурсе, просто чтобы оценить свой уровень. Попасть в топ-5, конечно, рассчитывали, но победа, честно говоря, удивила,— рассказывает 25-летний директор компании N-techlab Артем Кухаренко.

Конкурс The MegaFace Benchmark проходил в декабре в университете штата Вашингтон. Свои программы представили более сотни команд и почти все серьезные разработчики в сфере распознавания образов. Заданий было несколько, самое сложное — имея исходную фотографию человека, найти другое его фото среди миллиона лиц. Как раз тут алгоритм N-techlab и победил, выдавая верный результат в 73,3% случаев.

На более мелкой выборке российский алгоритм занял второе место. Кроме того, он проиграл Google в задании, где надо было не искать нужного человека, а качественно определить по фото возраст, а также пол. Но Кухаренко совершенно не расстраивается:

— Это ведь на самом деле гораздо проще, поскольку намного меньше вариантов. Для пола, скажем, всего два.

При этом у Google над проектом работала сотня программистов, а в N-techlab — трое. Компания родилась всего полгода назад и занимает маленький изрядно захламленный офис недалеко от станции метро "Белорусская". Комнатку делят трое ребят обычной программистской наружности. Выпускник ВМК МГУ Артем Кухаренко и Александр Ульдин из МИЭМ когда-то вместе работали в одной крупной компании. С третьим членом команды, Сергеем Овчаренко, окончившим МФТИ, они познакомились в сети "ВКонтакте", в сообществе, посвященном нейронным сетям.

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

— Года с 2011-го это основной подход к такого рода задачам. Нейронные сети особенно хороши при работе с большим объемом данных. Раньше их развитие просто тормозил недостаток вычислительных мощностей,— рассказывает Артем Кухаренко.— Сейчас самое сложное — правильно подобрать архитектуру сети.

Странные закономерности

"Нейроны" в сети разбиты на условные слои. Первый слой получает информацию, обрабатывает ее и передает второму, тот, обработав,— третьему и так далее. Слоев может быть до сотни, но в программе N-techlab их не больше 20. И вот в эту сеть загружаются фотографии людей, в том числе одних и тех же. А сеть учится искать соответствия между изображениями. В данном случае обучение проходило на базе из 18 млн фотографий, которые программисты насобирали по соцсетям.

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

Важная особенность самообучения — программисты толком не знают, что происходит внутри программы. В частности, по каким именно признакам она различает людей. Есть 80 числовых значений, которые предоставлены нейронной сети в качестве критериев, а уж что именно относить к каждому из них, она сама решает. То есть любое изображение программа кодирует в виде 80 чисел, каждое — десятичная дробь в промежутке от нуля до единицы, на которую выделено 32 бита. То есть речь идет о почти 4,3 млрд вариантов каждого из 80 значений. И что это за параметры, программа не объясняет.

Конечно, программистам и самим было любопытно, и они начали искать закономерности. Обнаружили пока только три. Так, одно из значений определенно отвечает за пол. Что именно однозначно, мужское или женское, в том или ином лице видит нейронная сеть, сказать сложно, но корреляция по этому параметру очень высокая. Другое число фиксирует особенности овала лица. Третье ответственно за наличие и отсутствие усов. Вот, собственно, и все, что мы знаем о внутренних критериях алгоритма-победителя. Поможет ли это нам понять, как именно мы сами распознаем лица? Скорее всего, нет.

— Человеческий мозг совсем не обязательно использует те же принципы,— рассуждает Артем Кухаренко.— Мне тут нравится аналогия птицы и самолета. Самолет устроен гораздо проще, но отлично летает, хотя и совсем по-другому. Так же и наша программа в сравнении с мозгом.

Похоже на любовь

У Google над проектом идентификации лиц работала сотня программистов, а в N-techlab — всего трое

Фото: Дмитрий Лебедев, Коммерсантъ

Уже в феврале алгоритм должен принести создателям первые деньги. Разработчики запускают первый сервис знакомств с функцией поиска похожих лиц. Старая человеческая мечта найти кого-нибудь, напоминающего давнюю любовь, кажется, становится реальностью. Приложение FindFace будет работать на базе открытых профилей сети "ВКонтакте".

Основной функционал, предположительно, сделают бесплатным. А деньги поначалу планируется зарабатывать на дополнительных возможностях. Например, на неограниченном количестве запросов в месяц или на сложных настройках поиска. В N-techlab обещают, что сервис будет иметь и другую функцию: поиск аккаунта человека в социальной сети через любую фотографию, даже сделанную на мобильный телефон.

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

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

Потом Сергей загружает фотографию Миллы Йовович. И через минуту находит девушку, поразительно похожую на кинозвезду. Чем не находка для фанатов?

А вот поиском по собственному фото Овчаренко недоволен:

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

Пчелы и собаки

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

— Для одного конкурса я делал программу по определению видов планктона,— рассказывает Сергей Овчаренко.— Их там порядка 120 вариантов, и я даже не пытался понять, чем один от другого отличается. Мое дело — написать программу, которая с этим разберется.

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

Другая область применения — медицина.

— Летом я работал над программой для конкурса по автоматической диагностике ретинопатии глазного яблока,— вспоминает Сергей Овчаренко.— Другие ребята даже сделали мобильное приложение, которое посоветует провериться при обнаружении признаков этой патологии.

Найти и продать

Победителем конкурса уже интересуются инвесторы, в том числе иностранные. Пока N-techlab получила 50 предзаказов. А десять крупных компаний тестируют продукт.

— Заказы поступают из самых разных сфер. Начиная от ломбардов, которые хотят идентифицировать постоянных клиентов, до тех, кто выборы организует. Эти, правда, пока не объяснили, зачем им сервис,— рассказывает Артем Кухаренко.

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

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

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

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

Другая золотая жила — учет персонала:

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

Вся лента