UN WFP · BIOMETRICSInternship · UN World Food Programme
WFP Biometric Deduplication
An in-house fingerprint deduplication prototype so that every humanitarian aid beneficiary is registered only once: deep-learning minutiae extraction (MinutiaeNet) and Bozorth3-inspired matching, ported to Python.
Key metric
4.34%
EER in 1:1 verification · AUC 0.981 · Rank-1 94.5%
Identification 1:N · closed set
Rank-194.5
Rank-596.9
Rank-1098.4
Verification 1:1
EER
4.34%
AUC
0.981
TAR @ FAR 1%
90.9%
TAR @ FAR 0.1%
70.3%
SOCOFing · 747 genuine and 24,611 impostor comparisons
Architecture
WFP Biometric Deduplication
Components, data flows and trust boundaries of the system.
Scroll the diagram →
Technologies
Python
MinutiaeNet · CNN
CoarseNet · FineNet
STFT enhancement
Bozorth3 graph matching
SOCOFing
ROC · CMC · ANOVA
Design decisions
01
No end-to-end black box: extraction and matching stay separate, to keep control over the decision and allow each module to be replaced.
02
Two-step extraction: CoarseNet maximizes recall over the whole image, FineNet validates each candidate on a local patch and removes 30–50% of false detections.
03
Normalized score: a 3-minutiae clique does not mean the same between two 20-minutiae or two 100-minutiae prints, hence the division by √(nA·nB) and a density term.
04
Thresholds set at 1% and 0.1% FAR: in humanitarian work a false rejection can deny someone aid, so the security / accessibility trade-off is made explicit.
The problem
WFP identifies beneficiaries biometrically to prevent duplicate registrations. A false negative lets fraud through, a false positive can deny aid to a legitimate person, and field captures are often degraded. Goal: assess an in-house system to reduce reliance on a commercial solution.
What I built
Two-stage hybrid pipeline. Extraction: image enhancement and an STFT orientation field, CoarseNet (fully convolutional) to propose minutiae, dual NMS and an adaptive loop, then FineNet to validate each candidate on a local patch. I fixed and adapted the MinutiaeNet implementation (pre-processing, thresholds, filtering). Matching: a Python port of Bozorth3 (intra-fingerprint tables, compatibility graph, maximum clique) with a score normalized by minutiae count.
Result and trade-off
On SOCOFing (747 genuine and 24,611 impostor comparisons): EER 4.34%, AUC 0.981, TAR 90.9% at 1% FAR and 70.3% at 0.1% FAR. Closed-set identification: Rank-1 94.5%, Rank-5 96.9%, Rank-10 98.4%. FineNet removes 30–50% of candidates with no finger-type bias, and alterations have only a small effect (η² ≈ 0.04–0.05).
Scope and limitations
Evaluated on a modest public dataset with synthetic alterations, not on WFP data. EER remains above the ~2% literature target, and TAR drops to 70.3% at 0.1% FAR. Proposed next steps: validation on real data, large-scale testing, cloud deployment and integration into WFP’s identity platform.