Gesichtserkennung mit Haar-Kaskaden¶

Grundlagen¶

Die Objekterkennung mit Haar Feature-based cascade classifiers ist eine effektive Objekterkennungsmethode, die von Paul Viola und Michael Jones in ihrem Artikel „Rapid Object Detection using a Boosted Cascade of Simple Features“ aus dem Jahr 2001 vorgeschlagen wurde. Es ist ein auf maschinellem Lernen basierender Ansatz, bei dem eine Kaskadenfunktion aus vielen positiven und negativen Bildern trainiert wird. Es wird dann verwendet, um Objekte in anderen Bildern zu erkennen.

Hier arbeiten wir mit Gesichtserkennung. Zunächst benötigt der Algorithmus viele positive Bilder (Bilder von Gesichtern) und negative Bilder (Bilder ohne Gesichter), um den Klassifikator zu trainieren. Dann müssen wir Features daraus extrahieren. Dazu werden die im folgenden Bild gezeigten Haar-Funktionen verwendet. Sie sind genau wie unser Faltungskern. Jedes Feature ist ein einzelner Wert, der durch Subtraktion der Summe der Pixel unter dem weißen Rechteck von der Summe der Pixel unter dem schwarzen Rechteck erhalten wird.

Haar Features

Nun sind alle möglichen Größen und Positionen der einzelnen Kernel wird verwendet, um viele Funktionen zu berechnen. (Stellen Sie sich vor, wie viel Berechnung es braucht? Selbst ein 24×24 Fenster ergibt über 160000 Features). Für jede Merkmalsberechnung müssen wir die Summe der Pixel unter weißen und schwarzen Rechtecken ermitteln. Um dies zu lösen, führten sie die Integralbilder ein. Es vereinfacht die Berechnung der Summe der Pixel, wie groß die Anzahl der Pixel sein kann, zu einer Operation mit nur vier Pixeln. Nett, nicht wahr? Es macht die Dinge superschnell.

Aber unter all diesen Funktionen, die wir berechnet haben, sind die meisten von ihnen irrelevant. Betrachten Sie beispielsweise das Bild unten. Die obere Reihe zeigt zwei gute Funktionen. Das erste ausgewählte Merkmal scheint sich auf die Eigenschaft zu konzentrieren, dass die Region der Augen oft dunkler ist als die Region der Nase und der Wangen. Das zweite ausgewählte Merkmal beruht auf der Eigenschaft, dass die Augen dunkler sind als der Nasenrücken. Aber die gleichen Fenster, die auf Wangen oder an einem anderen Ort angewendet werden, sind irrelevant. Wie wählen wir also die besten Funktionen aus über 160000 Funktionen aus? Dies wird durch Adaboost erreicht.

Gesichtserkennung

Dafür wenden wir jede einzelne Funktion auf alle Trainingsbilder an. Für jedes Merkmal wird der beste Schwellenwert ermittelt, der die Gesichter in positiv und negativ klassifiziert. Aber offensichtlich wird es Fehler oder Fehlklassifizierungen geben. Wir wählen die Merkmale mit minimaler Fehlerrate aus, was bedeutet, dass sie die Merkmale sind, die die Gesichts- und Nichtgesichtsbilder am besten klassifizieren. (Der Prozess ist nicht so einfach. Jedes Bild wird am Anfang gleich gewichtet. Nach jeder Klassifizierung werden die Gewichte falsch klassifizierter Bilder erhöht. Dann wird der gleiche Vorgang erneut ausgeführt. Neue Fehlerraten werden berechnet. Auch neue Gewichte. Der Prozess wird fortgesetzt, bis die erforderliche Genauigkeit oder Fehlerrate erreicht ist oder die erforderliche Anzahl von Merkmalen gefunden wird).

Final classifier ist eine gewichtete Summe dieser schwachen Klassifikatoren. Es wird schwach genannt, weil es allein das Bild nicht klassifizieren kann, aber zusammen mit anderen einen starken Klassifikator bildet. Das Papier sagt sogar 200 Merkmale bieten Erkennung mit 95% Genauigkeit. Ihr endgültiges Setup hatte rund 6000 Funktionen. (Stellen Sie sich eine Reduzierung von 160000+ Features auf 6000 Features vor. Das ist ein großer Gewinn).

Jetzt machen Sie also ein Bild. Nehmen Sie jedes 24×24-Fenster. Wenden Sie 6000 Funktionen darauf an. Überprüfen Sie, ob es Gesicht ist oder nicht. Wow.. Wow.. Ist es nicht ein wenig ineffizient und zeitaufwendig? Ja, das ist es. Autoren haben dafür eine gute Lösung.

In einem Bild ist der größte Teil des Bildbereichs ein Nicht-Gesichtsbereich. Daher ist es eine bessere Idee, eine einfache Methode zu haben, um zu überprüfen, ob ein Fenster kein Gesichtsbereich ist. Wenn nicht, verwerfen Sie es in einem einzigen Schuss. Verarbeiten Sie es nicht erneut. Konzentrieren Sie sich stattdessen auf die Region, in der es ein Gesicht geben kann. Auf diese Weise können wir mehr Zeit finden, um eine mögliche Gesichtsregion zu überprüfen.

Dazu führten sie das Konzept der Kaskade von Klassifikatoren ein. Anstatt alle 6000 Features auf ein Fenster anzuwenden, gruppieren Sie die Features in verschiedene Stufen von Klassifikatoren und wenden Sie sie einzeln an. (Normalerweise enthalten die ersten Stufen sehr wenig Funktionen). Wenn ein Fenster in der ersten Phase fehlschlägt, verwerfen Sie es. Wir berücksichtigen keine verbleibenden Funktionen. Wenn dies der Fall ist, wenden Sie die zweite Stufe der Funktionen an und setzen Sie den Vorgang fort. Das Fenster, das alle Stufen passiert, ist ein Gesichtsbereich. Wie ist der Plan !!!

Der Detektor der Autoren hatte mehr als 6000 Merkmale mit 38 Stufen mit 1, 10, 25, 25 und 50 Merkmalen in den ersten fünf Stufen. (Zwei Funktionen im obigen Bild werden tatsächlich als die besten beiden Funktionen von Adaboost erhalten). Laut Autoren werden durchschnittlich 10 von über 6000 Features pro Unterfenster ausgewertet.

Posted on

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.