Как установить и использовать библиотеку распознавания и обнаружения лиц python в Ubuntu 16.04

Библиотека face_recognition широко известна в Интернете как самый простой в мире API для распознавания лиц для Python и командной строки, и самое приятное то, что вам не нужно платить за это ни копейки, проект полностью открыт, так что если у вас есть знания в области разработки и вы можете создать библиотеку с нуля, вы наверняка будете знать, как работать с этой библиотекой.

В этой статье мы научим вас устанавливать, настраивать и использовать в основном библиотеку python «распознавание лиц» в Ubuntu 16.04.

Требования

Прежде чем приступить к использованию этой библиотеки, вам потребуется в вашей системе:

Python 3

В этом уроке мы будем следить за установкой библиотеки с Python 3.

CMake

В вашей системе должен быть установлен CMake — кроссплатформенное семейство инструментов с открытым исходным кодом, предназначенное для сборки, тестирования и упаковки программного обеспечения. CMake используется для управления процессом компиляции программного обеспечения с использованием простых файлов конфигурации, не зависящих от платформы и компилятора, а также для создания собственных make-файлов и рабочих пространств, которые можно использовать в выбранной вами среде компилятора. Набор инструментов CMake был создан Kitware в ответ на потребность в мощной кроссплатформенной среде сборки для проектов с открытым исходным кодом, таких как ITK и VTK.

Если он не установлен в вашей системе, вы можете запустить следующие команды, чтобы установить его:

# Update repo
sudo apt-get update
# Install cmake if it's not installed
sudo apt-get install build-essential cmake

1. Установите и скомпилируйте dlib

Прежде чем приступить к использованию и установке библиотеки распознавания лиц в Python, вам потребуется дистрибутив dlib, установленный в вашей системе, а также привязка к python. Dlib — это современный инструментарий C ++, содержащий алгоритмы машинного обучения и инструменты для создания сложного программного обеспечения на C ++ для решения реальных задач. Он используется как в промышленности, так и в научных кругах в самых разных областях, включая робототехнику, встроенные устройства, мобильные телефоны и большие высокопроизводительные вычислительные среды. Лицензирование Dlib с открытым исходным кодом позволяет использовать его в любом приложении бесплатно.

Чтобы начать с компиляции dlib в вашей системе, клонируйте репозиторий в какой-то каталог вашей системы:

# Clone the dlib library in some directory of the system
git clone https://github.com/davisking/dlib.git

Затем перейдите к сборке dlib с помощью следующих команд:

# get into the cloned directory
cd dlib
# create build directory inside the cloned directory
mkdir build
# Switch to the created directory
cd build
# generate a Makefile in the current directory
cmake ..
# Build dlib !
cmake --build .

Это запустит процесс сборки, и после его завершения в вашей системе будет доступна нативная библиотека dlib. Для получения дополнительной информации о Dlib, пожалуйста, посетите официальный сайт здесь.

2. Установите привязку Python для dlib

После сборки dlib снова переключитесь на клонированный каталог на предыдущем шаге:

cd ..

И приступить к установке привязок Python, запустив setup.py файл с Python 3 следующей командой:

python3 setup.py install

Это установит привязку, и вы сможете позже импортировать dlib в ваш код Python. Если вы столкнулись со следующим исключением во время выполнения предыдущей команды:

Traceback (most recent call last):
File "setup.py", line 42, in
from setuptools import setup, Extension
ImportError: No module named 'setuptools'

Установите инструменты установки Python 3 с помощью следующей команды:

sudo apt-get install python3-setuptools

А теперь попробуйте снова запустить python3 setup.py install команда.

3. Установите библиотеку распознавания лиц

Как уже упоминалось, мы будем использовать библиотеку распознавания лиц. Эта библиотека распознает и манипулирует лицами из Python или из командной строки с помощью самой простой в мире библиотеки распознавания лиц. Построен с использованием dlibСовременное распознавание лиц, построенное с глубоким обучением. Модель имеет точность 99,38% на Помеченные лица в дикой природе тест.

Это также обеспечивает простой face_recognition инструмент командной строки, который позволяет легко распознавать лица в папке изображений из командной строки. Вы можете установить его с помощью следующей команды:

Заметка

Установка займет некоторое время, чтобы загрузить и установить, так что будьте терпеливы.

pip3 install face_recognition

Если у вас не установлен pip3, установите его с помощью следующей команды:

sudo apt-get -y install python3-pip

Для получения дополнительной информации об этой библиотеке, пожалуйста, посетите официальный репозиторий на Github здесь. После установки библиотеки вы сможете использовать ее либо из CLI, либо из ваших скриптов python.

4. Как использовать

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

  • face_recognition — Распознать лица на фотографии или в папке, полной фотографий.
  • face_detection — Найти лица на фотографии или в папке, полной фотографий.

У вас также будет возможность импортировать библиотеку в свои скрипты и использовать ее оттуда!

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

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

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

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

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

Логика следующая, библиотека будет использовать каталог изображений celebrities в качестве базы данных, и мы будем искать от того, кто изображения, хранящиеся в unknown каталог. Вы можете выполнить следующую команду для выполнения указанной задачи:

face_recognition ./celebrities/ ./unknown/

Тогда вывод будет:

Библиотека распознавания лиц Python CLI

Команда выведет путь к изображению, которое было обработано, в нашем случае unknown_celebrity.jpg и добавит имя совпавшего изображения из celebrities каталог как суффикс. В этом случае библиотека смогла опознать актера Райана Рейнольдса по нашим изображениям. Обратите внимание, что это может работать и с несколькими изображениями.

Как уже упоминалось, утилита CLI является лишь дополнительной, одним из забавных фактов является возможность написания некоторого кода самостоятельно и идентификации лиц с некоторой логикой, например:

import face_recognition
# Load the jpg files into numpy arrays
obama_image = face_recognition.load_image_file("Barack Obama.jpg")
justin_image = face_recognition.load_image_file("Justin Timberlake.jpg")
ryan_image = face_recognition.load_image_file("Ryan Reynolds.jpg")
unknown_image = face_recognition.load_image_file("unknown_celebrity.jpg")
# Get the face encodings for each face in each image file
# Since there could be more than one face in each image, it returns a list of encodings.
# But since I know each image only has one face, I only care about the first encoding in each image, so I grab index 0.
try:
obama_face_encoding = face_recognition.face_encodings(obama_image)[0]
justin_face_encoding = face_recognition.face_encodings(justin_image)[0]
ryan_face_encoding = face_recognition.face_encodings(ryan_image)[0]
unknown_face_encoding = face_recognition.face_encodings(unknown_image)[0]
except IndexError:
print("I wasn't able to locate any faces in at least one of the images. Check the image files. Aborting...")
quit()
known_faces = [
obama_face_encoding,
justin_face_encoding,
ryan_face_encoding
]
# results is an array of True/False telling if the unknown face matched anyone in the known_faces array
results = face_recognition.compare_faces(known_faces, unknown_face_encoding)
print("Is the unknown face a picture of Obama? {}".format(results[0]))
print("Is the unknown face a picture of Justin? {}".format(results[1]))
print("Is the unknown face a picture of Ryan? {}".format(results[2]))
print("Is the unknown face a new person that we've never seen before? {}".format(not True in results))

Идея в основном та же: сравните кодировку лица, сгенерированную изображениями, имеющимися в вашей «базе данных», с кодировкой, сгенерированной изображением, которое вы хотите идентифицировать.

Обнаружение лица

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

face_detection ./celebrities/

Это сгенерирует следующий вывод:

Обнаружение лица на изображениях Python

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

import face_recognition
image = face_recognition.load_image_file("Ryan Reynolds.jpg")
face_locations = face_recognition.face_locations(image)
# [(98, 469, 284, 283)]
print(face_locations)
Ссылка на основную публикацию
Adblock
detector