Описание компонентов Системы#
Компонент RSEngine#
RSEngine обеспечивает взаимодействие внутри Системы библиотек SDK VisionLabs, RealSense2 SDK и VLS SDK.
Компонент SDK VisionLabs#
SDK VisionLabs представляет собой набор средств разработки (software development kit), включающий библиотеки и нейронные сети для анализа изображений с целью:
- детекции лиц на изображениях и ключевых точек (ориентиров) лица;
- выбор лучшего кадра;
- оценки атрибутов изображения для дальнейшей проверки Liveness и обнаруженного лица;
- оценки лица на изображении Liveness-алгоритмами.
Все оценки описанные ниже проводятся для проверки соответствия изображения требования для проверки Liveness. Все проверки являются внутренними и результат не передаётся вовне. Результат проверки может быть выведен только в случае ошибки, если какой-либо атрибут изображения/лица не подходит для оценки Liveness (см. описание ошибок в "Приложении 2. Коды статусов и описание ошибок failureReason в полезных нагрузках ответа RSE_CAPTURE_META");
Компонент RealSense2 SDK#
RealSense2 SDK представляет собой компонент, который позволяет:
- получать входящие изображения от камер Intel RealSense;
- производить настройку параметров детекции;
- включать/выключать камеру, менять различные параметры (например, яркость подсветки лазера, авто экспозицию, яркость);
- автоматически обновлять соединение с камерой (при обновлении соединения происходит переподключение к камере. Если Система не может переподключиться к камере, выполняется программный сброс кабеля соединения. В случае неуспешности выполнения обозначенных операций, данная проблема будет отражена в отчете о статусе камеры в логах Системы).
Компонент VLS SDK#
VLS SDK представляет собой компонент, который позволяет:
- получать входящие изображения от камер VLS LUNA CAMERA 3D / VLS LUNA CAMERA 3D Embedded;
- производить настройку параметров детекции;
- включать/выключать камеру, менять различные параметры (например, яркость подсветки лазера, автоэкспозицию, яркость).
Детектирование лиц#
Детектор использует специальные алгоритмы обнаружения лиц и решает следующие задачи:
- обнаружения лица на изображении;
- определения 5 ключевых точек на лице: две для глаз, одна для кончика носа и две для углов рта;
- оценка качества детекции – степень уверенности, что на изображении обнаружено именно лицо, а не другой объект.
Оценка монохромности изображения#
Выполняется оценка входящего изображения, является ли оно монохромным или нет.
Оценка качества изображения#
Выполняется оценка качества изображения по следующим параметрам:
- Blur – смазанность (размытость);
- Light – засвеченность;
- Dark – затемненность.
Оценка статуса#
Выполняется оценка статуса рта по следующим параметрам:
- Opened – вероятность открытия рта;
- Occluded – вероятность наличия перекрытия рта сторонним предметом;
- Smiling – вероятность наличия улыбки.
Оценка статуса глаз#
Выполняется оценка статуса глаз по следующим параметрам:
- Closed – глаза закрыты;
- Open – глаза открыты;
- Occluded – глаза перекрыты (например, солнечными очками).
Оценка положения головы#
Выполняется оценка положения головы по следующим параметрам:
- Roll – угол наклона головы вокруг продольной оси;
- Pitch – угол наклона головы вокруг поперечной оси;
- Yaw – угол поворота головы вокруг вертикальной оси.
Проверка Depth Liveness#
Выполняется проверка «витальности» человека на изображении по карте глубин.
Производится анализ матрицы глубины (16 бит), которая содержит информацию, касающуюся расстояния поверхностей объектов сцены от точки обзора.
Проверка IR Liveness#
Выполняется проверка «витальности» человека на изображении при помощи анализа инфракрасного изображения.
Для выполнения проверки камера должна быть оборудована инфракрасной подсветкой.
Проверка FPR Liveness#
Выполняется проверка «витальности» человека на изображении при помощи:
- Replay Liveness – алгоритм, который позволяет определять артефакты видеозаписи;
- Phone Liveness – алгоритм, который позволяет определять наличие телефона в расширенном bbox;
- FlyingFaces Liveness – алгоритм, который позволяет определять распечатанные фотографии и маски.
FPR – анаграмма по названиям проверок – FlyingFaces, Phone и Replay Liveness.
Компонент Мониторинг камеры#
Мониторинг камеры используется для проверки состояния камеры.
Мониторинг камеры выполняет запрос следующих параметров камеры:
- данных о прошивке;
- статуса работы инфракрасных камер – включена/выключена;
- статуса работы RGB-камеры - включена/выключена;
- серийного номера камеры;
- статуса работы всей камеры - включена/выключена;
- температуры камеры;
- дата последнего обновления.
Пример содержимого реестра в разделе мониторинга представлен ниже (Рисунок 4).

Компонент RSE Server#
RSE Server представляет собой WebSocket сервер, обрабатывающий команды от внешних систем.
RSE Server принимает запросы и отправляет ответы посредством WebSocket.
Формат запроса:
- Код запроса операции (1 байт)
- Дополнительная полезная нагрузка (MessagePack или строка)
Пример запроса:
GET ws://127.0.0.1:4444/
– установка соединения по WebSocket.
0
- содержимое сообщения для старта сессии.
Формат ответа:
- Код ответа операции (1 байт)
- Дополнительная полезная нагрузка (MessagePack или строка)
Одновременно может быть обработан только один запрос.
В зависимости от необходимого типа интеграции (выбирается на усмотрение разработчика внешней системы) можно настроить RSE Server следующими способами:
- RSE Server ожидает запросы на подключение к камере от внешней системы, которые представлены в Таблице 4, для этого необходимо выставить параметр
cs_communication = msg-pack
; - RSE Server запускает процесс получения видеопотока и процесс детекции лиц, как только установится WebSocket соединение, для этого необходимо выставить параметр
cs_communication = json
.
Таблица 4. Описание запросов к RSE Server
Название запроса | Код запроса | Описание | Полезная нагрузка | Возможные ответы на запрос |
---|---|---|---|---|
RSE_START_CAPTURE | 0 | Запускает процесс получения видеопотока и процесс детекции лиц | Нет | RSE_CAPTURE_OK (54), |
RSE_CAPTURE_META (55) | ||||
RSE_STOP | 1 | Останавливает все запущенные процессы | Нет | RSE_STOP_OK (50) |
В зависимости от выбранного типа интеграции (выбирается на усмотрение разработчика внешней системы) ответ сервера может быть представлен в двух форматах:
- если разработчик внешней системы установил параметр
cs_communication = msg-pack
, то каждый ответ будет поступать в форматеmsg-pack
и будет содержать полеmessageType
с кодом ответа и некоторые дополнительные поля с данными (полезные нагрузки), описанными в Таблице 5; - если разработчик внешней системы установил параметр
cs_communication = json
, то каждый ответ будет поступать в форматеjson
и подразделяться на типы сообщений, описанные в Таблице 6.
Таблица 5. Ответы на запросы к RSE Server при формате ответа MessagePack
Название ответа | Код | Описание | Полезная нагрузка |
---|---|---|---|
RSE_CAPTURE_OK | 54 | Захваченный набор видеокадров | - rgbFrame – RGB кадр в формате uint8 array; |
- rgbFrameWidth – ширина RGB кадра в пикселях в формате int; | |||
- rgbFrameHeight – высота RGB кадра в пикселях в формате int; | |||
- irFrame – IR кадр в формате uint8 array; | |||
- depthFrame – Depth кадр в формате uint8 array | |||
RSE_CAPTURE_META | 55 | Метаданные обнаруженных лиц | - gotBestshot – индикатор был ли получен bestshot, в формате bool, возвращает: |
-- true – если bestshot был получен; | |||
-- false – если bestshot не получен; | |||
- failureReason – код статуса или ошибки liveness проверок в формате int (см. описание ошибок в "Приложении 2. Коды статусов и описание ошибок failureReason в полезных нагрузках ответа RSE_CAPTURE_META"); | |||
- bestshot – RGB-кадр, в формате uint8 array: | |||
-- если gotBestshot=True, то в ответе приходит RGB-кадр, который прошел все проверки;- если gotBestshot=False, то поле пустое | |||
RSE_STOP_OK | 50 | Вся обработка остановлена. RSE Server готов к новым запросам. | Полезной нагрузки нет |
RSE_UNKNOWN | 51 | Запрос не был распознан | Полезной нагрузки нет |
RSE_INTERNAL_ERROR | 52 | Возникла ошибка при обработке запроса | Полезной нагрузки нет |
RSE_BUSY | 53 | Запрос отклонен, т.к. сервер занят | Полезной нагрузки нет |
Таблица 6. Ответы на запросы к RSE Server при формате ответа JSON
Тип сообщения | Описание | Полезная нагрузка |
---|---|---|
visual | Тип ответа, который используется для трансляции видеопотока пользователю | - msg_type – тип возвращаемого сообщения (visual); |
--- img_b64 – кадр с камеры в формате base64; | ||
--- metadata – параметры возвращаемого изображения: | ||
-- frame_size – размеры изображения: | ||
- h – высота изображения в пикселях; | ||
- w – ширина изображения в пикселях;- detections – координаты обнаруженного лица: | ||
- h – высота рамки обнаруженного лица; | ||
- w – ширина рамки обнаруженного лица; | ||
- x – координаты левого верхнего угла рамки обнаруженного лица; | ||
- y – координаты левого верхнего угла рамки обнаруженного лица; | ||
-- progress – отображает этапы прохождения Liveness проверок обнаруженного лица (в процентах); | ||
-- track_id – идентификатор трека | ||
bestshot | Тип ответа, когда лицо успешно найдено. | - msg_type – тип возвращаемого сообщения (bestshot); |
Этот кадр может использоваться для последующей обработки(например, во внешней системе распознавания лиц) | --- img_b64 – лицо с кадра камеры в формате base64; | |
-- frame_size – размеры изображения: | ||
- h – высота изображения в пикселях; | ||
- w – ширина изображения в пикселях;- detections – координаты обнаруженного лица: | ||
- h – высота рамки обнаруженного лица; | ||
- w – ширина рамки обнаруженного лица; | ||
- x – координаты левого верхнего угла рамки обнаруженного лица; | ||
- y – координаты левого верхнего угла рамки обнаруженного лица; | ||
-- progress – отображает этапы прохождения Liveness проверок обнаруженного лица (в процентах); | ||
-- track_id – идентификатор трека |
Компонент WebSocket Client#
WebSocket Client является внешним компонентом для взаимодействия с RSE Server.
WebSocket Client – это JavaScript-библиотека для связи с RSE Server посредством WebSocket. Используется минимизированный формат двоичной сериализации MessagePack в качестве библиотеки протоколов для кодирования и декодирования сообщений, если сервер возвращает ответы в формате MessagePack.