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

Оценка лиц

Обзор

Для оценки лиц в Face SDK процессинг-блоки оценки.

Процессинг-блоки оценки лица

На текущий момент существуют следующие блоки оценки:

  • AGE_ESTIMATOR — блок для оценки возраста
  • GENDER_ESTIMATOR — блок для оценки пола
  • EMOTION_ESTIMATOR — блок для оценки эмоций человка
  • MASK_ESTIMATOR — блок для оценки наличия медецинской маски
  • EYE_OPENNESS_ESTIMATOR — блок для оценки открытости глаз

Модификации и версии

Модификация Версия Версия Face SDK Время детекции CPU (мс)* Время детекции GPU (мс)** Точность, лет(средняя погрешность)
light13.19 1 2 5.5
2 1 2 4.9
heavy13.19 1 2 4.7
2 1 2 3.5
* - CPU Intel Xeon E5-2683 v4 (1 ядро)
** - GPU (NVIDIA GTX 10xx серия)
примечание

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

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

  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]]
    }
    }]
    }

    Пример процессинг-блоков детекции лица и фиттера вы можете найти на странице Пример детекции лиц и определения антопометрических точек лица.

  2. После вызова процессинг-блока оценки каждому объекту из массива "objects" будут добавлены атрибуты соответсвующие этому блоку.

Спецификация выходного контейнера Context:

[{
"age": {"type": "long", "minimum": 0}
}]

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

Для оценки атрибутов лица на изображении выполните следующие действия:

  1. Создайте конфигурационный Context-контейнер и укажите значения "unit_type", "modification", "version", интересующего вас блока Пример создания процессинг-блока вы можете найти на странице Работа с процессинг-блоком. Перечень настраиваемых параметров процессинг-блоков

  2. Передайте Context-контейнер, полученный после работы процессинг-блоков детекции лица и фиттера.

  3. Вызовете процессинг-блок оценки.

  4. Получите результат работы процессинг-блока.

auto configCtx = service->createContext();
configCtx["unit_type"] = "AGE_ESTIMATOR";
pbio::ProcessingBlock blockEstimator = service->createProcessingBlock(configCtx);

//------------------
// создание процессинг-блока оценки лица и Context-контейнера с бинарным изображением
//------------------

faceDetector(ioData);
faceFitter(ioData);
blockEstimator(ioData);

long age = ioData["objects"][0]["age"].getLong();