Оценка Liveness
2D RGB оценка Liveness
Модификации процессинг-блока оценки Liveness
2d
— оценка принадлежности лица реальному человеку по изображению (предыдущая модификация "v4").2d_additional_check
— оценка принадлежности лица реальному человеку по изображению с дополнительными проверками.Модификация Версия Время детекции CPU (мс)* BPCER APCER 2d_additional_check 1 41 0.19 0.27
Параметры конфигурации
- 2d_additional_check
- 2d
"capturer_config_name"
— конфигурационный файл детектора. По умолчанию используется"common_capturer_uld_fda.xml"
(Перечень конфигурационных файлов объекта Capturer)."config_name"
— конфигурационный файл объекта оценки Liveness. По умолчанию используется"liveness_2d_estimator_v3.xml"
(Класс Liveness2DEstimator).
"confidence_threshold"
— порог, по которому определяется параметр"value"
(обозначает вердикт: REAL или FAKE). Значение по умолчанию — 0.8.
Перечень настраиваемых параметров процессинг-блоков
Спецификация процессинг-блока
- 2d_additional_check
- 2d
- Входной Context-контейнер должен содержать изображение в бинарном формате.
{
"image" : {
"format": "NDARRAY",
"blob": "data pointer",
"dtype": "uint8_t",
"shape": [height, width, channels]
}
}
- Входной 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]]
}
}]
}
- 2d_additional_check
- 2d
- После вызова процессинг-блока добавлен массив объектов, содержащий один объект. В объекте будут находиться координаты ограничивающего прямоугольника (bbox), уверенность детекции, класс и поле
liveness
. По ключу"liveness"
доступен объект Context, содержащий 3 элемента:
- Ключ
"confidence"
со значением типа double в диапазоне [0,1] - Ключ
"value"
со значением типа string, которое соответствует одному из двух состояний: "REAL" или "FAKE" - Ключ
"info"
со значением типа string, которое соответствует одному из состояний pbio::Liveness2DEstimator::Liveness
Спецификация выходного Context-контейнера:
{
"image" : {},
"objects": [{
"id": {"type": "long", "minimum": 0},
"class": "face",
"confidence": {"double", "minimum": 0, "maximum": 1},
"bbox": [x1, y2, x2, y2],
"liveness": {
"confidence": {"type": "double", "minimum": 0, "maximum": 1},
"info": {
"enum": [
"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", "NOT_COMPUTED"
]
},
"value": {"enum": ["REAL", "FAKE"]}
}
}]
}
- После вызова процессинг-блока каждому объекту будет добавлено поле
liveness
. По ключу"liveness"
доступен объект Context, содержащий 2 элемента:
- Ключ
"confidence"
со значением типа double в диапазоне [0,1] - Ключ
"value"
со значением типа string, которое соответствует одному из двух состояний: "REAL" или "FAKE"
Спецификация выходного Context-контейнера:
{
"objects": [{
"liveness": {
"confidence": {"type": "double", "minimum": 0, "maximum": 1},
"value": {"enum": ["REAL", "FAKE"]}
}
}]
}
Пример работы процессинг-блока
Для оценки принадлежности лица реальному человеку на изображении выполните следующие действия:
- Создайте конфигурационный Context-контейнер, укажите значения
"unit_type"
,"modification"
,"version"
и другие параметры процессинг-блока. Пример создания процессинг-блока вы можете найти на странице.
- C++
- Python
- Flutter
auto configCtx = service->createContext();
configCtx["unit_type"] = "LIVENESS_ESTIMATOR";
configCtx["modification"] = "2d";
pbio::ProcessingBlock blockLiveness = service->createProcessingBlock(configCtx);
configCtx = {
"unit_type": "LIVENESS_ESTIMATOR",
"modification": "2d"
}
blockLiveness = service.create_processing_block(configCtx)
ProcessingBlock blockLiveness = service.createProcessingBlock({
"unit_type": "LIVENESS_ESTIMATOR",
"modification": "2d"
});
- Передайте входной Context-контейнер, соответствующий модификации блока, в метод
"blockLiveness()"
:"2d"
— Context-контейнер, полученный после работы процессинг-блоков детекции лица и фиттера."2d_additional_check"
— Context-контейнер, содежащий изображение в бинарном формате.
- C++
- Python
- Flutter
//------------------
// создание процессинг-блока и контейнера Context с бинарным изображением
//------------------
faceDetector(ioData)
faceFitter(ioData)
blockLiveness(ioData);
#------------------
# создание процессинг-блока и контейнера Context с бинарным изображением
#------------------
faceDetector(ioData)
faceFitter(ioData)
blockLiveness(ioData)
//------------------
// создание процессинг-блока и контейнера Context с бинарным изображением
//------------------
Context ioData = faceDetector.process(ioData);
Context ioData = faceFitter.process(ioData);
Context ioData = blockLiveness.process(ioData);