Settings
There are different types of settings on MegaMatcher ID Server. This section will talk about biometric operation settings. There are two ways to set biometric operation settings:
- on Management Web - this is the preferred way and advised on production environment
- from Web Demo - used for debug purposes while determining most suitable parameters for users application. Can be used when
Allow settings override
is enabled
Capturing
Key | Range | Default value | Notes |
---|---|---|---|
Disallow multiple faces | [false; true] | true | Fails the operation if multiple faces are detected |
Timeout | [0; x] | 0 | Determines operation timeout in milliseconds |
QualityThreshold | [0; 100] | 50 | Face quality threshold |
DetectionConfidenceThreshold | [0; 100] | 50 | Determines if the detection of a face is confident enough |
FramesToSkip | [0; max_int] | 100 | Skips first X frames before starting detection |
StrictQualityImageSize | [0; max_int] | 921600 | Minimal frame pixel count to start detection. E.g. 480×640 would be 307200 |
StrictQualityTimeout | [0; max_int] | 30000 | Indicates how many milliseconds to wait for the image to reach StrictQualityImageSize |
Timeout
Determines the time during which operation as to be finished. If 0 is specified - time is unlimited. If the timeout is reached, operation ends in Timeout
status.
Note: When this setting is changed, it's advised to also update the timeouts in the configuration script.
FramesToSkip
Due to encoding some first frames of the stream are poor quality. This setting automatically skips X first frames in order to start face extraction and liveness detection with good frames. Here are some examples how first frames look like until server side encoder gets enough frames to produce good quality images.
Verification
Key | Range | Default value | Notes |
---|---|---|---|
MatchingThreshold | [36; X] | 48 | Minimum score when Verify functions determines that compared faces are a match |
Matching threshold
Biometric features matching algorithm provides similarity score as a result. The higher is score, the higher is probability that features collections are obtained from the same person.
The higher the threshold value, the more similar feature collections will have to be to yield positive result during matching.
Matching threshold - the minimum score that verification and identification functions accept to assume that the compared faces belong to the same person.
Matching threshold is linked to false acceptance rate (FAR, different subjects erroneously accepted as of the same) of matching algorithm. The higher is threshold, the lower is FAR and higher FRR (false rejection rate, same subjects erroneously accepted as different) and vice a versa.
Matching threshold for MegaMatcher ID should be determined from this table:
FAR (false acceptance rate) | Matching threshold (score) |
---|---|
100% | 0 |
10% | 12 |
1% | 24 |
0.1% | 36 |
0.01% | 48 |
0.001% | 60 |
0.0001% | 72 |
or using this formula:
Threshold = -12 * log10(FAR); where FAR is NOT percentage value (e.g. 0.1% FAR is 0.001)
Matching threshold/FAR should be selected according to the system's development requirements and taking into account mentioned identification false acceptance accumulation.
Liveness
Key | Range | Default value | Notes |
---|---|---|---|
Liveness mode | - | Passive | Determines what liveness algorithm to use |
LivenessCustomActionSequence | custom string | "" (empty string) | Action sequence to be used in Custom liveness. If left empty, random actions are used |
LivenessThreshold | [0; 100] | 50 | Threshold which determines if liveness prediction is confident enough |
PassiveLivenessSensitivityThreshold | [0; 100] | 30 | Threshold which regulates the positioning restrictions. The higher the threshold, the more centerted the face with respect to image size will have to be. This is also used for speed and less for accuracy. |
PassiveLivenessQualityThreshold | [0; 100] | 40 | Threshold which determines if image quality is suitable for liveness. Used for extraction speed up, not for accuracy. |
LivenessBlinkTimeout | [1000; 30000] | 2000 | Maximum time in ms when user has to blink when asked |
Liveness mode
Liveness mode determines which Liveness checking algorithm to use. Currently these liveness modes are supported:
Passive
PassiveNoBlink liveness mode relies on LivenessThreshold
. Checks whether the user is live or not in a passive way. User is only required to position his face according to the provided system status.
PassiveWithBlink
Passive liveness mode relies on LivenessThreshold
. The same as Passive mode, but when the user manages to pass the liveness check, the system waits for some random ammount of time and then asks the user to blink once in a set time window. If the blink requirement is not satisfied, liveness fails.
Simple
Easier version of Passive. Can be used where there is quite a low chance that system users will use hard spoofing attacks.
Active
Active liveness mode does not use LivenessThreshold
. User has to perform specified head turning and blink when asked.
Custom
Custom liveness mode does not use LivenessThreshold
. User has to perform specified head turning and blink when asked. LivenessCustomActionSequence can be set to use pre-defined liveness actions. If not set or left empty - random actions are chosen by the liveness algorithm.
LivenessCustomActionSequence
When Custom liveness mode is set, pre-defined liveness actions can be used. It is possible to combine a liveness action sequence from these actions:
Action | Notes |
---|---|
blink | User is asked to blink |
turnLeft | User is asked to turn his head left |
turnRight | User is asked to turn his head right |
turnUp | User is asked to turn his head up |
turnDown | User is asked to turn his head down |
turnWithTargets | User is asked to turn his head to a specified angle (as on Active liveness mode) |
keepStill | User is asked to keep still for a short period of time (up to 1 second). This may act as a pause between liveness actions |
When constructing liveness action sequence, actions must be separated by commas ,
.
For example, action sequence for turning head left, right and blinking would look like this:
turnLeft,turnRight,blink
ICAO
Option | Range | Default value | Glossary |
---|---|---|---|
Check ICAO | [false; true] | false | Enables or disables ICAO compliance checking during image capturing |
IcaoRemoveBackground | [false; true] | false | Enables or disables ICAO token image background removal |
IcaoBackgroundColor | [0; 255] | 209 | Background color of removed background if ICAO token image background removal is enabled, e.g. default is 209 which is #D1D1D1 |
TokenFaceBackgroundPercentage | [0; 100] | 60 | The ratio of the face to the token image |
Check ICAO
Enables or disables ICAO compliance checking. If enabled and capture is successful Token image is returned on Enroll and CheckLiveness operations.
On Verify operation Check ICAO can only be used with Liveness combination. Verify operation does not return a Token image even in Check ICAO is enabled.
To achieve ICAO compliant image, user is instructed to position its face according ICAO standard. If the face does not met ICAO requirements operation will not end the capture until Timeout is reached.
TokenFaceBackgroundPercentage
Regulates the ratio of the face to the token image. Its default value is set to 60, which represents the ideal image ratio in accordance with token image standards. When the value is set lower than 60, the crop radius increases, causing the face to appear smaller in the final token image. Conversely, values higher than 60 decrease the crop radius, making the face appear larger relative to the final token image.
Combining Liveness and ICAO
Check ICAO can be used in combination with face liveness checking. When both settings are enabled, face liveness is calculated during capture and at the end user is asked to position its face to get ICAO compliant image, if such was not retrieved during face liveness calculations.
ICAO Thresholds
Key | Range | Default value | Value to turn off | Always shows a warning |
---|---|---|---|---|
IcaoSharpnessThreshold | [0; 100] | 50 | 0 | 100 |
IcaoBackgroundUniformityThreshold | [0; 100] | 0 | 0 | 100 |
IcaoGrayscaleDensityThreshold | [0; 100] | 50 | 0 | 100 |
IcaoSaturationThreshold | [0; 100] | 50 | 0 | 100 |
IcaoExpressionThreshold | [0; 100] | 54 | 100 | 0 |
IcaoDarkGlassesThreshold | [0; 100] | 27 | 100 | 0 |
IcaoBlinkThreshold | [0; 100] | 10 | 0 | 100 |
IcaoMouthOpenThreshold | [0; 100] | 25 | 100 | 0 |
IcaoLookingAwayThreshold | [0; 100] | 50 | 100 | 0 |
IcaoRedEyeThreshold | [0; 100] | 50 | 100 | 0 |
IcaoFaceDarknessThreshold | [0; 100] | 50 | 100 | 0 |
IcaoUnnaturalSkinToneThreshold | [0; 100] | 20 | 0 | 100 |
IcaoWashedOutThreshold | [0; 100] | 50 | 100 | 0 |
IcaoPixelationThreshold | [0; 100] | 50 | 100 | 0 |
IcaoSkinReflectionThreshold | [0; 100] | 60 | 100 | 0 |
IcaoGlassesReflectionThreshold | [0; 100] | 50 | 100 | 0 |
IcaoHeavyFrameThreshold | [0; 100] | 47 | 100 | 0 |
IcaoOcclusionThreshold | [0; 100] | 7 | 100 | 0 |
IcaoResolutionThreshold | [0; 100] | 70 | 0 | 100 |
IcaoMotionBlurThreshold | [0; 100] | 10 | 100 | 0 |
IcaoCompressionArtifactsThreshold | [0; 100] | 10 | 100 | 0 |
IcaoOverexposureThreshold | [0; 100] | 25 | 100 | 0 |
IcaoUnderexposureThreshold | [0; 100] | 20 | 100 | 0 |
IcaoGlassesThreshold | [0; 100] | 55 | 100 | 0 |
IcaoHatThreshold | [0; 100] | 21 | 100 | 0 |
Icao thresholds are advised to change only on supervision. Possibly some thresholds are not relevant in customer use cases, therefore can be turned off. If any threshold seems to be "too hard" they can be set closer to the "Value to turn off" until smooth capture can be made. Note: setting thresholds in this manner reduces the captured ICAO image quality, but increases application usability for the end user as it is easier to capture a photo. Setting the thresholds closer to the "Always shows a warning" value forces the user to take a better quality image, yet makes the process less smooth and comfortable.
How ICAO warnings look graphically can be found here.
Icao warnings can also be ignored by using the IcaoWarningsFilter
parameter. It's suggested to only use this to ignore the ICAO warnings which do not have a threshold. For example, to ignore position warnings, you can set IcaoWarningsFilter
to TooNorth,TooSouth,TooEast,TooWest
.
ISO 30103-7 certification
Liveness algorithm for Mobile and PC is ISO 30103-7 certified. By default, the MegaMatcher ID product does not use the certified parameter set. Lower values are used that are still reliant for spoof prevention, yet make the capturing process easier for the user. To use ISO 30103-7 certified parameter set some thresholds need to be changed:
- PC:
- LivenessThreshold: 70 (default 50).
- PassiveLivenessQualityThreshold: 60 (default 40).
- PassiveLivenessSensitivityThreshold: 30 (default).
- Image resolution: 1280×720.
- Only front camera can be used. If PC uses external camera, the camera should be positioned in such way, that it is on top/botom of the monitor and user could clearly see him/her self.
- Mobile:
- LivenessThreshold: 80 (default 50).
- PassiveLivenessQualityThreshold: 80 (default 40).
- PassiveLivenessSensitivityThreshold: 30 (default).
- Image resolution: 1280×720.
- Only front camera can be used.
PC values may also used for MegaMatcher ID Web service, yet it is strongly advised to stick to default configuration. Due to WebRTC protocol limitations it is hard to achieve good user experiance with high thresholds.