Насколько легко распознать лицо? Научу вас, как это сделать с Python!

Архитектура
Насколько легко распознать лицо? Научу вас, как это сделать с Python!

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

Сегодня мы займемся чем-то более интересным и интересным: распознавание лиц. Как можно понять из названия, мы будем писать программу для обнаружения лиц на изображении. Когда я говорю «программа», вы можете понимать это как обучение машины тому, что делать. Я предпочитаю преподавать вместо программирования, потому что именно этим мы и занимаемся.

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

Обнаружение лиц и распознавание лиц

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

Таким образом, он предоставляет больше информации, чем просто их обнаружение. Больше программирования, другими словами, больше обучения. Предположим, вы смотрите на улицу и мимо проезжают машины. Распознавание лиц похоже на то, что проходящий мимо объект — это машина. А распознавание лиц — это как определить модель проезжающей машины.

Давайте начнем!

Мы будем использовать библиотеку модулей для этого проекта под названием OpenCV. OpenCV — это высокооптимизированная библиотека, ориентированная на приложения реального времени. 

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

Library

Во-первых, давайте установим пакет.

pip install opencv-python

После установки мы можем импортировать его в нашу программу.

import cv2

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

Код для распознавания лиц:пользовательское содержимое raw.GitHub.com/OpenCV/open…

Вы можете загрузить файл XML с Github. Если нет, вы можете скачать приведенную выше ссылку, скопировать код, вставить его в текстовый документ и сохранить как «face_detector.xml». После сохранения файла в текущей папке загрузим его в нашу программу.

# Load the cascade
face_cascade = cv2.CascadeClassifier('face_detector.xml')

импортировать изображение

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

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

# Read the input image
img = cv2.imread('test.jpg')

Распознавание лиц

Вы будете удивлены, насколько короткий код распознавания лиц. Спасибо тем, кто внес свой вклад в OpenCV. Вот код для обнаружения лиц на изображении:

# Detect facesfaces = face_cascade.detectMultiScale(img, 1.1, 4)

Ранее мы определили face_cascade в коде. 

Как только лица будут обнаружены, мы нарисуем вокруг них прямоугольники, чтобы знать, что видит машина. Машины могут ошибаться, но наша цель — научить лучшему и наиболее оптимальному способу делать прогнозы более точными. Используйте следующий код для рисования прямоугольников вокруг обнаруженных лиц:

# Draw rectangle around the facesfor (x, y, w, h) in faces:   cv2.rectangle(img, (x, y), (x+w, y+h), (255, 0, 0), 2)
  • (255,0,0) — цвет прямоугольника, который мы хотим нарисовать. Вы также можете изменить цвет. 
  • (2) – толщина линии. Вы также можете изменить это значение и посмотреть, как оно выглядит.

Наконец

Это последний шаг, теперь мы экспортируем результат в виде файла изображения. Это изображение покажет результат обнаружения лица. Чтобы сохранить новый файл изображения, мы будем использовать метод imwrite из библиотеки cv2. После завершения сохранения в терминале появится надпись «Успешно сохранено».

# Export the result
cv2.imwrite("face_detected.png", img) 
print('Successfully saved')

Поздравляем! ! 

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

В последние месяцы мы обновили множество связанных процессов исследований и разработок в области анализа пешеходов.Для основных платформ TSINGSEE Qingxi Video мы будем постепенно интегрировать функции интеллектуального анализа в ближайшем будущем, чтобы сформировать новую платформу интеллектуального анализа.Добро пожаловать все Следите за обновлениями.