Полностью настраиваемая установка

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

Для запуска полностью настраиваемой установки выполните следующие действия:

  1. Загрузите файл инсталлятора findface-*.run.

  2. Поместите файл .run в любой каталог на сервере установки (например, /home/username).

  3. Из данного каталога сделайте файл .run исполняемым.

    Примечание

    Вместо findface-* укажите актуальное имя файла.

    chmod +x findface-*.run
    
  4. Запустите файл .run.

    sudo ./findface-*.run
    

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

    1. В: Which product should be installed? (Какой продукт следует установить?)

      О: 1

      Which product should be installed?
      
        1. [multi   ]  FindFace Multi
        2. [server  ]  FindFace Server
        3. [video-worker]  FindFace Video Worker
      
      (default: multi)
      product> 1
      
    2. В: Please choose installation type: (Пожалуйста, выберите тип установки:)

      О: 4

      Please choose installation type:
      
      -  1 [stand-alone ]  Single Server
      -  2 [multi-worker]  Single Server, Multiple video workers
      -  3 [images      ]  Don't configure or start anything, just load the images and copy the models
      -  4 [custom      ]  Fully customized installation
      
      (default: stand-alone)
      type> 4
      
    3. В: Directory to install into: (Директория установки:)

      О: Укажите директорию установки FindFace Multi. По умолчанию установка выполняется в /opt/findface-multi. Нажмите Enter для подтверждения. В противном случае укажите нужную директорию и нажмите Enter.

      Directory to install into:
      (default: /opt/findface-multi)
      dest_dir>
      
    4. В: Please enter path to docker-compose binary: (Пожалуйста, введите путь к бинарному файлу docker-compose)

      О: Укажите фактический путь к бинарному файлу docker-compose. По умолчанию предлагается /usr/local/bin/docker-compose, и это тот путь, который вы получите при установке docker-compose согласно инструкциям. Нажмите Enter для подтверждения. В противном случае укажите другой путь и нажмите Enter.

      Please enter path to docker-compose binary
      (default: /usr/local/bin/docker-compose)
      docker_compose>
      
    5. В: Found X interface(s). Which one should we announce as our external address? (Было найдено X сетевых интерфейсов. Какой интерфейс следует использовать в качестве внешнего IP-адреса?)

      О: Выберите интерфейс, который вы собираетесь использовать в качестве IP-адреса FindFace.

      Found 3 interface(s). Which one should we announce as our external address?
      
      -  1 [lo      ]  127.0.0.1
      -  2 [ens3    ]  192.168.112.254
      -  3 [docker0 ]  10.44.132.1
      
      (default: 192.168.112.254)
      ext_ip.advertised> 2
      
    6. В: Found X interface(s). Which one should we announce as our inter-service communication address? (Было найдено X сетевых интерфейсов. Какой интерфейс следует использовать в качестве адреса для межсервисной коммуникации?)

      О: Выберите интерфейс для межсервисного взаимодействия.

      Found 3 interface(s). Which one should we announce as our inter-service communication address?
      
      -  1 [lo      ]  127.0.0.1
      -  2 [ens3    ]  192.168.112.254
      -  3 [docker0 ]  10.44.132.1
      
      (default: 192.168.112.254)
      inter_ip.advertised> 2
      
    7. В: Please select FindFace Multi components to install: (Пожалуйста, выберите компоненты FindFace Multi для установки:)

      О: Выберите компоненты FindFace для установки. По умолчанию установке подлежат все компоненты. Вы можете оставить все как есть, введя done, или выбрать определенные компоненты. Для того чтобы выбрать нужные, сначала снимите выделение со всех компонентов, введя в командной строке -*, затем введите порядковые номера нужных компонентов через пробел, например: 1 7 13 и т. д. Введите done для сохранения выбора и перехода к следующему шагу.

      Предупреждение

      Не рекомендуется исключать компонент pause из установки, так как оставшиеся компоненты останутся без сетевого идентификатора (namespace), к которому можно подключиться.

      Если вы исключаете компонент pause намеренно, вам потребуется отредактировать файл /opt/findface-multi/docker-compose.yaml и указать имя хоста для каждого сервиса в параметре network_mode.

      Please select FindFace Multi components to install:
      
      -  1 [v]  findface-data        - Recognition models
      ...
      ...
      
      Enter keyword to select matching choices or -keyword to clear selection.
      Enter "done" to save your selection and proceed to another step.
      components> done
      

    Полный список компонентов и их описание можно найти в разделе Компоненты для установки.

    1. Конкретные вопросы, связанные с выбранными компонентами: тип ускорения, необходимое количество экземпляров компонента, модели нейронных сетей и т. д. Если вы затрудняетесь с ответом, обратитесь к разделу Компоненты для установки или попробуйте найти его в других разделах этой документации.

    2. В: Please set findface-multi admin password (Пожалуйста, установите пароль для администратора FindFace Multi)

      О: Задайте пароль для Супер Администратора (superuser).

      Please set findface-multi admin password
      findface-multi-admin-password> admin
      

    Инсталлятор извлечет образы FindFace Multi из реестра Ntechlab и запустит ассоциированные сервисы в контейнерах Docker.

  5. Выполните процедуры после развертывания.

Совет

Для установки той же конфигурации FindFace Multi на другом сервере используйте автоматическое развертывание из файла с параметрами установки. В этом случае вам не придется снова отвечать на вопросы инсталлятора. Точный путь к файлу с параметрами установки отображается сразу после последнего вопроса инсталлятора, до начала активной фазы установки:

[I 2023-02-09 11:13:37,187 main:142] Your answers were saved to /tmp/findface-installer-p01n9sn3.json

Обязательно удалите поля *.config, exp_ip и int_ip перед установкой FindFace Multi на сервере с другим IP-адресом.

Для запуска автоматического развертывания из файла /tmp/<findface-installer-*>.json, выполните следующую команду:

sudo ./<findface-*>.run -f /tmp/<findface-installer-*>.json

Компоненты для установки

Ознакомьтесь с полным списком компонентов при пользовательской установке, а также с их описанием.

Please select FindFace Multi components to install:

-  1 [v]  findface-data        - Recognition models
-  2 [v]  pause                - Pause container that hosts network namespace
-  3 [v]  memcached            - (third-party) Memcached server
-  4 [v]  etcd                 - (third-party) etcd server
-  5 [v]  postgresql           - (third-party) PostgreSQL server
-  6 [v]  redis                - (third-party) Redis server
-  7 [v]  pgbouncer            - (third-party) Connection pooler for PostgreSQL
-  8 [v]  nats                 - (third-party) NATS Server
-  9 [v]  nats-jetstream       - (third-party) NATS Server with JetStream enabled
- 10 [v]  timescaledb          - (third-party) TimescaleDB server
- 11 [v]  findface-ntls        - FindFace License Server - one instance of this service needs to be installed
- 12 [v]  findface-extraction-api - FindFace Extraction API - detection and recognition API
- 13 [v]  findface-sf-api      - Simple Face API - main HTTP API of FindFace Server
- 14 [v]  findface-deduplicator - Deduplicator - simple deduplicator HTTP API
- 15 [v]  findface-liveness-api - Face Liveness API - video liveness detection service.
- 16 [v]  findface-upload      - FindFace Upload - WebDAV configuration for NginX
- 17 [v]  findface-video-manager - FindFace Video Manager - Jobs scheduler and management API for video processing
- 18 [v]  findface-video-worker - FindFace Video Worker - Realtime detector for video files and streams
- 19 [v]  findface-multi-line-crossing-analytics - FindFace Multi line crossing analytics service
- 20 [v]  findface-multi-identity-provider - FindFace Multi identity provider service
- 21 [v]  findface-multi-audit - FindFace Multi audit service
- 22 [v]  findface-multi-legacy - FindFace Multi
- 23 [v]  findface-multi-ui    - FindFace Multi ui service
- 24 [v]  findface-tarantool-server - FindFace TNT API - storage and search service
- 25 [v]  mongodb              - (third-party) MongoDB database
- 26 [v]  findface-video-storage - FindFace Video Storage - a service for storing video chunks
- 27 [v]  findface-video-streamer - FindFace Video Streamer - service for streaming archived videos
- 28 [v]  superset             - (third party) superset BI with our init
- 29 [v]  rabbitmq             - (third-party) RabbitMQ server
- 30 [v]  findface-annex       - FindFace Annex
- 31 [v]  alarm-app            - Alarm App
- 32 [v]  findface-multi-file-mover - FindFace Multi file mover service
- 33 [v]  healthcheck          - Container that waits until multi is ready
- 34 [v]  findface-multi-alerts - FindFace Multi alerts service

Enter keyword to select matching choices or -keyword to clear selection.
Enter "done" to save your selection and proceed to another step.
components> done

Компонент

Описание

findface-data

Компонент устанавливает модели нейронных сетей. Выберите нужные модели из списка. Вам также потребуется отредактировать конфигурационные файлы findface-extraction-api.yaml и findface-video-worker.yaml соответствующим образом. Хотя бы одна из моделей нейронных сетей должна быть включена.

pause

Внутренний сервис. Компонент устанавливает контейнер findface-multi-pause-1, который хранит сетевое пространство имен для других компонентов. Компонент pause обычно не следует исключать из установки, так как в этом случае остальные компоненты останутся без сетевого идентификатора (namespace), к которому можно подключиться. Если вы намеренно исключаете компонент pause, обязательно отредактируйте файл docker-compose.yaml и укажите имя хоста для каждого сервиса в параметре network_mode.

memcached

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

etcd

Компонент устанавливает контейнер findface-multi-etcd-1. Это стороннее программное обеспечение, которое в составе ядра FindFace реализует распределенное хранилище ключей для компонента findface-video-manager. Используется в качестве координационной службы в распределенной системе, обеспечивая отказоустойчивость видеодетектора объектов. В FindFace Multi данное программное обеспечение реализует блокировки в сервисе findface-multi-legacy, например, блокировки в механизме проверки лицензии, отчетах, обработке видео, кластеризации объектов и т. д.

postgresql

Компонент устанавливает контейнер findface-multi-postgresql-1. PostgreSQL — это стороннее программное обеспечение, реализующее основную базу данных системы. В базе данных хранятся карточки людей и транспортных средств, а также данные для внутреннего использования, включая учетные записи пользователей и настройки камер. Векторы признаков объектов и события распознавания объектов хранятся в Tarantool (часть ядра FindFace).

redis

Компонент устанавливает контейнер findface-multi-redis-1. Redis — это сторонняя резидентная база данных, которая может использоваться сервисом findface-sf-api в качестве временного хранилища для извлеченных векторов признаков объекта перед их записью в хранилище векторов признаков.

pgbouncer

Компонент устанавливает контейнер findface-multi-pgbouncer-1. Pgbouncer — это стороннее программное обеспечение, обеспечивающее облегченный пул соединений для PostgreSQL. Необязательный компонент, используется для увеличения производительности базы данных при высокой нагрузке.

nats

Компонент устанавливает контейнер findface-multi-nats-1. NATS — это стороннее программное обеспечение, которое реализует брокер сообщений внутри findface-multi-legacy.

nats-jetstream

Компонент устанавливает контейнер findface-multi-nats-jetstream-1. NATS с компонентом JetStream — это стороннее программное обеспечение. Оба сервиса, nats и nats-jetstream, выполняют одну и ту же функцию с разницей в гарантии доставки сообщений. nats-jetstream обеспечивает более высокую гарантию доставки сообщений, чем nats, так как не теряет сообщения, даже если система или пользователь недоступны. nats-jetstream используется системой там, где потеря сообщений недопустима. Сервисы не являются взаимозаменяемыми, и оба необходимы для функционирования системы.

timescaledb

Компонент устанавливает контейнер findface-multi-timescaledb-1. Стороннее программное обеспечение TimescaleDB — это расширение PostgreSQL, которое оптимизирует работу с временными рядами в обычной базе данных PostgreSQL. Это обязательный к установке компонент, если вы устанавливаете findface-multi-line-crossing-analytics или findface-annex.

findface-ntls

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

findface-extraction-api

Компонент устанавливает контейнер findface-multi-findface-extraction-api-1. Это внутренний сервис, который использует нейронные сети для обнаружения объекта на изображении и извлечения его вектора признаков. Он также распознает атрибуты объектов (например, пол, возраст, эмоции, борода, состояние глаз, очки, медицинская маска для объектов типа лицо). CPU- или GPU-ускорение. Подробнее о сервисе findface-extraction-api.

findface-sf-api

Компонент устанавливает контейнер findface-multi-findface-sf-api-1. Это внутренний сервис, который реализует HTTP API для доступа к функциям обнаружения и распознавания объектов. Подробнее о сервисе findface-sf-api.

findface-deduplicator

Компонент устанавливает контейнер findface-multi-findface-deduplicator-1. Это внутренний сервис, который сравнивает векторы признаков; используется для дедупликации эпизодов и событий кластеров.

findface-liveness-api

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

findface-upload

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

findface-video-manager

Компонент устанавливает контейнер findface-multi-findface-video-manager-1. Это внутренний сервис, являющийся частью модуля видеодетекции объектов, через который осуществляется управление детекцией объектов на видео, а именно задаются настройки и список видеопотоков для обработки. Подробнее о сервисе findface-video-manager.

findface-video-worker

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

findface-multi-line-crossing-analytics

Компонент устанавливает контейнер findface-multi-findface-multi-line-crossing-analytics-1. Это внутренний сервис, который обрабатывает данные FindFace Multi для дальнейшего их использования в аналитических целях. На данный момент аналитика работает только для пересечения линий. Если вашей целью является использование аналитического сервиса BI, установите findface-multi-line-crossing-analytics вместе с timescaledb и любой BI системой (вашей собственной или предоставленной здесь компонентом superset).

findface-multi-identity-provider

Компонент устанавливает контейнеры findface-multi-findface-multi-identity-provider-1 и findface-multi-findface-multi-identity-provider-migrate-1. Это внутренний сервис, который служит для аутентификации и управления пользователями и ролевой моделью доступов.

findface-multi-audit

Компонент устанавливает контейнер findface-multi-findface-multi-audit-1. Это внутренний сервис, который является заделом на будущее. Он станет полностью функциональными в следующих версиях. На данный момент сервис частично дублирует функциональность findface-multi-legacy.

findface-multi-legacy

Компонент устанавливает контейнеры findface-multi-findface-multi-legacy-1, findface-multi-findface-onvif-discovery-1, findface-multi-findface-multi-legacy-migrate-1, findface-multi-findface-multi-legacy-singleton-services-1, findface-multi-cleaner-1, findface-multi-cleaner-vms-1. Это внутренний сервис, который служит шлюзом доступа к ядру FindFace. Отвечает за взаимодействие между ядром FindFace и веб-интерфейсом, а также функционирование системы как единого целого. Подробнее о сервисе findface-multi-legacy.

findface-multi-ui

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

findface-tarantool-server

Компонент устанавливает контейнеры findface-multi-findface-tarantool-server-shard-*-1. Это внутренний сервис, обеспечивающий взаимодействие между сервисом findface-sf-api и базой данных векторов признаков (базой, в которой хранятся векторы признаков объектов) на основе Tarantool. Количество экземпляров (шардов) рассчитывается по формуле: N = min(max(min(mem_mb // 2000, cpu_cores), 1), 16 * cpu_cores). Т. е. количество равно размеру оперативной памяти в Мб, разделенному на 2000, или количеству физических ядер процессора (но не менее 1 шарда), или же количеству физических ядер процессора, умноженному на 16, если первое полученное значение больше. По умолчанию предлагается установить 8 шардов. Подробнее о сервисе findface-tarantool-server.

mongodb

Компонент устанавливает контейнер findface-multi-mongodb-1. Стороннее программное обеспечение, реализующее базу данных Видеомагнитофона. База данных хранит метаинформацию о видеофрагментах, включая сведения об их местонахождении. Сами видеофрагменты хранятся в компоненте findface-upload. Если вы хотите использовать Видеомагнитофон, установите mongodb вместе с компонентами findface-video-storage и findface-video-streamer.

findface-video-storage

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

findface-video-streamer

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

superset

Компонент устанавливает контейнеры findface-multi-superset-worker-1, findface-multi-superset-init-1, findface-multi-superset-worker-beat-1, findface-multi-superset-1. Это стороннее программное приложение с открытым исходным кодом — Apache Superset. Необходимо установить этот компонент вместе с компонентами findface-multi-line-crossing-analytics и timescaledb, если вы хотите использовать аналитический сервис BI. Или вы можете использовать свою собственную BI-систему. Подробнее о Аналитический сервис BI.

rabbitmq

Компонент устанавливает контейнер findface-multi-rabbitmq-1. RabbitMQ — это сторонний брокер сообщений с открытым исходным кодом. Это обязательный к установке компонент, если вы установили findface-annex.

findface-annex

Компонент устанавливает контейнеры findface-multi-backend_provider-1, findface-multi-service_notifier_ws-1, findface-multi-service_alarmer-1, findface-multi-service_notifier_tg-1, findface-multi-backend_api-1. Annex — это программная платформа, предоставляющая инструментарий видеоаналитики (собственная разработка NtechLab). Данное приложение понадобится вам для работы с Тревожным монитором и Журналом тревог. Установка компонента findface-annex также требует установки timescaledb и rabbitmq. Подробнее о Annex.

alarm-app

Компонент устанавливает контейнер findface-multi-alarm-app-1. Это веб-интерфейс Тревожного монитора.

findface-multi-file-mover

Компонент устанавливает контейнер findface-multi-findface-multi-file-mover-1. Это внутренний сервис-перекладчик, который используется для реализации многоуровневого хранения данных. Сервис служит для переноса изображений из кратковременного хранилища в долговременное. Подробнее о работе сервиса в разделе Многоуровневое хранение данных.

healthcheck

Компонент устанавливает контейнер findface-multi-healthcheck-1. Это внутренний сервис, который проверяет работоспособность контейнера при запуске. Ожидает, что контейнеры будут в статусе «healthy» перед запуском пользовательского интерфейса.

findface-multi-alerts

Компонент устанавливает контейнеры findface-multi-findface-multi-alerts-1 и findface-multi-findface-multi-alerts-migrate-1. Это внутренний сервис, который отвечает за создание и функционирование тревожных оповещений. Подробнее о сервисе тревог.