← Retour au Blog
RechercheReconnaissance facialeArcFace

L’évolution de la reconnaissance faciale avec les réseaux neuronaux : de DeepFace à ArcFace et au-delà

Introduction

La reconnaissance faciale — identifier ou vérifier une personne à partir de son visage — est l’un des domaines les plus actifs et influents de la vision par ordinateur. Le passage des handcrafted features aux réseaux neuronaux profonds a profondément amélioré la précision, la robustesse et la scalabilité.

Avant le Deep Learning

Eigenfaces et Fisherfaces (années 1990)

Les premières approches traitaient les images de visage comme des vecteurs de grande dimension et utilisaient la réduction de dimension pour classifier. Eigenfaces (PCA) et Fisherfaces (LDA) ont été pionnières, mais restaient sensibles à l’éclairage, à la pose et aux expressions.

Descripteurs de caractéristiques locales (années 2000)

Des méthodes comme LBPH et Gabor Features amélioraient la robustesse grâce à l’encodage de textures locales. Leur pouvoir de représentation restait néanmoins limité pour les scénarios faciaux non contraints.

La révolution du Deep Learning

DeepFace (2014)

DeepFace de Facebook a marqué un tournant en atteignant 97.35% sur LFW, soit un niveau proche de la performance humaine. Ses innovations majeures étaient :

  • l’alignement facial 3D en prétraitement
  • l’entraînement sur 4 millions d’images
  • une architecture CNN profonde avec classification softmax
  • la démonstration claire de la supériorité des features apprises

Série DeepID (2014–2015)

La famille DeepID de la Chinese University of Hong Kong a poussé les performances encore plus loin :

  • approche multi-patch sur différentes régions du visage
  • apprentissage conjoint de l’identification et de la vérification
  • 99.47% sur LFW avec DeepID2+

FaceNet (2015)

FaceNet de Google a introduit la triplet loss :

  • apprentissage direct d’embeddings dans un espace euclidien
  • sélection efficace des triplets
  • embeddings de 128 dimensions adaptés à la recherche à grande échelle
  • 99.63% sur LFW

La révolution ArcFace

ArcFace : Additive Angular Margin Loss (CVPR 2019)

ArcFace, développé par l’équipe InsightFace, a introduit une loss function simple et très efficace qui est devenue un standard de fait pour l’entraînement en reconnaissance faciale.

Innovation clé

ArcFace ajoute un angular margin à l’angle entre le feature vector et son class center correspondant sur l’hypersphère normalisée. La fonction de perte est :

L = -log(e^(s·cos(θ_yi + m)) / (e^(s·cos(θ_yi + m)) + Σ e^(s·cos(θ_j))))

Ici, m représente l’additive angular margin et s le scaling factor.

Pourquoi ArcFace fonctionne

  • Interprétation géométrique : le margin a une signification claire sur l’hypersphère
  • Entraînement stable : convergence plus stable que d’autres pertes à marge
  • Forte généralisation : meilleure compacité intra-classe et séparation inter-classe

Impact et adoption

ArcFace est aujourd’hui l’une des loss functions les plus adoptées en reconnaissance faciale :

  • plus de 8 000 citations
  • intégration dans InsightFace et de nombreux autres frameworks
  • base de nombreuses soumissions de pointe sur NIST FRVT

Passage à l’échelle avec Partial FC (CVPR 2022)

Entraînement à très grande échelle

Quand les datasets de face recognition atteignent des millions d’identités, la couche de classification devient un goulot d’étranglement. Partial FC y répond ainsi :

  • échantillonnage aléatoire d’une partie des class centers à chaque itération
  • entraînement possible avec 10M+ identités sur une seule machine
  • forte réduction de la mémoire et du calcul sans perte majeure de précision
  • composant essentiel des modèles de production à grande échelle

Gestion du bruit : Sub-center ArcFace (ECCV 2020)

Entraînement robuste sur données bruitées

Les données réelles comportent souvent des étiquettes erronées. Sub-center ArcFace traite ce problème en :

  • apprenant K sub-centers par classe au lieu d’un seul centre
  • laissant les dominant sub-centers représenter les échantillons propres
  • utilisant les sub-centers non dominants pour absorber le bruit
  • facilitant la détection et le nettoyage automatiques du bruit

État de l’art actuel

InsightFace Recognition Pipeline

InsightFace fournit une pipeline complète de reconnaissance faciale :

from insightface.app import FaceAnalysis

import numpy as np

app = FaceAnalysis(name='buffalo_l')

app.prepare(ctx_id=0, det_size=(640, 640))

# Extract embeddings

face1 = app.get(img1)[0]

face2 = app.get(img2)[0]

# Compute similarity

sim = np.dot(face1.embedding, face2.embedding)

sim = sim / (np.linalg.norm(face1.embedding) * np.linalg.norm(face2.embedding))

print(f"Similarity: {sim:.4f}")

Model Zoo

Le model zoo d’InsightFace propose des modèles préentraînés pour différents scénarios de déploiement :

ModelBackboneLFWCFP-FPAgeDB-30
buffalo_sMobileFaceNet99.33%95.51%95.13%
buffalo_lResNet-5099.83%99.50%98.23%
antelopev2ResNet-10099.80%99.47%98.10%

Perspectives futures

Le domaine continue d’évoluer autour de :

  • Masked face recognition : meilleure robustesse face aux occultations partielles
  • Cross-age recognition : identification plus fiable malgré l’écart d’âge
  • Privacy-preserving recognition : utilisation du chiffrement homomorphe et du federated learning
  • 3D face recognition : exploitation de l’information de profondeur pour améliorer encore la précision

Conclusion

D’Eigenfaces à ArcFace, la reconnaissance faciale a profondément évolué. ArcFace, Partial FC et Sub-center ArcFace d’InsightFace sont au cœur de cette transformation et fournissent à la recherche comme à l’entreprise des briques puissantes pour des systèmes modernes de face recognition.