Tous les projets
UN WFP · BIOMETRICSStage · Programme alimentaire mondial
World Food Programme

WFP Biometric Deduplication

Un prototype interne de déduplication d’empreintes digitales pour que chaque bénéficiaire de l’aide humanitaire ne soit inscrit qu’une fois : extraction des minuties par deep learning (MinutiaeNet) et matching inspiré de Bozorth3, porté en Python.

Indicateur clé
4.34%

EER en vérification 1:1 · AUC 0,981 · Rank-1 94,5 %

Architecture

WFP Biometric Deduplication

Les composants, les flux de données et les frontières de confiance du système.

Pre-processingCoarse detection · CoarseNetPost-processingRefinement · FineNetMatching · Bozorth3 in PythonEvaluationscoremaskyesminutiaeFingerprint image512 × 512 · grayscaleEnhancementtexture · contrastOrientation fieldSTFT · direction mapCoarseNetfully convolutionalOutput mapsscore · angle · sizeSegmentationfinger vs backgroundMorphologyclose · open · dilateScore × maskcandidate minutiaeDual NMS fusionIoU 0.5 + customEnough minutiae?adaptive thresholdFiltered candidatesearly score thresholdPatch extractioncentred on (x, y)FineNetbinary patch classifierScore fusion(4 · coarse + fine) / 5Final minutiaex · y · θ · scoreIntra-tablesdistances · relative anglesCompatibilityτd · τθ thresholdsMaximum cliquecorrespondence graphSimilarity score(m + αd) / √(nA·nB)SOCOFing600 fingers · alteredComparison pairs747 genuine · 24.6k impostorVerification 1:1EER 4.34% · AUC 0.981Identification 1:NRank-1 94.5%Real WFP datanext: scale & integrate

Faites défiler le schéma →

Technologies

  • Python
  • MinutiaeNet · CNN
  • CoarseNet · FineNet
  • STFT enhancement
  • Bozorth3 graph matching
  • SOCOFing
  • ROC · CMC · ANOVA

Choix d’architecture

  1. 01

    Pas de modèle boîte noire de bout en bout : extraction et matching restent séparés, pour garder la main sur la décision et pouvoir remplacer chaque module.

  2. 02

    Extraction en deux temps : CoarseNet maximise le rappel sur toute l’image, FineNet valide chaque candidate sur un patch local et écarte 30 à 50 % des fausses détections.

  3. 03

    Score normalisé : une clique de 3 minuties ne pèse pas pareil entre deux empreintes de 20 ou de 100 minuties, d’où la division par √(nA·nB) et un terme de densité.

  4. 04

    Seuils fixés à FAR 1 % et 0,1 % : dans l’humanitaire, un faux rejet peut priver quelqu’un d’aide, donc le compromis sécurité / accessibilité est rendu explicite.

Le problème

Le PAM identifie ses bénéficiaires par biométrie pour éviter les doubles inscriptions. Un faux négatif laisse passer une fraude, un faux positif peut priver une personne légitime d’aide, et les empreintes capturées sur le terrain sont souvent dégradées. Objectif : évaluer un système interne pour réduire la dépendance à une solution commerciale.

Ce que j’ai construit

Pipeline hybride en deux étapes. Extraction : amélioration de l’image et champ d’orientation STFT, CoarseNet (réseau entièrement convolutionnel) pour proposer les minuties, double NMS et boucle adaptative, puis FineNet pour valider chaque candidate sur un patch local. J’ai corrigé et adapté l’implémentation de MinutiaeNet (prétraitements, seuils, filtrages). Matching : portage Python de Bozorth3 (tables intra-empreinte, graphe de compatibilité, clique maximale) avec un score normalisé par le nombre de minuties.

Résultat et compromis

Sur SOCOFing (747 comparaisons authentiques, 24 611 imposteurs) : EER 4,34 %, AUC 0,981, TAR 90,9 % à FAR 1 % et 70,3 % à FAR 0,1 %. En identification sur base fermée : Rank-1 94,5 %, Rank-5 96,9 %, Rank-10 98,4 %. FineNet écarte 30 à 50 % des candidates sans biais selon le doigt, et les altérations n’ont qu’un effet faible (η² ≈ 0,04–0,05).

Périmètre et limites

Évalué sur une base publique de taille modeste aux altérations synthétiques, pas sur les données du PAM. L’EER reste au-dessus des ~2 % visés dans la littérature, et le TAR chute à 70,3 % à FAR 0,1 %. Prochaines étapes proposées : validation sur données réelles, test à grande échelle, déploiement cloud et intégration à la plateforme d’identité du PAM.
Projet suivant
JobCopilot