Пошаговое развертывание из apt-репозитория
Данный раздел содержит подробную информацию о пошаговом развертывании компонентов FindFace Enterprise Server. Выполните приведенные ниже инструкции, придерживаясь заданного порядка.
В этом разделе:
Установка apt-репозитория
Прежде всего установите apt-репозиторий FindFace следующим образом:
Загрузите файл инсталлятора
<findface-security-and-server-xxx>.run
.Поместите файл
.run
в любой каталог на сервере установки (например,/home/username
).Из данного каталога сделайте файл
.run
исполняемым.chmod +x <findface-security-and-server-xxx>.run
Запустите файл
.run
.sudo ./<findface-security-and-server-xxx>.run
Инсталлятор задаст вам несколько вопросов, после чего проверит, соответствует ли сервер системным требованиям. Вопросы следующие:
Устанавливаемый продукт:
FindFace Server
.Тип установки:
repo: Don't install anything, just set up the APT repository
.Устанавливаемые модели нейронных сетей (при необходимости). Для того чтобы выбрать модели, сначала снимите выделение, введя в командной строке
-*
, затем введите через пробел порядковые номера нужных моделей, например:1 3
. Введитеdone
для сохранения выбора и перехода к следующему шагу.Важно
Должна быть установлена как минимум одна модель для биометрии лица.
После этого apt-репозиторий FindFace будет автоматически установлен.
Установка необходимого стороннего ПО
Для работы FindFace Enterprise Server необходимо стороннее программное обеспечение etcd и memcached. Выполните следующие действия:
Установите пакеты с указанным сторонним ПО следующим образом:
sudo apt update sudo apt install -y etcd memcached
Откройте файл конфигурации
memcached
. Установите максимальный размер памяти в мегабайтах, используемый для хранения элементов:-m 512
. Установите максимальный размер элемента:-I 16m
. Если один или оба этих параметра отсутствуют, добавьте их в файл.sudo vi /etc/memcached.conf -m 512 -I 16m
Добавьте сервисы стороннего ПО в автозагрузку Ubuntu и запустите их:
sudo systemctl enable etcd.service memcached.service sudo systemctl start etcd.service memcached.service
Обеспечение лицензирования
Вы получаете файл лицензии от своего менеджера Ntech Lab. Для лицензирования в закрытой сети вам также будет предоставлен ключ аппаратной защиты.
Лицензирование FindFace Enterprise Server обеспечивается следующим образом:
Разверните
findface-ntls
, сервер лицензий в составе ядра FindFace.sudo apt update sudo apt install -y findface-ntls sudo systemctl enable findface-ntls.service && sudo systemctl start findface-ntls.service
Важно
Система на базе FindFace Enterprise Server может включать в себя только один экземпляр
findface-ntls
.Совет
В файле конфигурации
findface-ntls
вы можете изменить папку для хранения файла лицензии и настроить удаленный доступ к веб-интерфейсуfindface-ntls
, используемому для управления лицензией. Подробнее см. findface-ntls.Загрузите файл лицензии через веб-интерфейс
findface-ntls
одним из следующих способов:Откройте веб-интерфейс
findface-ntls
:http://<NTLS_IP_address>:3185/#/
. Загрузите файл лицензии.Совет
Впоследствии используйте веб-интерфейс
findface-ntls
, чтобы посмотреть информацию о лицензиях, обновить или продлить лицензию.Непосредственно положите файл лицензии в предназначенную для этого папку (по умолчанию,
/ntech/license
, может быть изменена в файле конфигурации/etc/findface-ntls.cfg
).
При лицензировании в закрытой системе вставьте USB-ключ аппаратной защиты в USB-порт.
Если лицензируемые компоненты установлены на удаленных серверах, впоследствии укажите IP-адрес сервера
findface-ntls
в их файлах конфигурации. Подробнее см. findface-extraction-api, findface-tarantool-server, Видеодетекция лиц: findface-video-manager и findface-video-worker.
Развертывание findface-extraction-api
Для развертывания компонента findface-extraction-api
выполните следующие действия:
Важно
Обязательно установите модели нейронных сетей на серверах с findface-extraction-api
.
Установите
findface-extraction-api
следующим образом:sudo apt install -y findface-extraction-api
Примечание
Для того чтобы установить компонент
findface-extraction-api
с GPU-ускорением, вместоfindface-extraction-api
в команде введитеfindface-extraction-api-gpu
.Откройте файл конфигурации
findface-extraction-api
.sudo vi /etc/findface-extraction-api.ini
Укажите IP-адрес сервера
findface-ntls
, еслиfindface-ntls
установлен на удаленном сервере. See Licensing Principles.license_ntls_server: 192.168.113.2:3133
При необходимости настройте другие параметры. Например, включите или выключите получение изображений из Интернета.
fetch: enabled: true size_limit: 10485760
Параметры
min_face_size
иmax_face_size
не являются фильтрами, а задают минимальный и максимальный размеры лиц, которые будут гарантированно обнаружены. Подбор данных значений нужно выполнять с осторожностью, поскольку они влияют на производительность.nnd: min_face_size: 30 max_face_size: .inf
Параметр
instances
означает количество используемых экземпляровfindface-extraction-api
. Укажите количество экземпляров из вашей лицензии. Значение по умолчанию (0) означает, что это число равно количеству ядер ЦП.Примечание
Данный параметр существенно влияет на потребление оперативной памяти.
instances: 2
Для оценки качества лица включите
quality_estimator
. В этом случаеfindface-extraction-api
будет возвращать показатель качества как значение параметра detection_score.Совет
Показатель качества можно анализировать. Прямые изображения лиц анфас считаются наиболее качественными. Для них возвращаются значения вблизи
0
, как правило, отрицательные (такие как-0.00067401276
, например). Перевернутые лица и лица, повернутые под большими углами, оцениваются отрицательными значениями от-5
и меньше.quality_estimator: true
В зависимости от нужд вашего бизнеса, вам также может потребоваться включить модели распознавания атрибутов лица, таких как пол, возраст, эмоции, очки и/или борода. Удостоверьтесь, что для каждой модели вы указали правильный тип ускорения CPU или GPU: он должен совпадать с типом ускорения
findface-extraction-api
. Обратите внимание, чтоfindface-extraction-api
на CPU может работать только с CPU-моделями, в то время какfindface-extraction-api
на GPU поддерживает как GPU-, так и CPU-модели.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
GPU
face: face/grapefruit_480.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: ""
Добавьте сервис
findface-extraction-api
в автозагрузку Ubuntu и запустите сервис.sudo systemctl enable findface-extraction-api.service && sudo systemctl start findface-extraction-api.service
Развертывание findface-tarantool-server
Компонент findface-tarantool-server
соединяет базу данных Tarantool и компонент findface-sf-api
, передавая результаты поиска от базы данных в findface-sf-api
для дальнейшей обработки. Для увеличения скорости поиска на каждом сервере с базой данных Tarantool могут быть созданы многочисленные сегменты (шарды) findface-tarantool-server
. Их параллельное функционирование приводит к значительному увеличению производительности. Каждый шард может обрабатывать приблизительно до 10 000 000 лиц. При развертывании системы на одиночном физическом сервере одного шарда, созданного по умолчанию, будет достаточно. При развертывании в кластерной среде количество шардов рассчитывается в зависимости от конфигурации оборудования и размера базы данных (см. подробности ниже).
Для развертывания компонента findface-tarantool-server
выполните следующие действия:
Установите
findface-tarantool-server
sudo apt update sudo apt install -y findface-tarantool-server
Удалите тестовый сервис Tarantool из автозагрузки Ubuntu и остановите его.
sudo systemctl disable tarantool@example && sudo systemctl stop tarantool@example
Откройте файл конфигурации:
sudo vi /etc/tarantool/instances.enabled/FindFace.lua
Отредактируйте максимальное использование оперативной памяти. Значение задается в байтах в зависимости от количества лиц, обрабатываемых шардом, исходя из соотношения примерно 1280 байт на 1 лицо. Например, значение 1.2*1024*1024*1024 соответствует 1 000 000 лиц:
memtx_memory = 1.2 * 1024 * 1024 * 1024,
Укажите IP-адрес сервера
findface-ntls
, еслиfindface-ntls
установлен на удаленном сервере:FindFace.start(“127.0.0.1”, 8001, {license_ntls_server=“192.168.113.2:3133”})
База данных Tarantool по умолчанию доступна только локально (
127.0.0.1
). Если необходимо открыть доступ к базе данных Tarantool с удаленного сервера, в разделеFindFace.start
укажите IP-адрес определенного сервера, либо измените127.0.0.1
на0.0.0.0
, чтобы разрешить доступ к базе данных Tarantool со всех IP-адресов.Совет
Для того чтобы настроить доступ только с определенного IP-адреса (
192.168.113.10
в примере), настройте следующим образом:FindFace.start("192.168.113.10", 8001, {license_ntls_server=“192.168.113.2:3133”})
Для доступа с любого IP-адреса вместо конкретного значения введите
0.0.0.0
:FindFace.start("0.0.0.0", 8001, {license_ntls_server=“192.168.113.2:3133”})
Создайте структуру базы данных для хранения результатов распознавания лиц в параметре
meta_scheme
. Структура создается в виде набора полей, для каждого из которых указываются следующие параметры:id: id поля;
name: название поля, должно совпадать с названием соответствующего параметра лица;
field_type: тип данных;
default: значение по умолчанию. Если значение по умолчанию больше ‘1e14 – 1’, то его следует записывать в виде строки, т. е.
“123123..”
вместо123123..
.
box.cfg{ listen = '127.0.0.1:33001', vinyl_dir = '/opt/ntech/var/lib/tarantool/name', work_dir = '/opt/ntech/var/lib/tarantool/name', memtx_dir = '/opt/ntech/var/lib/tarantool/name/snapshots', wal_dir = '/opt/ntech/var/lib/tarantool/name/xlogs', memtx_memory = 16 * 1024 * 1024 * 1024, checkpoint_interval = 3600*4, checkpoint_count = 3, -- force_recovery = true, } pcall(function() box.schema.user.grant('guest', 'execute,read,write', 'universe') end) FindFace = require("FindFace") FindFace.start( "0.0.0.0", 8001, { license_ntls_server="127.0.0.1:3133", facen_size=480, meta_scheme = { { id = 1, name = 'm:timestamp', field_type = 'unsigned', default = 0 }, { id = 2, name = 'feat', field_type = 'string', default = "" }, { id = 3, name = 'normalized_id', field_type = 'string', default = "" }, { id = 4, name = 'm:camera', field_type = 'string', default = "" }, { id = 5, name = 'm:photo', field_type = 'string', default = "" }, { id = 6, name = 'm:thumbnail', field_type = 'string', default = "" }, { id = 7, name = 'm:score', field_type = 'unsigned', default = "10000000000000000000" }, { id = 8, name = 'm:bbox', field_type = 'string', default = "" }, { id = 9, name = 'm:labels', field_type = 'set[string]', default = {} }, { id = 10, name = 'm:is_friend', field_type = 'unsigned', default = 0 }, } } )
(Опционально) При обслуживании одним шардом более 10,000,000 лиц поиск среди них может занимать продолжительное время. Для реализации крупных проектов рекомендуется создание дополнительных шардов
findface-tarantool-server
. Руководствуйтесь следующими правилами:Один шард может обрабатывать приблизительно 10 000 000 лиц.
Количество шардов на одном сервере не должно превышать число каналов памяти процессора, умноженное на 2. Помните об этом при разработке архитектуры системы в кластерной среде.
Для того чтобы создать дополнительные шарды, создайте аналогичное количество файлов конфигурации на основе файла по умолчанию
/etc/tarantool/instances.enabled/FindFace.lua
и внесите актуальные значения IP-адресов и портов. Для этого напишите bash-скрипт (shard.sh
, например), который автоматически создаст файлы конфигурации для всех шардов на определенном сервере. Используйте приведенный ниже скрипт как основу для своего кода. Примерный скрипт создает 4 шарда, использующие портыfindface-tarantool-server
33001..33004
и HTTP8001..8004
.#!/bin/sh set -e for I in `seq 1 4`; do TNT_PORT=$((33000+$I)) && HTTP_PORT=$((8000+$I)) && sed " s#/opt/ntech/var/lib/tarantool/default#/opt/ntech/var/lib/tarantool/shard_$I#g; s/listen = .*$/listen = '127.0.0.1:$TNT_PORT',/; s/\"127.0.0.1\", 8001,/\"0.0.0.0\", $HTTP_PORT,/; " /etc/tarantool/instances.enabled/FindFace.lua > /etc/tarantool/instances.enabled/FindFace_shard_$I.lua; mkdir -p /opt/ntech/var/lib/tarantool/shard_$I/snapshots mkdir -p /opt/ntech/var/lib/tarantool/shard_$I/xlogs mkdir -p /opt/ntech/var/lib/tarantool/shard_$I/index chown -R tarantool:tarantool /opt/ntech/var/lib/tarantool/shard_$I echo "Shard #$I inited" done;
Совет
Загрузите
пример скрипта
.Запустите скрипт из домашней директории.
sudo sh ~/shard.sh
Проверьте созданные файлы конфигурации.
ls /etc/tarantool/instances.enabled/ ##example.lua FindFace.lua FindFace_shard_1.lua FindFace_shard_2.lua FindFace_shard_3.lua FindFace_shard_4.lua
Добавьте шард
findface-tarantool-server
в автозагрузку Ubuntu и запустите его.sudo systemctl enable tarantool@FindFace.service && sudo systemctl start tarantool@FindFace.service
В случае нескольких шардов вы можете сделать это аналогично примеру запуска 4-х шардов:
for I in `seq 1 4`; do sudo systemctl enable tarantool@FindFace_shard_$I; done; for I in `seq 1 4`; do sudo systemctl start tarantool@FindFace_shard_$I; done;
Развертывание findface-upload
Для хранения всех исходных изображений, которые когда-либо отправлялись в систему для обработки, а также таких артефактов работы ядра FindFace, как миниатюры и нормализованные изображения лиц, разверните сервис findface-upload
.
Совет
Пропустите данный шаг, если вы не собираетесь хранить указанные данные. В этом случае на Сервере будут храниться только биометрические образцы в базе данных Tarantool.
Установите findface-upload
следующим образом:
sudo apt update sudo apt install -y findface-upload
По умолчанию исходные изображения, миниатюры и нормализованные изображения лиц хранятся в каталоге /var/lib/ffupload/uploads/
.
Развертывание findface-sf-api
Для развертывания компонента findface-sf-api
выполните следующие действия:
Установите
findface-sf-api
следующим образом:sudo apt update sudo apt install -y findface-sf-api
Откройте файл конфигурации
/etc/findface-sf-api.ini
.sudo vi /etc/findface-sf-api.ini
Если FindFace Enterprise Server развертывается в кластерной конфигурации, укажите IP-адреса и порты серверов с компонентами
findface-extraction-api
(параметрextraction-api
),findface-tarantool-server
(параметрstorage-api
, в форматеhttp://IP_address:port/v2/
),findface-upload
(параметрupload_url
).extraction-api: extraction-api: http://10.220.85.120:18666 storage-api: shards: - master: http://10.200.85.115:8003/v2/ - master: http://10.200.85.120:8004/v2/ - master: http://10.200.85.120:8005/v2/ - master: http://10.200.85.120:8006/v2/ slave: ‘’ upload_url: http://127.0.0.1:3333/uploads/
Добавьте сервис
findface-sf-api
в автозагрузку Ubuntu и запустите сервис.sudo systemctl enable findface-sf-api.service && sudo systemctl start findface-sf-api.service
Развертывание findface-facerouter
Для развертывания компонента findface-facerouter
выполните следующие действия:
Установите
findface-facerouter
следующим образом:sudo apt update sudo apt install -y findface-facerouter
Откройте файл конфигурации
/etc/findface-facerouter.py
.sudo vi /etc/findface-facerouter.py
Если компоненты
findface-facerouter
иfindface-sf-api
установлены на разных физических серверах, раскомментируйте параметрsfapi_url
и укажите в нем IP-адрес сервераfindface-sf-api
.sfapi_url = 'http://localhost:18411'
Добавьте сервис
findface-facerouter
в автозагрузку Ubuntu и запустите сервис.sudo systemctl enable findface-facerouter.service && sudo systemctl start findface-facerouter.service
Настройка видеодетекции лиц
Работа видеодетектора лиц обеспечивается взаимодействием компонентов findface-video-manager
и findface-video-worker
.
Для развертывания компонента findface-video-manager
выполните следующие действия:
Установите
findface-video-manager
:sudo apt install -y findface-video-manager
Откройте файл конфигурации
/etc/findface-video-manager.conf
.sudo vi /etc/findface-video-manager.conf
В параметре
router_url
укажите IP-адрес и порт компонентаfindface-facerouter
, на который компонентfindface-video_worker
будет отправлять обнаруженные лица.router_url: http://127.0.0.1:18820/v0/frame
В параметре
ntls -> url
укажите IP-адрес сервераfindface-ntls
, еслиfindface-ntls
установлен на удаленном сервере.ntls: url: http://127.0.0.1:3185/
При необходимости настройте параметры, общие для всех видеопотоков.
Совет
Данный шаг может быть пропущен: при создании job-заданий вы сможете отдельно задавать настройки для каждого обрабатываемого видеопотока (см. HTTP API для управления видеодетекцией лиц).
Добавьте сервис
findface-video-manager
в автозагрузку Ubuntu и запустите сервис.sudo systemctl enable findface-video-manager.service && sudo systemctl start findface-video-manager.service
Для развертывания компонента findface-video-worker
выполните следующие действия:
Установите
findface-video-worker
:sudo apt update sudo apt install -y findface-video-worker-cpu
Примечание
Для того чтобы установить компонент
findface-video-worker
с GPU-ускорением, вместоfindface-video-worker-cpu
в команде введитеfindface-video-worker-gpu
. Если на физическом сервере установлено несколько видеокарт, см. Использование нескольких видеокарт.Откройте файл конфигурации
findface-video-worker
.sudo vi /etc/findface-video-worker-cpu.ini sudo vi /etc/findface-video-worker-gpu.ini
В параметре
ntls-addr
укажите IP-адрес сервераfindface-ntls
, еслиfindface-ntls
установлен на удаленном сервере.ntls-addr=127.0.0.1:3133
В параметре
mgr-static
укажите IP-адрес сервера с установленным компонентомfindface-video-manager
, у которого компонентfindface-video-worker
будет запрашивать настройки и список видеопотоков.mgr-static=127.0.0.1:18811
В параметре
capacity
укажите максимальное количество видеопотоков, обрабатываемых компонентомfindface-video-worker
.capacity=10
Добавьте сервис
findface-video-worker
в автозагрузку Ubuntu и запустите сервис.sudo systemctl enable findface-video-worker-cpu.service && sudo systemctl start findface-video-worker-cpu.service