← Zurück zum Blog
ForschungGesichtserkennungArcFace

Die Entwicklung der Gesichtserkennung mit neuronalen Netzen: Von DeepFace zu ArcFace und darüber hinaus

Einleitung

Face Recognition – also das Identifizieren oder Verifizieren einer Person anhand ihres Gesichts – zählt zu den einflussreichsten Bereichen der Computer Vision. Der Übergang von handgebauten Features zu tiefen neuronalen Netzen hat Genauigkeit, Robustheit und Skalierbarkeit massiv verbessert.

Vor der Deep-Learning-Ära

Eigenfaces und Fisherfaces (1990er)

Frühe Verfahren behandelten Gesichtsaufnahmen als hochdimensionale Vektoren und nutzten Dimensionsreduktion für die Klassifikation. Eigenfaces (PCA) und Fisherfaces (LDA) waren wegweisend, reagierten jedoch empfindlich auf Licht, Pose und Mimik.

Lokale Merkmalsdeskriptoren (2000er)

Methoden wie LBPH und Gabor Features verbesserten die Robustheit durch lokale Texturinformationen. Für realistische, unkontrollierte Einsatzbedingungen reichte ihre Repräsentationskraft aber oft nicht aus.

Die Deep-Learning-Revolution

DeepFace (2014)

DeepFace von Facebook war ein Wendepunkt und erreichte 97.35% auf LFW – nahezu menschliches Niveau. Wichtige Innovationen:

  • 3D Face Alignment als Vorverarbeitung
  • Training mit 4 Millionen Bildern
  • tiefe CNN-Architektur mit Softmax-Klassifikation
  • klarer Nachweis, dass gelernte Merkmale Handcrafted Features übertreffen

Die DeepID-Serie (2014–2015)

Die DeepID-Familie der Chinese University of Hong Kong erhöhte die Genauigkeit weiter:

  • Multi-Patch-Ansatz mit Merkmalen aus verschiedenen Gesichtsregionen
  • Joint Learning für Identification und Verification
  • 99.47% auf LFW mit DeepID2+

FaceNet (2015)

FaceNet von Google führte Triplet Loss ein:

  • direktes Lernen eines Embeddings im euklidischen Raum
  • effiziente Triplet-Selektion
  • 128-dimensionale Embeddings für Large-Scale Retrieval
  • 99.63% auf LFW

Die ArcFace-Revolution

ArcFace: Additive Angular Margin Loss (CVPR 2019)

ArcFace, entwickelt vom InsightFace-Team, führte eine einfache und zugleich äußerst wirksame Loss Function ein, die heute als De-facto-Standard im Face-Recognition-Training gilt.

Zentrale Innovation

ArcFace ergänzt den Winkel zwischen Feature Vector und korrektem Class Center auf der normalisierten Hypersphäre um einen Angular Margin. Die Loss Function lautet:

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

Dabei steht m für den additiven Angular Margin und s für den Skalierungsfaktor.

Warum ArcFace funktioniert

  • Geometrische Interpretierbarkeit: Der Margin hat eine klare geometrische Bedeutung auf der Hypersphäre
  • Stabiles Training: ArcFace konvergiert robuster als viele andere margin-basierte Verluste
  • Starke Generalisierung: Die Methode fördert kompakte Intra-Class-Cluster und klare Inter-Class-Grenzen

Wirkung und Verbreitung

ArcFace ist heute eine der am weitesten verbreiteten Loss Functions in der Face Recognition:

  • über 8.000 Zitationen
  • Integration in InsightFace und viele weitere Frameworks
  • Grundlage zahlreicher Top-Ergebnisse bei NIST FRVT

Skalierung mit Partial FC (CVPR 2022)

Training im großen Maßstab

Mit Millionen Identitäten wird die Klassifikationsschicht zum Flaschenhals. Partial FC begegnet diesem Problem wie folgt:

  • pro Iteration wird nur ein Teil der Class Center gesampelt
  • Training mit 10M+ Identitäten auf einer einzelnen Maschine wird möglich
  • Speicher- und Rechenbedarf sinken deutlich bei stabiler Genauigkeit
  • essenziell für produktive Large-Scale-Modelle

Umgang mit Rauschen: Sub-center ArcFace (ECCV 2020)

Robustes Training mit verrauschten Daten

Reale Trainingsdaten enthalten oft Fehlbeschriftungen. Sub-center ArcFace adressiert dieses Problem durch:

  • K Sub-Center pro Klasse statt nur eines einzelnen Zentrums
  • dominante Sub-Center modellieren saubere Samples
  • nicht-dominante Sub-Center absorbieren Rauschen
  • Unterstützung für automatische Noise Detection und Cleaning

Stand der Technik

InsightFace Recognition Pipeline

InsightFace stellt eine vollständige Face-Recognition-Pipeline bereit:

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

Das Model Zoo von InsightFace bietet vortrainierte Modelle für unterschiedliche Deployment-Szenarien:

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%

Zukunftsausblick

Das Feld entwickelt sich weiter in Richtung:

  • Masked Face Recognition: robuste Erkennung trotz Teilverdeckung
  • Cross-age Recognition: Identifikation über große Altersunterschiede hinweg
  • Privacy-preserving Recognition: Homomorphic Encryption und Federated Learning
  • 3D Face Recognition: Nutzung von Tiefeninformationen zur weiteren Qualitätssteigerung

Fazit

Von Eigenfaces bis ArcFace hat Face Recognition eine enorme Entwicklung durchlaufen. ArcFace, Partial FC und Sub-center ArcFace von InsightFace stehen im Zentrum dieser Entwicklung und liefern Forschung und Industrie leistungsstarke Bausteine für moderne Gesichtserkennung.