Перейти к основному содержимому
Версия: 3.20.2

Распознавание лиц

Обзор

Face SDK позволяет выполнять следующие операции сравнения биометрических шаблонов лиц:

  • Верификация (1:1) — сравнение двух шаблонов лиц на принадлежность одному и тому же человеку (сравнение двух лиц).
  • Идентификация (1:N) — сравнение одного биометрического шаблона лица с другими шаблонами лиц (поиск лица по базе лиц).

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

Процессинг-блоки распознавания лиц

Для распознавания лиц используются следующие процессинг-блоки:

  • FACE_TEMPLATE_EXTRACTOR — используются для построения биометрических шаблонов лиц.
  • VERIFICATION_MODULE — используется для сравнения двух лиц.
  • MATCHER_MODULE — используются для поиска лиц по базе.
  • TEMPLATE_INDEX — нужен для создания базы биометрических шаблонов лиц для поиска в модуле MATCHER_MODULE.

Модификации и версии процессинг-блоков распознавания лиц

Модификация процессинг-блока FACE_TEMPLATE_EXTRACTOR определяет скорость генерации шаблона и точность распознавания. Чем медленнее работа модуля, тем выше его точность распознавания. На данный момент существуют следующие модификации:

ВерсияСоздание шаблона (мс)Размер шаблона (байты)
1 647 296
примечание

Модификация по умолчанию - "1000".

Для процессинг-блоков VERIFICATION_MODULE, MATCHER_MODULE, TEMPLATE_INDEX модификация и версия определяют тип шаблона, с которым данные модули будут работать.

Спецификация процессинг-блоков распознавания

Перечень настраиваемых параметров процессинг-блоков

Face template extractor

  1. Входной контейнер Context должен содержать бинарное изображение и массив объектов, полученных после работы процессинг-блоков детекции лица и фиттера:
Нажмите, чтобы развернуть спецификацию входного контейнера Context
{
"image" : {
"format": "NDARRAY",
"blob": "data pointer",
"dtype": "uint8_t",
"shape": [height, width, channels]
},
"objects": [{
"id": {"type": "long", "minimum": 0},
"class": "face",
"confidence": {"double", "minimum": 0, "maximum": 1},
"bbox": [x1, y2, x2, y2]
"keypoints": {
"left_eye_brow_left": {"proj" : [x, y]},
"left_eye_brow_up": {"proj" : [x, y]},
"left_eye_brow_right": {"proj" : [x, y]},
"right_eye_brow_left": {"proj" : [x, y]},
"right_eye_brow_up": {"proj" : [x, y]},
"right_eye_brow_right": {"proj" : [x, y]},
"left_eye_left": {"proj" : [x, y]},
"left_eye": {"proj" : [x, y]},
"left_eye_right": {"proj" : [x, y]},
"right_eye_left": {"proj" : [x, y]},
"right_eye": {"proj" : [x, y]},
"right_eye_right": {"proj" : [x, y]},
"left_ear_bottom": {"proj" : [x, y]},
"nose_left": {"proj" : [x, y]},
"nose": {"proj" : [x, y]},
"nose_right": {"proj" : [x, y]},
"right_ear_bottom": {"proj" : [x, y]},
"mouth_left": {"proj" : [x, y]},
"mouth": {"proj" : [x, y]},
"mouth_right": {"proj" : [x, y]},
"chin": {"proj" : [x, y]},
"points": ["proj": [x, y]]
}
}]
}
  1. После вызова процессинг-блока оценки, каждому объекту из массива "objects" в поле "template"будет добавлен биометрический шаблон в поле соответствующее данной модификации. Биометрический шаблон лица будет представлен в бинарном виде.
Нажмите, чтобы развернуть спецификацию выходного контейнера Context
[{
"keypoints": {},
"template": {
"face_template_extractor_{modification}_{version}": {
"format": "NDARRAY",
"blob": "data pointer",
"dtype": "uint8_t",
"shape": [size]
}
}
}]

Verification module

  1. Входной контейнер Context должен содержать два биометрических шаблона записанные в поля "template1" и "templatу2". Тип шаблона должен соответствовать модификации процессинг-блока.
Нажмите, чтобы развернуть спецификацию входного контейнера Context
{
"template1" : {
"face_template_extractor_{modification}_{version}": {
"format": "NDARRAY",
"blob": "data pointer",
"dtype": "uint8_t",
"shape": [size]
}
},
"template2" : {
"face_template_extractor_{modification}_{version}": {
"format": "NDARRAY",
"blob": "data pointer",
"dtype": "uint8_t",
"shape": [size]
}
}
}
  1. После вызова процессинг-блока верификации результат будет помещён в "result".
Нажмите, чтобы развернуть спецификацию выходного контейнера Context
[{
"template2": {},
"result": {
"distance": {"long", "minimum": 0},
"score": {"double", "minimum": 0, "maximum": 1},
"far": {"double", "minimum": 0, "maximum": 1},
"frr": {"double", "minimum": 0, "maximum": 1},
}
}]

Template index module

  1. Входной контейнер Context должен содержать массив биометрических шаблонов записанных в поле `"templates".
Нажмите, чтобы развернуть спецификацию входного контейнера Context
{
"templates" : [
"face_template_extractor_{modification}_{version}": {
"format": "NDARRAY",
"blob": "data pointer",
"dtype": "uint8_t",
"shape": [size]
},
]
}
  1. После вызова процессинг-блока создания индекса, полученный индекс будет помещён в поле "template_index".
Нажмите, чтобы развернуть спецификацию выходного контейнера Context
[{
"templates": {},
"template_index": {"Non-serializable"}
}]

Matcher module

  1. Входной контейнер Context должен содержать массив "template_index", полученный после работы модуля "TEMPLATE_INDEX". И набор искомых биометрических шаблонов помещённых в массив "queries"
Нажмите, чтобы развернуть спецификацию входного контейнера Context
{
"queries": [
"template" : {
"face_template_extractor_{modification}_{version}": {
"format": "NDARRAY",
"blob": "data pointer",
"dtype": "uint8_t",
"shape": [size]
},
}
]
"template_index": {"Non-serializable"}
}
  1. После вызова процессинг-блока верификации результат будет помещён в массив "results".
Нажмите, чтобы развернуть спецификацию выходного контейнера Context
[{
"template_index": {"Non-serializable"},
"result": [{
"distance": {"long", "minimum": 0},
"score": {"double", "minimum": 0, "maximum": 1},
"far": {"double", "minimum": 0, "maximum": 1},
"frr": {"double", "minimum": 0, "maximum": 1},
}]
}]

Результаты распознавания

  • distance – расстояние между сравниваемыми векторами шаблонов. Чем меньше значение, тем выше уверенность в корректном распознавании.
  • far – вероятность ошибочных подтверждений, когда система принимает изображения разных людей за изображение одного и того же человека.
  • frr – вероятность ошибочных отказов, когда система принимает два изображения одного и того же человека за изображения разных людей.
  • score – степень схожести лиц от 0 (0%) до 1 (100%). Высокая степень схожести означает, что два биометрических шаблона принадлежат одному и тому же человеку.