Reconnaissance de visages La reconnaissance de visages est de plus en plus utilisée de nos jours, notamment pour des aspects sécuritaires. Cette reconnaissance peut être effectuée par des attributs décrivant la forme, la couleur et/ou la texture. Dans ce TP, nous proposons de mettre en place une approche permettant de reconnaître les visages, ainsi que leur expression. Nous construirons notre propre base d images mais utiliserons également des bases d images de référence afin de valider la méthode proposée. La base d images "ORL Database of Faces" mise à disposition par l université de Cambridge illustre bien le challenge à relever. La figure 1 illustre une partie de cette base d images. Figure 1 Base d image "ORL Database of Faces". TP de vision 1
1 Création des bases de données image Dans ce TP, nous proposons de créer 2 bases d images de visage. Une première base d images sera utilisée pour la reconnaissance de visages, tandis que la seconde servira à effectuer de la reconnaissance d expression. Pour cela nous mettons à contribution l ensemble des étudiants présents dans le groupe de TP. Pour chaque étudiant, 14 images vont être acquises : 7 images où le visage aura une expression neutre mais une orientation différente (cf. figure 2), Figure 2 Les différentes orientations possibles du visage. 7 images où le visage sera cette fois-ci bien face à la caméra mais où il exprimera différents sentiments (cf. figure 3). Dégoût Peur Colère Tristesse Joie Surprise Neutre Figure 3 Les différentes expressions du visage à reconnaître. La première base sera donc composée de C classes, C étant le nombre d étudiants présents dans le groupe de TP, et de 7 images par classes. La seconde base sera quant à elle composée de 7 classes d expression, avec C images par classe. TP de vision 2
1) A l aide du banc d acquisition à votre disposition, acquérir pour chacun des étudiants les 14 images demandées ci-dessus. Veillez à ce que les conditions d acquisition (fond, éclairage) soient identiques pour tous. Enregistrer les images au format.png dans 2 dossiers différents en suivant les incrémentations suivantes : Base de reconnaissance de visages : de 001.png à 007.png pour le premier étudiant pris sous différentes orientations, de 008.png à 014.png pour le deuxième étudiant pris sous différentes orientations, etc Base de reconnaissance d expression : de 001.png à 0{C}.png pour la première expression acquise pour les C étudiants, de 0{C+1}.png à 0{2C}.png pour la deuxième expression acquise pour les C étudiants, etc Nous allons travailler ici dans un contexte supervisé. Cela nécessite de disposer d une sous-base d apprentissage et d une sous-base de test. Pour chacune des 2 bases considérées, nous choisissons une décomposition de type Holdout 1/2-1/2. Cela signifie que la moitié des images sera utilisée pour construire la sous-base d apprentissage, les images restantes étant utilisées afin de tester la pertinence de la caractérisation. 2 Caractérisation : extraction des attributs de texture Afin de classer nos images, il est nécessaire de les caractériser grâce à des attributs. Nous proposons dans ce TP de caractériser les visages de nos 2 bases par des attributs de texture : les motifs locaux binaires (LBP : Local Binary Pattern). 2.1 Motifs locaux binaires La fonction Ð Ô permet de calculer les motifs locaux binaires d une image monochrome avec différents paramètres : La définition d une texture doit impliquer un voisinage spatial. La taille de ce voisinage dépend du type de texture ou de la surface occupée par le motif définissant cette dernière. Dans la fonction Ð Ô, le voisinage est défini par 2 paramètres : N, le nombre de voisins à analyser et R, le rayon du cercle sur lequel ces voisins se situent. La figure 4 illustre deux voisinages, avec différentes valeurs de N et R. N=8, R=1 N=16, R=4 Figure 4 Exemples de voisinages utilisés pour le calcul des LBP. TP de vision 3
Le paramètre mapping permet quant à lui d avoir accès aux variantes des motifs locaux binaires grâce à la fonction ØÑ ÔÔ Ò : 0 : LBP classique, u2 : LBP dits "uniformes", qui sont une version réduite des LBP classiques, ri : LBP invariants en rotation, riu2 : LBPuniformes invariants en rotation. Le dernier paramètre est le mode : h ou hist : pour obtenir l histogramme des LBP, nh : pour obtenir l histogramme normalisé des LBP, l image des LBP est retournée lorsque le paramètre n est pas renseigné. 2) Écrire un script Matlab permettant d ouvrir et afficher une image, de la convertir en image en niveaux de gris et de calculer l histogramme des LBP correspondant. 3 Classification Maintenant qu il est possible de calculer un vecteur d attributs à partir d une image, nous allons mettre en place la procédure de classification. Cette procédure va nous permettre d analyser la pertinence de nos attributs en mesurant le taux d images bien classées. Le processus de classification est divisé en deux étapes successives : 1. L apprentissage : l objectif est de "construire" des classes à partir de l ensemble d images d apprentissage. Pour cela, les visages présents dans les images d apprentissage sont décrits par un ensemble d attributs. 2. La classification : durant cette seconde phase, nous utiliserons la méthode du plus proche voisin qui consiste à assigner chaque image requête à la classe de l image d apprentissage la plus similaire. Cette similarité entre images est mesurée en comparant les vecteurs d attributs. 3.1 Apprentissage L apprentissage consiste à ouvrir chacune des images de la base d apprentissage, calculer et enregistrer dans une variable le vecteur d attributs de chaque image d apprentissage ainsi que la classe correspondante. Pour cela, nous allons utiliser une boucle répétitive telle que présentée sur la page suivante. 3) Compléter le programme ci-dessus en intégrant l extraction des attributs de texture et réaliser l apprentissage du processus de classification pour la première base d images (reconnaissance de visages). 3.2 Décision Nous allons maintenant mettre en place la procédure permettant de classer une image requête de la base test, l objectif étant de reconnaître l étudiant correspondant à l image analysée. Le classifieur utilisé pour cela sera le classifieur 1-ppv (algorithme du plus proche voisin). Cet algorithme nécessite de mesurer la distance entre le vecteur d attributs de l image requête avec chacun des vecteurs d attributs des images de la base d apprentissage. La mesure utilisée sera ici l intersection d histogrammes. Plus les images sont similaires, plus l intersection est importante. L image d apprentissage pour laquelle la distance est maximale est alors l image la plus ressemblante à l image requête et sa classe indique la classe de l image requête. TP de vision 4
n b _ c l a s s e = C ; % d é f i n i l e nombre de c l a s s e s nb_image = 7 ; % d é f i n i l e nombre d images par c l a s s e chemin = C : \... \ Database \ ; nb_ima = n b _ c l a s s e * nb_image ; n b _ i m a _ t r a i n = n b _ c l a s s e * ( f l o o r ( nb_image / 2 ) + 1 ) ; % pour chaque c l a s s e, 4 images p a rmis l e s 7 s o n t u t i l i s é e s pour l a p p r e n t i s s a g e A t t r i b u t s = z e r o s ( n b _ i m a _ t r a i n, 2 5 6 ) ; %% A p p r e n t i s a g e f o r i _ t r a i n =1: n b _ i m a _ t r a i n % E n r e g i s t r e m e n t du numéro de l a c l a s s e dans un t a b l e a u n u m _ classe ( i _ t r a i n ) = f l o o r ( ( i _ t r a i n 1 ) / ( n b _ i m a _ t r a i n / n b _ c l a s s e ) ) + 1 ; end % Concaténaion d es c h a î n e s de c a r a c t è r e s % pour c o n s t i t u e r l e chemain d a c c è s au f i c h i e r image i f ( i _ t r a i n / 1 0 < 1 ) f i c h i e r _ t r a i n = [ chemin 00 i n t 2 s t r ( i _ t r a i n ). png ] ; e l s e i f ( i _ t r a i n /100 < 1 ) f i c h i e r _ t r a i n = [ chemin 0 i n t 2 s t r ( i _ t r a i n ). png ] ; e l s e f i c h i e r _ t r a i n = [ chemin i n t 2 s t r ( i _ t r a i n ). png ] ; end end % A f f i c h a g e du numéro de l a c l a s s e disp ( [ f i c h i e r _ t r a i n C l a s s e i n t 2 s t r ( n u m _ classe ( i m a _ l a b e l ) ) ] ) ; % O u v e r t u r e de l image I m a _ t r a i n = imread ( f i c h i e r _ t r a i n ) ; 4) Compléter le programme précédent afin d ouvrir une image de la base test et classer cette image par un algorithme 1-ppv. Le taux de classification correspond au rapport entre la somme des images requêtes bien classées et le nombre total d images requêtes. 5) En vous inspirant du programme permettant l apprentissage, compléter le programme afin de calculer le taux de classification. Un moyen de valider votre programme est de classer les images de la base d apprentissage et de vérifier que vous obtenez bien un taux de 100%. 4 Reconnaissance d expression Nous allons maintenant travailler sur la seconde base d images afin de reconnaître les expressions. 6) Dans un nouveau script, modifier le programme précédent en utilisant la seconde base d images afin de classer les images en fonction du sentiment exprimé. Afin d améliorer l identification des expressions, nous proposons de cibler l analyse en extrayant des TP de vision 5
images originales une région d intérêt centrée sur le visage comme le montre la figure 5. Figure 5 Extraction d une région d intérêt centrée sur le visage. Nous allons pour cela repérer les yeux dans l image et nous servir de leur position afin de définir la région dšintérêt. La fonction ÓÓÖ Ô Ü Ð mise à votre disposition renvoie les coordonnées du pixel pointé par la souris dans une image passée en paramètre. 7) Extraire pour chacune des images de la base de reconnaissance d expression une région d intérêt définie comme le montre la figure 6. Les images réduites porteront le même nom que leur images originales correspondantes mais seront placées dans un dossier différent. 2d d 2d Figure 6 Définition de la région d intérêt centrée sur le visage. 8) Tester votre approche de reconnaissance d expression avec cette nouvelle base ciblée. Afin d améliorer encore la reconnaissance des expressions, nous proposons de diviser l analyse de la région d intérêt en trois parties : les yeux, le nez et la bouche (cf. figure 7). TP de vision 6
Figure 7 Division de la région d intérêt. 9) Pour chacune des 3 parties du visage, extraire un histogramme des LBP. Concaténer au sein d un même vecteur les histogrammes issus des 3 parties et tester votre approche. 5 Utilisation de la couleur Nous proposons de voir si la couleur permet d améliorer la classification. 10) Dans un nouveau script, modifier les programmes précédents afin d extraire les composantes R, G, B des images couleur et de calculer l histogramme des LBP de chacune des 3 images-composante. Concaténer au sein d un même vecteur les histogrammes issus des 3 images-composante R, G et B et tester votre approche. Matlab dispose de quelques fonctions de conversion d espace couleur : Ö ¾ Ú : RGB HSV, Ö ¾ÒØ : RGB YIQ, Ö ¾Ý Ö : RGB YCbCr, Ö ¾ Ö Ý : RGB intensité, ÔÔÐÝ ÓÖÑ : RGB XYZ, Yxy, Luv, Lu v, Lab, Lch, srgb. 11) Transformer l image couleur dans différents espaces couleur et observer les histogrammes des LBP dans chacun de ces espaces. Analyser les résultats de classification obtenus dans ces différents espaces. 12) Écrire deux fonctions permettant les transformations suivantes et tester votre approche avec ces nouveaux espaces : Ö ¾ ½ ¾ : RGB I1I2I3, Ö ¾ÖÒ Ò Ò : RGB RGB normalisé. TP de vision 7
6 Autres essais 13) Poursuivre les essais expérimentaux en utilisant d autres attributs de texture, d autres classifieurs, en essayant de classer d autres objets que ceux utilisés pour construire les bases,... Relever à chaque fois les taux de classification, les temps de traitement, la matrice de confusion,... TP de vision 8