Пошаговое развертывание из 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.fnkGPU
face: face/grapefruit_480.gpu.fnkвозраст
CPU
age: faceattr/age.v1.cpu.fnkGPU
age: faceattr/age.v1.gpu.fnkпол
CPU
gender: faceattr/gender.v2.cpu.fnkGPU
gender: faceattr/gender.v2.gpu.fnkэмоции
CPU
emotions: faceattr/emotions.v1.cpu.fnkGPU
emotions: faceattr/emotions.v1.gpu.fnkочки
CPU
glasses3: faceattr/glasses3.v0.cpu.fnkGPU
glasses3: faceattr/glasses3.v0.gpu.fnkборода
CPU
beard: faceattr/beard.v0.cpu.fnkGPU
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-serversudo 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-server33001..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