Подробное объяснение распознавания лиц MTCNN+FaceNet

Идентификация изображения

  В этой статье представлены основные принципы MTCNN и FaceNet, а в следующей статье представлена ​​программа.

предисловие

   Сегодня компьютерное зрение и искусственный интеллект тесно связаны с человеческой жизнью, например, распознавание и обнаружение лиц, мониторинг нарушений правил дорожного движения, распознавание номерных знаков, красота фотографий с мобильных телефонов, беспилотные технологии, битва человек-машина и так далее. Глубокое обучение, основанное на развитии и совершенствовании глубоких нейронных сетей, постоянно достигало выдающихся результатов в исследованиях в области компьютерного зрения. Например, в соревновании по обнаружению и классификации изображений lmageNet многие алгоритмы, использующие структуру глубокой нейронной сети, достигли ошибки, намного меньшей, чем человеческий глаз может различать изображения; робот AlphaGo Go успешно победил действующих чемпионов мира в области го, Ли Шиши и Ке Ке, Однако теоретическая основа этого по-прежнему неотделима от помощи глубоких нейронных сетей. Видно, что глубокое обучение появилось в области компьютерного зрения. Развитие глубокого обучения не только решает многие сложные проблемы со зрением, но и повышает уровень восприятия образов, ускоряет развитие технологий, связанных с компьютерным зрением и искусственным интеллектом.

  В качестве примера возьмем распознавание и обнаружение лиц, чтобы представить приложение распознавания изображений.Обычно используемые алгоритмы обнаружения лиц включают Dilb, OpenCV, OpenFace, MTCNN и т. д. Распространенные алгоритмы распознавания лиц включают FaceNet, модель InsightFace и т. д. В этой статье MTCNN используется в сочетании с FaceNet для обнаружения и распознавания лиц.

1. МТСНС

MTCNN (Многозадачная сверточная нейронная сеть, многозадачная сверточная нейронная сеть) — модель многозадачной нейронной сети, предложенная Шэньчжэньским научно-исследовательским институтом Академии наук Китая в 2016 г. Для задач обнаружения лиц модель в основном использует три каскадные сети. ., используя идею кадра-кандидата и классификатора для быстрого и эффективного обнаружения лиц. Три каскадные сети: P-Net для быстрого создания окон-кандидатов, R-Net для фильтрации и выбора высокоточных окон-кандидатов и O-Net для создания окончательных ограничивающих рамок и ключевых точек лица. И во многих моделях сверточных нейронных сетей, которые имеют дело с проблемами изображений, в модели также используются пирамиды изображений, граничная регрессия, немаксимальное подавление и другие методы.

Целью первого этапа   MTCNN является генерация лиц-кандидатов. Во-первых, сделайте «пирамидальное» преобразование изображения. Причина в том, что по разным причинам масштаб лица на изображении большой или маленький, и алгоритм распознавания должен адаптироваться к изменению масштаба цели; обнаружение цели, по сути, является точечным произведением функции в цели. площадь и вес шаблона., то, если масштаб шаблона соответствует целевому масштабу, естественно, будет высокий эффект обнаружения. MTCNN использует пирамиду изображений для решения многомасштабной проблемы цели, то есть исходное изображение многократно масштабируется в определенной пропорции для получения многомасштабного изображения, очень похожего на пирамиду.

Модель P-NET обучается на одномасштабных (12*12) изображениях.При выводе, если вы хотите более точно распознавать лица различных масштабов, вам необходимо изменить масштаб распознаваемого лица, чтобы он был близок к масштабу модели. (12*12).

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

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

  R-NET и O-NET MTCNN используют процесс, аналогичный P-NET, и каждый процесс может одновременно выводить результаты классификации и скорректированные значения. Исправьте все поля, чей классификационный балл выше порогового значения и чья степень перекрытия невелика.

  P-NET в конечном итоге выведет множество областей лица, где могут существовать лица, и введет эти области в R-Net для дальнейшей обработки.

  R-NET добавляет полносвязный уровень к первому уровню P-NET.

Выходные данные P-Net представляют собой только возможную область лица с определенной степенью уверенности.В R-NET входные данные будут уточняться и выбираться, и большая часть неправильных входных данных будет отброшена, а регрессия ограничивающей рамки и ключевые точки лица будет использоваться снова.Локатор выполняет регрессию кадров и позиционирование ключевых точек области лица и, наконец, выводит более достоверную область лица для использования O-Net. По сравнению с функцией P-Net 1*1*32, использующей выходные данные полной свертки, R-Net использует 128 полносвязных слоев после последнего слоя свертки, сохраняя больше характеристик изображения и точности. Также превосходит P-Net.

Базовая структура   O-NET — это более сложная сверточная нейронная сеть, которая имеет на один сверточный слой больше, чем R-Net.

Сеть имеет больше входных признаков.В конце сетевой структуры находится более крупный полностью связанный слой из 256, который сохраняет больше признаков изображения.В то же время выполняется различение лиц, регрессия границ области лица и позиционирование признаков лица.Наконец, выводятся координаты верхнего левого угла и нижнего правого угла области лица, а также пять характерных точек области лица. O-Net имеет больше входных данных и более сложную структуру сети, а также имеет лучшую производительность.Вывод этого уровня используется в качестве окончательного вывода модели сети.

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

2. Фейснет

Модель   FaceNet была предложена инженерами Google Флорианом Шроффом, Дмитрием Калениченко, Джеймсом Филбином. Основная идея FaceNet — сопоставить изображения лиц с многомерным пространством и выразить сходство лиц через пространственное расстояние. Пространственное расстояние одного и того же изображения лица относительно невелико, а пространственное расстояние разных изображений лица относительно велико. Таким образом, распознавание лиц может быть реализовано посредством пространственного сопоставления изображений лиц.FaceNet использует метод сопоставления изображений, основанный на глубокой нейронной сети, и функцию потерь, основанную на триплетах (триплетах), для обучения нейронной сети, и сеть напрямую выводит 128-мерное векторное пространство.

Структура сети FaceNet показана на рисунке ниже, на котором пакет представляет обучающие данные лица, за которыми следует глубокая сверточная нейронная сеть, а затем операция нормализации L2 используется для доступа к слою внедрения, чтобы получить функции изображение лица, представление и, наконец, функция потерь триплета (Triplet Loss).

  Так называемое вложение можно понимать как отношение отображения, то есть признак отображается из исходного пространства признаков в новое пространство признаков, а новый признак можно назвать вложением исходного признака.

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

   А Triplet Loss – это потери (Loss), рассчитанные на основе триплета (Triplet). Среди них тройка состоит из Якоря(А), Отрицательного(N), Положительного(П), любая картинка может быть использована в качестве базовой точки (А), и тогда картинка, принадлежащая одному и тому же человеку, является его Р, и она Картинка, не принадлежащая одному и тому же человеку, — это его Н. Цели его обучения следующие:

До обучения сети евклидово расстояние между A и P может быть большим, а евклидово расстояние между A и N может быть небольшим.Как показано в левой части рисунка выше, в процессе обучения сети евклидово расстояние между A и P будут постепенно уменьшаться, а расстояние от A до N будет постепенно увеличиваться. Сеть напрямую изучает разделимость между признаками: расстояние между признаками одного класса должно быть как можно меньше, а расстояние между признаками разных классов должно быть как можно больше.

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

3. Открыть резюме

  В сочетании с MTCNN и FaceNet его можно использовать для распознавания лиц, но если мы хотим выполнять распознавание лиц в режиме реального времени, нам необходимо получать изображения в реальном времени. Я использую инструмент OpenCV, потому что у него есть функция для вызова камеры компьютера. Параметр 0 cv2.VideoCapture (0) означает вызов собственной камеры компьютера. Если он изменен на 1, он вызывает периферийную камеру .

Ссылаться на

Использование MTCNN и facenet для обнаружения и распознавания лиц

Отказаться от передачи пакетов! Давайте посмотрим подробное объяснение процесса вывода распознавания лиц MTCNN!

Как работает MTCNN