Обнаружение лиц и распознавание лиц
Обнаружение лиц — это первый шаг в распознавании и обработке лиц. Он в основном используется для обнаружения и определения местоположения лиц на изображениях, а также для возврата высокоточных координат кадра лица и координат характерных точек лица. Распознавание лиц дополнительно извлекает черты идентичности, содержащиеся в каждом лице, и сравнивает их с известными лицами, чтобы идентифицировать личность каждого лица. В настоящее время сценарии применения обнаружения/распознавания лиц постепенно развиваются от внутреннего к открытому, от одной ограниченной сцены к таким сценам, как площади, станции, входы в метро и т. д., к обнаружению/распознаванию лиц также предъявляются все более высокие требования, такие как как: масштаб лица Изменчивый, большой по количеству и разнообразный по позам, включая снимки лиц сверху, окклюзию шляпами и масками, преувеличенные выражения, макияж и камуфляж, плохие условия освещения, низкое разрешение и даже трудно различимые невооруженным глазом . С развитием глубокого обучения методы обнаружения / распознавания лиц, основанные на технологии глубокого обучения, достигли большого успеха.В этом документе в основном представлена модель глубокого обучения MTCNN для обнаружения лиц и модель глубокого обучения FaceNet для распознавания лиц.
В 2016 году Кайпэн Чжан, Чжанпэн Чжан, Чжифэн Ли, Ю Цяо предложили модель MTCNN (многозадачные каскадные сверточные сети) для обнаружения лиц. Этот режим представляет собой многозадачную структуру обнаружения лиц. Он использует три структуры каскадного алгоритма CNN для одновременного обнаружения лиц и обнаружения характерных точек лица. Эффект обнаружения показан на следующем рисунке:
Инженеры Google Флориан Шрофф, Дмитрий Калениченко и Джеймс Филбин предложили модель FaceNet для распознавания лиц, которая не использует традиционный метод softmax для обучения классификации, а извлекает один из слоев как функцию для обучения модели от изображения до евклидова пространства. , Метод кодирования, а затем на основе этого кодирования выполняется распознавание лиц, верификация лиц и кластеризация лиц. Эффект распознавания лиц показан на рисунке ниже, где число, представленное на горизонтальной линии, представляет собой расстояние между лицами.Когда расстояние между лицами меньше 1,06, это можно рассматривать как одного и того же человека.
Модель MTCNN
MTCNN — это многозадачная каскадная модель глубокого обучения CNN для обнаружения лиц, которая всесторонне рассматривает регрессию кадра лица и обнаружение ключевых точек лица. Общая сетевая архитектура MTCNN показана на следующем рисунке:
Во-первых, фотография будет преобразована в изображения разных размеров в соответствии с различными коэффициентами масштабирования, чтобы сформировать пирамиду признаков изображения. PNet в основном получает окно-кандидат и вектор регрессии ограничивающей рамки области лица. И используйте ограничивающую рамку для регрессии, откалибруйте окно-кандидат, а затем объедините сильно перекрывающиеся поля-кандидаты с помощью немаксимального подавления (NMS). RNet обучает кадр-кандидат PNet в сети RNet, затем использует значение регрессии ограничивающего прямоугольника для точной настройки кадра-кандидата, а затем использует NMS для удаления перекрывающегося кадра. Функция ONet аналогична функции RNet, за исключением того, что она удаляет перекрывающиеся окна-кандидаты и одновременно отображает пять ключевых точек лица.
Обучающие данные для обнаружения лиц MTCNN могут быть получены изMM lab.IE. Толстый черный ящик. Квота. Скоро/проекты/wi…изображений, в общей сложности 93 703 лица, помеченных, как показано на следующем изображении:
Формат файла тега следующий:
__Wed May 30 2018 15:03:55 GMT+0800 (CST)____Wed May 30 2018 15:03:55 GMT+0800 (CST)__#文件名
File name
#标记框的数量
Number of bounding box __Wed May 30 2018 15:03:55 GMT+0800 (CST)____Wed May 30 2018 15:03:55 GMT+0800 (CST)__
#Где x1, y1 — координаты левого верхнего угла рамки маркера, w, h — ширина рамки маркера, размытие, выражение, освещение, недопустимость, окклюзия, поза — атрибуты рамки маркера, такие как размыто ли оно, условия освещения, закрыто ли оно, эффективно ли, осанка и т. д.
x1, y1, w, h, blur, expression, illumination, invalid, occlusion, pose
Учебные данные для обнаружения ключевых точек лица можно загрузить с http://mmlab.ie.cuhk.edu.hk/archive/CNN_FacePoint.htm. Набор данных содержит 5 590 изображений из набора данных LFW и 7 876 изображений, загруженных с веб-сайта. Следующее:
Формат файла тега:
#Первые данные — имя файла, вторые и третьи данные — координаты левого верхнего угла рамки метки, четвертые и пятые данные — длина и ширина рамки метки, шестые и седьмые данные — левая точка метки глаза, первая Восьмая и девятая данные являются точками метки правого глаза, десятая и одиннадцатая данные являются точками метки левого рта, а последние две координаты являются точками метки правого рта.
lfw_5590\Abbas_Kiarostami_0001.jpg 75 165 87 177 106.750000 108.250000 143.750000 108.750000 131.250000 127.250000 106.250000 155.250000 142.750000 155.250000
Сетевая структура PNet представляет собой структуру полностью сверточной нейронной сети, как показано на следующем рисунке:
Вход обучающей сети представляет собой изображение 12*12, поэтому перед обучением необходимо сгенерировать обучающие данные сети PNet. Обучающие данные могут генерировать ряд ограничивающих прямоугольников путем вычисления долговой расписки гарантированного истинного поля. Обучающие данные могут быть получены с помощью скользящего окна или случайной выборки.Обучающие данные делятся на три типа: положительные выборки, отрицательные выборки и промежуточные выборки. Среди них положительный положительный — это сгенерированное скользящее окно, и IOU гарантии True Box больше 0,65, отрицательный образец — IOU меньше 0,3, а промежуточный образец — долговая расписка больше 0,4 и меньше 0,65.
Затем измените размер ограничивающей рамки на изображение 12*12, преобразуйте его в структуру 12*12*3 и сгенерируйте обучающие данные для сети PNet. Обучающие данные проходят через 10 ядер свертки 3 * 3 * 3 и 2 * 2 операций максимального объединения (шаг = 2) для создания 10 карт признаков 5 * 5. Затем через 16 ядер свертки 3*3*10 генерируются 16 карт признаков 3*3. Затем через 32 ядра свертки 3*3*16 генерируются 32 карты признаков 1*1. Наконец, для 32 карт признаков 1*1 можно использовать два ядра свертки 1*1*32 для создания двух карт признаков 1*1 для классификации; четыре ядра свертки 1*1*32, создание 4 карт признаков 1*1 для регрессии. оценка кадра; 10 ядер свертки 1 * 1 * 32, создание 10 карт признаков 1 * 1 для оценки точек контура лица.
Структура модели RNet выглядит следующим образом:
Входные данные модели представляют собой изображение размером 24*24, а 28 карт признаков 11*11 генерируются с помощью 28 ядер свертки 3*3*3 и максимального объединения 3*3 (шаг=2); 48 ядер свертки 3*3*28 и 3*3 (шаг=2) максимальное объединение генерирует 48 карт признаков 4*4; после прохождения 64 ядер свертки 2*2*48 генерируется 64 3*3 Карта признаков ; преобразует карту признаков 3*3*64 в полносвязный слой размером 128; преобразовать задачу классификации блока регрессии в полносвязный слой размера 2; преобразовать задачу регрессии положения ограничивающего блока в размер 4; полностью связанный слой; ключевые точки контура лица. преобразуются в полносвязный слой размера 10.
ONet является последней сетью в MTCNN и используется для окончательного вывода сети. Генерация обучающих данных ONet аналогична RNet.Данные обнаружения представляют собой ограничивающие рамки, обнаруженные изображениями после прохождения через сети PNet и RNet, включая положительные выборки, отрицательные выборки и промежуточные выборки. Структура модели ONet выглядит следующим образом:
Входные данные модели представляют собой изображение 48*48*3, которое преобразуется в 32 карты признаков 23*23 посредством 32 ядер свертки 3*3*3 и максимального объединения 3*3 (шаг=2); 64 свертки 3*3*32. ядра и максимальное объединение 3*3 (шаг=2) преобразуются в 64 карты функций 10*10; через 64 ядра свертки 3*3*64 и 3* после максимального объединения 3 (шаг=2) оно преобразуется в 64 Карты объектов 4*4; преобразованы в 128 карт объектов 3*3 с помощью 128 ядер свертки 2*2*64; преобразованы в карты объектов 3*3 с помощью операции полной связи 256 полносвязных слоев; лучше всего генерировать функции классификации блоков регрессии размера 2; признаки регрессии размера 4 для положения блоков регрессии; размера 10 для признаков регрессии положений контура лица.
Вывод модели MTCNN
Процесс вывода MTCNN показан на следующем рисунке:
Создайте предсказанные ограничивающие рамки из исходного изображения и PNet. Введите исходное изображение и ограничивающую рамку, сгенерированную PNet, и создайте исправленную ограничивающую рамку через RNet. Введите изображение элемента и ограничивающую рамку, сгенерированные RNet, и сгенерируйте скорректированную ограничивающую рамку и ключевые точки контура лица через ONet. Процесс выполнения следующий:
- Первое чтение изображения, которое нужно обнаружить: image = cv2.imread(imagepath)
- Загрузите параметры обученной модели и создайте объект обнаружения:Detector = MtcnnDetector
- Выполните операцию логического вывода: all_boxes, ориентиры =Detector.detect_face(изображение)
- Нарисуйте целевое поле: cv2.rectangle (изображение, поле, (0,0,255))
Модель FaceNet
FaceNet в основном используется для проверки того, является ли лицо одним и тем же человеком, и определения того, кто этот человек по лицу. Основная идея FaceNet — сопоставить изображения лиц с многомерным пространством и выразить сходство лиц через пространственное расстояние. Пространственное расстояние одного и того же изображения лица относительно невелико, а пространственное расстояние разных изображений лица относительно велико. Таким образом, распознавание лиц может быть реализовано посредством пространственного сопоставления изображений лиц.В FaceNet для обучения нейронной сети используется метод сопоставления изображений на основе глубокой нейронной сети и функция потерь на основе триплетов (триплетов), а сеть напрямую выводит 128-мерное векторное пространство.
Данные обучения FaceNet можно загрузить с http://www.cbsr.ia.ac.cn/english/CASIA-WebFace-Database.html Данные обучения включают 10575 человек и в общей сложности 453453 фотографии. Набор данных проверки можно загрузить с http://vis-www.cs.umass.edu/lfw/, который содержит 13 000 изображений. Организационная структура обучающих данных выглядит следующим образом, где имя каталога — это имя человека, а файлы в каталоге — это фотографии соответствующего человека.
__Wed May 30 2018 15:03:55 GMT+0800 (CST)____Wed May 30 2018 15:03:55 GMT+0800 (CST)__Aaron_Eckhart
Aaron_Eckhart_0001.jpg
Aaron_Guiel
Aaron_Guiel_0001.jpg
Aaron_Patterson
Aaron_Patterson_0001.jpg
Aaron_Peirsol
Aaron_Peirsol_0001.jpg
Aaron_Peirsol_0002.jpg
Aaron_Peirsol_0003.jpg
Aaron_Peirsol_0004.jpg
...
__Wed May 30 2018 15:03:55 GMT+0800 (CST)____Wed May 30 2018 15:03:55 GMT+0800 (CST)__
Затем предварительно обработайте каждое изображение в обучающих данных, определите лицо с помощью модели MTCNN и сгенерируйте обучающие данные FaceNet, как показано на следующем рисунке:
Соответствующая структура данных сформирована следующим образом:
__Wed May 30 2018 15:03:55 GMT+0800 (CST)____Wed May 30 2018 15:03:55 GMT+0800 (CST)__Aaron_Eckhart
Aaron_Eckhart_0001_face.jpg
Aaron_Guiel
Aaron_Guiel_0001_face.jpg
……
__Wed May 30 2018 15:03:55 GMT+0800 (CST)____Wed May 30 2018 15:03:55 GMT+0800 (CST)__
Структура сети FaceNet показана на следующем рисунке:
Среди них пакетная обработка представляет обучающие данные лица, за которыми следует глубокая сверточная нейронная сеть, а затем операция нормализации L2 используется для получения представления признаков изображения лица и, наконец, функция потерь триплета (триплетная потеря). .
На следующем рисунке показана глубокая сверточная нейронная сеть архитектуры Inception, используемая в FaceNet:
Конец структуры модели использует тройную потерю для прямой классификации. Вдохновением для тройной потери является то, что традиционные функции потерь имеют тенденцию отображать изображения лиц с одним классом признаков в одно и то же пространство. Потеря тройки пытается отделить отдельное изображение лица от других изображений лица. Тройки на самом деле являются тремя примерами, такими как (привязка, позиция, отрицание), которые оцениваются по отношению расстояния. То есть в как можно большем количестве троек расстояние между якорем и положительным примером меньше, чем расстояние между якорем и отрицательным примером, как показано на следующем рисунке:
Математически это можно выразить так:
Когда модель обучается в каждой мини-партии, для расчета значения потери триплета необходимо выбрать разумный тройной триплет. Если метод грубой силы используется для поиска ближайшего отрицательного примера и самого дальнего положительного примера из всех выборок, а затем оптимизации, время поиска будет слишком большим, а сходимость обучения будет затруднена из-за неправильно помеченных изображений. Можно использовать метод онлайн-генерации триплетов: в каждом мини-пакете при генерации триплета находятся все пары якорь-позиции, а затем для каждой пары якорь-позиции находятся жесткие отрицательные выборки. Основной процесс выглядит следующим образом:
- В начале мини-пакета фотографии лиц выбираются из обучающего набора данных. Например, сколько людей отбирается в каждой партии и сколько изображений отбирается каждым человеком, чтобы были получены фотографии лиц, подлежащие выборке.
- Вычислите вложения этих выборочных изображений в сетевую модель, чтобы тройки были получены путем вычисления евклидова расстояния между вложениями изображений.
- По полученному триплету вычисляются триплет-потери, оптимизируется модель и обновляется вложение.
Вывод модели FaceNet
Процесс вывода модели FaceNet выглядит следующим образом:
- С помощью модели обнаружения лиц MTCNN изображения лиц извлекаются из фотографий.
- Введите изображение лица в FaceNet и рассчитайте вектор признаков встраивания.
- Сравните евклидово расстояние между векторами признаков, чтобы определить, являются ли они одним и тем же человеком.Например, когда расстояние между признаками меньше 1, считается, что это один и тот же человек, а когда расстояние между признаками больше 1, это считается другим человеком.
Суммировать
В этой статье сначала рассказывается об обнаружении лиц и распознавании лиц.Распознавание лиц используется для определения местоположения лица на изображении, а распознавание лиц используется для идентификации личности лица. Затем объяснил основную идею модели MTCNN и проанализировал ключевые технологии MTCNN, в основном включая обучающие данные, сетевую архитектуру, PNet, RNet, ONet и рассуждения модели. Затем объясняются основные идеи и ключевые технологии модели FaceNet, включая обучающие данные, структуру сети, уравнение потерь и выбор триплетов. Пользователи могут применять архитектуры моделей MTCNN и FaceNet к соответствующим сценариям обнаружения и распознавания лиц в промышленной сфере.
использованная литература
[1] MTCNN: a Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Networks.
[2] https://github.com/AITTSMD/MTCNN-Tensorflow
[3] FaceNet: A Unified Embedding for Face Recognition and Clustering
[4] https://github.com/davidsandberg/facenet
об авторе
У Вэй(WeChat: allawnweiwu): доктор философии, сейчас архитектор IBM. В основном занимается платформой глубокого обучения и исследованиями приложений, исследованиями и разработками в области больших данных.
