Отчет по заданию по двухфакторной аутентификации
Версия написана с использованием tkinter.
Есть возможность включения/отключения расчета позы, а также возможность регистрации пользователя
(занесение его имени и жеста в базу и сохранение лица с последующим пересчетом эмбеддинга пользователя)
Пользователь вводит свой логин, в случае наличия такового в базе включается камера.
В случае успешного распознавания лица пользователя ему предлагается показать жест в специальную область.
Использованные алгоритмы:
- распознавание лиц: MTCNN+ArcFace
- анализ позы: ResNet-50_FPN_3x из detectron2
- разспознавание жестов: сегментация вычитанием фона и классификация с помощью ResNet-18, предобученной на ImageNet и обученной на собственном датасете.
Датасет бинаризованных изображений семи жестов (+ шум) был собран с веб-камеры.
Состоит из ~900 изображений:
Один палец - 98
Два пальца - 97
Три пальца - 225
Четыре пальца - 103
Пять пальцев - 99
Жест "Ок" - 102
Кулак - 100
Шум (нет жеста) - 102
Аугментации:
transforms.Compose([
transforms.RandomAffine(25,
(0.15, 0.15),
(0.7, 1.1)),
transforms.RandomHorizontalFlip(),
transforms.ToTensor()
])
Точность классификации жестов порядка 95% (ошибки в основном в неочевидных случаях в классе "шум")
Работоспособность проверялась в боевых условиях (веб-камерой).
Использованные библиотеки: