Пошаговое развертывание

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

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

Перед развертыванием FindFace Security убедитесь, что корректно выставлены системное время и часовой пояс, а также включена синхронизация времени через ntpd/systemd-timesyncd. При эксплуатации FindFace Security не допускайте резких скачков времени, чтобы исключить проблемы с работоспособностью сервисов после перезагрузки.

Совет

Предварительно ознакомьтесь с разделами Системные требования и Архитектура.

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

Подготовка deb-пакетов к установке

Для того чтобы подготовить deb-пакеты FindFace Security к установке, выполните следующие действия:

  1. Распакуйте пакет с компонентами.

    sudo dpkg -i <findface-security-repo>.deb
    
  2. Добавьте ключ подписи.

    sudo apt-key add /var/findface-security-repo/public.key
    sudo apt-get update
    
  3. Распакуйте пакеты с моделями нейронных сетей.

    sudo dpkg -i findface-data*.deb
    

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

Для работы базовой конфигурации FindFace Security необходима система управления базами данных PostgreSQL и сетевое хранилище Redis. Установите их из репозитория Ubuntu:

sudo apt-get update
sudo apt install -y postgresql-server-dev-9.5 redis-server

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

sudo apt install -y etcd

Установка сервера лицензий NTLS

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

Для того чтобы установить и настроить сервер лицензий NTLS, выполните следующие действия:

  1. Установите компонент NTLS:

    sudo apt-get update
    sudo apt-get install ntls
    

    Совет

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

    sudo vi /etc/ntls.cfg
    

    При необходимости укажите в параметре license-dir другую папку для хранения файла лицензии. По умолчанию файл лицензии хранится в папке /ntech/license:

    license-dir = /ntech/license
    

    При необходимости раскомментируйте строку proxy и укажите IP-адрес прокси-сервера:

    proxy = http://192.168.1.1:12345
    

    По умолчанию доступ в веб-интерфейс NTLS возможен с любого удаленного сервера в пределах сети (ui = 0.0.0.0:3185). Для того чтобы обеспечить доступ к веб-интерфейсу NTLS только с определенного IP-адреса, отредактируйте параметр ui:

    ui = 127.0.0.1:3185
    
  2. Добавьте сервис NTLS в автозагрузку и запустите сервис:

    sudo systemctl enable ntls && sudo systemctl start ntls
    
  3. Загрузите файл лицензии в веб-интерфейсе NTLS по адресу http://<IP-адрес NTLS>:3185/#/.

  4. В случае лицензирования в закрытой сети вставьте ключ Guardant в USB-порт.

Установка базовой конфигурации

Установка базовой конфигурации (базы данных c необходимыми расширениями, компонента ffsecurity и ffsecurity-ui) выполняется следующим образом:

  1. Установите расширение findface-postgres-9.5-facen к PostgreSQL из пакета <ffsecurity-repo>.deb:

    sudo apt install -y findface-postgres-9.5-facen
    
  2. В консоли PostgreSQL создайте пользователя ntech и базу данных ffsecurity. Загрузите в базу данных расширение findface-postgres-9.5-facen с помощью метки facen-compare-bytea.

    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;
    
    postgres=# \c ffsecurity;
    
    ffsecurity=# CREATE EXTENSION "facen-compare-bytea";
    

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

  3. Разрешите авторизацию в 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
    
  4. Установите компонент ffsecurity из пакета <ffsecurity-repo>.deb.

    Примечание

    Вместе с ffsecurity будет установлен nginx.

    sudo apt install -y ffsecurity
    
  5. Установите веб-интерфейс ffsecurity-ui из пакета <ffsecurity-repo>.deb.

    sudo apt install -y ffsecurity-ui
    
  6. Откройте файл конфигурации /etc/ffsecurity/config.py. В параметре EXTERNAL_ADDRESS укажите актуальный внешний IP-адрес или URL сервера установки, по которому будет доступен веб-интерфейс. Если компоненты videomanager-api и/или extraction-api будут установлены на удаленных серверах, укажите IP-адреса серверов в параметрах VIDEO_MANAGER_ADDRESS и/или EXTRACTION_API (установка компонентов описана в разделе см. Установка модуля биометрической видео-идентификации). Придумайте и укажите в параметре VIDEO_DETECTOR_TOKEN токен для авторизации распознавания лиц на видео. Данный токен будет передаваться в задачи videomanager-api.

    Совет

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

    Совет

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

    Совет

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

    sudo vi /etc/ffsecurity/config.py
    
    MEDIA_ROOT="/var/lib/ffsecurity/uploads"
    STATIC_ROOT="/var/lib/ffsecurity/static"
    
    EXTERNAL_ADDRESS="http://172.20.77.26:8000"
    
    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 = 'changeme'
    
    FFSECURITY = {
        'VIDEO_DETECTOR_TOKEN': 'GOOD_TOKEN',
        'CONFIDENCE_THRESHOLD': 0.75,
        'MINIMUM_DOSSIER_QUALITY': -0.1,
        'IGNORE_UNMATCHED': False,
        'VIDEO_MANAGER_ADDRESS':'http://127.0.0.1:18810',
        'EXTRACTION_API': 'http://127.0.0.1:18666/',
    }
    
    FFSECURITY_UI_CONFIG = {
        'plugins': {
            'genetec': True,
        },
    }
    

    Совет

    При необходимости также отредактируйте файл конфигурации /etc/nginx/sites-available/ffsecurity-nginx.conf.

  7. Используя команду pwgen -sncy 50 1|tr "'" ".", сгенерируйте ключ подписи для шифрования сессии (используется Django) и задайте его в параметре SECRET_KEY.

  8. Отключите сервер nginx, используемый по умолчанию, и добавьте в список включенных серверов сервер ffsecurity. Перезапустите 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
    
  9. Перенесите схему базы данных из FindFace Security в PostgreSQL, создайте группы пользователей с предустановленными правами и первого пользователя с правами администратора (т. н. Супер Администратора).

    Важно

    Отличие назначаемого администратора от Супер Администратора в том, что последний не может лишиться прав администратора даже при смене роли.

    sudo findface-security migrate
    
    sudo findface-security create_groups
    
    sudo findface-security createsuperuser --username admin --email root@localhost
    
  10. Запустите сервисы.

    Важно

    Компонент ffsecurity включает в себя сервисы findface-security-proto (отвечает за HTTP и web-сокет) и findface-security-worker (обеспечивает взаимодействие остальных компонентов системы). Количество экземпляров findface-security-worker рассчитывается по формуле N=(количество ядер CPU-1). Количество экземпляров задается после знака @, например, findface-security-worker@{1,2,3} для активации 3-х экземпляров.

    sudo systemctl enable redis-server findface-security-proto findface-security-worker@{1,2,3,4}
    
    sudo systemctl start redis-server findface-security-proto findface-security-worker@{1,2,3,4}
    

Установка модуля биометрической видео-идентификации

Установка модуля биометрической видео-идентификации (компонентов videomanager-api, video-worker и extraction-api) выполняется следующим образом:

  1. Добавьте сервис ETCD в автозагрузку Ubuntu и запустите его.

    sudo systemctl enable etcd.service && sudo systemctl start etcd.service
    
  2. Установите компоненты videomanager-api, video-worker и extraction-api.

    sudo apt install -y findface-videomanager-api fkvideo-worker findface-extraction-api
    
  3. Откройте для редактирования файл конфигурации /etc/findface-videomanager-api.conf. В параметре router_url замените строку перед v0/frame, указав IP-адрес и порт компонента ffsecurity (задаются в параметре EXTERNAL_ADDRESS файла /etc/ffsecurity/config.py). Компонент video-worker будет отправлять обнаруженные лица по указанному адресу.

    sudo vi /etc/findface-videomanager-api.conf
    
    router_url: http://127.0.0.1:8000/v0/frame
    
  4. В параметре ntls -> url укажите IP-адрес сервера лицензирования NTLS, если NTLS установлен на удаленном физическом сервере.

    ntls:
        url: http://127.0.0.1:3185/
    
  5. Откройте для редактирования файл конфигурации /etc/video-worker.ini.

    sudo vi /etc/video-worker.ini
    
  6. В параметре ntls-addr укажите IP-адрес сервера лицензирования NTLS, если NTLS установлен на удаленном физическом сервере.

    ntls-addr=127.0.0.1:3133
    
  7. В параметре mgr-static укажите IP-адрес сервера с установленным компонентом videomanager-api, у которого компонент video-worker будет запрашивать настройки и список видеопотоков.

    mgr-static=127.0.0.1:18811
    
  8. В параметре capacity укажите максимальное количество видеопотоков, обрабатываемых компонентом video-worker.

    capacity=10
    
  9. В файле конфигурации extraction-api включите опцию quality_estimator для оценки качества лица.

    Примечание

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

    sudo vi /etc/findface-extraction-api.ini
    
    quality_estimator: true
    
  10. В файле конфигурации extraction-api выключите поиск моделей для распознавания пола, возраста, эмоций и страны, передав пустые значения в параметры gender, age, emotions и countries47:

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

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

    models:
      gender: ''
      age: ''
      emotions: ''
      countries47: ''
    

    В результате файл конфигурации extraction-api должен выглядеть примерно следующим образом:

    listen: :18666
    dlib:
      model: /usr/share/findface-data/normalizer.dat
      options:
        adjust_threshold: 0
        upsample_times: 1
    nnd:
      model: /usr/share/nnd/nnd.dat
      quality_estimator: false
      quality_estimator_model: /usr/share/nnd/quality_estimator_v2.dat
      options:
        min_face_size: 30
        max_face_size: .inf
        scale_factor: 0.79
        p_net_thresh: 0.5
        r_net_thresh: 0.5
        o_net_thresh: 0.9
        p_net_max_results: 0
    models:
      root: /usr/share/findface-data/models
      facen: elderberry_576
      gender: ''
      age: ''
      emotions: ''
      countries47: ''
      model_instances: 1
    license_ntls_server: 127.0.0.1:3133
    fetch:
      enabled: true
      size_limit: 10485760
    max_dimension: 6000
    allow_cors: false
    ticker_interval: 5000
    
  11. Добавьте сервисы videomanager-api, video-worker, extraction-api в автозагрузку Ubuntu и запустите их.

    sudo systemctl enable findface-videomanager-api.service && sudo systemctl start findface-videomanager-api.service
    
    sudo systemctl enable video-worker.service && sudo systemctl start video-worker.service
    
    sudo systemctl enable findface-extraction-api.service && sudo systemctl start findface-extraction-api.service