Facedoor
Приложение для распознавания сотрудников и предоставления доступа в офис
В офисе действует система доступа сотрудников с помощью карт-ключей, их часто забывают. Поэтому необходимо было разработать систему контроля доступа сотрудников внутри компании c использованием биометрических данных, а именно лица человека. А также реализовать интеграцию с Redmine для обеспечения открытия дверей.
01
О проекте
Десктопное приложение
Мобильное приложение
Мобильное приложение
02
Сотрудник подходит к двери, у которой висит устройство
ШАГ 1
Система делает фото и проверяет лицо сотрудника
Если система распознает сотрудника, дверь открывается. Сотрудник может войти в офис
ШАГ 2
ШАГ 3
Попытки входа
Успешная попытка
Неудачная попытка
У администратора есть возможность просматривать попытки входа в систему, добавлять, редактировать, удалять доступ сотрудников к офису
Десктопное приложение
Список сотрудников
03
Информация о сотрудниках
Добавление нового сотрудника
Администрация добавляет фото сотрудника, и система присваивает каждому фото оценку в зависимости от ее информативности
Если в профиле сотрудника менее 3-х фотографий, либо они неинформативны, система выдаёт предупреждение о том, что сотрудник не будет опознан
Frontend
Как это работает?
При создании клиентской части был использован фреймворк React и применен компонентно-ориентированный подход. Каждый функциональный блок приложения был разбит на компоненты, что позволило повторно использовать код, а не писать заново.
Использовалась библиотека готовых компонентов Ant Design, предоставляющая различные компоненты, такие как кнопки, таблицы, формы и др. Это ускоряет разработку, так разработчикам не нужно писать и стилизовать компоненты с нуля.
Для работы с сетевыми запросами использовалась библиотека RTK Query. Данная библиотека также упрощает управление кэшированием данных, что позволяет ускорить работу приложения и уменьшить количество запросов к серверу.
React
React Native
RTK Query
Redux
04
TypeScript
Ant Design
Backend
Серверная часть проекта FaceDoor состоит из двух приложений, реализованных на языках Java и Python. Сервер на Java использует фреймворк SmartActors, реализующий акторную модель.
Когда пользователь отправляет фотографию для авторизации в системе, она передается на сервер на Python. Сервер использует нейросети для распознавания лица и проверки его совпадения с изображениями, сохраненными в базе данных на сервере на Java. Если совпадение найдено, сервер на Java возвращает сигнал для открытия двери.
Java
SmartActors
ResNet trained on VGG Face
Maven
PostgreSQL
Python 3
FastAPI
Pytorch
OpenCV
Pillow
Numpy
Dlib
ONNX
Psycopg
Сервер на Python использует библиотеки PyTorch, OpenCV, Dlib, Pillow и Numpy для обработки изображений и распознавания лиц. Он представляет собой REST API, реализованный на FastAPI, который обрабатывает HTTP-запросы на распознавание лиц. Python-сервер использует нейронную сеть ResNet, обученную на наборе данных VGG Face, чтобы сравнивать фотографии, отправленные пользователем, с изображениями сотрудников, сохраненными в базе данных.