face unlock и face id

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

Оценка этой статьи по мнению читателей:
4.8
(148)

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Определение сцены ИИ камеры Huawei Y7 2019
Нейросеть «увидела» цветок

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • Распознавание только при помощи селфи-камеры. Это наиболее распространенный метод разблокировки на Android-смартфонах (бюджетных, средне-бюджетных и практически всех флагманах). Здесь используется предварительно обученная нейросеть, сравнивающая расстояние между векторами признаков. Главный недостаток этого метода — зависимость от освещения. В темноте разблокировка по лицу работает крайне плохо.
  • Использование дополнительной ИК-подсветки. Подобная технология применяется, например, на смартфоне Huawei P40. Разница с первым методом только в том, что для распознавания совершенно нет нужды во внешнем освещении.
  • Построение карты глубины. Этот метод использует те же нейросети, но анализируется трехмерный снимок лица вместо плоского. На Android-смартфонах встречается крайне редко. Например, Google Pixel 4 вместо модного Soli-радара использует ровно ту же технологию, что и Face ID на iPhone (проецируется шаблон из тысячи точек). Также некоторые флагманы Huawei используют проектор точек (Huawei Mate 20 Pro и Mate 30 Pro).

Алексей, главный редактор Deep-Review

 

P.S. Не забудьте подписаться в Telegram на наш научно-популярный сайт о мобильных технологиях, чтобы не пропустить самое интересное!

Если вам понравилась эта статья, присоединяйтесь к нам на Patreon - там еще интересней!

 

Как бы вы оценили эту статью?

Нажмите на звездочку для оценки

Внизу страницы есть комментарии...

Напишите свое мнение там, чтобы его увидели все читатели!

Если Вы хотите только поставить оценку, укажите, что именно не так?