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

OSCHINA-MIRROR/kuaikuaikim-dface

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

DFace (Deeplearning Face)

Linux CPU Linux GPU Mac OS CPU Windows CPU
Build Status Build Status Build Status Build Status

Система обнаружения и распознавания лиц на основе многозадачной свёрточной нейронной сети (MTCNN) и Center-Loss.

Проект на GitHub.

Slack-чат.

DFace — это открытая система обнаружения и распознавания лиц, основанная на глубоком обучении. Все функции разработаны с использованием фреймворка PyTorch. PyTorch — это фреймворк для глубокого обучения, разработанный Facebook, который включает в себя некоторые интересные продвинутые функции, такие как автоматическое дифференцирование и динамическое построение графиков. DFace естественным образом наследует эти преимущества, что делает процесс обучения более простым и понятным, а код реализации — более ясным и лёгким для понимания.

DFace может использовать CUDA для поддержки режима ускорения GPU. Мы рекомендуем попробовать режим Linux GPU, который может обеспечить почти реальное время работы. Все идеи основаны на недавних исследованиях в этой области, таких как «Joint Face Detection and Alignment using Multi-task Cascaded Convolutional Networks» и «FaceNet: A Unified Embedding for Face Recognition and Clustering».

Структура MTCNN:

Pnet, Rnet, Onet.

Если вы заинтересованы в DFace и хотите присоединиться к этому проекту, вот список задач, которые необходимо выполнить. Я буду регулярно обновлять его, чтобы он отражал текущие потребности в разработке. Вы можете отправить свой запрос на форк, и я буду использовать проблемы для отслеживания и обратной связи по всем вопросам. Также можно добавить в официальный Q-группу 681403076 или связаться со мной через WeChat jinkuaikuai005.

TODO (задачи для разработки):

  • Разработать функцию сравнения лиц на основе center loss или triplet loss, используя модель ResNet inception v2. Эта функция сможет сравнивать сходство двух фотографий лиц. Для этого можно обратиться к Paper и FaceNet.
  • Реализовать функцию защиты от мошенничества на основе света, текстуры кожи и других характеристик лица, чтобы предотвратить атаки с фотографиями, видео и повторными записями. Для этого можно использовать LBP-алгоритм и SVM-модель.
  • Создать систему трёхмерного распознавания лиц для защиты от мошенничества.
  • Перенести модель на мобильные устройства, используя стандарт ONNX, чтобы преобразовать обученную модель PyTorch в формат, совместимый с Caffe2, и заменить некоторые алгоритмы numpy на реализацию на C++.
  • Выполнить перенос на Tensor RT для обеспечения высокой параллельности.
  • Обеспечить поддержку Docker для версии с GPU.

Установка

DFace состоит из двух основных модулей: обнаружения и распознавания лиц. Я предоставлю подробные инструкции по обучению и запуску моделей. Сначала вам нужно создать среду Python с PyTorch и OpenCV (cv2), рекомендуется использовать Anaconda для создания отдельной виртуальной среды. Если вы планируете использовать режим ускорения GPU, вам потребуется установить CUDA и cuDNN от Nvidia. В настоящее время автор предпочитает установку на Ubuntu. Спасибо за помощь в установке на Windows от энтузиаста, который поделился своим опытом в блоге.

Зависимости:

  • CUDA 8.0
  • Anaconda
  • PyTorch
  • Torchvision
  • cv2
  • Matplotlib
git clone https://gitee.com/kuaikuaikim/dface.git

Здесь я предоставляю файл зависимостей среды Anaconda environment.yml (для Windows используйте environment-win64.yml, для Mac OSX используйте environment_osx.yaml), который поможет вам создать свою виртуальную среду.

cd dface  

conda env create -f environment.yml

Добавьте путь поиска Python:

export PYTHONPATH=$PYTHONPATH:{your local DFace root path}

Обнаружение и распознавание лиц

Если вас интересует модель MTCNN, следующие шаги могут быть полезны.

Обучение модели MTCNN

MTCNN состоит из трёх сетей: PNet, RNet и ONet. Поэтому процесс обучения также должен проходить в три этапа. Чтобы достичь лучших результатов, все обучаемые сети будут зависеть от предыдущей обученной сети для генерации данных. Все наборы данных о лицах взяты из WIDER FACE и CelebA. WIDER FACE предоставляет только большое количество данных о границах лиц, в то время как CelebA содержит данные о ключевых точках лиц. За исключением генерации данных для обучения ONet и маркировки файлов, остальные этапы используют данные из WIDER FACE. Если вы используете wider face wider_face_train.mat для аннотаций, их необходимо преобразовать в формат txt. Здесь я предоставил скрипт для преобразования. Здесь также есть уже преобразованный файл аннотаций wider face anno_store/wider_origin_anno.txt. Тренировка данных для обучения моделей PNet, RNet и ONet

  1. Создайте временную папку для тренировочных данных, используя параметр --dface_traindata_store:
mkdir {your dface traindata folder}
  1. Сгенерируйте файлы с данными для тренировки PNet и аннотированные файлы:
python dface/prepare_data/gen_Pnet_train_data.py --prefix_path {префикс каталога изображений, например, wider face} --dface_traindata_store {созданная ранее папка для тренировочных данных} --anno_file {файл с аннотациями, можно не указывать, по умолчанию используется файл anno_store/wider_origin_anno.txt}
  1. Произведите случайное объединение аннотированных файлов:
python dface/prepare_data/assemble_pnet_imglist.py
  1. Обучите модель PNet:
python dface/train_net/train_p_net.py
  1. Сгенерируйте данные для тренировки RNet и аннотированные файлы:
python dface/prepare_data/gen_Rnet_train_data.py --prefix_path {префикс каталога изображений} --dface_traindata_store {папка для тренировочных данных} --anno_file {файл с аннотациями} --pmodel_file {ранее обученная модель PNet}
  1. Произведите случайное объединение аннотированных файлов:
python dface/prepare_data/assemble_rnet_imglist.py
  1. Обучите модель RNet:
python dface/train_net/train_r_net.py
  1. Сгенерируйте данные для тренировки ONet и аннотированные файлы:
python dface/prepare_data/gen_Onet_train_data.py --prefix_path {префикс каталога изображений} --dface_traindata_store {папка для тренировочных данных} --anno_file {файл с аннотациями} --pmodel_file {модель PNet} --rmodel_file {модель RNet}
  1. Сгенерируйте данные о ключевых точках лица для тренировки ONet:
python dface/prepare_data/gen_landmark_48.py
  1. Произведите случайное объединение всех аннотированных файлов (включая ключевые точки лица):
python dface/prepare_data/assemble_onet_imglist.py
  1. Обучите модель ONet:
python dface/train_net/train_o_net.py

Тестирование детектора лиц

Если вы не хотите обучать модели, то можете использовать уже обученные модели PNet, RNet и ONet, которые находятся в папке model_store. Для этого запустите скрипт test_image.py.

Сравнение лиц

TODO: реализовать распознавание лиц на основе center loss.

Проверка результатов

На рисунке ниже показан пример работы программы.

Контакты

  • QQ-чат для обсуждения модели (для получения модели необходимо присоединиться к чату): 681403076
  • Личный WeChat автора: jinkuaikuai005

Лицензия

Apache License 2.0

Комментарии ( 0 )

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

Введение

На основе системы обнаружения и распознавания лиц с использованием глубокого обучения, реализованной в Pytorch. Развернуть Свернуть
Apache-2.0
Отмена

Обновления (2)

все

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/kuaikuaikim-dface.git
git@api.gitlife.ru:oschina-mirror/kuaikuaikim-dface.git
oschina-mirror
kuaikuaikim-dface
kuaikuaikim-dface
master