Пошаговое развертывание из apt-репозитория

Данный раздел содержит подробную информацию о пошаговом развертывании компонентов FindFace Security. Выполните приведенные ниже инструкции, придерживаясь заданного порядка.

В этом разделе:

Установка apt-репозитория

Прежде всего установите apt-репозиторий FindFace следующим образом:

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

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

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

    chmod +x findface-security-and-server-4.1.1.run
    
  4. Запустите файл .run.

    sudo ./findface-security-and-server-4.1.1.run
    

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

    1. Устанавливаемый продукт: FindFace Security.

    2. Тип установки: repo: Don't install anything, just set up the APT repository.

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

      Важно

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

    После этого apt-репозиторий FindFace будет автоматически установлен.

Установка необходимого стороннего ПО

Для работы FindFace Security необходимо стороннее программное обеспечение PostgreSQL, Redis, etcd и memcached. Выполните следующие действия:

  1. Установите пакеты с указанным сторонним ПО следующим образом:

    sudo apt update
    sudo apt install -y postgresql-9.5 redis-server etcd memcached
    
  2. Откройте файл конфигурации memcached. Установите максимальный размер памяти в мегабайтах, используемый для хранения элементов: -m 512. Установите максимальный размер элемента: -I 16m. Если один или оба этих параметра отсутствуют, добавьте их в файл.

    sudo vi /etc/memcached.conf
    
    -m 512
    -I 16m
    
  3. Добавьте сервисы стороннего ПО в автозагрузку Ubuntu и запустите их:

    sudo systemctl enable postgresql@9.5-main.service redis-server etcd.service memcached.service
    sudo systemctl start postgresql@9.5-main.service redis-server etcd.service memcached.service
    

Обеспечение лицензирования

Вы получаете файл лицензии вместе с установочными пакетами FindFace Security. Для лицензирования в закрытой сети вам также будет предоставлен ключ аппаратной защиты.

Лицензирование FindFace Security обеспечивается следующим образом:

  1. Разверните findface-ntls, сервер лицензий в составе ядра FindFace.

    Важно

    Система на базе FindFace Security может включать в себя только один экземпляр findface-ntls.

    Совет

    В файле конфигурации findface-ntls вы можете изменить папку для хранения файла лицензии и настроить удаленный доступ к веб-интерфейсу findface-ntls, используемому для управления лицензией. Подробнее см. findface-ntls.

    sudo apt update
    sudo apt install -y findface-ntls
    sudo systemctl enable findface-ntls.service && sudo systemctl start findface-ntls.service
    
  2. Загрузите файл лицензии через веб-интерфейс findface-ntls одним из следующих способов:

    • Откройте веб-интерфейс findface-ntls: http://<NTLS_IP_address>:3185/#/. Загрузите файл лицензии.

      Совет

      Впоследствии используйте основной веб-интерфейс FindFace Security, чтобы посмотреть информацию о лицензиях, обновить или продлить лицензию (Настройки -> Лицензия).

    • Непосредственно положите файл лицензии в предназначенную для этого папку (по умолчанию, /ntech/license, может быть изменена в файле конфигурации /etc/findface-ntls.cfg).

  3. При лицензировании в закрытой системе вставьте USB-ключ аппаратной защиты в USB-порт.

  4. Если лицензируемые компоненты установлены на удаленных серверах, впоследствии укажите IP-адрес сервера findface-ntls в их файлах конфигурации. Подробнее см. findface-extraction-api, findface-tarantool-server, Видеодетекция лиц: findface-video-manager и findface-video-worker.

Развертывание основной базы данных

Основная база данных FindFace Security построена на PostgreSQL. Для того чтобы развернуть основную базу данных, выполните следующие действия:

  1. В консоли PostgreSQL создайте пользователя ntech и базу данных ffsecurity.

    sudo -u postgres psql
    
    postgres=# CREATE ROLE ntech WITH LOGIN;
    
    postgres=# CREATE DATABASE ffsecurity WITH OWNER ntech ENCODING 'UTF-8' LC_COLLATE='en_US.UTF-8' LC_CTYPE='en_US.UTF-8' TEMPLATE template0;
    

    Совет

    Для выхода из консоли PostgreSQL введите \q и нажмите Enter.

  2. Разрешите авторизацию в PostgreSQL по UID клиента сокета. Перезапустите PostgreSQL.

    echo 'local all ntech peer' | sudo tee -a /etc/postgresql/9.5/main/pg_hba.conf
    
    sudo systemctl restart postgresql@9.5-main.service
    

Развертывание ядра FindFace

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

Совет

Вы можете найти описание компонентов ядра FindFace и их параметров конфигурации в разделах Архитектура и Подробно о компонентах.

  1. Установите компоненты ядра FindFace:

    sudo apt update
    sudo apt install -y findface-tarantool-server findface-extraction-api findface-sf-api findface-upload findface-video-manager findface-video-worker-cpu
    

    Примечание

    Для того чтобы установить компонент findface-extraction-api с GPU-ускорением, вместо findface-extraction-api в команде введите findface-extraction-api-gpu.

    Примечание

    Для того чтобы установить компонент findface-video-worker с GPU-ускорением, вместо findface-video-worker-cpu в команде введите findface-video-worker-gpu. Если на физическом сервере установлено несколько видеокарт, см. Использование нескольких видеокарт.

    Важно

    Обязательно установите модели нейронных сетей на серверах с findface-extraction-api.

  2. В файле конфигурации findface-extraction-api (на CPU или GPU) включите опцию quality_estimator для оценки качества лица при загрузке фотографии в досье.

    Примечание

    Минимальное качество лица на фотографии в досье задается параметром MINIMUM_DOSSIER_QUALITY в файле /etc/ffsecurity/config.py.

    sudo vi /etc/findface-extraction-api.ini
    
    quality_estimator: true
    
  3. В файле конфигурации findface-extraction-api включите модели распознавания атрибутов лица, таких как пол, возраст, эмоции, очки и/или борода, в зависимости от ваших нужд. Удостоверьтесь, что для каждой модели вы указали правильный тип ускорения CPU или GPU: он должен совпадать с типом ускорения findface-extraction-api. Обратите внимание, что findface-extraction-api на CPU может работать только с CPU-моделями, в то время как findface-extraction-api на GPU поддерживает как CPU-, так и GPU-модели. Подробнее см. Распознавание атрибутов лица.

    models:
      age: faceattr/age.v1.cpu.fnk
      emotions: faceattr/emotions.v1.cpu.fnk
      face: face/grapefruit_480.cpu.fnk
      gender: faceattr/gender.v2.cpu.fnk
      beard: faceattr/beard.v0.cpu.fnk
      glasses3: faceattr/glasses3.v0.cpu.fnk
    

    Доступны следующие модели:

    Атрибут лица Ускорение Параметр в файле конфигурации
    биометрия лица CPU face: face/grapefruit_480.cpu.fnk face: face/grapefruit_160.cpu.fnk
    GPU face: face/grapefruit_480.gpu.fnk face: face/grapefruit_160.gpu.fnk
    возраст CPU age: faceattr/age.v1.cpu.fnk
    GPU age: faceattr/age.v1.gpu.fnk
    пол CPU gender: faceattr/gender.v2.cpu.fnk
    GPU gender: faceattr/gender.v2.gpu.fnk
    эмоции CPU emotions: faceattr/emotions.v1.cpu.fnk
    GPU emotions: faceattr/emotions.v1.gpu.fnk
    очки CPU glasses3: faceattr/glasses3.v0.cpu.fnk
    GPU glasses3: faceattr/glasses3.v0.gpu.fnk
    борода CPU beard: faceattr/beard.v0.cpu.fnk
    GPU beard: faceattr/beard.v0.gpu.fnk

    Совет

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

    models:
      gender: ""
      age: ""
      emotions: ""
    
  4. Откройте файл конфигурации /etc/findface-video-worker-cpu.ini (/etc/findface-video-worker-gpu.ini). В параметре mgr-static укажите IP-адрес сервера findface-video-manager, который будет обеспечивать findface-video-worker настройками и списком видеопотоков для обработки. В параметре capacity укажите максимальное количество видеопотоков, которое может быть обработано findface-video-worker.

    sudo vi /etc/findface-video-worker-cpu.ini
    sudo vi /etc/findface-video-worker-gpu.ini
    
    mgr-static=127.0.0.1:18811
    
    capacity=10
    
  5. Добавьте сервисы ядра FindFace в автозагрузку Ubuntu и запустите их.

    sudo systemctl enable findface-extraction-api findface-sf-api findface-video-manager findface-video-worker-cpu
    sudo systemctl start findface-extraction-api findface-sf-api findface-video-manager findface-video-worker-cpu
    

Развертывание прикладного модуля FindFace Security и биометрической базы данных

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

  1. Установите компоненты findface-security и ffsecurity-ui.

    sudo apt update
    sudo apt install -y ffsecurity ffsecurity-ui
    
  2. Перенесите схему базы данных из FindFace Security в PostgreSQL, создайте группы пользователей с предустановленными правами и первого пользователя с правами администратора (т. н. Супер Администратора).

    Важно

    Супер Администратор не может лишиться прав администратора даже при смене роли.

    sudo findface-security migrate
    sudo findface-security create_groups
    sudo findface-security create_default_user
    
  3. Создайте структуру биометрической базы данных на основе Tarantool.

    sudo findface-security make_tnt_schema | sudo tee /etc/ffsecurity/tnt_schema.lua
    
  4. Импортируйте переменную meta_scheme из файла tnt_schema.lua. Откройте файл конфигурации /etc/tarantool/instances.enabled/FindFace.lua. Перед секцией FindFace.start добавьте строку dofile("/etc/ffsecurity/tnt_schema.lua"). В параметрах FindFace.start определите meta_scheme=meta_scheme.

    sudo vi /etc/tarantool/instances.enabled/FindFace.lua
    
    dofile("/etc/ffsecurity/tnt_schema.lua")
    
    FindFace.start("127.0.0.1", 8101, {
        license_ntls_server="127.0.0.1:3133",
        facen_size=480,
        meta_scheme = meta_scheme
     })
    
  5. Добавьте сервис findface-tarantool-server в автозагрузку Ubuntu и запустите его.

    sudo systemctl enable tarantool@FindFace.service && sudo systemctl start tarantool@FindFace.service
    
  6. Откройте файл конфигурации /etc/ffsecurity/config.py. Задайте следующие параметры:

    • SERVICE_EXTERNAL_ADDRESS: IP-адрес или URL FindFace Security, являющимся приоритетным для Genetec и вебхуков. Если параметр не задан, система использует для работы с данным функционалом EXTERNAL_ADDRESS. Для использования Genetec и вебхуков обязательно укажите по крайней мере один из параметров SERVICE_EXTERNAL_ADDRESS/ EXTERNAL_ADDRESS.
    • EXTERNAL_ADDRESS: (Опционально) IP-адрес или URL, который используется для доступа к веб-интерфейсу FindFace Security. Если параметр не задан, система автоматически определяет его как внешний IP-адрес. Для доступа в FindFace Security вы можете использовать оба IP-адреса: как автоопределенный, так и указанный в EXTERNAL_ADDRESS.
    • VIDEO_DETECTOR_TOKEN: придумайте токен и укажите его в данном параметре, чтобы авторизовать модуль видеодетекции лиц.
    • VIDEO_MANAGER_ADDRESS: IP-адрес сервера findface-video-manager.
    • NTLS_HTTP_URL: IP-адрес сервера findface-ntls.
    • ROUTER_URL: IP-адрес сервера findface-security, который будет получать обнаруженные на видео лица от экземпляров findface-video-worker. Адрес указывается внутренний или внешний, в зависимости от сети, в которой findface-video-worker взаимодействует с findface-security. Измените порт по умолчанию с учетом настроек переадресации с HTTP на HTTPS или вообще не указывайте его, оставив только IP-адрес.
    • SF_API_ADDRESS: IP-адрес сервера findface-sf-api.

    Совет

    Если необходимо обеспечить безопасность данных, включите SSL-шифрование.

    Совет

    При необходимости установите ’IGNORE_UNMATCHED’: True, чтобы отключить запись события в базу данных, если обнаруженное лицо отсутствует в списках наблюдения (верификация дала отрицательный результат). Данную настройку рекомендуется использовать при большом количестве посетителей. Пороговая степень схожести при верификации лиц определяется параметром CONFIDENCE_THRESHOLD.

    Совет

    Рекомендуется отредактировать значение параметра MINIMUM_DOSSIER_QUALITY. Данный параметр определяет минимальное качество лица на фотографии в досье. Если качество лица хуже минимального, пользователь не сможет загрузить такую фотографию в досье. Прямые изображения лиц анфас считаются наиболее качественными. Им соответствуют значения вблизи 0, как правило, отрицательные (такие как -0.00067401276, например). Перевернутые лица и лица, повернутые под большими углами, характеризуются отрицательным значениям от -5 и меньше. По умолчанию ’MINIMUM_DOSSIER_QUALITY’: -2, что соответствует среднему качеству.

    Важно

    Если вы включили модели распознавания в файле конфигурации findface-extraction-api, добавьте следующую строку в секцию FFSECURITY: ’EVENTS_FEATURES': ['gender', 'age', 'emotions', 'beard', 'glasses’], в зависимости от того, какие модели были включены. Данная строка должна быть расположена между строками SF_API_ADDRESS и LIVENESS_THRESHOLD, как показано в примере ниже. Подробнее см. Распознавание атрибутов лица.

    sudo vi /etc/ffsecurity/config.py
    
    MEDIA_ROOT = "/var/lib/ffsecurity/uploads"
    STATIC_ROOT = "/var/lib/ffsecurity/static"
    
    # SERVICE_EXTERNAL_ADDRESS prioritized for webhooks and genetec
    SERVICE_EXTERNAL_ADDRESS = 'http://localhost'
    EXTERNAL_ADDRESS = "http://172.20.77.58"
    
    DEBUG = False
    
    LANGUAGE_CODE = 'en-us'
    
    TIME_ZONE = 'UTC'
    
    DATABASES = {
       'default': {
           'ENGINE': 'django.db.backends.postgresql',
           'NAME': 'ffsecurity',
       }
    }
    
    # use pwgen -sncy 50 1|tr "'" "." to generate your own unique key
    SECRET_KEY = 'c8b533847bbf7142102de1349d33a1f6'
    
    FFSECURITY = {
       'VIDEO_DETECTOR_TOKEN': '381b0f4a20495227d04185ab02f5085f',
       'CONFIDENCE_THRESHOLD': 0.75,
       'MINIMUM_DOSSIER_QUALITY': -2,
       'IGNORE_UNMATCHED': False,
       'EXTRACTION_API': 'http://127.0.0.1:18666/',
       'VIDEO_MANAGER_ADDRESS': 'http://127.0.0.1:18810',
       'EVENTS_MAX_AGE': 30,
       'NTLS_HTTP_URL': 'http://127.0.0.1:3185',
       'ROUTER_URL': 'http://172.20.77.58',
       'MONITORING_UPDATE_INTERVAL': 60,
       'SF_API_ADDRESS': 'http://127.0.0.1:18411',
       'EVENTS_FEATURES': ['gender', 'age', 'emotions', 'beard', 'glasses'],
       'LIVENESS_THRESHOLD': 0.75,
       'BEARD_THRESHOLD': 0.7,
    }
    
    ASGI_THREADS = 16
    
    UVICORN_SETTINGS = {
        'workers': 'auto',
        'host': 'localhost',
        'port': 8002,
        'ws-workers': 'auto',
        'ws-host': 'localhost',
        'ws-port': 8003,
    }
    
    FFSECURITY_UI_CONFIG = {
       "event": {
           "features": {
               "f_gender_class": ["male", "female"],
               "age": {
                   "f_age_gte": "",
                   "f_age_lte": ""
               },
               "f_emotions_class": ["angry", "disgust", "fear", "happy", "sad", "surprise"],
               "f_glasses_class": ["none", "eye", "sun"],
               "f_beard_class": ["none", "beard"],
               "f_liveness_class": ["real", "fake"],
           }
       }
    }
    
    # integration plugins
    INSTALLED_APPS.append('ffsecurity_genetec')  # remove or comment out this line to disable genetec integration
    
  7. Используя команду pwgen -sncy 50 1|tr “’” “.”, сгенерируйте ключ подписи для шифрования сессии (используется в Django) и задайте его в параметре SECRET_KEY.

  8. Запустите сервисы.

    sudo systemctl enable findface-security
    sudo systemctl start findface-security
    
  9. Отключите сервер nginx, активный по умолчанию, и добавьте сервер findface-security в список включенных серверов. Перезапустите nginx.

    sudo rm /etc/nginx/sites-enabled/default
    
    sudo ln -s /etc/nginx/sites-available/ffsecurity-nginx.conf /etc/nginx/sites-enabled/
    
    sudo nginx -s reload