Identity fraud during biometric enrollment and updates remains a major challenge for large-scale national identity systems. A common fraud vector is misrepresenting one's age to access age-restricted services or welfare schemes. In this work, we present SwinAge, a facial age estimation system designed for use within the Aadhaar biometric enrollment pipeline, to assist quality-check (QC) operators to flag potential age-related fraud. This is critical for a system like Aadhaar (the world's largest national identity programme), that holds about 1.5 billion unique identities, with 22.4 million new enrollments and 283 million updates in the last year. Building upon the SwinFace architecture with landmark-based similarity (warp affine) alignment, we train on a large in-house dataset of 1.45 million face images and evaluate on an independent, age-stratified test set of 283K images, both drawn from an ethnically diverse population of 716K unique subjects. We investigate three Aadhaar-specific operational thresholds (5, 18, and 60 years) and propose a deployment triage framework that flags suspected cases for manual review. Following NIST FATE, we report false acceptance/rejection rates (FAR/FRR) at each threshold rather than aggregate accuracy: at 1% FAR the model achieves an FRR of 3% (<5yrs), 0.4% (>18yrs) and 11.0% (>60yrs). SwinAge achieves a mean absolute error (MAE) of 2.94 years on the same test set, outperforming three zero-shot vision language models on all benchmarks, and improving the state-of-the-art on 5 out of 7 public benchmark datasets. We further report per-gender errors and distill lessons for national identity programs.
Figures & tables
Figure 1: Enrollment process for India’s national ID system, called Aadhaar [ 1 ] . The operator captures the applicant’s facial photograph (as well as fingerprints and irises) and demographic details, including date of birth. The declared age can be cross-checked against the facial age estimate to flag potential fraud.
Figure 2: Demographic diversity of the population served by Aadhaar. These examples from public sources are representative of the diversity in skin tone, facial features, hair styles, and aging patterns across different regions and ethnicities.
Figure 3: Aadhaar enrollment with SwinAge. Top: the operator’s photograph, face and 5-landmark detection, warp affine alignment to the 112×112 template, and age estimation (public benchmark image). Bottom: the estimate is compared with the declared age at each threshold τ∈{5,18,60} ; if the two fall on opposite sides of τ (e.g., declared <18 but y^≥18 ) and the estimate is at least δ away from τ , the case is flagged for operator review (Sec. 5.2 ).
Figure 4: Effect of warp affine alignment. Each pair shows the original face image (left) and aligned face (right) after similarity transformation using 5 landmarks. Side-facing poses in row 2 experience greater distortion, as the similarity transform assumes a near-frontal face.
Dataset
Images
Ages
Subjects
Source
AgeDB [ 7 ]
16,463
3–101
440
celebrity
UTKFace [ 8 ]
22,666
0–116
N/A
in-the-wild
FGNet [ 9 ]
984
0–69
82
longitudinal
APPA-REAL [ 10 ]
7,519
1–100
7000+
in-the-wild
CACD2000 [ 11 ]
154,900
14–62
2,000
celebrity
MORPH2 [ 12 ]
50,013
16–77
19,033
mugshot
Table 1: Summary of evaluation datasets
Figure 5: Age-estimation results on seven public datasets and a South Asian demographic subset. All images are from public sources; no National ID image is shown. Below each image: A = true age, A^ = predicted age.
Exact ( δ=0 )
δ=0.1τ
δ @ 1% FAR
τ
FAR
FRR
δ
FAR
FRR
δ
FRR
5
1.47%
4.95%
0.5
0.77%
2.13%
0.3
3.00%
18
5.67%
2.35%
1.8
2.15%
0.78%
2.9
0.38%
60
2.59%
21.39%
6.0
0.17%
3.59%
2.7
11.04%
∗ FAR and FRR defined in Sec. 5.2 .
Table 2: Threshold performance on the in-house test set (283,515 images), computed from continuous ages. With the decision band δ (in years), FAR/FRR ∗ count confident errors only.
Model
MAE
SwinFace [ 5 ] (pretrained)
6.99
FPAge [ 6 ] (no warping)
3.51
FPAge (tanh-polar)
3.06
FPAge (warp affine)
3.16
SwinFace (no alignment)
3.77
SwinFace (tanh-polar)
3.88
Table 3: In-house test set results (MAE, years). Models 2–7 are trained with identical settings; only the architecture and alignment method vary. Model 1 uses pretrained weights without retraining.
Figure 6: Per-age-group MAE for SwinAge, stratified by gender. Orange bars show overall MAE, navy blue shows male, and sky blue shows female. The dashed line indicates the overall MAE of 2.94.
Dataset
SwinAge (ours)
Specialized age estimators
Zero-shot VLMs
SA-LDL
AGMixer
FaRL+MLP
MiVOLO
FPAge
DEX
Nemotron
Qwen3-VL
Gemma
All
Intra
[ 24 ]
[ 23 ]
[ 22 ]
[ 3 ]
[ 6 ]
[ 2 ]
[ 27 ]
[ 28 ]
[ 29 ]
UTKFace
4.34
4.16
4.45
3.67
3.87
3.99
–
–
5.38
6.05
5.03
AFAD
– ∗
2.88
–
2.90
3.12
–
–
–
4.65
5.85
5.39
FGNet
2.89
2.15
–
2.16
–
–
5.60
–
5.16
4.51
4.19
CACD2000
4.55
3.62
4.21
3.28
3.96
–
4.33
–
7.24
6.71
6.30
Table 4: Age estimation comparison (MAE) of existing models on public datasets, each fine-tuned on those datasets (Intra). The “All” column gives the MAE of a single model trained on the combined training splits of all datasets except AFAD, evaluated per dataset. VLMs are evaluated zero-shot on cropped face images. Best result per row is shown in bold . – indicates results not reported in the respective papers. The FPAge in-house entry is our own trained model (Table 3 ); all other baseline entries are published numbers under their original protocols.
Figure 7: Mean bias (predicted − true age) versus true age, in 5-year bins, for each dataset (Intra setting). All datasets exhibit the regression-to-mean pattern: positive bias (overestimation) for young subjects, negative bias (underestimation) for older subjects, with a crossover near 30–40 years. CACD2000 shows the most extreme swing ( + 5.8 at age <20 to − 8.8 at age ≥60 ), reflecting apparent-age bias from celebrity styling. MORPH2 and National ID are the most balanced, consistent with their controlled capture conditions. Note: the bias values here use broader age bins ( < 20, ≥ 60) than the narrower bins cited in Sec. 6.2 of the main paper.
Dataset
Overall
< 20 bias
≥ 60 bias
Var. comp.
National ID
− 0.33
+ 0.30
− 2.23
97.3%
UTKFace
− 0.47
+ 0.96
− 3.88
93.1%
AgeDB
− 0.08
+ 4.77
− 3.74
82.4%
CACD2000
− 0.91
+ 5.78
− 8.82
91.8%
APPA-REAL
+ 1.28
+ 3.81
− 4.81
86.0%
MORPH2
− 0.03
+ 0.82
− 3.51
97.6%
Table 5: Per-dataset bias summary (Intra setting). “ < 20 bias” and “ ≥ 60 bias” are the mean prediction errors for subjects below 20 and at or above 60 years, respectively. These age-bin values differ from the finer-grained figures cited in Sec. 6.2 of the main paper (e.g., CACD2000 + 5.0/ − 4.9 for ages 14–20 and 50–62), which use narrower bins. “Var. comp.” is the ratio of predicted-age variance to true-age variance.
Figure 8: Worst predictions per public dataset (Intra setting). Below each image: A = true age, A^ = predicted age. Failure patterns include: (a) extreme age combined with atypical appearance (e.g., Claude Lévi-Strauss at 95 predicted as 45); (b) apparent-age bias in celebrity datasets (CACD2000); (c) mislabelling or incorrect detections during prediction (APPA-REAL, CACD2000); (d) image quality and pose degradation (UTKFace, MORPH2).
Age estimation systems are increasingly deployed as gatekeepers for age-restricted online content, yet their robustness to cosmetic modifications has not been systematically evaluated. We investigate whether simple, household-accessible cosmetic changes, including beards, grey hair, makeup, and simulated wrinkles, can cause AI age estimators to classify minors as adults. To study this threat at scale without ethical concerns, we simulate these physical attacks on 329 facial images of individuals aged 10 to 21 using a VLM image editor (Gemini 2.5 Flash Image). We then evaluate eight models from our prior benchmark: five specialized architectures (MiVOLO, Custom-Best, Herosan, MiViaLab, DEX) and three vision-language models (Gemini 3 Flash, Gemini 2.5 Flash, GPT-5-Nano). We introduce the Attack Conversion Rate (ACR), defined as the fraction of images predicted as minor at baseline that flip to adult after attack, a population-agnostic metric that does not depend on the ratio of minors to adults in the test set. Our results reveal that a synthetic beard alone achieves 28 to 69 percent ACR across all eight models; combining all four attacks shifts predicted age by +7.7 years on average across all 329 subjects and reaches up to 83 percent ACR; and vision-language models exhibit lower ACR (59 to 71 percent) than specialized models (63 to 83 percent) under the full attack, although the ACR ranges overlap and the difference is not statistically tested. These findings highlight a critical vulnerability in deployed age-verification pipelines and call for adversarial robustness evaluation as a mandatory criterion for model selection.
Facial age estimation plays a critical role in content moderation, age verification, and deepfake detection. However, no prior benchmark has systematically compared modern vision-language models (VLMs) with specialized age estimation architectures. We present the first large-scale cross-paradigm benchmark, evaluating 34 models - 22 specialized architectures with publicly available pretrained weights and 12 general-purpose VLMs - across eight standard datasets (UTKFace, IMDB-WIKI, MORPH, AFAD, CACD, FG-NET, APPA-REAL, and AgeDB), totaling 1,100 test images per model. Our key finding is striking: zero-shot VLMs significantly outperform most specialized models, achieving an average mean absolute error (MAE) of 5.65 years compared to 9.88 years for non-LLM models. The best-performing VLM (Gemini 3 Flash Preview, MAE 4.32) surpasses the strongest non-LLM model (MiVOLO, MAE 5.10) by 15%. MiVOLO - unique in combining face and body features using Vision Transformers - is the only specialized model that remains competitive with VLMs. We further analyze age verification at the 18-year threshold and find that most non-LLM models exhibit false adult rates between 39% and 100% for minors, whereas VLMs reduce this to 16%-29%. Additionally, coarse age binning (8-9 classes) consistently increases MAE beyond 13 years. Stratified analysis across 14 age groups reveals that all models struggle most at extreme ages (under 5 and over 65). Overall, these findings challenge the assumption that task-specific architectures are necessary for high-performance age estimation and suggest that future work should focus on distilling VLM capabilities into efficient specialized models.
When a neural network estimates someone's age from a photograph, does it process biometric data? The answer depends on whether identity-discriminative representations arise within the network during inference, a question that may seem trivial to ML researchers but triggers consent requirements under GDPR, statutory damages under BIPA, or high-risk AI classification under the EU AI Act. Yet no regulatory guidance addresses it. This position paper provides empirical evidence: 14 models evaluated across 3 face verification benchmarks show age estimators fall orders of magnitude short of identification thresholds. Age estimation models cannot identify individuals. We call on researchers to provide transparency about what systems store and can do, and on regulators to distinguish transient processing from template storage.