Перейти к основному содержимому

# Объект Validations

Validations — это объект, содержащий результаты проверок, выполненных для попытки. Объект возвращается в ответ на запросы Validation, Applicants и т.д. по ключу validations.

Validations содержит несколько блоков проверок.

### Liveness​

Различные проверки Liveness.

Объект содержит поле verdict, которое формируется из verdict-s всех подблоков путем конъюнкции. Поле вердикт может быть нулевым, если не проводились проверки Liveness.

Данные подблоков хранятся в списке под ключом details. Каждый подблок хранит следующие поля:

- verdict - результат верификации.
- score - результат верификации.
- name - имя верификации.
- additionalInfo - дополнительная информация о проверке.

примечание

Если проверка отключена, то она будет отсутствовать в списке details.
Если проверка должна была выполниться, но не выполнилась, то поле подблока verdict будет иметь значение null

Возможны следующие подблоки:

- FaceLiveness - проверка живости лица.
- DeepFake - проверка на наличие признаков использования технологии DeepFake. (Экспериментальная функциональность)

При провале проверки FaceLiveness в поле additionalInfo будет записан наиболее вероятный тип атаки в следующем формате:

    "additionalInfo": {
      "attackType": "3d_mask",
      "attackTypeConfidence": 0.99899864
    }

где attackType - тип атаки, а attackTypeConfidence - степень уверенности.

Возможные типы атак:

1. Атаки с использованием экранов (Replay-атаки)

   - Повторная передача (replay): Камере демонстрируется видео или изображение лица, воспроизводимое на экране другого устройства (смартфона, планшета, монитора).

2. Атаки с использованием плоских изображений

   - Фотография (photo): Камере предъявляется обычная распечатанная фотография лица, не вырезанная по контуру.
   - Вырезанное изображение (regions): Камере демонстрируется фотография, вырезанная по контуру головы или лица (возможно, с небольшим зазором), чтобы имитировать объем головы живого человека.
   - 2D-маска (2d_mask): Камере предъявляется вырезанное по контуру головы изображение, которое физически «надето» на лицо атакующего (например, приклеено или придержано руками), чтобы добавить реалистичности за счет движения и перспективы.

3. Атаки с использованием объемных объектов

   - 3D-маска (3d_mask): Камере демонстрируется объемная маска, воспроизводящая черты лица. Это может быть:
     - Реалистичная маска из силикона или латекса, надетая на лицо.
     - Бумажная или картонная маска, собранная из полигонов для создания объема.

### Качество​

Различные проверки качества.

Объект содержит поле verdict, которое формируется из verdict-s всех подблоков путем конъюнкции. Поле вердикт может быть нулевым, если не проводились проверки качества.

Данные подблоков хранятся в списке под ключом details. Каждый подблок хранит следующие поля:

- verdict — результат верификации.
- score — результат верификации.
- name — имя верификации.

примечание

Если проверка отключена, то она будет отсутствовать в списке details.
Если проверка должна была выполниться, но не выполнилась, то поле подблока verdict будет иметь значение null

Возможны следующие подблоки:

- FaceQuality - проверка качества изображения лица.

При провале проверки FaceQuality в поле additionalInfo будут перечислены проваленные проверки и их числовые выражения в следующем формате:

    "additionalInfo": {
      "failReasons": [
        {
            "check": "sharpness",
            "result": "0.120000"
        },
        {
            "check": "gray_scale",
            "result": "0"
        },
        {
            "check": "eye_distance",
            "result": "12.621400"
        }
      ]
    }

где failReasons - это список, в котором перечислены все сработавшие проверки.

Каждый элемент списка является объектом, в котором check - это название проверки, а result - численное выражение проверки.

Список возможных проверок:

- noise: Изображение слишком шумное.
- dynamic_range: Изображение имеет слишком высокий динамический диапазон.
- sharpness: Изображение слишком резкое.
- pitch: Лицо на изображении имеет большой угол наклона (pitch).
- yaw: Лицо на изображении имеет большой угол поворота (yaw).
- face_overflow: Лицо выходит за границу изображения.
- face_overflow_score_v: Величина выхода изображения за границу по вертикали.
- face_overflow_score_h: Величина выхода изображения за границу по горизонтали.
- eye_distance: Лицо на изображении слишком мало.
- glasses: На лице обнаружены солнцезащитные очки.
- face_size_on_image: Размер лица на изображении слишком мал относительно самого изображения.
- gray_scale: Изображение в градациях серого.

### Сравнение​

Сравнение лиц и поиск по базе.

Объект содержит поле verdict, которое формируется из verdict-s всех подблоков путем конъюнкции. Поле вердикт может быть нулевым, если не проводились сравнения.

Данные подблоков хранятся в списке под ключом details. Каждый подблок хранит следующие поля:

- verdict — результат верификации.
- score — результат верификации.
- name — имя верификации.

примечание

Если проверка отключена, то она будет отсутствовать в списке details.
Если проверка должна была выполниться, но не выполнилась, то поле подблока verdict будет иметь значение null

Возможны следующие подблоки:

- FaceMatching - поиск лица по базе или сравнение с регистрационным фото.

### MotionControl​

Проверка результатов видео контроля движений.

Объект содержит поле verdict, которое может принимать следующие значения:

- true — все действия были выполнены правильно.
- false — одно из действий было выполнено неправильно.
- null — попытка не содержит данных об контроле движений.

Поле motionControlInfo содержит данные о результатах контроля движения.

Данные представляют собой список, каждый элемент которого является объектом со следующими полями:

- pattern — имя выполняемого паттерна (up, right, left, closer, farther).
- result - правильность выполнения паттерна пользователем.

### Пример объекта validations:​

    {
      "liveness": {
        "verdict": true,
        "details": [
          {
            "name": "FaceLiveness",
            "verdict": true,
            "score": 0.99,
            "additionalInfo": {
              "attackType": "3d_mask",
              "attackTypeConfidence": 0.99899864
            }
          },
          {
            "name": "DeepFake",
            "verdict": false,
            "score": 0.001,
            "additionalInfo": null
          }
        ]
      },
      "quality": {
        "verdict": true,
        "details": [
          {
            "name": "FaceQuality",
            "verdict": false,
            "score": null,
            "additionalInfo": {
              "failReasons": [
                {
                    "check": "sharpness",
                    "result": "0.120000"
                },
                {
                    "check": "gray_scale",
                    "result": "0"
                },
                {
                    "check": "eye_distance",
                    "result": "12.621400"
                }
              ]
            }
          }
        ]
      },
      "matching": {
        "verdict": true,
        "details": [
          {
            "name": "FaceMatching",
            "verdict": true,
            "score": 0.0,
            "additionalInfo": null
          }
        ]
      },
      "motionControl": {
        "verdict": false,
        "motionControlInfo": [
          {
              "pattern": "up",
              "result": true
          },
          {
              "pattern": "left",
              "result": false
          }
        ]
      }
    }