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

OSCHINA-MIRROR/lbing9002-face_recognition

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README_Japanese.md 17 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 30.11.2024 01:09 b696983

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

Это простая библиотека распознавания лиц, которая позволяет использовать Python и командную строку для распознавания и обработки лиц.

Она основана на передовом распознавании лиц с использованием глубокого обучения от dlib и достигает точности 99,38% на наборе данных Labeled Faces in the Wild.

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

PyPI Build Status Documentation 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.

Затем установите этот модуль с помощью pip3 (pip2 для Python2).

pip3 install face_recognition

Вы также можете попробовать эту библиотеку с Docker. Подробнее см. в разделе Развёртывание.

Если у вас возникли проблемы с установкой, вы также можете попробовать предварительно настроенные виртуальные машины. Подробнее см. Предварительно настроенные виртуальные машины. (Требуется VMware Player или VirtualBox).

Установка на Nvidia Jetson Nano

  • Инструкции по установке Jetson Nano
    • Следуйте инструкциям в этой статье. В настоящее время в библиотеке CUDA для Jetson Nano есть ошибка, и вам может потребоваться закомментировать одну строку и перекомпилировать, иначе установка может завершиться неудачно.

Установка на Raspberry Pi 2+

Установка на Windows

Примечание: в тексте запроса присутствуют ссылки на сторонние ресурсы. Они сохранены в ответе без изменений. Виндовс не имеет официальной поддержки, но есть полезная инструкция по установке.

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

Командная строка

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

  1. face_recognition: распознаёт лица на изображениях или в папке с несколькими изображениями.

  2. face_detection: обнаруживает лица на изображении или в папке с несколькими изображениями.

Инструмент командной строки 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, просто укажите путь к папке или файлу с изображением, на котором вы хотите найти лица.

$ 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_known/ ./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_known/ ./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_known/ ./unknown_pictures/ | cut -d ',' -f2

Barack Obama
unknown_person
Ускорение Face Recognition

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

В Python 3.4 и выше можно использовать команду --cpus <количество используемых ядер процессора>.

$ face_recognition --cpus 4 ./pictures_of_people_i_known/ ./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 теперь представляет собой массив с координатами каждого лица!

Пример кода можно найти здесь.

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

Обратите внимание, что для хорошей производительности этой модели требуется ускорение GPU (через библиотеку CUDA от NVidia). При компиляции dlib необходимо включить поддержку CUDA. Современное распознавание лиц с помощью глубокого обучения

В статье рассматривается алгоритм и то, как он работает.

Автор статьи — Adrian Rosebrock рассматривает практическое использование распознавания лиц:

  • Распознавание лиц с использованием OpenCV, Python и глубокого обучения.
  • Распознавание лиц на 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 (drivers >= 384.81) и Nvidia-Docker могут запускать образец на GPU. Откройте docker-compose.yml и закомментируйте строки dockerfile: Dockerfile.gpu и runtime: nvidia.

Если у вас возникли проблемы

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

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

Спасибо Davis King (@nulhom), который создал dlib и предоставил обученные модели обнаружения и кодирования лиц, используемые в этой библиотеке. Информацию о ResNet, которая используется для кодирования лиц, можно найти в его блоге.

Также выражаю благодарность всем тем, кто работает над великолепными библиотеками Python для научных данных, такими как numpy, scipy, scikit-image и pillow, которые делают создание подобных библиотек на Python таким простым и приятным.

И наконец, спасибо Cookiecutter и audreyr/cookiecutter-pypackage за упрощение упаковки Python-проектов.

Опубликовать ( 0 )

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

1
https://api.gitlife.ru/oschina-mirror/lbing9002-face_recognition.git
git@api.gitlife.ru:oschina-mirror/lbing9002-face_recognition.git
oschina-mirror
lbing9002-face_recognition
lbing9002-face_recognition
master