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