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

Блок проверки качества фото

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

Блок оценки качества фотографии лица (C++)

Требования

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

1. Создание Quality Assessment Estimator

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

  • "QUALITY_ASSESSMENT_ESTIMATOR" для ключа "unit_type";
  • При создании блока оценки качества вы можете не указывать значение ключа "model_path" или передать пустую строку "".
configCtx["unit_type"] = "QUALITY_ASSESMENT_ESTIMATOR";
configCtx["config_name"] = "quality_assessment.xml";

// необязательно, значение по умолчанию ".." для примеров в <sdk_dir>/bin
configCtx["sdk_path"] = "..";

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

pbio::ProcessingBlock qualityAssessmentEstimator = 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. Вызовите qualityAssessmentEstimator() и передайте Context-контейнер ioData, содержащий исходное изображение:

qualityAssessmentEstimator(ioData);

Для точной оценки требуется только одно лицо человека в кадре, смотрящего в камеру, иначе общий балл будет низким, поскольку алгоритм учитывает относительный размер, положение и направленность головы.

Если захвачено несколько лиц, каждое из них будет обработано независимо.

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

По ключам "quality":"qaa" расположен контекст с полным набором оценок.

  • Ключ "totalScore" содержит общую оценку типа long в диапазоне [0,100]
/*
{
"objects": [{ "id": {"type": "long", "minimum": 0}
"class": "face",
"confidence": {"type": "double", "minimum": 0, "maximum": 1},
"bbox": {x1, y1, x2, y2},
"quality": {
"qaa": {
"totalScore": {"type": "long", "minimum": 0, "maximum": 100},
"isSharp": {"type": "boolean"},
"sharpnessScore": {"type": "long", "minimum": 0, "maximum": 100},
"isEvenlyIlluminated": {"type": "boolean"},
"illuminationScore": {"type": "long", "minimum": 0, "maximum": 100},
"noFlare": {"type": "boolean"},
"isLeftEyeOpened": {"type": "boolean"},
"leftEyeOpennessScore": {"type": "long", "minimum": 0, "maximum": 100},
"isRightEyeOpened": {"type": "boolean"},
"rightEyeOpennessScore": {"type": "long", "minimum": 0, "maximum": 100},
"isRotationAcceptable": {"type": "boolean"},
"maxRotationDeviation": {"type": "long"},
"notMasked": {"type": "boolean"},
"notMaskedScore": {"type": "long", "minimum": 0, "maximum": 100},
"isNeutralEmotion": {"type": "boolean"},
"neutralEmotionScore": {"type": "long", "minimum": 0, "maximum": 100},
"isEyesDistanceAcceptable": {"type": "boolean"},
"eyesDistance": {"type": "long", "minimum": 0}
"isMarginsAcceptable": {"type": "boolean"},
"marginOuterDeviation": {"type": "long", "minimum": 0}
"marginInnerDeviation": {"type": "long", "minimum": 0}
"isNotNoisy": {"type": "boolean"},
"noiseScore": {"type": "long", "minimum": 0, "maximum": 100},
"watermarkScore": {"type": "long", "minimum": 0},
"hasWatermark": {"type": "boolean"},
"dynamicRangeScore": {"type": "long", "minimum": 0},
"isDynamicRangeAcceptable": {"type": "boolean"}
}
}
}]
}
*/

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

Блок оценки качества не поддерживает ускорение графического процессора, но задействованные модули, перечисленные в конфигурационном файле, могут иметь собственные возможности ускорения.