Пошаговое развертывание из 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