Skip to content

Settings#

System settings#

Parameter Description Type Default value
verboseLogging Level of log verbosity. 1 - Errors, 2 - Warnings, 3 - Info, 4 - Debug. "Value::Int1" 2

Verbosity level sets the upper limit of what type of messages may be printed out by the Luna SDK. For example, if user set verboseLogging to 3, it means that Errors, Warnings and Info messages will be printed out to the console. Verbose level of 0 indicates that there are no logging messages printed out at all.

Example:

<section name="system">
    <param name="verboseLogging" type="Value::Int1" x="0" />
</section>

Descriptor factory settings#

Descriptor factory is a facility that creates descriptor extractors and matchers. Both of them utilize algorithms that require a number of coefficients ("weights") to operate properly.

Parameter Description Type Default value
model CNN face descriptor version. Value::Int1 59
Possible values: 59
useMobileNet MobileNet is faster but less accurate. Possible values: 0 - don't use mobile net version, 1 - use mobile net version. Value::Int1 1
distance Distance between descriptors on matching. L1 faster, L2 make better precision. Possible values: L1, L2. Model 59 supports just L2 distance. Value::String L2
descriptorCount WarningLevel Threshold, that limits the ratio of created descriptors to the amount, defined by your license. When the threshold is exceeded, FSDK prints the warning. Value::Float1 0.9

Example:

<section name="DescriptorFactory::Settings">
    <param name="model" type="Value::Int1" x="59" />
    <param name="useMobileNet" type="Value::Int1" x="1" />
    <param name="distance" type="Value::String" text="L2" />
    <param name="descriptorCountWarningLevel" type="Value::Float1" x="0.9" />
</section>

FaceDetV2 detector settings#

Parameter Description Type Default value
FirstThreshold 1-st threshold in [0..1] range. "Value::Float1" 0.6
SecondThreshold 2-nd threshold in [0..1] range. "Value::Float1" 0.7
ThirdThreshold 3-d threshold in [0..1] range. "Value::Float1" 0.6
minFaceSize Minimum face size in pixels. "Value::Int1" 50
strictlyMinSize Enforce Minimum face size. "Value::Int1" 0
scaleFactor Image scale factor. "Value::Float1" 0.7
paddings Extension of rectangle. Do not change. "Value::Float4" see below
redetectTolerance Redetection threshold. "Value::Int1" 0
useLNet Whether to use LNet or not. "Value::Int" 1

minFaceSize and scaleFactor accelerate face detection at the cost of lower recall for smaller faces.

If the strictlyMinSize parameter is enabled (the value is equal to 1), all detections with a size (max of width/height ) smaller than minFaceSize will be excluded from the final result.

Example:

<section name="FaceDetV2::Settings">
        <param name="FirstThreshold" type="Value::Float1" x="0.51385"/>
        <param name="SecondThreshold" type="Value::Float1" x="0.248"/>
        <param name="ThirdThreshold" type="Value::Float1" x="0.76"/>
        <param name="minFaceSize" type="Value::Int1" x="50" />
        <param name="strictlyMinSize" type="Value::Int1" x="0" />
        <param name="scaleFactor" type="Value::Float1" x="0.7" />
        <param name="paddings" type="Value::Float4" x="-0.20099958" y="0.10210337" z="0.20363552" w="0.08490226" />
        <param name="redetectTolerance" type="Value::Int1" x="0" />
        <param name="useLNet" type="Value::Int1" x="0" />
</section>

LNet#

This group of parameters is non-public. Do not change any of the parameters.

HeadPoseEstimator settings#

In mobile mode, HeadPose estimator is able to compute head pose angles using raw input image data.

EyeEstimator settings#

This estimator aims to determine:

  • Eye state: Open, Closed, Occluded;
  • Precise eye iris location as an array of landmarks;
  • Precise eyelid location as an array of landmarks.

To determine more exact eye state additional auxiliary model eye_status_estimation_*.plan is used. You can enable this auxiliary model through config (faceengine.conf).

Parameter Description Type Default value
useStatusPlan 0 - Off, 1 - On "Value::Int1" 1

Example:

<section name="EyeEstimator::Settings">
    <param name="useStatusPlan" type="Value::Int1" x="1"/>
</section>

Medical mask estimator settings#

Medical mask estimator predicts predominant mask features.

Estimator accuracy depends on thresholds listed below.

If accuracy (low FPR) is more important, TPR could be sacrificed by heightening the threshold.

Corresponding FPR and TPR values are also listed below.

Thresholds for MedicalMaskEstimation#

The below parameters specify parameter thresholds in the [0..1] range and are of the "Value::Float1" type.

maskThreshold

Threshold range Default threshold FPR range TPR range
0.65 - 0.9 0.65 0.014 - 0.01 0.976 - 0.886

noMaskThreshold

Threshold range Default threshold FPR range TPR range
0.65 - 0.79 0.65 0.01 - 0.005 0.94 - 0.903

occludedFaceThreshold

Threshold range Default threshold FPR range TPR range
0.5 - 0.602 0.5 0.016 - 0.01 0.924 - 0.881

Thresholds for MedicalMaskEstimationExtended#

The below parameters specify parameter thresholds in the [0..1] range and are of the "Value::Float1" type.

maskExtendedThreshold

Threshold range Default threshold FPR range TPR range
0.65 - 0.784 0.65 0.013 - 0.01 0.923 - 0.894

noMaskExtendedThreshold

Threshold range Default threshold FPR range TPR range
0.65 - 0.79 0.65 0.01 - 0.005 0.94 - 0.903

maskNotInPlaceExtendedThreshold

Threshold range Default threshold FPR range TPR range
0.65 - 0.85 0.65 0.009 - 0.005 0.918 - 0.833

occludedFaceExtendedThreshold

Threshold range Default threshold FPR range TPR range
0.5 - 0.602 0.5 0.016 - 0.01 0.924 - 0.881

Example:

<section name="MedicalMaskEstimatorV3::Settings">
        <param name="maskExtendedThreshold" type="Value::Float1" x="0.65"/>
        <param name="noMaskExtendedThreshold" type="Value::Float1" x="0.65"/>
        <param name="maskNotInPlaceExtendedThreshold" type="Value::Float1" x="0.65"/>
        <param name="occludedFaceExtendedThreshold" type="Value::Float1" x="0.5"/>
        <param name="maskThreshold" type="Value::Float1" x="0.65"/>
        <param name="noMaskThreshold" type="Value::Float1" x="0.65"/>
        <param name="occludedFaceThreshold" type="Value::Float1" x="0.65"/>
</section>

Mouth Estimator settings#

Mouth estimator predicts predominant mouth state.

Estimator accuracy depends on thresholds listed below.

FPR and TPR values are specified for 0.5 threshold

"Thresholds for MouthEstimation"

Parameter Description Type Default value Threshold range TPR FPR
occlusionThreshold Threshold in the [0..1] range Value::Float1 0.5 0.4 - 0.6 0.96 0.009
smileThreshold Threshold in the [0..1] range. Value::Float1 0.5 0.4 - 0.6 0.97 0.04
openThreshold Threshold in the [0..1] range. Value::Float1 0.5 0.4 - 0.6 0.986 0.01

Example:

<section name="MouthEstimator::Settings">
    <param name="occlusionThreshold" type="Value::Float1" x="0.5"/>
    <param name="smileThreshold" type="Value::Float1" x="0.5"/>
    <param name="openThreshold" type="Value::Float1" x="0.5"/>
</section>

## Face Occlusion Estimator Settings {#face-occlusion-estimator-settings} The Face Occlusion estimator predicts occlusion of various face areas such as the forehead, eyes, nose, mouth, and lower face.

Estimator accuracy depends on thresholds listed below.

Parameter Description Type Default Threshold range
normalHairCoeff Threshold for hair*. Value::Float1 0.15 0.0 - 1.0
overallOcclusionThreshold Overall threshold. Value::Float1 0.07 0.0 - 1.0
foreheadThreshold Threshold for forehead. Value::Float1 0.1 0.0 - 1.0
eyeThreshold Threshold for eye. Value::Float1 0.15 0.0 - 1.0
noseThreshold Threshold for nose. Value::Float1 0.2 0.0 - 1.0
mouthThreshold Threshold for mouth. Value::Float1 0.15 0.0 - 1.0
lowerFaceThreshold Threshold for lower face. Value::Float1 0.2 0.0 - 1.0

Note:

The normalHairCoeff parameter determines whether the presence of hair is considered when analyzing face occlusion.

  • If the percentage of hair occlusion is lower than normalHairCoeff, hair is not taken into account in the analysis.
  • If the hair occlusion percentage exceeds normalHairCoeff, the excess hair occlusion is added to the overall face occlusion percentage.

Example calculation:

  • Overall face occlusion score without hair: 0.05
  • Overall face occlusion score with hair: 0.2
  • normalHairCoeff: 0.15

In this case, the resulting overall face occlusion score would be calculated as follows:

  • Resulting score = 0.05 + (0.2 - 0.15) = 0.1.

Example:

<section name="FaceOcclusionEstimator::Settings">
    <param name="normalHairCoeff" type="Value::Float1" x="0.15"/>
    <param name="overallOcclusionThreshold" type="Value::Float1" x="0.07"/>
    <param name="foreheadThreshold" type="Value::Float1" x="0.1"/>
    <param name="eyeThreshold" type="Value::Float1" x="0.15"/>
    <param name="noseThreshold" type="Value::Float1" x="0.2"/>
    <param name="mouthThreshold" type="Value::Float1" x="0.15"/>
    <param name="lowerFaceThreshold" type="Value::Float1" x="0.2"/>
</section>

Quality estimator settings#

Quality estimator looks at several image parameters, like lightness (think overexposure), darkness (think underexposure), blurriness, illumination uniformity value, specularity value. Every float value is comparing with according threshold.

Parameter Type Default value
blurThreshold "Value::Float1" x="0.61"
lightThreshold "Value::Float1" x="0.57"
darknessThreshold "Value::Float1" x="0.50"
illuminationThreshold "Value::Float1" x="0.1"
specularityThreshold "Value::Float1" x="0.1"
usePlanV1 "Value::Int1" x="1"
usePlanV2 "Value::Int1" x="1"

Example:

<section name="QualityEstimator::Settings">
    <param name="blurThreshold" type="Value::Float1" x="0.61"/>
    <param name="lightThreshold" type="Value::Float1" x="0.57"/>
    <param name="darknessThreshold" type="Value::Float1" x="0.50"/>
    <param name="illuminationThreshold" type="Value::Float1" x="0.1"/>
    <param name="specularityThreshold" type="Value::Float1" x="0.1"/>
    <param name="usePlanV1" type="Value::Int1" x="1" />
    <param name="usePlanV2" type="Value::Int1" x="1" />
</section>

Note: usePlanV1 toggles the Quality estimation, usePlanV2 toggles the SubjectiveQuality estimation. Note that you cannot disable both the parameters at the same time. In case you do this, you will receive the fsdk::FSDKError::InvalidConfig error code and the following logs:

[27.06.2024 12:38:59] [Error] QualityEstimator::Settings Failed to create QualityEstimator! The both parameters: "usePlanV1" and "usePlanV2" in section "QualityEstimator::Settings" are disabled at the same time.

GlassesEstimator settings#

The glasses estimator estimates what types of glasses, if any, a person is currently wearing. Estimation quality depends on threshold values listed below. These threshold values are set to optimal by default.

Parameter Description Type Default value
noGlassesThreshold noGlasses threshold in [0..1] range. "Value::Float1" 1
eyeGlassesThreshold eyeGlasses threshold in [0..1] range. "Value::Float1" 1
sunGlassesThreshold sunGlasses threshold in [0..1] range. "Value::Float1" 1

Example:

<section name="GlassesEstimator::Settings">
    <param name="noGlassesThreshold" type="Value::Float1" x="1"/>
    <param name="eyeGlassesThreshold" type="Value::Float1" x="1"/>
    <param name="sunGlassesThreshold" type="Value::Float1" x="1"/>
</section>

LivenessOneShotRGBEstimator settings#

This estimator tells whether the person's face is real or fake (photo, printed image). Thresholds are listed below.

Liveness protects from presentation attacks - when user tries to cheat biometric system by demonstrating fake face to the face capturing camera, but not from image substitution attacks - when fake image is sent directly to the system, bypassing the camera.

LivenessOneShotRGBEstimator supports images, which are captured on Mobile devices or Webcam (PC or laptop). Correct working of the estimator with other source images is not guaranteed.

Supported shooting mode: cooperative, which means that user must interact with the camera and look at it.

User scenarios examples: authentication in mobile application, confirmation of transactions with biometric facial verification.

Image resolution minimum requirements:

  • Mobile devices - 720 × 960 px
  • Webcam (PC or laptop) - 1280 x 720 px
Parameter Description Type Default value
netType NET version. "Value::Int1" 0
realThreshold Threshold in [0..1] range. "Value::Float1" 0.5
qualityThreshold Threshold in [0..1] range. "Value::Float1" 0.5
calibrationCoeff Coefficient in [0..1] range. "Value::Float1" 0.89
mobileRealThreshold Threshold in [0..1] range. "Value::Float1" 0.5
mobileQualityThreshold Threshold in [0..1] range. "Value::Float1" 0.5
mobileCalibrationCoeff Coefficient in [0..1] range. "Value::Float1" 0.968
liteRealThreshold Threshold in [0..1] range. "Value::Float1" 0.5
liteQualityThreshold Threshold in [0..1] range. "Value::Float1" 0.5
liteCalibrationCoeff Coefficient in [0..1] range. "Value::Float1" 0.991
<section name="LivenessOneShotRGBEstimator::Settings">
    <param name="netType" type="Value::Int1" x="0" />
    <!--Parameters for backend version (netType == 0) -->
    <param name="realThreshold" type="Value::Float1" x="0.5"/>
    <param name="qualityThreshold" type="Value::Float1" x="0.5" />
    <param name="calibrationCoeff" type="Value::Float1" x="0.89"/>
    <!--Parameters for mobile version (netType == 1) -->
    <param name="mobileRealThreshold" type="Value::Float1" x="0.5"/>
    <param name="mobileQualityThreshold" type="Value::Float1" x="0.5" />
    <param name="mobileCalibrationCoeff" type="Value::Float1" x="0.968"/>
    <!--Parameters for lite version (netType == 2) -->
    <param name="liteRealThreshold" type="Value::Float1" x="0.5"/>
    <param name="liteQualityThreshold" type="Value::Float1" x="0.5" />
    <param name="liteCalibrationCoeff" type="Value::Float1" x="0.991"/>
</section>