Frage

Bitte erklären Sie mir in wenigen Worten, wie die Viola-Jones-Gesichtserkennungsmethode funktioniert.

War es hilfreich?

Lösung

Der Viola-Jones-Detektor ist ein starker, Binärklassifizierer Aufbau von mehreren Schwache Detektoren

Each weak detector is an extremely simple binary classifier

Während der Lernphase wird eine Kaskade schwacher Detektoren geschult, um die gewünschte Trefferquote / Fehlrate (oder Präzision / Rückruf) unter Verwendung von Adaboost zum Erkennen von Objekten zu erhalten zur Kaskade

Wenn ein rechteckiges Bild Patch durch alle Kaskadenstufen fließt, wird es als „positiv“ eingestuft, der Prozess wird auf verschiedenen Skalen wiederholt

enter image description here

Tatsächlich ist die Grundkomponente eines Objektdetektors auf einer niedrigen Ebene nur etwas erforderlich, um zu sagen, ob eine bestimmte Subregion des Originalbildes eine ISTanz des Interesses oder nicht von Interesse enthält. Das ist es, was ein binärer Klassifizierer tut.

Der grundlegende, schwache Klassifizierer basiert auf einer sehr einfachen visuellen Funktion (diese Art von Funktionen werden häufig als „Haar-ähnliche Funktionen“ bezeichnet).
enter image description here

Haar-ähnliche Merkmale bestehen aus a Klasse von lokalen Merkmalen, die berechnet werden, indem die Summe einer Subregion des Merkmals aus der Summe der verbleibenden Region des Merkmals subtrahiert wird.

enter image description here
Diese Merkmale zeichnen sich durch die Tatsache aus, dass sie leicht zu berechnen sind und unter Verwendung eines integralen Bildes sehr effizient zu berechnen sind.

Lienhart stellte einen erweiterten Satz von verdrehten Haar-ähnlichen Merkmalen vor (siehe Bild)

enter image description here
Dies sind das haarsarme haarartige Merkmal, das um 45 Grad verdreht wurde. Lienhart benutzte ursprünglich die Twisted Checker Board Haar-ähnliche Funktion (X2Y2) nicht, da die diagonalen Elemente, die sie darstellen, einfach unter Verwendung verdrehter Merkmale dargestellt werden können. Es ist jedoch klar .

Diese verdrehten haarartigen Merkmale können auch schnell und effizient unter Verwendung eines integrierten Bildes berechnet werden, das 45 Grad verdreht wurde. Das einzige Implementierungsproblem ist, dass die verdrehten Merkmale auf Ganzzahlwerte abgerundet werden müssen, damit sie mit Pixelgrenzen ausgerichtet sind. Dieser Prozess ähnelt der Rundung, die bei der Skalierung einer Haar-ähnlichen Funktion für größere oder kleinere Fenster verwendet wird. Ein Unterschied besteht jedoch darin Diagonale Koordinaten des Pixels sind immer auf demselben diagonalen Pixelsatz

enter image description here
Dies bedeutet, dass die Anzahl der 45 -Grad -Verdrehungsmerkmale unterschiedlicher Größe im Vergleich zu den Standard- und horizontal ausgerichteten Merkmalen erheblich reduziert ist.

Also haben wir so etwas wie:enter image description here

In Bezug auf die Formel sieht die schnelle Berechnung von Haar-ähnlichen Funktionen unter Verwendung integraler Bilder aus wie:

enter image description here

Endlich, Hier ist eine C ++ - Implementierung was verwendet Violajones.h von Ivan Kusalic

Um das vollständige C ++ zu sehen Projekt gehen hier

Andere Tipps

Der Viola-Jones-Detektor ist a starker binärer Klassifikator Aufbau mehrerer schwacher Detektoren. Jeder schwache Detektor ist ein extrem einfacher binärer Klassifizierer

Die Erkennung besteht aus den folgenden Teilen:

Haar Filter: Extrahieren Sie Merkmale von Bild zu CalsSify (Merkmale codieren das Wissen über Ad-hoc-Domänen).

Integral Image: Ermöglicht eine sehr schnelle Merkmalsbewertung

Cascade Classifier: Ein Kaskadenklassifizierer besteht aus mehreren Filtern, um ein Bild zu klassifizieren (Schiebefenster eines Bildes) ist ein Gesicht.

Unten finden Sie einen Überblick darüber, wie ein Gesicht im Bild erfasst wird.

enter image description here

Ein Erkennungsfenster verschiebt sich um die gesamte Bildextrakt -Funktion (von haar filter berechnet von Integral Image Senden Sie dann die extrahierte Funktion an Cascade Classifier zu klassifizieren, ob es sich um ein Gesicht handelt). Das Schiebefenster verschiebt Pixel-by-Pixel. Jedes Mal, wenn das Fenster verschiebt, wird der Bildbereich im Fenster den Kaskadenklassifikator durchläuft.

Haar Filter: Sie können verstehen, dass der Filter Funktionen wie möglich extrahieren kann eyes, bridge of the nose usw.

enter image description here

Integral Image: Ermöglicht eine sehr schnelle Merkmalsbewertung

enter image description here

Cascade Classifier:

Ein Kaskadenklassifizierer besteht aus mehreren Filtern, wie in der folgenden Abbildung gezeigt. Jedes Mal, wenn sich das Schiebefenster verschiebt, durchläuft der neue Bereich innerhalb des Gleitfensters von der Kaskade-Klassifikatorin von stufiger Stufe. Wenn der Eingabebereich nicht die Schwelle einer Stufe überschreitet, lehnt der Kaskadenklassifizierer die Region sofort als Gesicht ab. Wenn eine Region alle Phasen erfolgreich passt, wird sie als Kandidat des Gesichts eingestuft, was durch weitere Verarbeitung verfeinert werden kann.

enter image description here

Für mehr Details:

Erstens empfehle ich Ihnen, das Quellpapier zu lesen Schnelle Objekterkennung unter Verwendung einer verstärkten Kaskade einfacher Funktionen Überblick über die Methode zu haben.

Wenn Sie es nicht klar verstehen können, können Sie sehen Viola-Jones Gesichtserkennung oder Implementierung des Viola-Jones-Gesichtserkennungsalgorithmus oder Untersuchung des Echtzeit-Gesichtsdetektors von Viola-Jones für mehr Details.

Hier ist ein Python -Code Python -Umsetzung des Gesichtserkennungsalgorithmus von Paul Viola und Michael J. Jones.

Matlab -Code hier .

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top