Artificial Intelligence (AI)

Guide to Face Recognition at Massive Scale with Partial FC

Written by smirow

Einführung

Wenn es um Gesichtserkennung geht, verschieben Forscher ständig die Grenzen der Genauigkeit und Skalierbarkeit. Allerdings stellt das exponentielle Wachstum der Identitäten in Verbindung mit der begrenzten Kapazität des GPU-Speichers eine erhebliche Herausforderung dar. Frühere Studien konzentrierten sich hauptsächlich auf die Verfeinerung von Verlustfunktionen für Netzwerke zur Extraktion von Gesichtsmerkmalen, wobei Softmax-basierte Verlustfunktionen zu Fortschritten bei der Gesichtserkennungsleistung führten. Es erweist sich jedoch als immer schwieriger, die wachsende Kluft zwischen der wachsenden Anzahl von Identitäten und den Einschränkungen des GPU-Speichers zu überbrücken. In diesem Artikel werden wir groß angelegte Gesichtserkennungsstrategien mit Partial FC untersuchen.

Leitfaden zur großflächigen Gesichtserkennung mit partiellem FC

Lernziele

  • Erfahren Sie mehr über die Herausforderungen, die der Softmax-Verlust bei der groß angelegten Gesichtserkennung mit sich bringt, wie z. B. Rechenlast und Identitätsvolumen.
  • Entdecken Sie die Partial Fully Connected (PFC)-Schicht, die den Speicher und die Berechnung bei Gesichtserkennungsaufgaben optimiert, einschließlich ihrer Vor- und Nachteile und Anwendungen.
  • Implementieren Sie Partial FC in Gesichtserkennungsprojekten mit Anleitungstipps, Codeausschnitten und Ressourcen.

Dieser Artikel wurde im Rahmen der veröffentlicht Data Science-Blogathon.

Was ist ein Softmax-Engpass?

Softmax-Verlust und seine Varianten wurden weithin als Ziele für Gesichtserkennungsaufgaben übernommen. Diese Funktionen führen globale Feature-Class-Vergleiche durch, wenn sie zwischen den Einbettungs-Features und der linearen Transformationsmatrix multiplizieren.

Wenn es jedoch um eine große Anzahl von Identitäten im Trainingssatz geht, übersteigen die Kosten für die Speicherung und Berechnung der endgültigen linearen Matrix oft die Möglichkeiten der aktuellen GPU-Hardware. Dies kann zu Trainingsausfällen führen.

Frühere Beschleunigungsversuche

Frühere Beschleunigungsversuche

Forscher haben verschiedene Techniken untersucht, um diesen Engpass zu beseitigen. Jeder hat seine eigenen Kompromisse und Einschränkungen.

HF-softmax verwendet einen dynamischen Auswahlprozess für aktive Klassenzentren innerhalb jedes Mini-Batches. Diese Auswahl wird durch die Erstellung einer zufälligen Hash-Gesamtstruktur im Einbettungsraum erleichtert, die das Abrufen der nächstgelegenen ungefähren Klassenzentren basierend auf Merkmalen ermöglicht. Es ist jedoch wichtig zu beachten, dass es wichtig ist, alle Klassenzentren im RAM zu speichern und den für die Wiederherstellung von Funktionen erforderlichen Rechenaufwand nicht zu vernachlässigen.

Andererseits unterteilt die Softmax-Dissektion den Softmax-Verlust in klasseninterne und klassenübergreifende Ziele und reduziert so redundante Berechnungen für die klassenübergreifende Komponente. Obwohl dieser Ansatz lobenswert ist, ist seine Anpassungsfähigkeit und Vielseitigkeit begrenzt, da er nur für bestimmte Softmax-basierte Verlustfunktionen gilt.

Beide Methoden basieren auf dem Prinzip der Datenparallelität beim Multi-GPU-Training. Trotz Versuchen, die Softmax-Verlustfunktion mit einer Teilmenge von Klassenzentren anzunähern, verursachen sie immer noch erhebliche Kommunikationskosten zwischen GPUs für die Gradientenmittelung und die SGD-Synchronisierung. Darüber hinaus ist die Auswahl an Klassenzentren durch die Speicherkapazität einzelner GPUs begrenzt, was deren Skalierbarkeit weiter einschränkt.

Parallelmodell: ein Schritt in die richtige Richtung

Die ArcFace-Verlustfunktion führte Modellparallelität ein, die die Softmax-Gewichtsmatrix auf verschiedenen GPUs trennt und den Softmax-Verlust der gesamten Klasse mit minimalem Kommunikationsaufwand berechnet. Mit diesem Ansatz wurden 1 Million Identitäten mithilfe von acht GPUs auf einem einzigen Computer erfolgreich trainiert.

Der parallele Modellansatz unterteilt die Softmax-Gewichtsmatrix W ∈ R (d×C) in k Untermatrizen w der Größe d × (C/k), wobei d die Dimension des Integrationsmerkmals und C die Anzahl der Klassen ist. Jede Wi-Submatrix wird dann auf der i-ten GPU platziert.

Um die endgültigen Softmax-Ausgaben zu berechnen, berechnet jede GPU unabhängig den Zähler e^((wi)T * X), ​​​​wobei X das Eingabemerkmal ist. Der Nenner ∑ j=1 bis C e^((wj)T * lokale Summen zur Berechnung der globalen Summe.

Dieser Ansatz reduziert die Kommunikation zwischen GPUs im Vergleich zur naiven Datenparallelität erheblich, da nur lokale Summen anstelle von Gradienten für die gesamte Gewichtsmatrix W kommuniziert werden müssen.

Weitere Einzelheiten zur ArcFace-Verlustfunktion finden Sie in meinem vorherigen Blog (ArcFace-Verlustfunktion für tiefe Gesichtserkennung), in dem ich sie ausführlich erläutert habe.

Speichergrenzen für parallele Modelle

Obwohl die Modellparallelität den Speicheraufwand beim Speichern der Gewichtsmatrix W verringert, führt sie zu einem neuen Engpass: dem Speichern vorhergesagter Logits.

Die vorhergesagten Logits sind Zwischenwerte, die im Vorwärtsdurchlauf berechnet werden, und ihr Speicherbedarf skaliert mit der Gesamtstapelgröße über alle GPUs hinweg. Mit steigender Anzahl an Identitäten und GPUs kann der Speicherverbrauch für die Speicherung von Protokollen schnell die Speicherkapazität der GPU übersteigen.

Diese Einschränkung schränkt die Skalierbarkeit des parallelen Modellansatzes ein, selbst bei einer zunehmenden Anzahl von GPUs.

Teilweise FC-Übersicht

Um die Einschränkungen bisheriger Ansätze zu überwinden, schlagen die Autoren des Artikels „Partial FC“ eine revolutionäre Lösung vor!

Teilweise FC (vollständig verbunden)

Partial FC führt einen Softmax-Approximationsalgorithmus ein, der modernste Genauigkeit aufrechterhalten kann und dabei nur einen Bruchteil (z. B. 10 %) der Klassenzentren verwendet. Durch die sorgfältige Auswahl einer Untergruppe von Klassenzentren während des Trainings kann der Speicher- und Rechenbedarf erheblich reduziert werden. Dies wird das Training von Gesichtserkennungsmodellen mit einer beispiellosen Anzahl von Identitäten weiter ermöglichen.

Teilweise FC

Die Magie von Partial FC

Der Schlüssel zur Magie von Partial FC liegt darin, wie es Klassenzentren für jede Iteration auswählt. Es werden zwei Strategien vorgeschlagen:

  • Völlig zufällig: Eine zufällige Teilmenge (r %) der Klassenzentren wird ausgewählt, um den Verlust zu berechnen und die Gewichte zu aktualisieren. Dies kann alle positiven Klassenzentren in dieser Iteration einschließen oder auch nicht.
  • Positiv plus zufällig negativ (PPRN): Eine Teilmenge (r%) von Klassenzentren wird ausgewählt, dieses Mal umfasst sie jedoch alle zufällig ausgewählten positiven Klassenzentren und negativen Klassenzentren.

Untersuchungen zufolge übertrifft PPRN den vollständig zufälligen Ansatz, insbesondere bei niedrigeren Stichprobenraten. Tatsächlich garantiert PPRN, dass die Gradienten sowohl die Richtung lernen, in die die Stichprobe von negativen Zentren wegbewegt wird, als auch das Clustering-Ziel innerhalb der Klasse.

Durch die Aufteilung der Softmax-Gewichtsmatrix auf mehrere GPUs und die Partitionierung der Eingabebeispiele auf diese GPUs stellt Partial FC sicher, dass jede GPU nur eine Teilmenge der Identitäten verarbeitet. Dieser geniale Ansatz löst nicht nur den Speicherengpass, sondern minimiert auch die kostspielige Inter-GPU-Kommunikation, die für die Gradientensynchronisierung erforderlich ist.

Die Magie von Partial FC

Vorteile der partiellen FC

  • Durch die zufällige Auswahl negativer Klassenzentren ist Partial FC weniger von Etikettenrauschen oder Konflikten zwischen Klassen betroffen.
  • Bei Long-Tail-Verteilungen, bei denen einige Klassen deutlich weniger Stichproben haben als andere, vermeidet Partial FC eine übermäßige Aktualisierung weniger häufiger Klassen, was zu einer besseren Leistung führt.
  • Partial FC kann mehr als 10 Millionen Identitäten mit nur 8 GPUs trainieren, während ArcFace mit der gleichen Anzahl an GPUs nur 1 Million Identitäten verarbeiten kann.

Nachteile der partiellen FC

  • Die Wahl einer geeigneten Abtastrate (r%) ist entscheidend für die Aufrechterhaltung von Genauigkeit und Effizienz. Ein zu niedriger Durchsatz kann die Leistung beeinträchtigen, während ein zu hoher Durchsatz die Speicher- und Rechenvorteile zunichte machen kann.
  • Der Zufallsstichprobenprozess kann zu Rauschen führen, das sich bei unsachgemäßer Handhabung auf die Modellleistung auswirken kann.

Entfesseln Sie die Kraft von Partial FC

Partial FC ist einfach zu verwenden. Das Dokument enthält klare Anweisungen und Code zum Hinzufügen zu Ihren Projekten. Darüber hinaus haben sie einen riesigen, hochwertigen Datensatz (Glint360K) veröffentlicht, um Ihre Modelle mit Partial FC zu trainieren. Mit diesen Tools kann jeder die Leistungsfähigkeit der Gesichtserkennung in großem Umfang nutzen.

def sample(self, labels, index_positive):
    with torch.no_grad():
        positive = torch.unique(labels[index_positive], sorted=True).cuda()
        if self.num_sample - positive.size(0) >= 0:
            perm = torch.rand(size=[self.num_local]).cuda()
            perm[positive] = 2.0
            index = torch.topk(perm, k=self.num_sample)[1].cuda()
            index = index.sort()[0].cuda()
        else:
            index = positive
        self.weight_index = index

        labels[index_positive] = torch.searchsorted(index, labels[index_positive])

    return self.weight[self.weight_index]

Der bereitgestellte Codeblock kann Partial FC in Python implementieren. Als Referenz können Sie mein Repository erkunden, das aus dem Insight Face-Repository stammt.

Abschluss

Partial FC ist ein Game-Changer in der Gesichtserkennung. Es ermöglicht Ihnen, Modelle mit viel mehr Identitäten als je zuvor zu trainieren. Diese Technik überdenkt die Skalierung von Modellen und bringt Speicher, Geschwindigkeit und Genauigkeit in Einklang. Mit Partial FC ist die Zukunft der groß angelegten Gesichtserkennung unglaublich! Behalten Sie Partial FC im Auge, es wird das Feld revolutionieren.

Die zentralen Thesen

  • Partial FC behebt den Engpass von Softmax bei der Gesichtserkennung durch Optimierung von Speicher und Berechnung.
  • Partial FC wählt Teilmengen von Klassenzentren für das Training aus und verbessert so die Skalierbarkeit und Robustheit.
  • Zu den Vorteilen gehören Robustheit gegenüber Rauschen und Konflikten sowie eine enorme Skalierbarkeit auf bis zu 10 Millionen Identitäten.
  • Zu den Nachteilen zählen die sorgfältige Auswahl der Abtastrate und die mögliche Entstehung von Rauschen.
  • Die Implementierung von Partial FC umfasst die Partitionierung von Softmax-Gewichten auf GPUs und die Auswahl von Teilmengen für das Training.
  • Codeausschnitte wie die bereitgestellte Funktion „sample()“ ermöglichen eine einfache Implementierung von Partial FC.
  • Partial FC definiert die Gesichtserkennung im großen Maßstab neu und bietet beispiellose Skalierbarkeit und Genauigkeit.

Die in diesem Artikel vorgestellten Medien sind nicht Eigentum von Analytics Vidhya und werden nach dem Ermessen des Autors verwendet.

About the author

smirow

Leave a Comment