Принадлежность лица реальному человеку
В этом разделе вы узнаете, как интегрировать компонент Liveness Estimator в ваш проект C++ для оценки принадлежности лица реальному человеку ("живость").
2D RGB Оценка принадлежности лица реальному человеку (C++)
1. Создание Liveness Estimator
1.1. Для создания Liveness Estimator, выполните шаги 1-3, описанные на странице Создание процессинг-блока
и укажите значение "LIVENESS_ESTIMATOR"
для ключа "unit_type"
. При создании Liveness Estimator можно не указывать значение для ключа "model_path"
или передать пустую строку ""
.
configCtx["unit_type"] = "LIVENESS_ESTIMATOR";
// optional
configCtx["capturer_config"] = "common_capturer_uld_fda.xml";
configCtx["liveness_config"] = "liveness_2d_estimator_v3.xml";
1.2. Создание процессинг-блока Liveness Estimator:
pbio::ProcessingBlock livenessEstimator = 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. Вызовите livenessEstimator
и передайте Context-контейнер ioData
, содержащий исходное изображение:
livenessEstimator(ioData);
Для точной оценки требуется присутствие в кадре лица только одного человека, смотрящего в камеру, иначе будет возвращен статус "MULTIPLE_FACE_FRAMED".
Если на изображении обнаружено несколько лиц, будет обработано только одно из них (порядок не гарантируется).
Метод livenessEstimator()
добавит результат обработки сэмплов (изображений) в контейнер ioData
.
Формат выходных данных представляет собой список объектов, доступный по ключу "objects"
.
Каждый объект списка имеет ключ "class"
со значением "face"
.
По ключу "liveness"
доступен объект Context, содержащий 2 элемента:
- ключ
"value"
со значением типа string, которое соответствует одному из состояний pbio::Liveness2DEstimator::Liveness - ключ
"confidence"
со значением типа double в диапазоне [0,1]
/*
{
"objects": [{ "id": {"type": "long", "minimum": 0}
"class": "face",
"liveness": {
"value": {
"enum": ["REAL", "FAKE", "FACE_NOT_FULLY_FRAMED", "MULTIPLE_FACE_FRAMED",
"FACE_TURNED_RIGHT", "FACE_TURNED_LEFT", "FACE_TURNED_UP", "FACE_TURNED_DOWN",
"BAD_IMAGE_LIGHTING", "BAD_IMAGE_NOISE", "BAD_IMAGE_BLUR", "BAD_IMAGE_FLARE"]
}
confidence: {"type": "double", "minimum": 0, "maximum": 1}
}
}]
}
*/
3. GPU Acceleration
Процессинг-блок Liveness Estimator не поддерживает ускорение на GPU.