View
767
Download
15
Category
Preview:
Citation preview
PROJET DE FIN D’ETUDES
POUR OBTENIR LE
DIPLOME NATIONAL D’INGENIEUR EN INFORMATIQUE
DETECTION ET RECONAISSANCE
DE VISAGE
Réalisé par : Encadré par :
Mohamed Aymen FODDA Mme. OLFA TRIKI
Mr. Izhar MAHJOUB
19 Octobre 2010
Dédicaces
Je dédie ce projet de fin d’études
A mon père Chedli et ma mère Najoua en témoignage de leur affectation,
leurs sacrifices et de leurs précieux conseils qui m’ont conduit à la réussite
dans mes études ;
A mon frère Badreddine et mes sœurs Narjes et Hela en leurs souhaitant
la réussite dans leurs études et dans leurs vies,
A ma femme Wafa qui n’a jamais épargné un effort pour m’aider et
m’encourager,
A mon oncle Salah qui a été toujours près de moi, pour m’écouter et me
soutenir,
Et à tous ceux que j’aime et qui m’aiment.
Remerciements
C’est pour moi un plaisir autant qu’un devoir de remercier toutes les
personnes qui ont pu contribuer de près ou de loin à l’’accomplissement de
ce projet.
Ainsi, j’exprime ma gratitude et je tiens à remercier Mr. Kamel Hamrouni
et Mme Olfa Triki, qui m’ont encadré, et qui n’ont épargné aucun effort
pour m’orienter afin que je puisse mener à bien ce projet.
Mes vifs remerciements vont à Mr. Tahar Ben Lakhdhar, Président
fondateur d’Esprit et à Mr. Izhar Mahjoub, Directeur général de la
société Narsil Technology.
Je saisis aussi l’occasion pour remercier tout le corps professoral et
administratif de l’Ecole Supérieure Privée d’Ingénieurs de Tunis
« Esprit ».
Enfin, je remercie affectueusement tous ceux qui m’ont soutenu dans mes
études.
Résumé
L’analyse du contenu des images et la reconnaissance de formes sont des domaines
d’application en pleine expansion de nos jours, notamment grâce à l’efficacité accrue
offerte par la puissance des machines.
La reconnaissance du visage est l’une des techniques les plus étudiées. En effet, elle
correspond à ce que les humains utilisent par l'interaction visuelle.
Le projet dans lequel s’inscrit ce travail consiste à la réalisation d’un module de
reconnaissance faciale. Il devra être intégré à un système de gestion de licences
destiné aux fédérations de football.
Mot clés : biométrie, détection de visage, descripteur de Haar, reconnaissance de visage, AdaBoost,
viola-jones.
ABSTRACT
Content analyses of images and forms recognition are application domains in full
expansion nowadays, notably thanks to the increased efficiency offered by the power
of machines.
Face recognition is one of the most studied techniques, since it corresponds to what
Humans use by visual interaction.
This work is part of a project which aim is realize a facial recognition module. It is
aimed to be integrated within a license management system for football federations.
Keywords: biometrics, face detection, Haar descriptor, face recognition, AdaBoost, viola-jones.
Sommaire Chapitre 1 - Contexte de projet.................................................................................................. 3
1. Introduction ........................................................................................................................... 4
2. Présentation de « Narsil Technology » ................................................................................. 4
2.1. Services de « Narsil Technology » ................................................................................. 4
2.2. Département de Recherche et Développement ............................................................... 5
3. Description détaillée du projet ............................................................................................... 6
3.1. Introduction .................................................................................................................... 6
3.2. Limites ............................................................................................................................ 7
3.3. Travail demandé et objectifs .......................................................................................... 8
4. Conclusion ............................................................................................................................. 9
Chapitre 2 - Etat de l’art .......................................................................................................... 10
1. Introduction ......................................................................................................................... 11
2. Détection de visage.............................................................................................................. 11
2.1 Approche basée sur la reconnaissance ........................................................................... 12
2.2 Approche basée sur les caractéristiques invariantes ...................................................... 13
2.3 Approche basée sur l’appariement de gabarits (Template matching)........................... 14
2.4 Approche basée sur l’apparence .................................................................................... 14
3. Reconnaissance de visages .................................................................................................. 18
3.1. Méthodes globales ........................................................................................................ 18
3.2. Méthodes locales .......................................................................................................... 19
3.3. Méthodes hybrides........................................................................................................ 20
4. Conclusion ........................................................................................................................... 21
Chapitre 3 - Analyse des besoins ............................................................................................. 22
1. Introduction ......................................................................................................................... 23
2. Besoins fonctionnels ............................................................................................................ 23
3. Besoins non fonctionnels ..................................................................................................... 24
4. Diagramme des cas d’utilisation ......................................................................................... 24
4.1 Diagramme de cas d’utilisation globale ........................................................................ 25
4.2 Diagramme des cas d’utilisation détaillée ..................................................................... 25
5. Diagramme de séquences système ...................................................................................... 26
6. Conclusion ........................................................................................................................... 27
Chapitre 4 - Conception ........................................................................................................... 28
1. Introduction ......................................................................................................................... 29
2. Schéma fonctionnel ............................................................................................................. 30
3. Module de prétraitement ...................................................................................................... 31
3.1 Etirement d’histogramme (Normalisation des niveaux de gris) .................................... 31
3.2 Filtre Médian ................................................................................................................. 31
4. Détection de visage.............................................................................................................. 32
4.1 Fonction de classification .............................................................................................. 32
4.2 Image intégrale .............................................................................................................. 33
4.3 Bloc de décision ............................................................................................................ 33
5. Reconnaissance de visage .................................................................................................... 34
5.1 Détection des composantes faciales .............................................................................. 34
5.2 Extraction des paramètres .............................................................................................. 35
5.3 Signature ........................................................................................................................ 38
5.4 Identification.................................................................................................................. 39
6. Diagramme de séquence ...................................................................................................... 40
7. Diagramme des classes ....................................................................................................... 41
Chapitre 5 - Réalisation ........................................................................................................... 43
1. Introduction ......................................................................................................................... 44
2. Présentation de la bibliothèque OpenCV............................................................................. 44
2.1 Classifieur OpenCV....................................................................................................... 44
2.2 Implémentation .............................................................................................................. 44
2.3. Expérience .................................................................................................................... 46
3. Reconnaissance de visage .................................................................................................... 49
3.1. Implémentation ............................................................................................................. 49
3.2 Expérience ..................................................................................................................... 51
4. Interface utilisateurs ............................................................................................................ 53
4 .1 Introduction .................................................................................................................. 53
4 .2 Fenêtre principale ......................................................................................................... 53
4 .3 Apprentissage des photos ............................................................................................. 54
4 .4 Fenêtre résultat ............................................................................................................. 54
5. Résultats .............................................................................................................................. 54
6. Diagramme .......................................................................................................................... 55
7. Conclusion ........................................................................................................................... 56
CONCLUSION GENERALE ................................................................................................. 57
Références bibliographiques ................................................................................................... 59
1
INTRODUCTION GENERALE
Savoir déterminer de manière à la fois efficace et exacte l’identité d’un individu est devenu un
problème critique car de nos jours l’accès sécurisé et la surveillance constituent un sujet de
très grande importance. En effet bien que nous ne nous en rendions pas toujours compte, notre
identité est vérifiée quotidiennement par de multiples organisations : lorsque nous accédons à
notre lieu de travail, lorsque nous utilisons notre carte bancaire, lorsque nous nous connectons
à un réseau informatique, etc.
Il existe traditionnellement deux manières d’identifier un individu. La première méthode est
fondée sur une clef connue uniquement par l’utilisateur telle qu’un mot de passe utilisé au
démarrage d’une application ou un code qui permet d’activer un téléphone portable. La
seconde méthode est fondée sur la possession d’un objet tel qu’une pièce d’identité, une clef,
ou un badge. Ces deux méthodes peuvent être utilisées de manière complémentaire afin
d’obtenir une sécurité accrue. Cependant, elles présentent un double inconvénient ; en effet,
l’utilisation d’un mot de passe nécessite sa mémorisation et le fait d’en avoir plusieurs rend la
tâche plus difficile, le noter engendre le risque de perte ou de vol. De même, l’utilisation de
cartes magnétiques, de clefs ou de badges n’échappe pas au risque de vol par des imposteurs
qui sont capables de falsifier leur identité avec une facilité remarquable.
Toutes ces difficultés ont donné naissance à l’idée d’utiliser des caractéristiques biométriques
comme moyen d’identification. En effet, chaque individu possède des caractéristiques qui lui
sont propres : sa voix, ses empreintes digitales, les traits de son visage, la forme de sa main, sa
signature et jusqu'à son ADN. Ces données dites « biométriques » peuvent ainsi être utilisées
pour l’identifier. Si autrefois ces méthodes étaient surtout utilisées par la police, aujourd’hui
un individu a besoin d’être identifié dans nombre de contextes : pour pénétrer dans son
immeuble ou ouvrir la porte de son appartement, retirer de l’argent à un distributeur, pénétrer
dans des bâtiments et y circuler librement, accéder à son poste de travail, à sa messagerie, à
Internet et plus généralement, partout où la sécurité est requise.
Différentes techniques d’identification fondées sur les caractéristiques physiques de
l’utilisateur on été développées par la recherche scientifique. Ces techniques, généralement
appelées méthodes biométriques, ont donné naissance à plusieurs produits commerciaux
d’identification que l’on peut trouver actuellement sur le marché.
Face à la contrainte de l'authentification par mots de passe et la recherche de l’identité réelle,
la biométrie [3] apporte la simplicité et le confort aux utilisateurs. L’avantage principal de ce
2
que l’on appelle mot de passe biométrique est lié au fait qu’il ne pourrait pas être volé, oublié
ou transmis à une autre personne. En effet, chaque membre de la population possède des
caractéristiques biométriques qui lui sont propres, et qui sont relativement stables. Par
conséquent, il est fort possible que dans un futur relativement proche, le mot de passe
biométrique remplace le mot de passe conventionnel dans les applications nécessitant un
niveau élevé de sécurité.
Le visage est certainement la caractéristique biométrique que les humains utilisent le plus
naturellement pour s’identifier entre eux. La reconnaissance de visages est par conséquent
devenue l’une des branches de la vision par ordinateur qui remporte un grand succès et qui est
en perpétuel développement. Le but d’un système de reconnaissance de visages est de simuler
le système de reconnaissance humain par la machine pour automatiser certaines applications
telles que : la télésurveillance, le contrôle d’accès à des sites, l’accès à des bâtiments
sécurisés, etc.
Le projet présenté dans ce rapport consiste à créer une application de détection et de
reconnaissance de visage en utilisant la biométrie dans le cadre de l’amélioration du logiciel
Licence+ destiné aux fédérations de football. Il s’agit, en réalité, de reconnaître les visages
des joueurs afin de contrôler leurs licences.
Le présent rapport est constitué de cinq chapitres :
Le premier, intitulé « Contexte général du projet », a pour objectif de mettre le projet dans
son contexte en présentant l’entreprise d’accueil ainsi que le besoin qui a donné naissance à
ce projet.
Le deuxième chapitre est l’ « Etat de l’art ». Il vise la présentation des méthodes existantes
pour résoudre les différentes problématiques du projet. C’est au niveau de ce chapitre que
nous effectuons l’ensemble des prises de décision concernant les méthodes qui vont être
effectivement utilisées pour mettre en œuvre notre application.
Le troisième chapitre, intitulé « Analyse des besoins », vise à analyser la faisabilité
organisationnelle et technique du projet. Le quatrième chapitre, dénommé « conception »
présentera la conception globale et détaillée qui sera traitée. Le dernier chapitre présentera les
réalisations effectuées tout au long du projet ainsi que l’ensemble des tests d’exécution. Enfin
une conclusion générale clôturera le rapport.
3
Chapitre 1 - Contexte de projet
Contexte du projet
1 Chapitre
4
1. Introduction
Notre projet de fin d’études, intitulé « Reconnaissance faciale » est proposé par
« Narsil Technology », une entreprise Tunisienne spécialiste des solutions
d’identification sécurisée et de la personnalisation des cartes plastiques.
Deux parties principales constituent ce chapitre : dans la première, nous présenterons
l’entreprise d’accueil « Narsil Technology », son organisation, ses services ainsi que
le département de recherche et développement dans lequel ce projet a été élaboré. La
deuxième sera consacrée à la description du projet.
2. Présentation de « Narsil Technology »
Narsil Technology a été créée en février 1999, par une équipe d’ingénieurs de
l’information et des télécommunications.
Narsil Technology, représentant de La Multinationale Datacard Group en Tunisie, est
un fournisseur de solutions à base de cartes à puce, de logiciels et applications
incluant les cartes intelligentes, les cartes multi applicatives ainsi que du service allant
du conseil à la personnalisation.
Son métier est le développement de solutions basées sur la technologie des cartes à
puces et la personnalisation des cartes plastiques. Elle exploite ce support en y
ajoutant un savoir-faire en matière de développement de bases de données et de
systèmes en temps réel pour servir les besoins grandissants des entreprises et des
organisations.
2.1. Services de « Narsil Technology »
Les services offerts par « Narsil Technology » sont :
La conception et la réalisation de solutions exploitant la carte à puce.
La conception et le déploiement de systèmes de fidélisation de la clientèle
à travers des programmes marketing avancés.
La conception et le développement et l’intégration de systèmes
d’information utilisant oracle, Microsoft SQL Server/MySQL
La migration de systèmes d’information existants.
La conception et la mise en place de politiques de sécurité réseau à l’aide
de systèmes d’authentification par carte.
5
Gestion administrative
Gestion des ressources humaines
Gestion de l’approvisionnement
Directeur Général
Assistante de Direction
Responsable Qualité
Contrôleurs Qualité
Responsable Financier
Direction Ingénierie
Département Technique &
Production
Département Recherche et
Développement
Techniciens informaticiens
Responsable Commercial
Ingénieurs informaticiens
Figure 1.1 : Organigramme de la société Narsil Technology
2.2. Département de Recherche et Développement
Le Département Recherche et Développement de Narsil Technology est lié
directement à la direction ingénierie (Figure 1.1). Il est constitué de 6 ingénieurs
informaticiens qui développent des solutions innovantes pour ses propres besoins
ainsi que ceux de ses clients partenaires.
Les travaux de recherche et développement concernent principalement les
thématiques liées à l’exploitation des cartes à puce, aux systèmes de fidélisation de la
clientèle, à la conception et au développement de systèmes d’information et enfin à la
biométrie.
On peut ainsi citer parmi les projets dans lesquels ce département a été fortement
impliqué les projets suivants :
Fidel + : est un système de paiement électronique (PME) dont le support est la
carte à puce. Cette carte est pré-chargée d’avance d’un montant de crédit
6
alloué et permet à son détenteur de régler ses achats dans les magasins du
groupe émetteur.
Licence + : est un système informatique de gestion et d’exploitation des
licences, conçu spécialement pour répondre aux besoins spécifiques des
organismes sportifs.
3. Description détaillée du projet
3.1. Introduction
En 2009, « Narsil Technology » devient le partenaire privilégié du monde du football
en Tunisie et en Afrique dans le cadre du lancement du projet « WIN IN AFRICA
WITH AFRICA » par la FIFA. Elle a pris en charge le déploiement du système
Licence+ pour toutes les fédérations africaines.
Licence+ est une plateforme de communication pour l’administration du football. Elle
inclut la gestion administrative (licences, carrière, historique…), la gestion des
compétitions, des feuilles de match, des événements, ainsi que la gestion des relations
internes sous un même et unique portail.
Le système est développé pour répondre aux besoins spécifiques et particuliers du
monde sportif. Notons en particulier que la solution doit être capable de suivre les
évolutions réglementaires et de s’adapter à de nouvelles fonctionnalités.
Licence+ reçoit et centralise les informations provenant de différentes sources
(ligues, clubs, Fédérations internationales, DTN…). Toutes ces informations sont
traitées, transformées, stockées puis redistribuées en fonction des besoins des
utilisateurs et sur différents canaux.
Cela permet d’établir des statistiques fiables et pertinentes sur les matchs, les joueurs,
les régions… Partager la même vue globale avec des données enfin unifiées, fiables et
cohérentes simplifie évidemment la communication entre les différents acteurs du
football.
Narsil Technology se propose, en plus du déploiement de Licence +, de rajouter
quelques modules et améliorations à la version existante (voir figure 1.2).
7
Notre projet de fin d’études s’inscrit dans ce cadre. En effet, Il prend en charge l’étude
et la réalisation d’un module de reconnaissance de visage, afin de renforcer le contrôle
des licences à l’aide des photos d’identité des joueurs.
3.2. Limites
Par analogie à la carte d’identité nationale pour un individu, la licence d’un joueur est
scrupuleusement personnelle et les données qu’elle renferme sont aussi importantes
pour le club auquel appartient ce dernier, que pour les organismes gérant les
différentes compétitions auxquelles le club est autorisé à participer.
Le renforcement de la sécurité de la licence est par conséquent une obligation
primordiale.
Ainsi, le passage avec Licence+, à des licences numériques, devra-t-il mettre en place
des moyens de sécurité informatique afin de garantir la bonne utilisation de cette
plateforme.
La sécurité informatique, d'une manière générale, consiste à garantir que les
ressources matérielles ou logicielles d'une organisation soient uniquement utilisées
dans le cadre prévu. Elle a généralement cinq principaux objectifs :
L'intégrité : vérifier si les données n'ont pas été falsifiées
La confidentialité : s’assurer que seules les personnes autorisées auront accès
aux ressources échangées.
La disponibilité : garantir l'accès à un service ou à des ressources.
L'authentification : assurer l'identité d'une entité (personne, ordinateur,
etc…).
La principale limite de Licences+ réside dans l’absence d’une solution de sécurité des
données fournies par les clubs. En particulier, on peut facilement contourner les
données personnelles d’un joueur en changeant sa photo d’identité. Il est alors
possible qu’un joueur puisse avoir plusieurs licences avec différentes photos, ce qui
génère des données falsifiées dans la base de données.
8
Figure 1.2 : Synoptique du système de gestion de licence
3.3. Travail demandé et objectifs
Nous proposons donc de développer un mécanisme de reconnaissance du visage pour
contrôler l’unicité des licences des joueurs.
Le système doit par conséquent effectuer les tâches suivantes :
La détection d’un nouveau fichier de type « JPG » généré pendant la phase du
découpage du système Licence+ qui consiste à scanner la licence du joueur
afin de la découper en 5 photos, dans notre cas nous intéressons à la photo qui
contient le visage du joueur.
La localisation automatique du visage dans l’image.
La capture de données caractéristiques du visage.
La recherche de visages similaires existants dans la base de données.
Système de
reconnaissance
faciale
9
4. Conclusion
Ce chapitre a abordé le contexte général de notre projet de fin d’études. La
présentation de l’entreprise d’accueil « Narsil Technology » a été suivie d’une
description de la problématique et des objectifs du projet proposé ainsi que des
fonctionnalités principales autour desquelles il s’articule…
Avant d’envisager une solution algorithmique à implémenter, il convient maintenant
d’étudier l’état de l’art en matière de détection et de reconnaissance faciale.
10
Chapitre 2 - Etat de l’art
2 Chapitre
Etat de l’art
11
1. Introduction
Ce projet se concentre principalement sur deux tâches : la détection et la
reconnaissance de visages.
Il existe dans la littérature une multitude de méthodes de détection de visage et
d’identification. Nous passerons en revue, dans ce chapitre, les techniques les plus
utilisées.
Le principal problème dans la détection et la reconnaissance d’un objet est relatif aux
différentes représentations possibles de celui-ci. Ainsi la détection et la
reconnaissance du visage dépendent de plusieurs facteurs, dont les plus étudiés sont :
La position : sur une image, un visage peut être vu de face, de profil, ou d’un
angle quelconque.
L’expression faciale : l’apparence d’un visage dépend aussi de son expression.
La présence d’attributs : une personne peut avoir un chapeau, des lunettes, une
moustache, une barbe, une cicatrice….
Les conditions extérieures : la couleur, l’intensité de l’éclairage, la taille, la
texture sont différentes sur chaque image.
L’occultation : une partie du visage peut être cachée par un autre objet ou par
une autre personne.
La couleur : Les êtres humains ont des couleurs de peau différentes, d’où la
différence de la valeur du pixel représentant la peau de chaque personne.
2. Détection de visage
La détection du visage sert à reconnaître un objet dans une image comme étant un
visage et de le distinguer du reste de l'image. La détection du visage humain est une
tâche compliquée vus les facteurs exposés ci-dessus.
Les méthodes de détection de visages ont été classifiées par Yang [Yang 2002] en
quatre approches, voir (tableau 1) :
Approche basée sur la reconnaissance.
Approche basée sur les caractéristiques invariantes.
Approche basée sur l’appariement de gabarits (Template matching)
Approche basée sur l’apparence
12
Approach Representative Works
Knowledge-based Multiresolution rule-based method
Feature invariant
- Faciale Feature Grouping of edges
- Texture Space Gray-Level Dependence matrix
(SGLD) of face pattern
- Skin Color Mixture of Gaussiean
- Multiple Feature Integration of skin color, size and shape
Template matching
- Predefined face templates Shape template
- Deformable Template Actives Shape Model (ASM)
Appearance-based method
- Eigenface Eigenvector decomposition and
clustering
- Distrubtion-based Gaussien distrubution and multilayer
perceptron
- Neural Network Ensemble of neural network and
arbitration schemes
- Support Vector Machine (SVM) SVM with polynomial kernel
- Naives Bayes Classifier Joint statistics of local appearance and
position
- Hidden Markov Model (HMM) Higher order statistics with HMM
- Information-Theoretical Approch Kullback relative information
Tableau 2.1 : Classification des méthodes de détection de visage
dans une image [Yang, 2002]
2.1 Approche basée sur la reconnaissance
C’est une méthode fondée sur des règles qui représentent les composants principaux
et représentatifs des visages humains. Les règles sont généralement constituées à
partir de la relation entre les caractéristiques du visage. Par exemple, les visages sur
les images ont souvent deux yeux qui sont symétriques, un nez et une bouche. La
relation entre ces membres peut être représentée par la distance entre ces derniers et
leur position.
Un problème se pose avec cette approche, en l’occurrence la difficulté de traduire les
connaissances relatives aux visages humains en règles bien définies, ce qui peut
provoquer des erreurs de détection et rendre le système peu fiable.
13
2.2 Approche basée sur les caractéristiques invariantes
Cette famille d’algorithme a pour objectif de trouver les caractéristiques structurelles
même si le visage est dans différentes positions, conditions lumineuses ou angle de
vue. Le problème que rencontre cette approche est que la qualité des images peut être
sévèrement diminuée à cause de l’illumination, le bruit ou l’occlusion.
Cependant, Il existe plusieurs propriétés ou caractéristiques invariables du visage dont
les principales sont les suivantes :
2.2.1 La couleur de peau
La couleur de la peau de l’être humain a été utilisée pour la détection des visages et sa
pertinence a été prouvée comme caractéristique spécifique au visage.
Le principe de cette méthode est basé sur l’information couleur pour la discrimination
des pixels de peau ou non-peau. Chaque pixel d’une image couleur est codé dans un
espace couleur (par exemple RGB ou YCrCb, ..).
Cette méthode se résume en trois étapes :
1) Prétraitement de l’image.
2) Choix d’un espace de couleurs.
3) Seuillage et segmentation de la couleur de peau
Figure 2.1: la détection de la couleur de peau.
.
Cette méthode est caractérisée par la rapidité de traitement et par la simplicité de la
décision. En effet le principe est simple et limité à la couleur de peau sans aucune
considération des effets d’échelle et de position. Néanmoins, cette méthode affiche
des détections des faux positifs et peut créer des conflits avec l’arrière plan.
14
2.3 Approche basée sur l’appariement de gabarits (Template matching)
La détection de visages entiers ou de parties de visage se fait à travers un
apprentissage d’exemples standards de visages. La corrélation entre les images
d’entrées et les exemples enregistrés est calculée et utilisée pour la décision.
2.3.1 Des Faces prédéfinies de visages
Cette technique est utilisée pour classer des objets, elle est très intéressante pour la
détection de visage de par sa facilité d’application.
Le principe de cette méthode basé sur une comparaison effectuée entre une image
quelconque et un modèle prédéfini, dont le but est de calculer la corrélation pour
aboutir à une décision par oui/non. La correspondance est faite pixel par pixel.
Figure 2.2 : Processus de la mise en correspondance
Cette méthode a l’avantage d’être simple mais elle est sensiblement influencée par la
variation d’échelle, de pose et de forme.
2.4 Approche basée sur l’apparence
Cette approche a pour objectif de déterminer les caractéristiques significatives des
visages et des non visages à partir de techniques d’analyse statistique et
d’apprentissage organisés par le biais de modèles de distribution ou par une fonction
discriminante.
La classification visage ou non visage est représentée par une variable aléatoire x
(dérivée d’une image ou d’un vecteur caractéristique).
Parmi les méthodes utilisées dans ce contexte nous citons : Les réseaux de neurones,
les machines à vecteur de support SVM, les modèles cachés de Markov HMM, Viola-
Jones…
Template image
Corrélation I(x, y) O(x, y)
x, y
Image d’entrée Image de sortie
15
2.4.1 Réseaux de neurone
Les réseaux de neurones sont des outils d’analyse statistique dont l’objectif principal
est la classification. Ils sont utilisés dans plusieurs domaines, et représentent un enjeu
très important.
Nous distinguons les réseaux de neurones les plus répandus et les plus simples : les
perceptrons multicouches (PMC).
Le réseau de neurone détecte l’existence ou non de visage au moyen d’une fenêtre
bien définie (taille des images d’apprentissage). Celle-ci va balayer l’image d’entrée
traitée d’une manière multi-échelles
Afin de réduire la complexité de calcul, les images d’entrée sont tout d’abord
prétraitées.
Figure 2.3: diagramme de la méthode de Rowley.
Le grand avantage des réseaux de neurones réside dans leur capacité automatique
d’apprentissage ce qui permet d’éviter des règles de calcul complexes. Toutefois, est
difficile d’interpréter le modèle construit, ou de déterminer la cause en cas d’erreur du
système.
2.4.2 Méthode de Viola-Jones
La méthode Viola-Jones consiste à utiliser les descripteurs de Haar qui sont
constitués de deux rectangles adjacents, l’un noir et l’autre blanc. Ces descripteurs
sont superposés aux différentes régions de l’image à la recherche d’une zone de forte
corrélation [Viola, 2001].
Echelle
Visage
ou
Non-visage
Réseau neurone
Prétraitement
16
Figure 2.4: Les descripteurs de Haar.
L’algorithme détermine alors la ressemblance d’une zone de l’image aux descripteurs
de Haar en soustrayant la moyenne des valeurs des pixels contenus dans la région
noire à la moyenne des valeurs des pixels contenus dans la région blanche. La zone
est retenue si cette différence est supérieure à un seuil. Le seuil utilisé est déterminé
au cours de l’apprentissage par la méthode AdaBoost. Il s’agit de la combinaison de
plusieurs classificateurs peu performants (dits faibles), chacun assigné à un poids,
pour en créer un beaucoup plus fiable (dit fort). La réponse de chaque classificateur
(la région étudiée appartient au visage ou non) est peu fiable mais si le procédé est
itératif, la réponse se fait de plus en plus précise au fur et à mesure du processus, d’où
le nom de « cascade » de classificateurs.
Figure 2 .5 : Cascade de classifieurs
visage
Région de
l’image
Non-Face
Non-visage
Non-visage
Non-visage
Face
Non-visage
visage
visage
FN
F3
F2
F1
17
Pour bien caractériser le visage, les descripteurs rectangles initiaux choisis par Ada-
Boost sont significatifs et facilement interprétés. Le choix du premier descripteur est
basé sur la propriété que la région des yeux est souvent plus foncée que la région du
nez et des joues (voir figure 2.6).
Le deuxième descripteur choisi est basé sur le constat que les yeux sont généralement
plus foncés que le pont du nez.
Figure 2 .6: Les deux premiers descripteurs de Haar sélectionnés
dans la méthode Viola-Jones.
En conclusion, nous avons déduit que l’approche de reconnaissance est peu fiable en
raison de la position variable du visage dans une image. Quant à l’approche basée sur
les caractéristiques invariantes, il s’est avéré qu’elle ne répond pas totalement au
besoin de détection de visage en raison de sa dépendance à la qualité d’image. En
outre l’approche d’appariement de gabarit connue par sa qualité de détection rapide,
elle a l’inconvénient d’être limitée par les modèles prédéfinis. Alors que l’approche
basée sur l’apparence, quant-à elle, paraît être la plus fiable car elle utilise des
techniques d’analyse statistique et d’apprentissage automatique en plus de présenter
l’avantage de la robustesse par rapport aux changements de luminosité et
d’expression.
Nous avons par conséquent opté pour la méthode de Viola et Jones, basée sur
l’apparence, que nous avons jugée être la plus appropriée dans le cas de notre
problématique.
C’est la raison pour laquelle nous avons opté pour cette méthode que nous avons
trouvé efficace et réalisable dans les différentes situations.
18
3. Reconnaissance de visages
Pendant ces 30 dernières années, diverses méthodes de reconnaissance de visages ont
été développées. Elles se divisent en deux catégories : la reconnaissance à partir
d’images fixes et la reconnaissance à partir d’une séquence d’images (vidéo).
La reconnaissance de visages basée sur la vidéo est souvent plus performante que
celle basée sur des images fixes, puisque l’utilisation synchronique des informations
temporelles et spatiales aide dans la reconnaissance. Dans ce projet, nous nous
adressons à la reconnaissance basée sur les images fixes, puisque c’est le type de
données dont nous disposons.
On peut répartir l’ensemble des techniques de reconnaissance de visages basées sur
les images fixes, en trois grandes catégories : les méthodes globales, les méthodes
locales et les méthodes hybrides [ALEM, 2003].
3.1. Méthodes globales
Les méthodes holistiques appelées aussi méthodes globales, sont des méthodes qui
utilisent la région entière du visage comme entrée à l’algorithme de reconnaissance.
Ce sont des techniques très réussies et bien étudiées. Ces méthodes offrent de bonnes
performances, mais le problème de stockage des informations extraites lors de la
phase “apprentissage” reste l’inconvénient majeur.
Parmi ses méthodes nous citons: l’analyse en composantes principales (ACP),
l’analyse discriminante linéaire (ADL), ou encore les réseaux de neurones.
3.1.1. Analyse en composantes principales (ACP) [4]
L’ACP a été proposé par Pentland et Turk [Turk_Pentland, 1991], elle ne requiert
aucune connaissance de l’image, Son principe de fonctionnement est la construction
d’un sous espace vectoriel ne retenant que les meilleurs vecteur propres, tout en
gardant beaucoup d’information utile non redondante.
La méthode cherche les axes orthogonaux pour lesquels la variance des images
exemples projetées est maximale. Ces axes conviennent particulièrement pour bien
représenter les images exemples, mais par contre ils ne permettent pas forcément de
bien séparer les images exemples si celles-ci appartiennent à plusieurs classes. L’axe
possédant la variance maximale est appelée premier axe principal. Dans tout l’espace
des images, il n’existe aucun vecteur de projection avec une variance plus grande que
celle du premier axe principal. Le deuxième axe principal est l’axe qui est
19
perpendiculaire au premier axe principal et qui pointe dans la direction pour laquelle
la projection des images exemples possède de nouveau la variance maximale. Les
axes principaux suivants possèdent les mêmes propriétés par rapport aux axes
principaux précédents que le deuxième axe principal par rapport au premier. Comme
les premiers axes principaux possèdent les plus grandes variances, ce sont eux qui
permettent de représenter le mieux les images exemples. Le nombre d’axes principaux
à utiliser comme descripteurs est choisi de façon à garder environ 85 à 90% de la
variance totale.
L’ACP est une technique rapide, simple et populaire dans l'identification de modèles
de manière générale. Cependant, elle n'est pas optimisée pour la séparabilité
(discrimination) de classe.
3.2. Méthodes locales
Ce sont des méthodes géométriques, appelées aussi méthodes à traits, à
caractéristiques locales, ou analytiques. L'analyse du visage humain est donnée par la
description individuelle de ses parties et de leurs relations. Ce modèle correspond à la
manière avec laquelle l'être humain perçoit le visage, c'est à dire, à nos notions de
traits de visage et de parties caractéristiques comme les yeux, le nez ou la bouche.
La plupart des travaux réalisés se sont focalisés sur l'extraction de traits à partir d'une
image du visage et sur la définition d'un modèle adéquat pour représenter ce visage.
Un certain nombre de stratégies automatiques et semi-automatiques ont modélisé et
classé les visages sur la base de distances normalisées d’angles entres points
caractéristiques. La stratégie est qualifiée d'automatique ou non selon que la phase
d'extraction des points est faite par l'ordinateur ou assistée par un opérateur. Cette
phase constitue l'étape clé du processus, car la performance du système entier dépend
de la précision avec laquelle les informations utiles sont extraites.
L'avantage de ces méthodes réside dans la prise en compte de la particularité du
visage en tant que forme naturelle à reconnaître, en exploitant les résultats de la
recherche en neuropsychologie et psychologie cognitive sur le système visuel humain.
La difficulté éprouvée lors de la considération de plusieurs vues du visage, ainsi que
le manque de précision dans la phase “extraction” des points, constituent leur
inconvénient.
20
3.2.1 Détecteur de Harris
Depuis une vingtaine d’années, plusieurs détecteurs de PI ont été développés. Schmid
et Mohr [SCHMID 00] ont comparé les performances de plusieurs d’entre eux. Le
détecteur de PI le plus populaire est le détecteur de Harris [HARRIS 88]. Un PI est un
point où des changements significatifs apparaissent : on peut citer les coins, les
jonctions, des points noirs sur fond blanc ainsi que des endroits où la texture change
significativement.
Le détecteur de Harris est un détecteur de "coins". Le principe des détecteurs de coins
est de chercher un changement rapide de direction du contour et le principe des
détecteurs de contour est de chercher un changement rapide de direction des
intensités.
Pour observer les changements, on utilise la norme du gradient:
Donc, le détecteur de Harris est basé sur la recherche de changement rapide de
direction des intensités dans une image I. De manière simplifiée, on peut dire que le
changement d’intensité dans la direction (u,v) est donné par une formule de type
‘erreur quadratique’ sur un voisinage :
3.3. Méthodes hybrides
La robustesse d’un système de reconnaissance peut être augmentée par la fusion de
plusieurs méthodes. Cette technique de reconnaissance consiste à combiner plusieurs
méthodes pour résoudre le problème d’identification. Le choix d’un outil de
reconnaissance robuste n’est pas une tâche triviale, cependant l’utilisation d’une
approche multi-classifieur pour l’identification des visages est une solution adéquate à
ce problème [ALEM, 2003].
Parmi ces méthodes on cite la DCT-PCA, PCA-LDA, etc.
contour = |Gradient( intensité )|
coin = |Gradient( Gcontour )|
coin = |Gradient( Gradient( intensité ) )|
coin = |Gradient-2nd(intensité)|
21
En conclusion, étant donné qu’on s’adresse à des images provenant généralement de
photos d’identité (faible variabilité de pose et de taille…) nous avons choisi la
méthode locale qui correspondre à notre cas en raison de sa cohérence et sa simplicité
de réalisation.
4. Conclusion
L’état de l’art de la détection et reconnaissance de visages est très riche, nous
trouvons des multitudes algorithmes qui sont utilisés et développés dans les systèmes
commerciaux et dans les projets de recherche.
Pour la détection de visage, en prenant en considération un meilleur taux de détection
de visage avec un minimum de temps d’exécution pour le traitement d’un seul visage
par image et afin d’éviter les règles de calcul complexe pour répondre aux exigences
de notre projet nous choisirons la méthode de Viola-Jones qui contient un algorithme
de détection d’objet AdaBoost devenu une référence de détection d’objet par ses
qualités de rapidité et d’efficacité.
Pour la reconnaissance de visage, en nous basant sur l’approche locale nous
utiliserons une méthode basée sur quelques points caractéristiques du visage.
22
Chapitre 3 - Analyse des besoins
3 Chapitre
Analyse des besoins
23
1. Introduction
Dans ce chapitre, nous passerons à l’analyse des besoins fonctionnels et non
fonctionnels du module à développer. Cette analyse sera appuyée par les diagrammes
de cas d’utilisation et de séquence système.
2. Besoins fonctionnels
Notre application se répartit en deux modules fondamentaux :
Module de détection de visage
Module de reconnaissance de visage
Ces modules représentent les fonctionnalités les plus importantes de notre application
dont les besoins fonctionnels sont :
La détection de visage
Le système doit détecter le visage dans une image. La détection consiste à
délimiter une zone rectangulaire contenant la partie de l’image reconnue comme
un visage.
La construction d’une base de descripteurs associés aux visages
Dans cette étape nous extrairons de l'image les informations qui seront
sauvegardées en mémoire pour être utilisées plus tard dans la phase de
reconnaissance. Les informations doivent être choisies de manière à être
discriminantes et non redondantes.
La reconnaissance de visage
La reconnaissance de visage permet de savoir si un nouvel individu est déjà
enregistré dans la base ou non. Cette phase est l’aboutissement du processus, elle
peut être valorisée par un taux de fiabilité qui est déterminé par le taux de justesse
de la décision.
Dans le cadre du PFE, cette fonctionnalité sera réduite à retrouver un ensemble de
visages les plus proches.
La décision finale sera alors effectuée par l’utilisateur.
24
3. Besoins non fonctionnels
Interface utilisateur :
L’application devra être cohérente du point de vue de l’ergonomie. La qualité de
l’ergonomie sera un facteur essentiel, étant donné l’utilisation intensive qui sera
faite de l’application. Notre projet faisant partie de Licence+, il devra être intégré
à la même interface.
Sécurité
L’application de détection et reconnaissance de visage devra être intégrée au
système de sécurité du logiciel Licence+.
Documentation
Une documentation écrite devra accompagner le système de reconnaissance
faciale, qui décrit de manière claire et précise son fonctionnement.
Rapidité
Le temps d’exécution de l’application ne devra pas dépasser 5 secondes.
Configuration requise par l’application
La configuration minimale adoptée est celle du Pentium III 800 Mhz avec 1 Go de
RAM. La résolution d’affichage minimale sera de 800x600 en 256 couleurs.
Après avoir identifié les besoins fonctionnels et non fonctionnels du module détection
et reconnaissance de visages, nous allons identifier les principaux cas d’utilisation du
système, afin de bien concevoir notre solution.
4. Diagramme des cas d’utilisation
Les cas d’utilisation sont un moyen qui permet de capturer les exigences
fonctionnelles d’un système. Ils décrivent les interactions entre les acteurs et le
système et constituent une méthode pour recueillir et décrire les besoins des acteurs.
25
4.1 Diagramme de cas d’utilisation globale
Figure 3.1 : Diagramme de cas d’utilisation globale
Identification d’un joueur :
- Acteur : Agent de fédération
- Description : L’agent de fédération doit insérer une nouvelle licence de joueur
dans la base de données à travers le système « Licence+ » afin qu’il puisse
contrôler l’unicité de cette licence à travers le système de reconnaissance
faciale en utilisant la photo d’identité du joueur qu’elle contienne.
4.2 Diagramme des cas d’utilisation détaillée
La première étape que l’agent de fédération effectue c’est d’ajouter une photo au
système de reconnaissance faciale, une fois celle-ci est chargée, il peut lancer
l’identification de ce visage. C’est à ce stade que le module de traitement intervient
afin d’aider le système à donner une décision.
Enfin une authentification de l’utilisateur est indispensable pour confirmer la
reconnaissance ou non du visage (c.-à-d. la détection ou non de sa présence préalable
dans la base de données).
26
Figure 3.2 : Diagramme de cas d’utilisation détaillé
5. Diagramme de séquences système
Cette figure représente le diagramme de séquence de système de reconnaissance de
visage.
Figure 3.3 : Diagramme de séquence de système
27
6. Conclusion
Ce chapitre nous a permis d’analyser la faisabilité de notre système à travers la
détermination des principales fonctionnalités. Afin de pouvoir mettre en œuvre notre
application, nous devons d’abord présenter notre solution algorithmique de détection
et de reconnaissance de visage. Cela nous permettra d’identifier les classes à
implémenter et d’achever ainsi la phase de conception que nous détaillerons dans le
chapitre suivant.
28
Chapitre 4 - Conception
4 Chapitre
Conception
29
1. Introduction
Pour simplifier notre projet, une division en sous-systèmes s’imposait. Ainsi, le projet
a été subdivisé en 3 modules (voire figure 4.1): « Module de prétraitement », «
Module de détection» et « Module de reconnaissance ». Leurs rôles sont
respectivement de normaliser l’image capturée, détecter le visage et l’analyser pour
enfin pouvoir le reconnaître.
Figure 4.1 : Processus de reconnaissance faciale
Photo
Prétraitement
Détection de visage
Reconnaissance de visage
30
2. Schéma fonctionnel
Figure 4.2 : Schéma fonctionnel
Décision
Reconnaissance faciale
Enregistrement
dans la base de
données
Signature
Extraction des
paramètres
Proportion des yeux
(Détection des points d’intérêts)
Couleur de peau
Détection de visage
Descripteur de Haar
Photo
Prétraitement
Etirement d’histogramme
(Normalisation de niveaux)
Filtre médian
31
3. Module de prétraitement
Les images peuvent se présenter avec un éclairage et des ombres différentes ou encore
avec des résolutions différentes. Il est donc important que les données soient
normalisées et que les variations de contraste soient ainsi représentatives des
caractéristiques du visage et non de son environnement.
La normalisation des images reçues et détectées s’effectue en deux phases :
La première est l’étirement d’histogramme, la seconde consiste en l’application d’un
filtre médian.
3.1 Etirement d’histogramme (Normalisation des niveaux de gris)
L'étirement d'histogramme (également appelé "linéarisation d'histogramme") consiste
à répartir les fréquences d'apparition des pixels sur la largeur de l'histogramme. Ainsi
il s'agit d'une opération consistant à modifier l'histogramme de telle manière à répartir
au mieux les intensités sur l'échelle des valeurs disponibles. Ceci revient dans la
plupart des cas à étendre l'histogramme afin que la valeur d'intensité la plus faible soit
à zéro et que la plus haute soit à la valeur maximale.
3.2 Filtre Médian
Le filtre médian nous permet d’éliminer un type particulier de bruits, dit « Salt and
Pepper noise » qui consiste en des tâches dispersées d’intensité très forte ou très
faible. Le principe du filtre est le suivant : il remplace le niveau de gris de chaque
pixel par la valeur en la position médiane des niveaux de gris de son voisinage
ordonné (voir figure 4.3). Cette méthode est particulièrement pertinente quand la
configuration du bruit est forte.
Par exemple :
Dans un voisinage de 3 X 3 la médiane est le 5ème
élément après le tri.
Dans un voisinage de 5 X 5 la médiane est le 13ème
élément après le tri.
Figure 4.3 filtre médian
32
4. Détection de visage
Pour réaliser cette partie, nous avons choisi la méthode de Viola-Jones qui nécessite
une phase d’apprentissage à l’issue de laquelle une fonction de classification robuste
est formée. En réalité la phase d’apprentissage a déjà été réalisée et les données qui en
découlent nous sont proposées par la bibliothèque open source dédiée au traitement
d’images « OpenCV » ; sous la forme d’un fichier « xml ».
La fonction de classification offerte par cette bibliothèque sera exploitée par
l’algorithme de détection pour qu’il puisse réaliser une classification en visages et
non-visages.
Figure 4.4 : Schéma du système de détection
4.1 Fonction de classification
La fonction de classification utilise comme entrée une cascade de classificateurs qui
est un arbre de décisions où à chaque étape un classificateur est formé pour détecter
presque tous les objets d'intérêt (visages dans notre exemple) et rejeter certaines
fractions des objets qui n’appartiennent pas au modèle (voir figure 2.5). Dans
[LIENHART 2002], l’algorithme discret d’AdaBoost [FREUND 1996], permet
d’éliminer 50% de fausses détections, mais il élimine 0.2% des modèles frontaux de
visage.
33
4.2 Image intégrale
Pour déterminer la présence ou l'absence de centaine de descripteurs de Haar à chaque
endroit d'image et à plusieurs échelles efficacement, Viola et Jones ont utilisé une
technique appelée « Image Intégrante ». En général, "le fait de s'intégrer" veut dire
d'ajouter ensemble de petites unités. Dans notre cas , les petites unités sont des valeurs
de pixel. La valeur intégrante pour chaque pixel est la somme de tous les pixels au-
dessus et à gauche du pixel considéré. En commençant en haut et en traversant vers la
droite et le bas, l'image entière peut être intégrée avec quelques opérations par pixel.
4.3 Bloc de décision
Les images intégrales et la fonction de classification sont les entrées d’une boucle. A
chaque itération, la fenêtre de balayage sera redimensionnée, plus précisément elle
sera agrandie d’un facteur d’échelle bien choisi. Par conséquent, les données de la
fonction de classification doivent subir une adaptation à ce changement. L’adaptation
consiste principalement à redimensionner les descripteurs de Haar
proportionnellement à la taille de la fenêtre. La boucle que nous venons de citer, se
charge de garantir la détection de visage à toute échelle. Son paramètre principal est le
facteur d’échelle. Ce paramètre est généralement entre 1.1 et 1.4.
Afin de pouvoir repérer les visages à tout emplacement de l’image, notre fenêtre doit
balayer toute l’image en utilisant un algorithme de décision à chaque itération (voir
figure 4.5).
Figure 4.5 : Exemple de détection de visage
34
5. Reconnaissance de visage
Dans cette partie nous introduisons notre méthode qui va permettre d’identifier un
visage. Il est à noter que nous n’avons a priori aucun modèle des différents visages à
détecter. Cependant nous utilisons le terme « modèle » pour désigner une
représentation de chaque visage par un vecteur qui contient des informations
pertinentes et non redondantes afin de bien caractériser ce visage. Nous allons donc
décrire dans un premier temps la phase de préparation des modèles. Nous décrirons
ensuite la phase d’identification.
Le schéma ci-dessous, décrit la méthode de reconnaissance de visage.
Figure 4.5.1: Étapes de reconnaissance faciale
5.1 Détection des composantes faciales
Cette action se traduit en deux étapes :
5.1.1 Masquage de données :
Afin de cibler l’analyse sur l’image, un visage ayant une forme plutôt ovale et
verticale, les quatre coins de la fenêtre seront ignorés, ainsi qu’une bande de chaque
côté, dans la mesure où ces données représenteront principalement un décor, des
habits, ou des cheveux, données très variables et inutiles pour la détection des yeux et
du nez. Cette technique amène donc à définir un masque de taille TxT pixels (T a été
fixé à 200 pixels) pour cacher des données (Figure 4.4.1). La forme exacte du masque
sera déterminée de manière heuristique en effectuant des tests sur la base d’images
disponible.
Détection des composantes faciales - Masquage de données
- Détection des yeux (Viola-Jones)
Extraction des paramètres
- Détection des points d’intérêt (Détecteur de Harris)
- Extraction des coins des yeux (histogramme verticale)
- Proportion des yeux (Distance euclidienne)
- Détection de la couleur de peau Identification
Signature
35
Figure 4.5.2: Masque
5.1 .2 Détection des yeux
De la même manière que pour la détection de visage, nous utiliserons la méthode de
Viola-Jones pour détecter les yeux et ce en utilisant l’image masquée et le classifieur
de cascade spécifique aux yeux.
Figure 4.5.3 : Détection des yeux
5.2 Extraction des paramètres
Après l’extraction de la région qui contient les yeux dans un visage, nous nous
servons des informations situées dans ces régions pour générer des modèles de
visages.
En effet, un modèle de visage est représenté par deux paramètres :
- La proportion des yeux qui est calculée après détection des points d’intérêt.
- La couleur de peau.
5.2.1 Détection des points d’intérêt
Nous pouvons définir un point d’intérêt (PI) comme étant un point dans l’image où
des changements significatifs se produisent. Des exemples de PI sont les coins des
yeux et les points noirs sur fond blanc.
Cette action se traduit par deux étapes :
1- Changement d’espaces couleur
L’efficacité de la méthode de détection des points d’intérêt qu’on utilise dépend
vigoureusement du choix de l’espace de couleur. Etant donné que cette méthode
36
est basée sur la recherche de changement rapide de direction des intensités dans
une image, le choix d’un espace couleur convenable qui permet de distinguer deux
composantes : l’intensité et la chrominance est une étape primordiale.
L’espace de couleur le plus populaire est celui de RGB. Il décrit la couleur comme
la corrélation de trois couleurs primaires (Rouge-Verte-Bleue), mais il n’est pas
convenable dans notre cas puisqu’il mélange les deux composantes indiquées ci-
dessus.
D’autres espaces de représentation de couleurs peuvent être dérivés par des
combinaisons linéaires ou non linéaires des composantes R, G et B. Parmi ces
espaces, on cite HSV, HSI, YCrCb, YIQ.
Nous constatons que l’espace YCrCb est le plus approprié vu qu’il sépare les deux
composantes (voir figure 4.5.4 pour une illustration de la composante luminance
dans le cas d’une image d’yeux).
Figure 4.5.4 : La composante luminance Y de l’image yeux
La détection des points d’intérêt sera effectuée sur la composante Y ainsi extraite
Y = 0.299 * R + 0.587 * G + 0.114 * B. Ces PI seront extraits à l’aide du
détecteur de Harris.
2- Détecteur de Harris
Cette méthode est largement utilisée en matière d’extraction de points d’intérêts,
mais reste malgré tout délicat tant le nombre de variantes est large, elle permet
d’extraire les coins de contours comme points clés via une méthode différentielle
reposant sur la théorie de l’information. Cette méthode se caractérise par son
invariance à la translation et au changement de luminosité et d’échelle, d’où son
intérêt dans notre cas.
Figure 4.5.5 : Détection de points d’intérêts
37
Afin d’améliorer l’efficacité et la rapidité de détection, nous décidons d’appliquer
un masque sur l’image des yeux (voir figure 4.4.8).
Figure 4.5.6 : Masque des yeux
Les PI étant maintenant extraits, l’étape suivante consiste à en extraire ceux qui
représentent les coins des yeux (voir figure 4.5.8).
5.2.2 Extraction des coins des yeux
Les points d’intérêts extrait par le détecteur de Harris sont superposés à l’image sous
la forme de points de couleur blanche cela a produit quelques difficultés pour les
détecter vu que l’image peut contenir d’autres pixels blanc.
Pour remédier à ce problème et afin de bien détecter les points intérêts décisifs pour le
calcul de la proportion des yeux (les coins, en l’occurrence), nous avons décidé de
générer un histogramme vertical de l’image pour représenter la distribution des
intensités des pixels.
Figure 4. 5.7: Histogramme verticale de l’image
Une fois l’histogramme vertical de l’image est généré, nous balayons l’image en
termes d’ordonnée dans le but de détecter la première et la dernière distribution
minimale des intensités des pixels les plus clairs afin de détecter les points A et B.
Pour détecter les points C et D, nous utilisons le même principe pour les moitiés
gauche et droite de l’image.
Figure 4.5.8: Les quatre coins des yeux (A, B, C, et D).
A B C D
38
5.2.3 Proportion des yeux
La proportion des yeux est calculée à travers l’utilisation des distances euclidiennes
entre les coins des yeux extérieures « AB » et intérieurs « CD ». En effet, le but est
d’avoir la proportion des yeux (CD/AB) afin d’enregistrer les valeurs obtenues dans
un vecteur qui représente la signature du visage.
5.2.4 Détection de la couleur de peau
La couleur de peau humaine est une caractéristique pour la reconnaissance de visage.
Bien que des personnes différentes aient une couleur de peau différente, plusieurs
études ont montré que la différence principale se trouve en grande partie entre leurs
intensités plutôt que leurs chrominances. Donc pour détecter la couleur de peau, il faut
distinguer les deux composantes de chrominance Cr et Cb dans l’espace YCbCr.
Dans l’image des yeux détectés, nous avons remarqué que la région qui se trouve
entre les deux yeux, représente assez bien la couleur de peau. Pour cela nous avons
pris le voisinage de 9x9 pixels de deux composantes de chrominances Cr et Cb.
5.3 Signature
Une fois les points d’intérêts et la couleur de peau déterminés, nous commençons à
générer la signature de visage en construisant un vecteur qui contient deux
caractéristiques, à savoir la proportion entre les coins des yeux et la couleur de peau
(voir figure 4.5.9).
La précision des paramètres qui constituent la signature de visage, rendre l’étape
d’identification efficace.
Figure 4.5.9 : Signatures des visages
39
5.4 Identification
Une fois toutes les signatures créées et enregistrées dans la base de données, il s’agit
maintenant de comparer un nouvel élément avec ceux déjà présents dans la base de
données. Dans notre cas, nous proposons d’afficher les 10 visages qui ressemblent le
plus au visage recherché.
La comparaison consiste à calculer la distance entre la signature décrivant le nouvel
élément candidat et les signatures enregistrées dans la base de données. Cette distance
est obtenue en utilisant deux paramètres :
- Couleur de peau
- Proportions des coins des yeux
On calcule la différence en valeur absolu entre ces paramètres et les paramètres des
visages enregistrés dans la base de données. Les modèles ayant le plus bas score
seront les plus proche de visage recherché, pour cela on fait le tri des modèles à
l’ordre croissant vis-à-vis ces paramètre afin d’afficher les 10 premiers.
La décision finale sera alors effectuée par l’utilisateur en choisissant ou non un visage
parmi les visages donnés par le système.
Figure 4.5.10 : Recherche des visages
40
6. Diagramme de séquence
Figure 4.6 : Diagramme de séquence
41
L’utilisateur choisit une photo issue de la phase de découpage du système de gestion
de licence pour la passer au système de reconnaissance faciale. Ensuite on applique un
module de prétraitement sur la photo injectée au système dont le but est d’améliorer la
qualité de l’image. Puis on lance la détection de visage et par la suite la détection des
yeux. A ce stade on calcule la proportion entre les coins des yeux et on détecte la
couleur de peau afin de générer une signature de visage, cette dernier sera comparée
aux des signatures enregistrées dans la base pour trouver le visage recherché.
7. Diagramme des classes
A la suite du traçage des diagrammes de séquences, nous avons obtenu un diagramme
global des classes qui est un élément important dans une démarche de conception
orientée objet. Il représente les différentes entités (les classes d'objet) intervenant dans
le système.
Le diagramme de classe ci-dessous est composé de six classes :
1. la classe « ReconnaissanceFacialeMFCDlg.cpp » représente la classe principale
du système puisqu’elle contienne les deux fonctions de base :
OnBnClickedApprentissage : Apprendre à reconnaitre quelques visages.
OnBnClickedReconnaissance : Recherche des visages dans la base du
système.
2. La classe « Reconnaissance.cpp » contient toutes les fonctions qu’on utilise pour
reconnaître les visages, et utilise la classe « Detect.cpp » comme paramètre de
détection.
3. La classe « Detect.cpp » est liée à la classe « Reconnaissance.cpp » et contient les
fonctions de détection des yeux et de visage dans une image.
4. La classe « Photo.cpp » contient les fonctions de base pour la gestion des photos,
et utilise la classe « pretraitement.cpp » comme paramètre de prétraitement des
images.
5. La classe « pretraitement.cpp » est liée à la classe « Photo.cpp », et contient les
fonctions de prétraitement de l’image (filtre médian, Egalisation histogramme
etc..).
6. La classe « Signature.cpp » représente le vecteur caractéristique de visage, et a
pour paramètres la proportion des yeux et la couleur de peau.
42
Figure 4.7 : Diagramme de classe
43
Chapitre 5 - Réalisation
5 Chapitre
Réalisation
44
1. Introduction Dans ce chapitre, nous aborderons les méthodes que nous avons développées, pour la
détection et la reconnaissance d’un visage dans une photo d’identité. Nous
présenterons aussi les résultats obtenus à la suite des tests effectués, ainsi que nos
propositions pour améliorer la méthode proposée.
Pour la détection du visage nous avons utilisé des outils existants dans la bibliothèque
OpenCV car elle possède plusieurs outils pour le traitement d’image déjà
implémentés, dont en particulier la méthode de « Viola-Jones » que nous avons
choisie pour la détection de visage.
Nous décrivons ici le fonctionnement et les services offerts par OpenCV.
2. Présentation de la bibliothèque OpenCV OpenCV [OPENCV, 2007] (Open source Computer Vision library), est une
bibliothèque de traitement d’images et de vision par ordinateur en langage C/C++,
optimisée, proposée par Intel pour Windows et Linux. Elle est « Open Source », Elle
comprend plusieurs solutions pour le traitement d’image et de l’analyse du
mouvement.
2.1 Classifieur OpenCV
Nous nous servons, dans nos travaux de détection du visage, du classifieur OpenCV
appelé. Il s’applique sur des régions de l’image tout en faisant subir des
transformations d’échelle, afin de reconnaître si un objet d’une région rassemble à un
visage.
2.2 Implémentation
2.2.1 Installation d’OpenCV sous Windows [1]
L’installation sous Windows est un peu plus simple. OpenCV est distribué en tant que
package binaire prêt à l’emploi. Nous commençons par télécharger le fichier
d’installation d’OpenCV : http://sourceforge.net/projects/opencvlibrary/files/
Puis nous installons le programme dans le chemin qui est proposé par défaut :
C:\ProgramFiles\OpenCV2.1.
45
2.2.2 Environnement de programmation
Pour réaliser notre application nous utiliserons le langage de programmation C++ en
se basant sur la bibliothèque OpenCV.
Cette bibliothèque se compose de 5 modules :
cxcore : Contient les structures de base et elle fournit de nombreuse fonction
de dessin (lignes, cercles, ellipses, arcs, …).
cv : les fonctions principales
cvaux : Contient les fonctions en cours d'implémentation, ou dépréciées
highgui : Contient les fonctions de création d'interfaces utilisateurs (matrices,
tableaux, listes, files, graphes, arbres…), ainsi les structures élémentaire
(matrices, tableaux, listes, files, graphes, arbres…).
mll (sorti en 2009) : Elle intègre de nombreux algorithmes d'apprentissage
automatisé.
Le module CV contient les fonctions nécessaires pour notre application, dont les plus
importantes sont :
1. cvHaarDetectObjects
C’est une fonction pratique pour détecter des objets dans une images.
Les paramètres d’entrée sont :
o Une image
o Base d’apprentissage (fichier XML)
o Espace mémoire
o Facteur d’échelle
2. cvGoodFeaturesToTrack
C’est une fonction pratique pour détecter les points d’intérêts.
Les paramètres d’entrée sont :
o Une l'image dont on cherche les points d'intérêt, elle doit avoir un seul canal et
avoir une profondeur de 8bit ou de 32bits en virgule flottante.
o Deux images temporaires utilisées par la fonction, elles sont de type
IPL_DEPTH_32F et ont la même hauteur et largeur que le paramètre image,
elles ont un seul canal.
46
o Un vecteur contenant les points d'intérêt, les éléments de ce vecteur sont de
type CvPoint2D32f.
o Le nombre maximal de points d'intérêt à trouver. Une fois la fonction
exécutée, cette variable pointe vers le nombre de points d'intérêts trouvés.
o La qualité minimum des points d'intérêt.
o La distance (euclidienne) minimum entre deux points.
o Un masque représenté par une matrice (de type CvMat) spécifiant les pixels
de l'image à traiter représentés par les éléments non-nuls de la matrice. Si la
valeur est NULL (valeur par défaut), toute l'image est traitée.
o La taille du voisinage (valeur par défaut = 3).
o Variable qui indique l’utilisation de l'opérateur Harris (valeur par défaut = 0).
o Paramètre pour l'opérateur Harris.
2.3. Expérience
2.3.1. Détection à l’aide des «Classifieurs de Haar»
Pour détecter des objets dans une image, OpenCV nous fournis la fonction
« cvHaarDetectObjects » qui est basé sur la méthode de Viola et Jones, la nature des
objets détectées dépend de classifieur utilisé.
OpenCV nous propose des classifieurs prédéfinis pour la détection d’un visage dans
une image sous forme des fichiers XML. Ces classifieurs différent par le type
d’algorithme de boosting qu’ils utilisent, tels que Discrete Adaboost, Real Adaboost
ou encore Gentle Adaboost et position de visage dans l’image.
Ci-dessous les fichiers :
haarcascade_frontalface_alt.xml
haarcascade_frontalface_alt_tree.xml
haarcascade_frontalface_alt2.xml
haarcascade_frontalface_default.xml
haarcascade_profileface.xml
Afin de comparer ces différentes cascades de manière objective, nous les avons
testées sur une base d’images contenant au total 858 photos de visages. Ces images
ont été obtenues pendant la phase de découpage du système Licence+.
47
Ces images différent par leurs qualité (Conditions d’acquisition, éclairage etc..) et
représentent des visages découverts ou masqués par des objets (lunette, moustache
etc..), et même en position droite ou inclinée…
Voici les résultats obtenus par les cascades de type frontalface (vue de face) :
Bonnes détections Mauvaises détections
Nombre Pourcentage Nombre Pourcentage
frontalface_alt 710 82.75 % 148 17.25 %
frontalface_alt2 620 72.30% 238 27.70%
frontalface_alt_tree 595 69.35% 263 30.65%
frontalface_default 796 92.78% 62 7.22%
Tableau 5.1: Résultat des détections de visage
Il s’avère que les résultats obtenus par la cascade frontalface_default est le meilleur
avec un taux de bonne détection égale à 92.78% et un taux de mauvaise de détection
égale à 7.22%.
Nous retiendrons donc uniquement le dernier fichier car c’est celui qui offre les
meilleures performances pour la détection de visages selon notre expérience. La
figure 5-1 présente des échantillons de résultats.
Figure 5.1: bonnes détection/mauvaises détections
Bonnes détections
Mauvaises détection
48
Nous verrons maintenant comment ces scores peuvent être améliorés, en effet, pour
résoudre le souci des fausses détections, nous avons ajouté un module de
prétraitement de l’image avant la phase de détection.
2.3.2. Prétraitement
Comme nous l’avons déjà décrit dans le chapitre 4 (conception) le module
prétraitement nous permettra d’améliorer l’efficacité de détection.
Le prétraitement des images s’effectue en deux temps :
Étirement d’histogramme.
Cette action nous a permis d’améliorer le taux de bonne détection à 93,70 %
avec un nombre d’images égal à 804 qui contient des visages détectés.
Filtre médian
L’ajout de filtre médian avec l’action précédente nous a permis d’améliorer le
taux de bonne détection à 95,10 % avec un nombre d’images égal à 816 qui
contient des visages détectés.
Figure 5.2 : Exemple d’image après prétraitement
Etirement histogramme
Egalisation histogramme + Filtre médiane
49
Les résultats obtenus sont assez bons, et dans nos tentatives d’amélioration par la
création d’un module de prétraitement pour les images, nous nous sommes aperçu que
la qualité d’une image est au moins aussi importante que l’algorithme qui l’utilise.
Sachant qu’une détection efficace est indispensable pour obtenir de bons résultats de
reconnaissance, Nous nous sommes servis d’OpenCV comme d’un outil clé-en-main
pour effectuer cette partie.
Dans la partie suivante, nous détaillerons la réalisation de la reconnaissance de visage.
3. Reconnaissance de visage
A ce niveau du processus, nous sommes en possession d’une image propre, c'est-à-
dire libérée du bruit et ne contenant que l’information utile à analyser.
3.1. Implémentation
Après la détection de visages, nous avons utilisé une autre fois la fonction
« cvHaarDetectObjects » avec une cascade «haarcascade_mcs_eyepair_big.xml»
proposée aussi par OpenCV pour détecter les yeux.
Nous avons testées cette cascade sur les 858 photos de visages détectés.
Voici les résultats obtenus:
Bonnes détections Mauvaises détections
Nombre Pourcentage Nombre Pourcentage
831 96.85 % 27 3.15 %
Tableau 5.2: Résultat des détections des yeux
Une fois les yeux détectés, nous pouvons changer l’espace couleur RGB en YCrCb
dont le but de détecter la couleur de peau et de déterminer la proportion des yeux,
pour cela nous avons utilisés la fonction « cvCvtColor » de la bibliothèque OpenCV.
50
La détection de couleur de la peau est basée sur les deux composantes de chrominance
Cr et Cb par contre la proportion des yeux est calculée en utilisant la composante
luminance Y, ce qui nous amène à utiliser la fonction « cvSplit » pour isoler les
différents canaux de l’espace couleur YCrCb.
La détection des points d'intérêts est primordiale pour calculer la proportion des yeux.
La librairie OpenCV nous offre cette fonction « cvGoodFeaturesToTrack » qui est
très pratique pour détecter les points d'intérêt.
Ces deux caractéristiques (couleur de peau et proportion des yeux) représentent les
attributs de la classe « Signature.cpp » qui est utilisé comme modèle comparable par
rapport aux autres modèles enregistrées dans la base de données.
3.1.1 Base de données
La base de données est définie de la façon suivante. Le répertoire racine contient deux
dossiers:
Photos : elles contiennent les photos de la base de données.
Résultat : il contient les images de visage issu après la détection.
Un fichier texte :
Base.txt : il contient les vecteurs caractéristiques des visages, chaque vecteur
représente des informations exclusives pour, à savoir la proportion des yeux et
la couleur de peau, lesquels sont inéluctables pour la phase de décision.
Figure 5.3.1 : Fichier « Base.txt »
51
Figure 5.3.2 : Dossier « Résultat »
Figure 5.3.3 : Dossier « Photos »
3.2 Expérience
Pour tester le système et notamment l’algorithme de reconnaissance faciale, nous
avons utilisé une base de donnée de visage disponible sur internet. Il s’agit de la base
offerte par l’université Essex qui se trouve en grande Bretagne [5].
52
Les caractéristiques de la base sont :
Nombre total des individus : 395
Nombre des images par individu : 20
Nombre total des images : 7900
Genre : Contient des images des males et des femelles
Origine : Contient des images de différentes origines
Age : les images sont principalement des étudiants de première année, de sorte
que la majorité des individus sont entre 18-20 ans, mais certaines personnes
âgées sont également présentes.
Lunette : oui
Barbe : oui
Format des images : 24 bit couleur
Type des images : JPEG
Caméra utilisé : S-VHS caméscope
Éclairage: artificiel, un mélange de tungstène et fluorescent
Nous avons utilisé aussi une base de photos appartenant à la fédération Tunisienne de
football (FTF) afin de simuler des cas réels. Nous avons apporté quelques
modifications sur certaines photos (histogramme, niveau de gris, rotation, échelle,
couleur,...) pour bien tester la reconnaissance.
Les tests appliqués à ces bases ont permis de bien configurer la fonction
« cvGoodFeaturesToTrack » fournis par la bibliothèque OpenCV afin d’avoir une
bonne qualité de reconnaissance.
Nous avons bien conclu que le nombre maximal de points d'intérêt à trouver est à
égale 100, la qualité minimum des points d’intérêts est égale à 0.09, la distance
minimale entre deux points d’intérêt est égale à 4, finalement, la taille de voisinage
est égale 3.
En ce qui concerne le temps d’exécution, c’est la partie apprentissage qui prend
beaucoup de temps (de l’ordre de deux ou trois secondes), la reconnaissance, elle, est
rapide, le résultat est quasi immédiat.
53
4. Interface utilisateurs
4 .1 Introduction
A ce niveau, nous nous proposons de compléter notre travail par une interface
utilisateur, et constatons que la bibliothèque OpenCV ne fournit pas des outils
performants pour la construction des interfaces graphiques. D’où l’idée d’utiliser le
langage C#, pour nous l’intérêt majeur d’utiliser ce langage réside dans la simplicité
et l’efficacité de créer les interfaces graphiques.
4 .2 Fenêtre principale
Figure 5.4 : Menu principale
Bouton :
« Démarrer » : Lancer l’apprentissage des photos.
« Base » : Permet d’afficher la base de données.
« Charger photo » : Charger la photo à rechercher.
« Reconnaissance » : Lancer la reconnaissance.
« Clear » : Fermer toutes les fenêtres affichées.
« Exit » : Quitter l’application.
Group box :
« Configuration » : Amélioration de la qualité de reconnaissance.
« Photo N° » : Indiquer les photos pour l’apprentissage.
« Apprentissage » : Contient une barre de progression pour indiquer le
déroulement d’apprentissage des photos.
54
4 .3 Apprentissage des photos
Figure 5.5 : Apprentissage des photos
4 .4 Fenêtre résultat
Figure 5.6 : Apprentissage des photos
5. Résultats
Les tests réalisés avaient pour but d’observer l’influence des conditions
d’illuminations des sujets, de leurs distances par rapport au système de capture
d’image et à la position du visage.
55
En réalité, l’effet du premier cas est minimisé par le prétraitement des images et le
second par le détecteur de visage mais il y a une influence sur la qualité du visage
extrait. Quant au dernier, le système développé n’est pas adapté à la reconnaissance de
profil.
Il peut tout de même reconnaître des visages tournés d’un léger angle mais avec un
taux d’erreur plus élevé.
Base Bonnes détections Mauvaises détection
Nombre Pourcentage Nombre Pourcentage
FTF (90 visages) 62 68,88% 28 32.22%
Essex (100 visages) 58 58% 42 42%
Tableau 5.3: Résultat des détections de visage
6. Diagramme
Phase 1 : Bibliographie (détection de visage)
Phase 2 : Détection de visage
Phase 3 : Bibliographie (reconnaissance de visage)
Phase 4 : Reconnaissance de visage
Phase 5 : Rédaction de rapport
Phase 1
Phase 2
Phase 3
Phase 4
Phase 5
Mars Avril Mai Juin Juillet Aout Septembre Octobre
56
7. Conclusion
Nous avons tout d’abord abordé le processus de détection de visage à l’aide de la
bibliothèque OpenCV, et nous avons essayé d’éliminer les fausses alarmes afin
d’améliorer le taux de détection. Ensuite, nous avons traité le processus
d’identification du visage en proposant une méthode qui consiste à extraire quelques
caractéristiques de visage (proportion des coins des yeux et la couleur de peau).
57
CONCLUSION GENERALE
La reconnaissance d’individus demeure un problème complexe et non parfaitement
résolu, malgré tous les travaux réalisés au cours des dernières années. Plusieurs
problèmes incombent à cette tâche d’identification et chacun d’eux est non trivial. De
nombreuses conditions réelles affectent la performance d’un système, cependant la
détection automatique des visages influence énormément la performance du module
d’identification.
A travers ce projet nous avons mis en œuvre une approche d’identification du visage,
et pour aboutir à ce but, il fallait au préalable aborder un travail de détection du
visage. Pour cela nous avons détaillé dans le chapitre 4 nos travaux de détection et
notre approche pour améliorer le résultat obtenu en ajoutant un module de
prétraitement. Bien que notre méthode d’amélioration ait montré de bons résultats, au
niveau de l’interpolation de visages non détectés par la librairie OpenCV, elle élimine
parfois de vrais visages.
Après la phase de détection, nous avons pu aborder la tâche de reconnaissance. Notre
apport dans cette tâche délicate, est d’utiliser la notion des points d’intérêt pour
reconstruire un modèle de visage.
Ce projet ne manque pas de perspectives : pour la tâche de détection, et à partir des
visages détectés par la librairie OpenCV, il est intéressant de trouver d’autres
méthodes d’élimination des fausses alarmes et de détecter en contre-partie les visages
oubliés par la méthode « Viola-Jones ». Nous proposons d’utiliser des approches
heuristiques, pour prévoir si une telle détection correspond à un visage ou non, en
tenant compte des positions des autres visages.
Pour l’identification, nous proposons d’ajouter ou d’améliorer d’autres paramètres
aux vecteurs qui caractérisent le visage comme par exemple : la géométrie de la tête et
les distances entre les composantes faciale.
La reconnaissance des visages fait partie de la biométrie qui est sans doute un
domaine d’avenir. Au cours des prochaines décennies, de plus en plus de systèmes
verront probablement le jour afin de réaliser une surveillance accrue.
58
A travers ce PFE, nous avons apporté une modeste contribution dans ce domaine, dont
l’intérêt réside dans la mise en place directe de l’application dans le cadre réel,
puisqu’elle est destinée à être intégrée dans le système licence+ pour répondre aux
besoins spécifiques et particuliers du monde sportif.
59
Références bibliographiques
Articles scientifiques :
[Viola, 2001]: P. Viola, M. Jones, Rapid Object Detection using a Boosted Cascade
of Simple Features, Conference On Computer Vision And Pattern Recognition 2001.
[Yang, 2002]: Yang M H, Kriegman D, Ahuja N. Detecting faces in images: A
survey. IEEE Trans Pattern Analysis and Machine Intelligence, 2002, 24(1):34-58.
[Freund, 1996] Y. Freund, R.E. Schapire, Experiments with a New Boosting
Algorithm, In Proc. 13th Int. Conf. on Machine Learning, 1996, 148.-156.
[ALEM, 2003] : A. Lemieux « Systèmes d’identification de personnes par vision
numérique » Université Laval, Québec Décembre 2003.
[Turk_Pentland, 1991]: M. Turk and A. Pentland, Face recognition using eigenfaces.
Proc. IEEE Conference on Computer Vision and Pattern Recognition, 1991, 586–591.
[OpenCV, 2007]A Basic Introduction to OpenCV for Image Processing – Discover
Lab School of Information - Technology & Engineering - University of Ottawa –
January, 2007
[SCHMID, 00] C. Schmid, R. Mohr, and C. Bauckhage. Evaluation of interest point detectors. International Journal of Computer Vision, pages 151–172, 2000. [HARRIS 88] J. Harris and M. Stephens. A combined corner and edge detector. 4th ALVEY Vision Conference, pages 147–151, 1988.
Sites Internet
[1] http://opencvlibrary.sourceforge.net/ - OpenCV documentation and FAQs - 25
Mai 2010
[2] http://www.siteduzero.com/tutoriel-3-8619-les-operateurs-morphologiques.html -
20 Mai 2010
[3] http://www.biometrie-online.net - 10 Mars 2010
[4] http://www.face-rec.org - 16 Avril 2010
[5] http://cswww.essex.ac.uk/mv/allfaces/index.html - 20 Août 2010
60
Annexe 1
61
Annexe 2
62
Annexe 3
63
64
Recommended