FaceNet
FaceNet — це система розпізнавання облич, розроблена Флоріаном Шроффом, Дмитром Каленіченком і Джеймсом Філбіною, групою дослідників із Google. Вперше система була представлена широкому загалу під час конференції IEEE з комп'ютерного бачення та розпізнавання образів в 2015 році[1]. Система використовує глибоку згортову нейронну мережу для навчання відображенню (або вкладенню) із набору зображень облич у 128-вимірний евклідів простір, а подібність між двома зображеннями обличчя оцінюється на основі квадрата евклідової відстані між відповідними нормалізованими векторами у 128-вимірному евклідовому просторі. Функцією витрат використовується Шаблон:Нп. Також, вперше було запроваджено новий онлайн-метод триплетного майнінгу. Система досягла точності 99,63 % на наборі даних Labeled Faces in the Wild, для якого це є найвищим показником[2].
Структура
Базова структура
Структура системи розпізнавання FaceNet схематично представлена на рисунку 1.

Для навчання дослідники використовували вхідними даними приблизно 1800 зображень, у яких для кожної особистості було близько 40 схожих зображень і кілька випадкових зображень, пов'язаних з іншими особами. Дані пакетами подавалися до глибокої згорткової нейронної мережі, яка навчалася за допомогою методу стохастичного градієнтного спуску зі стандартним зворотним поширенням і алгоритмом Adaptive Gradient Optimizer (AdaGrad). Швидкість навчання спочатку була встановлена на рівні 0,05, яку було зменшено на фінальному етапі тренування моделі.
Структура ЗНН
Дослідники використовували два типи архітектур, які вони назвали NN1 і NN2, і досліджували їхні переваги та недоліки. Практичні відмінності між моделями полягають у використанні різних параметрів і, відповідно, різними FLOPS. Подробиці моделі NN1 представлені в таблиці нижче.
| Шар | Розмір входу (rows × cols × #filters) | Розмір виходу (rows × cols × #filters) | Ядро (rows × cols, stride) | Параметрів | FLOPS |
|---|---|---|---|---|---|
| conv1 | 220×220×3 | 110×110×64 | 7×7×3, 2 | 9K | 115M |
| pool1 | 110×110×64 | 55×55×64 | 3×3×64, 2 | 0 | — |
| rnorm1 | 55×55×64 | 55×55×64 | 0 | ||
| conv2a | 55×55×64 | 55×55×64 | 1×1×64, 1 | 4K | 13M |
| conv2 | 55×55×64 | 55×55×192 | 3×3×64, 1 | 111K | 335M |
| rnorm2 | 55×55×192 | 55×55×192 | 0 | ||
| pool2 | 55×55×192 | 28×28×192 | 3×3×192, 2 | 0 | |
| conv3a | 28×28×192 | 28×28×192 | 1×1×192, 1 | 37K | 29M |
| conv3 | 28×28×192 | 28×28×384 | 3×3×192, 1 | 664K | 521M |
| pool3 | 28×28×384 | 14×14×384 | 3×3×384, 2 | 0 | |
| conv4a | 14×14×384 | 14×14×384 | 1×1×384, 1 | 148K | 29M |
| conv4 | 14×14×384 | 14×14×256 | 3×3×384, 1 | 885K | 173M |
| conv5a | 14×14×256 | 14×14×256 | 1×1×256, 1 | 66K | 13M |
| conv5 | 14×14×256 | 14×14×256 | 3×3×256, 1 | 590K | 116M |
| conv6a | 14×14×256 | 14×14×256 | 1×1×256, 1 | 66K | 13M |
| conv6 | 14×14×256 | 14×14×256 | 3×3×256, 1 | 590K | 116M |
| pool4 | 14×14×256 | 3×3×256, 2 | 7×7×256 | 0 | |
| concat | 7×7×256 | 7×7×256 | 0 | ||
| fc1 | 7×7×256 | 1×32×128 | maxout p=2 | 103M | 103M |
| fc2 | 1×32×128 | 1×32×128 | maxout p=2 | 34M | 34M |
| fc7128 | 1×32×128 | 1×1×128 | 524K | 0.5M | |
| L2 | 1×1×128 | 1×1×128 | 0 | ||
| Загалом | 140M | 1.6B |
Триплетна функція витрат

Функція витрат, яка використовувалася в системі FaceNet, отримала назву «Триплетна функція витрат». Це була нова ідея, запропонована розробниками системи FaceNet. Зазначена функція визначається за допомогою триплетів навчальних зображень . У цій трійці, (Шаблон:Lang-en, «якірне зображення») позначає базове зображення людини, (Шаблон:Lang-en, «позитивне зображення») позначає якесь інше зображення тієї ж самої людини, чиє зображення відповідає , і (Шаблон:Lang-en, «негативне зображення») позначає зображення іншої людини, відмінної від людини, яка зображена на . Нехай бути якимось зображенням, а буде вкладенням зображення в 128-вимірний евклідів простір. Вважємо, що -норма дорівнює 1. (-норма вектора у скінченновимірному евклідовому просторі позначається як .) Ми вибираємо з набору навчальних даних триплети . Тренування полягає в тому, щоб після навчання на всіх триплетах у наборі навчальних даних виконувалася наступна умова, яка називається «обмеженням триплета»:
де є сталою, яка називається запасом (Шаблон:Lang-en), і її значення потрібно встановлювати вручну. Його значення було встановлено як 0,2.
Таким чином, функція, яку потрібно мінімізувати, це така функція, яка називається функцією триплетних витрат:
Вибір триплетів
Загалом кількість триплетів виду буде занадто великою, щоб перебрати усі можливі комбінації. Для прискорення обчислень, дослідники Google розглядали лише ті триплети, які порушують обмеження триплетів, яке визначається наступним чином. Для якірного зображення вибирається позитивне зображення для котрого відстань є максимальною (таке позитивне зображення називається «жорстким позитивним зображенням»), а негативне зображення для котрого відстань є мінімальною (називається «жорстким негативним зображенням»). Оскільки використання всього набору навчальних даних для визначення жорстких позитивних і жорстких негативних зображень було обчислювально дорогим і нездійсненним, дослідники експериментували з кількома методами для вибору триплетів.
- Триплети генеруються в режимі офлайн, коли обчислюється мінімум і максимум для підмножини даних.
- Триплети генеруються онлайн, коли вибираються жорсткі позитивні/негативні приклади з міні-батчу.
Продуктивність
На широко використовуваному наборі даних Labeled Faces in the Wild (LFW) система FaceNet досягла точності 99,63 %, що є найвищим результатом на цьому наборі даних[2]. На YouTube Faces DB система досягла точності 95,12 %[1].
Див. також
Подальше читання
- Шаблон:Cite book
- Шаблон:Cite book
- For a discussion on the vulnerabilities of Facenet-based face recognition algorithms in applications to the Deepfake videos: Шаблон:Cite book
- For a discussion on applying FaceNet for veifying faces in Android: Шаблон:Cite book