www.machinelearningmastery.ru

Машинное обучение, нейронные сети, искусственный интеллект
Header decor

Home

Модель распознавания лиц на веб-камере с использованием Python

Дата публикации Aug 28, 2019

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

фотоAllyson WeislogelнаUnsplash

Не распознавание лица! Речь идет об обнаружении.

Использование определенного алгоритма для обнаружения человеческих лиц в изображении (Обнаружение человеческих лиц на ферме, полной с помощью Moo Moos :)) Это когда вы используете функцию распознавания лиц. С другой стороны,Распознавание лицаописывает биометрическую технологию, которая выходит за рамки распознавания человеческого лица. На самом деле он пытается установить, чье это лицо. В этой статье я не буду углубляться в признание. Я оставлю это для будущей статьи в блоге, а пока расскажу, как запустить простую программу распознавания лиц, используя вашу веб-камеру с Python.

В конце этой статьи мы рассмотрели два файла.

  1. haarcascade_frontalface_default.xml (Основы распознавания лиц с использованием каскадных классификаторов Haar Feature)
  2. FaceDetection.py(Python Script)

Что такое каскады Хаара?

Обнаружение объектов с использованием основанных на характеристиках каскадов классификаторов Хаара - это эффективный метод обнаружения объектов, предложенный Полом Виолой и Майклом Джонсом в их статье.«Быстрое обнаружение объектов с использованием расширенного каскада простых функций» в 2001 году.

Я рекомендую вам сохранить этот PDF-файл и прочитать его, когда у вас есть возможность остаться в этой программе распознавания лиц и рок-звезды машинного обучения! В этой статье они ввели понятиеКаскад классификаторов, Хаар-каскадное обнаружение в OpenCV

Хаар-каскадное обнаружение в OpenCV

OpenCV поставляется с инструктором и детектором. Если вы хотите обучить свой собственный классификатор для любого объекта, такого как автомобиль, самолеты и т. Д., Вы можете использовать OpenCV для его создания. Его полная информация приведена здесь:Обучение каскадных классификаторов.

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

Давайте код!

Во-первых, нам нужно загрузить необходимые классификаторы XML.

import cv2faceCascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')

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

video_capture = cv2.VideoCapture(0)

Эта строка устанавливает источник видео на веб-камеру по умолчанию, которую OpenCV может легко захватить.

while True:
#Capture frame-by-frame
ret, frame = video_capture.read()

Здесь мы снимаем видео. Метод read () читает один кадр из источника видео, который является веб-камерой, и возвращает:

  1. Фактическое чтение видеокадра (один кадр в каждом цикле)
  2. Код возврата

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

gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

Мы только что перевели наш веб-канал в оттенки серого. (Большинство операций в OpenCV выполняются в оттенках серого.)

Теперь мы пинаем ведро с джекпотом!

faces = faceCascade.detectMultiScale(
gray,
scaleFactor=1.5,
minNeighbors=5,
minSize=(30, 30),
flags=cv2.CASCADE_SCALE_IMAGE
)

Вот когда наш код обнаруживает лица в нашем кадре. Давайте рассмотрим все вышеперечисленное.

  1. detectMultiScaleфункцияэто общая функция, которая обнаруживает объекты. Он распознает лица, так как мы используем его на каскаде лиц.
  2. Первый вариант - изображение в градациях серого.
  3. Второе - этоscaleFactor, Поскольку некоторые лица могут быть ближе к камере, они будут казаться больше, чем лица сзади. Коэффициент масштабирования компенсирует это. (Вы можете изменить его на 1,5)
  4. Алгоритм обнаружения использует движущееся окно для обнаружения объектов.minNeighborsопределяет, сколько объектов обнаружено рядом с текущим, прежде чем оно объявит найденное лицо.minSizeМежду тем, дает размер каждого окна.

Функция возвращает список прямоугольников, в которых она считает, что нашла лицо. Далее, мы пройдемся по тому, где он думает, что что-то нашел.

for (x, y, w, h) in faces:
cv2.rectangle(frame, (x, y), (x+w, y+h), (0, 255, 0), 2)
  • Эта функция возвращает 4 значения:xа такжеyрасположение прямоугольника, а также ширина и высота прямоугольника (w,h).
  • Мы используем эти значения, чтобы нарисовать прямоугольник с помощью встроенногоrectangle()функция.
cv2.imshow('FaceDetection', frame)

Это имя фрейма (похоже на заголовок всплывающего окна веб-камеры)

> Теперь я хочу сфотографировать мой кадр, нажав клавишу пробела, и мне нужно выйти из программы, нажав «ESC».

#ESC Pressed
if k%256 == 27:
break#SPACE pressed
elif k%256 == 32:
img_name = "facedetect_webcam_{}.png".format(img_counter)
cv2.imwrite(img_name, frame)
print("{} written!".format(img_name))
img_counter += 1

img_counterпеременная для подсчета и приращения после каждой фотографии. Мы должны объявить это перед объявлением нашего цикла While в начале (While = True)

Очистить все;

# When everything is done, release the capture
video_capture.release()
cv2.destroyAllWindows()

Вы можете получить доступ кполный код + файл XML здесь

Давайте попробуем!

фотоЗахария ХейгинаUnsplash

Я перейду к моей командной строке (или к терминалу), чтобы запустить мой скрипт.

Запуск этого скрипта дал мне этот удивительный канал веб-камеры и хорошие новости, которые он чертовски узнал!

Это я с удостоверением личности
Это я с одним из моих старых удостоверений личности

Вы можете видеть, что алгоритм отслеживает как реального меня, так и фото меня. Обратите внимание, что даже когда я двигаюсь медленно и немного выше, алгоритм может идти в ногу. Но если ты хочешь, чтобы Усэйн это сделал, тогда программа наверняка сошла с ума, я имею в виду, как он мог сделать это? Мы все еще здесь, AI тысячелетия. Код ищет лицо кадр за кадром, поэтому он потребует достаточного количества вычислительной мощности.

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

В это время,Проверьте это GitRepoкоторый включает в себя все доступные классификаторы Хаара для обнаружения различных частей человеческого тела / объектов.

Спасибо! Счастливого обнаружения!

фотоДевять КепфернаUnsplash

Оригинальная статья

Footer decor

© www.machinelearningmastery.ru | Ссылки на оригиналы и авторов сохранены. | map