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

Ядро FindFace
Внутри ядра FindFace – отдельный продукт FindFace Server. Он включает в себя следующие компоненты:
Компонент |
Используемые порты |
Описание |
Поставщик |
|---|---|---|---|
findface-extraction-api |
18666 |
Сервис, использующий нейронные сети для обнаружения объекта на изображении и извлечения его вектора признаков. Он также распознает атрибуты объектов (например, пол, возраст, эмоции, борода, очки, медицинская маска для объектов типа лицо). CPU- или GPU-ускорение. Подробнее о сервисе findface-extraction-api. |
Собственная разработка NtechLab |
findface-sf-api |
18411 |
Сервис, реализующий HTTP API обнаружения и распознавания объектов. Подробнее о сервисе findface-sf-api. |
|
findface-tarantool-server |
32001, порты шардов (по умолчанию 330xx, 81xx) |
Сервис, обеспечивающий взаимодействие между сервисом |
|
findface-upload |
3333 |
Веб-сервер на базе NginX, используемый как хранилище исходных изображений, миниатюр объектов и нормализованных изображений объектов. Если установлен Видеомагнитофон, |
|
findface-facerouter |
18820 |
Сервис, который используется для задания правил обработки обнаруженных на видео объектов. В FindFace Multi функции |
|
findface-video-manager |
18810, 18811 |
Сервис, являющийся частью модуля видеодетекции объектов, через который осуществляется управление детекцией объектов на видео, а именно задаются настройки и список видеопотоков для обработки. Подробнее о сервисе findface-video-manager. |
|
findface-video-worker |
18999 |
Сервис, часть модуля видеодетекции объектов, который распознает объекты на видео и отправляет их нормализованные изображения, соответствующие видеокадры и метаданные (такие как время обнаружения) в сервис |
|
findface-ntls |
443 (TCP), 3133, 3185 |
Локальный сервер лицензий, который проверяет подлинность лицензии FindFace Multi, взаимодействуя с глобальным сервером лицензий NtechLab. Для закрытых систем поддерживается лицензирование через ключ аппаратной защиты и по слепку с оборудования. Поддерживается лицензирование через прокси-сервер. Подробнее о сервисе findface-ntls. |
|
findface-deduplicator |
18310 |
Сервис сравнивает векторы признаков; используется для дедупликации эпизодов и событий кластеров. |
|
findface-liveness-api |
18301 |
Помимо встроенной функциональности, предоставляемой |
|
Tarantool |
Порты шардов (по умолчанию 330xx, 81xx) |
Стороннее программное обеспечение, на основе которого реализована база данных, хранящая извлеченные векторы признаков и события распознавания объектов. Системные данные, карточки, пользовательские аккаунты и настройки камер хранятся в PostgreSQL (часть прикладного модуля FindFace Multi). |
|
etcd |
2379 |
Стороннее программное обеспечение, реализующее распределенное хранилище ключей для компонента |
|
NginX |
80; SSL: 8002, 8003, 443, 80 |
Стороннее программное обеспечение, которое реализует веб-интерфейсы системы. |
|
Redis |
6379 |
Сторонняя резидентная база данных, которая используется сервисом |
Прикладной модуль FindFace Multi
Прикладной модуль FindFace Multi включает в себя следующие компоненты:
Компонент |
Используемые порты |
Описание |
Поставщик |
|---|---|---|---|
findface-multi-legacy |
Настраивается |
Сервис, который служит шлюзом доступа к ядру FindFace. Отвечает за взаимодействие между ядром FindFace и веб-интерфейсом, а также функционирование системы как единого целого. Подробнее о сервисе findface-multi-legacy. |
Собственная разработка NtechLab |
findface-multi-audit |
8012, 8013, 8014 |
Внутренние сервисы, помогающие |
|
findface-multi-identity-provider |
8022, 8023, 8024 |
||
findface-onvif-discovery |
н/п |
||
findface-multi-legacy-singleton-services |
н/п |
Запускает single-instance сервисы, такие как синхронизация камер с |
|
findface-multi-identity-provider-migrate |
н/п |
Сервисы запускают миграцию базы данных, создают галереи и производят другие настройки. |
|
findface-multi-legacy-migrate |
н/п |
||
findface-multi-healthcheck |
н/п |
Проверяет работоспособность контейнеров при запуске. Ожидает, что контейнеры будут в статусе |
|
findface-multi-cleaner |
н/п |
Часть функциональности |
|
findface-multi-cleaner-vms |
н/п |
Часть функциональности |
|
findface-multi-file-mover |
н/п |
Сервис-перекладчик, используется для реализации многоуровневого хранения данных. Сервис служит для переноса изображений из кратковременного хранилища в долговременное. |
|
findface-multi-ui |
Настраивается |
Основной веб-интерфейс, использующийся для взаимодействия с FindFace Multi. Функционирует на основе фреймворка Django. Позволяет работать с событиями распознавания объектов, искать объекты в базах данных, управлять камерами, пользователями, карточками и списками наблюдения, собирать статистику в реальном времени и многое другое. Конфигурация пользовательского интерфейса находится в отдельном конфигурационном файле ui-config.yaml. |
|
findface-multi-alerts |
н/п |
Внутренний сервис, который отвечает за создание и функционирование тревожных оповещений. |
|
findface-multi-alerts-migrate |
н/п |
Сервис отвечает за эволюцию схемы БД сервиса |
|
findface-multi-replication-receiver |
8014 |
Внутренний сервис, который отвечает за получение событий, когда FindFace Multi работает в качестве Приёмника. |
|
findface-multi-replication-sender |
8015 |
Внутренний сервис, который отвечает за отправку событий по HTTPS при работе FindFace Multi в качестве Источника. |
|
findface-multi-replication-receiver-migrate |
н/п |
Сервис отвечает за эволюцию схемы БД Приёмника. |
|
findface-multi-replication-sender-migrate |
н/п |
Сервис отвечает за эволюцию схемы БД Источника. |
|
findface-multi-line-crossing-analytics |
н/п |
Внутренний сервис, который обрабатывает данные FindFace Multi для дальнейшего их использования в аналитических целях. На данный момент аналитика работает только для пересечения линий. |
|
superset |
8088 |
Сервисы относятся к стороннему программному приложению с открытым исходным кодом — Apache Superset. В рамках FindFace Multi данное приложение может использоваться как BI-система для аналитического сервиса. |
|
superset-init |
|||
superset-worker |
|||
superset-worker-beat |
|||
TimescaleDB |
5432, 8008, 8081 |
Стороннее программное обеспечение, расширение PostgreSQL, которое оптимизирует работу с временными рядами в обычной базе данных PostgreSQL. |
|
NATS |
4222 |
Стороннее программное обеспечение, которое реализует брокер сообщений внутри |
|
NATS JetStream |
4222, 6222, 8222 |
NATS с компонентом JetStream — это стороннее программное обеспечение. Оба сервиса, |
|
etcd |
2379 |
Стороннее программное обеспечение, реализующее блокировки в сервисе |
|
Pgbouncer |
5439 |
Стороннее программное обеспечение, обеспечивающее облегченный пул соединений для PostgreSQL. Необязательный компонент, используется для увеличения производительности базы данных при высокой нагрузке. |
|
PostgreSQL |
5432 |
Стороннее программное обеспечение, реализующее основную базу данных системы. В базе данных хранятся карточки людей и транспортных средств, а также данные для внутреннего использования, включая учетные записи пользователей и настройки камер. Векторы признаков объектов и события распознавания объектов хранятся в Tarantool (часть ядра FindFace). |
|
RabbitMQ |
4369, 5671-5672, 15671-15672, 15691-15692, 25672 |
Сторонний брокер сообщений с открытым исходным кодом. |
Видеомагнитофон
Видеомагнитофон является дополнительно устанавливаемой частью ядра FindFace. Видеомагнитофон включает в себя следующие компоненты:
Компонент |
Используемые порты |
Описание |
Поставщик |
|---|---|---|---|
findface-video-storage |
18611 |
Сервис, реализующий управление видеофрагментами. Получает видеофрагменты от компонента |
Собственная разработка NtechLab |
findface-video-streamer |
9000 |
По запросу от |
|
MongoDB |
27017 |
Стороннее программное обеспечение, реализующее базу данных Видеомагнитофона. База данных хранит метаинформацию о видеофрагментах, включая сведения об их местонахождении. Сами видеофрагменты хранятся в компоненте |
Для работы с сервисом тревожного монитора FindFace Multi использует Annex. Список задействованных сервисов представлен здесь.
Развертывание на одиночном сервере или в кластере
Вы можете развернуть FindFace Multi как на одиночном сервере, так и в многосерверной среде. При выборе последнего варианта доступны следующие схемы развертывания:
Центральный сервер FindFace Multi, взаимодействующий с несколькими дополнительными серверами для обработки видео (серверами, на которых установлен только
findface-video-worker).См. раздел Развертывание FindFace Video Worker на удаленных серверах.
Полностью распределенная архитектура FindFace Multi. Может понадобиться балансировка нагрузки. Свяжитесь с нашими экспертами по адресу support@ntechlab.com для получения рекомендаций.
См. раздел Стандартное развертывание в многосерверной среде.
Аппаратное ускорение на CPU и GPU
Сервисы findface-extraction-api, findface-video-worker и findface-liveness-api могут разворачиваться на базе CPU или GPU. Нужный тип ускорения выбирается во время установки из консольного инсталлятора.
Важно
Для выбора конфигурации оборудования см. Требования.
Важно
Если разрешение используемой камеры превышает 1280x720 пикселей, настоятельно рекомендуется использовать вариант findface-video-worker-gpu с ускорением на GPU.
Примечание
Liveness-детектор на CPU работает гораздо медленнее, чем на GPU.