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

OSCHINA-MIRROR/mirrors-face-recognition

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 22 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 26.11.2024 22:04 0f0e7aa

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

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

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

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