Небольшая демонстрация по распознаванию лиц

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

Чаще всего это можно сделать с помощью некоторых библиотек машинного обучения, таких как opencv, которые можно реализовать с помощью некоторых основных языков программирования. Целью распознавания лиц является сравнение изображений с использованием различных факторов. Они используют различные методы, такие как HOG-для сравнения двух гистограмм (градиенты, ориентированные на гистограмму), SVM (машина опорных векторов) и т. д. для сравнения обрезанных изображений лица.

Можно ли легко обнаружить лицо. Ответ ДА. Сегодня технологии перешли к машинному обучению и искусственному интеллекту. Даже машина может принимать решения самостоятельно. В области когнитивной науки крупные компании, такие как Apple, Google (Face API), разработали собственные API для своих приложений. Например: Facebook использует распознавание лиц, чтобы найти всех, кто использует наше изображение в своих профилях. Эти API имеют эффективность до 97% и дают лучший результат, чем другие.

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

Сделайте это практичным

Обнаружить лицо?

Для лучшего понимания давайте проведем небольшую фазу распознавания лиц.

Прежде чем мы перейдем к коду, нам нужно уточнить термины, используемые на этапе обнаружения.

Классификаторы?

Классификаторы - это не что иное, как классификация на положительные (изображение лица) или отрицательные (не изображение лица). Opencv состоит из нескольких классификаторов, они обучены сотням и тысячам изображений лиц и имеют возможность принимать новые решения путем обучения посредством сопоставления признаков. Основные используемые классификаторы:

  • Классификатор Хаара

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

  • классификатор LBPF

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

Оттенки серого?

Изображение в оттенках серого — это изображение, в котором значение каждого пикселя представляет только количество света (т. е. информацию об интенсивности).

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

Необходимое условие:

  • Язык программирования для выполнения (я использовал Python 3, дистрибутив Anaconda)
  • Установить открытую библиотеку cv

Если вы используете Python 3, введите Pip install opencv-contrib-python в приглашении Anaconda.

TestRun.py

Получите код здесь:

facedetectcode(python)

import cv2//здесь открытый пакет cv импортируется в python

imagePath = "d:/facedetec/groupfie.jpeg" // установка изображения

cascPath = «haarcascade_frontalface_default.xml» // путь используемого классификатора

faceCascade = cv2.CascadeClassifier(cascPath)//инициализация классификатора

image = cv2.imread(imagePath)// Чтение изображения по его пути

grayscale = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)//преобразование изображения в формат оттенков серого

facedetect = faceCascade.detectMultiScale(

оттенки серого,//формат изображения

scaleFactor=1.1,//компенсирует некоторые факторы

minNeighbors=5

minSize=(30, 30),

флаги = cv2.cv.CV_HAAR_SCALE_IMAGE

)

//Поскольку он работает со скользящим окном, задается размер каждого окна (minNeighbors minSize

print("Найдено",len(faces),"Faces")

//Выводит количество лиц, обнаруженных с помощью этого классификатора haarcascade

для (x, y, w, h) в лицах:

cv2.rectangle(image, (x, y), (x+w, y+h), (0, 255, 0), 2)

//зарисовка изображения прямоугольником с координатами x и y и шириной и высотой прямоугольников

cv2.imshow("Найдены лица", изображение)

//отображает изображение с нарисованными лицами

cv2.waitKey(0)

//когда пользователь нажимает клавишу, окно закрывается

Исходное изображение: original.jpg

Вывод:

Все стало проще благодаря технологиям.

«Легкий способ обучения — понять его»