Архитектура

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

В этой главе:

Объекты распознавания. Процесс распознавания

FindFace Multi может распознавать следующие объекты и их атрибуты:

  • человеческие лица

  • человеческие силуэты

  • транспортные средства

FindFace Multi обнаруживает объект на фотографии или видеоизображении и подготавливает его изображение с помощью нормализации. Далее нормализованное изображение используется для извлечения вектора признаков объекта (n-мерного вектора числовых признаков, которые характеризуют объект). Векторы признаков объектов хранятся в базе данных и в дальнейшем используются для верификации и идентификации.

Платформа на основе Docker

FindFace Multi разворачивается в Docker, наборе продуктов формата платформа как услуга (PaaS), которые используют виртуализацию на уровне операционной системы, чтобы поставлять программное обеспечение в пакетах, называемых контейнерами. Каждый сервис FindFace Multi работает в контейнере Docker.

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

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

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

  • FindFace Multi, готовый прикладной модуль к FindFace Enterprise Server.

Внутренняя архитектура ядра FindFace позволяет встроить дополнительную функциональность «Видеомагнитофон», которая позволяет записывать, хранить и проигрывать видеоданные с камер.

Схема архитектуры

architecture_ru

Ядро FindFace

Внутри ядра FindFace – отдельный продукт FindFace Enterprise Server. Он включает в себя следующие компоненты:

Компонент

Используемые порты

Описание

Поставщик

findface-extraction-api

18666

Сервис, использующий нейронные сети для обнаружения объекта на изображении и извлечения его вектора признаков. Он также распознает атрибуты объектов (например, пол, возраст, эмоции, борода, очки, медицинская маска для объектов типа лицо). CPU- или GPU-ускорение.

Собственная разработка NtechLab

findface-sf-api

18411

Сервис, реализующий HTTP API обнаружения и распознания объектов.

findface-tarantool-server

32001, порты шардов (по умолчанию 330xx, 81xx)

Сервис, обеспечивающий взаимодействие между сервисом findface-sf-api и базой данных векторов признаков (базой, в которой хранятся векторы признаков объектов) на основе Tarantool.

findface-upload

3333

Веб-сервер на базе NginX, используемый как хранилище исходных изображений, миниатюр объектов и нормализованных изображений объектов. Если установлен Видеомагнитофон, findface-upload также хранит видеоданные с камер.

findface-facerouter

18820

Сервис, который используется для задания правил обработки обнаруженных на видео объектов. В FindFace Multi функции findface-facerouter выполняются findface-multi-legacy (см. Прикладной модуль FindFace Multi).

findface-video-manager

18810, 18811

Сервис, являющийся частью модуля видеодетекции объектов, через который осуществляется управление детекцией объектов на видео, а именно задаются настройки и список видеопотоков для обработки.

findface-video-worker

18999

Сервис, часть модуля видеодетекции объектов, который распознает объекты на видео и отправляет их нормализованные изображения, соответствующие видеокадры и метаданные (такие как время обнаружения) в сервис findface-facerouter для дальнейшей обработки в соответствие с заданными правилами. Если включен Видеомагнитофон, findface-video-worker отправляет видео в сервис findface-video-storage. Обеспечивает распознавание живых лиц при соответствующих настройках. Поддерживается CPU- и GPU-ускорение.

findface-ntls

443 (TCP), 3133, 3185

Локальный сервер лицензий, который проверяет подлинность лицензии FindFace Multi, взаимодействуя с глобальным сервером лицензий NtechLab. Для закрытых систем поддерживается лицензирование через ключ аппаратной защиты и по слепку с оборудования. Поддерживается лицензирование через прокси-сервер.

findface-counter

18300

Сервис, используемый для дедупликации событий.

findface-liveness-api

18301

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

Tarantool

Порты шардов (по умолчанию 330xx, 81xx)

Стороннее программное обеспечение, на основе которого реализована база данных, хранящая извлеченные векторы признаков и события распознавания объектов. Системные данные, карточки, пользовательские аккаунты и настройки камер хранятся в PostgreSQL (часть прикладного модуля FindFace Multi).

Tarantool

etcd

2379

Стороннее программное обеспечение, реализующее распределенное хранилище ключей для компонента findface-video-manager. Используется в качестве координационной службы в распределенной системе, обеспечивая отказоустойчивость видеодетектора объектов.

etcd

NginX

80; SSL: 8002, 8003, 443, 80

Стороннее программное обеспечение, которое реализует веб-интерфейсы системы.

nginx

memcached

11211

Стороннее программное обеспечение, реализующее сервис кэширования данных в оперативной памяти на основе хеш-таблицы. Используется компонентом findface-sf-api для временного хранения извлеченных векторов признаков перед их записью в базу данных Tarantool.

memcached

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

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

Компонент

Используемые порты

Описание

Поставщик

findface-multi-legacy

Настраивается

Сервис, который служит шлюзом доступа к ядру FindFace. Обеспечивает взаимодействие между ядром FindFace и веб-интерфейсом, работой системы в целом, HTTP и веб-сокетом, мониторингом объектов, уведомлениями о событиях, эпизодами, вебхуками, кластеризацией объектов и счетчиками.

Собственная разработка NtechLab

findface-multi-pause

н/п

Внутренние сервисы, помогающие findface-multi-legacy. Сервис findface-multi-audit является заделом на будущее. Он станет полностью функциональными в следующих версиях. На данный момент он частично дублирует функциональность findface-multi-legacy. Используйте findface-multi-legacy для работы с ним. Сервис findface-multi-identity-provider служит для аутентификации и управления пользователями и ролевой моделью доступов.

findface-multi-audit

8012, 8013, 8014

findface-multi-identity-provider

8022, 8023, 8024

findface-onvif-discovery

н/п

findface-multi-file-mover

н/п

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

findface-multi-ui

Настраивается

Основной веб-интерфейс, использующийся для взаимодействия с FindFace Multi. Функционирует на основе фреймворка Django. Позволяет работать с событиями распознавания объектов, искать объекты в базах данных, управлять камерами, пользователями, карточками и списками наблюдения, собирать статистику в реальном времени и многое другое.

NATS

4222

Стороннее программное обеспечение, которое реализует брокер сообщений внутри findface-multi-legacy.

NATS

etcd

2379

Стороннее программное обеспечение, реализующее блокировки в сервисе findface-multi-legacy, например блокировки в механизме проверки лицензии, отчетах, обработке видео, кластеризации объектов и т. д.

etcd

Pgbouncer

5439

Стороннее программное обеспечение, обеспечивающее облегченный пул соединений для PostgreSQL. Необязательный компонент, используется для увеличения производительности базы данных при высокой нагрузке.

PgBouncer

PostgreSQL

5432

Стороннее программное обеспечение, реализующее основную базу данных системы. В базе данных хранятся карточки людей и транспортных средств, а также данные для внутреннего использования, включая учетные записи пользователей и настройки камер. Векторы признаков объектов и события распознавания объектов хранятся в Tarantool (часть ядра FindFace).

PostgreSQL

Видеомагнитофон

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

Компонент

Используемые порты

Описание

Поставщик

findface-video-storage

18611

Сервис, реализующий управление видеофрагментами. Получает видеофрагменты от компонента findface-video-worker, помещает их в хранилище (findface-upload), записывает метаинформацию и сведения о местонахождении видеофрагментов в базу данных Видеомагнитофона (MongoDB). По запросу от findface-multi-legacy выдает информацию об имеющихся видеофрагментах в форме ссылок на Websocket-потоки. Сервис findface-video-streamer использует данные ссылки, чтобы передать видео пользователю для просмотра и скачивания.

Собственная разработка NtechLab

findface-video-streamer

9000

По запросу от findface-multi-ui данный сервис по Websocket извлекает требуемые видеофрагменты из хранилища findface-video-storage и findface-video-worker (только последний фрагмент, если он еще не записан в хранилище). Далее он склеивает видеофрагменты в единое видео и передает его пользователю для просмотра и скачивания.

MongoDB

27017

Стороннее программное обеспечение, реализующее базу данных Видеомагнитофона. База данных хранит метаинформацию о видеофрагментах, включая сведения об их местонахождении. Сами видеофрагменты хранятся в компоненте findface-upload.

MongoDB

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

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

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

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

Важно

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

Важно

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

Примечание

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