Это простое руководство Дэвида Сэндберга, описывающее, как использовать реализацию 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, но вместо обучающих изображений должна содержать изображения, которые вы хотите сопоставить.
* Примечание. Я удалил множество флагов оптимизации, которые Дэвид использовал в своей вики, чтобы сделать команды более удобочитаемыми. На небольших наборах данных изменение незаметно, но если вы решите использовать более крупные наборы данных, я бы посоветовал прочитать его вики, чтобы реализовать лучшую оптимизацию.