
In den letzten Jahren wurden in der Gesichtserkennung erhebliche Fortschritte erzielt. Dieser Bericht bietet einen kurzen Überblick über wichtige Aufgaben, Modelle und Lösungsmethoden und konzentriert sich dabei auf die Entwicklung von Verlustfunktionen.
Vereinfacht ausgedrückt ist Gesichtserkennung eine Methode zur Identifizierung oder Überprüfung der Identität einer Person anhand von Fotos, Videos oder Echtzeitaufnahmen. In dieser Studie wird die Identifizierung anhand eines einzelnen digitalen Bildes oder Videobildes untersucht.
Die Anwendungsmöglichkeiten der Gesichtserkennung (FR) sind vielfältig. Sie wird im Finanzsektor, in der Cybersicherheit, der Videoüberwachung, bei Smart-Home-Diensten, der Multi-Faktor-Authentifizierung usw. eingesetzt.
Über diese praktischen Anwendungen hinaus spielen FR-Modelle auch in modernen generativen Modellen eine Schlüsselrolle. Sie werden häufig zur Bekämpfung von Identifikationsverlusten in Gesichtswiederherstellungsmodellen wie GFPGAN und CodeFormer, Gesichtsaustauschtools wie SimSwap und FaceShifter, Image-to-Image-GAN-basierten Modellen wie pSp und HyperStyle sowie in Transformer-basierten und Stable-Diffusion-Modellen zur Identitätserhaltung eingesetzt.
ArcFace (2018–2019) ist die am häufigsten verwendete Identifikationsverlustfunktion, während CosFace (2018) und FaceNet viel seltener verwendet werden.
In dieser Rezension werde ich mich darauf konzentrieren, wie sich die FR-Landschaft seit ArcFace, insbesondere in den letzten Jahren, verändert hat.
Die Gesichtserkennung erfordert eine Vorverarbeitung: Gesichtserkennung, Zuschneiden und Ausrichtung. Die Vorverarbeitung sollte für Trainings- und Testdaten identisch sein und üblicherweise eine FFHQ-ähnliche Ausrichtung (Flickr-Faces-HQ-Datensatz) verwenden. Typischerweise werden hierfür zwei separate zusätzliche Detektoren verwendet: ein Gesichtsbegrenzungsrahmen-Detektor und ein Gesichtslandmarken-Detektor. Es gibt End-to-End-Modelle mit Ausrichtung, die zusammen mit dem Hauptmodell trainiert werden, auf die ich in diesem Teil der Überprüfung jedoch nicht eingehe. Hier gehen wir davon aus, dass die Trainings- und Testdatensätze einheitlich zugeschnitten und ausgerichtet sind. Daher wird das Modell mit zugeschnittenen und ausgerichteten Eingaben gespeist.
Im Trainingsdatensatz für die FR-Aufgabe gibt es für jede Identität (Person) mehrere Bilder. Die Aufgabe des Modells besteht darin, zu lernen, zwischen Fotos derselben Person und Fotos verschiedener Personen zu unterscheiden.
Das Modell besteht in der Regel aus zwei Komponenten:
Backbone. Ein Backbone, auch Feature-Extraktor genannt, verwendet ein vorverarbeitetes Gesichtsfoto als Eingabe und gibt einen Feature-Vektor von Einbettungen aus. Klassische Backbones sind Convolutional Neural Networks (CNN) wie ResNet, VGGNet, ResFace, SE-ResNet und andere. Dies können auch VisionTransformer- oder Feature Pyramid Network-Modelle oder deren komplexere Varianten sein. Wir werden in diesem Teil der Rezension nicht näher auf die Backbones von Modellen eingehen.
Verlustfunktion. In der Trainingsphase wird eine Verlustfunktion angewendet, um das Backbone-Training zu überwachen. Ziel des Trainings ist es, ein Modell zu erhalten, das enge Einbettungen für verschiedene Fotos derselben Person und weit entfernte Einbettungen für verschiedene Gesichter erzeugt. Dabei wird die Distanz zwischen Einbettungsvektoren beispielsweise mithilfe der Kosinusdistanz oder der L2-Distanz gemessen.
Die erste Kategorie wird als „paarbasierter Verlust“ bezeichnet, manchmal werden sie auch als „auf metrischem Lernen basierende Methoden“ bezeichnet: Kontrastverlust, Triplettverlust, N-Paar-Verlust.
Diese Methoden kombinieren entweder die positiven und negativen Stichprobenpaare vor dem Modelltraining oder dynamisch online während des Trainings. Beide Methoden ermöglichen die Extraktion aussagekräftiger Gesichtsdarstellungen auf Stichprobenebene, würden jedoch die Datenmenge exponentiell erhöhen.
Das Trainingsschema mit Triplettverlust sieht folgendermaßen aus. Zwei Beispiele mit demselben Label sollten ihre Einbettungen im Einbettungsraum nahe beieinander haben. Zwei Beispiele mit unterschiedlichen Labels haben ihre Einbettungen weit voneinander entfernt.
Das schnelle Wachstum der Anzahl möglicher Paare mit der Größe des Datensatzes zwingt uns, nach Paarauswahlstrategien zu suchen, die normalerweise empirisch und rechnerisch komplex sind.
Eine weitere Kategorie ist der sogenannte „klassifizierungsbasierte Verlust“ oder manchmal auch „prototypbasierte Lernmethoden“: Softmax-Verlust, CosFace, ArcFace, NormFace. Diese Methoden arbeiten mit verallgemeinerten Informationen über Klassen unter Verwendung eines Prototyps, auch Klassenproxy oder Klassenzentrum genannt. Prototypen sind lernbare Parameter, die während des Modelltrainings aktualisiert werden. Derzeit werden klassifizierungsbasierte Verluste hauptsächlich für Gesichtserkennungsmodelle eingesetzt.
Wenn wir die FR-Aufgabe als Klassifizierung betrachten, können wir den Softmax-Verlust verwenden (ein anderer Name ist kategorischer Kreuzentropieverlust). Im Wesentlichen ist der Softmax-Verlust eine Softmax-Aktivierungsfunktion + Kreuzentropieverlust.
Erinnern wir uns an die Formeln. Die erste ist die Softmax-Aktivierung und die zweite der Cross-Entropy-Verlust.
Durch Kombinieren erhalten Sie:
Die Verlustfunktion erhält das Ergebnis der letzten vollständig verbundenen Schicht, wobei 𝒙𝒊 das Einbettungsmerkmal des 𝑖-ten Trainingsbildes bezeichnet, 𝑦𝑖 die Bezeichnung von 𝒙𝒊 ist und 𝑾 das Gewicht der letzten vollständig verbundenen Schicht bezeichnet.
Dies funktioniert, aber es gibt ein Problem: Die Grenzen zwischen den Klassen verschwimmen. Ein neuer Schritt in der FR wurde 2018 mit der Einführung des ArcFace-Modells gemacht. Die Grundlage bleibt der Softmax-Verlust, aber wir betrachten nun die Winkel zwischen Vektoren. Erinnern wir uns an die Formel der Kosinusähnlichkeit:
Nehmen wir eine Substitution in der Softmax-Verlustformel vor
Anschließend wird ein Rand hinzugefügt, sodass die Winkel innerhalb der Klassen kleiner und die Winkel zwischen den Klassen größer werden. Dadurch entsteht eine Lücke zwischen den Klassen anstelle der verschwommenen Grenzen des Softmax-Verlusts.
Ähnliche Methoden: Wenn wir cos(θ + m) durch cos θ − m ersetzen, erhalten wir den CosFace-Verlust.
Bei den auf Softmax basierenden Methoden wird davon ausgegangen, dass der Prototyp in der Koeffizientenmatrix der letzten linearen Schicht gespeichert ist, d. h. Pi = Wi, der Prototyp wird mithilfe seines Gradienten bei der Backpropagation aktualisiert (daher der Name „auf Prototyp-Lernen basierende Methoden“).
Hier beginnt die Geschichte der modernen Verlustfunktionen für FR. Im Laufe der Jahre sind viele Modifikationen und Verbesserungen erfolgt, aber die oben angegebenen Formeln reichen aus, um das weitere Material zu verstehen.
Eine der Verbesserungen erschien 2020. Sie heißt Sub-center ArcFace und ist für verrauschte Datensätze konzipiert. Die Einschränkung der Intra-Klassen-Kompaktheit führt zu Überanpassung bei verrauschten Daten. Sub-center ArcFace führt Unterklassen ein. Eine Stichprobe in einem Trainingsbatch sollte nahe an einem der positiven Unterzentren liegen, nicht an allen. Dies reduziert den Einfluss von Rauschen in den Daten.
2020,
Sowohl ArcFace- als auch Sub-Center-ArcFace-Modelle verfügen über Implementierungen innerhalb der Insightface-Bibliothek, einschließlich Code für Training und vortrainierte Gewichte.
Insightface verfügt über eine Implementierung von ArcFace mit verschiedenen Backbones: iresnet (34,50,100,200,2060), mobilefacenet, vit (VisionTransformer).
Die Betrachtung verschiedener Backbones geht über den Rahmen dieses Artikels hinaus. Daher werde ich nur die Namen der Backbones angeben, die für die jeweiligen Verluste verwendet wurden. In den meisten Fällen haben die Autoren der Verluste nicht versucht, das optimale Backbone auszuwählen, sondern einfach eines der gängigen oder das in den Modellen verwendete Backbone verwendet, mit denen sie einen Vergleich durchführen wollten.
Für das Training wurden die Datensätze MS1M, Glint360K, WebFace42M verwendet.
Die größte Herausforderung bei Gesichtserkennungsmethoden ist das Datenrauschen. Prototypenbasierte Lernmethoden reagieren empfindlich auf durch Rauschen verursachte Prototypenverzerrungen. Eine Möglichkeit, Über- und Unteranpassung auszugleichen, ist die Anpassung des Randes, dem Hauptparameter bei Softmax-basierten Verlusten.
Eine der ersten Methoden zum Anpassen von Maßstab und Winkelrand für cosinusbasierte Softmax-Verluste wie L2-Softmax, CosFace und ArcFace.
Implementiert das empirische Prinzip, dass die Lerngeschwindigkeit mit der Optimierung des Netzwerks abnehmen sollte. Der Artikel führt eine Modulationsvariable ein, die dem Median aller Winkel im Mini-Batch für die entsprechenden Klassen entspricht und in etwa den aktuellen Grad der Modelloptimierung darstellt. Bei einem großen Medianwinkel sind die Gitterparameter alles andere als optimal, und es werden ein größerer Maßstab und Rand angewendet, und umgekehrt.
2019,
Trainiert mit CASIA-WebFace- und MS1M-Datensätzen, Eingabeauflösung 144 × 144. Getestet mit LFW-, MegaFace- und IJB-C-Datensätzen, verglichen mit L2-Softmax-, CosFace- und ArcFace-Verlusten.
In den letzten Jahren sind mehrere bahnbrechende Methoden zur Anwendung adaptiver Ränder in FR entstanden, wie z. B. Dyn-ArcFace (2022), MagFace (2021) und ElasticFace (2021). Wir werden uns jedoch auf eine der neuesten Arbeiten in diesem Bereich konzentrieren – X2-Softmax (2023).
Im Vergleich zu AdaCos versucht X2-Softmax, die ungleichmäßige Verteilung der Klassen zu berücksichtigen. Ein fester Rand, der zwischen einigen Klassen geeignet ist, kann für die Konvergenz zwischen anderen Klassen zu groß oder für die Gewährleistung einer signifikanten Kompaktheit der Gesichtsmerkmale innerhalb der Klassen zu klein sein.
2023,
Bei Klassen mit großen Winkeln ist zur Erhöhung der Kompaktheit ein großer Rand erforderlich, bei Klassen mit kleinen Winkeln ein kleinerer.
Erinnern wir uns an die allgemeine Formel für Softmax-basierte Verluste:
Hier unterscheidet sich bei Verlusten wie ArcFace oder CosFace lediglich die Logits-Funktion f(θ). Für die X2-Softmax-Verlustfunktion sieht sie wie folgt aus:
Traditionelle Softmax-basierte Verluste verwenden den Kosinus. Dieser wird jedoch bei der Erweiterung in eine Taylorreihe zu einer quadratischen Funktion, daher wird für X2-Softmax eine quadratische Funktion gewählt. Durch das Verwerfen höherwertiger Terme von x und das Beibehalten konstanter und quadratischer Terme kann eine Überanpassung des Modells vermieden werden.
Hier sind a, h und k Hyperparameter: h und k bestimmen die Scheitelpunktposition der Logit-Funktionskurve und a bestimmt die Richtung der Öffnung der Kurve und den Grad der Clusterung.
Wenn in X2-Softmax der Winkel zwischen den Gewichten θ zunimmt, nimmt gleichzeitig der Winkelspielraum ∆θ monoton zu.
Bei zwei ähnlichen Klassen erleichtert ein kleiner Rand die Konvergenz des Modells. Bei zwei weniger ähnlichen Klassen wird ein größerer Rand zugewiesen, um die Trennung der Gesichtsmerkmale zwischen den Klassen zu verbessern.
Für das Training wählten die Autoren das Resnet50-Backbone. Das Modell wurde mit dem MS1Mv3-Datensatz trainiert (basierend auf dem von RetinaFace vorverarbeiteten MS-Celeb-1M, um verrauschte Bilder zu entfernen) – 93.000 Identitäten und 5,1 Millionen Gesichtsbilder.
Die meisten Verluste mit flexiblen Margen bleiben innerhalb der Softmax-basierten Verluste, es gibt jedoch Ausnahmen. SFace verzichtet auf Softmax-basierte Verluste, behält aber die Idee der Optimierung von Intra- und Interklassendistanzen bei. Das Modell legt Intra- und Interklassenbeschränkungen für die Hypersphärenmannigfaltigkeit fest, die durch zwei Sigmoidkurven gesteuert werden. Kurven transformieren Gradienten, indem sie die Geschwindigkeit steuern, mit der sich Koeffizienten ändern, wenn sie sich dem Schwerpunkt der Ziel- oder Fremdklasse nähern.
2022,
Im Vergleich zu Methoden der direkten Randoptimierung wird hierdurch ein feineres Gleichgewicht zwischen Überanpassung und Unteranpassung erreicht, wobei der Einfluss einzelner verrauschter Proben auf den endgültigen Verlust geringer ist.
Die Idee, Gesichtseinbettungen zu begrenzen, um sie auf einer Hypersphärenmannigfaltigkeit diskriminierend zu machen, wurde beispielsweise bereits in Sphereface (Deep Hypersphere Embedding for Face Recognition, 2017) gesehen.
Das Ziel besteht darin, die Distanz innerhalb der Klassen zu verringern und die Distanz zwischen den Klassen zu erhöhen. Der sigmoid-beschränkte Hypersphärenverlust kann wie folgt formuliert werden:
Wobei 𝜃𝑦𝑖 der Winkelabstand zwischen dem Einbettungsmerkmal des 𝑖-ten Trainingsbildes und dem entsprechenden Prototyp ist. 𝜃j ist der Winkelabstand zu den Fremdprototypen.
Die Funktionen 𝑟𝑖𝑛𝑡𝑟 und 𝑟𝑖𝑛𝑡𝑒𝑟 dienen der Neuskalierung von Zielen innerhalb und zwischen Klassen sowie der Steuerung des Optimierungsgrads. [·]𝑏 ist der Blockgradientenoperator, der verhindert, dass der Beitrag seiner Eingaben bei der Berechnung von Gradienten berücksichtigt wird.
Als Gradienten-Neuskalierungsfunktionen werden Sigmoidfunktionen gewählt:
Die Autoren wählten Sigmoidfunktionen als Gradienten-Neuskalierungsfunktionen:
𝑠 ist die obere Asymptote zweier Sigmoidkurven als Anfangsskala des Gradienten, und 𝑘 steuert die Steigung der Sigmoidkurven. Die Hyperparameter 𝑎 und 𝑏 bestimmen den horizontalen Achsenabschnitt zweier Sigmoidkurven und steuern tatsächlich das flexible Intervall zur Unterdrückung der Bewegungsgeschwindigkeit.
Im Vergleich zu Softmax-basierten Verlustfunktionen können sowohl die Intra-Klassen- als auch die Inter-Klassen-Distanz von SFace auf ein bestimmtes Maß beschränkt und daher auf moderate Weise optimiert werden, was genau der Vorteil von SFace ist.
Für das Training wählten die Autoren das ResNet-Backbone (wie für Arcface).
Das Modell wurde anhand der Datensätze CASIA-WebFace, VGGFace2 und MS-Celeb-1M trainiert.
Eine andere Möglichkeit, mit verrauschten Daten umzugehen, besteht darin, zu berücksichtigen, dass die Einbettung für eine Identität (für alle Gesichter, die zu einer Person gehören) kein Punkt im Raum ist, sondern vielmehr eine Verteilung, die eine Erwartung, eine Varianz und möglicherweise Ausreißer aufweist.
Bei der Gesichtserkennung wurden paarbasierte Verluste aufgrund der Trainingskomplexität aufgegeben. Beim Arbeiten mit gemittelten Prototypen gehen jedoch einige Informationen verloren. Bei einem prototypbasierten Ansatz kann das Training aufgrund des Einflusses von Ausreißern auf die Prototypen in lokalen Minima oder Überanpassung stecken bleiben.
2021,
VPL – stellt jede Klasse als Verteilung und nicht als Punkt im latenten Raum dar.
VPL optimiert die Ähnlichkeit zwischen Beispielen aus einem Trainingssatz und einem Satz von Variationsprototypen, die aus einer klassenweisen Verteilung entnommen werden.
Die Verteilung der Prototypen ist in M gespeichert und nimmt in ∆t-Schritten ab. Die Autoren trainierten den Verlust mit den Backbones ResNet50, ResNet100 und MXNet, wobei MXNet als letztes Testsystem ausgewählt wurde. Für das Training wurde der MS1M-Datensatz verwendet, die Eingabegröße der Gesichtsausschnitte beträgt 112×112.
Es gibt mehrere Ansätze, die das Thema der Ergänzung prototypbasierter Methoden durch die Vorteile paarbasierter Verluste (auch als Sample-to-Sample-basierte Modelle bezeichnet) fortsetzen, wie z. B. UniTSFace (2023) oder UNPG (Unified Negative Pair Generation toward Well-discriminative Feature Space for Face Recognition, 2022). In diesem Artikel konzentriere ich mich auf einen der neuesten Verluste: EPL.
Beim marginbasierten Softmax-Verlust wird der Verlust im Vergleich zu Prototypen (Klassenzentren) berechnet; alle Beispiele einer Klasse werden während des Trainings zu einem gemeinsamen Zentrum gezogen. Dieses wird während des Trainings als Durchschnitt betrachtet und wird stark von Ausreißern der Beispiele beeinflusst, die vom Prototypzentrum abweichen können. Bei Softmax-basierten Methoden wird der Prototyp als in der Koeffizientenmatrix der letzten linearen Schicht gespeichert betrachtet, d. h. Pi = Wi. Der Prototyp wird mithilfe seines Gradienten in der Backpropagation aktualisiert, und die Verlustfunktion maximiert die Ähnlichkeit zwischen den Merkmalen der Beispiele und der entsprechenden Prototypen.
2024,
In EPL werden Prototypen generiert und aktualisiert:
Dabei ist „α“ der adaptive Aktualisierungskoeffizient, der unter Verwendung des Merkmals x und seines Prototyps generiert wird, „σ“ ist eine Aktivierungsfunktion zum Anpassen des Aktualisierungskoeffizienten an einen geeigneten Bereich und s(·, ·) ist eine Ähnlichkeitsfunktion, die normalerweise als Kosinusfunktion angesehen wird.
Der empirische Prototyp wird nur anhand „positiver“ Beispiele aktualisiert, um den Einfluss von Ausreißern benachbarter Klassen zu vermeiden.
Trainingsprozess: Der Encoder extrahiert die Merkmale, adaptive Koeffizienten α werden berechnet, um den empirischen Prototyp zu aktualisieren, die Ähnlichkeiten zwischen den Merkmalen und den Prototypen werden verwendet, um den Verlust für das Encoder-Training zu berechnen.
Um die Möglichkeiten des Prototypenlernens und des empirischen Prototypenlernens umfassend zu nutzen, kombiniert EPL diese zu einer Summe und führt unterschiedliche Margen ein. Das ResNet-Backbone wurde für das Training und CASIA-WebFace als Trainingsdatensatz verwendet. Das Modell wurde an den Datensätzen MRF, IJB-C, LFW, CFP-FP, AgeDB und MegaFace getestet.
Wie aus dem Obigen hervorgeht, wird die Verlustmodifikation größtenteils verwendet, um das Problem verrauschter Daten und Überanpassung zu lösen, während das Backbone für die „Komplexität“ des Modells verantwortlich ist, es gibt jedoch Ausnahmen.
Dieser Artikel stellt den Transformer-Metrik-Verlust vor – eine Kombination aus Standardmetrik-Verlust und Transformer-Verlust (Transformer-Netzwerk als additiver Verlust). Transformer-Netzwerke besitzen die Fähigkeit, sequenzielle räumliche Beziehungen zu bewahren, wodurch die Unterscheidungskraft der Verlustfunktion erhöht und das Modell in komplexeren Fällen (z. B. für altersinvariante FR) angewendet werden kann.
Die Besonderheit dieses Modells besteht darin, dass der Transformator nicht als Rückgrat verwendet wird, wie dies beispielsweise im Face-Transformer-Modell üblich ist. Stattdessen werden die Merkmale der letzten Faltungsschicht an zwei Verlustzweige gesendet. Der erste Zweig ist eine reguläre Abflachungsschicht und ein metrischer Verlust danach (in diesem Fall ArcFace, es könnte aber auch jeder andere klassifizierungsbasierte Verlust sein).
In Zweig 2 nehmen wir die Ausgabe der Größe H × B × D und transformieren sie in S Vektoren der Größe 1 × 1 × D. Diese Sequenz kann als eine Folge von Einbettungen aus Patches für einen Standard-Transformer-Encoder betrachtet werden. Nach der Transformer-Encoder-Schicht wird eine lineare Schicht ohne zusätzliche Aktivierungs- oder Dropout-Einstellungen angewendet. Anschließend berechnet die Kreuzentropiefunktion den Verlust für die Ausgabewahrscheinlichkeitsverteilung (für die Ziel-N-Klassen). Beide Verluste von „Zweig 1“ und „Zweig 2“ werden über eine gewichtete Summe kombiniert.
In der Validierungsphase (Testphase) wird der zweite Zweig abgeschnitten und nur Einbettungen aus dem standardmäßigen ersten Zweig verwendet. Zum Testen von MS1M-arcface und WebFace4M (eine Teilmenge von WebFace 260M).
In diesem Bericht haben wir uns auf einen Bereich von Gesichtserkennungssystemen konzentriert – Verlustfunktionen. Dies ermöglichte uns einen Überblick über neue Entwicklungen und aktuelle Artikel in diesem Bereich. Alle diese Bereiche entwickeln sich jedes Jahr weiter.
Die folgenden Themen wurden in diesem Teil der Überprüfung ausgelassen: