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

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

Если вы использовали в последние 10 лет какую-либо фотографию, то вы, вероятно, видели, как действует обнаружение лиц:

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

Обнаружение лица стало господствующей тенденцией в начале 2000-х годов, когда Пол Виола и Майкл Джонс изобрели способ обнаруживать лица , который был достаточно быстрым, чтобы работать на дешёвых камерах. Однако сейчас существуют намного более надёжные решения. Мы собираемся использовать метод, открытый в 2005 году , - гистограмма направленных градиентов (коротко, HOG ).

Для обнаружения лиц на изображении мы сделаем наше изображение чёрно-белым, т.к. данные о цвете не нужны для обнаружения лиц:

Затем мы рассмотрим каждый отдельный пиксель на нашем изображении последовательно. Для каждого отдельного пикселя следует рассмотреть его непосредственное окружение:

Нашей целью является выделить, насколько тёмным является текущий пиксель по сравнению с пикселями, прямо примыкающими к нему. Затем проведём стрелку, показывающую направление, в котором изображение становится темнее:


При рассмотрении этого одного пикселя и его ближайших соседей видно, что изображение темнеет вверх вправо.

Если повторить этот процесс для каждого отдельного пикселя на изображении, то, в конечном итоге, каждый пиксель будет заменён стрелкой. Эти стрелки называют градиентом , и они показывают поток от света к темноте по всему изображению:

Может показаться, что результатом является нечто случайное, но есть очень хорошая причина для замены пикселей градиентами. Когда мы анализируем пиксели непосредственно, то у тёмных и светлых изображений одного и того же человека будут сильно различающиеся значения интенсивности пикселей. Но если рассматривать только направление изменения яркости, то как тёмное, так и светлое изображения будут иметь совершенно одинаковое представление. Это значительно облегчает решение проблемы!

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

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

В конечном результате мы превращаем исходное изображение в очень простое представление, которое показывает базовую структуру лица в простой форме:


Исходное изображение преобразовано в HOG-представление, демонстрирующее основные характеристики изображения независимо от его яркости.

Чтобы обнаружить лица на этом HOG-изображении, всё, что требуется от нас, это найти такой участок изображения, который наиболее похож на известную HOG-структуру, полученную из группы лиц, использованной для обучения:

Используя этот метод, можно легко находить лица на любом изображении:

Если есть желание выполнить этот этап самостоятельно, используя Python и dlib, то имеется программа , показывающая, как создавать и просматривать HOG-представления изображений.

Шаг 2. Расположение и отображение лиц

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


Люди могут легко увидеть, что оба изображения относятся к актёру Уиллу Ферреллу, но компьютеры будут рассматривать их как лица двух разных людей.

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

Для этого используем алгоритм, называемый «оценка антропометрических точек» . Есть много способов сделать это, но мы собираемся использовать подход, предложенный в 2014 году Вахидом Кэземи и Джозефином Салливаном .

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


68 антропометрических точек мы располагаем на каждом лице

Ниже показан результат расположения 68 антропометрических точек на нашем тестовом изображении:


СОВЕТ ПРОФЕССИОНАЛА НОВИЧКУ: этот же метод можно использовать для ввода вашей собственной версии 3D-фильтров лица реального времени в Snapchat!

Теперь, когда мы знаем, где находятся глаза и рот, мы будем просто вращать, масштабировать и сдвигать изображение так, чтобы глаза и рот оказались отцентрованы как можно лучше. Мы не будем вводить какие-либо необычные 3D-деформации, поскольку они могут исказить изображение. Мы будет делать только базовые преобразования изображения, такие как вращение и масштабирование, которые сохраняют параллельность линий (т.н. аффинные преобразования):

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

Если у вас есть желание попытаться выполнить этот шаг самостоятельно, используя Python и dlib, то имеется программа для нахождения антропометрических точек и программа для преобразования изображения на основе этих точек .

Шаг 3. Кодирование лиц

Теперь мы подошли к сути проблемы - само различение лиц. Здесь-то и начинается самое интересное!

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

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

Нам требуется научиться извлекать некоторые базовые характеристики из каждого лица. Затем мы могли бы получить такие характеристики с неизвестного лица и сравнить с характеристиками известными лиц. Например, можно обмерить каждое ухо, определить расстояние между глазами, длину носа и т.д. Если вы когда-либо смотрели телесериал о работе сотрудников криминалистической лаборатории Лас-Вегаса («C.S.I.: место преступления»), то вы знаете, о чём идёт речь:


Как в кино! Так похоже на правду!

Самый надёжный метод обмерить лицо

Хорошо, но какие характеристики надо получить с каждого лица, чтобы построить базу данных известных лиц? Размеры уха? Длина носа? Цвет глаз? Что-нибудь ещё?

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

Решение состоит в том, чтобы обучить глубокую свёрточную нейронную сеть (именно это мы делали в выпуске 3). Но вместо обучения сети распознаванию графических объектов, как мы это делали последний раз, мы теперь собираемся научить её создавать 128 характеристик для каждого лица.

Процесс обучения действует при рассмотрении 3-х изображений лица одновременно:

1. Загрузите обучающее изображение лица известного человека

2. Загрузите другое изображение лица того же человека

3. Загрузите изображение лица какого-то другого человека

Затем алгоритм рассматривает характеристики, которые он в данный момент создаёт для каждого из указанных трёх изображений. Он слегка корректирует нейронную сеть так, чтобы характеристики, созданные ею для изображений 1 и 2, оказались немного ближе друг к другу, а для изображений 2 и 3 - немного дальше.

Единый «строенный» шаг обучения:

После повтора этого шага миллионы раз для миллионов изображений тысяч разных людей нейронная сеть оказывается в состоянии надёжно создавать 128 характеристик для каждого человека. Любые десять различных изображений одного и того же человека дадут примерно одинаковые характеристики.

Специалисты по обучению машин называют эти 128 характеристик каждого лица набором характеристик (признаков) . Идея сведения сложных исходных данных, таких как, например, изображение, к списку генерируемых компьютером чисел оказалась чрезвычайно перспективной в обучении машин (в частности, для переводов). Такой подход для лиц, который мы используем, был предложен в 2015 году исследователями из Гугл , но существует много аналогичных подходов.

Кодировка нашего изображения лица

Процесс обучения свёрточной нейронной сети с целью вывода наборов характеристик лица требует большого объёма данных и большой производительности компьютера. Даже на дорогой видеокарте NVidia Telsa требуется примерно 24 часа непрерывного обучения для получения хорошей точности.

Но если сеть обучена, то можно создавать характеристики для любого лица, даже для того, которое ни разу не видели раньше! Таким образом, этот шаг требуется сделать лишь один раз. К счастью для нас, добрые люди на OpenFace уже сделали это и предоставили доступ к нескольким прошедшим обучение сетям , которые мы можем сразу же использовать. Спасибо Брендону Амосу и команде!

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

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

Если есть желание попробовать выполнить этот шаг самостоятельно, то OpenFace предоставляет Lua-скрипт , создающий наборы характеристик всех изображений в папке и записывающий их в csv-файл. Можно запустить его так, как показано .

Шаг 4. Нахождение имени человека после кодировки лица

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

Это можно сделать, используя любой базовый алгоритм классификации обучения машин. Какие-либо особые приёмы глубинного обучения не требуются. Мы будем использовать простой линейный SVM-классификатор , но могут быть применены и многие другие алгоритмы классификации.

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

Опробуем нашу систему. Прежде всего я обучил классификатор, используя наборы характеристики от примерно 20 изображений Уилла Феррелла, Чеда Смита и Джимми Фэлона:


О, эти восхитительные картинки для обучения!

Затем я прогнал классификатор на каждом кадре знаменитого видеоролика на Youtube, где на шоу Джимми Фэлона Уилл Феррелл и Чед Смит прикидываются друг другом :

Сработало! И смотрите, как великолепно это сработало для лиц с самых разных направлений - даже в профиль!

Самостоятельное выполнение всего процесса

Рассмотрим требуемые шаги:

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

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

3. Пропустите отцентрованное изображение лица через нейронную сеть, обученную определению характеристик лица. Сохраните полученные 128 характеристик.

4. Просмотрев все лица, характеристики которых были сняты раньше, определите человека, характеристики лица которого наиболее близки к полученным. Дело сделано!

Теперь, когда вы знаете, как всё это работает, просмотрите инструкции с самого начала до конца, как провести весь процесс распознавания лица на вашем собственном компьютере, используя OpenFace :

Прежде чем начать

Убедитесь, что Python, OpenFace и dlib у вас установлены. Их можно установить вручную или использовать предварительно сконфигурированное контейнерное изображение, в котором это всё уже установлено:

Docker pull bamos/openface docker run -p 9000:9000 -p 8000:8000 -t -i bamos/openface /bin/bash cd /root/openface

Совет профессионала новичку: если вы используете Docker на OSX, то можно сделать папку OSX/Users/ видимой внутри контейнерного изображения, как показано ниже:

Docker run -v /Users:/host/Users -p 9000:9000 -p 8000:8000 -t -i bamos/openface /bin/bash cd /root/openface

Затем можно выйти на все ваши OSX-файлы внутри контейнерного изображения на /host/Users/…

Ls /host/Users/

Шаг 1

Создайте папку с названием./training-images/ в папке openface.

Mkdir training-images

Шаг 2

Создайте подпапку для каждого человека, которого надо распознать. Например:

Mkdir ./training-images/will-ferrell/ mkdir ./training-images/chad-smith/ mkdir ./training-images/jimmy-fallon/

Шаг 3

Скопируйте все изображения каждого человека в соответствующие подпапки. Убедитесь, что на каждом изображении имеется только одно лицо. Не требуется обрезать изображение вокруг лица. OpenFace сделает это автоматически.

Шаг 4

Выполните скрипты openface из корневого директория openface:

Сначала должны быть выполнены обнаружение положения и выравнивание:

./util/align-dlib.py ./training-images/ align outerEyesAndNose ./aligned-images/ --size 96

В результате будет создана новая подпапка./aligned-images/ с обрезанной и выровненной версией каждого из ваших тестовых изображений.

Затем создайте представления из выровненных изображений:

./batch-represent/main.lua -outDir ./generated-embeddings/ -data ./aligned-images/

Подпапка./generated-embeddings/ будет содержать csv-файл с наборами характеристик для каждого изображения.

Проведите обучение вашей модели обнаружения лица:

./demos/classifier.py train ./generated-embeddings/

Будет создан новый файл с именем./generated-embeddings/classifier.pk . Этот файл содержит SVM-модель, которая будет использоваться для распознавания новых лиц.

С этого момента у вас появляется работающий распознаватель лиц!

Шаг 5. Распознаём лица!

Возьмите новую картинку с неизвестным лицом. Пропустите её через скрипт классификатора, типа нижеследующего:

./demos/classifier.py infer ./generated-embeddings/classifier.pkl your_test_image.jpg

Вы должны получить примерно такое предупреждение:

=== /test-images/will-ferrel-1.jpg === Predict will-ferrell with 0.73 confidence.

Здесь, если пожелаете, можете настроить python-скрипт./demos/classifier.py .

Важные замечания:

Если результаты неудовлетворительные, то попытайтесь добавить ещё несколько изображений для каждого человека на шаге 3 (особенно изображения с разных направлений).

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

Добавить метки

Биометрическую систему распознавания лиц планируется включить в стандарт «смарт-сити» для российских городов, который начал разрабатывать Минстрой. Об этом рассказал «Известиям» замглавы ведомства Андрей Чибис. Он отметил, что такую технологию было бы удобно использовать в общественном транспорте: пассажир заходит в автобус, программа его узнает и списывает за проезд деньги с банковского счета. Министерство намерено ознакомиться с опытом китайских городов и распространить подобные технологии в России.

Министерство планирует привлечь китайские компании, в том числе Huawei, к внедрению совместно с «Ростелекомом» технологии биометрии и анализа событий в российских городах. Об этом сообщил «Известиям» заместитель министра строительства и ЖКХ Андрей Чибис. По его словам, в случае успеха эта система ляжет в основу стандарта «смарт-сити» - минимального набора решений для повышения комфортности городов. К разработке стандарта ведомство уже приступило.

Представители министерства планируют посетить Китай, чтобы оценить, как современные технологии, включая биометрию, работают там.

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

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

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

В мире есть реальные примеры, и в России создание такого рода решений ожидается уже в скором времени, - подтвердили «Известиям» в компании.

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

Генеральный директор компании VisionLabs, специализирующейся на компьютерном зрении, Александр Ханин отмечает, что процесс установки камер и серверов технически несложный, поэтому в ближайшем будущем подобные системы могут быть внедрены повсеместно. Их можно использовать в том числе для поиска пропавших, считает он. Стоимость подключения к каждой камере зависит от сценария использования и типа камеры: от 200 рублей до нескольких тысяч.

Заведующий кафедрой телекоммуникационных систем Московского института электронной техники Александр Бахтин отметил, что сети городов готовы к передаче таких данных. Однако на начальном этапе внедрения новых технологий всегда есть риск нарушения конфиденциальности. Существует достаточно много точек, в которых сведения могут быть перехвачены. Но после тестовых испытаний система выстраивается и эффективно работает.

Томограф в поликлинике генерирует гораздо больше информации, чем видеопоток из какого-нибудь автобуса. Вопрос в том, кто ее анализирует и в каких целях. Хотелось бы, чтобы законодательство защищало нас от тех сотрудников, которые используют персональные данные неправомочно, - сказал «Известиям» Александр Бахтин.

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

В сентябре 2017 года о внедрении системы видеонаблюдения с функцией распознавания лиц объявили власти Москвы. Сообщалось, что столичная сеть включает в себя 160 тыс. видеокамер и охватывает 95% подъездов жилых домов. Лица на записях сканируются, чтобы при необходимости можно было сравнить данные с информацией в различных базах - например, правоохранительных органов, когда речь идет о поиске правонарушителя, указано на портале мэра Москвы. Система способна установить личность человека на видео, его пол и возраст.

Госкорпорация «Ростех» применила технологию распознавания лиц во время ЧМ-2018. С ее помощью, например, удалось вычислить фаната, которому по решению суда запрещено посещать спортивные мероприятия. Алгоритм позволяет узнавать лица с точностью до 99%. В госкорпорации отмечали, что поиск конкретного человека среди миллиарда лиц занимает менее полусекунды.

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

Тема этой статьи давным-давно наболела, но было всё как-то лень её писать. Много текста, который я уже раз двадцать повторял разным людям. Но, прочитав очередную пачку треша всё же решил что пора. Буду давать ссылку на эту статью.

Итак. В статье я отвечу на несколько простых вопросов:

Как вы думаете, откуда создатели алгоритмов взяли эти базы?

Маленькая подсказка. Первый продукт NTech, который они сейчас - Find Face, поиск людей по вконтакту. Думаю пояснения не нужны. Конечно, вконтакт борется с ботами, которые выкачивают все открытые профили. Но, насколько я слышал, народ до сих пор качает. И одноклассников. И инстаграмм.

Вроде как с Facebook - там всё сложнее. Но почти уверен, что что-то тоже придумали.
Так что да, если ваш профиль открыт - то можете гордиться, он использовался для обучения алгоритмов;)

Про решения и про компании

Тут можно гордиться. Из 5 компаний-лидеров в мире сейчас два - Российские. Это N-Tech и VisionLabs. Пол года назад лидерами был NTech и Vocord, первые сильно лучше работали по повёрнутым лицам, вторые по фронтальным.

Сейчас остальные лидеры - 1-2 китайских компании и 1 американская, Vocord что-то сдал в рейтингах.

Еще российские в рейтинге itmo, 3divi, intellivision. Synesis - белорусская компания, хотя часть когда-то была в Москве, года 3 назад у них был блог на Хабре. Ещё про несколько решений знаю, что они принадлежат зарубежным компаниям, но офисы разработки тоже в России. Ещё есть несколько российских компаний которых нет в конкурсе, но у которых вроде неплохие решения. Например есть у ЦРТ. Очевидно, что у Одноклассников и Вконтакте тоже есть свои хорошие, но они для внутреннего пользования.

Короче да, на лицах сдвинуты в основном мы и китайцы.

NTech вообще первым в миру показал хорошие параметры нового уровня. Где-то в конце 2015 года . VisionLabs догнал NTech только только. В 2015 году они были лидерами рынка. Но их решение было прошлого поколения, а пробовать догнать NTech они стали лишь в конце 2016 года.

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

С этой стороны Vocord мне нравился сильно больше. Консультировал как-то ребят кому Вокорд очень честно сказал «у вас проект не получится с такими камерами и точками установки». NTech и VisionLabs радостно попробовали продать. Но что-то Вокорд в последнее время пропал.

Выводы

В выводах хочется сказать следующее. Распознавание лиц это очень хороший и сильный инструмент. Он реально позволяет находить преступников сегодня. Но его внедрение требует очень точного анализа всех параметров. Есть где достаточно OpenSource решения. Есть применения (распознавание на стадионах в толпе), где надо ставить только VisionLabs|Ntech, а ещё держать команду обслуживания, анализа и принятия решения. И OpenSource вам тут не поможет.

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

Добавить метки

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

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

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

Наигравшись с париками, мы открываем ICQ и начинаем развлекаться с масками для видеозвонков: на мое цифровое лицо в реальном времени накладываются маски - можно неузнанным общаться в видеочате.

Следующий номер нашей программы - Face.DJ. Это приложение строит 3D-модель лица по селфи, а потом "надевает" это лицо на виртуальную голову, чтобы вы могли примерять прически и аксессуары. Другое назначение приложения - анимировать пользователя, создать его мультяшную копию для игр и прочих онлайн-занятий.

Мы готовим такое же приложение для сервиса знакомств: люди при первом контакте часто не хотят раскрываться, - рассказывает Юля, пиарщик компании VisionLabs, разработавшей LUNA. - Некоторые надевают маски, чтобы добавить в романтическое общение элемент игры.

У кросс-платформенной системы LUNA тоже много масок. Есть приложение в мессенджере Telegram, которое распознает пол и возраст по лицу, есть LUNA в облаке и LUNA для браузера. Но главное - эту программу можно внедрять в самые разные технологические продукты, чтобы использовать для распознавания лиц.

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

Главные клиенты VisionLabs - банки. Например, в "Почта Банке" системой LUNA оборудованы 50 тысяч рабочих мест - это самое большое внедрение биометрии в мире. Важно распознавать и лица клиентов, чтобы сравнивать фотографии в паспортах с фото в базе данных. Ведь самое распространенное мошенничество в этой сфере - вклейка своего фото в чужой паспорт для получения кредита.

Как видят машины

К нам подходит Александр Ханин, директор VisionLabs.

Расскажите о компьютерном зрении?

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

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

Задача распознавания лиц решена?

Александр Ханин: Да, уже сейчас достоверно показано, что машина различает лица лучше нас. И точнее, и быстрее. Человек не очень хорошо определяет возраст, национальность. Тот, кто живет в Европе, хуже различает лица людей с азиатской внешностью, и наоборот. Еще мы забывчивы. В довершение всего машина делает это в десятки миллионов раз быстрее.

Зато человек анализирует не отдельные параметры, а лицо и даже ситуацию в целом. Мы понимаем контекст, в котором лицо собеседника принимает то или иное выражение. Как машина со всем этим справляется?

Александр Ханин: Сочетая лучшие методики компьютерного зрения и машинного обучения. Взять, например, метод глубокого обучения - его особенность в том, что человек не задает параметры лица для распознавания.

Нейросеть программирует сама себя?

Александр Ханин: Нейросети появились еще в 1970-х, а революция в этой области началась примерно в 2013-2014-м. Потому что только к этому времени удалось накопить достаточно большие объемы данных , чтобы учить нейросети, а вычислительные мощности стали относительно дешевыми. Продолжать разрабатывать детерминированные методы распознавания - указывать, какие части лица как сравнивать, - стало бессмысленно.

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

Вы именно так обучали свою систему?

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

Где же вы взяли эти миллионы пар фотографий?

Александр Ханин: Есть доступные обучающие выборки для исследователей - сначала мы использовали их, а дальше уже работали с партнерами и клиентами, которые разрешили продолжить обучение на их данных.

Как преуспеть на рынке

Задача распознавания людей по лицу решена. А как обстоит дело с определением эмоций?

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

Распознавать ложь, например?

Александр Ханин: Да. Или определять, соответствует кандидат вашим требованиям или нет. Удовлетворен клиент обслуживанием или нет - улыбка ведь может выражать не только радость, но и насмешку и скрытое недовольство. Поэтому само по себе распознавание эмоций - это подзадача. Мы изучаем лицо в динамике, последовательность реакций на вопросы, обслуживание, обстановку.

Есть ли в мире инновационные продукты, на которые вы ориентируетесь?

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

В каких-то терминалах самообслуживания уже установлена система распознавания лиц?

Александр Ханин: Да, например, в банке "Открытие" - в терминалах электронной очереди. И это не пилотные проекты, а такие, которые работают и удовлетворяют заказчиков в реальных условиях.

Чувствуете, как конкуренты дышат в спину?

Александр Ханин: Пилотных проектов в близких к нам областях много. Компаний, которые занимаются распознаванием лиц, только в России десятки, в Китае - около сотни, в мире - больше тысячи. Поэтому я и говорю, что сама по себе задача распознавания лиц решена, - во всяком случае для большинства сегментов и практических задач.

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

Распознать всех!

Какие задачи еще не решены, но будут - в обозримой перспективе? Над чем работают специалисты?

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

Разве узнавать случайных людей по лицам не запрещено законом? Это ведь использование персональных данных.

Александр Ханин: Бизнесу запрещено, конечно. Это нарушение прав человека и вмешательство в частную жизнь. Вообще, технологии сейчас позволяют сделать гораздо больше, чем разрешает законодательство. Но мы работаем только в белой зоне - в полном соответствии с законом. Для нас важно не нарушать права людей. Мы не имеем права использовать без согласия человека его данные из соцсетей и поэтому не станем делать, например, для магазина систему, которая ищет информацию о клиенте по его фотографии. Но мы можем разработать программу, которая будет приблизительно оценивать пол и возраст покупателей по фото.

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

То есть ФСБ можно, а обычным людям нельзя?

Александр Ханин: Да. Если спецслужба хочет найти террориста в толпе, ей нужно сканировать и распознать всех. А если человек зашел в магазин и программа по фотографии нашла его аккаунт в соцсети, узнала телефон и начала рассылать спам, это очень серьезное нарушение. На Западе за это предусмотрена уголовная ответственность.

В аэропортах уже есть системы распознавания лиц?

Александр Ханин: Да, в основном на паспортном контроле - они проверяют, ваш ли это паспорт, не поддельный ли и не числитесь ли вы в списке заблокированных или в федеральном розыске. За рубежом степень автоматизации значительно выше. В аэропортах Сингапура, Лондона, Парижа паспортный контроль можно проходить автоматически, без участия сотрудников. Вы сканируете свой паспорт, вас фотографируют, происходит сверка - и все, можно идти дальше.

Угадай, что на картинке

Как будет развиваться компьютерное зрение?

Александр Ханин: Есть большая группа задач, именуемых visual question answering: вы показываете компьютеру картинку, и он должен понять, что там изображено. Это очень сложно: если просто учить распознавать объекты по отдельности, ничего не получится - надо понимать контекст и взаимосвязь объектов.

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

То есть вы хотите научить машины распознавать образы, смысл которых зависит от контекста?

Александр Ханин: Научить интерпретировать контекст и таким образом распознавать картинки, действия, сцены.

Когда роботы прозреют

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

Как системы, распознающие лица, изменят нашу жизнь в ближайшие годы?

Александр Ханин: Вы совершенно точно заметите работу таких систем при авторизации - например, когда будете разблокировать телефон. Многие уже привыкли к Touch ID, но скоро самым распространенным способом станет вхождение в систему по лицу. Приходя домой, вы не будете искать ключи, на работе вам не понадобится пропуск. Ускорится обслуживание и самообслуживание в банках, магазинах, во всей сфере услуг: расчеты будут происходить без карточек.

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

Одна и та же система установленных повсюду камер и компьютерного зрения?

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

Жить в мире, где все на виду, страшновато. Технически все проще становится построить антиутопию, где за всеми ведется тотальная слежка…

Александр Ханин: Я думаю, в итоге мир станет лучше и намного безопаснее. Но обманывать будет труднее. Например, мы с партнерами недавно разработали продукт, который не только дает доступ в рабочее помещение, но и учитывает проведенное там время: пришли во столько-то, ушли во столько. Прогуляли, опоздали, не вернулись с обеда - все будет зафиксировано.

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

Александр Ханин: Безусловно, есть масса способов обмануть систему, и в этой области "гонка вооружений" только начинается. Был такой видеоролик, где учили делать макияж, препятствующий распознаванию. Но то было года три назад - нынешние алгоритмы так просто не проведешь.

А если вместо лица показывать фотографию?

Александр Ханин: Чтобы вычислить мошенников, в системах распознавания лиц программируют специальный "детектор живости" (lifeness detector), который определяет, человек перед ним или фотография. Показателей живости несколько. Самый простой, который считается мировым стандартом, - это моргание. Еще система может попросить человека улыбнуться, повернуть голову, приблизиться к камере, чтобы убедиться, что он реальный. Но если камера оснащена сенсором глубины, это не требуется: машина сразу понимает, что в кадре объемный объект, а не фото.

Кто еще в лидерах

Распознавание лиц - это не только наука и технология, но и большой бизнес, который в развитых странах растет огромными темпами. Исследовательская компания Allied Market Research прогнозирует, что к 2022 году его оборот составит почти десять миллиардов долларов. Среди ведущих игроков есть и российские. Из десятков стартапов и исследовательских проектов мы выделили три самых успешных.

NTechLab. Выпускник МГУ Артем Кухаренко начинал с приложения, определявшего породу собак по фотографии. Но уже в 2015 году созданный им с партнерами по проекту NTechLab алгоритм FaceN одержал победу в двух из четырех номинаций главного мирового конкурса по распознаванию лиц MegaFace, обойдя команду Google. Однако настоящая слава пришла к компании после разработки популярнейшего приложения FindFace, предназначенного для поиска по фото людей в соцсети "ВКонтакте". Сегодня число заявок на интеграцию технологии FindFace приближается к тысяче.

Vocord. Компанию "Вокорд" можно смело считать чемпионом мира по распознаванию лиц: на сайте конкурса MegaFace она занимает первое место, лидируя с солидным отрывом. Команда "Вокорд" - ветераны на рынке систем компьютерного зрения: программу дистанционного биометрического распознавания лиц Vocord FaceControl они выпустили еще в 2008 году, сегодня их продуктами пользуются больше двух тысяч коммерческих и государственных организаций. Специализация компании - идентификация лиц, то есть поиск человека в толпе.

VisionLabs. Их продукты входят в тройку лучших мировых коммерческих систем распознавания лиц. Подробнее об этой компании читайте в основном тексте.

Основные виды биометрии

Международная классификация способов идентификации человека

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

Отпечатки пальцев. Дактилоскопический метод основан на неповторимости папиллярного рисунка кожи, широко применяется в криминалистике.

Речь. Способ распознавания, основанный на преобразовании звучащей речи в цифровую информацию.

Глаза. Распознавание происходит в результате сравнения цифрового изображения радужной оболочки глаза с имеющимися в базе.

Вены. Способ идентификации на основе венозного рисунка руки или пальцев.

Вы поднимаетесь по лестнице и заходите в лифт. Он знает, на какой этаж вам нужно. Двери в квартиру сами открываются перед вами. Компьютер и телефон «узнают» вас и не требуют ввода пароля.

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

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

Что говорить, если в одной только Москве уже работает сеть из более 150 000 камер наружного видеонаблюдения. От них никуда не скрыться, и это заставляет людей задумываться, но масштабы «слежки» не настолько велики. Сеть использует мощную систему распознавания лиц, но для ее работы необходимо много энергии, поэтому в режиме реального времени работают всего 2-4 тысячи камер. Массовым слежением за населением пока только пугают, поэтому стоит сосредоточиться на реальных плюсах работы данной технологии. Но обо всем по порядку.

Как работает система распознавания лиц?

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

Итак, насколько хорошо работает система распознавания лиц в настоящее время? Вполне неплохо, но иногда ошибается. Если вы когда-нибудь сталкивались с ПО, распознающим лица на Facebook или на другой платформе, вы наверняка замечали, что забавных результатов бывает столько же, сколько и точных. И все же, хотя технология работает не со 100-процентной точностью, она достаточно хороша, чтобы найти широкое применение. И даже заставить понервничать.

Пол Хоуи из NEC говорит, что их система распознавания лиц сканирует лица на предмет индивидуальных идентификаторов:

«К примеру, многие считают расстояние между глазами уникальной характеристикой. Или же это может быть расстояние от подбородка до лба и другие компоненты. Мы, в частности, учитываем 15-20 факторов, которые считаются важными, а также другие факторы, уже не настолько значимые. Создается трехмерное изображение головы человека, поэтому даже если она частично будет закрыта, мы все равно сможем получить точное соответствие. Затем система берет сигнатуру лица и пропускает ее через базу данных».

Стоит ли переживать о программах, распознающих лица?

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

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

Говоря о программном обеспечении, все они работают по-разному, но в основе своей используют похожие методы и нейросети. У каждого лица есть множество отличительных признаков (в мире невозможно найти два идентичных лица, а ведь сколько их было за всю историю человечества!). К примеру, программное обеспечение FaceIt определяет эти признаки как узловые точки. Каждое лицо содержит примерно 80 узловых точек, схожих с теми, что мы упоминали прежде: расстояние между глазами, ширина носа, глубина глазных впадин, форма подбородка, длина челюсти. Эти точки измеряются и создают числовой код - «отпечаток лица» - который затем попадает в базу данных.

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

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

На смену 2D пришло 3D-распознавание. Эта недавно появившаяся тенденция в программном обеспечении использует 3D-модель, обеспечивающую высокую точность распознавания лица. Запечатлевая трехмерное изображение поверхности лица человека в реальном времени, ПО выделяет отличительные черты - где больше всего выдаются жесткие ткани и кость, например, кривые глазного гнезда, носа и подбородка - для идентификации субъекта. Эти области уникальны и не меняются со временем.

Используя глубину и ось измерения, на которые не влияет освещение, система трехмерного распознавания лиц может даже использоваться в темноте и распознавать объекты под разными углами (даже в профиль). Подобное программное обеспечение проходит через несколько этапов, идентифицируя человека:

  • Обнаружение: получение снимка при помощи цифрового сканирования существующей фотографии (2D) или видео для получения живой картинки субъекта (3D).
  • Центровка: определив лицо, система отмечает положение головы, размер и позу.
  • Измерение: система измеряет кривые на лице с точностью до миллиметра и создает шаблон.
  • Репрезентация: система переводит шаблон в уникальный код. Этот код задает каждому шаблону набор чисел, представляющих особенности и черты лица.
  • Сопоставление: если снимок в 3D и база данных содержит трехмерные изображения, сопоставление пройдет без изменений снимка. Но если же база данных состоит из двумерных снимков, трехмерное изображение раскладывается на разные составляющие (словно сделанные под разными углами двумерные снимки одних и тех же черт лица), и они конвертируются в 2D-изображения. И затем находится соответствие в базе данных.
  • Верификация или идентификация: в процессе верификации снимок сравнивается только с одним снимков в базе данных (1:1). Если целью же стоит идентификация, снимок сравнивается со всеми снимками в базе данных, что приводит к ряду возможных совпадений (1:N). Применяется тот или иной другой метод по необходимости.

Где используются системы распознавания лиц?

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

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

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

Волшебство? Технологии!

Особенно важным и интересным может быть развитие технологии распознавания лиц в сфере банковских переводов. На днях российский банк «Открытие» представил собственное уникальное решение, разработанное под технологическим брендом Open Garage: перевод денег по фотографии в мобильном приложении «Открытие.Переводы». Вместо того чтобы вбивать номер карты или телефона, достаточно просто сфотографировать человека, которому нужно сделать перевод. Система распознавания лиц сравнит фото с эталонным (делается, когда банк выдает карту) и подскажет имя и фамилию. Останется только выбрать карту и ввести сумму. Что особенно важно, клиенты сторонних банков также могут использовать эту функцию для переводов клиентам «Открытия» - отправитель переводов может пользоваться картой любого российского банка.

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