Распознавание лиц
Также вы можете прочитать переведённую версию этого файла на китайском языке (упрощённый вариант) на 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 **Распознавание лиц: примеры использования**
*tolerance 0.54 ./pictures_of_people_i_know/ ./unknown_pictures/*
/unknown_pictures/unknown.jpg,Barack Obama
/face_recognition_test/unknown_pictures/unknown.jpg,unknown_person*
Если вы хотите увидеть рассчитанное расстояние между лицами для каждого совпадения, чтобы настроить параметр допуска, вы можете использовать `--show-distance true`:
```bash
$ face_recognition --show-distance true ./pictures_of_people_i_know/ ./unknown_pictures/
/unknown_pictures/unknown.jpg,Barack Obama,0.378542298956785
/face_recognition_test/unknown_pictures/unknown.jpg,unknown_person,None*
**Дополнительные примеры**
Если вы просто хотите узнать имена людей на каждой фотографии, не заботясь об именах файлов, вы можете сделать это:
```bash
$ face_recognition ./pictures_of_people_i_know/ ./unknown_pictures/ | cut -d ',' -f2
Barack Obama
unknown_person*
**Ускорение распознавания лиц**
Распознавание лиц можно выполнять параллельно, если у вас есть компьютер с несколькими ядрами процессора. Например, если ваша система имеет 4 ядра процессора, вы можете обработать примерно в 4 раза больше изображений за то же время, используя все ваши ядра процессора параллельно.
Если вы используете Python 3.4 или более новую версию, передайте параметр `--cpus <количество ядер процессора для использования>`:
```bash
$ face_recognition --cpus 4 ./pictures_of_people_i_know/ ./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 теперь представляет собой массив с координатами каждого лица!*
См. [этот пример](https://github.com/ageitgey/face_recognition/blob/master/examples/find_faces_in_picture.py), чтобы попробовать его.
Также можно включить более точную модель обнаружения лиц на основе глубокого обучения.
Примечание: для хорошей производительности с этой моделью требуется ускорение GPU (через библиотеку CUDA от NVidia). Вы также захотите включить поддержку CUDA при компиляции `dlib`.
```python
import face_recognition
image = face_recognition.load_image_file("my_picture.jpg")
face_locations = face_recognition.face_locations(image, model="cnn")
# face_locations теперь представляет собой массив с координатами каждого лица!*
См. [этот пример](https://github.com/ageitgey/face_recognition/blob/master/examples/find_faces_in_picture_cnn.py), чтобы попробовать его.
Если у вас много изображений и есть графический процессор, вы также можете [обнаруживать лица партиями](https://github.com/ageitgey/face_recognition/blob/master/examples/find_faces_in_batches.py).
**Автоматическое определение черт лица человека на изображении**
```python
import face_recognition
image = face_recongnition.load_image_file("my_picture.jpg")
list_face_landmarks = face_recognition.face_landmarks(image)
# list_face_landmarks теперь представляет собой массив с расположением каждой черты лица каждого человека.
# list_face_landmarks[0]['left_eye'] будет местоположением и контуром левого глаза первого человека.*
См. [этот пример](https://github.com/ageitgey/face_recognition/blob/master/examples/find_facial_features_in_picture.py), чтобы попробовать его.
**Распознавание лиц на изображениях и определение их владельцев**
```python
import face_recognition
picture_of_me = face_recognition.load_image_file("me.jpg")
my_face_encoding = face_recognition.face_encodings(picture_of_me)[0]
# my_face_encoding теперь содержит универсальное «кодирование» моих черт лица, которое можно сравнить с любым другим изображением лица!*
unknown_picture = face_recognition.load_image_file("unknown.jpg")
unknown_face_encoding = face_recognition.face_encodings(unknown_picture)[0]
# Теперь мы можем видеть, что два кодирования лица принадлежат одному и тому же человеку с помощью `compare_faces`!*
results = face_recognition.compare_faces([my_face_encoding], unknown_face_encoding)*
В этом тексте не удалось перевести некоторые фрагменты из-за отсутствия контекста. **Распознавание лиц**
Автор: Адриан Роузброк
* **Распознавание лица:** 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) за создание dlib и предоставление обученных моделей обнаружения черт лица и кодирования лиц, используемых в этой библиотеке. Для получения дополнительной информации о ResNet, который обеспечивает кодирование лиц, ознакомьтесь с его постом в блоге (http://blog.dlib.net/2017/02/high-quality-face-recognition-with-deep.html).
* Спасибо всем, кто работает над всеми замечательными библиотеками Python для обработки данных, такими как numpy, scipy, scikit-image, pillow и т.д., которые делают подобные вещи такими простыми и увлекательными в Python.
* Спасибо Cookiecutter и проекту audreyr/cookiecutter-pypackage за то, что сделали упаковку проектов Python более терпимой.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )