Comment détecter un visage à l’aide du détecteur OpenCV
Hitorique
La reconnaissance faciale automatique est un concept relativement nouveau. Le premier système semi-automatisé de la reconnaissance faciale a été développé dans les années 1960, il nécessite à l’administrateur de localiser les yeux, les oreilles, le nez et la bouche sur la photo et de saisir les distances calculées et les ratios à un point de référence commun, qui ont ensuite été comparés aux données de référence. Dans les années 1970, Goldstein, Harmon et Lesk [1] ont utilisé 21 marqueurs spécifique tels que la couleur des cheveux et l’épaisseur de la lèvre pour automatiser la reconnaissance. Le problème avec ces deux premières solutions, c’est que les mesures et les emplacements ont été calculés manuellement. En 1988, Kirby et Sirovich [2] ont appliqué l’analyse en composantes principales (ACP), une technique standard de l’algèbre linéaire. Cela a été considéré en quelque sorte comme une étape importante car elle a montré qu’au moins une centaine de valeurs ont été nécessaires pour coder convenablement et avec pécision une image alignée et normalisée. En 1991, Turk et Pentland [3] ont découvert que lorsque vous utilisez la technique Eigenfaces (ACP), l’erreur résiduelle peut être utilisée pour détecter un visage dans une image, une découverte qui a permis la reconnaissance faciale automatique en temps réel. Bien que l’approche était quelque peu limitée par des facteurs environnementaux, elle a néanmoins créé un intérêt significatif pour promouvoir le developpement des technologies de la reconnaissance faciale automatique. Cette technologie a été mise en essai en janvier 2001 lors de la finale du championat de football américain SUPER BOWL en capturant des images de surveillance puis comparées à une base de données numérique [4]. Aujourd’hui la reconnaissance faciale est utilisée dans plusieurs domaines.
Domaines d’application
La sécurité reste le domaine d’application principal. Dans ce domaine, la reconnaissance des visages est nécessaire à l’identification et à l’authentification. Un bon exemple de cet usage est l’aéroport de Francfort (Allemagne) où on utilise la reconnaissance pour automatiser le contrôle des passagers [5]. L’analyse des vidéos capturées par les systèmes de caméras externes gérés par les grandes villes est un autre exemple, un suspect peut être identifié [6]. Les agences de publicité sont en train de développer des panneaux d’affichage intélligents, qui grâce à la reconnaissance du visage des personnes qui passent adaptent le contenu affiché [7]. Google et Facebook ont implémenté des algorithmes pour identifier les personne dans leurs base de données de photos. En octobre 2013, Facebook a abandonné la reconnais sance faciale en Europe suite aux critiques visant cette technologie. Il est interdit de detecter les visages des gens sur les photos, cela met en péril leur vie privée. Aux EtatsUnis, cette technologie continue à se développer, elle est même utilisée par les agences gouvernementales (FBI) ou par des entreprises privées [8]. Au Brésil, la police se prépare à la coupe du monde de football de 2014 à sa façon : elle utilisera des lunettes équippées d’une caméra capable de filmer 400 images par seconde et les comparer avec une base de données numérique de 13 millions de photos [9]. La nouveauté dans la reconnaissance faciale arrive grâce au développement des nouvelles caméras de type 3D. Ces caméras obtiennent de meilleurs résultats que les caméras classiques, parce qu’elles acquierent une image tridimensionnelle de chaque visage.
La reconnaissance faciale pose de nombreux défis car les visages sont des objets déformable 3D. Nous nous limitons dans ce travail à une reconnaissance à partir d’une image 2D de visage en environnements non contraints (contexte de vidéosurveillence). De tels systèmes doivent pouvoir s’affranchir des problèmes suivants :
• Influence des variations de la pose :
Les changements d’orientation et les changements de l’angle d’inclination du visage engendrent de nombreuses modifications d’apparence dans les images collectées. Les rotations en profondeur engendrent l’occulation de certaines parties du visage comme pour les vues de trois-quarts. D’autre part, elles amènent des différences de profondeur qui sont projetées sur le plan 2D de l’image, provoquant des déformations qui font varier la forme globale du visage. Ces déformations qui correspondent à l’étirement de certaines parties du visage et la compression d’autres régions font varier aussi les distances entre les caractéristiques faciales.
• Influence des changements d’éclairage :
L’intensité et la direction d’éclairage lors de la prise de vue influent énormément sur l’apparence du visage dans l’image. En effet, dans la plupart des applications courante, des changements dans les conditions d’éclairage sont inévitables, notament lorsque les vues sont collectées à des heures différentes, en intérieur ou en en extérieur. Etant donnée la forme spécifique d’un visage humain, ces variations d’éclairage peuvent y faire apparaître des ombres accentuant ou masquant certaines caractéristiques faciales.
• Influence des expressions faciales :
Les visages sont des éléments non régides. Les expréssions faciales véhiculant des émotions, combinés avec les déformations induites par la parole, peuvent produire des changements d’apparence importants, et le nombre de configurations possibles est trop important pour que celles-ci soient décrites in extenso de façon réaliste.
• Influence des occultations :
Un visage peut être partiellement masqué par des objets ou par le port d’accessoires tels que lunettes, un chapeau, une écharpe. Les occultations peuvent être intentionnelles ou non. Dans le contexte de la vidéosurveillance, il peut s’agir d’une volonté délibérée d’empêcher la reconnaissance. Il est clair que la reconnaissance sera d’autant plus difficile que peu d’éléments discriminants seront simultanément visibles.
Méthodes de détection et de reconnaissance des visages
Détection de visages
La détection de visage dans l’image est un traitement indispensable et crucial avant la phase de reconnaissance. En effet, le processus de reconnaissance de visages ne pourra jamais devenir intégralement automatique s’il n’a pas été précédé par une étape de détection efficace. Le traitemet consiste à rechercher dans une image la position des visages et de les extraire sous la forme d’un ensemble d’imagettes dans le but de faciliter leur traitement ultérieur. Un visage est considéré correctement détecté si la taille d’imagette extraite ne dépasse pas 20% de la taille réelle de la région faciale, et qu’elle contient essentiellement les yeux, le nez et la bouche [10, 11]. L’intérêt de la localisation faciale va au-delà de l’application de ce présent mémoire. Quelques appareils photos numériques récents emploient la détection de visages pour la mise au point automatique. Elle est également recherchée dans le domaine des économies d’energie ; les télévisions et les ordinateurs peuvent économiser l’energie en réduisant l’eclat. Le système peut identifier la direction de visage de l’utilisateur de TV. Quand l’utilisateur ne regarde pas l’écran, l’eclat de TV est abaissé, et quand le visage revient à l’ecran, l’eclat est augmenté [12].
Algorithme de Viola et Jones
Une avancée majeure dans le domaine a été réalisée par les chercheurs Paul Viola et Michael Jones en 2001 [17]. Ces derniers ont proposé une méthode basée sur l’apparence (Appearance-based methods) . La méthode de Viola et Jones est une méthode de détection d’objet dans une image numérique, elle fait partie des toutes premières méthodes capables de détecter efficacement et en temps réel des objets dans une image. Inventée à l’origine pour détecter des visages, elle peut également être utilisée pour détecter d’autres types d’objets comme des voitures ou des avions. La méthode de Viola et Jones est l’une des méthodes les plus connues et les plus utilisées, en particulier pour la détection de visages et la détection de personnes. En tant que procédé d’apprentissage supervisé, la méthode de Viola et Jones nécessite de quelques centaines à plusieurs milliers d’exemples de l’objet que l’on souhaite détecter, pour entraîner un classifieur. Une fois son apprentissage réalisé, ce classifieur est utilisé pour détecter la présence éventuelle de l’objet dans une image en parcourant celle-ci de manière exhaustive, à toutes les positions et dans toutes les tailles possibles. Considérée comme étant l’une des plus importantes méthodes de détection d’objet, la méthode de Viola et Jones est notamment connue pour avoir introduit plusieurs notions reprises ensuite par de nombreux chercheurs en vision par ordinateur, à l’exemple de la notion d’image intégrale ou de la méthode de classification construite comme une cascade de classifieurs boostés. Cette méthode bénéficie d’une implémentation sous licence BSD dans OpenCV, la bibliothèque utilisée dans notre application.
Principe
La méthode de Viola et Jones consiste à balayer une image à l’aide d’une fenêtre de détection de taille initiale 24px par 24px (dans l’algorithme original) et de déterminer si un visage y est présent. Lorsque l’image a été parcourue entièrement, la taille de la fenêtre est augmentée et le balayage recommence, jusqu’à ce que la fenêtre fasse la taille de l’image. L’augmentation de la taille de la fenêtre se fait par un facteur multiplicatif de 1.25. Le balayage, quant à lui, consiste simplement à décaler la fenêtre d’un pixel. Ce décalage peut être changé afin d’accélérer le processus, mais un décalage d’un pixel assure une précision maximale. Cette méthode est une approche basée sur l’apparence, qui consiste à parcourir l’ensemble de l’image en calculant un certain nombre de caractéristiques dans des zones rectangulaires qui se chevauchent. Elle a la particularité d’utiliser des caractéristiques très simples mais très nombreuses. Il existe d’autres méthodes mais celle de Viola et Jones est la plus performante à l’heure actuelle. Ce qui la différencie des autres est notamment :
• l’utilisation d’images intégrales qui permettent de calculer plus rapidement les caractéristiques.
• la sélection par boosting des caractéristiques.
• la combinaison en cascade de classifieurs boostés, apportant un net gain de temps d’exécution.
Apprentissage du classifieur
Une étape préliminaire et très importante est l’apprentissage du classifieur. Il s’agit d’entraîner le classifieur afin de le sensibiliser à ce que l’on veut détecter, ici des visages. Pour cela, il est mis dans deux situations : La première où une énorme quantité de cas positifs lui sont présentés et la deuxiàme où, à l’inverse, une énorme quantité de cas négatifs lui sont présentés. Concrètement, une banque d’images contenant des visages de personnes est passée en revue afin d’entraîner le classifieur. Ensuite, une banque d’images ne contenant pas de visages humains est passée. Dans le cas présent, Viola et Jones ont entraîné leur classifieur à l’aide d’une banque d’images du MIT. Il en résulte un classifieur sensibles aux visages humain. Il se présente sous la forme d’un fichier XML. Dans l’absolu, on serait en mesure de détecter n’importe quel signe distinctif à partir d’un classifieur entrainé à cela.
Les caractéristiques
Une caractéristique est une représentation synthétique et informative, calculée à partir des valeurs des pixels. Les caractéristiques utilisées ici sont les caractéristiques pseudohaar. Elle sont calculées par la différence des sommes de pixels de deux ou plusieurs zones rectangulaires adjacentes. Prenons un exemple : Voici deux zones rectangulaires adjacentes, la première en blanc, la deuxième en noire. Les caractéristique seraient calculées en soustrayant la somme des pixels noirs à la somme des pixels blancs. Les caractéristiques sont calculées à toutes les positions et à toutes les échelles dans une fenêtre de détection de petite taille, typiquement de 24×24 pixels ou de 20×15 pixels. Un très grand nombre de caractéristiques par fenêtre est ainsi généré, Viola et Jones donnant l’exemple d’une fenêtre de taille 24 x 24 qui génère environ 160 000 caractéristiques. L’image précédente présente des caractéristiques pseudo-haar à seulement deux caractéristiques mais il en existe d’autres, allant de 4 à 14, et avec différentes orientations. Malheureusement, le calcul de ces caractéristiques de manière classique coûte cher en terme de ressources processeur, c’est là qu’interviennent les images intégrales.
Conclusion
L’objectif de ce mémoire est de concevoir et d’implémenter une application de reconnaissance faciale capable, en temps réel, de reconnaître les visages. Vu la quantité de logiciels potentiels (sécurité, réseaux sociaux,…) pouvant se baser sur cette application, celle-ci doit répondre à des exigences de rapidité et de robustesse des résultats. En ce sens, la première partie de l’application qui consiste à localiser les visages emploie l’algorithme de Viola et Jones, largement reconnu comme méthode fonctionnant en temps réel et fournissant des résultats robustes et fiables. La seconde partie de l’application s’occupe de la reconnaissance des visages localisés. Notre travail consiste à mettre au point un algorithme efficace destiné à reconnaître un individu par son visage en utilisant la méthode Eigenface qui se base sur une analyse en composante principale (ACP). L’ACP est une méthode mathématique qui peut être utilisée pour simplifier un ensemble de données, en réduisant sa dimension. Elle est utilisée pour représenter efficacement les images de visages, qui peuvent être approximativement reconstruites à partir d’un petit ensemble de poids et d’une image de visage standard. Il faut savoir que eigenfaces est considérée comme la méthode la plus simple et la plus précise de reconnaissance de visage, mais beaucoup d’autres méthodes ou combinaisons de méthodes multiples ( beaucoup plus compliqué ) peuvent être utilisées. En effet, capturer une image d’un visage, en particulier à travers une caméra 2D, est simple et non invasif. C’est donc une modalité biométrique facilement tolérée par les utilisateurs, mais les performances de la reconnaissance faciale sont toujours bien en dela de ce que l’on pourait espérer pour de telles applications. L’augmentation des taux de reconnaissance, la dimunition des reconnaissances à tort et l’accélération des temps de réponse lors de la recherche dans les grandes bases de données biométrique sont les défits aux quels doivent faire face les algorithmes actuellement développés.
|
Table des matières
Chapitre 1 Introduction
1.1 Hitorique
1.2 Domaines d’application
1.3 Problématique
1.4 Plan du rapport
Chapitre 2 Méthodes de détection et de reconnaissance des visages
2.1 Détection de visages
2.1.1 Algorithme de Viola et Jones
2.2 Prétraitement
2.2.1 Normalisation Géométrique
2.2.2 Normalisation Photométrique
2.3 Reconnaissance de visages
2.3.1 Méthodes globales
2.3.2 Méthodes locales
2.3.3 Méthodes hybrides
2.4 Reconnaissance par Eigenfaces
2.5 Bases de données
2.5.1 La base XM2VTS
2.5.2 La base FERET
2.5.3 La base AR
2.5.4 La base CVL
2.5.5 La Base de donnée ORL
2.5.6 Base Labeled Faces in the Wild (LFW)
Chapitre 3 Expérimentation
3.1 Environnement du travail
3.2 OpenCV
3.3 Implémentation
3.3.1 Comment détecter un visage à l’aide du détecteur OpenCV
3.3.2 Comment faire le prétraitement des images faciales pour la reconnaissance faciale
3.3.3 Comment Eigenfaces peut être utilisée pour la reconnaissance des
visages
3.3.4 Implémentation du système de reconnaissance faciale Hors ligne (en
ligne de commande)
3.3.5 Comment utiliser le système FaceRec en ligne de commande
3.3.6 La mise en œuvre de reconnaissance faciale en temps réel à partir
d’une caméra
3.3.7 Comment utiliser le système FaceRec de webcam en temps réel
Chapitre 4 Conclusion
Télécharger le rapport complet