Пошаговое развертывание¶
Данный раздел содержит сведения о пошаговом развертывании компонентов 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