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

LUNA PASS API#

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

  • LUNA PASS API получает на вход кадр;
  • выполняются соответствующие оценки и проверки кадра с помощью LUNA SDK;
  • последовательно выполняются три плагина (если они включены):
  • плагин Bestshot;
  • плагин AggregateLiveness;
  • плагин Luna3DescriptorQualityCheck;
  • анализируется полученный результат работы плагинов.

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

Процесс оценки кадра включает в себя следующие проверки, выполняющиеся последовательно друг за другом (Таблица 4):

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

Проверка

Внутренние проверки

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

Включает в себя следующие проверки:

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

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

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

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

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

Проверка на наличие в кадре только одного лица

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

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

  • сверху;

  • снизу;

  • справа;

  • слева;

— проверки размера кадра:

  • по ширине;

  • по высоте;

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

  • по ширине;

  • по высоте

Проверка положения головы

Включает в себя следующие проверки:

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

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

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

Проверка статуса рта

Включает в себя следующие проверки:

  • открыт ли рот;

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

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

Проверка наличия очков

Проверка AGS

Проверка Liveness

Включает в себя следующие проверки:

  • оценка Liveness;

  • оценка качества Liveness

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

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

Плагин Bestshot включается отдельно в настройках (в файле config.toml) и позволяет выбрать в качестве bestshot кадр с наилучшим качеством и оценкой Liveness, путем сравнения оценки Liveness со значениями на предыдущих кадрах.

Принцип работы плагина Bestshot представлен на рисунке (Рисунок 5).

Принцип работы плагина Bestshot
Рисунок 5. Принцип работы плагина Bestshot

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

Шаг

Описание

(1)

Выполняется проверка значения Liveness текущего кадра: liveness_score >= LIVENESS_SCORE_THRESHOLD

Если проверка текущего кадра на Liveness не пройдена, то процесс прекращается, текущий кадр далее не используется.

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

(2)

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

Если значение Liveness текущего кадра ниже, чем у существующего лучшего кадра, то процесс прекращается, текущий кадр далее не используется.

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

(3)

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

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

Плагин AggregateLiveness включается отдельно в настройках (в файле config.toml) и позволяет рассчитывать агрегированное значение Liveness по нескольким кадрам.

Принцип работы плагина AggregateLiveness представлен на рисунке (Рисунок 6).

Принцип работы плагина AggregateLiveness
Рисунок 6. Принцип работы плагина AggregateLiveness

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

Шаг

Описание

(1)

Выполняется проверка качества Liveness текущего кадра: liveness_quality_score >= LIVENESS_QUALITY_SCORE_THRESHOLD

Если проверка текущего кадра на качество Liveness не пройдена, то процесс прекращается, текущий кадр далее не используется.

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

(2)

Плагин сохраняет значения качества liveness_score* по кадрам в рамках сессии, количество таких значений ограничено переменной AGGREGATE_LIVENESS_FRAMES_COUNT.

(3)

Плагин формирует агрегированное значение Liveness из значений, сохраненных на шаге 2

* liveness_quality_score — оценка качества изображения для распознавания Liveness.

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

Плагин Luna3DescriptorQualityCheck включается отдельно в настройках (в файле config.toml) и позволяет отправлять запрос к LUNA PLATFORM 3 на извлечение дескриптора и проверку его качества.

Плагин Luna3DescriptorQualityCheck работает только с LUNA PLATFORM версии 3.х.

Плагин позволяет снизить количество ошибок фильтрации по качеству дескриптора на стороне LUNA PLATFORM 3.

Принцип работы плагина Luna3DescriptorQualityCheck представлен на рисунке (Рисунок 7).

Принцип работы плагина Luna3DescriptorQualityCheck
Рисунок 7. Принцип работы плагина Luna3DescriptorQualityCheck

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

Шаг

Описание

(1)

Выполняется проверка включен ли плагин Bestshot.

Если плагин Bestshot включен, то переход к шагу 6

Если плагин Bestshot выключен:

(2)

Если плагин Bestshot выключен, то выполняется проверка качества Liveness текущего кадра: liveness_quality_score >= LIVENESS_QUALITY_SCORE_THRESHOLD

Если проверка текущего кадра на качество Liveness не пройдена, то процесс прекращается, текущий кадр далее не используется

(3)

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

Если у текущего кадра Liveness меньше, чем Liveness у лучшего кадра данного плагина, то процесс прекращается, текущий кадр далее не используется.

Если текущий кадр — первый кадр, прошедший проверку качества Liveness (в текущем плагине или плагине Bestshot), то он становится лучший кадром

(4)

Если у текущего кадра Liveness больше, чем Liveness у лучшего кадра данного плагина, то выполняется запрос в LUNA PLATFORM 3 на извлечение дескриптора из текущего кадра и проверку качества его дескриптора.

Если валидация в LUNA PLATFORM 3 не пройдена (качество дескриптора оказалось недостаточным), то процесс прекращается, текущий кадр далее не используется

(5)

Если валидация в LUNA PLATFORM 3 пройдена (качество дескриптора в норме), то текущий кадр становится лучшим кадром в данном плагине

Если плагин Bestshot включен:

(6)

Выполняется проверка, выбран ли лучший кадр в плагине Bestshot.

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

(7)

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

(8)

Если Liveness лучшего кадра из Bestshot ниже, то лучший кадр из данного плагина становится лучшим в плагине Bestshot

(9)

Если Liveness лучшего кадра из Bestshot выше, то этот кадр отправляется в LUNA PLATFORM 3 на извлечение дескриптора и проверку качества его дескриптора. Если лучший кадр из Bestshot не прошел валидацию в LUNA PLATFORM 3 (качество дескриптора оказалось недостаточным), то лучший кадр из данного плагина становится лучшим в плагине Bestshot

(10)

Если лучший кадр из Bestshot прошел валидацию в LUNA PLATFORM 3 (качество дескриптора в норме), то лучший кадр из Bestshot становится лучшим в данном плагине

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

 Общий принцип работы LUNA PASS API
Общий принцип работы LUNA PASS API

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

Шаг

Описание

(0)

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

(1)

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

(2)

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

(3)

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

(4)

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

(5)

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

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

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

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

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

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

(6)

LUNA PASS API проверяет включен ли плагин AggregateLiveness. Если плагин включен, то выполняется переход к следующему шагу

(7)

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

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

(8)

LUNA PASS API проверяет значение полученного агрегированного Liveness: агрегированный Liveness больше или равен значения LIVENESS_SCORE_THRESHOLD

Если значение полученного агрегированного Liveness ниже порога, то выполняется обработка следующего кадра (переход к шагу 1).

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

(9)

LUNA PASS API проверяет результат плагина Bestshot.

Если в плагине Bestshot не удалось выбрать успешный кадр, то выполняется обработка следующего кадра (переход к шагу 1)

(10)

Если в плагине Bestshot удалось выбрать успешный кадр, то LUNA PASS API отправляет в LUNA PASS UI именно этот кадр как успешный

(11)

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

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

(12)

LUNA PASS API выполняет проверку результата плагина Luna3DescriptorQualityCheck.

Если по результатам работы плагина Luna3DescriptorQualityCheck не удалось выбрать успешный кадр, то выполняется обработка следующего кадра (переход к шагу 1)

(13)

Если по результатам работы плагина Luna3DescriptorQualityCheck удалось выбрать успешный кадр, прошедший проверку качества дескриптора, то LUNA PASS API отправляет в LUNA PASS UI именно этот кадр как успешный

(14)

LUNA PASS API проверяет включен ли плагин Bestshot. Если плагин включен, то переход к шагу 9

(15)

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

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

(16)

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

(17)

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

(18)

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

(19)

Если в плагине Luna3DescriptorQualityCheck не выбран лучший кадр, то сессия закрывается без успешного кадра

(20)

Если плагин Luna3DescriptorQualityCheck выключен, то выполняется проверка включен ли плагин Bestshot

(21)

Если плагин Bestshot включен, то выполняется проверка наличия лучшего кадра в этом плагине

(22)

Если лучший кадр в плагине Bestshot не выбран, то сессия закрывается без успешного кадра

(23)

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

(24)

Если плагин Bestshot выключен, то отправляется первый кадр, прошедший все проверки