Алгоритм работы#
Выбор лучшего кадра#
Диаграмма взаимодействия компонентов при выборе лучшего кадра представлена ниже (Рисунок 2).
Подробное описание схемы приведено в Таблице 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) |