Comment la méthode de détection de visage Viola-Jones travail?
-
24-10-2019 - |
Question
S'il vous plaît expliquez-moi, en quelques mots, le fonctionnement de la méthode de détection de visage Viola-Jones.
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
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 »)
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 .
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)
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
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:
A propos de la formule, le calcul rapide de Haar comme fonctionnalités en utilisant des images intégrales ressemble à:
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 parIntegral 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 .