май 2019

используется в продукте Deepmark БКД

logo_deepmark_black

 Задача 

Разработать фреймворк качественного распознавания лиц для микрокомпьютеров

Средний показатель FPS на Cortex A53 при идентификации одного пользователя (в СКУД, на турникетах)

3 кадра

Минимальный размер ОЗУ для работы фреймворка

1 Гб

Возможность гибкой настройки рабочей точки алгоритма - баланса FAR / FPS для заданного FRR

Алгоритм должен адаптивно подстраиваться под характеристики аппаратной платформы.

Баланс точности и производительности должен быть гибко настраиваемым. Алгоритм должен эффективно использовать вычислительную мощность серверных платформ и при этом обеспечивать достаточный показатель fps для встраиваемых платформ.

Количество лиц в базе алгоритма идентификации

до 20.000

Минимальный размер лица в режиме черного списка

40 пикселей

Минимальный размер лица в режиме белого списка

80 пикселей

Целевая аппаратная платформа для встраиваемого варианта решения:

NanoPi Fire3-LTS

NanoPi-Fire3-cut

 Результат 

Визуализация кластеризации лиц с помощью алгоритма t-SNE

tsne-3

 Процесс 

Обнаружение лиц: выбираем архитектуру детектора

Останавливаем свой выбор на каскадной архитектуре MTCNN, которая при высокой базовой производительности позволяет гибко настраивать детектор для различных задач. Процесс обнаружения состоит из четырёх стадий (используются 4 нейросетевых модели). Результатом выполнения четвёртой стадии помимо уточнённого прямоугольника лица являются координаты центров глаз, кончика носа и уголков рта, которые используются для выравнивания лица перед идентификацией.

 

Производительность алгоритма может регулироваться изменением масштабирующего фактора пирамиды изображений, используемых на первой стадии. Кроме того, в задаче идентификации одного пользователя четвертая стадия выполняется только для одного лица, что также значительно сокращает время выполнения.

big-detector-high-precision

Идентификация лиц: разрабатываем каскадную архитектуру, обучаем модели

Выбираем две архитектуры свёрточных нейронных сетей - MobileNetV2 и ResNet36 и объединяем их в один каскад. Оптимизируем архитектуру нейронных сетей для сокращения используемого объёма памяти. Цель - возможность работы фреймворка на платформе с 1 Гб.

scheme-siamese

Выбираем фреймворк: ncnn. Он глубоко оптимизирован для развёртывания на мобильных и встраиваемых платформах и поддерживает квантование параметров сети до float16 и int8.

 

%
99.73

Наш алгоритм

%
99.52

MobileNetV2

%
99.73

ResNet36

Тестируем производительность и fps на микрокомпьютере

Тестируем производительность на NanoPi Fire 3 в задаче идентификации из списка в 20000 пользователей. Формат кадра - HD, минимальный размер лица 120 пикселей.

среднее время работы детектора

~ 160 мс

время идентификации пользователя c помощью модели MobileNet V2

130 мс

время идентификации пользователя c помощью модели ResNet36

580 мс

среднее время идентификации пользователя с помощью каскадной модели

~ 180 мc

средний показатель FPS

~ 2.9

verification-timeline-480