0. Обзор статьи
Мы знаем, что распознавание лиц широко используется в последние годы.Эта черная технология влияет на посещение лиц, общение в социальных сетях и оплату лиц.Особенно в последние годы популярность машинного обучения сделала распознавание лиц все более и более точным в применение и точность скорость достигла более высокого уровня.
Далее вам предстоит раскрыть принцип этой черной технологии.
1. Процесс распознавания лиц
Распознавание лиц состоит из ряда нескольких связанных задач:
- Начните с поиска всех лиц на изображении.
- Для каждого лица он по-прежнему может идентифицировать лицо одного и того же человека, независимо от того, насколько оно светлое или темное, или отвернутое.
- Уметь находить уникальные черты в каждом лице, которые можно использовать для отличия других, например, размер глаз, длину лица и т. д.
- Наконец, характеристики этого лица сравниваются со всеми известными лицами, чтобы определить, кто этот человек.
Шаг 1: Найдите все лица
Очевидно, что в процессе распознавания лиц мы должны сначала найти лицо на картинке. У всех нас есть портретный режим при съемке с помощью мобильного телефона или камеры, который может легко определить положение лица и помочь камере быстро сфокусироваться.
Мы обязаны Полу Виоле и Майклу Джонсу в 2000 году за то, что они изобрели метод распознавания лиц, который быстро работал на дешевых камерах, и использование распознавания лиц на камерах стало массовым явлением. Однако теперь у нас есть более надежное решение HOG (гистограмма ориентированных градиентов), алгоритм, способный обнаруживать контуры объектов.
Сначала мы делаем изображение в градациях серого, потому что информация о цвете бесполезна для распознавания лиц.
Мы анализируем каждый пиксель и окружающие его пиксели и рисуем стрелку в соответствии с яркостью и темнотой.Направление стрелки представляет собой направление, в котором пиксель постепенно темнеет.Если мы повторим операцию для каждого пикселя, последний пиксель будет заменен по стрелке. Эти стрелки называются градиентами, и они показывают переход изображения от светлого к темному.
Анализ каждого пикселя для нас немного неэкономичен, потому что он слишком детализирован, и мы можем потеряться в море пикселей, мы должны смотреть на поток света и тени под более высоким углом.
Для этого разбиваем изображение на квадратики размером 16х16 пикселей. В каждом маленьком квадрате подсчитайте, сколько бреет в каждом основном направлении (сколько точек вверх, сколько точек вверх, вправо и т. д.). Затем замените исходный маленький квадрат стрелкой с наиболее направленным направлением.
В конечном результате мы преобразуем исходное изображение в очень простое представление HOG, которое легко фиксирует основную структуру лица.
Чтобы найти лицо на изображении HOG, все, что нам нужно сделать, это часть, которая больше всего похожа на некоторые известные шаблоны HOG. Эти шаблоны HOG извлекаются из других данных тренировки лица.
Шаг 2: Различные позы лица
Мы идентифицировали лица на картинке, так как же нам идентифицировать лица, которые смотрят в разные стороны?
Для компьютера смотреть на разные лица по-разному, поэтому мы должны соответствующим образом настроить лица на искаженном изображении, чтобы глаза и рот всегда перекрывали объект.
Для этого воспользуемся алгоритмом оценки ориентиров лица. Есть много других алгоритмов, которые могут это сделать, но на этот раз мы используем метод, изобретенный Вахидом Каземи и Жозефиной Салливан в 2014 году.
Основная идея этого алгоритма состоит в том, чтобы найти вездесущие точки (называемые характерными точками, ориентирами) на лицах 68 человек.
- Контур подбородка 17 баллов [0-16]
- 5 точек на левой брови [17-21]
- 5 точек на правой брови [22-26]
- 4 точки на переносице [27-30]
- 5 точек на кончике носа [31-35]
- Левый глаз 6 баллов [36-41]
- Правый глаз 6 баллов [42-47]
- 12 точек внешних губ [48-59]
- Внутренняя губа 8 баллов [60-67]
С этими 68 точками мы можем легко узнать, где находятся глаза и рот, а затем мы будем вращать, масштабировать и неправильно обрезать изображение, чтобы сделать глаза и рот как можно ближе к центру.
Грани теперь в основном выровнены, что делает следующий шаг более точным.
Шаг 3: Закодируйте лицо
У нас все еще есть основная проблема, которая не решена, а именно, как различать разные лица.
Самый простой способ сделать это — сравнить неизвестное лицо, которое мы нашли на шаге 2, с лицами, которые мы уже знаем. Когда мы обнаруживаем, что неизвестное лицо похоже на ранее аннотированное лицо, мы можем предположить, что это один и тот же человек.
Мы, люди, можем легко отличить два разных лица по такой информации, как размер глаз, цвет волос и т. д., но как компьютеры могут различать? Да, мы должны дать им количественную оценку, измерить их разницу, как мы это делаем?
На самом деле эту информацию легко различить для человеческого лица, но для компьютера эти значения мало что значат. На самом деле самый точный способ — позволить компьютеру самому определить, какие измерения он хочет собрать. Глубокое обучение лучше людей знает, какие измерения лица важны.
Итак, решение состоит в том, чтобы обучить глубокую сверточную нейронную сеть и научить ее генерировать 128 измерений лица.
Для каждого сеанса обучения наблюдаются три разных изображения лица:
- Загрузите тренировочное изображение лица известного человека
- Загрузить другую фотографию того же человека
- Загрузить фото другого человека
Затем алгоритм просматривает измерения, которые он сгенерировал для трех изображений. Затем слегка настройте нейронную сеть, чтобы первое и второе изображения давали близкие измерения, а второе и третье — немного разные измерения.
Нам приходится постоянно корректировать образцы и повторять вышеуказанные шаги миллион раз, что действительно является огромной проблемой, но как только обучение завершено, он может легко находить лица.
К счастью, великие боги OpenFace уже сделали это, и они выпустили несколько обученных сетей, которые можно использовать напрямую.Мы можем использовать его из коробки, не развертывая сложное машинное обучение, благодаря духу открытого исходного кода.
Какого черта эти 128 измерений?
На самом деле, нам все равно, это не имеет для нас значения. Мы обеспокоены тем, что наша сеть должна иметь возможность получать почти одинаковое значение при просмотре двух разных фотографий одного и того же человека.
Шаг 4: Узнайте имя человека по коду
Последний шаг на самом деле самый простой, все, что нам нужно сделать, это найти человека в базе данных, который имеет самые близкие размеры к нашему тестовому изображению.
Как это сделать, воспользуемся готовыми математическими формулами для расчета евклидова расстояния двух значений 128D.
Таким образом, мы получаем значение евклидова расстояния, а система присвоит ему пороговое значение, которое считается евклидовым расстоянием одного и того же человека, то есть, если мы превысим это пороговое значение, мы определим, что они одинаковы ( потерян), один (отдельно) (брат) и (брат) .
Вот как достигается распознавание лиц Давайте еще раз рассмотрим процесс:
- Используйте HOG, чтобы узнать, где находятся все лица на картинке.
- Вычислите 68 характерных точек лица и соответствующим образом отрегулируйте положение лица, чтобы выровнять лицо.
- Поместите изображение лица, полученное на предыдущем шаге, в нейронную сеть, получите 128 измерений признаков и сохраните их.
- Рассчитайте евклидово расстояние вместе со значениями измерений, которые мы сохранили ранее, получите значение евклидова расстояния и сравните значение, чтобы выяснить, является ли это одним и тем же человеком.
2. Сценарии применения распознавания лиц
Распознавание лиц делится на два этапа: обнаружение лиц и распознавание лиц, и сценарии их применения также различаются.
Цель обнаружения лица - узнать лицо и получить положение лица Мы можем использовать его в некоторых сценах красоты, смены кожи, вырезания карты и смены лица.