Если это ваша первая история идентификации по лицу, я бы порекомендовал взглянуть на этот бесплатный курс, чтобы изучить основы идентификации по лицу и глубокого обучения.

Это основано на дескрипторе функции HOG (гистограмма ориентированных градиентов) с алгоритмом машинного обучения linear SVM для обнаружения лиц.

HOG — это простой и мощный дескриптор функций. Он используется не только для обнаружения лиц, но и для обнаружения объектов, таких как автомобили, домашние животные и фрукты. HOG надежен для обнаружения объектов, поскольку форма объекта характеризуется с использованием локального распределения градиента интенсивности и направления края.

Шаг 1. Основная идея HOG — разделить изображение на небольшие соединенные ячейки.

Шаг 2. Вычисляет гистограмму для каждой ячейки. Нажмите здесь, чтобы узнать больше о гистограмме

Шаг 3. Объедините все гистограммы вместе, чтобы сформировать вектор признаков, т. е. сформировать одну гистограмму из всех маленьких гистограмм, уникальную для каждого лица.

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

Если вы ищете алгоритм для обнаружения лиц в потоковом видео в реальном времени, лучше всего подойдут следующие способы обнаружения лиц:

  1. Распознавание лиц на основе CNN
  2. Детектор лиц DNN от opencv
  3. Распознавание лиц с помощью cvlib

Давайте напишем код для обнаружения лиц с помощью HOG. В библиотеке dlib есть прямой метод возврата детектора лиц HOG "dlib.get_frontal_face_detector()"

Он отображает следующий вывод

HOG плохо распознает нечетные лица.

В Dlib есть еще один алгоритм, основанный на CNN, для обнаружения лиц, более мощный, чем HOG. Щелкните здесь, чтобы узнать о нем больше.