Взять кредит, оформить визу, да и просто запустить смартфон последней модели – сделать все это сегодня невозможно без участия алгоритмов распознавания лиц. Они помогают полицейским в расследованиях, музыкантам – на сцене, но понемногу превращаются во всевидящее око, следящее за всеми нашими действиями онлайн и офлайн.
Роман Фишман
Алгоритмы (технологии)
Определить человека по фото с точки зрения компьютера означает две очень разные задачи: во-первых, найти лицо на снимке (если оно там есть), во-вторых, вычленить из изображения те особенности, которые отличают этого человека от других людей из базы данных.
0 РЕКЛАМА – ПРОДОЛЖЕНИЕ НИЖЕ
1. Найти
Попытки научить компьютер находить лицо на фотографиях проводились еще с начала 1970-х годов. Было испробовано множество подходов, но важнейший прорыв произошел существенно позднее – с созданием в 2001 году Полом Виолой и Майклом Джонсом метода каскадного бустинга, то есть цепочки слабых классификаторов.
Хотя сейчас есть и более хитрые алгоритмы, можно поспорить, что и в вашем сотовом телефоне, и в фотоаппарате работает именно старый добрый Виола – Джонс. Все дело в замечательной быстроте и надежности: даже в далеком 2001 году средний компьютер с помощью этого метода мог обрабатывать по 15 снимков в секунду. Сегодня эффективность алгоритма удовлетворяет всем разумным требованиям. Главное, что нужно знать об этом методе, – он устроен удивительно просто. Вы даже не поверите насколько.
Как работает РАСПОЗНАВАНИЕ ЛИЦ? | РАЗБОР
РЕКЛАМА – ПРОДОЛЖЕНИЕ НИЖЕ
- Шаг 1. Убираем цвет и превращаем изображение в матрицу яркости.
- Шаг 2. Накладываем на нее одну из квадратных масок – они называются признаками Хаара. Проходимся с ней по всему изображению, меняя положение и размер.
- Шаг 3. Складываем цифровые значения яркости из тех ячеек матрицы, которые попали под белую часть маски, и вычитаем из них те значения, что попали под черную часть. Если хотя бы в одном из случаев разность белых и черных областей оказалась выше определенного порога, берем эту область изображения в дальнейшую работу. Если нет – забываем про нее, здесь лица нет.
- Шаг 4. Повторяем с шага 2 уже с новой маской – но только в той области изображения, которая прошла первое испытание.
0 РЕКЛАМА – ПРОДОЛЖЕНИЕ НИЖЕ
0 РЕКЛАМА – ПРОДОЛЖЕНИЕ НИЖЕ
Почему это работает? Посмотрите на признак [1]. Почти на всех фотографиях область глаз всегда немного темнее области непосредственно ниже. Посмотрите на признак [2]: светлая область посередине соответствует переносице, расположенной между темными глазами. На первый взгляд черно-белые маски совсем не похожи на лица, но при всей своей примитивности они имеют высокую обобщающую силу.
Почему так быстро? В описанном алгоритме не отмечен один важный момент. Чтобы вычесть яркость одной части изображения из другой, понадобилось бы складывать яркость каждого пикселя, а их может быть много. Поэтому на самом деле перед наложением маски матрица переводится в интегральное представление: значения в матрице яркости заранее складываются таким образом, чтобы интегральную яркость прямоугольника можно было получить сложением всего четырех чисел.
Урок #1 Python / Распознавание лиц OpenCV
Как собрать каскад? Хотя каждый этап наложения маски дает очень большую ошибку (реальная точность ненамного превышает 50%), сила алгоритма – в каскадной организации процесса. Это позволяет быстро выкидывать из анализа области, где лица точно нет, и тратить усилия только на те области, которые могут дать результат. Такой принцип сборки слабых классификаторов в последовательности называется бустингом (подробнее о нем можно прочитать в октябрьском номере «ПМ» или здесь). Общий принцип такой: даже большие ошибки, будучи перемножены друг на друга, станут невелики.
2. Упростить
Найти особенности лица, которые позволили бы идентифицировать его владельца, означает свести реальность к формуле. Речь идет об упрощении, причем весьма радикальном. Например, различных комбинаций пикселей даже на миниатюрном фото 64 × 64 пикселя может быть огромное количество – (2 8 ) 64 × 64 = 2 32768 штук.
При этом для того, чтобы пронумеровать каждого из 7,6 млрд людей на Земле, хватило бы всего 33 бита. Переходя от одной цифры к другой, нужно выкинуть весь посторонний шум, но сохранить важнейшие индивидуальные особенности. Специалисты по статистике, хорошо знакомые с такими задачами, разработали множество инструментов упрощения данных.
Например, метод главных компонент, который и заложил основу идентификации лиц. Впрочем, в последнее время сверточные нейросети оставили старые методы далеко позади. Их строение довольно своеобразно, но, по сути, это тоже метод упрощения: его задача – свести конкретное изображение к набору особенностей.
0 РЕКЛАМА – ПРОДОЛЖЕНИЕ НИЖЕ
0 РЕКЛАМА – ПРОДОЛЖЕНИЕ НИЖЕ
Накладываем на изображение маску фиксированного размера (правильно она называется ядром свертки), перемножаем яркость каждого пикселя изображения на значения яркости в маске. Находим среднее значение для всех пикселей в «окошке» и записываем его в одну ячейку следующего уровня.
Сдвигаем маску на фиксированный шаг, снова перемножаем и снова записываем среднее в карту признаков.
0 РЕКЛАМА – ПРОДОЛЖЕНИЕ НИЖЕ
Пройдясь по всему изображению с одной маской, повторяем с другой – получаем новую карту признаков.
0 РЕКЛАМА – ПРОДОЛЖЕНИЕ НИЖЕ
Уменьшаем размер наших карт: берем несколько соседних пикселей (например, квадрат 2×2 или 3×3) и переносим на следующий уровень только одно максимальное значение. То же самое проводим для карт, полученных со всеми другими масками.
0 РЕКЛАМА – ПРОДОЛЖЕНИЕ НИЖЕ
В целях математической гигиены заменяем все отрицательные значения нулями. Повторяем с шага 2 столько раз, сколько мы хотим получить слоев в нейросети.
Из последней карты признаков собираем не сверточную, а полносвязную нейросеть: превращаем все ячейки последнего уровня в нейроны, которые с определенным весом влияют на нейроны следующего слоя. Последний шаг. В сетях, обученных классифицировать объекты (отличать на фото кошек от собак и пр.), здесь находится выходной слой, то есть список вероятностей обнаружения того или иного ответа. В случае с лицами вместо конкретного ответа мы получаем короткий набор самых важных особенностей лица. Например, в Google FaceNet это 128 абстрактных числовых параметров.
0 РЕКЛАМА – ПРОДОЛЖЕНИЕ НИЖЕ
0 РЕКЛАМА – ПРОДОЛЖЕНИЕ НИЖЕ
3. Опознать
Самый последний этап, собственно идентификация, – самый простой и даже тривиальный шаг. Он сводится к тому, чтобы оценить похожесть полученного списка признаков на те, что уже есть в базе данных. На математическом жаргоне это означает найти в пространстве признаков расстояние от данного вектора до ближайшей области известных лиц. Точно так же можно решить и другую задачу – найти похожих друг на друга людей.
Почему это работает? Сверточная нейросеть «заточена» на то, чтобы вытаскивать из изображения самые характерные черты, причем делать это автоматически и на разных уровнях абстракции. Если первые уровни обычно реагируют на простые паттерны вроде штриховки, градиента, четких границ и т. д., то с каждым новым уровнем сложность признаков возрастает. Маски, которые нейросеть примеряет на высоких уровнях, часто действительно напоминают человеческие лица или их фрагменты. Кроме того, в отличие от метода главных компонент, нейросети комбинируют признаки нелинейным (и неожиданным) образом.
0 РЕКЛАМА – ПРОДОЛЖЕНИЕ НИЖЕ
Откуда берутся маски? В отличие от тех масок, что используются в алгоритме Виолы – Джонса, нейросети обходятся без помощи человека и находят маски в процессе обучения. Для этого нужно иметь большую обучающую выборку, в которой имелись бы снимки самых разных лиц на самом разном фоне.
Что касается того результирующего набора особенностей, которые выдает нейросеть, то он формируется по методу троек. Тройки – это наборы изображений, в которых первые два представляют собой фотографию одного и того же человека, а третье – снимок другого. Нейросеть учится находить такие признаки, которые максимально сближают первые изображения между собой и при этом исключают третье.
Чья нейросеть лучше? Идентификация лиц давно уже вышла из академии в большой бизнес. И здесь, как и в любом бизнесе, производители стремятся доказать, что именно их алгоритмы лучше, хотя не всегда приводят данные открытого тестирования.
Например, по информации конкурса MegaFace, в настоящее время лучшую точность показывает российский алгоритм deepVo V3 компании «Вокорд» с результатом в 92%. Гугловский FaceNet v8 в этом же конкурсе показывает всего 70%, а DeepFace от Facebook (Социальная сеть признана экстремистской и запрещена на территории Российской Федерации) с заявленной точностью в 97% в конкурсе вовсе не участвовал. Интерпретировать такие цифры нужно с осторожностью, но уже сейчас понятно, что лучшие алгоритмы почти достигли человеческой точности распознавания лиц.
Источник: www.techinsider.ru
Как работает распознавание лиц
У вас в телефоне наверняка уже есть технология распознавания лиц. Ещё она есть в городских камерах наблюдения, на заводах и военных объектах, в лабораториях и даже в автомобилях. Посмотрим, как они устроены.
Из чего состоит распознавание лиц
Чтобы машина узнала лицо с помощью камеры, нужны такие компоненты:
- Оптическая камера или лидар, чтобы получить изображение или объёмную карту лица.
- База данных с заранее проанализированными лицами.
- Алгоритм, который находит в кадре лицо.
- Алгоритм приведения лица к какому-то набору векторов.
- Алгоритм сравнения векторов с эталонами.
Теперь посмотрим детали.
Получаем изображение с камеры
Это самая простая часть, которая может даже не зависеть от алгоритма распознавания лиц. Задача компьютера — взять видеопоток с камеры, в реальном времени нарезать его на несколько кадров и эти кадры отправить в алгоритм.
Некоторые алгоритмы используют плоское изображение с камеры. Другие используют лидары — это когда лазерная пушка быстро-быстро стреляет лазером во все стороны и измеряет скорость возвращения лучей. Получается не слишком точная, но в некоторой степени объёмная картинка. Часто её совмещают с изображением основной камеры, чтобы убедиться, что перед нами действительно человек, а не его фотография.
Иногда алгоритм настроен так, чтобы получать только подвижные изображения с меняющейся мимикой — чтобы не сканировали спящих людей или маски.
Некоторые алгоритмы вычисляют трёхмерную модель на основании поворота головы. Прямо говорят: посмотрите налево, посмотрите направо, приблизьтесь, отдалитесь. Так они пытаются построить более точную объёмную модель лица. Всё это — для безопасности.
Источник: dzen.ru
Как это работает. Алгоритм распознавания лиц
Алгоритм распознавания лиц компании NtechLab, технологического партнера Госкорпорации Ростех, признан лучшим в мире . Технология стала победителем конкурса Face Recognition Vendor Test Национального института стандартов и технологий Министерства торговли США. Это не первая победа NtechLab на международных конкурсах, а разработки компании уже успешно используются для повышения комфорта и безопасности жителей «умных городов» по всему миру. Что такое распознавание лиц, как работают алгоритмы и какое будущее у этой технологии – в нашем материале.
Физиогномика по-научному
Цифровое распознавание лиц – идентификация или подтверждение личности по лицу с помощью нейронных сетей − становится новой реальностью, которая все прочнее входит в нашу жизнь. Смартфоны давно научились находить лица на фотографиях, соцсети предлагают отметить друзей на снимках, а камеры на улицах и в транспорте «выхватывают» преступников из толпы.
Известно, что новорожденные дети практически с момента своего появления на свет отличают человеческое лицо от других объектов, затем очень быстро запоминают лицо матери и учатся распознавать человеческие эмоции. В течение жизни этот навык сохраняется – мы легко отличаем лица знакомых, по одному выражению лица можем определить настроение человека. Логично предположить, что вслед за другими умениями и эту нашу способность со временем ученые должны были «оцифровать», чтобы наделить ей машины.
История изучения программного распознавания лиц тянется с 1960-х годов. Уже тогда было понятно, что лицо можно описать набором параметров, совокупность которых у каждого человека будет существенно отличаться. Если загрузить эти свойства в программу и сопоставить их с имеющейся базой фотографий, то можно найти соответствия с высокой точностью. Проблема заключалась в том, что на тот момент механизмы захвата лица по фото или видео, а также возможности компьютеров по скоростной обработке больших массивов информации находились на низком уровне. Но уже в то время потенциал разработки был ощутим.
Где нужно распознавать лица
Основными двигателями прогресса для систем распознавания лиц стали, с одной стороны, силовые ведомства, с другой – бизнес. Спецслужбам и различным службам безопасности система интересна как действенное подспорье для поиска преступников и предотвращения противоправных действий. Верификация с помощью лица на объектах, мероприятиях и устройствах уже используется как безопасный способ подтверждения личности. Бизнес также может задействовать эти системы для идентификации покупателей, оплаты «по лицу», для анализа посещений и поведения в торговых точках.
Другими интересными областями применения системы распознавания лиц могут стать медицина и образование. С помощью компьютерного анализа лица медики смогут отслеживать состояние пациента, оценивать ход лечения, выявлять признаки болезни и т.д. В образовательной сфере, которая все больше переходит в онлайн, системы помогут анализировать поведение учеников, способствовать большей включенности в процесс обучения. Кроме того, городские камеры, интегрированные в систему «умный город», способны искать потерявшихся детей, пожилых или больных людей, оставшихся без помощи.
Конечно, существует и до сих пор используется множество других способов идентификации: по голосу, через отпечаток пальца или сканирование радужки глаза. Но у биометрии по лицу есть ряд преимуществ: она легко внедряется, дает быстрый результат и работает дистанционно, что особенно актуально во время пандемии коронавируса. В перспективе для идентификации будет использоваться комплекс биометрических исследований.
Как это работает
Весь процесс работы системы можно разделить на два этапа: выявление лица и его распознавание. Первый шаг может быть и простым, и сложным. В том случае если лицо неподвижно, находится анфас перед камерой или датчиками, хорошо освещено (как, например, в случае идентификации по лицу на смартфоне), то снять параметры лица не представляется проблемой.
Распознать лицо по случайному фото или видео в динамике – гораздо менее тривиальная задача. Сложность заключается в том, что человек двигается, соответственно, лицо может попасть в кадр частично, быть закрыто головным убором, волосами. Но современные системы справляются даже при минимуме информации.
Когда программа «вырезала» лицо из общего фона, она может его развернуть, выпрямить и проанализировать. Выделяются ключевые точки (глаза, нос, рот), их может быть несколько десятков, вычисляется их взаимное расположение. Далее полученная «карта лица» переводится в цифровые значения и сверяется с базой. А затем нейросеть, обучившаяся на миллионах портретов, и мощный компьютер находят соответствие. Весь процесс занимает всего несколько секунд.
Как только системы распознавания лиц стали выходить в большой мир, сразу появились желающие «взломать» их. Хакеры, активисты и даже современные художники придумывают способы обмануть камеры и защитить свою приватность. В ход идут маски, макияж, специальные очки, лазеры. Но системы тоже становятся умнее, к тому же полные алгоритмы их работы известны только их создателям. Постепенно формируется законодательная база относительно применения подобных систем.
Лица российского рынка биометрии
Технологии распознавания лиц одновременно вдохновляют и волнуют. По данным экспертов, за последние несколько лет качество идентификации выросло в 50 раз. Растет и мировой рынок услуги: к 2024 году прогнозируется объем доходов в размере 7 млрд долларов. Системы распознавания вышли из академических кругов в большой бизнес и участвуют в мировой конкуренции. Свои технологии сегодня разрабатывают такие гиганты, как Apple, Amazon, Facebook, Google, Microsoft, IBM.
Крупнейшим российским поставщиком и одним из мировых лидеров услуг биометрии является компания NtechLab – технологический партнер Ростеха. За шесть лет из перспективного стартапа компания выросла до международных масштабов. Ее алгоритмы распознавания лиц по результатам независимых тестов многократно признавались лучшими в мире. Сегодня разработки NtechLab применяются более чем в 100 организациях 20 стран.
Основатель компании, молодой программист Артем Кухаренко начинал с того, что в качестве хобби создал софт, по фотографии определяющий породу собак. Следующим шагом стало нашумевшее приложение FindFace, появившееся в 2016 году и позволявшее любому желающему найти по фото профиль человека в соцсетях. Затем была первая международная победа распознающих алгоритмов и следующий виток развития NtechLab – взаимодействие с инвесторами и крупными партнерами.
Для создания комфортной и безопасной среды в Москве с 2017 года используется технология FindFace Security, встроенная в столичную систему видеонаблюдения. Интеграция технологии позволила существенно повысить эффективность поиска и задержания преступников правоохранительными органами. Во время проведения Чемпионата мира по футболу в 2018 году система позволила задержать более 180 правонарушителей, находившихся в федеральном розыске, а также предотвратить хищение спонсорского кубка. А с началом пандемии FindFace Security помогала находить нарушителей режима самоизоляции.
В мае этого года NtechLab в очередной раз подтвердила высокий уровень точности своих алгоритмов: компания победила в конкурсе алгоритмов распознавания лиц Face Recognition Vendor Test Национального института стандартов и технологий Министерства торговли США. Это тестирование на сегодняшний день является единственным общепризнанным мировым соревнованием подобного типа. Российская разработка соперничала с более чем ста алгоритмами из других стран и показала лучшие результаты. Победа NtechLab открыла новые возможности для международного развития компании и стала подтверждением высокого уровня отечественной IT-экспертизы. В ближайших планах компании − создание инструментов по выявлению с помощью камер агрессивных людей и детектирование пути человека.
В июне стало известно, что алгоритмы российского разработчика будут применяться на железных дорогах Индии. В течение месяца система распознавания лиц Ntechlab будет внедрена на 30 станциях наиболее загруженного участка Indian Railways. Согласно требованиям заказчика система должна обеспечивать одновременное распознавание до 50 человек в кадре. По словам представителей компании — партнера Ростеха, внедрение компьютерного зрения на объектах с потоком подобной плотности стало технологическим вызовом для системы Ntechlab, и она справляется с задачей.
События, связанные с этим
«Умный цех» для Ростеха
Источник: rostec.ru