Обновление до FindFace Multi 1.2

Совет

Если вы используете наш продукт FindFace Security, развернутый в Ubuntu 18.04, сначала обновите его до FindFace Multi 1.0, а затем до FindFace Multi 1.2.

Для обновления FindFace Multi с ранних версий до версии 1.2 выполните следующие действия:

  1. Откройте файл конфигурации /etc/findface-security/config.py (/etc/ffsecurity/config.py). Сохраните для последующего использования значения следующих параметров: EXTERNAL_ADDRESS, SECRET_KEY, VIDEO_DETECTOR_TOKEN, ROUTER_URL.

    sudo vi /etc/findface-security/config.py
    
    EXTERNAL_ADDRESS = "http://172.20.77.58"
    
    ...
    # use pwgen -sncy 50 1|tr "'" "." to generate your own unique key
    SECRET_KEY = 'c8b533847bbf7142102de1349d33a1f6'
    
    FFSECURITY = {
       'VIDEO_DETECTOR_TOKEN': '381b0f4a20495227d04185ab02f5085f',
       ...
       'ROUTER_URL': 'http://172.20.77.58',
       ...
    }
    
  2. В FindFace Multi 1.2 мы значительно усовершенствовали внутреннюю структуру сущности report (отчет). Однако у модернизированной сущности отсутствует обратная совместимость с более ранними версиями продукта. Перед обновлением обязательно загрузите все нужные вам отчеты с вкладки Отчеты. Позже, в обновленной системе, вы сможете использовать их в качестве образцов для воссоздания ранее существовавших отчетов.

  3. Остановите сервис findface-security.

    sudo systemctl stop findface-security*.service
    
  4. Создайте резервную копию базы данных векторов признаков на основе Tarantool в любой выбранной директории, например, /etc/findface_dump.

    sudo mkdir -p /etc/findface_dump
    cd /etc/findface_dump
    sudo findface-storage-api-dump -config /etc/findface-sf-api.ini
    
  5. Установите apt-репозиторий с версией FindFace Multi, используя консольный инсталлятор согласно инструкции в этом разделе.

    Совет

    На этапе установки моделей нейронных сетей (APT repository doesn’t include recognition models. Do you want to install them now?) используйте один из следующих вариантов:

    • Выберите No

    • Выберите Yes и оставьте выбранными все модели нейронных сетей. Введите Done

    Чтобы решить, какой вариант подходит вам лучше всего, ознакомьтесь с комментариями к шагу № 9.

  6. Установите NATS, добавьте этот сервис в автозагрузку и запустите.

    Важно

    Пропустите этот шаг при обновлении с FindFace Multi 1.1.

    sudo apt install -y nats-server
    sudo systemctl enable nats-server
    sudo systemctl restart nats-server
    
  7. Установите из репозитория сервисы FindFace Multi в соответствии со своей архитектурной схемой.

    CPU-версия:

    sudo apt update
    sudo apt install findface-security findface-security-ui findface-extraction-api findface-ntls findface-sf-api findface-tarantool-server findface-upload findface-video-manager findface-video-worker-cpu findface-counter findface-liveness-api
    

    GPU-версия:

    sudo apt update
    sudo apt install findface-security findface-security-ui findface-extraction-api-gpu findface-ntls findface-sf-api findface-tarantool-server findface-upload findface-video-manager findface-video-worker-gpu findface-counter findface-liveness-api
    

    Важно

    Для работы FindFace Multi на GPU требуется предварительная установка драйверов NVIDIA.

    Важно

    В какой-то момент вам будет предложено выбрать, какую версию конфигурационного файла findface-security использовать. Выберите вариант Install the packages maintainer’s version (использовать версию из пакета). Сделайте то же самое, если аналогичное сообщение появилось для другого компонента (findface-extraction-api, findface-video-worker и т. д.). Во всех случаях имеет смысл предпочесть более новую версию файла конфигурации.

  8. Откройте файл конфигурации /etc/findface-security/config.py и вставьте в него сохраненные значения параметров EXTERNAL_ADDRESS, SECRET_KEY, VIDEO_DETECTOR_TOKEN и ROUTER_URL. Заполните раздел DATABASES по аналогии: ’PORT’: 5439, ‘USER’: ‘ntech’, ‘PASSWORD’: ‘9T3g1nXy9yx3y8MIGm9fbef3dia8UTc’ (пароль из /etc/pgbouncer/userlist.txt).

    sudo vi /etc/findface-security/config.py
    ...
    # Database is used by FindFace Security to store cameras,
    # camera groups, watchlists and so on. Only PostgreSQL is supported.
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.postgresql',
            'DISABLE_SERVER_SIDE_CURSORS': True,
            'NAME': 'ffsecurity',
            'PORT': 5439, 'USER': 'ntech', 'PASSWORD': '9T3g1nXy9yx3y8MIGm9fbef3dia8UTc3',
        }
    }
    ...
    # Use pwgen -sncy 50 1|tr "'" "." to generate your own unique key
    SECRET_KEY = '002231ccb690586f4d33e98322c591bb'
    ...
    SERVICE_EXTERNAL_ADDRESS = 'http://172.20.77.58'
    # EXTERNAL_ADDRESS is used to access objects created inside FFSecurity via external links.
    EXTERNAL_ADDRESS = 'http://172.20.77.58'
    ...
        # findface-video-worker authorization token
        'VIDEO_DETECTOR_TOKEN': '8977e1b0067d43f6c908d0bf60363255',
    ...
        # findface-video-worker face posting address,
        # it must be set to either FFSecurity EXTERNAL_ADDRESS (by default)
        # or findface-facerouter url (in some specific cases)
        'ROUTER_URL': 'http://127.0.0.1:80',
    
  9. Откройте старую версию файла конфигурации findface-ntls, доступную по адресу /etc/findface-ntls.cfg.dpkg-old, и сравните ее с новой версией /etc/findface-ntls.cfg. Перенесите все пользовательские параметры из старой версии в новую. Сделайте то же самое для других компонентов, например, для findface-extract-api проверьте /etc/findface-extract-api.ini.ucf-old на соответствие /etc/findface-extract-api.ini и т. д.

    sudo vi /etc/findface-ntls.cfg.dpkg-old
    sudo vi /etc/findface-ntls.cfg
    sudo vi /etc/findface-extraction-api.ini.ucf-old
    sudo vi /etc/findface-extraction-api.ini
    
    ...
    

    Важно

    Имейте в виду, что новая версия файла конфигурации findface-extraction-api по умолчанию содержит модель liveness.colombo, которая отсутствовала в прежних версиях продукта. Это может потенциально привести к сбою системы. Существуют следующие способы предотвратить сбой:

    • Восстановите для параметра face_liveness предыдущее значение: liveness.alleyn.v2.cpu.fnk/liveness.alleyn.v2.gpu.fnk

    • Установите модель liveness.colombo.cpu.fnk/liveness.colombo.gpu.fnk на шаге №5

  10. Откройте новую версию файла конфигурации /etc/findface-video-worker-cpu.ini (/etc/findface-video-worker-gpu.ini). В разделе streamer установите tracks = true и tracks_last = true, чтобы рамки с объектами на видеостене гарантированно отображались правильно.

    sudo vi /etc/findface-video-worker-cpu.ini
    sudo vi /etc/findface-video-worker-gpu.ini
    
    [streamer]
    #------------------------------
    ...
    
    ## use tracks instead detects for streamer
    ## type:bool env:CFG_STREAMER_TRACKS longopt:--streamer-tracks
    tracks = true
    
    ## use tracks with lastFrameId=currentFrameId (.tracks must be true)
    ## type:bool env:CFG_STREAMER_TRACKS_LAST longopt:--streamer-tracks-last
    tracks_last = true
    
  11. Перезагрузите сервисы.

    sudo systemctl restart findface-ntls findface-extraction-api findface-video-worker* findface-video-manager findface-sf-api findface-counter findface-liveness-api
    
  12. Измените структуру базы данных Tarantool с помощью файла tnt_schema.lua из FindFace Multi.

    sudo findface-security make_tnt_schema | sudo tee /etc/findface-security/tnt_schema.lua
    
  13. Остановите шарды findface-tarantool-server. Удалите данные из каталогов, соответствующих активным шардам.

    sudo systemctl stop 'tarantool@*'
    
    sudo rm /opt/ntech/var/lib/tarantool/shard-*/{index,snapshots,xlogs}/*
    
  14. Перейдите в директорию с файлами конфигурации Tarantool /etc/tarantool/instances.available/. Проверьте, содержит ли каждый файл конфигурации shard-*.lua команду dofile и определения meta_indexes и meta_scheme, как показано в примере ниже.

    sudo vi /etc/tarantool/instances.available/shard-*.lua
    
    ...
    dofile("/etc/findface-security/tnt_schema.lua")
    ...
    FindFace.start("127.0.0.1", 8101, {
        license_ntls_server="127.0.0.1:3133",
        meta_indexes=meta_indexes,
        meta_scheme = meta_scheme
    })
    
  15. Перезапустите шарды findface-tarantool-server.

    TNT=$(ls /etc/tarantool/instances.enabled/ | cut -c 7,8,9)
    for i in $TNT; do sudo systemctl restart tarantool@shard-$i.service ; done
    
  16. Восстановите базу данных Tarantool из резервной копии.

    cd /etc/findface_dump
    
    for x in *.json; do sudo findface-storage-api-restore -config /etc/findface-sf-api.ini < "$x"; done
    
  17. Перенесите схему базы данных из FindFace Multi в PostgreSQL, заново создайте предустановленные пользовательские роли и первого администратора.

    sudo findface-security migrate
    sudo findface-security create_groups
    sudo findface-security create_default_user
    
  18. Перезапустите сервисы findface-security и nginx.

    sudo systemctl restart findface-security.service nginx.service
    
  19. Воссоздайте ранее существовавшие отчеты.

    Важно

    Следующие вкладки были усовершенствованы и переименованы в FindFace Multi 1.2:

    • Досье превратились в Карточки

    • Эпизоды переименованы в Эпизоды -> Люди

    • Персоны превратились в Кластеры

Важно

Настоятельно рекомендуется отключить автоматическое обновление Ubuntu, чтобы сохранить совместимость FindFace Multi со средой установки. В этом случае вы сможете обновлять ОС вручную, контролируя процесс обновления отдельных пакетов.

Для отключения автоматического обновления Ubuntu выполните следующие команды:

sudo apt-get remove unattended-upgrades
sudo systemctl stop apt-daily.timer
sudo systemctl disable apt-daily.timer
sudo systemctl disable apt-daily.service
sudo systemctl daemon-reload

Примечание

Вы можете дополнительно развернуть Видеомагнитофон. См. Пошаговое развертывание функционала Видеомагнитофон.