Пошаговое развертывание¶
Данный раздел содержит сведения о пошаговом развертывании компонентов FindFace Security. Выполните приведенные ниже инструкции, придерживаясь заданного порядка.
Предупреждение
Перед развертыванием FindFace Security убедитесь, что корректно выставлены системное время и часовой пояс, а также включена синхронизация времени через ntpd
/systemd-timesyncd
. При эксплуатации FindFace Security не допускайте резких скачков времени, чтобы исключить проблемы с работоспособностью сервисов после перезагрузки.
Совет
Предварительно ознакомьтесь с разделами Системные требования и Архитектура.
В этом разделе:
Подготовка deb-пакетов к установке¶
Для того чтобы подготовить deb-пакеты FindFace Security к установке, выполните следующие действия:
Распакуйте пакет с компонентами.
sudo dpkg -i <findface-security-repo>.deb
Добавьте ключ подписи.
sudo apt-key add /var/findface-security-repo/public.key sudo apt-get update
Распакуйте пакеты с моделями нейронных сетей.
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, выполните следующие действия:
Установите компонент 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
Добавьте сервис NTLS в автозагрузку и запустите сервис:
sudo systemctl enable ntls && sudo systemctl start ntls
Загрузите файл лицензии в веб-интерфейсе NTLS по адресу
http://<IP-адрес NTLS>:3185/#/
.В случае лицензирования в закрытой сети вставьте ключ Guardant в USB-порт.
Установка базовой конфигурации¶
Установка базовой конфигурации (базы данных c необходимыми расширениями, компонента ffsecurity
и ffsecurity-ui
) выполняется следующим образом:
Установите расширение
findface-postgres-9.5-facen
к PostgreSQL из пакета <ffsecurity-repo>.deb:sudo apt install -y findface-postgres-9.5-facen
В консоли 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.Разрешите авторизацию в 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
Установите компонент
ffsecurity
из пакета <ffsecurity-repo>.deb.Примечание
Вместе с
ffsecurity
будет установлен nginx.sudo apt install -y ffsecurity
Установите веб-интерфейс
ffsecurity-ui
из пакета <ffsecurity-repo>.deb.sudo apt install -y ffsecurity-ui
Откройте файл конфигурации
/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
.Используя команду
pwgen -sncy 50 1|tr "'" "."
, сгенерируйте ключ подписи для шифрования сессии (используется Django) и задайте его в параметреSECRET_KEY
.Отключите сервер 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
Перенесите схему базы данных из FindFace Security в PostgreSQL, создайте группы пользователей с предустановленными правами и первого пользователя с правами администратора (т. н. Супер Администратора).
Важно
Отличие назначаемого администратора от Супер Администратора в том, что последний не может лишиться прав администратора даже при смене роли.
sudo findface-security migrate sudo findface-security create_groups sudo findface-security createsuperuser --username admin --email root@localhost
Запустите сервисы.
Важно
Компонент
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
) выполняется следующим образом:
Добавьте сервис ETCD в автозагрузку Ubuntu и запустите его.
sudo systemctl enable etcd.service && sudo systemctl start etcd.service
Установите компоненты
videomanager-api
,video-worker
иextraction-api
.sudo apt install -y findface-videomanager-api fkvideo-worker findface-extraction-api
Откройте для редактирования файл конфигурации
/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
В параметре
ntls -> url
укажите IP-адрес сервера лицензирования NTLS, если NTLS установлен на удаленном физическом сервере.ntls: url: http://127.0.0.1:3185/
Откройте для редактирования файл конфигурации
/etc/video-worker.ini
.sudo vi /etc/video-worker.ini
В параметре
ntls-addr
укажите IP-адрес сервера лицензирования NTLS, если NTLS установлен на удаленном физическом сервере.ntls-addr=127.0.0.1:3133
В параметре
mgr-static
укажите IP-адрес сервера с установленным компонентомvideomanager-api
, у которого компонентvideo-worker
будет запрашивать настройки и список видеопотоков.mgr-static=127.0.0.1:18811
В параметре
capacity
укажите максимальное количество видеопотоков, обрабатываемых компонентомvideo-worker
.capacity=10
В файле конфигурации
extraction-api
включите опциюquality_estimator
для оценки качества лица.Примечание
Минимальное качество лица на фотографии в досье задается параметром
MINIMUM_DOSSIER_QUALITY
в файле конфигурации/etc/ffsecurity/config.py
.sudo vi /etc/findface-extraction-api.ini quality_estimator: true
В файле конфигурации
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
Добавьте сервисы
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