Skip to main content
Version: 3.19.2

Face Estimation

In this section you will learn how to integrate Emotion, Age, Gender and Mask estimators to your C++ or Python project.

Estimation Blocks (C++/Python)

Types of Estimation Blocks for the Key "unit_type"

  • EMOTION_ESTIMATOR
  • GENDER_ESTIMATOR
  • AGE_ESTIMATOR
  • MASK_ESTIMATOR

Dependencies on Other Blocks

  • Results of the detection unit operation.
  • Some blocks require face points obtained from the FACE_FITTER block.

1. Create an Estimation Block

1.1 To create an estimation block, follow steps 1-3 described in Creating a Processing Block and specify the value of the block you are interested in for the key "unit_type".

configCtx["unit_type"] = "EMOTION_ESTIMATOR";

1.2 Create an Estimation processing block:

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

2. Attribute Estimation

2.1 Follow steps 1-4 of Face, Body and Object Detection section

2.2 Call blockEstimator() and pass a Context-container ioData:

blockEstimator(ioData);

Calling blockEstimator() will add the result of processing samples (images) to the container ioData. Attributes corresponding to the estimation block are added to each object from the list of objects available by the key "objects".

3. Add Attributes

3.1 EMOTION_ESTIMATOR

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

3.2 AGE_ESTIMATOR

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

3.3 GENDER_ESTIMATOR

/*
[{
"gender": {
"enum": ["FEMALE", "MALE"]
}
}]
*/

3.4 MASK_ESTIMATOR

/*
[{
"has_medical_mask": {
"confidence": {"double", "minimum": 0, "maximum": 1}, // numerical value of confidence in the presence/absence of a mask on the face
"value": {"type": "boolean"} // true - masked face, false - unmasked face. The "value" parameter is determined by the value of the `confidence_threshold` key
}
}]
*/