FaceRecognition — это модульный проект для детекции, выравнивания и распознавания лиц на изображениях и в реальном времени с использованием современных нейросетевых архитектур (MTCNN, Stacked Hourglass, ResNet50). Проект включает пайплайн для обработки изображений, обучающие ноутбуки и предобученные веса моделей.
src/face_detection.py— детекция лиц с помощью MTCNN.face_landmarks.py— определение ключевых точек лица (landmarks), выравнивание лица, визуализация heatmap.face_recognition.py— извлечение эмбеддингов и распознавание лиц на основе ResNet50.face_detection_realtime.py— детекция лиц с веб-камеры в реальном времени.functions.py— вспомогательные функции для визуализации.
pipeline/pipeline.py— полный пайплайн: детекция → выравнивание → распознавание.models/— предобученные веса моделей:resnet50_arcfaceloss_20epoch.pth— ResNet50 с ArcFace Loss (20 эпох).resnet50_crossentropy_20epoch.pth— ResNet50 с CrossEntropy (20 эпох).sgh_95_epoch.pth— Stacked Hourglass для landmarks (95 эпох).
notebooks/detect_and_recognition_training.ipynb— ноутбук с кодом обучения и экспериментов.requirements.txt— список зависимостей.
-
Установите зависимости:
pip install -r requirements.txt
-
Запуск пайплайна на изображении:
from pipeline.pipeline import function function('path_to_image.jpg')
Вывод: идентификаторы найденных персон.
-
Детекция лиц в реальном времени:
python src/face_detection_realtime.py
Для выхода нажмите
qв окне камеры.
- Использует MTCNN для поиска лиц на изображении.
- Функции:
get_bboxes_faces(image)— возвращает координаты лиц.get_cropped_faces(image)— возвращает обрезанные изображения лиц с отступами.
- Stacked Hourglass сеть для поиска 5 ключевых точек лица.
- Функции:
get_key_points(image)— возвращает координаты ключевых точек.aligned_image(image)— возвращает выровненное по ключевым точкам лицо.- Визуализация heatmap и наложение точек.
- ResNet50 с кастомным классификатором и ArcFace Loss.
- Функции:
recognite_person(image)— возвращает id распознанного человека.predict_embedding(image)— возвращает эмбеддинг изображения.
- Функция
function(path):- Детектирует лица.
- Выравнивает каждое лицо.
- Распознаёт личность.
- Выводит id найденных персон.
- Весь процесс обучения описан в ноутбуке
notebooks/detect_and_recognition_training.ipynb:- Подготовка датасета (выделение лиц, выравнивание, разметка).
- Обучение Stacked Hourglass для landmarks.
- Обучение ResNet50 для распознавания (ArcFace Loss, CrossEntropy).
- Визуализация результатов и тестирование пайплайна.
Все необходимые библиотеки указаны в requirements.txt. Основные:
- torch, torchvision, pytorch-lightning
- facenet-pytorch
- albumentations
- opencv-python
- pillow
- matplotlib, numpy, pandas