Архитектура

Хотя взаимодействие с FindFace Security происходит в основном через веб-интерфейс, не забудьте уделить немного времени изучению архитектуры программного комплекса. Эти знания необходимы для развертывания, интеграции, обслуживания и устранения проблем при работе FindFace Security.

В этой главе:

Архитектурные элементы

FindFace Security состоит из следующих основных архитектурных элементов:

  • Ядро FindFace, передовая технология распознавания лиц на базе искусственного интеллекта, которая может использоваться в качестве отдельного продукта FindFace Enterprise Server.
  • FindFace Security, готовый прикладной модуль к FindFace Enterprise Server.

Ядро FindFace

Ядро FindFace включает в себя следующие компоненты:

Компонент Описание Поставщик
findface-extraction-api Сервис, использующийся для обнаружения лиц на статических изображениях и извлечения из лиц биометрических образцов (векторов признаков). Сервис также выполняет распознавание таких атрибутов лица, как пол, возраст, эмоции, борода, очки, медицинская маска и др., а также распознавание человеческих силуэтов (если были заданы соответствующие настройки). Работа на базе нейронных сетей. Поддерживается CPU- или GPU-ускорение. Собственная разработка NtechLab
findface-sf-api Сервис, реализующий HTTP API обнаружения и распознания лиц.
findface-tarantool-server Сервис, обеспечивающий взаимодействие между сервисом findface-sf-api и биометрической базой данных (базой, в которой хранятся биометрические образцы) на основе Tarantool.
findface-upload Веб-сервер на базе NginX, используемый как хранилище исходных изображений, миниатюр лиц и нормализованных изображений лиц.
findface-facerouter Сервис, который используется для задания правил обработки обнаруженных на видео лиц. В FindFace Security функции findface-facerouter выполняются findface-security (см. Прикладной модуль FindFace Security). Однако в целях интеграции вы можете установить и настроить данный компонент (см. Пользовательские плагины).
findface-video-manager Сервис, являющийся частью модуля видеодетекции лиц, через который осуществляется управление детекцией лиц на видео, а именно задаются настройки и список видеопотоков для обработки.
findface-video-worker Сервис, часть модуля видеодетекции лиц, который распознает лица на видео и отправляет их нормализованные изображения, соответствующие видеокадры и метаданные (такие как ID камеры и время обнаружения лица) в сервис findface-facerouter для дальнейшей обработки в соответствие с заданными правилами. Обеспечивает распознавание живых лиц при соответствующих настройках. Поддерживается CPU- и GPU-ускорение.
findface-ntls Локальный сервер лицензий, который проверяет подлинность лицензии FindFace Security, взаимодействуя с глобальным сервером лицензий NtechLab. Для закрытых систем поддерживается работа с аппаратными лицензионными ключами. Поддерживается лицензирование через прокси-сервер.
Tarantool Стороннее программное обеспечение, на основе которого реализована биометрическая база данных, хранящая извлеченные биометрические образцы (векторы признаков) и события обнаружения лиц. Системные данные, досье, пользовательские аккаунты и настройки камер хранятся в PostgreSQL (часть прикладного модуля FindFace Security). Tarantool
etcd Стороннее программное обеспечение, реализующее распределенное хранилище ключей для компонента findface-video-manager. Используется в качестве координационной службы в распределенной системе, обеспечивая отказоустойчивость видеодетектора лиц. etcd
NginX Стороннее программное обеспечение, которое реализует веб-интерфейсы системы. nginx
memcached Стороннее программное обеспечение, реализующее сервис кэширования данных в оперативной памяти на основе хеш-таблицы. Используется для временного хранения извлеченных биометрических образцов перед их записью в базу данных Tarantool. memcached

Прикладной модуль FindFace Security

Прикладной модуль FindFace Security включает в себя следующие компоненты:

Компонент Описание Поставщик
findface-security Компонент, обеспечивающий доступ конечного пользователя к функциям ядра FindFace. Обеспечивает взаимодействие между ядром FindFace и веб-интерфейсом, функционирование системы в целом, HTTP и веб-сокет, обновление биометрической базы данных, отправку уведомлений о событиях, объединение событий в эпизоды, работу вебхуков, счетчики, постановку в очередь видеофайлов на обработку. Включает в себя следующие внутренние сервисы: проверка лицензии, менеджер счетчиков, менеджер вебхуков, группировщик персон, менеджер эпизодов, менеджер очереди на обработку видеофайлов. Последние четыре сервиса можно включать и выключать через файл конфигурации findface-security. Собственная разработка NtechLab
findface-security-ui Основной веб-интерфейс, использующийся для взаимодействия с FindFace Security. Позволяет работать с событиями идентификации лиц, искать лица в базах данных, управлять камерами, пользователями, досье и списками наблюдения, собирать статистику в реальном времени и многое другое.
findface-counter Сервис, используемый для дедупликации лиц.
PostgreSQL Стороннее программное обеспечение, реализующее основную базу данных системы. В данной базе хранятся детализированные досье персон с разбиением по категориям (спискам наблюдения), а также данные внутреннего характера, такие как профили пользователей FindFace Security, настройки видеокамер и пр. Биометрические данные лиц и события идентификации лиц хранятся в Tarantool (часть ядра FindFace). PostgreSQL
Pgbouncer Стороннее программное обеспечение, обеспечивающее облегченный пул соединений для PostgreSQL. Необязательный компонент, используется для увеличения производительности базы данных при высокой нагрузке. PgBouncer
Redis Стороннее программное обеспечение, которое реализует брокер сообщений внутри findface-security. Redis
Django Стороннее программное обеспечение, реализующее веб-фреймворк для веб-интерфейса FindFace Security. Django

Автономные сервисы

Помимо встроенного функционала, предоставляемого findface-video-worker, распознавание живых лиц (liveness) также предоставляется автономным сервисом findface-liveness-api. Сервис берет определенное количество кадров из видеофрагмента и возвращает изображение лица наилучшего качества и десятичный результат liveness, усредненный по взятым кадрам. Если заданы соответствующие настройки, сервис также может возвращать полнокадровые и нормализованные изображения лиц и сохранять результат детекции в кэше findface-sf-api, возвращая detection_id. См. Liveness как автономный сервис.

Развертывание на одиночном сервере или в кластере

Вы можете развернуть FindFace Security как на одиночном сервере, так и в кластерной среде. При выборе последнего варианта доступны следующие схемы развертывания:

  • Центральный сервер FindFace Security, взаимодействующий с несколькими дополнительными серверами для обработки видео (с одним установленным компонентом findface-video-worker).
  • Полностью распределенная архитектура FindFace Security. Может понадобиться балансировка нагрузки.

Подробнее см. раздел Типичная установка в кластере.

Аппаратное ускорение на CPU и GPU

Сервисы findface-extraction-api и findface-video-worker могут использовать как CPU-, так и GPU-ускорение. Нужный тип ускорения выбирается во время установки из консольного инсталлятора.

Если установка FindFace Security выполняется из apt-репозитория, на CPU-сервере нужно развернуть пакеты findface-extraction-api и/или findface-video-worker-cpu, а на GPU-сервере пакеты findface-extraction-api-gpu и/или findface-video-worker-gpu.

Важно

Для выбора конфигурации оборудования см. Системные требования.

Важно

Если разрешение используемой камеры превышает 1280x720 пикселей, настоятельно рекомендуется использовать пакет с ускорением на GPU findface-video-worker-gpu.

Примечание

Liveness-детектор на CPU работает гораздо медленнее, чем на GPU.