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

Совет

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

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

  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-security.

    sudo systemctl stop findface-security*.service
    
  3. Создайте резервную копию базы данных векторов признаков на основе 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
    
  4. Установите apt-репозиторий с версией FindFace Multi, используя консольный инсталлятор согласно инструкции в этом разделе.

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

    sudo apt install -y nats-server
    sudo systemctl enable nats-server
    sudo systemctl restart nats-server
    
  6. Установите из репозитория сервисы 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.

  7. Откройте файл конфигурации /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',
    
  8. Откройте старую версию файла конфигурации 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
    
    ...
    
  9. Откройте новую версию файла конфигурации /etc/findface-video-worker-cpu.ini (/etc/findface-video-worker-gpu.ini). В разделе streamer установите tracks = 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
    
  10. Перезагрузите сервисы.

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

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

    sudo systemctl stop 'tarantool@*'
    
    sudo rm /opt/ntech/var/lib/tarantool/shard-*/{index,snapshots,xlogs}/*
    
  13. Перейдите в директорию с файлами конфигурации 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
    })
    
  14. Перезапустите шарды 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
    
  15. Восстановите базу данных Tarantool из резервной копии.

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

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

    sudo systemctl restart findface-security.service
    

Важно

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

Для отключения автоматического обновления 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