Распознавание лиц
Также вы можете прочитать переведённую версию этого файла на китайском языке (упрощённый вариант) на GitHub, на корейском языке [на GitHub] (https://github.com/ageitgey/face_recognition/blob/master/README_Korean.md) или на японском языке [на GitHub] (https://github.com/m-i-k-i/face_recognition/blob/master/README_Japanese.md).
Распознавайте и управляйте лицами из 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:
Затем убедитесь, что у вас установлен cmake:
brew install cmake
Наконец, установите этот модуль из pypi с помощью pip3 (или pip2 для Python 2):
pip3 install **Альтернативный вариант: попробуйте эту библиотеку с Docker**, см. раздел «Развёртывание».
Если у вас возникли проблемы с установкой, вы также можете попробовать предварительно настроенную виртуальную машину (ВМ).
#### Установка на плату Nvidia Jetson Nano
* Инструкции по установке Jetson Nano (https://medium.com/@ageitgey/build-a-hardware-based-face-recognition-system-for-150-with-the-nvidia-jetson-nano-and-python-a25cb8c891fd) — пожалуйста, внимательно следуйте инструкциям в статье. В настоящее время в библиотеках CUDA на Jetson Nano есть ошибка, которая может привести к сбою этой библиотеки без вывода сообщений об ошибках, если вы не будете следовать инструкциям в статье и закомментируете строку в dlib и перекомпилируете её.
#### Установка на Raspberry Pi 2+
* Инструкции по установке Raspberry Pi 2+ (https://gist.github.com/ageitgey/1ac8dbe8572f3f533df6269dab35df65).
#### Установка на FreeBSD
```bash
pkg install graphics/py-face_recognition
Хотя Windows официально не поддерживается, пользователи опубликовали инструкции по установке этой библиотеки:
После установки 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 ./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 ```
if results[0] == True:
print("Это моё изображение!")
else:
print("Это не моё изображение!")```
Смотрите [этот пример](https://github.com/ageitgey/face_recognition/blob/master/examples/recognize_faces_in_pictures.py), чтобы попробовать его.
## Примеры кода на Python
Все примеры доступны [здесь](https://github.com/ageitgey/face_recognition/tree/master/examples).
#### Обнаружение лиц
* [Найдите лица на фотографии](https://github.com/ageitgey/face_recognition/blob/master/examples/find_faces_in_picture.py)
* [Найдите лица на фотографии (используя глубокое обучение)](https://github.com/ageitgey/face_recognition/blob/master/examples/find_faces_in_picture_cnn.py)
* [Найдите лица в пакетах изображений с использованием GPU (используя глубокое обучение)](https://github.com/ageitgey/face_recognition/blob/master/examples/find_faces_in_batches.py)
* [Размытие всех лиц в прямом видео с помощью веб-камеры (требуется установка OpenCV)](https://github.com/ageitgey/face_recognition/blob/master/examples/blur_faces_on_webcam.py)
#### Черты лица
* [Определите конкретные черты лица на фотографии](https://github.com/ageitgey/face_recognition/blob/master/examples/find_facial_features_in_picture.py)
* [Примените (ужасно уродливый) цифровой макияж](https://github.com/ageitgey/face_recognition/blob/master/examples/digital_makeup.py)
#### Распознавание лиц
* [Найдите и распознайте неизвестные лица на фотографии на основе фотографий известных людей](https://github.com/ageitgey/face_recognition/blob/master/examples/recognize_faces_in_pictures.py)
* [Идентифицируйте и нарисуйте рамки вокруг каждого человека на фото](https://github.com/ageitgey/face_recognition/blob/master/examples/identify_and_draw_boxes_on_faces.py)
* [Сравните лица по числовому расстоянию между лицами вместо только совпадений True/False](https://github.com/ageitgey/face_recognition/blob/master/examples/face_distance.py)
* [Распознайте лица в прямом видео, используя вашу веб-камеру — простая / более медленная версия (требуется установка OpenCV)](https://github.com/ageitgey/face_recognition/blob/master/examples/facerec_from_webcam.py)
* [Распознавайте лица в прямом видео, используя веб-камеру — более быстрая версия (требуется установка OpenCV)](https://github.com/ageitgey/face_recognition/blob/master/examples/facerec_from_webcam_faster.py)
* [Распознавайте лица в видеофайле и записывайте новый видеофайл (требуется установка OpenCV)](https://github.com/ageitgey/face_recognition/blob/master/examples/facerec_from_video_file.py)
* [Распознавайте лица на Raspberry Pi с камерой](https://github.com/ageitgey/face_recognition/blob/master/examples/facerec_on_raspberry_pi.py)
* [Запустите веб-сервис для распознавания лиц через HTTP (требуется установка Flask)](https://github.com/ageitgey/face_recognition/blob/master/examples/web_service_example.py)
* [Распознавайте лица с классификатором K-ближайших соседей](https://github.com/ageitgey/face_recongition/blob/master/examples/face_recognition_knn.py)
* [Обучите несколько изображений на человека, а затем распознавайте лица, используя SVM](https://github.com/ageitgey/face_recognition/blob/master/examples/face_recognition_svm.py)
## Создание автономного исполняемого файла
Если вы хотите создать автономный исполняемый файл, который может работать без необходимости установки `python` или `face_recognition`, вы можете использовать [PyInstaller](https://github.com/pyinstaller/pyinstaller). Однако для работы с этой библиотекой требуется некоторая пользовательская конфигурация. Смотрите [эту проблему](https://github.com/ageitgey/face_recognition/issues/357), как это сделать.
## Статьи и руководства, посвящённые `face_recognition`
- Моя статья о том, как работает распознавание лиц: [Современное распознавание лиц с глубоким обучением](https://medium.com/@ageitgey/machine-learning-is-fun-part-4-modern-face-recognition-with-deep-learning-c3cffc121d78)
- Охватывает алгоритмы и то, как они обычно работают
- [Распознавание лиц с OpenCV, Python и глубоким обучением](https://www.pyimagesearch.com/2018/06/18/face-recognition-with-opencv-python-and-deep-learning/) Адриана Роузброка
- Показывает, как использовать распознавание лиц на практике
- [Raspberry Pi Face Recognition](https://www.youtube.com/watch?v=pW9xY7wV-fE)
- Видеоурок по распознаванию лиц на Raspberry Pi **Распознавание лиц**
Автор: Адриан Роузброк
* **Распознавание лица** (https://www.pyimagesearch.com/2018/06/25/raspberry-pi-face-recognition/) — как использовать на Raspberry Pi.
* **Кластеризация лиц с помощью Python** (https://www.pyimagesearch.com/2018/07/09/face-clustering-with-python/) — автоматическое объединение фотографий по лицам с использованием неконтролируемого обучения.
## Как работает распознавание лиц
Если вы хотите узнать, как работают определение местоположения и распознавание лиц вместо использования библиотеки «чёрный ящик», прочитайте мою статью (https://medium.com/@ageitgey/machine-learning-is-fun-part-4-modern-face-recognition-with-deep-learning-c3cffc121d78).
## Предостережения
* Модель распознавания лиц обучена на взрослых и не очень хорошо работает с детьми. Она легко путает детей при использовании стандартного порога сравнения 0,6.
* Точность может варьироваться в зависимости от этнической группы. Подробнее см. на этой странице вики (https://github.com/ageitgey/face_recognition/wiki/Face-Recognition-Accuracy-Problems#question-face-recognition-works-well-with-european-individuals-but-overall-accuracy-is-lower-with-asian-individuals).
## Развёртывание в облачных хостах (Heroku, AWS и т. д.)
Поскольку face_recognition зависит от dlib, написанного на C++, может быть сложно развернуть приложение с его использованием на облачном хостинг-провайдере, таком как Heroku или AWS.
Чтобы упростить задачу, в этом репозитории есть пример Dockerfile, который показывает, как запустить приложение, созданное с помощью face_recognition, в контейнере Docker. С этим вы сможете развернуть его на любом сервисе, поддерживающем образы Docker.
Вы можете попробовать образ Docker локально, выполнив команду: docker-compose up --build.
Также существует несколько готовых образов Docker (docker/README.md).
Пользователи Linux с GPU (драйверы >= 384.81) и установленным Nvidia-Docker могут запустить пример на GPU: откройте файл docker-compose.yml и раскомментируйте строки dockerfile: Dockerfile.gpu и runtime: nvidia.
## Проблемы?
Если у вас возникли проблемы, пожалуйста, ознакомьтесь с разделом «Общие ошибки» (https://github.com/ageitgey/face_recognition/wiki/Common-Errors) на вики перед тем, как создавать проблему на GitHub.
## Спасибо
* Большое спасибо Дэвису Кингу (@nulhom) (https://github.com/davisking) за создание dlib и предоставление обученных моделей обнаружения черт лица и кодирования лиц, используемых в этой библиотеке. Для получения дополнительной информации о ResNet, который обеспечивает кодирование лиц, ознакомьтесь с его постом в блоге (http://blog.dlib.net/2017/02/high-quality-face-recognition-with-deep.html).
* Спасибо всем, кто работает над всеми замечательными библиотеками для научных данных Python, такими как numpy, scipy, scikit-image, pillow и т.д., которые делают подобные вещи такими простыми и увлекательными в Python.
* Спасибо Cookiecutter (https://github.com/audreyr/cookiecutter) и проекту шаблона audreyr/cookiecutter-pypackage (https://github.com/audreyr/cookiecutter-pypackage) за то, что сделали упаковку проектов Python более терпимой.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )