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

OSCHINA-MIRROR/mirrors-face-recognition

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

Простой командный интерфейс (CLI) программа для распознавания лиц

Получаем простую программу с интерфейсом командной строки (CLI), которая распознаёт лица на фотографиях или в папках с фотографиями:

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

Инструмент face_recognition CLI

С помощью команды 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 CLI

Инструмент 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 value).

Это можно сделать с помощью переменной --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, чтобы увидеть расстояние между лицами при распознавании:

$ 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
Дополнительные примеры

Можно получить имена людей на фотографиях, не обращая внимания на имена файлов, с помощью следующей команды:

$ face_recognition ./pictures_of_people_i_know/ ./unknown_pictures/ | cut -d ',' -f2

Barack Obama
unknown_person
Повышение скорости распознавания лиц

Если у вас компьютер с несколькими ядрами процессора, вы можете выполнять распознавание лиц одновременно. Например, на компьютере с четырьмя ядрами вы сможете обрабатывать примерно в четыре раза больше изображений за то же время.

При использовании Python 3.4 или выше передайте параметр --cpus <количество ядер процессора для использования>:

$ face_recognition --cpus 4 ./pictures_of_people_i_know/ ./unknown_pictures/

Также можно передать --cpus -1, чтобы использовать все ядра процессора.

Модуль Python

Модуль face_recognition позволяет легко манипулировать лицами с помощью всего нескольких строк кода. Это очень просто!

Документация API: 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 теперь представляет собой массив с координатами каждого лица!

Пример можно протестировать.

Более точный алгоритм глубокого обучения на основе распознавания лиц также доступен.

Обратите внимание, что для повышения производительности модели (требуется поддержка CUDA от NVidia) может потребоваться ускорение GPU. Кроме того, при компиляции dlib вы можете активировать поддержку CUDA.

import face_recognition

image = face_recognition.load_image_file("my_picture.jpg")
face_locations = face_recognition.face_locations(image, model="cnn")

# face_locations теперь представляет собой массив с координатами каждого лица!

Пример можно протестировать.

Если есть много изображений и GPU, можно найти лица в пакетном режиме.

Поиск характерных черт лица человека на изображении
import face_recognition

image =
``` **Распознавание лиц с помощью библиотеки face_recognition**

В данном тексте описывается использование библиотеки Python face_recognition для распознавания лиц.

Пример кода показывает, как можно использовать библиотеку для обнаружения и распознавания лиц на изображениях. В примере используется метод load_image_file() для загрузки изображения, face_landmarks() для определения ключевых точек лица и face_encodings() для создания уникального идентификатора лица. Затем код сравнивает два идентификатора, чтобы определить, принадлежат ли они одному и тому же лицу.

Также в тексте приводится список примеров использования библиотеки для различных задач, таких как обнаружение лиц, определение черт лица и распознавание лиц.

**Перевод кода:**

```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]

unknown_picture = face_recognition.load_image_file("unknown.jpg")
unknown_face_encoding = face_recognition.face_encodings(unknown_picture)[0]

results = face_recognition.compare_faces([my_face_encoding], unknown_face_encoding)

if results[0] == True:
    print("It's a picture of me!")
else:
    print("It's not a picture of me!")

Этот код загружает изображение «me.jpg» и создаёт уникальный идентификатор лица (my_face_encoding). Затем он загружает другое изображение («unknown.jpg») и создаёт ещё один идентификатор (unknown_face_encoding), после чего сравнивает эти два идентификатора с помощью метода compare_faces(). Если результаты сравнения показывают, что оба идентификатора принадлежат одному и тому же человеку, программа выводит сообщение «It’s a picture of me!». В противном случае выводится сообщение «It’s not a picture of me!» Адриан Роузброк «Распознавание лиц на Raspberry Pi»

Как использовать Raspberry Pi? Адриан Роузбрук «Кластеризация лиц с помощью Python»

  • Неконтролируемое обучение используется для автоматического кластеризации фотографий на основе людей, появляющихся на каждой фотографии.

Как работает распознавание лиц?

Если вы хотите узнать, как работают чёрные ящики и распознавание лиц, прочитайте эту статью.

Внимание!

  • Модель распознавания лиц была обучена на данных взрослых, поэтому она не будет хорошо работать с детьми. Если вы используете базовое пороговое значение 0,6, существует тенденция к тому, что дети не будут распознаваться.
  • Точность может варьироваться в зависимости от этнической группы. Для получения более подробной информации см. эту страницу вики.

Развёртывание в облачном хосте (Heroku, AWS и т. д.)

Поскольку face_recognition зависит от dlib, написанного на C++, развёртывание приложения, использующего его, на таких платформах, как Heroku или AWS, может быть сложным.

Для более простой работы пример Dockerfile из этого репозитория показывает, как запустить приложение, созданное с использованием face_recognition, в контейнере Docker. Это позволяет развернуть приложение на любом сервисе, поддерживающем Docker-образы.

Чтобы попробовать создать локальный образ Docker, выполните следующую команду: docker-compose up --build.

Пользователи Linux с установленным GPU (драйвер >= 384.81) и Nvidia-Docker могут запускать примеры на GPU: откройте файл docker-compose.yml и удалите комментарии из строк dockerfile : Dockerfile.gpu и runtime : nvidia.

Есть ли у вас проблемы?

Прежде чем создавать проблему на GitHub, ознакомьтесь с разделом общих ошибок на вики.

Благодарности

Большое спасибо Дэвису Кингу (@nulhom), который создал dlib и предоставил функции распознавания и кодирования лиц, используемые в этой библиотеке. Более подробную информацию о кодировании лиц с использованием ResNet можно найти в блоге.

Также благодарю всех, кто работает над замечательными научными библиотеками данных 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