Как работает Face ID в iPhone X ?

В этой статье разобран принцип алгоритма, подобного Face ID, с использованием Keras. Также представлены некоторые окончательные наработки, созданные с помощью Kinect.

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



Нейронные сети, на которых основана технология Face ID, не просто выполняют классификацию.

Первый шаг — анализ принципа работы Face ID на iPhone X.

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



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

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

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

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

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

Считается, что Face ID основан на сиамской свёрточной нейронной сети, которая обучается в офлайне, чтобы отображать лица в низкоразмерном скрытом пространстве, сформированном для максимизации различия между лицами разных людей, используя контрастную потерю. Вы получаете архитектуру, способную делать однократное обучение, как упоминалось в Keynote.

Реализация Face ID с помощью Keras

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

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

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

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

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


Эксперимент

Теперь попытаемся увидеть, как работает эта модель, имитируя обычный цикл Face ID. Первым делом зарегистрируем лицо. Затем проведём разблокировку как от лица пользователя, так и от других людей, которые не должны разблокировать устройство. Как упоминалось ранее, различие между лицом, которые «видит» телефон, и лицом зарегистрированным имеет определённый порог.

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

 

Давайте посмотрим, что произойдёт, если один и тот же пользователь попытается разблокировать устройство. Различные позы и выражения лица одного и того же пользователя достигают низкого различия, в среднем около 0,30.

С другой стороны, изображения от разных людей получают среднее различие — около 1,1.

 

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

Вы можете найти здесь весь относительный код Python.

 

Источник: https://vc.ru/

RuCoreNET - лучшее для вас!


Поделись статьей с друзьями


211 просмотров


0 0 vote
Рейтинг статьи
Подписаться
Уведомление о
guest
0 Комментарий
Inline Feedbacks
View all comments


Do NOT follow this link or you will be banned from the site!
0
Would love your thoughts, please comment.x
()
x

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: