Введение
Технология распознавания лиц — это биометрическая технология, которая может использоваться для подтверждения личности пользователя. По сравнению с традиционной технологией идентификации, технология распознавания лиц имеет большие преимущества, в основном отражающиеся на удобстве. Традиционные методы аутентификации личности, такие как пароли, PIN-коды, радиочастотные карты, пароли, отпечатки пальцев и т. д., требуют, чтобы пользователи запоминали сложные пароли или имели при себе ключ аутентификации личности. И пароли, и карты подвержены риску утери и утечки, по сравнению с распознаванием лиц интерактивность и безопасность недостаточно высоки. Распознавание лиц может использовать камеру для бесконтактного распознавания на большом расстоянии.По сравнению с отпечатками пальцев, оно устраняет операцию нажатия пальцем в области распознавания и может быть автоматически распознано камерой.
В настоящее время технология распознавания лиц широко используется в сфере безопасности, наблюдения, общей идентификации, посещаемости, поиска и спасения потерянных детей и других областях, что играет важную роль в повышении эффективности аутентификации личности. И в настоящее время проводятся более глубокие исследования в области распознавания лиц, включая распознавание пола, оценку возраста, оценку настроения и т. д. Технология распознавания лиц более высокого уровня и высокой точности оказывает огромное влияние на городскую безопасность и бесконтактную аутентификацию личности. Макроскопически проблемы распознавания лиц делятся на две категории: верификация лиц и распознавание лиц. Подтверждение лица обычно представляет собой сравнение один к одному, чтобы определить, являются ли две фотографии одним и тем же человеком. Распознавание лиц обычно представляет собой сравнение «один ко многим», чтобы определить, является ли человек на фотографии определенным человеком в базе данных.
На распознавание лиц влияет множество факторов, которые в основном делятся на основные факторы, внутренние факторы и внешние факторы. Основным фактором является то, что сами лица похожи, а черты лица и контуры людей примерно одинаковы; внутренние факторы - это внутренние атрибуты людей, такие как возрастные изменения, психическое состояние, макияж и т. д.; отсутствие очков , маски и т.д. для покрытия. Человеку легко распознать человека, для компьютеров картинки представлены многомерной цифровой матрицей, и задача распознавания сложна.
Самым ранним распознаванием лиц является полуавтоматическое распознавание лиц, при котором характерные точки лица отмечаются вручную, а компьютер выполняет сопоставление лиц в соответствии с относительным положением характерных точек.
С 1965 по 1990 годы исследования по распознаванию лиц в основном основывались на методе признаков геометрической структуры лица и сопоставлении шаблонов с использованием геометрических признаков для извлечения положения важных характерных точек, таких как глаза, рот и нос, и геометрических интуитивных форм лица. важные органы, такие как глаза, классифицируйте признаки и вычисляйте взаимное положение и расстояние между характерными точками на основе этого, что используется для измерения сходства двух изображений лица.
С 1991 по 1997 год существовало множество методов, основанных на целом, в том числе метод главных компонент (PCA), метод линейного дискриминантного анализа (LDA) и т. д. Эти методы уменьшают размерность лиц, находя набор проекционных векторов, а затем отправляют низкоразмерные признаки в классификаторы машинного обучения, такие как SVM, для классификации лиц.
С 1998 по 2013 годы появилось множество методов помощи распознаванию лиц с помощью камер глубины, структурированного света, инфракрасных камер и другого оборудования, что значительно повысило точность распознавания лиц. В то же время существуют ранние методы классификации на основе признаков, которые извлекают локальные признаки в разных положениях лица, и результаты часто более надежны, чем общий метод. Точно так же признаки HOG, LBP, SIFI и SURF извлекаются из блоков изображения, а векторы локальных признаков каждого модуля объединяются как представление лица. Существуют также комплексные методы, которые сначала используют методы на основе признаков для получения локальных признаков, а затем используют методы подпространства (такие как PCA, LDA) для получения признаков низкой размерности, которые будут основаны на методах на основе глобальных и локальных признаков. Среди таких методов GaussianFace достиг наилучшей точности 98,52% на LFW, что почти соответствует многим более поздним методам глубокого обучения.
После 2006 года глубокое обучение стало цениться исследователями, и все больше и больше статей публикуется в международных журналах. Затем глубокое обучение стало широко использоваться в различных областях обнаружения целей.В 2015 году FaceNet команды Google достигла средней точности 99,63 % на наборе данных LFW.Показатель точности распознавания лиц на основе глубокого обучения уже выше, чем у обучение в значительной степени доминировало в области распознавания лиц.
Общий процесс распознавания лиц
Большая часть распознавания лиц включает в себя следующие процессы: обнаружение лиц (Face Detection), выравнивание лиц (Face Alignment), представление лица (Face Representation) и сопоставление лиц (Face Matching). Как показано ниже:
- Распознавание лиц
На входном изображении определяется область лица, и возвращаются координаты ограничивающей рамки лица.
- Выравнивание лица (регистрация лица)
Характерные точки лица обнаруживаются из области лица, и лицо нормализуется на основе характерных точек, чтобы масштаб и угол области лица были согласованы, что удобно для извлечения признаков и сопоставления лиц. Конечной целью выравнивания лица является определение точной формы лица в известной области лица, которая в основном делится на две категории: методы, основанные на оптимизации, и методы, основанные на регрессии. Здесь алгоритм выравнивания лица на основе дерева регрессии:Метод распознавания лицевых ориентиров, опубликованный Вахидом Каземи и Жозефиной Салливан в CVPR2014., представляет собой метод выравнивания лица, основанный на дереве регрессии, который возвращает лицо из текущей формы к реальной форме путем построения каскадного дерева остаточной регрессии (GBDT).
- Представление лица
Выполните извлечение признаков из нормализованной области лица, чтобы получить векторы признаков. Например, некоторые методы глубокой нейронной сети используют 128 признаков для представления лиц. Идеальная ситуация состоит в том, что векторы признаков, извлеченные из фотографий разных людей, различны. Могут быть извлечены похожие векторы признаков. с разных фотографий одного и того же человека.
- Сопоставление лиц
Векторы признаков, вычисленные из двух изображений, сравниваются для получения оценки сходства двух изображений. В соответствии с оценкой сходства люди с высокими баллами могут быть оценены как один и тот же человек, а люди с низкими баллами могут быть оценены как разные люди.
Основная идея изображения лица
Основная идея глубокого обучения распознаванию лиц заключается в том, что разные лица состоят из разных черт. Говоря простым языком, признаками могут быть веки, нос, глаза, цвет кожи, цвет волос, как показано в таблице. Тогда 5 признаков могут описывать 25 видов лиц, то есть (признак 1, признак 2, признак 3, признак 4, признак 5) могут представлять один тип лица, например (1, 0, 0, 1, 0) может изображают человека с двойными веками, низкой переносицей, темными глазами, желтым цветом лица и черными волосами.
серийный номер | особенность | 0 | 1 |
---|---|---|---|
1 | веко | одно веко | двойное веко |
2 | нос | низкая переносица | высокая переносица |
3 | Цвет глаз | чернить | коричневый |
4 | цвет | желтый | белый |
5 | цвет волос | чернить | Золотой |
Для признаков вида в таблице есть два представления для каждого признака, всего 32 вида внешности, которые могут быть представлены, недостаточно для распознавания лиц, поэтому количество признаков можно увеличить, например, можно добавить больше признаков. используется для представления лиц, и количество функций может быть увеличено.Форма лица 6, губы функции 7 и т. д. В то же время вы можете увеличить конкретное представление функции, например функцию 3, использовать 0 для черного, 0,1 для черного с синим, 0,2 для желтого, 0,25 для коричневого и так далее. Поэтому, когда количество признаков в практических приложениях достигает порядка 1024 или выше, значения признаков принимают последовательные десятичные знаки. После расширения грань может быть представлена как (0,3, 2, 1,5, 1,75, ...), что в основном может представлять бесчисленное количество граней.
На практике эти признаки не задаются вручную, а изучаются глубокой нейронной сетью в процессе обучения и сохраняются в параметрах каждого узла глубокой нейронной сети. составляются параметры каждого узла.
Как показано на рисунке, это сеть извлечения признаков с размерностью 128. Характеристики трех фотографий Ямасита Томохиса, извлеченные нейронной сетью, очень близки в пространстве с размерностью 128, а результаты фотографии Исихары Сатоми, обработанной нейронной сетью, далеки от результатов Ямасита Томохиса. То есть признаки, извлеченные из разных фотографий одного и того же человека, находятся близко в пространстве признаков, в то время как фотографии разных лиц находятся далеко друг от друга в пространстве признаков.
Пример реализации проекта
Ссылаясь на вышеизложенные идеи, я реализовал простую программу распознавания лиц, адрес находится по адресуface_identification, Результаты, как показано ниже. Этот проект в основном скопированspree.net/Подождите, пока ваш _face_hot…, с небольшими изменениями. ResNet34 используется в качестве сети распознавания лиц в методе dlib. Детали остаточной сети относятся к работе He Kaiming et al.Deep Residual Network at 2015.
[Передача изображения по внешней ссылке не удалась, исходный сайт может иметь механизм защиты от пиявки, рекомендуется сохранить изображение и загрузить его напрямую (img-BzBS4asX-1573562657071) (GitHub.com/nocoder2014/…)]
Идеи дизайна
- Интерфейс: это программное обеспечение использует Qt в качестве дизайна программного обеспечения интерфейса.Для быстрого кодирования используется образец проекта камеры в примере Qt, и в него встроено распознавание лиц. Canvas был переписан для вызова кода распознавания лиц через нужные промежутки времени.
- Многопоточность: в зависимости от разрешения камеры процесс распознавания лиц занимает 0,2-0,4 с.Если используется однопоточная разработка, экран камеры будет зависать при распознавании лица. Поэтому используется поддержка многопоточности Qt, а процесс распознавания лиц размещается в других потоках.Поток пользовательского интерфейса и поток распознавания лиц используют для связи механизм сигналов и слотов Qt.
- Обнаружение лица: используйте фронтальный детектор лица frontal_face_detector в dlib для обнаружения области лица на изображении.
- Ориентир лица: используйте модель обнаружения пяти характерных точек shape_predictor_5_face_landmarks.dat dlib, чтобы обнаружить в общей сложности пять характерных точек глаз, уголков носа и рта, используемых для настройки размера изображения и угла лица, нормализованного до разрешения 150x150, для использования в сети извлечения признаков.
- Извлечение признаков: немного скорректировано с использованием сети ResNet34, сеть вводит изображения размером 150x150 и выводит 128 значений признаков.
- Распознавание-создание базы данных: используйте файл csv для хранения списка известных личностей (включая изображение личности), сначала извлеките характеристики изображений в качестве исходных данных и сгенерируйте матрицу размера [количество изображений, 128]. Используйте FLANN для индексации данных.
- База данных распознавания-поиска: 128 векторов признаков лица, распознанного камерой после извлечения признаков, ищут ближайшую точку в индексе FLANN и вычисляют расстояние до ближайшей точки.Если расстояние находится в пределах порогового диапазона, оно определяется как один и тот же пользователь.
зависит от окружающей среды
В проекте фактически используется Qt и некоторые основные зависимые библиотеки, но для удобства управления проектом я напрямуюlibs.pri
Ссылки на внешние библиотеки задаются в , в основном используются следующие внешние библиотеки.
Dlib 19.17
opencv 3.4
flann 1.9.1
То есть, если вам нужно внести изменения на основе моего кода, вам нужно сначала настроить эти библиотеки, а потом модифицироватьlibs.pri
Адреса ссылок этих библиотек в файле затем могут быть успешно скомпилированы.
Более
Если есть еще вопросы по оформлению программы, добро пожаловать в проектIssuesЗадавайте вопросы, я отвечу на них как можно скорее.
Reference
- face_identification
- Dlib 19.17
- opencv 3.4.5
- Qt 5.12 Mingw 730 x64
- qtcsv 1.5.0
- FLANN 1.9.1
- Kazemi V , Sullivan J . One Millisecond Face Alignment with an Ensemble of Regression Trees[C]// 2014 IEEE Conference on Computer Vision and Pattern Recognition (CVPR). IEEE Computer Society, 2014.
- Schroff F , Kalenichenko D , Philbin J . FaceNet: A Unified Embedding for Face Recognition and Clustering[J]. 2015.
- He K, Zhang X, Ren S, et al. Deep residual learning for image recognition[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2016: 770-778.