Миграция на другой детектор или модель¶
Совет
Не стесняйтесь обращаться к нашим специалистам по вопросам миграции по адресу info@ntechlab.com.
Иногда вам может потребоваться миграция экземпляра FindFace Enterprise Server SDK на другой детектор лиц или модель нейронной сети. Как правило, данная процедура необходима при обновлении до последней версии продукта.
Совет
Сводные сведения по моделям см. здесь.
При смене детектора лиц вам следует повторно сгенерировать нормализованные изображения и миниатюры лиц, а также векторы признаков.
Предупреждение
Различные детекторы лиц обладают разной чувствительностью к чертам лица. Имейте в виду, что новый детектор может пропустить ранее найденные лица.
В этом разделе:
Утилиты¶
Для миграции экземпляра FindFace Enterprise Server SDK вам потребуются следующие утилиты:
Утилита | Описание |
---|---|
findface-regenerate |
Скрипт, который повторно генерирует и перезаписывает данные лиц в MongoDB, применяя новые настройки детектора или модель нейронной сети к изображениям в папке Uploads . |
mongo2searchapi |
Скрипт, который копирует перегенерированные векторы признаков из MongoDB в Tarantool. |
Обе утилиты автоматически устанавливаются вместе с компонентом findface-facenapi.
Требования¶
Папка /var/lib/ffupload/uploads/
(Uploads
) должна быть заполнена как минимум исходными изображениями. Ее содержимое можно просмотреть в браузере по адресу http://<findface_upload_IP:3333/uploads/
.
В общем случае утилита findface-regenerate
работает с папкой Uploads
следующим образом:
Случай использования | Принцип работы |
---|---|
Смена настроек детектора | Утилита findface-regenerate прогоняет исходные изображения через компоненты facenapi и nnapi с новыми настройками детектора [и модели] и возвращает перегенерированные нормализованные изображения лиц, миниатюры лиц и векторы признаков. |
Смена модели | Утилита findface-regenerate прогоняет нормализованные изображения лиц через компонент nnapi с новыми настройками модели и возвращает перегенерированные векторы признаков. |
Повторная генерация артефактов¶
Важно
Перед проведением любых операций с базой данных MongoDB обязательно создайте резервную копию.
Примените утилиту findface-regenerate
следующим образом:
Перейдите в папку
/usr/bin/
. Отобразите и внимательно изучите справку по утилитеfindface-regenerate
:cd /usr/bin/ findface-regenerate --help
## findface-regenerate --help Usage: /usr/bin/findface-regenerate [OPTIONS] Options: --help show this help information /usr/lib/python3/dist-packages/facenapi/core/decoders/decoder_threaded.py options: --max-size Maximum allowed photo width/height (default 4000) /usr/lib/python3/dist-packages/facenapi/core/detectors/detector_dlib.py options: --dlib-adjust-threshold Adjust face detector threshold (default 0.0) --dlib-max-size images with width or height larger than dlib_max_size will be scaled down before being fed into detector (default 1200) --dlib-normalizer path to normalizer data (default /usr/share/findface-data/normalizer.dat) /usr/lib/python3/dist-packages/facenapi/core/detectors/detector_nnd.py options: --nnd-max-face-size Maximum face size in pixels (no limit if 0) (default 0) --nnd-min-face-size Minimum face size in pixels (default 30.0) --nnd-o-net-thresh (default 0.9) --nnd-p-net-thresh (default 0.5) --nnd-r-net-thresh (default 0.5) --nnd-scale-factor (default 0.79) --nnd-workers Number of detector workers threads. (0 - as much as there are cpus) (default 0) /usr/lib/python3/dist-packages/facenapi/core/main_utils.py options: --decoder Image decoder (threaded) (default threaded) --detector Face detector (dlib,nnd) (default nnd) --extractor Feature extractor (nnapi,extraction-api) (default nnapi) --facen-storage Feature vector storage (searchapi_replicated,tntapi,searchapi) (default tntapi) --id-generator Face id generator (tntime,mongo) (default tntime) /usr/lib/python3/dist-packages/facenapi/server/context.py options: --fetch-proxy Fetch images from urls via proxy, ex: http://1.2.3.4:3128 --ffupload-url url (without path) to PUT images uploaded to /face, ex: http://127.0.0.1:1234 --friend-count (default 5) --friend-interval (default 604800) --gae enable Gender, Age and Emotions support (default False) --mongo-host mongo database host (default localhost) --mongo-port mongo database port (default 27017) --person-identify identify persons (default False) --person-identify-global identify persons across all cameras (default False) --person-identify-threshold threshold for persons identify (default 0.75) --upload-path path of $ffupload_url (default uploads) /usr/lib/python3/dist-packages/facenapi/server/regenerate_facens.py options: --config path to config file --coroutines Number of parallel coroutines (default 30) --every-other (default 1) --every-other-offset (default 0) --facen-size Facen size in number of floats. (facens of this sizes are not regenerated when smart regeneration is enabled) (default -1) --max-id Maximum id (inclusive) --min-id Minimum id (inclusive) --regenerate What to regenerate: facens, thumbs, normalized (comma-separated). (default facens) /usr/lib/python3/dist-packages/tornado/log.py options: --log-file-max-size max size of log files before rollover (default 100000000) --log-file-num-backups number of log files to keep (default 10) --log-file-prefix=PATH Path prefix for log files. Note that if you are running multiple tornado processes, log_file_prefix must be different for each of them (e.g. include the port number) --log-rotate-interval The interval value of timed rotating (default 1) --log-rotate-mode The mode of rotating files(time or size) (default size) --log-rotate-when specify the type of TimedRotatingFileHandler interval other options:('S', 'M', 'H', 'D', 'W0'-'W6') (default midnight) --log-to-stderr Send log output to stderr (colorized if possible). By default use stderr if --log_file_prefix is not set and no other logging is configured. --logging=debug|info|warning|error|none Set the Python log level. If 'none', tornado won't touch the logging configuration. (default info)
Для смены настроек детектора раскомментируйте и отредактируйте относящиеся к детектору параметры в файле конфигурации
findface-facenapi
.sudo vi /etc/findface-facenapi.ini detector = 'nnd' ...
Для смены биометрической модели лица, отредактируйте параметр
model_facen
в файле конфигурацииfindface-nnapi
:sudo vi /etc/findface-nnapi.ini model_facen = apricot_320
Настройте
findface-regenerate
, используя аргументы командной строки, как описано в справке по утилите. Например, для того чтобы сменить детектор лиц, выполните из папки/usr/bin
следующую команду:sudo findface-regenerate --regenerate=normalized,thumbs,facens --config=/etc/findface-facenapi.ini
Для смены модели выполните команду:
sudo findface-regenerate --regenerate=facens --config=/etc/findface-facenapi.ini
Копирование векторов признаков из MongoDB в Tarantool¶
Примените утилиту mongo2searchapi
следующим образом:
Создайте резервную копию БД Tarantool.
Остановите Tarantool.
sudo systemctl stop tarantool@FindFace*
Удалите файлы снапшотов
.snap
, логов.xlog
и быстрого индеса.idx
для всех шардовtntapi
.Совет
По умолчанию, данные файлы хранятся в следующих папках:
- Одиночная инсталляция:
/opt/ntech/var/lib/tarantool/default/snapshots
/opt/ntech/var/lib/tarantool/default/xlogs
/opt/ntech/var/lib/tarantool/default/index
- Кластерная инсталляция:
/opt/ntech/var/lib/tarantool/shard_N/snapshots
/opt/ntech/var/lib/tarantool/shard_N/xlogs
/opt/ntech/var/lib/tarantool/shard_N/index
- Одиночная инсталляция:
Если векторы признаков в прежней и новой модели различаются по размеру, отредактируйте размер вектора признаков в разделе
FindFace.start
файла конфигурации Tarantool/etc/tarantool/instances.enabled/FindFace_shard_N.lua
. Повторите для каждого шарда.sudo vi /etc/tarantool/instances.enabled/FindFace_shard_N.lua FindFace.start("127.0.0.1", 8001, {license_ntls_server="127.0.0.1:3133", facen_size = 320})
Запустите
mongo2searchapi
на сервере сfindface-facenapi
:sudo python3 -m facenapi.server.tools.mongo2searchapi --config=/etc/findface-facenapi.ini
Запустите Tarantool.
sudo systemctl start tarantool@FindFace*