Как установить face recognition на windows

Обновлено: 04.07.2024

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

Содержание

Что такое обнаружение лиц?

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

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

Существует много алгоритмов обнаружения лиц. Одним из старейших является алгоритм Виолы-Джонса. Он был предложен в 2001 году и применяется по сей день. Чуть позже мы тоже им воспользуемся. После прочтения данной статьи вы можете изучить его более подробно.

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

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

Что такое распознавание лиц?

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

Итак, давайте разберемся, как мы распознаем лица при помощи глубокого обучения. Для начала мы производим преобразование, или, иными словами, эмбеддинг (embedding), изображения лица в числовой вектор. Это также называется глубоким метрическим обучением.

Для облегчения понимания давайте разобьем весь процесс на три простых шага:

Обнаружение лиц

Извлечение признаков

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

Теперь давайте разберемся, как это помогает в распознавании лиц разных людей.


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

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


Чтобы определять лица одного и того же человека, сеть будет учиться выводить векторы, находящиеся рядом в векторном пространстве. После обучения эти векторы трансформируются следующим образом:


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

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

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

Марк Лутц «Изучаем Python»

Скачивайте книгу у нас в телеграм

Сравнение лиц

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


Итак, мы передали в сеть две фотографии, одна Владимира Путина, другая Джорджа Буша. Для изображений Буша у нас были вектора (эмбеддинги), а для Путина ничего не было. Таким образом, когда мы сравнили эмбеддинг нового изображения Буша, он был близок с уже имеющимися векторам,и и мы распознали его. А вот изображений Путина в нашей базе не было, поэтому распознать его не удалось.

Что такое OpenCV?

Компьютерное зрение работает как мост между компьютерным программным обеспечением и визуальной картиной вокруг нас. Оно дает ПО возможность понимать и изучать все видимое в окружающей среде.

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

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

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

Основные преимущества OpenCV :

  • имеет открытый программный код и абсолютно бесплатна
  • написана на C/C++ и в сравнении с другими библиотеками работает быстрее
  • не требует много памяти и хорошо работает при небольшом объеме RAM
  • поддерживает большинство операционных систем, в том числе Windows, Linux и MacOS.

Установка

Здесь мы будем рассматривать установку OpenCV только для Python. Мы можем установить ее при помощи менеджеров pip или conda (в случае, если у нас установлен пакет Anaconda).

1. При помощи pip

При помощи pip процесс установки может быть выполнен с использованием следующей команды:

2. Anaconda

Если вы используете Anaconda, то выполните следующую команду в окружении Anaconda:

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

В этой части мы реализуем распознавание лиц при помощи Python и OpenCV. Для начала посмотрим, какие библиотеки нам потребуются и как их установить:

  • OpenCV
  • dlib
  • Face_recognition

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

Библиотека face_recognition , созданная Адамом Гейтгеем, включает в себя функции распознавания лиц dlib и является по сути надстройкой над ней. С ней очень легко работать, и мы будем ее использовать в нашем коде. Имейте ввиду, что ее нужно устанавливать после библиотеки dlib .

Для установки OpenCV наберите в командной строке:

Далее, для установки библиотеки face_recognition наберите в командной строке следующее:

Теперь, когда все необходимые модули установлены, приступим к написанию кода. Нам нужно будет создать три файла.

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

Извлечение признаков лица

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

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

Сейчас мы сохранили все эмбеддинги в файл под названием face_enc . Теперь мы можем их использовать для распознавания лиц на изображениях или во время видеострима с веб-камеры.

Распознавание лиц во время прямой трансляции веб-камеры

Вот код для распознавания лиц из прямой трансляции веб-камеры:

В данном примере для обнаружения лиц использовался метод cv2.CascadeClassifier() из библиотеки OpenCV. Но вы с таким же успехом можете пользоваться и методом face_recognition.face_locations() , как мы уже делали в предыдущем примере.

Распознавание лиц на изображениях

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

Результат:



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

Как установить face rocognition. Использовал много способов но ничего не работает. Подскажите как установить на windows 10.

Простой 11 комментариев

Что ты понимаешь под "face recognition", и причём тут VS?
Face recognition - это название для семейства технологий, если речь про конкретное ПО/библиотеку, назови её и дай ссылку.

Ага, уже лучше. А ничего не работает - это как? Ошибка при установке? Успешная установка, но ошибка при импорте?
Успешный импорт, но ошибка при выполнении кода?
Приведи код (если есть) и текст ошибки.

ramzis

613b347eda394325223144.jpg

Мое чутье подсказывает что проблема в версии python.
Установи python3.6
Не забудь изменить переменные среды

Устанавливаешь
pip install face-recognition

Levman5

ramzis

Levman5

Рамис, значит при установке python 3.6 просто не ставить галочку на а против add Python 3.6 to PATH

ramzis

613b347eda394325223144.jpg

Python Новичок, ставить, если ты хочешь использовать его как основу.

Если хочешь вернуть обратно, то просто подними наверх c:\python39 и c:\python39\scripts\ вверх

Адаптировали статью Файзана Шайха о том, как создать модель распознавания лиц и в каких сферах её можно применять.

Создание модели распознавания лиц с использованием глубокого обучения на языке Python

Елена Борноволокова

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

В этом направлении привлекает концепция открытого исходного кода. Даже технологические гиганты готовы делиться новыми открытиями и инновациями со всеми, чтобы технологии не оставались привилегией богатых.

Одна из таких технологий — распознавание лиц. При правильном и этичном использовании эта технология может применяться во многих сферах жизни.

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

Распознавание лиц: потенциальные сферы применения

Приведу несколько потенциальных сфер применения технологии распознавания лиц.

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

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

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

Технология распознавания лиц (Face Recognition) с каждым годом становится все более популярной в современном мире. Китай запустил данную технологию в школах для контроля за посещением уроков школьниками и их поведением. Многие аэропорты мира уже используют технологию распознавания лиц для обеспечения безопасности на своей территории. Гипермаркеты применяют данную технологию для классификации своих покупателей и изоляции (задержания) лиц, которые ранее были замечены в попытках обмана магазина. Несомненно, что диапазон применений технологии распознавания лиц в ближайшее время будет только расти.

Внешний вид проекта распознавания лиц с помощью Raspberry Pi и библиотеки OpenCV

В данной статье мы рассмотрим создание системы распознавания лиц с помощью платы Raspberry Pi и библиотеки OpenCV. Достоинством развертывания такой системы на основе платы Raspberry Pi является то, что система получается чрезвычайно компактной и ее можно будет установить в любом удобном месте. Как и во всех других системах распознавания лиц, у нас будет две программы (на python), одна из которых будет тренировочной программой (Trainer program) и будет анализировать набор фотографий с определенными людьми, после чего она будет создавать набор данных в формате YML файла. Вторая программа будет непосредственно программой распознавания (Recognizer program), которая будет обнаруживать на изображении лицо человека и затем использовать набор данных YML чтобы распознать его и подписать имя человека на изображении. В нашем проекте обе эти программы написаны для Raspberry Pi (Linux), однако с небольшими изменениями они будут работать и на компьютерах с операционной системой Windows.

Для реализации данного проекта нам понадобится библиотека OpenCV. Как ее установить на плату Raspberry Pi можно прочитать в данной статье.

Как работает распознавание лиц с OpenCV

На этом этапе необходимо отметить, что обнаружение лица (Face Detection) и распознавание лица (Face Recognition) – это две разные задачи. При обнаружении лица обнаруживается только лицо человека и программное обеспечение не имеет узнать человека. А вот в задаче распознавания лица программное обеспечение должно не только обнаружить лицо, но и распознать его. То есть перед распознаванием лица нам необходимо сначала обнаружить лицо. Каким образом библиотека OpenCV производит обнаружение лица или какого-либо другого объекта на изображении, мы в данной статье рассматривать не будем, информации об этом достаточно много в сети интернет.

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

Обнаружение лиц в OpenCV с использованием каскадов Хаара

Мы сможем распознать лицо только если правильно его обнаружим (выделим из полного изображения). Для обнаружения таких объектов как лицо OpenCV использует классификаторы/каскады (Classifiers). Эти классификаторы предварительно тренируются (обучаются) на наборе данных (XML файл), после чего они могут быть использованы для обнаружения определенных объектов, в нашем случае лиц. Более подробно о классификаторах для обнаружения лиц вы можете прочитать в сети Интернет - в последнее время об этом пишут достаточно много. Кроме обнаружения лиц классификаторы/каскады могут также использоваться для обнаружения других объектов: нос, глаза, улыбка, автомобильные номера и многое другое. Список данных классификаторов можно скачать по следующей ссылке:

Также библиотека OpenCV позволяет вам создать свой собственный классификатор/каскад (Classifier), который можно использовать для обнаружения любого объекта на изображении при помощи обучения вашего каскада Хаара. В этой статье мы будем использовать классификатор под названием “haarcascade_frontalface_default.xml”, который способен обнаруживать лицо при виде на него спереди (по фронту). Как его использовать мы рассмотрим далее в статье.

Установка необходимых пакетов

Вначале убедитесь что на вашей плате Raspberry Pi установлен pip, только после этого можно переходить к установке необходимых пакетов.

Установка dlib

Dlib – это инструмент для приложений машинного обучения (Machine Learning) и анализа данных. Для его установки введите следующую команду в терминале:

Библиотека face_recognition широко известна в Интернете как самый простой в мире API для распознавания лиц для Python и командной строки, и самое приятное то, что вам не нужно платить за это ни копейки, проект полностью открыт, так что если у вас есть знания в области разработки и вы можете создать библиотеку с нуля, вы наверняка будете знать, как работать с этой библиотекой.

В этой статье мы научим вас устанавливать, настраивать и использовать в основном библиотеку python «распознавание лиц» в Ubuntu 16.04.

Требования

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

Python 3

В этом уроке мы будем следить за установкой библиотеки с Python 3.

CMake

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

1. Установите и скомпилируйте dlib

Чтобы начать с компиляции dlib в вашей системе, клонируйте репозиторий в какой-то каталог вашей системы:

Затем перейдите к сборке dlib с помощью следующих команд:

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

2. Установите привязку Python для dlib

После сборки dlib снова переключитесь на клонированный каталог на предыдущем шаге:

И приступить к установке привязок Python, запустив setup.py файл с Python 3 следующей командой:

Это установит привязку, и вы сможете позже импортировать dlib в ваш код Python. Если вы столкнулись со следующим исключением во время выполнения предыдущей команды:

Установите инструменты установки Python 3 с помощью следующей команды:

А теперь попробуйте снова запустить python3 setup.py install команда.

3. Установите библиотеку распознавания лиц

Как уже упоминалось, мы будем использовать библиотеку распознавания лиц. Эта библиотека распознает и манипулирует лицами из Python или из командной строки с помощью самой простой в мире библиотеки распознавания лиц. Построен с использованием dlibСовременное распознавание лиц, построенное с глубоким обучением. Модель имеет точность 99,38% на Помеченные лица в дикой природе тест.

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

Заметка

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

Если у вас не установлен pip3, установите его с помощью следующей команды:

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

4. Как использовать

При установке face_recognition вы получаете две простые программы командной строки:

У вас также будет возможность импортировать библиотеку в свои скрипты и использовать ее оттуда!

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

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

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

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

Логика следующая, библиотека будет использовать каталог изображений celebrities в качестве базы данных, и мы будем искать от того, кто изображения, хранящиеся в unknown каталог. Вы можете выполнить следующую команду для выполнения указанной задачи:

Тогда вывод будет:

Библиотека распознавания лиц Python CLI

Команда выведет путь к изображению, которое было обработано, в нашем случае unknown_celebrity.jpg и добавит имя совпавшего изображения из celebrities каталог как суффикс. В этом случае библиотека смогла опознать актера Райана Рейнольдса по нашим изображениям. Обратите внимание, что это может работать и с несколькими изображениями.

Как уже упоминалось, утилита CLI является лишь дополнительной, одним из забавных фактов является возможность написания некоторого кода самостоятельно и идентификации лиц с некоторой логикой, например:

Идея в основном та же: сравните кодировку лица, сгенерированную изображениями, имеющимися в вашей «базе данных», с кодировкой, сгенерированной изображением, которое вы хотите идентифицировать.

Обнаружение лица

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

Это сгенерирует следующий вывод:

Обнаружение лица на изображениях Python

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

Читайте также: