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

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

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

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

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

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

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

Шаг Описание
(1) В RSE Server поступает запрос на соединение по WebSocket от клиента.
Пример запроса:
GET ws://127.0.0.1:4444/ – установка соединения по WebSocket.
0 - содержимое сообщения для старта сессии
(2) RSE Server передает запрос RSEngine на запуск камеры (в компонент RealSense2 SDK)
(3) RealSense2 SDK запускает камеру
(4) RealSense2 SDK получает RGB, IR, Depth видеопотоки с камеры, разбивает на кадры и анализирует
(5) RealSense2 SDK передает набор кадров в 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) Мониторинг камеры передает запрос на получение информации о статусе камеры
(3) RealSense2 SDK передает запрос на получение информации о статусе камеры
(4) RealSense2 SDK получает статус камеры
(5) RealSense2 SDK передает информацию о статусе камеры в мониторинг камеры
(6) RSEngine передает информацию о статусе камеры в RSE Server
(7) RSE Server записывает данные о статусе камеры в реестр (на ОС Windows) или в рабочую папку ./logs (на ОС Ubuntu 18.04 x64 и Debian 10 x64)