Skip to main content

Accuracy and thresholds

Identification accuracy describes how reliably Face Matcher finds the right identity in a watchlist. It is a trade-off governed by one number you configure per watchlist: the matching threshold. This page gives the measured error rates so you can pick a threshold deliberately instead of keeping the default. Terms such as FAR, FRR and template are defined in the Biometrics glossary.

Two error rates​

  • FPIR (False Positive Identification Rate): the probability that a search returns a match for a person who is not in the watchlist.
  • FNIR (False Negative Identification Rate): the probability that a search misses a person who is in the watchlist.

Raising the threshold lowers FPIR and raises FNIR; lowering it does the opposite. A border checkpoint or secured-area entry usually prioritizes a low FPIR (no wrong person accepted); a watchlist alerting scenario usually prioritizes a low FNIR (no person of interest missed). Results are quoted as FNIR at a fixed FPIR, for example "FNIR at FPIR 1:1000".

Extraction algorithms​

Face Matcher ships four template extraction algorithms: fast, balanced (default), accurate and accurate_server. The measurements below cover the two you will normally choose between. Templates are bound to the algorithm, so changing it requires re-extracting existing templates; see Template migration.

AlgorithmDescriptionSpeedRecommended use
BalancedDefault; good trade-off between speed and accuracy.FastLive camera streams, small and mid-size watchlists.
AccurateTighter separation of genuine and impostor scores; better FNIR at low FPIR.AverageLarge watchlists, high-security checkpoints.

Measured results​

Measured on internal evaluation datasets. Enrollment image quality (sharp, frontal, ICAO-style portraits), probe quality (pose, light, blur, occlusion) and the demographics of your population all shift the curves, so validate on your own data before fixing a threshold. The higher the threshold, the better the image quality you must guarantee on both sides.

Watchlist of about 100,000 faces​

FPIRFNIR Balanced (%)Threshold BalancedFNIR Accurate (%)Threshold Accurate
1:500.31749.50.04746.5
1:1000.42052.40.06749.7
1:2000.57755.30.09752.7
1:5000.82358.90.15056.5
1:10001.10762.30.27761.4
1:20001.51065.70.43764.9
1:50004.05772.23.45370.6

Watchlist of about 1.7 million faces​

FPIRFNIR Balanced (%)Threshold BalancedFNIR Accurate (%)Threshold Accurate
1:501.78472.40.61468.6
1:1002.36773.60.83669.3
1:2003.09575.01.17969.9
1:5004.92477.11.95671.1
1:10008.54379.73.89972.5

Choosing a threshold​

  1. Decide the FPIR you can accept: one false match in 100 searches is 1:100, one in 1,000 is 1:1000.
  2. Read the threshold for your watchlist size and algorithm from the table.
  3. Set it on the watchlist (in Station or through the API) and validate on your own images; adjust if the real FNIR is too high.
  4. Keep image quality up: a high threshold demands well-lit, frontal enrollment photos and good camera placement. See Enrollment image quality and Tuning identification.

Example: for 100,000 identities and a target of one false match per 1,000 searches, start around 62 (Balanced) or 61 (Accurate). Note that the platform default threshold for a new watchlist is 40, which is well below every value in the tables; treat it as a permissive starting point for a first test, not as a production setting. Station also displays scores as a percentage using a linear conversion configured in .env.station; the threshold itself is always set on the 0-100 score scale.

Passive liveness thresholds​

Passive liveness returns a score; a face at or above the liveness threshold is accepted as genuine, below it is rejected as a spoof. Face Matcher provides two variants, Distant (faces seen by a surveillance camera) and Nearby (faces close to the camera, as at a kiosk). See Liveness for where it runs and how to enable it.

Distant passive liveness:

False Accept RateFalse Reject Rate (%)Threshold
1:50.05567.0
1:100.06869.3
1:500.80678.5
1:1002.43283.8
1:50010.70090.2

Nearby passive liveness:

False Accept RateFalse Reject Rate (%)Threshold
1:50.30574.6
1:101.53681.8
1:508.80089.4
1:10013.52391.4
1:50026.42594.3

Example: with the distant threshold at 83.8, about 243 of 10,000 genuine faces are wrongly rejected as spoofs and about 100 of 10,000 spoofs are wrongly accepted. Raising it to about 92.8 cuts the accepted spoofs to about 9 but rejects about 1,809 genuine faces. Pick the point that matches how much friction your site tolerates.