1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mirrors-face-recognition

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

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

Также вы можете прочитать переведённую версию этого файла на китайском языке (упрощённый вариант) на 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, который позволяет выполнять распознавание лиц в папке изображений из командной строки!

PyPI Build Status Документация Status

Функции

Поиск лиц на изображениях

Найдите все лица, которые появляются на изображении:

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 (официально не поддерживается): Deepnote

Установка

Требования

  • Python 3.3+ или Python 2.7
  • macOS или Linux (Windows официально не поддерживается, но может работать)

Варианты установки:

Установка на Mac или Linux

Сначала убедитесь, что у вас уже установлен dlib с привязками Python:

  • Как установить dlib из исходного кода на macOS или Ubuntu

Затем убедитесь, что у вас установлен 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

Хотя Windows официально не поддерживается, полезные пользователи опубликовали инструкции по установке этой библиотеки:

Использование предварительно настроенного образа виртуальной машины

  • Загрузите предварительно настроенный образ ВМ (для VMware Player или VirtualBox).

Использование

Интерфейс командной строки

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

  • face_recognition — распознаёт лица на фотографии или в папке с фотографиями.
  • face_detection — находит лица на фотографии или в папке с фотографиями.

Инструмент командной строки face_recognition

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

known

Затем вам нужна вторая папка с файлами, которые вы хотите идентифицировать:

unknown

После этого просто запустите команду 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_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, чтобы использовать все ядра процессора в вашей системе.

Модуль Python

Вы можете импортировать модуль 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 )

Вы можете оставить комментарий после Вход в систему

Введение

Face Recognition — это библиотека для распознавания лиц на основе Python. Она также предоставляет инструмент командной строки, который позволяет выполнять операции по распознаванию лиц через командную строку. Развернуть Свернуть
MIT
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/mirrors-face-recognition.git
git@api.gitlife.ru:oschina-mirror/mirrors-face-recognition.git
oschina-mirror
mirrors-face-recognition
mirrors-face-recognition
master