LUNA PASS API#
Общий принцип работы LUNA PASS API следующий:
- на вход приходит кадр;
- LUNA SDK оценивает и проверяет кадр;
- последовательно выполняются плагины, если они включены:
- плагин FaceMatcher;
- плагин VirtualCameraChecker;
- плагин ActiveLiveness;
- рассчитывается агрегированное значение Liveness, Deepfake, а также оценки рта, статуса глаз и типа очков;
- анализируется полученный результат работы плагинов и проверок.
По умолчанию все плагины включены.
Процесс оценки кадра#
Процесс оценки кадра — последовательное выполнение проверок. Описание проверок представлено ниже (Таблица 4).
Таблица 4. Проверки для оценки кадра
Проверка |
Описание |
---|---|
Multiface |
является ли лицо:
|
Качество изображения |
|
Размер и позиция лица в кадре |
отступ границы лица от границы кадра:
размер кадра:
размер лица в кадре:
|
Положение головы |
|
Состояние глаз |
|
Статус рта |
|
Наличие очков |
|
AGS, общая метрика качества изображения |
\— |
Liveness |
|
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 пройдена, то пропускается один или несколько кадров, чтобы
фото с полуоткрытыми глазами или в процессе поворачивания головы не засчитывались.
За количество пропускаемых кадров отвечает параметр Полученный кадр становится bestshot. |
Проверки ActiveLiveness#
Моргание
Проверка начинается в момент, когда открыты оба глаза, либо открыт один глаз и включен параметр acceptOneEyeOpen
. Для того, чтобы проверка считалась пройденной, далее должны прийти два кадра: с закрытыми глазами и снова с открытыми, либо, при включенном параметре acceptOneEyeOpen
, — кадр с одним закрытым глазом и кадр с открытым.
Повороты головы
Для начала проверки угол поворота головы должен быть меньше значения args.yawStartDeg
. Далее должны прийти два кадра: со значением угла поворота больше args.yawThresholdDeg
и со значением угла повороты меньше args.yawStartDeg
.
Запрокидывание головы
Для начала проверки угол запрокидывания головы должен быть меньше значения args.pitchStartDeg
. Далее должны прийти два кадра: со значением угла поворота больше args.pitchThresholdDeg
и со значением угла повороты меньше args.pitchStartDeg
.
Подробнее о значениях углов поворота и углов запрокидывания см. в параметрах конфигурации плагина ActiveLiveness
Обработка результатов#
Общий принцип работы LUNA PASS API представлен на схеме (Рисунок 9). Описание общего принципа работы представлено ниже (Таблица 6).

Таблица 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 |
Если поступивший кадр не первый, то лицо на текущем кадре сравнивается с лицом на первом кадре:
|
7 |
Обнаружено нескольких основных лиц в рамках одной сессии, текущая сессия закрывается без успешного кадра. |
8 |
LUNA PASS API проверяет является ли камера реальной. В зависимости от результатов данной проверки выполняются шаги:
|
9 |
Обнаружено использование пользователем виртуальной камеры вместо реальной камеры устройства, текущая сессия закрывается без успешного кадра. |
10 |
LUNA PASS API проверяет: количество кадров, дошедших до проверки Liveness больше или равно значению В зависимости от данной проверки дальнейший анализ делится на две части:
|
Если на шаге 10 количество кадров, дошедших до проверки Liveness, меньше допустимого, выполняются следующие шаги: |
|
11 |
LUNA PASS API проверяет заполнено ли окно агрегации: количество полученных кадров больше или равно значению
|
12 |
LUNA PASS API проверяет значения:
Если значения полученных агрегированных значений выше или равны порогу, то выполняется переход к следующему шагу |
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 |
Текущая сессия закрывается без успешного кадра |