Распознавание лиц
Обзор
Face SDK позволяет выполнять следующие операции сравнения биометрических шаблонов лиц:
- Верификация (1:1) — сравнение двух шаблонов лиц на принадлежность одному и тому же человеку (сравнение двух лиц).
- Идентификация (1:N) — сравнение одного биометрического шаблона лица с другими шаблонами лиц (поиск лица по базе лиц).
Результатом распознавания является оценка сходства между сравниваемыми шаблонами.
Процессинг-блоки распознавания лиц
Для распознавания лиц используются следующие процессинг-блоки:
FACE_TEMPLATE_EXTRACTOR
— используются для построения биометрических шаблонов лиц.VERIFICATION_MODULE
— используется для сравнения двух лиц.MATCHER_MODULE
— используются для поиска лиц по базе.TEMPLATE_INDEX
— нужен для создания базы биометрических шаблонов лиц для поиска в модуле MATCHER_MODULE.
Модификации и версии процессинг-блоков распознавания лиц
Модификация процессинг-блока FACE_TEMPLATE_EXTRACTOR
определяет скорость генерации шаблона и точность распознавания. Чем медленнее работа модуля, тем выше его точность распознавания.
На данный момент существуют следующие модификации:
- 1000
- 100
- 50
- 30
Версия | Создание шаблона (мс) | Размер шаблона (байты) |
---|---|---|
1 | 647 | 296 |
Версия | Создание шаблона (мс) | Размер шаблона (байты) |
---|---|---|
1 | 79 | 280 |
Версия | Создание шаблона (мс) | Размер шаблона (байты) |
---|---|---|
1 | 37 | 288 |
Версия | Создание шаблона (мс) | Размер шаблона (байты) |
---|---|---|
1 | 23 | 280 |
примечание
Модификация по умолчанию - "1000"
.
Для процессинг-блоков VERIFICATION_MODULE
, MATCHER_MODULE
, TEMPLATE_INDEX
модификация и версия определяют тип шаблона, с которым данные модули будут работать.
Спецификация процессинг-блоков распознавания
Перечень настраиваемых параметров процессинг-блоков
Face template extractor
- Входной контейнер 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]]
}
}]
}
- После вызова процессинг-блока оценки, каждому объекту из массива
"objects"
в поле"template"
будет добавлен биометрический шаблон в поле соответствующее данной модификации. Биометрический шаблон лица будет представлен в бинарном виде.
Нажмите, чтобы развернуть спецификацию выходного контейнера Context
[{
"keypoints": {},
"template": {
"face_template_extractor_{modification}_{version}": {
"format": "NDARRAY",
"blob": "data pointer",
"dtype": "uint8_t",
"shape": [size]
}
}
}]
Verification module
- Входной контейнер 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]
}
}
}
- После вызова процессинг-блока верификации результат будет помещён в
"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
- Входной контейнер Context должен содержать массив биометрических шаблонов записанных в поле `"templates".
Нажмите, чтобы развернуть спецификацию входного контейнера Context
{
"templates" : [
"face_template_extractor_{modification}_{version}": {
"format": "NDARRAY",
"blob": "data pointer",
"dtype": "uint8_t",
"shape": [size]
},
]
}
- После вызова процессинг-блока создания индекса, полученный индекс будет помещён в поле
"template_index"
.
Нажмите, чтобы развернуть спецификацию выходного контейнера Context
[{
"templates": {},
"template_index": {"Non-serializable"}
}]
Matcher module
- Входной контейнер 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"}
}
- После вызова процессинг-блока верификации результат будет помещён в массив
"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%). Высокая степень схожести означает, что два биометрических шаблона принадлежат одному и тому же человеку.