Название файла/директории | Содержание файла |
---|---|
main.ipynb | Ноутбук формата .ipynb в котором происходит обучение двух нейронных сетей: face detection, face recognition |
config.yaml | Файл .yaml, содержащий все конфигурационные данные об обучении нейронных сетей и настраивания окружения обучения |
inference.ipynb | Файл .ipynb, содержащий интерфейс для работы с готовыми моделями, добавлением людей в базу данных и считывания потока фотографий с веб камеры |
src/dataloaders.py | Файл .py, содержащий классы датасетов, логику обработки этих датасетов, функции трансформации изображений( в том числе трансформации из библиотеки albumentations, которые позволяют трансформировать помимо изображения его bounding box). Также из него импортируются готовые для подачи в обучение нейронных сетей dataloaders |
src/models.py | Файл .py, содержащий все архитектуры нейронных сетей, которые мы тестировали во время проекта и которые используются конечном варианте проекта в inference.ipynb |
src/utils.py | Файл .py, содержащий все вспомогательные функции, такие как автоматическое скачивание датасетов, обработка изображений, функции считывания видео с веб камеры, умное обрезание фото по координатам bounding box |
Цель: Создать и протестировать разные виды двух моделей глубокого обучения, а именно detection и face net. К ним можно будет добавлять людей для распознавания и с их помощью можно будет загружать фото или видео, и модели определят, где на фотографии находится человек(а именно - его лицо), нарисует рамку и подпишет ее именем этого человека.
Использование: для запуска обучения нейронных сетей потребуется фай kaggle.json - специальный ключ, который можно получить в личном кабинете kaggle. Он позволяет скачивать датасеты. Его нужно поместить в папку user/.kaggle/ . Если вы будете запускать код в google colab, нужно поменять флажок "use_colab" в файле config.yaml на True. при выполнении ячейки с импортами вылезет специальное окошко, куда можно будет загрузить файл kaggle.json . Далее датасеты автоматически скачаются и можно будет выбрать.
Далее можно обучать нейронные сети и сохранять их веса. Все прописано в коде, папка checkpoints создастся автоматически.
Путь к готовым весам модели указываем в файл config.yaml. Если поменяли модели для обучения, то их надо поменять в функции get_models_with_weights в файле src/utils.py
далее идем в файл inference.ipynb, где запускаем код, доходим до ячейки с добавлением в базу данных. (NOTE: фотографии одного человека должны храниться в отдельной папке, их может быть несколько, тогда будет считаться средний эмбединг по всем фоткам человека. Имя в базе данных должно быть уникальным). После добавления в базу данных можно запустить последнюю функцию и увидеть работу алгоритма.
Стек технологий: pytorch, albumentations, matplotlib, numpy, cv2, timm
Сухов Андрей, Пелагея Пашинская, Дмитрий Аникин, София Николенко
Telegram: @suhowandrew, @polyanka003, @sponkulusnodge, @sophi_nikol
VK: vk.com/suhowandrew, vk.com/pelagech, vk.com/id612881843, vk.com/nik_sophi,