Это простое руководство Дэвида Сэндберга, описывающее, как использовать реализацию FaceNet TensorFlow. Вся заслуга Дэвида Сандберга, его проекта и его источников.

Ресурсы:

Это было сделано на виртуальной машине Ubuntu 18.04.







Настраивать:

* ПРИМЕЧАНИЕ. Я буду использовать свою файловую структуру в своих командах, поэтому либо следуйте той же файловой структуре, либо отредактируйте команды, чтобы они соответствовали вашей файловой структуре.

Репо клонирования Дэвида Сэндберга: https://github.com/davidsandberg/facenet.git

Установите все требования командой:

pip install -r requirements.txt

Создайте папки в каталоге […] / facenet / data / images для хранения файлов изображений для тестирования и обучения (это изображения людей, которых вы пытаетесь узнать). Не стесняйтесь использовать подмножество LFW, которое я загрузил здесь, помеченное как test_raw и train_raw.

Создайте папку «models» в корне проекта для хранения вашей предварительно обученной модели, а затем вашего сгенерированного файла pickle.

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

Клонировать репозиторий моих ресурсов: https://github.com/nhbond/facenet-resources

Поместите эту модель в папку […] / facenet / models или запустите мой сценарий setup.sh из репозитория facenet-resources, если ваш проект находится в ~ / Projects /.

Шаги:

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

Установите переменную пути python в каталог src вашего проекта (в моем случае facenet находится в папке «Projects» в моем домашнем каталоге).

export PYTHONPATH=~/Projects/facenet/src

Выровняйте тренировочные изображения:

python ~/Projects/facenet/src/align/align_dataset_mtcnn.py \
~/Projects/facenet/data/images/train_raw \
~/Projects/facenet/data/images/train_aligned \
--image_size 160

Выровняйте тестовые изображения:

python ~/Projects/facenet/src/align/align_dataset_mtcnn.py \
~/Projects/facenet/data/images/test_raw \
~/Projects/facenet/data/images/test_aligned \
--image_size 160

Обучите классификатор на ваших обучающих изображениях (это создает файл рассола, содержащий вложения для людей, которых вы хотите узнать):

python ~/Projects/facenet/src/classifier.py TRAIN \
~/Projects/facenet/data/images/train_aligned/ \
~/Projects/facenet/models/20180402-114759.pb \
~/Projects/facenet/models/my_classifier.pkl

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

python ~/Projects/facenet/src/classifier.py CLASSIFY \
~/Projects/facenet/data/images/test_aligned/ \
~/Projects/facenet/models/20180402-114759.pb \
~/Projects/facenet/models/my_classifier.pkl

Если вы следовали той же файловой структуре, которую я использовал выше, не стесняйтесь просто запустить сценарий demo.sh из моего репозитория ресурсы (содержит все фрагменты). Убедитесь, что сценарий находится в корне каталога проекта.

Папка изображений test_raw должна иметь ту же файловую структуру, что и ваша папка train_raw, но вместо обучающих изображений должна содержать изображения, которые вы хотите сопоставить.

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