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

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

Компонент 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).

Пример содержимого реестра в разделе мониторинга
Рисунок 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.