Перейти к содержанию

Алгоритм работы#

Выбор лучшего кадра#

Взаимодействие компонентов при выборе лучшего кадра отражено ниже (Рисунок 2).

Диаграмма взаимодействия компонентов Системы при выборе лучшего кадра
Диаграмма взаимодействия компонентов Системы при выборе лучшего кадра

Ниже представлено пояснение к рисунку (Таблица 3).

Таблица 3. Описание диаграммы взаимодействия компонентов Системы при выборе лучшего кадра

Шаг

Описание

(1)

В RSE Server поступает запрос на соединение по WebSocket от клиента.

Пример запроса:

GET ws://127.0.0.1:4444/ – установка соединения по WebSocket.

0 - содержимое сообщения для старта сессии

(2)

RSE Server передает запрос RSEngine на запуск камеры (в библиотеку камеры).

В зависимости от того, какая камера подключена,IntelRealSense, VLS LUNA CAMERA 3D или VLS LUNA CAMERA 2D, RSE Server передает запрос в соответствующую библиотеку RSEngine: RealSense2 SDK, VLS LUNA CAMERA 3D SDK, VLS LUNA CAMERA 2D SDK.

(3)

Библиотека камеры запускает камеру

(4)

Библиотека камеры получает RGB, IR, Depth видеопотоки с камеры, разбивает на кадры и анализирует

(5)

Библиотека камеры передает набор кадров в RSE Server. В зависимости от параметра cs_communication будут передаваться разные данные:

- cs_communication = msg-pack: передаются все три кадра (RGB, IR, Depth)

- cs_communication = json: передается только RGB-кадр

(6)

RSE Server отправляет запрос на обработку кадра (производится по каждому кадру) в SDK VisionLabs

(7)

SDK VisionLabs выполняет:

  • выбор каждого третьего кадра из поступающего видеопотока (данное количество кадров не регулируется в настройках);

  • детекцию лиц на каждом кадре;

  • определение атрибутов и параметров обнаруженных лиц;

  • проверку пороговых значений полученных параметров (положение головы, качества изображений и др.).

В случае, если все проверки пройдены, то процесс продолжается (переход к шагу 8).

Если хотя бы одна проверка не пройдена, SDK VisionLabs отправляет запрос к камере на получение новых кадров для проведения повторной проверки до тех пор, пока есть детекция (возврат к шагу 4)

(8)

SDK VisionLabs выполняет оценку Liveness и сравнивает полученное значение оценки Liveness с пороговым значением.

В случае, если полученное значение Liveness выше порогового значения, то текущий кадр становится лучшим кадром.

Если полученное значение Liveness ниже порогового значения, то SDK VisionLabs отправляет запрос к камере на получение новых кадров для проведения повторной проверки до тех пор, пока есть детекция (возврат к шагу 4)

(9)

В случае, если проверка Liveness пройдена успешно, то полученный лучший кадр и атрибуты лица направляются в RSE Server

(10)

RSE Server преобразует выбранный лучший кадр и метаинформацию в формат MessagePack и отправляет клиенту во внешнюю систему

Мониторинг состояния камеры#

Взаимодействие компонентов при мониторинге состояния камеры отражено ниже (Рисунок 3).

Диаграмма взаимодействия компонентов при мониторинге состояния камеры
Диаграмма взаимодействия компонентов при мониторинге состояния камеры

Ниже представлено пояснение к рисунку (Таблица 3).

Мониторинг запускается по умолчанию раз в 300 секунд, длительность можно изменить в параметрах camera-monitoring и camera-monitoring-delay в файле rsengine.conf.

Таблица 4. Описание диаграммы взаимодействия компонентов Системы при мониторинге состояния камеры

Шаг

Описание

(1)

RSE Server передает запрос RSEngine на запуск мониторинга камеры

(2)

Мониторинг камеры передает запрос на получение информации о статусе камеры в библиотеку камеры — RealSense2 SDK, VLS LUNA CAMERA 3D SDK или VLS LUNA CAMERA 2D SDK в зависимости от того, какая камера подключена — IntelRealSense, VLS LUNA CAMERA 3D или VLS LUNA CAMERA 2D SDK

(3)

Библиотека камеры передает запрос на получение информации о статусе камеры

(4)

Библиотека камеры получает статус камеры

(5)

Библиотека камеры передает информацию о статусе камеры в мониторинг камеры

(6)

RSEngine передает информацию о статусе камеры в RSE Server

(7)

RSE Server записывает данные о статусе камеры в реестр (на ОС Windows) или в рабочую папку ./logs (на ОС Ubuntu 18.04 x64, Debian 10 x64 и Armbian 23)