Question

S'il vous plaît expliquez-moi, en quelques mots, le fonctionnement de la méthode de détection de visage Viola-Jones.

Était-ce utile?

La solution

Le détecteur Viola-Jones est forte, classificateur binaire construction de plusieurs faible détecteurs

Each weak detector is an extremely simple binary classifier

Au cours de la phase d'apprentissage, est formé d'une cascade de détecteurs faibles de manière à gagner le taux de succès désiré / taux de manque (ou précision / rappel) à l'aide Adaboost Pour détecter des objets, l'image originale est divisée en plusieurs rectangulaire patches, qui est soumis à la cascade de chaque

Si un patch image rectangulaire passe à travers toutes les étapes de la cascade, puis il est classé comme « positif » Le processus est répété à différentes échelles

entrer image description ici

En fait, à un niveau bas, le le composant de base d'un détecteur d'objet est juste quelque chose à dire si nécessaire un certain sous-région de l'original l'image contient un istance de la objet d'intérêt ou non. C'est ce qu'un classificateur binaire fait.

Le classificateur de base, faible est basée sur un effet visuel très simple (les genre de fonctionnalités sont souvent appelées « Haar-like caractéristiques »)
entrer image description ici

Haar comme caractéristiques se composent d'une classe des locaux caractéristiques qui sont calculées en soustrayant la somme de a sous-région de la fonction de la somme des restants région de la fonction .

entrer dans la description d'image ici
Ces caractéristiques se caractérisent par le fait qu'ils sont faciles à calculer et à l'utilisation d'une image intégrale, très efficace pour calculer.

Lienhart introduit un ensemble étendu de Haar-like caractéristique torsadée (voir l'image)

entrer dans la description d'image ici
Ceux-ci sont fonction standard de Haar qui ont été tordu par 45 degrés. Lienhart n'a pas à l'origine l'utilisation du damier tordu de Haar fonction (x2y2) étant donné que les éléments diagonaux qu'ils représentent peuvent être simplement représentés en utilisant torsadée caractéristiques, mais il est clair qu'une version tordue de cette fonction peut également être mis en œuvre et utilisé.

Ces torsadé de Haar caractéristiques peuvent également être rapidement et efficacement calculées à l'aide d'une image intégrale qui a été tordu 45 degrés. Le seul problème de mise en œuvre est que les caractéristiques torsadés doivent être arrondies à des valeurs entières de sorte qu'ils soient alignés avec les limites des pixels. Ce processus est similaire à l'arrondissement utilisé lors du redimensionnement d'un de Haar fonctionnalité pour fenêtres plus grandes ou plus petites, mais une différence est que pour un 45 degrés caractéristique torsadée, le nombre entier de pixels utilisés pour la hauteur et la largeur de la caractéristique moyenne que les coordonnées diagonales du pixel seront toujours sur le même ensemble de pixels en diagonale

entrer dans la description d'image ici
Cela signifie que le nombre de tailles différentes de 45 degrés est disponible torsadé possède sensiblement réduit par rapport à la norme verticalement et horizontalement caractéristiques alignés.

Nous avons donc quelque chose comme: entrer image description ici

A propos de la formule, le calcul rapide de Haar comme fonctionnalités en utilisant des images intégrales ressemble à:

entrer image description ici

Enfin, ici est une implémentation C ++ usages qui par Ivan Kusalic ViolaJones.h

pour voir le projet complet c ++ aller

Autres conseils

Le détecteur Viola-Jones est un classificateur binaire forte construction de plusieurs détecteurs faibles. Chaque détecteur faible est un classificateur binaire extrêmement simple

La détection consiste en dessous de parties:

Haar Filter: extrait de l'image présente à calssify (caractéristiques agissent pour encode ad hoc connaissance du domaine)

Integral Image: permet une évaluation de fonctionnalité très rapide

Cascade Classifier: un classificateur à cascade se compose de plusieurs étages de filtres, pour classer une image (fenêtre glissante d'une image) est une face

.

Voici un aperçu de la façon de détecter un visage dans l'image.

A décalages de fenêtre de détection autour de l'ensemble de dispositif d'extraction d'image (par haar filter calculée par Integral Image puis envoyer la caractéristique extraite à Cascade Classifier pour classer si elle est une face). Les déplacements de fenêtres coulissantes, pixel par pixel. Chaque fois que le changements de la fenêtre, la zone d'image dans la fenêtre passera par le classificateur en cascade.

Haar Filter. Vous pouvez comprendre le filtre peut extraire des caractéristiques comme eyes, bridge of the nose et ainsi de suite

Integral Image: permet une évaluation de fonctionnalité très rapide

Cascade Classifier:

Un classificateur en cascade se compose de plusieurs étages de filtres, comme représenté dans la figure ci-dessous. Chaque fois que le changements de fenêtres coulissantes, la nouvelle région dans la fenêtre coulissante passera par l'étape par étape classificateur en cascade. Si la région d'entrée ne parvient pas à dépasser le seuil d'un étage, le classificateur à cascade immédiatement rejeter la région d'une face. Si une région passe toutes les étapes avec succès, il sera classé en tant que candidat du visage, ce qui peut être affiné par un traitement ultérieur.

Pour plus de détails:

Tout d'abord, je vous suggère de lire le document source rapide de détection d'objets en utilisant une cascade Dopé des caractéristiques simples pour avoir une vue d'ensemble la compréhension de la méthode.

Si vous ne pouvez pas le comprendre clairement, vous pouvez voir Détection des visages Viola-Jones ou la mise en œuvre de détection des visages Viola-Jones algorithme ou Etude du détecteur en temps réel Viola-Jones Visage pour plus de détails .

Voici un code python Python mise en œuvre de l'algorithme de détection de visage par Paul Viola et Michael J. Jones .

.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top