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

LUNA PASS API#

Общий принцип работы LUNA PASS API следующий:

  • на вход приходит кадр;
  • LUNA SDK оценивает и проверяет кадр;
  • последовательно выполняются плагины, если они включены:
  • плагин FaceMatcher;
  • плагин VirtualCameraChecker;
  • плагин ActiveLiveness;
  • рассчитывается агрегированное значение Liveness, Deepfake, а также оценки рта, статуса глаз и типа очков;
  • анализируется полученный результат работы плагинов и проверок.

По умолчанию все плагины включены.

Процесс оценки кадра#

Процесс оценки кадра — последовательное выполнение проверок. Описание проверок представлено ниже (Таблица 4).

Таблица 4. Проверки для оценки кадра

Проверка

Описание

Multiface

является ли лицо:

  • единственным в кадре;

  • самым крупным (главным) в кадре;

  • ближайшим к центру

Качество изображения

  • размытость;

  • засвеченность;

  • затемненность;

  • наличие бликов на лице;

  • контрастность

Размер и позиция лица в кадре

отступ границы лица от границы кадра:

  • сверху;

  • снизу;

  • справа;

  • слева;

размер кадра:

  • по ширине;

  • по высоте;

размер лица в кадре:

  • по ширине;

  • по высоте

Положение головы

  • угол наклона головы вправо/влево (roll);

  • угол наклона головы вверх/вниз (pitch);

  • угол поворота головы вправо/влево (yaw)

Состояние глаз

  • глаза открыты;

  • глаза закрыты

Статус рта

  • рот открыт;

  • обнаружена улыбка;

  • рот перекрыт

Наличие очков

  • очки отсутствуют;

  • очки присутствуют;

  • солнцезащитные очки

AGS, общая метрика качества изображения

\—

Liveness

  • оценка Liveness;

Deepfake

  • оценка Deepfake с заданной точностью

Если кадр не прошел одну из проверок, тогда анализируется следующий кадр. Пользователь при этом видит соответствующие подсказки на странице с LUNA PASS UI.

Принцип работы плагина FaceMatcher#

Плагин FaceMatcher включается в файле config.toml. Для этого в параметрах конфигурации LIVENESS необходимо установить параметр disallowMultipleFacesInSession = 1. Позволяет обрывать сессию, если на двух кадрах в рамках одной сессии обнаружены несколько основных лиц.

Описание общего принципа работы плагина FaceMatcher:

Если пришел только первый кадр, Facematcher запоминает фотографию лица. Если пришел второй кадр, Facematcher сравнивает фотографию лица с пришедшего кадра с фотографией лица предыдущего кадра:

  • если на фотографиях с двух кадров разные лица, то дальнейшие проверки не проводятся;

  • если на фотографиях с двух кадров лица одинаковые, то кадр отправляется для дальнейших проверок

Описание работы плагина VirtualCameraChecker#

Плагин VirtualCameraChecker включается в файле config.toml. Позволяет обнаруживать использование пользователем виртуальной камеры вместо реальной камеры устройства. Данные об обнаружении виртуальной камеры фиксируются в логах.

Принцип работы плагина ActiveLiveness#

Плагин ActiveLiveness включается в файле config.toml. Позволяет подтвердить витальность человека по нескольким кадрам, на которых пользователь взаимодействует с Сервисом: моргает, поворачивает голову влево-вправо по оси Y, наклоняет голову вверх-вниз по оси X. Описание общего принципа работы плагина представлено ниже (Таблица 5).

Таблица 5. Описание общего принципа работы плагина ActiveLiveness

Шаг

Описание

1

Выбирается произвольный набор проверок, количество которых задаётся в настройках.

2

Если проверка текущего кадра на Liveness не пройдена, то плагин генерирует ошибки. Ошибки подскажут, что должен сделать пользователь, чтобы пройти проверку.

3

Если проверка текущего кадра на Liveness пройдена, то пропускается один или несколько кадров, чтобы фото с полуоткрытыми глазами или в процессе поворачивания головы не засчитывались. За количество пропускаемых кадров отвечает параметр cooldownFramesCount.

Полученный кадр становится bestshot.

Проверки ActiveLiveness#

Моргание

Проверка начинается в момент, когда открыты оба глаза, либо открыт один глаз и включен параметр acceptOneEyeOpen. Для того, чтобы проверка считалась пройденной, далее должны прийти два кадра: с закрытыми глазами и снова с открытыми, либо, при включенном параметре acceptOneEyeOpen, — кадр с одним закрытым глазом и кадр с открытым.

Повороты головы

Для начала проверки угол поворота головы должен быть меньше значения args.yawStartDeg. Далее должны прийти два кадра: со значением угла поворота больше args.yawThresholdDeg и со значением угла повороты меньше args.yawStartDeg.

Запрокидывание головы

Для начала проверки угол запрокидывания головы должен быть меньше значения args.pitchStartDeg. Далее должны прийти два кадра: со значением угла поворота больше args.pitchThresholdDeg и со значением угла повороты меньше args.pitchStartDeg.

Подробнее о значениях углов поворота и углов запрокидывания см. в параметрах конфигурации плагина ActiveLiveness

Обработка результатов#

Общий принцип работы LUNA PASS API представлен на схеме (Рисунок 9). Описание общего принципа работы представлено ниже (Таблица 6).

Общий принцип работы LUNA PASS API
Рисунок 9. Общий принцип работы LUNA PASS API

Таблица 6. Описание общего принципа работы LUNA PASS API

Шаг

Описание

0

В LUNA PASS API поступает кадр

1

LUNA PASS API выполняет оценку кадра с помощью LUNA SDK и сравнивает полученные значения с пороговыми. Подробнее см. "Проверки при процессе оценки кадра"

2

Если включен плагин FaceMatcher, то выполняется обработка в соответствии с процессом описанным в общем принципе работы плагина

3

Если включен плагин VirtualCameraChecker, то выполняется проверка на использование пользователем виртуальной камеры вместо реальной камеры устройства

4

Если включен плагин ActiveLiveness, то выполняется обработка в соответствии с процессом описанным в общем принципе работы плагина

5

После выполнения действий в указанных плагинах LUNA PASS API обрабатывает полученные результаты.

LUNA PASS API проверяет, является ли поступивший кадр первым. В зависимости от результатов данной проверки выполняются шаги:

  • Если поступивший кадр не первый, то выполняется переход к шагу 6;

  • Если поступил только первый кадр, то выполняется переход к шагу 8

6

Если поступивший кадр не первый, то лицо на текущем кадре сравнивается с лицом на первом кадре:

  • Если лица не совпадают, то выполняется переход к шагу 7;

  • Если лица на двух кадрах совпадают, то выполняется переход к шагу 8

7

Обнаружено нескольких основных лиц в рамках одной сессии, текущая сессия закрывается без успешного кадра.

8

LUNA PASS API проверяет является ли камера реальной. В зависимости от результатов данной проверки выполняются шаги:

  • Если камера виртуальная, то выполняется переход к шагу 9;

  • Если камера реальная, то выполняется переход к шагу 10

9

Обнаружено использование пользователем виртуальной камеры вместо реальной камеры устройства, текущая сессия закрывается без успешного кадра.

10

LUNA PASS API проверяет: количество кадров, дошедших до проверки Liveness больше или равно значению maxLivenessAttempts.

В зависимости от данной проверки дальнейший анализ делится на две части:

  1. Проверка включения плагинов и отправка результата.

  2. Проверка включения плагинов и попытки получить дополнительные кадры для обработки

Если на шаге 10 количество кадров, дошедших до проверки Liveness, меньше допустимого, выполняются следующие шаги:

11

LUNA PASS API проверяет заполнено ли окно агрегации: количество полученных кадров больше или равно значению aggregateFrames:

  • Если окно агрегации не заполнено, то выполняется переход к шагу 21;

  • Если окно агрегации заполнено, то выполняется переход к следующему шагу

12

LUNA PASS API проверяет значения:

  • агрегированный Liveness больше или равен порогового значения liveness_score;

  • агрегированный Deepfake больше или равен порогового значения deepfake;

  • агрегированное значение оценки рта больше либо равно пороговому значению mouth;

  • агрегированное значение статуса глаза равно заданному в параметре acceptOneEyeOpen;

  • агрегированное значение типа очков равно заданному в параметре glasses;

Если значения полученных агрегированных значений выше или равны порогу, то выполняется переход к следующему шагу

13

LUNA PASS API проверяет включен ли плагин ActiveLiveness

14

Если плагин ActiveLiveness включен, то выполняется проверка результата работы плагина ActiveLiveness. Сессия продолжается до прохождения кадром активного Liveness

15

Когда проверка результата работы плагина ActiveLiveness пройдена, то LUNA PASS API отправляет кадр в LUNA PASS UI как успешный

16

Если плагин ActiveLiveness выключен, LUNA PASS API отправляет кадр в LUNA PASS UI как успешный

Если на шаге 10 количество кадров, дошедших до проверки Liveness, больше или равно допустимому, выполняются следующие шаги:

17

LUNA PASS API проверяет включен ли плагин ActiveLiveness

18

Если плагин ActiveLiveness включен, то выполняется проверка результата работы плагина ActiveLiveness. Сессия продолжается до прохождения кадром активного Liveness

19

Когда проверка результата работы плагина ActiveLiveness пройдена, то LUNA PASS API отправляет кадр в LUNA PASS UI как успешный

20

Если плагин ActiveLiveness выключен LUNA PASS API отправляет кадр в LUNA PASS UI как успешный

21

  • Если кадр, прошедший проверки, был последним, то выполняется переход к шагу 22

  • Если кадр, прошедший проверки, — не последний, то все проверки начинаются заново с шага 1 для нового кадра

22

Текущая сессия закрывается без успешного кадра