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

Описание компонентов#

Компонент RSEngine#

RSEngine обеспечивает взаимодействие внутри Системы библиотек SDK VisionLabs, RealSense2 SDK, VLS LUNA CAMERA 3D SDK, VLS LUNA CAMERA 2D SDK.

Компонент SDK VisionLabs#

SDK VisionLabs представляет собой набор средств разработки (software development kit), включающий библиотеки и нейронные сети для анализа изображений с целью:

  • детекции лиц на изображениях и ключевых точек (ориентиров) лица;
  • выбор лучшего кадра;
  • оценки атрибутов изображения для дальнейшей проверки Liveness;
  • оценки лица на изображении Liveness-алгоритмами.

Все описанные ниже оценки выполняются для проверки соответствия изображения требованиям Liveness. Все проверки являются внутренними и результат не передаётся вовне. Результат проверки может быть выведен только в случае ошибки, если какой-либо атрибут изображения/лица не подходит для оценки Liveness (см. описание ошибок в "Приложении 2. Коды статусов и описание ошибок");

Компонент RealSense2 SDK#

RealSense2 SDK представляет собой компонент, который позволяет:

  • получать входящие изображения от камер Intel RealSense;
  • производить настройку параметров детекции;
  • включать/выключать камеру, менять различные параметры. Например, яркость подсветки лазера, автоэкспозицию, яркость.
  • автоматически обновлять соединение с камерой. При обновлении соединения происходит переподключение к камере. Если Система не может переподключиться к камере, выполняется программный сброс кабеля соединения. В случае неуспешности выполнения обозначенных операций, данная проблема будет отражена в отчете о статусе камеры в логах Системы.

Компонент VLS LUNA CAMERA 3D SDK#

VLS LUNA CAMERA 3D SDK представляет собой компонент, который позволяет:

  • получать входящие изображения от камер VLS LUNA CAMERA 3D / VLS LUNA CAMERA 3D Embedded;
  • производить настройку параметров детекции;
  • включать/выключать камеру, менять различные параметры (например, яркость подсветки лазера, автоэкспозицию, яркость).

Компонент VLS LUNA CAMERA 2D SDK#

VLS LUNA CAMERA 2D SDK представляет собой компонент, который позволяет:

  • получать входящие изображения от инфракрасных камер VLS LUNA CAMERA 2D;
  • производить настройку параметров детекции;
  • включать/выключать камеру;
  • менять угол поворота видеокадра камеры.

Функции камер#

Детектирование лиц#

Детектор использует специальные алгоритмы обнаружения лиц и решает следующие задачи:

  • обнаружения лица на изображении;
  • определения 5 ключевых точек на лице: две для глаз, одна для кончика носа и две для углов рта;
  • оценка качества детекции – степень вероятности, что на изображении обнаружено именно лицо, а не другой объект.

Оценка качества изображения#

Выполняется оценка качества изображения по следующим параметрам:

  • Blur – смазанность (размытость);
  • Light – засвеченность;
  • Dark – затемненность.

Оценка статуса рта#

Выполняется оценка статуса рта по следующим параметрам:

  • Opened – рот открыт;
  • Occluded – рот перекрыт сторонним предметом;
  • Smiling – наличие улыбки.

Оценка статуса глаз#

Выполняется оценка статуса глаз по следующим параметрам:

  • Closed – глаза закрыты;
  • Open – глаза открыты;
  • Occluded – глаза перекрыты (например, солнечными очками).

Оценка положения головы#

Выполняется оценка положения головы по следующим параметрам:

  • Roll – угол наклона головы вокруг продольной оси;
  • Pitch – угол наклона головы вокруг поперечной оси;
  • Yaw – угол поворота головы вокруг вертикальной оси.

Проверка Depth Liveness#

Выполняется проверка «витальности» человека на изображении по карте глубин.

Производится анализ матрицы глубины (16 бит), которая содержит информацию о расстоянии поверхностей объектов сцены (лиц) до точки обзора.

Проверка IR Liveness#

Выполняется проверка «витальности» человека на изображении при помощи анализа инфракрасного изображения.

Для выполнения проверки камера должна быть оборудована инфракрасной подсветкой.

Проверка FPR Liveness#

FPR – анаграмма по названиям проверок – FlyingFaces, Phone и Replay Liveness. Выполняется проверка «витальности» человека на изображении при помощи:

  • FlyingFaces Liveness – алгоритм, который позволяет определять распечатанные фотографии и маски.
  • Phone Liveness – алгоритм, который позволяет определять наличие телефона в расширенном BBox;
  • 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 ожидает запросы на подключение к камере (представлены в Таблице 5) от внешней системы – необходимо выставить параметр cs_communication = msg-pack;
  • RSE Server запускает процесс получения видеопотока и процесс детекции лиц, как только установится WebSocket соединение – необходимо выставить параметр cs_communication = json.

Таблица 5. Описание запросов к 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 с кодом ответа и некоторые дополнительные поля с данными (полезные нагрузки), описанными в Таблице 6;
  • если разработчик внешней системы установил параметр cs_communication = json, то каждый ответ будет поступать в формате json и подразделяться на типы сообщений, описанные в Таблице 7.

Таблица 6. Ответы на запросы к 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. Коды статусов и описание ошибок;)

— 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

Запрос отклонен, т.к. сервер занят

Полезной нагрузки нет

Таблица 7. Ответы на запросы к 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;

— metadata – параметры возвращаемого изображения:

  • 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.