Архитектура
Хотя взаимодействие с FindFace Multi происходит в основном через веб-интерфейс, не забудьте уделить немного времени изучению архитектуры программного комплекса. Эти знания необходимы для развертывания, интеграции, обслуживания и устранения проблем при работе FindFace Multi.
В этой главе:
Объекты распознавания. Процесс распознавания
FindFace Multi может распознавать следующие объекты и их атрибуты:
человеческие лица
человеческие силуэты
автомобили
Примечание
Функционал распознавания лиц включен по умолчанию. Внесите изменения в файлы конфигурации, чтобы включить распознавание силуэтов и автомобилей.
FindFace Multi обнаруживает объект на фотографии или видеоизображении и подготавливает его изображение с помощью нормализации. Далее нормализованное изображение используется для извлечения вектора признаков объекта (n-мерного вектора числовых признаков, которые характеризуют объект). Векторы признаков объектов хранятся в базе данных и в дальнейшем используются для верификации и идентификации.
Архитектурные элементы
FindFace Multi состоит из следующих основных архитектурных элементов:
Ядро FindFace, передовая технология распознавания объектов на базе искусственного интеллекта, которая может использоваться в качестве отдельного продукта FindFace Enterprise Server.
FindFace Multi, готовый прикладной модуль к FindFace Enterprise Server.
Внутренняя архитектура Ядра FindFace позволяет встроить Видеомагнитофон — дополнительный функционал, который записывает, хранит и проигрывает видеоданные с камер.
Схема архитектуры

Ядро FindFace
Ядро FindFace включает в себя следующие компоненты:
Компонент  | 
Используемые порты  | 
Описание  | 
Поставщик  | 
|---|---|---|---|
findface-extraction-api  | 
18666  | 
Сервис, использующий нейронные сети для обнаружения объекта на изображении и извлечения его вектора признаков. Он также распознает атрибуты объектов (например, пол, возраст, эмоции, борода, очки, медицинская маска для объектов типа лицо). CPU- или GPU-ускорение.  | 
Собственная разработка NtechLab  | 
findface-sf-api  | 
18411  | 
Сервис, реализующий HTTP API обнаружения и распознания объектов.  | 
|
findface-tarantool-server  | 
32001, порты шардов (по умолчанию 330xx, 81xx)  | 
Сервис, обеспечивающий взаимодействие между сервисом   | 
|
findface-upload  | 
3333  | 
Веб-сервер на базе NginX, используемый как хранилище исходных изображений, миниатюр объектов и нормализованных изображений объектов. Если установлен Видеомагнитофон,   | 
|
findface-facerouter  | 
18820  | 
Сервис, который используется для задания правил обработки обнаруженных на видео объектов. В FindFace Multi функции   | 
|
findface-video-manager  | 
18810, 18811  | 
Сервис, являющийся частью модуля видеодетекции объектов, через который осуществляется управление детекцией объектов на видео, а именно задаются настройки и список видеопотоков для обработки.  | 
|
findface-video-worker  | 
18999  | 
Сервис, часть модуля видеодетекции объектов, который распознает объекты на видео и отправляет их нормализованные изображения, соответствующие видеокадры и метаданные (такие как время обнаружения) в сервис   | 
|
findface-ntls  | 
443 (TCP), 3133, 3185  | 
Локальный сервер лицензий, который проверяет подлинность лицензии FindFace Multi, взаимодействуя с глобальным сервером лицензий NtechLab. Для закрытых систем поддерживается лицензирование через ключ аппаратной защиты и по слепку с оборудования. Поддерживается лицензирование через прокси-сервер.  | 
|
findface-counter  | 
18300  | 
Сервис, используемый для дедупликации событий.  | 
|
findface-liveness-api  | 
18301  | 
Помимо встроенного функционала, предоставляемого   | 
|
Tarantool  | 
Порты шардов (по умолчанию 330xx, 81xx)  | 
Стороннее программное обеспечение, на основе которого реализована база данных, хранящая извлеченные векторы признаков и события распознавания объектов. Системные данные, карточки, пользовательские аккаунты и настройки камер хранятся в PostgreSQL (часть прикладного модуля FindFace Multi).  | 
|
etcd  | 
2379  | 
Стороннее программное обеспечение, реализующее распределенное хранилище ключей для компонента   | 
|
NginX  | 
80; SSL: 8002, 8003, 443, 80  | 
Стороннее программное обеспечение, которое реализует веб-интерфейсы системы.  | 
|
memcached  | 
11211  | 
Стороннее программное обеспечение, реализующее сервис кэширования данных в оперативной памяти на основе хеш-таблицы. Используется компонентом   | 
Прикладной модуль FindFace Multi
Прикладной модуль FindFace Multi включает в себя следующие компоненты:
Компонент  | 
Используемые порты  | 
Описание  | 
Поставщик  | 
|---|---|---|---|
findface-security  | 
Настраивается  | 
Компонент, обеспечивающий доступ конечного пользователя к функциям ядра FindFace. Обеспечивает взаимодействие между ядром FindFace и веб-интерфейсом, функционирование системы в целом, HTTP и веб-сокет, обновление содержимого базы векторов признаков, отправку уведомлений о событиях, объединение событий в эпизоды, работу вебхуков, счетчики, кластеризацию объектов, постановку в очередь видеофайлов на обработку. Включает в себя следующие внутренние сервисы: проверка лицензии, менеджер счетчиков, менеджер вебхуков, кластеризатор, менеджер эпизодов, менеджер очереди на обработку видеофайлов. Последние четыре сервиса можно включать и выключать через файл конфигурации   | 
Собственная разработка NtechLab  | 
findface-security-ui  | 
Настраивается  | 
Основной веб-интерфейс, использующийся для взаимодействия с FindFace Multi. Функционирует на основе фреймворка Django. Позволяет работать с событиями распознавания объектов, искать объекты в базах данных, управлять камерами, пользователями, карточками и списками наблюдения, собирать статистику в реальном времени и многое другое.  | 
|
NATS  | 
4222  | 
Стороннее программное обеспечение, которое реализует брокер сообщений внутри   | 
|
etcd  | 
2379  | 
Стороннее программное обеспечение, реализующее блокировки в сервисе   | 
|
Pgbouncer  | 
5439  | 
Стороннее программное обеспечение, обеспечивающее облегченный пул соединений для PostgreSQL. Необязательный компонент, используется для увеличения производительности базы данных при высокой нагрузке.  | 
|
PostgreSQL  | 
5432  | 
Стороннее программное обеспечение, реализующее основную базу данных системы. В базе данных хранятся карточки людей и автомобилей, а также данные для внутреннего использования, включая учетные записи пользователей и настройки камер. Векторы признаков объектов и события распознавания объектов хранятся в Tarantool (часть ядра FindFace).  | 
Видеомагнитофон
Видеомагнитофон является дополнительно устанавливаемой частью ядра FindFace. Видеомагнитофон включает в себя следующие компоненты:
Компонент  | 
Используемые порты  | 
Описание  | 
Поставщик  | 
|---|---|---|---|
findface-video-storage  | 
18611  | 
Сервис, реализующий управление видеофрагментами. Получает видеофрагменты от компонента   | 
Собственная разработка NtechLab  | 
findface-video-streamer-cpu  | 
9000  | 
По запросу от   | 
|
MongoDB  | 
27017  | 
Стороннее программное обеспечение, реализующее базу данных Видеомагнитофона. База данных хранит метаинформацию о видеофрагментах, включая сведения об их местонахождении. Сами видеофрагменты хранятся в компоненте   | 
Развертывание на одиночном сервере или в кластере
Вы можете развернуть FindFace Multi как на одиночном сервере, так и в многосерверной среде. При выборе последнего варианта доступны следующие схемы развертывания:
Центральный сервер FindFace Multi, взаимодействующий с несколькими дополнительными серверами для обработки видео (с одним установленным компонентом
findface-video-worker).См. раздел Дополнительное развертывание findface-video-worker на удаленных серверах.
Полностью распределенная архитектура FindFace Multi. Может понадобиться балансировка нагрузки.
См. раздел Стандартное развертывание в многосерверной среде.
Аппаратное ускорение на CPU и GPU
Сервисы findface-extraction-api и findface-video-worker могут использовать как CPU-, так и GPU-ускорение. Нужный тип ускорения выбирается во время установки из консольного инсталлятора.
Если установка FindFace Multi выполняется из 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.