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

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

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

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

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

Подробное описание схемы приведено в Таблице 2.

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

Шаг Описание
(1) В RSE Server поступает запрос на соединение по WebSocket от клиента.
Пример запроса:
GET ws://127.0.0.1:4444/ – установка соединения по WebSocket.
0 - содержимое сообщения для старта сессии
(2) В зависимости от того, какая камера подключена, RealSense или VLS, RSE Server передает запрос в соответствующий компонент RSEngine: RealSense2 SDK или в VLS 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 выполняет:
- выбор каждого третьего кадра из поступающего видеопотока. Данное количество кадров не регулируется в настройках. Общее количество получаемых кадров в секунду - 15.;
- детекцию лиц на каждом кадре;
- определение атрибутов и параметров обнаруженных лиц;
- проверку пороговых значений полученных параметров (положение головы, качества изображений и др.).
В случае, если все проверки пройдены, то процесс продолжается (переход к шагу 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.

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

Шаг Описание
(1) RSE Server передает запрос RSEngine на запуск мониторинга камеры
(2) Мониторинг камеры передает запрос на получение информации о статусе камеры в компонент RealSense2 SDK или в VLS SDK, в зависимости от того, какая камера подключена - RealSense или VLS.
(3) Компонент передает запрос на получение информации о статусе камеры
(4) Компонент получает статус камеры
(5) Компонент передает информацию о статусе камеры в мониторинг камеры
(6) RSEngine передает информацию о статусе камеры в RSE Server
(7) RSE Server записывает данные о статусе камеры в реестр (на ОС Windows) или в рабочую папку ./logs (на ОС Ubuntu 18.04 x64 и Debian 10 x64)