Як працює Face ID в iPhone X: алгоритм на Python

  • 25 октября, 17:20
  • 2131
  • 0

Використовуючи глибоке навчання, смартфон здатний розпізнати обличчя у найдрібніших деталях, тим самим «впізнаючи» власника кожен раз, коли той бере свій телефон. Зображення особи користувача знімають за допомогою інфрачервоної камери, яка більш стійка до змін світла і кольору навколишнього середовища. Дивно, але Apple заявила, що цей метод навіть безпечніше, ніж Touch ID: частота помилок 1 до 1 млн.

У цій статті розібраний принцип алгоритму, подібного Face ID, з використанням Keras. Також представлені деякі напрацювання, створені за допомогою Kinect.

  Як працює Face ID в iPhone X: алгоритм на Python

Розуміння Face ID

Перший крок - аналіз принципу роботи Face ID на iPhone X.

Технічна документація може нам в цьому допомогти. З Touch ID користувач повинен був спочатку зареєструвати свої відбитки, кілька разів натиснувши на датчик. Після 10-15 різних торкань смартфон завершує реєстрацію.

Аналогічно з Face ID: користувач повинен зареєструвати своє обличчя. Процес досить простий: користувач просто дивиться на телефон так, як робить це щодня, а потім повільно повертає голову по колу, тим самим реєструючи особу в різних позах.

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

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

  Як працює Face ID в iPhone X: алгоритм на Python

По-перше, мережа повинна тренуватися з нуля, використовуючи нові дані, отримані з особи користувача. Це вимагало б багато часу, енергії та безліч даних різних осіб (які не є особою користувача), щоб мати негативні приклади.

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

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

Від імені до чисел

Сіамська нейронна мережа в основному складається з двох ідентичних нейронних мереж. Ця архітектура може навчитися розрізняти відстані між конкретними даними, такими як зображення.

Ідея полягає в тому, що ви передаєте пари даних через сіамські мережі (або просто передаєте дані в два різних кроки через одну і ту ж мережу), мережа відображає їх у низькорозмірних характеристиках простору, як n-мірний масив, а потім ви навчаєте мережу, щоб зробити таке зіставлення, що дані точок з різних класів були якнайдалі, в той час як дані точок з одного і того ж класу знаходилися якомога ближче.

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

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

  Як працює Face ID в iPhone X: алгоритм на Python

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

У чому заключається перевага такого підходу? У тому, що у вас, нарешті, є модель plug and play, яка може розпізнавати різних користувачів без будь-якої додаткової підготовки, а просто обчислювати знаходження особи користувача на прихованої мапі осіб, що утворилася після налаштування Face ID.

Крім того, Face ID здатний адаптуватися до змін у вашій зовнішності: як до раптових (наприклад, окуляри, шапка, макіяж), так і до «поступових» (відростаюче волосся). Це робиться шляхом додавання опорних векторів особи, обчислених на основі вашого нового зовнішнього вигляду, на карту.

Реалізація Face ID за допомогою Keras

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

Існує веб-сайт з набором даних RGB-D облич. Він складається з серії RGB-D-фотографій людей, що стоять в різних позах і роблять різні вирази обличчя, як це сталося б у разі використання iPhone X. Щоб побачити остаточну реалізацію, ось посилання на GitHub 

Створюється надточна мережу на основі архітектури SqueezeNet. В якості вхідних даних мережа приймає як RGBD-зображення облич, так і чотирьохканальні зображення, і виводить відмінності між двома вкладеннями. Мережа навчається зі значною втратою, яка мінімізує різницю між зображеннями однієї і тієї ж людини і максимізує відмінність між зображеннями різних осіб.

Після навчання мережа здатна конвертувати обличчя в 128-мірні масиви, так що фотографії однієї і тієї ж людини групуються разом. Це означає, що для розблокування пристрою нейронна мережа просто обчислює відмінність між знімком, який потрібно під час розблокування, з зображеннями, збереженими на етапі реєстрації. Якщо відмінність підходить під певне значення, пристрій розблокується.

Використовується алгоритм t-SNE. Кожен колір відповідає якійсь людині: як ви можете помітити, мережа навчилася групувати ці фотографії. Цікавий графік також виникає при використанні алгоритму PCA для зменшення розмірності даних.

Експеримент

Тепер спробуємо побачити, як працює ця модель, імітуючи звичайний цикл Face ID. Насамперед зареєструємо особу. Потім проведемо розблокування як від особи користувача, так і від інших людей, які не повинні розблокувати пристрій. Як згадувалося раніше, відмінність між обличчям, які «бачить» телефон, і обличчям зареєстрованим має певний поріг.

Почнемо з реєстрації. Візьмемо серію фотографій однієї і тієї ж людини з набору даних і змоделюємо фазу реєстрації. Тепер пристрій обчислює вкладення для кожної з цих поз і зберігає їх локально.

  Як працює Face ID в iPhone X: алгоритм на Python

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

  Як працює Face ID в iPhone X: алгоритм на Python

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

Таким чином, значення порога, встановлене приблизно в 0,4, має бути достатнім для запобігання розблокування телефону незнайомцями.


0 комментариев
Сортировка:
Добавить комментарий

IT Новости

Смотреть все