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

Оценка лиц

В этом разделе вы узнаете, как интегрировать компоненты для оценки эмоций и пола в ваш проект C++.

Оценка эмоций (C++)

Требования

  • Операционная система Windows x86 64-bit или Linux x86 64-bit.
  • Установлен пакет Face SDK windows_x86_64 или linux_x86_64 (см. Начало работы).

1. Создание Emotion Estimator

1.1. Для создания Emotion Estimator, выполните шаги 1-3, описанные на странице Создание процессинг-блока и укажите следующие значения:

  • "EMOTION_ESTIMATOR" для ключа "unit_type";
  • путь до файла модели Emotion Estimator для ключа "model_path".
configCtx["unit_type"] = "EMOTION_ESTIMATOR";

// путь по умолчанию для файла модели Emotion Estimator - "share/faceanalysis/emotion.enc" в корневой директории Face SDK
configCtx["model_path"] = "share/faceanalysis/emotion.enc";

1.2. Создайте процессинг-блок Emotion Estimator:

pbio::ProcessingBlock emotionEstimator = service->createProcessingBlock(configCtx);

2. Оценка эмоций

2.1. Создайте Context-контейнер ioData для данных ввода-вывода, используя метод createContext():

auto ioData = service->createContext();

2.2. Создайте Context-контейнер imgCtx с RGB-изображением, выполнив шаги, описанные на странице Создание контейнера Context c RGB-изображением.

2.3. Поместите исходное изображение в контейнер данных ввода-вывода:

ioData["image"] = imgCtx;

2.4. Вызовите emotionEstimator() и передайте Context-контейнер ioData, содержащий исходное изображение:

emotionsEstimator(ioData);

Метод emotionsEstimator() добавит результат обработки сэмплов (изображений) в контейнер ioData. Формат выходных данных представляет собой список объектов, доступный по ключу "objects". Каждый объект списка имеет ключ "class" со значением "face".

/*
{
"objects": [{ "id": {"type": "long", "minimum": 0}
"class": "face",
"emotions" : [
"emotion": {
"enum": ["ANGRY", "DISGUSTED", "SCARED", "HAPPY", "NEUTRAL", "SAD", "SURPRISED"]
}
"confidence": {"type": "double", "minimum": 0, "maximum": 1}
]
}]
}
*/

3. Ускорение на GPU

Emotion Estimator может быть использован с ускорением на GPU (CUDA). Более подробная информация в разделе Ускорение на GPU.

Оценка возраста (C++)

Требования

  • Операционная система Windows x86 64-bit или Linux x86 64-bit.
  • Установленный Face SDK пакет windows_x86_64 или linux_x86_64 (см. Начало работы).

1. Создание Age Estimator

1.1. Для создания Age Estimator, выполните шаги 1-3 описанные в Создание процессинг-блока и укажите следующие значения:

  • "AGE_ESTIMATOR" для ключа "unit_type";
  • путь до файла модели Age Estimator для ключа "model_path".
configCtx["unit_type"] = "AGE_ESTIMATOR";

// путь по умолчанию к файлу модели Age Estimator — "share/faceanalysis" в корневом каталоге Face SDK. Доступны две версии — age_heavy и age_light, отличающиеся размером, качеством и скоростью вывода.
configCtx["model_path"] = "share/faceanalysis/age_heavy.enc";

1.2. Создание процессинг-блока Age Estimator:

pbio::ProcessingBlock ageEstimator = service->createProcessingBlock(configCtx);

2. Оценка возраста

2.1. Создайте контейнер Context ioData для ввода/вывода данных, используя метод createContext():

auto ioData = service->createContext();

2.2. Создайте Context-контейнер imgCtx с RGB-изображением, следуя шагам, описанным на Создание контейнера Context c RGB-изображением.

2.3. Поместите входное изображение в контейнер данных ввода-вывода:

ioData["image"] = imgCtx;

2.4. Вызовите ageEstimator() и передайте контейнер ioData с исходным изображением:

ageEstimator(ioData);

Результат вызова ageEstimator() будет помещен в контейнерioData.

/*
{
"objects": [{ "id": {"type": "long", "minimum": 0}
"class": "face",
"age": {"type": "long", "minimum": 0}
}]
}
*/

3. Ускорение на GPU

Age Estimator может быть использован с ускорением на GPU (CUDA). Более подробная информация в разделе Ускорение на GPU.

Оценка пола (C++)

Требования

  • Операционная система Windows x86 64-bit или Linux x86 64-bit.
  • Установлен пакет Face SDK windows_x86_64 или linux_x86_64 (см. Начало работы).

1. Создание Gender Estimator

1.1. Для создания Gender Estimator, выполните шаги 1-3, описанные на странице Создание процессинг-блока и укажите следующие значения:

  • "GENDER_ESTIMATOR" для ключа "unit_type";
  • путь до файла модели Gender Estimator для ключа "model_path".
configCtx["unit_type"] = "GENDER_ESTIMATOR";

// путь по умолчанию к файлу модели Gender Estimator — «share/faceanalysis/» в корневом каталоге Face SDK. Доступны две версии — gender_heavy и gender_light, различающиеся по размеру, качеству и скорости вывода.
configCtx["model_path"] = "share/faceanalysis/gender_heavy.enc";

1.2. Создайте процессинг-блок Gender Estimator:

pbio::ProcessingBlock genderEstimator = service->createProcessingBlock(configCtx);

2. Оценка пола

2.1. Создайте Context-контейнер ioData для данных ввода-вывода, используя метод createContext():

auto ioData = service->createContext();

2.2. Создайте Context-контейнер imgCtx с RGB-изображением, выполнив шаги, описанные на странице Создание контейнера Context c RGB-изображением.

2.3. Поместите исходное изображение в контейнер данных ввода-вывода:

ioData["image"] = imgCtx;

2.4. Вызовите genderEstimator и передайте Context-контейнер ioData, содержащий исходное изображение:

genderEstimator(ioData);

Метод genderEstimator() добавит результат обработки сэмплов (изображений) в контейнер ioData.

/*
{
"objects": [{ "id": {"type": "long", "minimum": 0}
"class": "face",
"gender": {
"enum": ["FEMALE", "MALE"]
}
}]
}
*/

3. Ускорение на GPU

Gender Estimator может быть использован с ускорением на GPU (CUDA). Более подробная информация в разделе Ускорение на GPU.

Детекция маски (C++)

Требования

  • Операционная система Windows x86 64-bit или Linux x86 64-bit.
  • Установлен пакет Face SDK windows_x86_64 или linux_x86_64 (см. Начало работы).

1. Создание Mask Estimator

1.1. Для создания Mask Estimator, выполните шаги 1-3 описанные в Создание процессинг-блока и укажите следующие значения:

  • "MASK_ESTIMATOR" для ключа "unit_type";
  • путь до файла модели Mask Estimator для ключа "model_path".
configCtx["unit_type"] = "MASK_ESTIMATOR";

// путь по умолчанию к файлу модели Mask Estimator — "share/faceattributes/mask.enc" в корневом каталоге Face SDK.
configCtx["model_path"] = "share/faceattributes/mask.enc";

1.2. Создайте процессинг-блок Mask Estimator:

pbio::ProcessingBlock maskEstimator = service->createProcessingBlock(configCtx);

2. Детекция маски

2.1. Создайте контейнер Context ioData для ввода/вывода данных, используя метод createContext():

auto ioData = service->createContext();

2.2. Создайте Context-контейнер imgCtx с RGB-изображением, следуя шагам, описанным на Создание контейнера Context c RGB-изображением.

2.3. Поместите входное изображение в контейнер данных ввода-вывода:

ioData["image"] = imgCtx;

2.4. Вызовите maskEstimator() и передайте контейнер ioData с исходным изображением:

maskEstimator(ioData);

Результат вызова maskEstimator() будет добавлен в контейнер ioData:

/*
{
"objects": [{ "id": {"type": "long", "minimum": 0}
"class": "face",
"mask": {
"value": {"type": "boolean"},
"confidence": {"double", "minimum": 0, "maximum": 1}
}
}]
}
*/

3. GPU Acceleration

Age Estimator может быть использован с ускорением на GPU (CUDA). Более подробная информация в разделе Ускорение на GPU.