If a face-age tool is used to check whether someone is 18, how often does a 16- or 17-year-old still get through?

1,395 photos
8.51 MAE years
405/405 still pass at cut-off 18

This is a black-box student audit of DeepFace — not a claim that all AI fails.

See the numbers Findings

A-ISPC 2026 — International AI-Assisted Science Project Competition.

An age-estimation model does not read a passport. It looks at a photo and returns a number. This project asks what that number means when the law — or a shop, an app, a platform — relies on it to tell an adult from a minor.

Everything below uses one public dataset, one off-the-shelf model, and one counting script. The findings are the whole story.

Question

How accurately do facial age-estimation tools classify people near age 18, do their errors differ across demographic and image-quality groups, and which verification threshold best reduces the risk of mistaking a minor for an adult?

Planned ages
14–22 (main analysis 16–21)
High-risk minors
16–17
Adult comparison
18–21
Dataset
UTKFace
Models named in the proposal
DeepFace and InsightFace
Outcomes
MAE; minor→adult; adult→minor; quality and demographics; thresholds 18, 20, 22, 25

Method

The audit is deliberately simple: photos in, ages out, counts compared.

  • DeepFace used as a black box: photo in, age out. I did not train or fine-tune it.
  • Main set: 1,395 UTKFace images with labelled ages 16–21 (405 aged 16–17; 990 aged 18–21).
  • Ages 14–15 only in a small earlier pilot, not the main table.
  • Image-quality check: 50 photos, one blur + low-resolution recipe.
  • InsightFace was run on the same file list; almost every score was missing, so there is no two-model comparison at N=1,395.
  • Counts come from audit_deepface_1395.py on the local DeepFace result file.
  • This website does not host research-subject photographs.

Findings

MAE 8.51 years, signed error +8.51 (almost always too old).

Mean predicted age 16–17: 26.84. Mean predicted age 18–21: 27.43.

Minor-to-adult and adult-to-minor errors by verification cut-off
Cut-off 16–17 called adult 18–21 blocked
T=18 405/405 (100%) 0/990 (0%)
T=20 405/405 (100%) 0/990 (0%)
T=22 401/405 (99.01%) 7/990 (0.71%)
T=25 285/405 (70.37%) 199/990 (20.10%)
T=28 158/405 (39.01%) 539/990 (54.44%)
T=30 83/405 (20.49%) 730/990 (73.74%)
Show cut-off

Cut-offs 18 and 20 do nothing here because guesses sit near 27. T=25 is the first trade-off, not an “optimal” setting: most labelled minors still pass and one in five young adults is blocked.

Demographics: overestimate about +6 to +10 years by group. Example: Female White +9.86 (n=368, 110 minors). Male Asian +5.96 (n=28, only 4 minors — too small to rank). In every cell, 100% of that cell's 16–17-year-olds still pass T=18.

MAE, mean predicted age, and pass rate at T=18 by group (gender × race)
Group n 16–17 minors MAE (years) Mean pred. Pass T=18
Female · Asian 93 5 8.75 28.67 100%
Female · Black 154 34 8.10 27.40 100%
Female · Indian 124 19 9.49 28.97 100%
Female · Others 113 29 9.26 28.30 100%
Female · White 368 110 9.87 28.18 100%
Male · Asian 28 4 5.96 25.32 100%
Male · Black 112 28 6.47 25.46 100%
Male · Indian 64 12 7.39 26.56 100%
Male · Others 63 15 7.30 26.63 100%
Male · White 276 149 7.72 25.53 100%

Prior work

Five published baselines. Each row: what they measured, their figure, and how this audit differs.

  • UTKFace dataset — Zhang, Song & Qi (CVPR 2017; dataset page)

    MeasuredA dataset of 20k+ faces, ages 0–116, age labels encoded in the filename.
    Their figureLabels are self-reported; quality and age-range vary by design.

    Differs: I use only the labelled 16–21 slice (1,395 photos) as test data, not for training.

  • DeepFace GitHub — Serengil

    MeasuredA Python library with a pre-trained age-estimation head.
    Their figureREADME cites about ±4.65 MAE for the age model in general — not this 16–21 slice.

    Differs: on my 16–21 slice the observed MAE is 8.51 years, and 405/405 still pass at T=18.

  • NIST news, 30 May 2024 — first age-estimation evaluation results

    MeasuredSix algorithms, closed box, on ~11.5 million government photos; they also ask over/under 21.
    Their figureVisa-set MAE fell 4.3 → 3.1 years; error varies by demographic group.

    Differs: my single off-the-shelf model on 1,395 UTKFace photos gives MAE 8.51; T=25 still passes 70% of minors and blocks 20% of adults.

  • UK Parliamentary Office of Science and Technology — briefing on facial age estimation

    MeasuredHow services that must verify 18+ deploy age estimation.
    Their figureServices often use a challenge age of 25; accuracy is weakest around 16–18.

    Differs: at 16–17 my model averages ~27, so even T=25 catches only ~30% of labelled minors.

  • UK government guide — “Facial age estimation: Using AI to support initial age decisions” (29 May 2026)

    MeasuredOperational guidance for age-assurance under a challenge age of 25.
    Their figureSummarises ~2.5 years error at 16–18 for top systems.

    Differs: my off-the-shelf result is far from top-system figures — 8.51 MAE and 405/405 at T=18.

Limits & AI

What this audit does not claim

  • One dataset; UTKFace ages are not passports.
  • Off-the-shelf DeepFace is not a model I trained on UTKFace, so 2–4 year published MAEs are a different test.
  • Chips ~200×200; I did not re-score all 1,395 at 224×224.
  • Quality test is one recipe, n=50.
  • InsightFace full comparison failed.
  • Not a score for every commercial age-assurance product.

Assistive AI (not the age model)

  • Perplexity — planning.
  • Gemini — coding help.
  • Grok — checking files and drafts.
  • DeepFace is the system under test. Final tables come from the counting script, not from a chat window.

About

[YOUR NAME]

Email[your.email@gmail.com]

ProjectSubmitted for A-ISPC 2026 (International AI-Assisted Science Project Competition).

ImageryIllustrations only; no photographs of research subjects.

Code[repo URL]

Build with Enter