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

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

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

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

Совет

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

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

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

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

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

Подготовка 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
    

Установка локального сервера лицензий 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
    

    По умолчанию доступ в веб-интерфейс 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 и веб-интерфейса) выполняется следующим образом:

  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 сервера установки, по которому будет доступен веб-интерфейс. Придумайте токен для авторизации видеодетектора лиц в сервисе ffsecurity и укажите его в параметре VIDEO_DETECTOR_TOKEN (данный токен также нужно будет продублировать в настройках видеодетектора).

    Совет

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

    Совет

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

    Совет

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

    sudo vi /etc/ffsecurity/config.py
    
    MEDIA_ROOT="/var/lib/ffsecurity/uploads"
    STATIC_ROOT="/var/lib/ffsecurity/static"
    
    EXTERNAL_ADDRESS="192.168.104.204"
    
    DEBUG = False
    
    LANGUAGE_CODE = 'ru-ru'
    
    TIME_ZONE = 'UTC'
    
    DATABASES = {
       'default': {
           'ENGINE': 'django.db.backends.postgresql',
           'NAME': 'ffsecurity',
       }
    }
    
    FFSECURITY = {
       'VIDEO_DETECTOR_TOKEN': 'Ghj545dfd',
       'CONFIDENCE_THRESHOLD': 0.75,
       'MINIMUM_DOSSIER_QUALITY': -0.1,
       'IGNORE_UNMATCHED': False,
       'EXTRACTION_API': 'http://127.0.0.1:18666/',
    }
    

    Совет

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

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

    Важно

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

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

    Важно

    Компонент 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}
    

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

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

  1. Установите видеодетектор лиц.

    sudo apt install -y fkvideo-detector
    
  2. Откройте файл конфигурации видеодетектора и отредактируйте в нем следующие настройки:

    Примечание

    Обратите внимание, что в параметре api-token нужно указать значение VIDEO_DETECTOR_TOKEN из /etc/ffsecurity/config.py (см. Установка базовой конфигурации).

    sudo vi /etc/fkvideo.ini
    
    api-url=127.0.0.1:8002
    
    api-token=<'VIDEO_DETECTOR_TOKEN'>
    
    detector-name=detector1
    
    request-url=/video-detector/frame/
    
    camera-url=/video-detector/cameras/
    
    realtime=0
    

    Важно

    По умолчанию видеодетектор подбирает лучшее изображение лица в режиме реального времени (realtime=1). В этом режиме видеодетектор начинает отправлять в ffsecurity изображения лица сразу после его появления в поле зрения видеокамеры. Для более эффективного подбора лучшего изображения лица рекомендуется установить буферный режим (realtime=0). В буферном режиме видеодетектор использует меньший объем дискового пространства, поскольку для каждого лица отправляет в ffsecurity только одно изображение, но наивысшего качества.

  3. Добавьте сервис fkvideo_detector в автозагрузку Ubuntu и запустите его. Убедитесь, что сервис активен.

    sudo systemctl enable fkvideo_detector@fkvideo && sudo systemctl start fkvideo_detector@fkvideo
    
    sudo systemctl status fkvideo_detector@fkvideo
    
  4. Установите компонент extraction-api.

    sudo apt install -y findface-extraction-api
    
  5. В файле конфигурации extraction-api включите опцию quality_estimator для оценки качества лица.

    Примечание

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

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

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

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

    models:
      gender: ""
      age: ""
      emotions: ""
    
  7. Добавьте сервис extraction-api в автозагрузку Ubuntu и запустите его. Убедитесь, что сервис активен.

    sudo systemctl enable findface-extraction-api && sudo systemctl start findface-extraction-api
    
    sudo systemctl status findface-extraction-api