Это простая библиотека распознавания лиц, которая позволяет использовать Python и командную строку для распознавания и обработки лиц.
Она основана на передовом распознавании лиц с использованием глубокого обучения от dlib и достигает точности 99,38% на наборе данных Labeled Faces in the Wild.
Также предоставляется простой инструмент командной строки face_recognition, который позволяет распознавать лица в изображениях из папки.
Находит все лица на изображении.
import face_recognition
image = face_recognition.load_image_file("your_file.jpg")
face_locations = face_recognition.face_locations(image)
Извлекает местоположение глаз, носа, рта и контура лица из изображений лиц.
import face_recognition
image = face_recognition.load_image_file("your_file.jpg")
face_landmarks_list = face_recognition.face_landmarks(image)
Распознавание черт лица может быть полезно во многих важных задачах, но также может использоваться для менее значимых целей, таких как цифровое оформление.
Определяет людей на каждом изображении.
import face_recognition
known_image = face_recognition.load_image_file("biden.jpg")
unknown_image = face_recognition.load_image_file("unknown.jpg")
biden_encoding = face_recognition.face_encodings(known_image)[0]
unknown_encoding = face_recognition.face_encodings(unknown_image)[0]
results = face_recognition.compare_faces([biden_encoding], unknown_encoding)
Можно также использовать его вместе с другими библиотеками Python для распознавания лиц в реальном времени.
Попробуйте этот пример кода, чтобы попробовать.
Доступны демоверсии, созданные пользователями, которые можно запустить в совместном Jupyter notebook (официальной поддержки нет).
Сначала установите dlib, включая расширения Python.
Затем установите этот модуль с помощью pip3 (pip2 для Python2).
pip3 install face_recognition
Вы также можете попробовать эту библиотеку с Docker. Подробнее см. в разделе Развёртывание.
Если у вас возникли проблемы с установкой, вы также можете попробовать предварительно настроенные виртуальные машины. Подробнее см. Предварительно настроенные виртуальные машины. (Требуется VMware Player или VirtualBox).
Примечание: в тексте запроса присутствуют ссылки на сторонние ресурсы. Они сохранены в ответе без изменений. Виндовс не имеет официальной поддержки, но есть полезная инструкция по установке.
Использование
При установке face_recognition
вы получите две простые команды командной строки.
face_recognition
: распознаёт лица на изображениях или в папке с несколькими изображениями.
face_detection
: обнаруживает лица на изображении или в папке с несколькими изображениями.
face_recognition
Инструмент командной строки face_recognition
позволяет распознавать лица на изображениях или в папках с несколькими изображениями.
Сначала поместите в папку фотографии знакомых вам людей. По одной фотографии на человека, и назовите файлы изображений именами людей, которые на них изображены.
Затем поместите в другую папку изображения, чьи лица вы хотите распознать.
После этого запустите команду face_recognition
, указав путь к папке со знакомыми людьми и путь к папке с неизвестными лицами. Программа покажет, кто изображён на каждом из этих изображений.
$ face_recognition ./pictures_of_people_i_know/ ./unknown_pictures/
/unknown_pictures/unknown.jpg,Barack Obama
/face_recognition_test/unknown_pictures/unknown.jpg,unknown_person
Для каждого лица будет выведена одна строка с именем файла и именем распознанного человека через запятую.
unknown_person
— это лицо, которое не совпало ни с одним из известных лиц.
face_detection
С помощью инструмента командной строки face_detection
можно обнаружить положение лица (координаты в пикселях) на изображении.
Чтобы использовать инструмент face_detection
, просто укажите путь к папке или файлу с изображением, на котором вы хотите найти лица.
$ face_detection ./folder_with_pictures/
examples/image1.jpg,65,215,169,112
examples/image2.jpg,62,394,211,244
examples/image2.jpg,95,941,244,792
Программа выведет координаты (в пикселях) для каждой обнаруженной области лица: сверху, справа, снизу и слева.
Если программа находит несколько совпадений для одного и того же человека, это может означать, что лица на фотографиях очень похожи. В этом случае можно более строго сравнить лица, уменьшив значение допуска.
Это можно сделать с помощью команды --tolerance
. Если установить значение допуска ниже 0,6, сравнение лиц будет более строгим.
$ face_recognition --tolerance 0.54 ./pictures_of_people_i_known/ ./unknown_pictures/
/unknown_pictures/unknown.jpg,Barack Obama
/face_recognition_test/unknown_pictures/unknown.jpg,unknown_person
Если вы хотите проверить расстояние между совпадающими лицами для настройки допуска, используйте команду --show-distance true
.
$ face_recognition --show-distance true ./pictures_of_people_i_known/ ./unknown_pictures/
/unknown_pictures/unknown.jpg,Barack Obama,0.378542298956785
/face_recognition_test/unknown_pictures/unknown.jpg,unknown_person,None
Можно отобразить только имена людей без имён файлов.
$ face_recognition ./pictures_of_people_i_known/ ./unknown_pictures/ | cut -d ',' -f2
Barack Obama
unknown_person
На компьютере с многоядерным процессором можно выполнять задачи параллельно. Например, при наличии четырёх ядер можно обрабатывать в четыре раза больше изображений за то же время.
В Python 3.4 и выше можно использовать команду --cpus <количество используемых ядер процессора>
.
$ face_recognition --cpus 4 ./pictures_of_people_i_known/ ./unknown_pictures/
Используя параметр --cpus -1
, можно задействовать все ядра системы.
Модуль face_recognition
предоставляет простой способ работы с изображениями.
API Docs: https://face-recognition.readthedocs.io.
import face_recognition
image = face_recognition.load_image_file("my_picture.jpg")
face_locations = face_recognition.face_locations(image)
# face_locations теперь представляет собой массив с координатами каждого лица!
Пример кода можно найти здесь.
Также можно выбрать модель обнаружения лиц, основанную на глубоком обучении.
Обратите внимание, что для хорошей производительности этой модели требуется ускорение GPU (через библиотеку CUDA от NVidia). При компиляции dlib
необходимо включить поддержку CUDA. Современное распознавание лиц с помощью глубокого обучения
В статье рассматривается алгоритм и то, как он работает.
Автор статьи — Adrian Rosebrock рассматривает практическое использование распознавания лиц:
Механизм распознавания лиц
Если вы хотите узнать о расположении лица и механизме распознавания без использования чёрного ящика библиотеки, прочитайте эту статью.
Примечание
Эта модель распознавания лиц была обучена на взрослых и не будет работать так же хорошо с детьми. Если вы используете значение по умолчанию (0,6) в качестве порога сравнения, это может привести к путанице между детьми и взрослыми.
Точность может варьироваться в зависимости от этнической группы. Подробнее см. на этой странице вики.
Развёртывание в облаке (Heroku, AWS и т. д.)
Поскольку face_recognition зависит от dlib, написанного на C++, развёртывание приложений, использующих эти инструменты на таких облачных серверах, как Heroku или AWS, может быть сложным.
Чтобы упростить этот процесс, в этом репозитории есть пример Dockerfile, который показывает, как запустить приложение face_recognition, созданное внутри контейнера Docker. Это должно позволить вам развернуть его на всех сервисах, поддерживающих Docker-образы.
Вы можете выполнить команду и попробовать образ Docker локально: docker-compose up --build
.
Пользователи Linux с установленным GPU (drivers >= 384.81) и Nvidia-Docker могут запускать образец на GPU. Откройте docker-compose.yml и закомментируйте строки dockerfile: Dockerfile.gpu и runtime: nvidia.
Если у вас возникли проблемы
Прежде чем создавать проблему на GitHub, пожалуйста, ознакомьтесь с часто встречающимися ошибками на вики-странице.
Благодарности
Спасибо Davis King (@nulhom), который создал dlib и предоставил обученные модели обнаружения и кодирования лиц, используемые в этой библиотеке. Информацию о ResNet, которая используется для кодирования лиц, можно найти в его блоге.
Также выражаю благодарность всем тем, кто работает над великолепными библиотеками Python для научных данных, такими как numpy, scipy, scikit-image и pillow, которые делают создание подобных библиотек на Python таким простым и приятным.
И наконец, спасибо Cookiecutter и audreyr/cookiecutter-pypackage за упрощение упаковки Python-проектов.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )