Перейти к основному содержимому
Версия: 1.17.1

Работа с базами данных

Загрузка базы лиц

Чтобы загрузить базу изображений лиц, воспользуйтесь скриптом из папки utils/upload_script дистрибутива поставки OMNI Platform. Скрипт принимает файл с путями до изображений и отправляет запросы на создание профилей в OMNI Platform.

Результат работы скрипта — это профили, созданные по изображениям в OMNI Platform, а также список файлов в папке script_files:

  • result.txt: файл с числом, показывающим количество изображений, обработанных при прошлом запуске скрипта. В это число также входят изображения, во время обработки которых произошла ошибка. Число обновляется во время работы скрипта.

  • errors.txt: файл, в который записываются ошибки во время загрузки изображений в OMNI Platform, в формате: <путь до изображения> : <ошибка>

  • trace_errors.txt: файл с подробным описанием ошибки, произошедшей при загрузке изображения, в формате: <путь до изображения> : <ошибка> <traceback>. Можно использовать для самостоятельной отладки или отправки в службу технической поддержки.

Системные требования

  • Операционная система: Ubuntu 20.04
  • Python 3.8
  • pip 22.0.4
подсказка

Все последующие шаги выполняются из папки upload_script.

Подготовка

  1. Вам понадобится файл, в котором прописаны пути до изображений, предназначенных для загрузки в OMNI Platform. Путь до каждого изображения должен начинаться с новой строки без отступов.

    Например:

    /home/stranger/Downloads/1.jpeg
    /home/stranger/Downloads/2.jpeg
    /home/stranger/Downloads/3.jpeg

    Такой файл можно создать с помощью команды, которая рекурсивно найдет все файлы формата jpg или jpeg в датасете и выведет абсолютные пути до них в файл:

    find <абсолютный путь до датасета с изображениями> -type f -name "*.jpg" -o -name "*.jpeg" > image_paths.txt
    • -name <регулярное выражение> задает формат изображений, а точнее условие для поиска.
    • -o определяет логическое отношение ИЛИ между двумя условиями.
  2. Сгенерируйте виртуальное окружение для запуска скрипта загрузки изображений в OMNI Platform:

    python3 -m venv generate_persons_env
  3. Подключитесь к сгенерированному окружению:

    source generate_persons_env/bin/activate
  4. Находясь в виртуальном окружении, установите необходимые зависимости:

    pip3 install -r requirements.txt

Работа со скриптом

Запуск скрипта

Запустить скрипт можно только из виртуального окружения, созданного на этапе подготовки, через выполнение файла generate_persosn.py.

python generate_persons.py

Запустите генерацию профилей по ранее сгенерированному списку путей до изображений:

python generate_persons.py -p ./image_paths.txt -H <platform url> -t <platform token> -P <profile group id>

Обязательные аргументы:

-p --paths: путь до файла, содержащего пути до изображений лиц.

-H --host: URL инстанса OMNI Platform, в который нужно загрузить изображения. Убедитесь, что URL прописан без косой черты в конце.

-t --token: токен доступа или авторизационный ключ пользователя, который предоставляет доступ к загрузке всех изображений. Токен можно получить на главной странице OMNI Platform после авторизации.

Необязательные аргументы:

-T --throughput: параметр определяет максимальное количество запросов на создание профиля, которое выполняет сервер во время работы скрипта.Рекомендуется не менять этот параметр без предварительных расчётов производительности OMNI Platform на вашей конфигурации серверной машины.

-l --limit <limit>: параметр ограничивает количество загружаемых изображений, если в датасете их содержится больше чем требуется для загрузки.

-P --profile_group: uuid4 группы профилей, в которую необходимо поместить все создаваемые по изображениям профили. Добавление в группу требуется для настройки оповещений по созданным профилям. uuid4 можно получить в дашборде OMNI Platform, нажав на пять цифр в левом верхнем углу карточки списка наблюдения.

-c --clear-prev: параметр позволяет игнорировать предыдущие результаты запуска скрипта и начинать загрузку заново, очистив файл result.txt. Обратите внимание, что файлы errors.txt и trace_errors.txt также будут очищены. Если требуется сохранить логи, эти файлы необходимо скопировать в другое расположение.

Получить полное описание параметров скрипта:

python3 generate_persons.py -h

Об успешной работе скрипта свидетельствует наличие новых профилей с изображениями из датасета в инстансе OMNI Platform, а также консольные сообщения формата: Handled <количество обработанных изображений> images

Остановка скрипта

Остановить скрипт можно комбинацией клавиш Ctrl+C. Весь прогресс предыдущей обработки сохранится, и при необходимости можно будет возобновить загрузку.

Работа с ошибками загрузки

Сообщение о неудачной загрузке изображения будет выведено в консоль, при этом скрипт продолжит работу. Сообщение об ошибке сохранится в файл errors.txt, а более подробная информация будет записана в файл trace_errors.txt.


- sort: cannot read: ./local_im: No such file or directory

Путь до файла с абсолютными путями до изображений в датасете указан неверно. Проверьте, что файл по переданному пути действительно существует.


-   <class 'aiohttp.client_exceptions.ClientResponseError'>|404, message='Not Found', url=URL('http://sadasdasd/api/v2/')
<class 'aiohttp.client_exceptions.ClientConnectorError'>|Cannot connect to host asdasd:80 ssl:default [Name or service not known]
<class 'aiohttp.client_exceptions.InvalidURL'>|http:///asdasd/api/v2/

URL инстанса OMNI Platform указан неверно. Проверьте, что OMNI Platform действительно находится по указанному URL.


- <class 'Exception'>|[{'message': 'User has no access or id is incorrect'}]

Токен авторизации пользователя указан неверно. Проверьте, что вы верно скопировали токен.


-   <class 'Exception'>|[{'message': 'One or several profiles_groups does not exist', 'code': '0x573bkd35'}]
<class 'Exception'>|[{'message': '“%(value)s” is not a valid UUID.'}]

Группы профилей по переданному id не существует. Проверьте, что вы верно скопировали ID группы профилей.


-   <class 'Exception'>|[{'message': 'No faces found', 'code': '0x95bg42fd'}]
<class 'Exception'>|[{'message': 'Low quality photo', 'code': '0x86bd49dh'}]

Лица на изображении отсутствуют, либо загружено изображение недостаточного качества. Профиль по такому изображению не появится в OMNI Platform.


Резервное копирование и восстановление базы данных

примечание

Не поддерживается для внешних баз данных.

Команды выполняются из директории setup.

Создание резервной копии базы данныx

Для создания резервной копии базы данных выполните команду:

./cli.sh platform db-backup - <root_postgres_user> <dump_path>
примечание

Имя <root_postgres_user> можно посмотреть в файле ./cfg/platform.secrets.json в postgres-root-credentials.user

Восстановление данных из резервной копии базы данных

примечание

Восстановление данных из резервной копии необходимо выполнять на той же версии платформы, с которой была создана резервная копия.

  1. Остановите image-api:

    ./cli.sh image-api uninstall
  2. Запросите список сервисов:

    kubectl get deployment
  3. Остановите все сервисы, кроме platform-postgres-dep:

    kubectl scale deployment <SERVICE_NAME_1> <SERVICE_NAME_2> --replicas=0
  4. Выполните восстановление данных из резервной копии:

    ./cli.sh platform db-restore - <dump_path>
  5. Запустите остановленные сервисы

    kubectl scale deployment <SERVICE_NAME> --replicas <COUNT>

    либо заново разверните OMNI Platform:

    ./cli.sh platform install
  6. Запустите image-api:

    ./cli.sh image-api install