Servisneva.ru

Сервис Нева
0 просмотров
Рейтинг статьи
1 звезда2 звезды3 звезды4 звезды5 звезд
Загрузка...

Обзор инструмента распознавания лиц по фото онлайн

Обзор инструмента распознавания лиц по фото онлайн

Иллюстрация оценки похожести лица

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

МЕТОДЫ РАСПОЗНАВАНИЯ ЛИЦ

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

Гибкое сравнение на графах.

Метод относится к 2D моделированию. Его суть заключается в сопоставлении графов, которые описывают изображения лиц. Само лицо представлено в виде сетки с индивидуальным расположением вершин и ребер.

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

  • сложность алгоритма распознания приводит к необходимости использования значительных вычислительных мощностей;
  • низкая технологичность и сложная процедура введения новых эталонов в базу;
  • быстродействие аналитической системы обратно пропорционально размерам баз данных:

Нейронные сети.

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

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

Скрытые Марковские модели.

Метод основан на статистическом сравнении объекта с базой эталонов.

  • дополнительные подбор модели для базы данных (низкая скорость срабатывания);
  • низкая различающая способность и не оптимальный алгоритм обучения;
  • система может оптимизировать только время обработки данных и отклика на собственную модель, но не может минимизировать время перебора других моделей.

Как работает Face ID и распознавание лица на Android смартфонах?

Интернет буквально переполнен статьями на тему того, как работает разблокировка по лицу (Face ID) на iPhone. Если вы хотя бы немножко интересовались этим вопросом, то сразу же вспомните все эти, набившие оскомину, термины: лазерный проектор, ИК-излучатель, 30 тысяч точек и т.п.

Как работает разблокировка по лицу?

Все популярные ресурсы (The Verge, Wired, Engadget) как под копирку пишут одно и то же, повторяя слова, сказанные еще на презентации первого iPhone с технологией Face ID.

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

Надеюсь, эта статья ответит на многие вопросы!

Нейросети, искусственный интеллект, самообучение…

Эти слова, как мантру, повторяют блогеры, пытаясь объяснить работу Face ID. Но давайте задумаемся на минуточку, что это значит.

Чтобы смартфон научился классифицировать объекты (в нашем случае — лица), он должен пройти долгий и нелегкий процесс обучения. К примеру, если мы хотим, чтобы нейросеть отличала кошек от собак, мы должны «скормить» ей тысячи (а лучше десятки и сотни тысяч) фотографий различных собачек и котиков. Причем, каждая фотография должна иметь пометку о том, что конкретно на ней изображено.

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

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

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

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

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

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

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

Читать еще:  Три способа, как конвертировать MP3 в WAV

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

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

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

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

признаки лиц Face ID на iPhone

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

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

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

А теперь следите за мыслью, так как это самая важная часть в понимании Face ID или распознавания лица на любом другом смартфоне. Как мы знаем, вектор можно изобразить в пространстве. Для удобства представим, что у нас на выходе из нейросети только два числа: первое отвечает за цвет глаз, а второе — за цвет кожи.

Мы подаем в нейросеть фото человека с голубыми глазами и светлой кожей, а на выходе получаем два числа, например, 5 и 4. Затем мы подаем фото другого человека с темной кожей и зелеными глазами, соответственно, получаем на выходе другие числа, к примеру, 3 и 2. Всё это — двумерные вектора (с двумя координатами), которые можно легко отобразить на плоскости:

векторы лиц на координатной плоскости

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

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

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

метод обучения распознавания лица (Face ID)

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

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

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

Когда нейросеть научилась это делать, ее можно загружать на iPhone или Android-смартфон.

Теперь пользователь включает функцию распознавания лица (или Face ID) и происходит первоначальная настройка. Обученная нейросеть уже знает, какие именно нужно выделить признаки и создает, образно говоря, их вектор в пространстве. Телефону уже не нужны тысячи ваших фотографий или десятки тысяч снимков других людей, чтобы научиться различать лица (делать классификацию). Вектор признаков вашего лица всегда будет находиться примерно в одном и том же месте скрытого пространства.

Читать еще:  Как удалить Norton Security на Windows 10?

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

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

Подведем небольшие итоги

Смартфон не умеет классифицировать лица, как например, его камера определяет сцену (цветок, собака, кошка и пр.):

Определение сцены ИИ камеры Huawei Y7 2019

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

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

Может ли iPhone или Android-смартфон «обучаться» в процессе использования? Если мы говорим именно о тренировке нейросети, тогда ответ однозначный — нет.

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

В чем разница между Face ID на iPhone и Распознаванием лица на Android?

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

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

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

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

Может даже использоваться анализ микромимики, когда смартфон делает несколько снимков подряд, а затем попиксельно ищет различия.

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

Метод 3D-сканирования однозначно безопаснее 2D-сканирования, но не стоит полагать, что распознавание лица на Android-смартфонах очень легко обмануть. Особенно, когда речь идет о флагманах, вычислительной мощности которых достаточно для работы глубоких нейросетей.

Основные технологии распознавания лиц

В завершение хотелось бы просто перечислить самые популярные методы распознавания лиц:

Реализация

Переходим к практике.

В реализации мы будем использовать Keras и Tensorflow. Кроме того, мы используем два файла утилиты из репозитория deeplayning.ai, чтобы абстрагироваться от взаимодействий с сетью FaceNet.

  • fr_utils.py содержит функции для подачи изображений в сеть и получения кодирования изображений;
  • inception_blocks_v2.py содержит функции для подготовки и компиляции сети FaceNet.

Компиляция сети FaceNet

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

Мы начнем инициализпцию нашей сети со входа размерности (3, 96, 96). Это означает, что картинка передается в виде трех каналов RGB и размерности 96×96 пикселей.

Теперь давайте определим Triplet Loss функцию. Функция в сниппете кода выше удовлетворяет уравнению Triplet Loss, которое мы определили в предыдущей секции.

Если вы не знакомы с фреймворком TensorFlow, ознакомьтесь с документацией.

Сразу после того, как мы определили функцию потерь, мы можем скомпилировать нашу систему распознавания лиц с помощью Keras. Мы будем использовать Adam optimizer для минимизации потерь, подсчитанных с помощью функции Triplet Loss.

Подготовка базы данных

Теперь когда мы скомпилировали FaceNet, нужно подготовить базу данных личностей, которых сеть будет распознавать. Мы будем использовать все изображения, которые лежат в директории images.

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

Для каждого изображения мы преобразуем данные изображения в 128 float чисел. Этим занимается функция img_path_to_encoding. Функция принимает на вход путь до изображения и «скармливает» изображение нашей распознающей сети, после чего возвращают результаты работы сети.

Читать еще:  Какие есть аналоги для KMPlayer

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

Распознавание лиц

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

Загружаем новое изображение в функцию img_to_encoding. Функция обрабатывает изображения, используя FaceNet и возвращает закодированное изображение. Теперь мы можем сделать предположение о наиболее вероятной личности этого человека.

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

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

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

На GitHub есть демо работы полученной сети, с входом от простой вебкамеры.

Распространение технологии

Первые попытки практического применения системы распознавания лиц были проведены правоохранительными органами США. Сегодня полиция многих стран разрабатывает проекты по внедрению системы в массы. Единственная проблема – камеры со сканерами должны иметь круглосуточное подключение к интернету и бесперебойное электропитание.

Подобное довольно затратно, в отличие от социальных сетей.

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

Насколько опасны такие программы?

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

Как думаешь, зачем?

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

Главный вопрос к программам с функцией распознавания лица – каким образом они обеспечивают сохранность и неприкосновенность собранной информации?

Все очень просто.

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

Если вы опасаетесь незаконного сбора данных, советуем следовать нескольким шагам, которые обезопасят вас:

  • Не используйте никому неизвестные сервисы и старайтесь читать пользовательское соглашение. К примеру, в социальной сети Facebook можно найти человека по фото и такая авторитетная компания с большой вероятностью не станет дискредитировать себя распространением собранной информации. А вот неизвестный софт из магазина приложений без отзывов и с низким рейтингом может быть обычной фишинговой программой;
  • Если вы категорически против использования системы распознавания лица, её всегда можно отключить и поставить запрет на использование камеры. Пользователи смартфонов могут деактивировать функцию в настройках;
  • Нанесите специальный макияж. Сотрудники Яндекса придумали, как обмануть систему распознавания. Достаточно разукрасить лицо хаотичными линиями и точками.

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

Полезная информация:

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

Третье место: Leafsnap и Birdsnap

С помощью бесплатного приложения Leafsnap, разработанного исследователями из «Колумбийского университета», «Университета штата Мэриленд», «Смитсоновского института» и «Музеея естественной истории в Лондоне», вы можете исследовать многочисленные виды деревьев.

Birdsnap

  • Скачать приложение Leafsnap для iOS
  • Скачать приложение Birdsnap для iOS

1. Приложение использует визуальное распознавание и позволяет идентифицировать разные виды деревьев.
2. База приложения содержит изображения с высоким разрешением листьев, цветов, плодов, семян и коры деревьев для распознавания.
3. Приложение включает в себя обширную базу деревьев, которые растут в Канаде, США и Великобритании. Многие из них встречаются по всему миру, в том числе и на территории России.
4. Для полноты картины приложение Leafsnap лучше всего использовать в связке с содружественным ПО Birdsnap, которое позволяет идентифицировать птиц. Такой симбиоз пригодится любителям лесных походов.
5. База знаний Birdsnap содержит более 500 птиц, позволяя идентифицировать их по фотографии (благодаря алгоритму, который используется в ПО для распознавания лиц), основываясь на данных о вашем местоположении и текущего времени года.

голоса
Рейтинг статьи
Ссылка на основную публикацию
ВсеИнструменты
Adblock
detector