- Предварительные условия
- Как распознавание лиц работает с OpenCV
- Обнаружение лиц с использованием каскадных классификаторов в OpenCV
Распознавание лиц становится все более популярным, и большинство из нас уже используют его, даже не осознавая этого. Будь то простое предложение тега Facebook, фильтр Snapchat или расширенное наблюдение за безопасностью аэропорта, распознавание лиц уже сотворило в нем свое волшебство. Китай начал использовать распознавание лиц в школах для отслеживания посещаемости и поведения учащихся. Розничные магазины начали использовать распознавание лиц, чтобы классифицировать своих клиентов и изолировать людей с историей мошенничества. Поскольку в настоящее время происходит гораздо больше изменений, нет никаких сомнений в том, что эту технологию можно будет увидеть повсюду в ближайшем будущем.
В этом уроке мы узнаем, как создать нашу собственную систему распознавания лиц с помощью библиотеки OpenCV на Raspberry Pi. Преимущество установки этой системы на портативный Raspberry Pi заключается в том, что вы можете установить ее где угодно, чтобы использовать ее как систему наблюдения. Как и все системы распознавания лиц, в руководстве будут задействованы два сценария Python, один из которых является программой-тренером, которая анализирует набор фотографий определенного человека и создает набор данных (файл YML). Вторая программа - программа Recognizer.который обнаруживает лицо, а затем использует этот файл YML для распознавания лица и упоминания имени человека. Обе программы, которые мы здесь обсудим, предназначены для Raspberry Pi (Linux), но также будут работать на компьютерах с Windows с очень небольшими изменениями. У нас уже есть серия учебных пособий для начинающих по началу работы с OpenCV, вы можете проверить все учебные пособия по OpenCV здесь.
Предварительные условия
Как было сказано ранее, мы будем использовать библиотеку OpenCV для обнаружения и распознавания лиц. Поэтому убедитесь, что вы установили библиотеку OpenCV на Pi, прежде чем переходить к этому руководству. Также подключите свой Pi к адаптеру 2А и подключите его к монитору через кабель HDMI, так как мы не сможем получить видеовыход через SSH.
Также я не собираюсь объяснять, как именно работает OpenCV, если вы заинтересованы в изучении обработки изображений, ознакомьтесь с этими основами OpenCV и расширенными руководствами по обработке изображений. Вы также можете узнать о контурах, обнаружении BLOB-объектов и т. Д. В этом руководстве по сегментации изображений.
Как распознавание лиц работает с OpenCV
Прежде чем мы начнем, важно понять, что обнаружение лиц и распознавание лиц - это две разные вещи. В Обнаружении Лица обнаруживается только Лицо человека, программа не будет знать, кто это Человек. В распознавании лиц программа не только обнаружит лицо, но и распознает человека. Теперь должно быть ясно, что нам нужно выполнить распознавание лиц перед выполнением распознавания лиц. Я не смогу объяснить, как именно OpenCV обнаруживает лицо или любой другой объект в этом отношении. Итак, если вам интересно узнать, вы можете следовать этому руководству по обнаружению объектов.
Видеопоток с веб-камеры - это не что иное, как длинная последовательность неподвижных изображений, обновляемых одно за другим. И каждое из этих изображений представляет собой просто набор пикселей разных значений, соединенных в соответствующей позиции. Итак, как программа может обнаружить лицо по этим пикселям и в дальнейшем распознать человека на нем? За этим стоит множество алгоритмов, и попытка их объяснить выходит за рамки этой статьи, но, поскольку мы используем библиотеку OpenCV, очень просто выполнять распознавание лиц, не углубляясь в концепции.
Обнаружение лиц с использованием каскадных классификаторов в OpenCV
Только если мы сможем обнаружить лицо, мы сможем его узнать или запомнить. Для обнаружения объекта, такого как лицо, OpenCV использует классификаторы. Эти классификаторы представляют собой предварительно обученный набор данных (файл XML), который можно использовать для обнаружения конкретного объекта, в нашем случае лица. Вы можете узнать больше о классификаторах распознавания лиц здесь. Помимо определения лица, классификаторы могут обнаруживать другие объекты, такие как нос, глаза, номерной знак транспортного средства, улыбку и т. Д. Список классификаторов случаев можно загрузить из ZIP-файла ниже
Классификаторы для обнаружения объектов в Python
В качестве альтернативы OpenCV также позволяет вам создать свой собственный классификатор, который можно использовать для обнаружения любого другого объекта в изображении путем обучения вашего каскадного классификатора. В этом уроке мы будем использовать классификатор под названием «haarcascade_frontalface_default.xml», который будет определять лицо спереди. Посмотрим