Об этом проекте
face_recognition — это библиотека и инструмент командной строки на Python для распознавания и манипуляции лицами. Он построен на современных моделях распознавания лиц из dlib, а в README сообщается о точности 99,38% на бенчмарке Labeled Faces in the Wild (LFW). Библиотека предоставляет простой API для поиска лиц, извлечения ориентиров лица, вычисления кодировок лиц и сравнения лиц для идентификации людей.
## Основные возможности
- Поиск всех лиц на изображении с помощью `face_locations()`, включая опциональную модель на основе глубокого обучения с CNN для повышения точности (для хорошей производительности требуется CUDA).
- Определение и контурирование черт лица (глаза, нос, рот, подбородок) с помощью `face_landmarks()`, что позволяет использовать, например, цифровой макияж.
- Идентификация лиц путём сравнения 128-мерных кодировок лиц, создаваемых `face_encodings()` и сопоставляемых через `compare_faces()`.
- В комплект входят две программы командной строки: `face_recognition` для идентификации известных людей в папке изображений и `face_detection` для вывода координат ограничивающих рамок лиц.
## Установка
- Требуется Python 3.3+ или Python 2.7 на macOS или Linux. Windows официально не поддерживается, но может работать по инструкциям сообщества.
- Сначала необходимо установить `dlib` с привязками Python (сборка из исходников на macOS/Ubuntu или использование готовой виртуальной машины).
- Установка выполняется командой `pip3 install face_recognition` после установки `cmake` (например, `brew install cmake` на macOS).
- Включены дополнительные руководства для Nvidia Jetson Nano, Raspberry Pi 2+, FreeBSD (`pkg install graphics/py-face-recognition`) и Windows.
- Предоставляется Docker-образ для упрощения развёртывания в облачных средах, таких как Heroku или AWS.
## Пример использования (Python)
```python
import face_recognition
# Поиск лиц на изображении
image = face_recognition.load_image_file("your_file.jpg")
face_locations = face_recognition.face_locations(image)
# Получение ориентиров лица
face_landmarks_list = face_recognition.face_landmarks(image)
# Идентификация человека
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)
```
## Интерфейс командной строки
- `face_recognition ./known_people/ ./unknown_pictures/` выводит по одной строке на каждое обнаруженное лицо с именем файла и распознанным именем (или `unknown_person`).
- `--tolerance 0.54` делает сопоставление строже; `--show-distance true` выводит вычисленное расстояние между лицами.
- `--cpus 4` (или `-1` для всех ядер) включает параллельную обработку на многоядерных системах.
- `face_detection ./folder_with_pictures/` выводит координаты верх, право, низ, лево в пикселях для каждого найденного лица.
## Примеры скриптов
Репозиторий содержит множество примеров, включая:
- Обнаружение лиц с моделью HOG по умолчанию и глубокой моделью CNN.
- Распознавание в реальном времени с веб-камеры (простая и более быстрая версии, требуется OpenCV).
- Распознавание лиц в видеофайлах и на Raspberry Pi с камерой.
- HTTP-веб-сервис на Flask.
- Классификаторы k-ближайших соседей и SVM для обучения на нескольких изображениях одного человека.
- Размытие лиц в видео с веб-камеры в реальном времени.
## Ограничения
- Модель распознавания обучена на взрослых и может хуже работать с детьми при пороге сравнения по умолчанию 0.6.
- Точность может различаться для разных этнических групп; в wiki обсуждаются известные проблемы точности.
- Для развёртывания включены Dockerfile и готовые Docker-образы, с поддержкой GPU на Linux-системах с драйверами Nvidia и nvidia-docker.
Этот проект широко используется как простая высокоуровневая обёртка над возможностями распознавания лиц в dlib и подходит для прототипирования и производственных приложений, где требуются обнаружение и идентификация лиц.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.