ANDRIATSARAFARA Befakomanana Armando Landos
← Retour aux projets

FaceMark

Simplifier le suivi des présences grâce à la reconnaissance faciale, même avec une connexion instable.

FastAPIInsightFacePostgreSQLpgvectorCelery WorkersRedisFlutterHivePDF / ExcelBLoCFirebase Cloud Messaging

4

rôles utilisateurs gérés

512

dimensions par représentation faciale

< 60 s

conservation maximale des photos

7 jours

durée de validité d'une session

Simplifier le suivi des présences grâce à la reconnaissance faciale, même avec une connexion instable.

Contexte

Dans de nombreux établissements, l'appel manuel prend du temps, peut entraîner des erreurs et produit peu de données exploitables. Les connexions instables compliquent également l'utilisation d'une solution dépendant entièrement du cloud. FaceMark explore une approche mobile capable d'identifier plusieurs étudiants à partir d'une photo, tout en permettant une utilisation hors ligne et un traitement encadré des données biométriques.

Mon rôle

J'ai conçu et développé l'architecture principale de FaceMark : application mobile, API, modèle de données et traitement des présences. J'ai également pris en charge la synchronisation hors ligne, la gestion de quatre rôles utilisateurs, la sécurité des sessions, les notifications et les mécanismes de protection des données biométriques.

Architecture

01

Application mobile

Gestion des séances, capture des photos et consultation des résultats, avec saisie hors ligne et chiffrement AES-256 des données sensibles.

02

API et traitements

Centralisation des utilisateurs, des séances et des présences. Les opérations longues sont exécutées en arrière-plan pour ne pas bloquer l'application.

03

Reconnaissance faciale

Transformation de chaque visage en une représentation de 512 dimensions et recherche efficace des correspondances grâce à un index HNSW.

04

Contrôle et validation

Anti-spoofing, traitement spécifique des cas de jumeaux avec un seuil de 0,90 et validation humaine lorsque le résultat reste incertain.

05

Sécurité et confidentialité

Sessions protégées par des jetons valables sept jours, gestion du consentement et suppression des photos brutes en moins de 60 secondes selon une approche zero-retention conforme au RGPD.

Flux principal

  1. 1

    Choisir le cours

    L'enseignant sélectionne un créneau dans son emploi du temps.

  2. 2

    Capturer

    Il prend une à cinq photos de la salle.

  3. 3

    Envoyer ou mettre en file

    Avec une connexion, les photos sont envoyées immédiatement. Sans connexion, elles sont chiffrées et placées dans une file locale.

  4. 4

    Analyser

    Le serveur vérifie la photo, détecte les visages et recherche les étudiants correspondants.

  5. 5

    Valider

    L'enseignant contrôle les résultats et associe manuellement les visages non reconnus.

  6. 6

    Notifier et exporter

    Une notification indique que les résultats sont prêts, puis les présences peuvent être consultées ou exportées en PDF et Excel.

Décisions et compromis

Regrouper données métier et recherche faciale

Pourquoi

Conserver les étudiants, les présences et les représentations faciales dans un même système transactionnel.

Compromis

Une solution plus simple à administrer, mais moins spécialisée qu'un moteur vectoriel indépendant.

Exécuter la reconnaissance en arrière-plan

Pourquoi

Ne pas bloquer l'application pendant les traitements et permettre leur reprise après un échec temporaire.

Compromis

Des services supplémentaires doivent être déployés et surveillés.

Concevoir le mobile pour fonctionner hors ligne

Pourquoi

Maintenir la saisie dans les zones où la connexion est absente ou instable.

Compromis

Le chiffrement local, les doublons et la reprise de synchronisation doivent être gérés.

Ne pas conserver les photos brutes

Pourquoi

Supprimer les photos en moins de 60 secondes afin de réduire l'exposition des données biométriques.

Compromis

Une photo supprimée ne peut plus être réanalysée ; la traçabilité repose sur les résultats et les journaux conservés.

Défis rencontrés

Problème

Certains visages très proches, notamment ceux de jumeaux, peuvent produire des résultats ambigus.

Solution

Un seuil spécifique de 0,90 signale les cas concernés et impose une validation humaine au lieu d'une décision automatique.

Problème

Une interruption réseau pouvait empêcher l'envoi immédiat des présences.

Solution

Une file locale chiffrée conserve temporairement les éléments et relance leur synchronisation lorsque la connexion revient.

Problème

Les notifications reçues lorsque l'application était ouverte ne conservaient pas toutes les informations nécessaires à la navigation.

Solution

Le contenu des notifications a été normalisé afin d'utiliser le même traitement lorsque l'application est ouverte ou en arrière-plan.

Fonctionnalités clés

  • Reconnaissance de plusieurs visages sur une même photo
  • Saisie hors ligne avec synchronisation automatique
  • Gestion de quatre rôles utilisateurs
  • Anti-spoofing et traitement particulier des cas de jumeaux
  • Validation humaine des résultats incertains
  • Notifications et suivi des traitements
  • Exports des présences en PDF et Excel

Pistes d'amélioration

Les prochaines évolutions portent sur l'évaluation de la précision avec un jeu de données représentatif, les tests de charge, le suivi des erreurs et des performances, ainsi que l'expérimentation du système dans un établissement pilote.

Limites actuelles

  • La reconnaissance doit encore être évaluée sur un volume représentatif d'étudiants et dans différentes conditions de prise de vue.
  • Les performances et la stabilité n'ont pas encore été validées par des tests de charge à grande échelle.
  • Le système reste un prototype avancé et n'a pas encore été évalué dans le cadre d'un déploiement institutionnel.