0% ont trouvé ce document utile (0 vote)
39 vues93 pages

Eprint 10344

Ce mémoire présente un système de reconnaissance faciale utilisant les techniques Local Binary Pattern Histogram (LBPH) et Haar Cascade Classifier pour la détection et la classification en temps réel des visages humains. Le système prépare d'abord les données à partir de photos et vidéos, puis détecte les visages avant d'extraire et de classifier les caractéristiques faciales. Les résultats montrent l'efficacité de l'approche dans le cadre de l'apprentissage automatique profond appliqué au Big Data.

Transféré par

lahlou khalid
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
39 vues93 pages

Eprint 10344

Ce mémoire présente un système de reconnaissance faciale utilisant les techniques Local Binary Pattern Histogram (LBPH) et Haar Cascade Classifier pour la détection et la classification en temps réel des visages humains. Le système prépare d'abord les données à partir de photos et vidéos, puis détecte les visages avant d'extraire et de classifier les caractéristiques faciales. Les résultats montrent l'efficacité de l'approche dans le cadre de l'apprentissage automatique profond appliqué au Big Data.

Transféré par

lahlou khalid
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

UNIVERSITÉ DU QUÉBEC

MÉMOIRE PRÉSENTÉ À

L’UNIVERSITÉ DU QUÉBEC À TROIS-RIVIÈRES

COMME EXIGENCE PARTIELLE DE

LA MAÎTRISE EN MATHÉMATIQUES ET INFORMATIQUE APPLIQUÉES

PAR :

SOUKAINA ALAOUI ISMAILI

BIG DATA ET RECONNAISSANCE DES VISAGES

AVRIL 2022
Université du Québec à Trois‐Rivières

Service de la bibliothèque

Avertissement

L’auteur de ce mémoire ou de cette thèse a autorisé l’Université du Québec


à Trois‐Rivières à diffuser, à des fins non lucratives, une copie de son
mémoire ou de sa thèse.

Cette diffusion n’entraîne pas une renonciation de la part de l’auteur à ses


droits de propriété intellectuelle, incluant le droit d’auteur, sur ce mémoire
ou cette thèse. Notamment, la reproduction ou la publication de la totalité
ou d’une partie importante de ce mémoire ou de cette thèse requiert son
autorisation.
UQTR

Big Data et reconnaissance des visages 1


UQTR

Résumé
De nos jours, la reconnaissance faciale et le Big Data sont deux facettes qui n’avaient
pratiquement rien en commun, mais les progrès récents dans plusieurs domaines et prin-
cipalement la vision par ordinateur les a conduits à converger pour effectuer des tâches à
l’aide de l’apprentissage automatique profond telles que la détection, la reconnaissance
et la classification.
Dans ce rapport, nous avons développé un système de reconnaissance faciale basé sur
la technique Local Binary Pattern Histogram (LBPH) et la technique de Haar Cascade
Classifier pour traiter la reconnaissance en temps réel du visage humain à partir de la
caméra de l’ordinateur. Ce système prépare dans un premier temps, les données à partir
desquelles on veut extraire de l’information et faire la reconnaissance, il s’agit de photos
et de vidéos contenant de l’information sur le visage humain, ensuite il utilise l’algo-
rithme Haar Cascade Classifier pour effectuer la détection de l’objet visage humain. Par
la suite, le système procède à l’extraction des caractéristique des points de visage pour
encoder la forme de celui-ci en binaire à l’aide de la technique LBP. Finalement la classifi-
cation des histogrammes générés qui nous permet de voir s’il s’agit de la bonne personne
qu’on veut identifier ou non.

Mots-clés : boosting, extraction des caractéristiques, détection de visage, reconnais-


sance de visage.

Big Data et reconnaissance des visages 2


UQTR

Abstract
Nowadays, facial recognition and Big Data are two facets that had practically nothing in
common, but recent advances in several fields and mainly computer vision has led them
to converge to perform tasks using deep machine learning such as detection, recognition
and classification.
In this report, we developed a facial recognition system based on Local Binary Pattern
Histogram (LBPH) technique and Haar Cascade Classifier technique to process real-time
recognition of human face from computer camera. This system first prepares the data
from which we want to extract information and perform recognition, these are photos
and videos containing information on the human face, then it uses the algorithm Haar
Cascade Classifier to perform human face object detection. Thereafter, the system pro-
ceeds to the extraction of the characteristics of the face points to encode the shape of
the latter in binary using the LBP technique. Finally the classification of the generated
histograms which allows us to see if it is the right person that we want to identify or
not.

Keywords : boosting, feature extraction, face detection, face recognition.

Big Data et reconnaissance des visages 3


UQTR

Remerciements
Je tiens à remercier, au terme de ce travail, toutes les personnes dont l’intervention, de près
ou de loin, a contribué à l’aboutissement de ce mémoire. Tout d’abord, j’adresse mes sin-
cères remerciements à Mr Fathallah Nouboud qui m’a fait l’honneur de m’encadrer et qui
n’a épargné aucun effort pour le bon déroulement de ce travail, avec ses remarques et ses
consignes qui m’ont été d’un grand apport. Je tiens à lui témoigner ma reconnaissance et
ma gratitude pour la qualité de son encadrement, son soutien et ses précieux conseils, pour
le temps précieux qu’il m’a consacré, pour son suivi, sa disponibilité et ses conseils qui m’ont
été d’une grande aide pour mener à bien ce projet. Je tiens à témoigner toute ma reconnais-
sance envers lui pour l’expérience enrichissante et pleine d’intérêt qu’il m’a fait vivre durant
cette maîtrise. Mes vifs remerciements s’adressent également à ma petite famille, mon mari
et mes enfants, qui m’ont comblé de leur soutien et m’ont voué un amour inconditionnel.
Vous êtes pour moi un exemple de courage et de sacrifice continu, je vous remercie pour
votre compréhension, votre soutien et votre tendresse.... Je m’acquitte, enfin, volontiers d’un
devoir de gratitude et de remerciements à tous mes enseignants pour la qualité de l’ensei-
gnement : François Meunier, Ismaili Biskri, William Flageol, Louis Houde et Usef Faghihi,
qu’ils ont bien voulu me prodiguer durant mon cursus à l’université afin de me fournir une
formation efficiente et ciblée.

Big Data et reconnaissance des visages 4


Table des matières

0.1 Introduction générale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

1 Problématique et contexte général 12

1.1 La vision par ordinateur . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

1.2 le Big Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

1.3 La reconnaissance faciale . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

1.4 Le Big Data et la reconnaissance de visage . . . . . . . . . . . . . . . . . 17

1.5 Architecture d’un système de reconnaissance faciale . . . . . . . . . . . . 18

1.5.1 Préparation des données . . . . . . . . . . . . . . . . . . . . . . . 19

1.5.2 Détection de visage . . . . . . . . . . . . . . . . . . . . . . . . . . 20

1.5.3 Extraction des caractéristiques . . . . . . . . . . . . . . . . . . . 21

1.5.4 Classification des visages . . . . . . . . . . . . . . . . . . . . . . 22

1.5.5 Identification et vérification . . . . . . . . . . . . . . . . . . . . . 23

2 Etat de l’art 24

2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

2.2 Approche Eigen Face . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

2.2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

2.2.2 Technique ACP . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26

2.2.3 Technique SVD . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

5
TABLE DES MATIÈRES UQTR

2.2.4 Technique SVM . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

2.3 Approche classification avec descripteur par bloc . . . . . . . . . . . . . 29

2.3.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

2.3.2 L’histogramme de LBP . . . . . . . . . . . . . . . . . . . . . . . . 30

2.4 L’approche de Deep Learning avec les réseaux de neurone . . . . . . . . 30

2.5 Approche pa la logique floue . . . . . . . . . . . . . . . . . . . . . . . . . 31

2.5.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

2.5.2 Fuzzification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

2.5.3 Inférence floue . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31

2.5.4 Défuzzification . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

2.5.5 Détection de visage utilisant la logique floue . . . . . . . . . . . . 32

3 Approche pour la reconnaissance des visages en utilisant le Big Data 34

3.1 Préparation des données . . . . . . . . . . . . . . . . . . . . . . . . . . . 35

3.2 Détection de visage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

3.2.1 Le classificateur Haar Cascade . . . . . . . . . . . . . . . . . . . 37

3.2.2 Entrainement du classificateur pour détecter le visage . . . . . . 39

3.2.2.1 Le boosting . . . . . . . . . . . . . . . . . . . . . . . . 39

3.2.2.2 L’algorithme Adaboost . . . . . . . . . . . . . . . . . . 40

3.3 Extraction des caractéristiques . . . . . . . . . . . . . . . . . . . . . . . . 48

3.3.1 L’histogramme LBP . . . . . . . . . . . . . . . . . . . . . . . . . 48

3.3.1.1 Définition . . . . . . . . . . . . . . . . . . . . . . . . . 48

3.3.1.2 Calcul de l’opérateur LBPH : . . . . . . . . . . . . . . . 49

3.3.1.3 Réalisation de l’histogramme . . . . . . . . . . . . . . 52

3.4 Classification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54

3.5 Identification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

Big Data et reconnaissance des visages 6


4 Implémentation et résultats 57

4.1 Environnement de travail . . . . . . . . . . . . . . . . . . . . . . . . . . 58

4.2 Implémentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

4.2.1 Détection de visage . . . . . . . . . . . . . . . . . . . . . . . . . . 59

4.2.1.1 Etape 1 : Les images positives et les images négatives . 59

4.2.1.2 Etape 2 : Préparation des images . . . . . . . . . . . . . 60

4.2.1.3 Etape 3 : création du fichier Vector des images positives 62

4.2.1.4 Etape 4 : Le Haar-Trainning . . . . . . . . . . . . . . . 62

4.2.1.5 Etape 5 : création du fameux fichier haarCascadeClas-


sifier personnalisé . . . . . . . . . . . . . . . . . . . . . 64

4.2.2 Reconnaissance de visage . . . . . . . . . . . . . . . . . . . . . . 68

4.3 Expérimentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70

4.4 Résultats et perspectives . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

4.5 Conclusion générale . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77

4.6 Annexe 1 : Détection de visage . . . . . . . . . . . . . . . . . . . . . . . . 78

4.7 Annexe 2 : Reconnaissance et identification . . . . . . . . . . . . . . . . . 80

4.8 Annexe 3 : Interface graphique . . . . . . . . . . . . . . . . . . . . . . . . 82


Table des figures

1.1 Vision par ordinateur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

1.2 Big Data et les 3V . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

1.3 Architecture d’un système de reconnaissance faciale . . . . . . . . . . . . 18

1.4 Préparation des données . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

1.5 Détection de visage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

1.6 Extraction des caractéristiques . . . . . . . . . . . . . . . . . . . . . . . . 21

1.7 Classification des visages . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

1.8 Identification et vérification . . . . . . . . . . . . . . . . . . . . . . . . . 23

2.1 La décomposition en valeurs singulières . . . . . . . . . . . . . . . . . . . 27

2.2 système de décomposition matricielle avec SVD . . . . . . . . . . . . . . 28

2.3 Classification SVM . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29

3.1 Base de données . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

3.2 Caractéristique de bords . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

3.3 Caractéristique de lignes . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

3.4 Caractéristiques centrées . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

3.5 Arbre de l’algorithme Adaboost . . . . . . . . . . . . . . . . . . . . . . . 41

3.6 L’algorithme Adaboost . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42

8
3.7 Random forest . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

3.8 Entrainement de classificateurs avec Adaboost . . . . . . . . . . . . . . . 45

3.9 Histogramme LBP : . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53

3.10 Processus de classification . . . . . . . . . . . . . . . . . . . . . . . . . . 54

3.11 Identification du visage . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

4.1 Images positives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

4.2 Images négatives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

4.3 Code pour détecter le visage . . . . . . . . . . . . . . . . . . . . . . . . . 66

4.4 Détection de visage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67

4.5 Détection de plusieurs visages . . . . . . . . . . . . . . . . . . . . . . . . 67

4.6 Les caractéristiques Haar . . . . . . . . . . . . . . . . . . . . . . . . . . . 68

4.7 Entrainement avec l’histogramme LBP . . . . . . . . . . . . . . . . . . . 69

4.8 Extraction des caractéristiques avec LBP . . . . . . . . . . . . . . . . . . 70

4.9 Histogramme LBP et la mesure de similarité . . . . . . . . . . . . . . . . 71

4.10 Reconnaissance faciale . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72

4.11 Interface graphique . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73

4.12 Reconnaissance faciale avec éclairage faible . . . . . . . . . . . . . . . . . 74

4.13 Reconnaissance faciale avec différentes déviations angulaires . . . . . . . 75

4.14 Reconnaissance faciale avec éclairage insuffisant . . . . . . . . . . . . . . 75

4.15 Précision de la méthode LBPH . . . . . . . . . . . . . . . . . . . . . . . . 76


Liste des tableaux

1.1 Les données et le Big Data . . . . . . . . . . . . . . . . . . . . . . . . . . 16

3.1 Représentation d’une image en pixels . . . . . . . . . . . . . . . . . . . . 48

3.2 Calcul de l’opérateur LBP : . . . . . . . . . . . . . . . . . . . . . . . . . . 50


0.1 Introduction générale
Pour la plupart des gens, une image numérique n’est qu’une image. Mais pour un or-
dinateur, une image est une tapisserie de pixels et le scientifique a la possibilité de dé-
composer et d’analyser cette image. L’extraction d’informations à partir d’images fixes
et même de vidéos, à l’aide de techniques de traitement d’images, y compris des algo-
rithmes, sera monétisée dans un proche avenir.
De nombreuses recherches antérieures concernant l’identification faciale automatisée
ont contourné le problème de savoir quels aspects du stimulus facial sont nécessaires
pour la reconnaissance, considérant que des mesures prédéterminées étaient appropriées
et efficaces [34]. Cela a suggéré qu’une méthode de théorie de l’information de codage et
de décodage des images faciales pourrait fournir un aperçu du contenu informationnel
de ces images, en se concentrant sur les caractéristiques locales et globales importantes.
Ces caractéristiques pourraient ou non avoir une relation directe avec l’idée intuitive des
propriétés du visage comme les cheveux, les yeux, le nez et les lèvres. Dans le concept de
la théorie de l’information, le but est d’obtenir des informations utiles dans une image
faciale, ensuite de les coder selon la méthode utilisée, puis de comparer le codage du
visage à une base de données de modèles qui ont été codés de la même manière [24].
Chapitre 1

Problématique et contexte général

Sommaire
1.1 La vision par ordinateur . . . . . . . . . . . . . . . . . . . . . . . 13
1.2 le Big Data . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.3 La reconnaissance faciale . . . . . . . . . . . . . . . . . . . . . . . 16
1.4 Le Big Data et la reconnaissance de visage . . . . . . . . . . . . . 17
1.5 Architecture d’un système de reconnaissance faciale . . . . . . . 18
1.5.1 Préparation des données . . . . . . . . . . . . . . . . . . . . . 19
1.5.2 Détection de visage . . . . . . . . . . . . . . . . . . . . . . . . 20
1.5.3 Extraction des caractéristiques . . . . . . . . . . . . . . . . . 21
1.5.4 Classification des visages . . . . . . . . . . . . . . . . . . . . 22
1.5.5 Identification et vérification . . . . . . . . . . . . . . . . . . . 23

12
CHAPITRE 1. PROBLÉMATIQUE ET CONTEXTE GÉNÉRAL UQTR

1.1 La vision par ordinateur

Il existe deux formes de la vision : la vision de la machine et la vision par ordinateur


(CV). Alors que la première est largement à usage industriel, les caméras sur un tapis
roulant dans une installation industrielle en étant un exemple, la seconde consiste à
apprendre aux ordinateurs à extraire et à comprendre des données cachées dans des
images numériques et des vidéos.

Ainsi, on peut dire que le but de la vision par ordinateur est de développer des
algorithmes qui permettent à l’ordinateur de «voir».

La vision par
ordinateur

Figure 1.1 – Vision par ordinateur

La vision par ordinateur est donc un domaine complet qui traite un haut niveau de
programmation en alimentant les images/vidéos d’entrée pour effectuer automatique-
ment, et à l’aide de l’apprentissage automatique en profondeur, des tâches telles que la
détection, la reconnaissance et la classification.

Le rôle principal de la vision par ordinateur est de déterminer si une image contient
un certain objet. Les algorithmes analysent automatiquement les images et extraient des
informations.

Big Data et reconnaissance des visages 13


CHAPITRE 1. PROBLÉMATIQUE ET CONTEXTE GÉNÉRAL UQTR

La vision par ordinateur automatisée n’est pas encore suffisamment fiable pour
détecter des anomalies ou suivre des objets. Par conséquent, dans de tels cas, les humains
sont toujours dans la boucle d’analyse pour évaluer la situation. La vision par ordinateur
essaie d’apprendre une fonction vraiment complexe,t on a souvent l’impression que nous
n’avons pas assez de données pour la vision par ordinateur et cela même si les ensembles
de données sont de plus en plus volumineux. Souvent, nous n’avons simplement pas
autant de données que ce dont nous avons besoin [14].

La vision par ordinateur peut améliorer les résultats des moteurs de recherche in-
ternet. La technologie peut contextualiser les images dans les recherches. Ce qui signifie
qu’il peut étiqueter et identifier les objets, et même les paramètres de vos photos télé-
chargées.

Voici quelques exemples de ce que la vision par ordinateur permet de faire :

— Les techniques de reconnaissance faciale utilisées par les réseaux sociaux et


autres entreprises pour marquer des personnes sur des photographies sont ba-
sées sur le CV. Facebook a développé cette technologie pour identifier quelqu’un
même si le visage de cette personne était masqué ;
— Identification visuelle biométrique de personnes ;
— Surveillance et alerte de sécurité ; détection d’anomalie ;
— Les applications du CV incluent la réalité augmentée, la biométrie, la reconnais-
sance faciale, l’analyse gestuelle et la robotique ;
— Suivi d’objets en mouvement ; évitement de collision ; profondeur stéréosco-
pique ;
— Les développeurs sont sur le point de lancer des moteurs de recherche pour
des services de partage d’images tels qu’Instagram qui passeront au crible et
donneront un sens aux données du flux de photos téléchargées par des millions
d’utilisateurs ;
— Les drones télécommandés utilisent la vision par ordinateur pour reconnaître
les objets ;
— Certaines sociétés informatiques comme Microsoft, par exemple, ont une divi-
sion Cognitive Services. Cette division propose des API pour aider les utilisa-
teurs à extraire des informations riches à partir d’images afin de catégoriser et
traiter les données visuelles ;
— Les détaillants au Royaume-Uni et aux États-Unis ont commencé à utiliser Com-
puter Vision pour permettre aux clients «d’essayer» des meubles et du papier
peint dans leur propre chambre avant d’acheter.

Big Data et reconnaissance des visages 14


CHAPITRE 1. PROBLÉMATIQUE ET CONTEXTE GÉNÉRAL UQTR

1.2 le Big Data

Au cours de ces dernières années, plus de données sont produites à des taux plus
rapides que jamais et en différents formats, textes, email, photos, vidéos, musique, do-
cuments et autres, cela a conduit à l’apparition d’un certain nombre de technologies qui
corrigent des aspects spécifiques de ces problèmes d’où le Big Data.

Le Big Data désigne littéralement un ensemble de données massives autrement dit


mégadonnées ou encore grosses données. Ces données peuvent être structurées, semi-
structurées ou non structurées. Ces données sont collectées et analysées afin d’être uti-
lisées pour extraire des informations qui peuvent servir à différentes applications dans
des projets de machine learning.

L’analyse du Big Data se fonde sur les trois dimensions aussi appelées les trois V :

— la vérocité concerne la grande rapidité à laquelle les données sont créées, sto-
ckées et analysées ;
— Le volume se rapporte au coté illimité du Big Data avec un nombre de données
qui ne cesse de croître ;
— la variété représente les différentes sources de provenance des données.

Variété

Big Data

Volume Vérocité

Figure 1.2 – Big Data et les 3V

Quand on parle du Big Data on évoque directement les données, nous distinguons alors
de deux types de données, les données structurées et les données non structurées.

Le terme Big Data fait référence au volume conséquent de données à leurs types
et aux outils permettant leurs traitement.

Big Data et reconnaissance des visages 15


CHAPITRE 1. PROBLÉMATIQUE ET CONTEXTE GÉNÉRAL UQTR

Table 1.1 – Les données et le Big Data


Les données structurées sont les données qui ont été
organisées pour faciliter le
traitement et simplifier l’ana-
lyse, il peut s’agir d’éléments
comme le nom, l’age qui
respectent un format défini,
c’est ce types de données
qu’on utilise pour remplir un
formulaire.
Les données non structurées sont les données qui ne res-
pectent pas un format défini
ou de structure, on parle des
photos, de vidéos ou du texte,
elles sont plus difficile à ana-
lyser, en s’appuyant sur des
outils analytiques on peut les
faire parler

1.3 La reconnaissance faciale

Le visage de chaque individu est unique, tout comme ses empreintes digitales. La
reconnaissance faciale consiste à reconnaître automatiquement une personne grâce à
son visage et cela, via une caméra, un ordinateur ou un téléphone intelligent, et grâce à
un logiciel avec ses algorithmes d’identification.

Ses applications se sont rapidement multipliées : vidéo de surveillance, biométrie,


robotique, espionnage, paiement automatique dans des magasins sans caisse, indexation
d’images et de vidéos, recherche par le contenu, criminologie, etc. L’une des premières
tentatives de reconnaissance de visage est faite par le japonais Takeo Kanade en 1973
dans sa thèse de doctorat à l’université de Kyoto [?].

Toutes les grandes sociétés travaillent et/ou appliquent déjà la reconnaissance


faciale : Facebook, Google, Apple, Microsoft, etc. En Chine, on peut coter AZlibaba,
Tencent, Baidu, etc. Ce qui ne va toutefois pas sans susciter de vives inquiétudes quant
aux atteintes à la vie privée.

En 2018, une start-up chinoise à la pointe de la reconnaissance faciale fondée en


2014 par un ancien du Massachusetts Institue of technology MIT, s’impose comme une
championne de l’intelligence artificielle avec SenseTime. Elle procure sa technologie aux
principaux fournisseurs de téléphones intelligents chinois : Huawei, il est probable que

Big Data et reconnaissance des visages 16


CHAPITRE 1. PROBLÉMATIQUE ET CONTEXTE GÉNÉRAL UQTR

le visage de la personne connectée soit déjà enregistré dans l’immense base de données
de SenseTime.

Les techniques de la reconnaissance faciale pourraient s’étendre dans la sur-


veillance sociale malgré les craintes que cela suscitent. Ainsi, on apprenait en mai 2019
que la ville de San Francisco a approuvé une ordonnance interdisait à la police et aux
services municipaux d’utiliser la reconnaissance faciale sur ses résidents[1].

1.4 Le Big Data et la reconnaissance de visage

La reconnaissance faciale et le Big Data sont deux facettes qui n’avaient pratique-
ment rien en commun, mais les progrès récents dans plusieurs domaines connexes tels
que les réseaux sociaux ainsi que les progrès dans la nationalisation des bases de don-
nées faciales des forces de l’ordre les ont conduits à converger. Les applications à venir
telles que le marquage de visage dans les hubs de réseautage social tels que Facebook,
en plus d’être un élément crucial dans des applications critiques telles que l’appréhen-
sion criminelle par le biais de la correspondance de mug shot, la recherche de personnes
disparues, etc.

Le principal avantage de l’analyse Big Data (BDA) est l’augmentation significative


de la précision et l’amélioration des performances qu’elle peut offrir en raison de sa
capacité à proposer un nombre massif d’images pour la tâche à accomplir. N = toute la
taille de l’échantillon, c’est-à-dire toutes les caractéristiques faciales à comparer (contre
environ cinq ou six points dans les mécanismes conventionnels).

Les technologies BDA populaires incluent : Apache Hive, Apache Giraph et les
œuvres déjà importantes de Horton, Hadoop, etc.

Yahoo a développé Apache Giraph en 2010, sur la base d’un important article de
Pregel publié par Google. La technologie Apache Giraph est basée sur les stratégies du
calcul distribué et du système de traitement itératif de graphes et repose de manière
décisive sur les trois composants critiques du calcul et du traitement parallèles : le calcul
simultané, la communication et la synchronisation des barrières. Ces propriétés font
d’Apache Giraph un candidat idéal pour aider à proposer des systèmes de reconnaissance
faciale efficaces. Facebook continue également d’élargir sa présence dans le domaine de
la BDA en optant pour la méthodologie Apache Giraph afin de proposer une nouvelle
recherche de graphe social qui peut effectivement évoluer jusqu’à un billion d’arêtes[34].

Big Data et reconnaissance des visages 17


CHAPITRE 1. PROBLÉMATIQUE ET CONTEXTE GÉNÉRAL UQTR

1.5 Architecture d’un système de reconnaissance fa-


ciale

Le processus de détection et d’identification des visages est une technique d’ap-


prentissage automatique, en apprenant et en extrayant les caractéristiques physiques de
l’humain. Faire correspondre ces caractéristiques avec les images testées peut identifier
la personne ou empêcher ces personnes de se reconnaître.

Cette technologie révolutionnaire d’identification progresse à grand pas, elle s’ins-


talle un peu partout, elle est plus fiable que l’oeuil humain. Un système de reconnaissance
faciale est capable alors de détecter un visage et l’identifier dans une simple image ou
une vidéo grâce aux algorithmes de l’apprentissage automatique.

Certains algorithmes se concentrent uniquement sur des images à haute résolu-


tion ; certains d’entre eux se concentrent sur les basses résolutions. Récemment, les cher-
cheurs se sont concentrés sur les différentes vues frontales des images, sous différents
angles, différentes éclairages.

Malgré la diversité de ces algorithmes, ils respectent presque la même architecture


et le même workflow des étapes.

Architecture du système de reconnaissance faciale

Préparation Détection Extraction de Classification Identification


de données de visage caractéristiques des visages et vérification

Collete des
Récupération Extraction
Collecte images po- Reconnaissance
des valeurs des fea-
des images sitives et du visage
de pixels tures
négatives
Construire Identification
Calcul des Création
une base Entrainement de la per-
opérateurs des bag-of-
de données sonne
features
Extraction
Nettoyage Détection
des carac-
des images de l’objet Classification
téristiques

Entrainement

Figure 1.3 – Architecture d’un système de reconnaissance faciale

Big Data et reconnaissance des visages 18


CHAPITRE 1. PROBLÉMATIQUE ET CONTEXTE GÉNÉRAL UQTR

Un système de reconnaissance faciale doit dans un premier temps préparer les données
à partir desquelles on veut extraire de l’information et faire la reconnaissance. Ces don-
nées sont sous forme de photos et de vidéos contenant de l’information qui est le visage
humain. Ensuite il utilise des algorithmes appropriés de l’apprentissage profond pour
faire la détection de l’objet visage humain, par la suite le système procède à l’extraction
des caractéristique des points de visage pour encoder la forme du visage en binaire ou
numérique, ça peut être le nez, les yeux, la bouche. Finalement la classification du visage
qui permet d’identifier et vérifier le visage dans une scène.

1.5.1 Préparation des données

Système de reconnaissance faciale

Préparation des données


Détection de visage
Extraction des caractéristiques
Classification des visages
Identification et vérification

Figure 1.4 – Préparation des données

Les données peuvent être des simples images ou des séquences d’images dites vi-
déos chargées à partir d’une base de données, d’une caméra de surveillance ou autres.
Les données doivent êtres nettoyées et converties en niveau de gris afin d’être utilisées
efficacement et sans bruit.

On peut utiliser des bases de données publiques comme :


— Labelled Faces in the Wild (LFW)
— Youtube faces
— Kaggle
Ou encore des bases de données privées, ainsi qu’on peut préparer nos propres
bases de données.

Big Data et reconnaissance des visages 19


CHAPITRE 1. PROBLÉMATIQUE ET CONTEXTE GÉNÉRAL UQTR

1.5.2 Détection de visage

Système de reconnaissance faciale

Préparation des données


Détection de visage
Extraction des caractéristiques
Classification des visages
Identification et vérification

Figure 1.5 – Détection de visage

La détection de visage est la pierre angulaire de tous les algorithmes d’analyse faciale,
y compris l’alignement du visage, la modélisation du visage, le ré-éclairage du visage,
la reconnaissance du visage, la vérification ou l’authentification du visage, le suivi de la
pose de la tête, le suivi ou la reconnaissance de l’expression faciale, la reconnaissance
du sexe ou de l’âge, et bien d’autres. Ainsi, les ordinateurs peuvent identifier clairement
le visage, après ils commencent à vraiment comprendre les pensées et les intentions des
gens à l’aide de l’apprentissage automatique [20].

La détection des visages, est une partie importante de la reconnaissance faciale en


tant que première étape de la reconnaissance automatique des visages.

La détection de visage peut se faire à l’aide des algorithmes de deep learning. Cette
étape se base sur l’entrainement du modèle afin de reconnaitre et de détecter l’objet re-
cherché dans les données. Avant de coller un nom à un visage, le logiciel doit comprendre
d’abords qu’il est en présence d’un être humain. La détection de visage est la première
étape de la reconnaissance faciale, pour cela, il faut éduquer la machine en lui disant qu’il
s’agit d’un visage dans des millions d’images contenant le visage et qu’il s’agit d’autre
chose que le visage dans des millions d’image ne contenant pas le visage. Le système
comprend alors les caractéristiques du visage que ça soit de face ou de profile.

Big Data et reconnaissance des visages 20


CHAPITRE 1. PROBLÉMATIQUE ET CONTEXTE GÉNÉRAL UQTR

1.5.3 Extraction des caractéristiques

Système de reconnaissance faciale

Préparation des données


Détection de visage
Extraction des caractéristiques
Classification des visages
Identification et vérification

Figure 1.6 – Extraction des caractéristiques

Cette étape consiste à isoler les éléments du visage qu’on va mesurer et à détecter les
points caractéristiques basiques comme les yeux, le contour de la bouche et le contour
du nez pour reconstruire la forme 3D d’un visage afin de différencier les personnes. Pour
cela, on calcule la distance entre les éléments du visage et ainsi que tous les éléments qui
peuvent illustrer que deux visages ne sont pas identiques.

L’importance des traits du visage pour la reconnaissance faciale ne peut être sur-
estimée. De nombreux systèmes de reconnaissance faciale ont besoin de traits faciaux
en plus du visage holistique, comme le suggèrent des études en psychologie. Il est
bien connu que même les méthodes d’appariement holistiques, par exemple, les visages
propres proposés par Turk et Pentland [33] et les Fisherfaces, proposés par Belhumeur
et al [27], nécessitent des emplacements précis des principales caractéristiques faciales
telles que les yeux, le nez et la bouche pour normaliser le visage détecté. Les traits du
visage peuvent être de différents types : région [25], [5], point clé (repère) ou Landmarks
[21], [16] et contour [32], [17].

En règle générale, les entités ponctuelles clés fournissent une représentation plus
précise et cohérente à des fins d’alignement que les entités basées sur la région, avec une
complexité et une charge de calcul inférieures à celles de l’extraction d’entités de contour.
Trois types de méthodes d’extraction de caractéristiques peuvent être distingués [10] :
— (1) méthodes génériques basées sur les arêtes, les lignes et les courbes ;
— (2) méthodes basées sur des modèles qui sont utilisées pour détecter les traits
du visage tels que les yeux ;

Big Data et reconnaissance des visages 21


CHAPITRE 1. PROBLÉMATIQUE ET CONTEXTE GÉNÉRAL UQTR

— (3) méthodes d’appariement structurel qui tiennent compte des contraintes géo-
métriques sur les caractéristiques.

1.5.4 Classification des visages

Système de reconnaissance faciale

Préparation des données


Détection de visage
Extraction des caractéristiques
Classification des visages
Identification et vérification

Figure 1.7 – Classification des visages

La classification d’images est un problème classique des domaines du traitement


d’images, de la vision par ordinateur et de l’apprentissage automatique.

La classification est un arrangement systématique en groupes et catégories en fonc-


tion de ses caractéristiques. La classification des images a vu le jour pour réduire l’écart
entre la vision par ordinateur et la vision humaine en entraînant l’ordinateur avec les
données. La classification d’images est obtenue en différenciant l’image dans la catégorie
prescrite en fonction du contenu de la vision.

La classification des images fait référence à un processus de vision par ordinateur


qui permet de classer une image en fonction de son contenu visuel. Par exemple, un al-
gorithme de classification d’images peut être conçu pour indiquer si une image contient
ou non une figure humaine. Bien que la détection d’un objet soit triviale pour l’homme,
la classification robuste des images reste un défi dans les applications de vision par or-
dinateur.

Big Data et reconnaissance des visages 22


CHAPITRE 1. PROBLÉMATIQUE ET CONTEXTE GÉNÉRAL UQTR

1.5.5 Identification et vérification

Système de reconnaissance faciale

Préparation des données


Détection de visage
Extraction des caractéristiques
Classification des visages
Identification et vérification

Figure 1.8 – Identification et vérification

L’identification signifie que le système est capable de reconnaitre l’identité de la per-


sonne détectée dans l’image ou la vidéo afin de dire à qui appartient le visage détecté.

Grâce à des techniques d’apprentissage automatique, le système peut choisir le vi-


sage qui correspond le mieux aux visages détectés à l’aide du modèle réalisé à partir de
la base de données. Cette correspondance peut se réaliser à l’aide des calculs mathéma-
tiques comme la distance euclidienne ou la vraisemblance maximale.

Après la vérification de la correspondance du visage avec le modèle entrainé, le


système récupère le nom de la personne devant la caméra et l’affiche afin de l’identifier.

Big Data et reconnaissance des visages 23


Chapitre 2

Etat de l’art

Sommaire
2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.2 Approche Eigen Face . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.2.2 Technique ACP . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.2.3 Technique SVD . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.2.4 Technique SVM . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.3 Approche classification avec descripteur par bloc . . . . . . . . . 29
2.3.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.3.2 L’histogramme de LBP . . . . . . . . . . . . . . . . . . . . . . 30
2.4 L’approche de Deep Learning avec les réseaux de neurone . . . 30
2.5 Approche pa la logique floue . . . . . . . . . . . . . . . . . . . . . 31
2.5.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.5.2 Fuzzification . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.5.3 Inférence floue . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.5.4 Défuzzification . . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.5.5 Détection de visage utilisant la logique floue . . . . . . . . . . 32

24
CHAPITRE 2. ETAT DE L’ART UQTR

2.1 Introduction

L’objectif de la détection de visages est de détecter et de localiser les visages dans


l’image, d’extraire le visage humain à utiliser dans d’autres zones afin de faire la recon-
naissance et l’identification de la personne.

De nos jours, il existe de nombreux algorithmes différents pour accomplir la détec-


tion ou la reconnaissance des visages, tels que les visages de Fisher, la visages propres, la
transformation de fonction invariante à l’échelle et les caractéristiques Speed UpRobust
[8].

Plusieurs perspectives existent sur le système de détection et de reconnaissance


des visages ; certains des projets se concentrent uniquement sur des images à haute ré-
solution ; certains d’entre eux se concentrent sur les basses résolutions. Récemment, des
chercheurs se sont concentrés sur les différentes vues frontales des images, sous diffé-
rents angles, différents éclairages, etc.

2.2 Approche Eigen Face

2.2.1 Introduction

Eigenfaces fait référence à une approche de la reconnaissance faciale basée sur


l’apparence qui cherche à capturer la variation dans une collection d’images de visage et
à utiliser ces informations pour encoder et comparer des images de visages individuels
dans une approche holistique. Plus précisément, les Eigenfaces sont les principales com-
posantes d’une distribution de faces, ou de manière équivalente, les vecteurs propres de
la matrice de covariance de l’ensemble des images de visage, où une image à N pixels est
considérée comme un point (ou vecteur) dans un espace à N dimensions. L’idée d’utili-
ser des composants principaux pour représenter des visages humains a été développée
par Sirovich et Kirby (Sirovich et Kirby 1987) et utilisée par Turk et Pentland (Turk et
Pentland 1991) pour la détection et la reconnaissance des visages. L’approche Eigenface
est considérée par beaucoup comme la première technologie de reconnaissance faciale
fonctionnelle. Elle a servi de base à l’un des meilleurs produits technologiques de recon-
naissance faciale du commerce [38].

Cette méthode de reconnaissance utilise l’analyse en composantes principales


(ACP) ou la méthode de décomposition en valeurs singulières (SVD) afin de diminuer
la dimension de l’espace de travail pour simplifier les données et leur interprétation.

Big Data et reconnaissance des visages 25


CHAPITRE 2. ETAT DE L’ART UQTR

SVD / ACP ont été appliquées à une grande variété de problèmes en science et en
ingénierie.

2.2.2 Technique ACP

L’analyse des composantes principales est une technique de réduction de dimen-


sions qui consiste à convertir un ensemble de variables en un ensemble de combinaisons
linéaires de plus en plus faibles que la variabilité des données initiales.

Cette méthode permet de transformer un espace de données en un autre espace de


dimension inférieure tout en minimisant la perte d’informations.

La réduction de la dimensionnalité des données est un domaine actif en informa-


tique. C’est un problème fondamental dans de nombreux domaines différents, en particu-
lier dans la prévision, la classification de documents, la bioinformatique et la reconnais-
sance d’objets ou dans la modélisation de processus technologiques complexes. Dans de
telles applications, les ensembles de données avec des milliers de fonctionnalités ne sont
pas rares. Toutes les fonctionnalités peuvent être importantes pour certains problèmes,
mais pour certains concepts cibles, seul un petit sous-ensemble de fonctionnalités est
généralement pertinent [15].

L’ACP est une méthode de transformation de l’ensemble de données initiales repré-


sentées par des échantillons vectoriels en un nouvel ensemble d’échantillons vectoriels
avec des dimensions dérivées. L’idée de base peut être décrite comme suit : un ensemble
d’échantillons vectoriels à n dimensions X = x1 , x2 , x3 , x4 , ...., xn doit être transformé
en un autre ensemble Y = y1 , y2 , y3 , y4 , ...., yn de même dimensionnalité, mais les y ont
les propriétés que la plupart de leur contenu informationnel est stocké dans les premières
dimensions. Ainsi, nous pouvons réduire l’ensemble de données à un plus petit nombre
de dimensions avec une faible perte d’informations [15]

Y = A.X

Basée sur une analyse en composantes principales (ACP), la méthode des Eigen
Faces repose sur une utilisation des premiers vecteurs propres comme visages propres,
d’où le terme Eigen Faces [4].

Les eigenfaces sont un ensemble de vecteurs propres utilisés dans le domaine de


la vision artificielle afin de résoudre le problème de la reconnaissance du visage hu-
main. Le recours à des eigenfaces pour la reconnaissance a été développé par Sirovich

Big Data et reconnaissance des visages 26


CHAPITRE 2. ETAT DE L’ART UQTR

et Kirby (1987) et utilisé par Matthew Turk et Alex Pentland pour la classification de
visages. Cette méthode est considérée comme le premier exemple réussi de technologie
de reconnaissance faciale. Ces vecteurs propres sont dérivés de la matrice de covariance
de la distribution de probabilité de l’espace vectoriel de grande dimension des possibles
visages d’êtres humains [30].

2.2.3 Technique SVD

La décomposition en valeurs singulières (SVD) est l’une des factorisations matri-


cielles les plus importantes de l’ère du calcul. Elle forme la base mathématique d’un puis-
sant système de reconnaissance faciale et facilite le calcul des soi-disant faces propres
(eigenfaces), qui fournissent une représentation efficace des images dans la reconnais-
sance faciale.

La décomposition en valeurs singulières d’une matrice A est la factorisation de A


en produit de trois matrices A = U DV T , où les colonnes de U et V sont orthonormées
et la matrice D est diagonale à entrées réelles et positives.
dimensions

D VT
words

words

X = U
Matrice originale
SVD

Figure 2.1 – La décomposition en valeurs singulières

La SVD est utile dans de nombreuses tâches. Ici, nous mentionnons quelques exemples.
Tout d’abord, dans de nombreuses applications, la matrice de données A est proche d’une
matrice de faible rang et il est utile de trouver une matrice de faible rang qui soit une
bonne approximation de la matrice de données. Nous allons montrer qu’à partir de la
décomposition en valeurs singulières de A, on peut obtenir la matrice B de rang k qui
se rapproche le mieux de A ; en fait, nous pouvons le faire pour chaque k.

De plus, la décomposition en valeurs singulières est définie pour toutes les ma-
trices (rectangulaires ou carrées) contrairement à la décomposition spectrale plus cou-
ramment utilisée en algèbre linéaire. Le lecteur familier avec les vecteurs propres et les

Big Data et reconnaissance des visages 27


CHAPITRE 2. ETAT DE L’ART UQTR

valeurs propres (nous ne supposons pas la familiarité ici) se rendra également compte
que nous avons besoin de conditions sur la matrice pour assurer l’orthogonalité des vec-
teurs propres. En revanche, les colonnes de V dans la décomposition en valeurs singu-
lières, appelées vecteurs singuliers droits de A, forment toujours un ensemble orthogonal
sans hypothèses sur A. Les colonnes de U sont appelées les vecteurs singuliers à gauche
et forment également un ensemble orthogonal. Une conséquence simple de l’orthogona-
lité est que pour une matrice A carrée et inversible, l’inverse de A est V D−1 U T .

A = U ΣV T
 u1 ur ur+1 um   
vT
  σ1  1
  ..  



 . 



row(A)
   v T
  σr  r
= ··· ···   
   v T
  0   r+1
   
  ...   null(A)
   
   T
0 vn

col(A) null(A)

Figure 2.2 – système de décomposition matricielle avec SVD

Dans le meilleur ajustement des moindres carrés, on minimise la distance à un


sous-espace. Un autre problème consiste à trouver la fonction qui convient le mieux à
certaines données. Ici une variable y est une fonction des variables x1 , x2 , . . . , xd et on
souhaite minimiser la distance verticale, c’est-à-dire la distance dans la direction y, au
sous-espace des xi plutôt que de minimiser la distance perpendiculaire au sous-espace
ajusté aux données.

2.2.4 Technique SVM

Machine à vecteurs de support (SVM) est un ensemble d’algorithmes de machine


learning permettant de faire une classification pour résoudre des problème comme clas-
sifier les images afin de faire la reconnaissance faciale. Cette méthode est connue par sa

Big Data et reconnaissance des visages 28


CHAPITRE 2. ETAT DE L’ART UQTR

grande fléxibilité ainsi que sa simple utilisation même pour les débutants en apprentis-
sage automatique.

Classe 2

Classification SVM

Classe 1

Figure 2.3 – Classification SVM

Le but principale du SVM est de former deux groupes de données distincts sépa-
rés entre eux à l’aide d’une frontière de telle sorte que la distance entre les groupes de
données soit maximale.

2.3 Approche classification avec descripteur par bloc

2.3.1 Introduction

Cette approche divise l’image en des blocs formant une grille. Un descripteur est
appliqué pour chaque bloc, et ainsi l’image est constituée en concaténant les différents
descripteurs.

Le descripteur le plus répandu est l’histogramme de LBP. Suite à l’application de


ce dernier sur toutes les images de la base de données, on classifie nos images pour
identifier les visages avec un algorithme de classification comme SVM.

Big Data et reconnaissance des visages 29


CHAPITRE 2. ETAT DE L’ART UQTR

2.3.2 L’histogramme de LBP

L’opérateur des motifs binaires locaux (LBP) a été proposé à la fin des années 90
par Ojala [26].

L’idée de cet opérateur de texture est d’assigner à chaque pixel un code dépendant
des niveaux de gris de son voisinage. Le niveau de gris du pixel central (ic) de coordon-
nées (xc,yc) est comparé à celui de ses voisins (in) selon l’équation :
m=0
LBP (xc , yc ) = p−1 s(in − ic )2n ,

s(in − ic ) = 1siin ic ≥ 0,

0siin − ic < 0,

avec p est le nombre de pixels voisins. Dans notre travail, nous considérons un
voisinage de 3*3 d’où p=8 voisins. Nous obtenons donc, comme pour une image en ni-
veaux de gris, une matrice contenant des valeurs des LBP comprises entre 0 et 255 pour
chaque pixel . Un histogramme est calculé en se basant sur ces valeurs pour former le
descripteur LBP-B [36].

2.4 L’approche de Deep Learning avec les réseaux de


neurone

La formation d’un réseau de neurones pour la tâche de détection de visage est un


défi car la difficulté à caractériser l’image prototypique «sans visage» [29].

Contrairement à la reconnaissance faciale, dans laquelle les classes à discriminer


sont des visages différents, les deux classes à discriminer dans la détection de visage sont
« image contenant des visages » et « image ne contenant pas de visages ». Il est facile
d’obtenir un échantillon représentatif des images contenant des visages, mais beaucoup
plus difficile d’obtenir un échantillon représentatif de celles qui n’en contiennent pas.
Les informations sur les fonctionnalités doivent être stockées dans la base de données à
des fins de récupération. La récupération d’informations peut être effectuée en utilisant
une approche de réseau neuronal qui a le potentiel d’incarner à la fois des données de
visage numériques et structurelles [11]. Cependant, les approches de réseau de neurones
n’ont été démontrées que dans une base de données limitée. Ainsi, le besoin d’énormes
échantillons d’images de visage/non-visage rend le processus d’apprentissage très diffi-
cile pour le réseau de neurones.

Big Data et reconnaissance des visages 30


CHAPITRE 2. ETAT DE L’ART UQTR

2.5 Approche pa la logique floue

2.5.1 Introduction

La logique floue est une extension de la logique booléenne créée par Lotfi Zadeh
en 1965 en se basant sur sa théorie mathématique des ensembles flous, qui est une gé-
néralisation de la théorie des ensembles classiques. En introduisant la notion de degré
dans la vérification d’une condition, permettant ainsi à une condition d’être dans un
autre état que vrai ou faux, la logique floue confère une flexibilité très appréciable aux
raisonnements qui l’utilisent, ce qui rend possible la prise en compte des imprécisions
et des incertitudes.

En logique floue, un ensemble flou contient plusieurs valeurs. L’ensemble flou est
connu par un degré d’appartenance (ou degré de vérité). On utilise un continuum de
valeurs logiques entre 0 (completement faux) et 1 (complétement vrai). Une fonction
d’appartenance est utilisée pour mapper un item X dans le domaine des nombres reels à
un intervalle de 0 a 1, ce qui permet un degré de vérité [6].

2.5.2 Fuzzification

«Fuzzification» : rendre une entrée classique en valeurs linguistiques.

Des valeurs d’entrée sont traduites en concept linguistique comme des ensembles
flous. Les fonctions d’appartenance sont appliquées aux mesures et des degrés de vérité
sont établis pour chaque proposition.

La fuzzification des variables est une phase délicate du processus mis en œuvre par
la logique floue. Elle est souvent réalisée de manière itérative et requiert de l’expérience.

2.5.3 Inférence floue

Dans un système à la logique floue, toutes les règles sont déclenchées en parallèle.
Des règles peuvent être déclenchées partiellement.

Sélection monotonique : Le niveau d’appartenance de vérité d’une conséquence


peut être déterminé à partir du niveau d’appartenance de vérité de l’antécédent. Des
règles peuvent avoir des antécédents multiples.

Big Data et reconnaissance des visages 31


CHAPITRE 2. ETAT DE L’ART UQTR

Chaque partie est calculée simultanément et résolue à un seul chiffre en utilisant


des opérations d’ensembles. Des règles peuvent avoir des conséquences multiples.

Toutes les parties sont affectées également par les antécédents. On doit obtenir un
seul chiffre net qui représente la sortie du système expert. On combine les ensembles
flous en un seul ensemble flou et la « défuzzification » de l’ensemble résulte en un seul
chiffre.

2.5.4 Défuzzification

Le processus de transformer un fait flou en un fait net est la défuzzification.


Quelques méthodes existent, comme l’appartenance maximale, la méthode du centroide,
et la méthode des moyennes ponderées [6].

2.5.5 Détection de visage utilisant la logique floue

La détection de visage peut se faire par détection de la couleur de la peau, la forme


de la tête ou par des méthodes détectant les différentes caractéristiques du visage. Cette
étape est autant plus délicate quand l’image acquise contient plusieurs objets de visage
ou un fond non uniforme qui crée une texture perturbant la bonne segmentation du vi-
sage. Cette étape est dépendante de la qualité des images acquises. Dans la littérature
scientifique, le problème de localisation de visages est aussi désigné par la terminologie
«détection de visages». Les performances globales de tout système automatique de re-
connaissance dépendent amplement des performances de la détection de visages. Dans
l’étape de détection, on identifie et on localise le visage dans l’image acquise au départ,
indépendamment de la position, de l’échelle, de l’orientation et de l’éclairage.

C’est un problème de classification où on assigne l’image à la classe visage ou à la


classe non visage. On traite une procédure simple de détection du visage, premièrement
pour segmenter la région de la peau à partir d’une image, et deuxièmement, pour décider
si ces régions contiennent un visage humain ou non.

Prenons un exemple basée sur la segmentation hybride de la couleur de la peau


en utilisant trois espaces de couleur RVB, YCbCr et HIS et les caractéristiques du visage
humain en utilisant l’entropie. Dans le but d’extraire la caractéristique, plutôt que de
regarder l’image entière du visage, et de mettre l’entropie basée sur la sélection de la
région de la peau, qui sélectionne des segments très informatifs de l’image du visage, par

Big Data et reconnaissance des visages 32


CHAPITRE 2. ETAT DE L’ART UQTR

rapport à l’entropie de l’image ORL en utilisant la distance euclidienne. Le nombre d’or


et la taille de la région de la peau déterminent où se trouve cette région, visage ou pas à
travers le système flou. La logique floue a été très bien acceptée par le public. L’approche
fourni une méthode appropriée pour l’extraction d’informations. La méthode proposée
a été mise à l’essai sur différents types d’images réelles et ses performances sont tout à
fait satisfaisantes. Précision de détection 94,74%.

Big Data et reconnaissance des visages 33


Chapitre 3

Approche pour la reconnaissance des


visages en utilisant le Big Data

Sommaire
3.1 Préparation des données . . . . . . . . . . . . . . . . . . . . . . . 35
3.2 Détection de visage . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.2.1 Le classificateur Haar Cascade . . . . . . . . . . . . . . . . . 37
3.2.2 Entrainement du classificateur pour détecter le visage . . . . 39
3.2.2.1 Le boosting . . . . . . . . . . . . . . . . . . . . . . 39
3.2.2.2 L’algorithme Adaboost . . . . . . . . . . . . . . . . 40
3.3 Extraction des caractéristiques . . . . . . . . . . . . . . . . . . . 48
3.3.1 L’histogramme LBP . . . . . . . . . . . . . . . . . . . . . . . 48
3.3.1.1 Définition . . . . . . . . . . . . . . . . . . . . . . . 48
3.3.1.2 Calcul de l’opérateur LBPH : . . . . . . . . . . . . . 49
3.3.1.3 Réalisation de l’histogramme . . . . . . . . . . . . 52
3.4 Classification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
3.5 Identification . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

34
CHAPITRE 3. APPROCHE POUR LA RECONNAISSANCE DES VISAGES EN UTILISANT
LE BIG DATA UQTR

Le processus de détection et d’identification des visages est une technique d’ap-


prentissage automatique, en apprenant et en extrayant les caractéristiques physiques de
l’humain. Faire correspondre ces caractéristiques avec les images testées peut identifier
la personne ou empêcher ces personnes de se reconnaître. Il existe plusieurs défis et
paramètres variables dans la détection et l’identification des visages comme l’éclairage,
les différentes poses, les expressions de changement, les images d’entrée de mauvaise
qualité, etc.

Il existe plusieurs perspectives différentes sur le système de détection et de recon-


naissance des visages ; certains des projets se concentrent uniquement sur des images à
haute résolution ; certains d’entre eux se concentrent sur les résolutions basses. Récem-
ment, des chercheurs se sont concentrés sur les différentes vues frontales des images,
sur les différents angles, sur les différents éclairages, etc [12].

L’approche de reconnaissance faciale proposée comporte quatre étapes princi-


pales : un module d’acquisition d’images, un module d’extraction de caractéristiques,
un module d’apprentissage de la base de données de classificateurs et un module de
classification. Initialement, les ensembles de données de visage sont collectés par le mo-
dule d’acquisition d’images. Ensuite, une série de caractéristiques sont extraites en ap-
pliquant le module d’extraction de caractéristiques. Ces caractéristiques faciales sont
utilisées pour analyser les points de repère du visage qui représentent des informations
sur l’identité humaine. Dans le processus suivant, le classificateur est formé pour re-
connaître le visage. Dans le dernier module, le système reconnaît l’image du visage et
récupère des informations sur la personne dans la base de données.

3.1 Préparation des données

Comme tout système utilisant l’apprentissage automatique, nous avons besoin


d’une base de données qui va nous servir à faire l’entrainement de nos fichiers de clas-
sification.

Il existe des bases de données publiques dont la fonctionnalité principale est l’uti-
lisation pour les tests de recherche en reconnaissance faciale. On note :
— la base de données CMU Pose qui a été construite entre octobre et décembre
2000, des chercheurs ont collecté une base de données de 41 368 images de
68 personnes. En étendant la salle 3D CMU, ils ont pu photographier chaque
personne sous 13 poses différentes, 43 conditions d’éclairage différentes et avec

Big Data et reconnaissance des visages 35


CHAPITRE 3. APPROCHE POUR LA RECONNAISSANCE DES VISAGES EN UTILISANT
LE BIG DATA UQTR

4 expressions différentes. On appelle cette base de données la base de données


CMU Pose, Illumination, and Expression (PIE)[31].
— La base de données LFW qui contient 13 233 images de visages cibles. Certaines
images contiennent plus d’un visage, mais c’est le visage qui contient le pixel
central de l’image qui est considéré comme le visage définissant l’image. Les
visages autres que le visage cible doivent être ignorés comme "arrière-plan"
[22].
On peut aussi construire notre propre base de données, pour cela j’ai collecté plus
de 2200 images d’environ 40 personnalités publiques, de ma petite famille et de moi
même avec un système qui capture environ 50 échantillons d’images de la personne en
face de la caméra de l’ordinateur, ainsi que des images dites négatives qui ne contiennent
aucun visage et contiennent toutes sortes d’objets différents.

Une grande base de données peut augmenter la précision et l’efficacité de l’algo-


rithme ainsi qu’elle rend l’entrainement plus robuste et précis.

Figure 3.1 – Base de données

Ces images doivent être sauvegardées dans des dossiers annotés afin de pouvoir
nous aider à identifier chaque visage dans l’image et indiquer à qui il appartient.

Nous avons plusieurs images pour chaque personne que nous voulons reconnaître.

Big Data et reconnaissance des visages 36


CHAPITRE 3. APPROCHE POUR LA RECONNAISSANCE DES VISAGES EN UTILISANT
LE BIG DATA UQTR

Ces images serviront de données d’entraînement afin que notre reconnaissance faciale
LBP puisse apprendre les caractéristiques de chaque individu.

Une image est une projection optique bidimensionnelle, mais le monde dans lequel
nous souhaitons donner un sens visuellement est tridimensionnel. A cet égard, la vision
est de l’« optique inverse » : il faut inverser la projection 3D 2D pour retrouver les
propriétés de l’objet dans l’espace de l’image ; notons que l’inversion 2D 3D d’une
telle projection est, strictement impossible mathématiquement.

A ce stade, le jeu de données est pré-traité pour le processus d’extraction des ca-
ractéristiques. Les images du jeu de données ont été converties en images en niveaux
de gris, puis normalisées ces images pour de bons résultats de reconnaissance. Pour la
détection de caractéristiques, des modules Haar ont été utilisés pour détecter ces carac-
téristiques locales dans une image d’entrée donnée. Ici, l’image d’entrée fait référence à
l’image numérique capturée par la caméra.

Après avoir détecté les caractéristiques, le classificateur classera l’image d’entrée


en tant qu’image de visage.

3.2 Détection de visage

La détection de visage signifie que le système est capable de comprendre qu’il y a


un visage humain dans une image ou vidéo.

Lorsque nous voulons développer un système de reconnaissance de visage, nous


devons utiliser d’abord la détection de visage, cela signifie également que nous trouvons
ou détectons le visage dans l’image et le système nous dit à qui appartient le visage
détecté.

3.2.1 Le classificateur Haar Cascade

Bien qu’il existe de nombreux algorithmes différents pour effectuer la détection


des visages, chacun a ses propres faiblesses et forces. Certains utilisent des contours et
d’autres sont encore plus complexes impliquant des modèles, des réseaux de neurones
ou des filtres. Ces algorithmes souffrent du même problème : ils sont coûteux en terme
de temps de calcul.

Big Data et reconnaissance des visages 37


CHAPITRE 3. APPROCHE POUR LA RECONNAISSANCE DES VISAGES EN UTILISANT
LE BIG DATA UQTR

Viola et Jones [35] ont conçu un algorithme, appelé Haar Classifiers, pour détecter
rapidement tout objet, y compris les visages humains, à l’aide de cascades de classifi-
cateurs AdaBoost basées sur des caractéristiques de type Haar et non sur des pixels. La
base de la détection d’objets du classificateur Haar réside dans les Haar-like features.

Ces caractéristiques, plutôt que d’utiliser les valeurs d’intensité d’un pixel, utilisent
le changement des valeurs de contraste entre les groupes rectangulaires adjacents de
pixels. Les écarts de contraste entre les groupes de pixels sont utilisés pour déterminer
les zones relativement claires et sombres.

Deux ou trois groupes adjacents avec une variance de contraste relative forment
une caractéristique de type Haar.

Figure 3.2 – Caractéristique de bords

Figure 3.3 – Caractéristique de lignes

Figure 3.4 – Caractéristiques centrées

Les caractéristiques de Haar peuvent facilement être mises à l’échelle en augmen-


tant ou en diminuant la taille du groupe de pixels examiné. Cela permet d’utiliser des
fonctionnalités pour détecter des objets de différentes tailles.

Nous implémenterons notre cas d’utilisation en utilisant le classificateur Haar Cas-


cade. Le classificateur Haar Cascade est une approche efficace de détection d’objets qui
a été proposée par Paul Viola et Michael Jones dans leur article [35].

Big Data et reconnaissance des visages 38


CHAPITRE 3. APPROCHE POUR LA RECONNAISSANCE DES VISAGES EN UTILISANT
LE BIG DATA UQTR

Il s’agit essentiellement d’une approche basée sur l’apprentissage automatique


dans laquelle une fonction en cascade est entraînée à partir d’un grand nombre d’images
positives et négatives. Sur la base de la formation, il est ensuite utilisé pour détecter les
objets dans les autres images.

3.2.2 Entrainement du classificateur pour détecter le visage

La détection des caractéristiques faciales humaines, telles que la bouche, les yeux
et le nez, nécessite que les cascades du classificateur Haar soient d’abord entraînées. Afin
de former les classificateurs, l’algorithme AdaBoost et les algorithmes de fonctionnalité
Haar doivent être implémentés.

3.2.2.1 Le boosting

Le boosting est une classe d’algorithmes d’apprentissage machine d’ensemble qui


impliquent de combiner les prédictions de nombreux apprenants faibles.

Un apprenant faible est un modèle très simple, bien qu’il ait une certaine com-
pétence sur l’ensemble de données. Le boosting était un concept théorique bien avant
qu’un algorithme pratique ne puisse être développé, et l’algorithme AdaBoost (amplifi-
cation adaptative) a été la première approche réussie de l’idée.

En général, le boosting fournit une interface propre entre le boosting et l’algo-


rithme d’apprentissage faible sous-jacent : à chaque tour, l’algorithme de boosting four-
nit un ensemble de données pondérées à l’apprenant faible, et l’apprenant faible fournit
un prédicteur en retour.

Le seul moyen pour algorithme de boosting d’apprendre à partir des données


consiste à appeler l’algorithme d’apprentissage de base. Cependant, si l’apprenant de
base est simplement appelé à plusieurs reprises, toujours avec le même ensemble de
données d’apprentissage, nous ne pouvons pas nous attendre à ce que quelque chose
d’intéressant se produise ; au lieu de cela, nous nous attendons à ce que le même classi-
ficateur de base, ou presque, soit produite encore et encore, de sorte que ce petit classifi-
cateur est gagné sur l’exécution de l’apprenant de base une seule fois. Cela montre que
l’algorithme de boosting, s’il veut s’améliorer par rapport à l’apprenant de base, doit en
quelque sorte manipuler les données qu’il lui fournit.

Comme le boosting reste indépendant de l’apprenant faible, il est connu sous le


nom d’algorithme meta-learning.

Big Data et reconnaissance des visages 39


CHAPITRE 3. APPROCHE POUR LA RECONNAISSANCE DES VISAGES EN UTILISANT
LE BIG DATA UQTR

Le schéma de pondération (comment α est défini dans Algorithm peut être va-
rié pour modifier les algorithmes de boosting globaux. Dans cette section, nous allons
implémenter AdaBoost qui choisit α comme :

1 1 + γt
αt = ln
2 1 − γt
,

où γ est le soi-disant edge de ht (x), et défini comme :

N

γt = Dt (i)yi ht (xi )
i=1
,

3.2.2.2 L’algorithme Adaboost

L’algorithme AdaBoost de Freund et Schapire [10] a été le premier algorithme de


boosting pratique, et reste l’un des plus largement utilisés et étudiés, avec des applica-
tions dans de nombreux domaines.

L’algorithme AdaBoost implique l’utilisation d’arbres de décision très courts (à un


niveau) en tant qu’apprenants faibles qui sont ajoutés séquentiellement à l’ensemble.

Expérimentalement, sur des données issues de nombreuses applications du monde


réel, AdaBoost s’avère également très efficace. Pour avoir une idée des performances
globales d’AdaBoost, nous pouvons la comparer à d’autres méthodes comme Random
Forest, qui suit une méthodologie importante dans l’apprentissage automatique, car dif-
férents algorithmes peuvent présenter des forces relatives qui varient considérablement
d’un ensemble de données à l’autre.

Adaboost se base sur les arbres à une seule profondeur avec l’attribution des poids
différents pour chaque noeud, contrairement à Random Forest qu’on représente avec un
arbre ayant une profondeur longue.

Big Data et reconnaissance des visages 40


CHAPITRE 3. APPROCHE POUR LA RECONNAISSANCE DES VISAGES EN UTILISANT
LE BIG DATA UQTR

Noeud

Feuille 1 Feuille 2

Noeud

Feuille 1 Feuille 2

Noeud

Feuille 1 Feuille 2

Figure 3.5 – Arbre de l’algorithme Adaboost

Chaque modèle suivant tente de corriger les prédictions faites par le modèle avant
lui dans la séquence. Ceci est réalisé en pesant l’ensemble de données d’entraînement
pour mettre davantage l’accent sur les exemples d’entraînement sur lesquels les modèles
antérieurs ont fait des erreurs de prédiction.

Nous sommes maintenant prêts à décrire en détail l’algorithme de boosting Ada-


Boost, qui intègre ces idées, et dont le pseudocode est représenté par l’algorithme 3.6.
AdaBoost procède par ronds ou appels itératifs à l’apprenant de base.

Pour choisir les ensembles de formation fournis à l’apprenant de base à chaque


tour, AdaBoost maintient une distribution sur les exemples de formation. La distribution
utilisée au t-ième tour est notée Dt , et le poids qu’elle attribue à l’exemple d’apprentis-
sage i est dénoté Dt (i).

Intuitivement, ce poids est une mesure de l’importance de classer correctement


l’exemple i sur le tour en cours. Au départ, tous les poids sont fixés de manière égale,
mais à chaque tour, les poids des exemples mal classés sont augmentés de sorte que, effec-
tivement, les exemples difficiles obtiennent un poids successivement plus élevé, forçant
l’apprenant de base à concentrer son attention sur eux [13].

Ces étapes de l’algorithme peuvent être présentées comme suit :

Big Data et reconnaissance des visages 41


CHAPITRE 3. APPROCHE POUR LA RECONNAISSANCE DES VISAGES EN UTILISANT
LE BIG DATA UQTR

Entrée : Base de données D =


{(x1 , y1 ), (x2 , y) , . . . , (xm , ym )};
Algorithme d’apprentissage de base E ;
Nombre de cycles d’apprentissage T ;
Traiter :
1. D1 (x) = 1/m # initialiser la répartition du poids
2. pour t = 1, . . . , T ;
3. ht = E(D, Dt ); # former un classificateur ht à partir de
D en cours de diffusion Dt
4. t = Px∼Dt ht (x) = f ((x)); évaluer l’erreur de ht
5. if t > 0.5 then break
 
6. αt = 12 ln 1−
t
t
; # déterminer le poids de ht

Dt (x) exp (−αt ) = if ht (x) = f (x)
7. Dt+1 (x) = Zt x
exp (αt ) = if ht (x) = f (x)
= Dt (x)exp(−α
Zt
t f (x)ht (x))

# mettre à jour la distribution, où Zt est un facteur de


normalisation qui permet Dt+1 d’être une distribution.
8. end  
T
Sortie : H(x) = sign t=1 αt ht (x)

Figure 3.6 – L’algorithme Adaboost

L’algorithme d’apprentissage consiste à commencer par un arbre de décision, à


rechercher les exemples dans l’ensemble de données d’apprentissage qui ont été mal
classés et à ajouter plus de poids à ces exemples. Un autre arbre est entraîné sur les mêmes
données, bien que désormais pondéré par les erreurs de classification. Ce processus est
répété jusqu’à ce qu’un nombre souhaité d’arbres soit ajoutés.

Le boosting a également été initialement proposé comme méthode de comité, bien


que contrairement au bagging, le comité des apprenants faibles évolue au fil du temps et
les membres votent de manière pondérée. Le boosting semble dominer l’ensachage sur
la plupart des problèmes et est devenu le choix préféré.

Contrairement à l’algorithme Adaboost, l’algorithme Random Forest (Breiman,


2001) qui est une modification substantielle du bagging construit une grande collection
d’arbres décorrélés, puis les moyenne. Sur de nombreux problèmes, les performances
des forêts aléatoires sont très similaires à celles du boosting, et elles sont plus simples à
entraîner et à régler. Par conséquent, les forêts aléatoires sont populaires et sont implé-
mentées dans une variété de packages.

Big Data et reconnaissance des visages 42


CHAPITRE 3. APPROCHE POUR LA RECONNAISSANCE DES VISAGES EN UTILISANT
LE BIG DATA UQTR

Les forêts aléatoires sont une combinaison de prédicteurs d’arbres tels que chaque
arbre dépend des valeurs d’un vecteur aléatoire échantillonné indépendamment et avec
la même distribution pour tous les arbres de la forêt contrairement à Adaboost qui affecte
des poids différents aux noeuds. L’erreur de généralisation pour les forêts converge petit
à petit à une limite à mesure que le nombre d’arbres dans la forêt devient grand. L’erreur
de généralisation d’une forêt de classificateurs d’arbres dépend de la force des arbres
individuels dans la forêt et de la corrélation entre ceux-ci.

Training Data

Figure 3.7 – Random forest

Donc on pourrait dire que AdaBoost est un algorithme indéniablement performant


et Random Forest est au moins aussi bon, sinon meilleur. Mais AdaBoost est aussi dé-
routant que réussi ; il a enfreint les règles de base des statistiques en ajustant de manière
itérative même des ensembles de données bruyants jusqu’à ce que chaque point de don-
nées de l’ensemble d’apprentissage soit ajusté sans erreur. Encore plus déroutant, du

Big Data et reconnaissance des visages 43


CHAPITRE 3. APPROCHE POUR LA RECONNAISSANCE DES VISAGES EN UTILISANT
LE BIG DATA UQTR

moins pour les statisticiens, il continuera à itérer un algorithme déjà parfaitement ajusté
qui réduit l’erreur de généralisation.

La vision statistique du boosting comprend AdaBoost comme une optimisation


par étapes d’une perte exponentielle, qui suggère (exige !) la régularisation de la taille de
l’arbre et le contrôle du nombre d’itérations ainsi que le poids. En revanche, un Random
Forest n’est pas une optimisation ; il semble fonctionner mieux avec de grands arbres et
autant d’itérations que possible.

Il est largement admis qu’AdaBoost est efficace parce qu’il s’agit d’une optimisa-
tion, tandis que les forêts aléatoires ou Random Forest fonctionnent bien parce qu’elles
fonctionnent. Les auteurs de cet article [3] mettent en lumière cette conjecture en four-
nissant une nouvelle intuition étayée par des exemples pour montrer comment AdaBoost
et la forêt aléatoire réussissent pour la même raison.

L’entrainement des classificateurs Adaboost se fait comme suit : chaque classifica-


teur collecte un nouvel ensemble d’échantillons négatifs pour chaque étape, et le nombre
d’échantillons négatifs fixe la limite pour la taille de l’ensemble. Il utilise les informa-
tions des étapes précédentes pour déterminer lequel des «échantillons candidats» sont
mal classés.

Intuitivement, pour qu’un classificateur apprenant soit efficace et précis dans ses
prédictions, il doit remplir trois conditions :

— (1) il doit avoir été formé sur « suffisamment » d’exemples de formation ;


— (2) il devrait fournir un bon ajustement à ces exemples de formation (ce qui
signifie généralement qu’il devrait avoir une faible erreur de formation) ;
— (3) il devrait être «simple».

La figure 3.8 présente en illustrateur de l’entrainement des classificateurs Ada-


boost, le premier classificateur entrainé regarde dans l’image s’il s’agit d’un visage ou
non, s’il peut le détecter on passe au classificateur suivant, sinon on le rejette et on
retourne à la fenêtre de décision pour former un nouveau classificateur et tester ces ca-
pacités de détection et ainsi de suite jusqu’à la formation de tous les classificateurs qui
peuvent détecter le visage.

Big Data et reconnaissance des visages 44


CHAPITRE 3. APPROCHE POUR LA RECONNAISSANCE DES VISAGES EN UTILISANT
LE BIG DATA UQTR

Fenêtre de détection

NON
Visgage ? Rejet

Oui, probable

NON
Visgage ? Rejet

Oui, probable

NON
Visgage ? Rejet

Oui, probable

NON
Visgage ? Rejet

Oui, probable

Visage détecté

Figure 3.8 – Entrainement de classificateurs avec Adaboost

On peut expliquer le processus de cet entrainement des classificateurs avec l’algo-


rithme Adaboost comme suit :

Big Data et reconnaissance des visages 45


CHAPITRE 3. APPROCHE POUR LA RECONNAISSANCE DES VISAGES EN UTILISANT
LE BIG DATA UQTR

1
D1 (i) = (3.1)
n
fort = 1toT (3.2)
trainht usingDt (3.3)
et = PDt [ht (x) = y] (3.4)
1 − et
αt = 1/2 log (3.5)
et
Dt (i) exp(−αt yt ht (xi ))
Dt+1 (i) = (3.6)
Zt
(3.7)

Le classifieur final est :



f (x) = sign( αt ht (x)) (3.8)
t

exp(− αt yt ht (xi ))
DT (i) = 1/n Tt−1 (3.9)
t=1 Zt
 
Zt = 1/n exp(−yi f (xi )) (3.10)
t i

  
1/n [f (xi ) = yi ] ≤ 1/n exp(−yi f (xi )) = Zt (3.11)
i i t

≤ Dt (i) exp(−αt yi ht (xi )) (3.12)
t i
 
≤ 1/n exp(−yi αt ht (xi )) (3.13)
i t

     2
Zt = 2 et (1 − et ) = 1 − 4γt2 ≤ e−2 t γt (3.14)
t t t

γt = 1/2 − et , (3.15)

2
si γt ≥ γ > 0, donc e−2T γ . L’erreur d’entraînement chute de façon exponentielle,
ainsi on obtient le meilleur classificateur possible.

Souches de décision : Chaque prédicteur correspondra à une souche de décision, celle-


ci est simplement juste une paire caractéristique-seuil. Notons que pour chaque carac-
téristique fi , nous pouvons avoir plusieurs seuils possibles que nous noterons τ . Étant
donné une instance d’entrée à classer, une souche de décision correspondant à la carac-
téristique fi et au seuil τ prédira +1 si l’instance d’entrée a une valeur de caractéristique

Big Data et reconnaissance des visages 46


CHAPITRE 3. APPROCHE POUR LA RECONNAISSANCE DES VISAGES EN UTILISANT
LE BIG DATA UQTR

fi supérieure au seuil τ ; sinon, il prédit −1.

Détermination du seuil approprié :

Pour créer les différents seuils pour chaque caractéristique fi , nous devons :

1. trier les exemples de formation par leurs valeurs fi ;


2. supprimer les valeurs en double ;
3. construire des seuils à mi-chemin entre des valeurs de caractéristiques succes-
sives.

Nous devons également ajouter deux seuils pour chaque fonctionnalité : un en des-
sous de toutes les valeurs observées pour cette fonctionnalité et un au-dessus de toutes
les valeurs pour cette fonctionnalité. En supprimant les valeurs en double, nous rédui-
sons le nombre de seuils à vérifier.

(Remarque : La procédure de recherche est la même que celle utilisée pour sélec-
tionner un seuil pour définir une division binaire sur une caractéristique continue dans
les arbres de décision, sauf que nous maximisons l’erreur d’apprentissage au lieu du gain
d’information ou de l’indice de Gini.)

Souche de décision optimale : Le seuil optimal τ ∗ pour la caractéristique fi corres-


pond au seuil qui maximise :

1
τ ∗ = argmax | − error(τ )|
τ 2
,

où error(.) est calculé comme la somme des poids (Dt (i)) des instances mal clas-
sées. Dans ce cas, puisque nous avons affaire à des valeurs absolues, si un seuil a une
erreur de 0,2 et qu’un autre seuil produit une erreur de 0,9 , nous préférerons ce dernier
car il a une différence plus élevée par rapport à 0, 5 (pour de telles souches de déci-
sion, nous devons inverser la prédiction de sorte que pour les instances dont la valeur
de caractéristique est supérieure à τ , nous prédisons −1 et +1 sinon. Nous devons nous
en souvenir lorsque nous combinons de telles souches de décision avec d’autres pour
évaluer H(x)).

Big Data et reconnaissance des visages 47


CHAPITRE 3. APPROCHE POUR LA RECONNAISSANCE DES VISAGES EN UTILISANT
LE BIG DATA UQTR

3.3 Extraction des caractéristiques

3.3.1 L’histogramme LBP

3.3.1.1 Définition

L’histogramme à motifs binaires locaux est une technique très utilisée dans le do-
maine de la reconnaissance faciale. Cette technique utilise un bloc de 3*3 pixels extrait à
partir d’une image, et elle est particulièrement intéressée par le pixel central pour pou-
voir calculer l’opérateur LBP.

Les images sont représentées sous la forme de tableaux rectangulaires de nombres


représentant des intensités d’image à des emplacements particuliers. Chaque élément
d’un tel tableau est appelé un pixel. Une image couleur peut être représentée sous forme
de trois matrices distinctes appelées «plans de couleur», contenant des composants
rouge, vert et bleu sous forme d’images monochromatiques. Une image avec un bord
oblique pourrait ressembler à :

0 0 0 1 1 0 0 1 1 0
0 0 1 12 10 17 15 18 1 0
0 2 5 15 14 18 12 20 25 0
0 1 17 20 15 20 14 16 56 60
0 8 22 18 20 35 28 40 43 46
0 10 25 27 32 38 40 41 39 46
0 12 20 30 40 38 30 38 46 40
0 5 15 36 38 40 30 89 77 76
5 12 11 10 42 55 45 56 60 72
20 15 13 20 18 60 63 90 98 74
Table 3.1 – Représentation d’une image en pixels

L’opérateur LBP se repose sur les valeurs du 9 pixels qui constituent ce bloc, à
savoir, le pixel central et les 8 pixels voisins ou encore les 26 voisins si on a une grille
XY.

Cette technique d’extraction de caractéristiques nous aide par la suite à faire la


classification qui va nous servir à réaliser un modèle d’apprentissage en profondeur en
anglais le deep learning.

Dans cette section, l’algorithme de détection de visage basé sur LBPH est présenté.
L’algorithme LBPH est la combinaison des descripteurs Local Binary Patterns (LBP) et

Big Data et reconnaissance des visages 48


CHAPITRE 3. APPROCHE POUR LA RECONNAISSANCE DES VISAGES EN UTILISANT
LE BIG DATA UQTR

Histograme des Gradient Orientés (HOG). LBP est un moyen simple mais puissant d’ex-
traire et d’étiqueter les pixels d’une image. En utilisant le LBPH, nous pouvons facilement
représenter des images de visage avec un simple vecteur.

3.3.1.2 Calcul de l’opérateur LBPH :

Dans cette section, nous allons voir comment on peut se servir des valeurs de
pixels pour calculer l’opérateur LBP, ou encore, comment l’algorithme calcule les valeurs
de chaque pixel de l’image pour créer notre modèle à l’aide de l’histogramme à motifs
binaires locaux.

L’opérateur LBP se définit comme suit :

m=0
LBP (xc , yc ) = p−1 s(in − ic )2n

s(in − ic ) = 1siin ic ≥ 0

0siin − ic < 0.

Pour un bloc de 9 pixels 3*3, on peut le définir comme suit :

7
LBP = n s(in − ic )2n

s(in − ic ) = 1siin ic ≥ 0

0siin − ic < 0

avec ic la valeur du pixel central, et in la valeur des pixels voisins qui sont les pixels
autour du pixel central sachant que n allant de 0 jusqu’à 7. Si la différence des valeurs ic
et in est négative on pose s(in − ic ) = 1 sinon on aura s(in − ic ) = 0.

Ces valeurs de pixels peuvent être les valeurs de l’intensité ou de luminosité, c’est
ce type de caractéristiques de pixels que nous examinons lorsque nous procédons à faire
le calcul de l’opérateur LBP afin de pouvoir maximiser la variation ou les fonctionnalités
qui sont pertinentes pour l’identité, nous ne regardons pas la couleur dans ce cas. La
plupart des gens examinent l’image en niveau de gris, mais cela n’empêche pas de faire
cette procédure en couleur, mais dans ce cas nous allons avoir trois dimensions, donc
nous allons nous intéresser à 27 pixels et non seulement à 9.

Big Data et reconnaissance des visages 49


CHAPITRE 3. APPROCHE POUR LA RECONNAISSANCE DES VISAGES EN UTILISANT
LE BIG DATA UQTR

Dans la matrice de visage, les caractéristiques extraites de l’image servent à compa-


rer les valeurs des pixels voisins avec les valeurs des pixels centraux pour enfin générer
un code binaire.

Pour détecter les visages dans une photo RBG (couleur), nous devons d’abord
convertir l’image en une image en niveaux de gris. Pour chaque pixel Pi,j , c’est un vec-
teur qui contient trois valeurs qui doivent représenter le degré de rouge, de bleu et de
vert. Nous convertissons l’image RBG en image à l’échelle y en :

Gi,j = (0.2989, 0.5870, 0.1140)T .Pi,j ,

où Gi,j représente le pixel correspondant dans l’image. L’opérateur LBP va compa-


rer la valeur centrale avec ses P valeurs voisines sur le cercle de rayon R et attribue à la
valeur voisine 1, si la valeur centrale est plus grande que la voisine, il attribue la valeur
0 sinon.

Dans ce qui suit nous allons faire la démonstration de l’opérateur LBP pour un
pixel, notons que les valeurs des pixels sont ordonnées comme suit :

i0 i1 i2
i7 ic i3
i6 i5 i4

Considérons un exemple simple d’un bloc de 3*3 pixels extrait à partir d’une image
et calculons l’opérateur LBP qui va transformer ces valeurs en des valeurs binaires for-
mant une seule valeur du pixel central.

5 9 1
4 4 6
7 2 3

Table 3.2 – Calcul de l’opérateur LBP :

Big Data et reconnaissance des visages 50


CHAPITRE 3. APPROCHE POUR LA RECONNAISSANCE DES VISAGES EN UTILISANT
LE BIG DATA UQTR

Pour n=0 : LBP = s(i0 − ic )20 = s(5 − 4)20 = 1

Pour n=1 : LBP = s(i1 − ic )21 = s(9 − 4)21 = 1

Pour n=2 : LBP = s(i2 − ic )22 = s(1 − 4)22 = 0

Pour n=4 : LBP = s(i4 − ic )24 = s(3 − 4)24 = 0

Pour n=5 : LBP = s(i5 − ic )25 = s(2 − 4)25 = 0

Pour n=6 : LBP = s(i6 − ic )26 = s(7 − 4)26 = 1

Pour n=7 : LBP = s(i7 − ic )27 = s(4 − 4)27 = 1

On peut présenter les valeurs binaires calculées comme suit :

1 1 0
1 1
1 0 0

On peut aussi obtenir ces valeurs binaires en comparant la valeur de chaque pixel
voisin avec celle du pixel central, si la valeur du pixel voisin est supérieure à la valeur du
pixel central alors on met 1 sinon on met 0, cette méthode et aussi appelée le seuillage
du pixel central par rapport aux autres pixels voisins.

Ces valeurs binaires signifient essentiellement que si nous avons une transition de
0 à 1 ou de 1 à 0, alors il s’agit des bords ou du contour qui vont nous permettre par
la suite de définir et détecter l’objet recherché, ce sont les transitions des zones claires
du visages à des zones sombres du visage. Nous aurons donc un descripteur invariant
d’illumination des bords.

Big Data et reconnaissance des visages 51


CHAPITRE 3. APPROCHE POUR LA RECONNAISSANCE DES VISAGES EN UTILISANT
LE BIG DATA UQTR

L’opérateur LBP réduit l’influence de l’éclairage et renvoie la texture en considé-


rant chaque pixel d’une image qui exclut les pixels limites.

Ensuite, nous récupérons les valeurs binaires ou dites bits calculées successive-
ment de i0 jusqu’à i7 , c’est-à-dire, qu’ont fait une rotation dans le sens de l’aiguille d’une
montre, pour les transformer en un octet afin de former le nombre LBP binaire comme
suit :

1 1 0 1 0 0 1 1

Cette séquence de 8 bits que nous avons obtenue forme un nombre binaire généré
à partir des valeurs de pixels va être convertie en nombre décimal pour obtenir la valeur
du pixel central afin de former notre système :

7 6 5 4 3 2 1 0
1 1 0 1 0 0 1 1

On obtient alors :

1∗20 +1∗21 +0∗22 +0∗23 +1∗24 +0∗25 +1∗26 +1∗27 = 1+2+16+64+128 = 211

Donc 211 est le code LBP généré.

En utilisant le résultat LBP, nous pouvons générer un histogramme pour cette


image et former un vecteur de données pour décrire les motifs de l’image d’origine.

3.3.1.3 Réalisation de l’histogramme

Ce calcul doit être fait pour chaque pixel de l’image en implémentant les mêmes
instructions afin d’obtenir les codes LBP correspondant et en le remplaçant dans le pixel
de l’image concerné. Nous transformons ces valeurs obtenues en un histogramme en
fonction du nombre d’apparitions ou de fréquence de chaque nombre, donc fondamenta-
lement en regardant les statistiques, nous obtenons les caractéristiques de la distribution
de ces nombres décimaux, notons qu’il y a que 256 valeurs différentes.

L’histogramme représente la fréquence des occurrences du résultat LBP pour


chaque pixel. A partir de la dernière partie, après avoir fait l’opérateur LBP, la valeur
de chaque pixel est comprise entre 0 et 255. Ainsi, l’histogramme ne contient que 256
positions.

Big Data et reconnaissance des visages 52


CHAPITRE 3. APPROCHE POUR LA RECONNAISSANCE DES VISAGES EN UTILISANT
LE BIG DATA UQTR

Cependant, nous ne considérons pas directement l’image entière. Nous divisons


l’image en plusieurs morceaux d’image. nous calculons les valeurs de 256 positions pour
chaque élément d’image étant donné Nx et Ny, représentant le nombre de cellules dans
la direction horizontale et verticale respectivement.

Ensuite, nous concaténons tous les histogrammes de tous les morceaux d’image
pour former un histogramme plus significatif.

Par la suite, nous utilisons ce qu’on appelle des modèles binaires locaux uniformes
et ils n’ont que 59 valeurs différentes possibles au lieu de 256, nous obtenons donc des
statistiques vraiment robustes.

Et ensuite nous réalisons des histogrammes que nous obtenons pour chaque image
afin de trouver la similarité entre elles, et sur la base de cela nous pouvons prédire qu’il
s’agit de la même personne, si la similarité est élevée avec une image d’entrainement
connue.

6.4

LBP2
4.7
4

2.8

LBP1
0.9

LBP3 LBP4 lbp5 LBP6 LBP7

Figure 3.9 – Histogramme LBP :

L’avantage de cette technique c’est qu’elle est invariante par rapport à l’éclairage,
autrement dit, si nous changeons l’éclairage de l’image ou de la scène, toutes les valeurs
de pixels augmenteront et la différence relative entre elles restera la même, donc notre
modèle binaire restera le même indépendamment de la valeur d’éclairage en général.

Big Data et reconnaissance des visages 53


CHAPITRE 3. APPROCHE POUR LA RECONNAISSANCE DES VISAGES EN UTILISANT
LE BIG DATA UQTR

3.4 Classification

Cette étape consiste à faire la classification qui est effectuée en calculant les simila-
rités entre des histogrammes directs. Cependant, une perte de données spatiales conduit
à considérer la même méthodologie pour l’illustration de l’image faciale [9].

Données numériques

Prétraitement

Extraction des caractéristiques

sélection des données d’entraînement

décision et classement

sortie de classification

évaluation de la précision

Figure 3.10 – Processus de classification

Le système exécute un processus de reconnaissance faciale. D’abord, il détecte tous


les visages dans l’image, puis il extrait les caractéristiques faciales de l’image de visage
de test d’entrée. Une fois ce vecteur de caractéristiques d’entrée est réalisé, il est comparé
au modèle de jeu de données d’image formé à l’aide du classificateur Haar Cascade.

Si le vecteur de caractéristiques de test d’entrée correspond au modèle formé, il


reconnaît le visage et récupère les informations sur cette image à partir de la base de
données. Le système peut détecter plusieurs visages dans l’image si une nouvelle image

Big Data et reconnaissance des visages 54


CHAPITRE 3. APPROCHE POUR LA RECONNAISSANCE DES VISAGES EN UTILISANT
LE BIG DATA UQTR

de visage entre dans le système, il reconnaît le visage à partir des informations de la base
de données [2].

Le classificateur formé vise à faire correspondre l’image avec les images du modèle
formé qui est calculé par l’une des méthodes suivantes :

L’intersection d’histogrammes :


D(S, M ) = (min(Si , M i))
i
;

Statistique de log-vraisemblance :


L(S, M ) = − Si logM i
i
;

Statistique du Chi-deux (X2 ) :

 (Si − Mi )2
X 2 (S, M ) =
i
S i + Mi
;

avec S et M deux histogrammes LBP.

La recherche des deux histogramme qui se ressemblent le mieux peut se faire aussi
à l’aide du calcul de la distance euclidienne comme suit :


 n

d(p, q) =  (pi − qi )2
i=1
.

Compte tenu de la représentation caractéristique d’un échantillon de visage,


l’étape de classification vise à calculer un score pour l’échantillon et, selon un seuil de dé-
cision, accepter ou rejeter l’échantillon. Les méthodes de mesure de similarité, telles que
la corrélation normalisée (NC) [37], sont les classificateurs les plus simples et les plus
populaires. Des modèles statistiques plus complexes tels que les réseaux de neurones
(NN) [23] ou les machines à vecteurs de support (SVM) [18] sont également utilisés. NC,
NN ou SVM sont des approches discriminantes.

Big Data et reconnaissance des visages 55


CHAPITRE 3. APPROCHE POUR LA RECONNAISSANCE DES VISAGES EN UTILISANT
LE BIG DATA UQTR

3.5 Identification

Après avoir fait la correspondance entre les histogrammes afin de classifier les
visages et les reconnaitre, on procède à l’identification qui est l’étape finale du processus
de reconnaissance faciale.

Cette partie consiste à faire la reconnaissance de visage détecté auparavant.

On parcoure tout le répertoire des images qui est sous forme d’une arborescence
dans la base de données des visages. Ensuite on construit deux tableaux, le premier
contient l’ensemble de photos et le deuxième contient l’identité de chaque personne qui
est le nom du répertoire. S’il y a des images dans le répertoire, on va récupérer le nom du
dossier contenant l’image et on le stocke dans le premier tableau qui identifie les visages
et on enregistre toutes les images correspondantes dans le deuxième tableau des images.

On répète ce processus d’identification pour tous les dossiers des images de notre
base de données et, à l’aide des classificateur entrainés, on pourra facilement faire l’iden-
tification du visage en faisant la correspondance entre les données stockés et le visage
détecté.

Détection de visage

Extraction des caractéristiques

Vérification Identification

Figure 3.11 – Identification du visage

Big Data et reconnaissance des visages 56


Chapitre 4

Implémentation et résultats

Sommaire
4.1 Environnement de travail . . . . . . . . . . . . . . . . . . . . . . 58
4.2 Implémentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58
4.2.1 Détection de visage . . . . . . . . . . . . . . . . . . . . . . . . 59
4.2.1.1 Etape 1 : Les images positives et les images négatives 59
4.2.1.2 Etape 2 : Préparation des images . . . . . . . . . . . 60
4.2.1.3 Etape 3 : création du fichier Vector des images positives 62
4.2.1.4 Etape 4 : Le Haar-Trainning . . . . . . . . . . . . . 62
4.2.1.5 Etape 5 : création du fameux fichier haarCascade-
Classifier personnalisé . . . . . . . . . . . . . . . . 64
4.2.2 Reconnaissance de visage . . . . . . . . . . . . . . . . . . . . 68
4.3 Expérimentation . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
4.4 Résultats et perspectives . . . . . . . . . . . . . . . . . . . . . . . 74
4.5 Conclusion générale . . . . . . . . . . . . . . . . . . . . . . . . . . 77
4.6 Annexe 1 : Détection de visage . . . . . . . . . . . . . . . . . . . . 78
4.7 Annexe 2 : Reconnaissance et identification . . . . . . . . . . . . 80
4.8 Annexe 3 : Interface graphique . . . . . . . . . . . . . . . . . . . . 82

57
CHAPITRE 4. IMPLÉMENTATION ET RÉSULTATS UQTR

4.1 Environnement de travail

L’application de la reconnaissance faciale avec l’approche proposée a été implé-


mentée en Python, à l’aide de la bibliothèque de traitement d’image Opencv, le classifi-
cateur Haar ainsi que l’algorithme LBPH en utilisant la caméra de l’ordinateur.

Heureusement, Intel a développé la bibliothèque open source consacrée à faciliter


la mise en œuvre de programmes liés à la vision par ordinateur appelée Open Computer
Vision Library (OpenCV).

Pour entraîner les classificateurs, deux ensembles d’images sont nécessaires. Un


ensemble d’images d’une scène qui ne contient pas l’objet, dans ce cas un trait de visage,
qui va être détecté, cet ensemble d’images est appelé images négatives. L’autre ensemble
d’images, les images positives, contiennent une ou plusieurs instances de l’objet. L’em-
placement des objets dans les images positives est spécifié par : le nom de l’image, le
pixel supérieur gauche, la hauteur et la largeur de l’objet [28].

Afin de produire la détection des caractéristiques faciales la plus robuste possible,


l’ensemble d’images positives d’origine doit être représentatif de la variance entre diffé-
rentes personnes, y compris la race, le sexe et l’âge.

Il existe de nombreux formats d’images différents utilisés pour stocker et trans-


mettre des images sous forme compressée, car les images brutes sont de grandes struc-
tures de données qui contiennent beaucoup de redondance (par exemple, des corrélations
entre des pixels proches) et sont donc hautement compressibles. Différents formats sont
spécialisés pour la compressibilité, la maniabilité ou les propriétés des imprimantes et
des navigateurs, on note les formats jpeg, png, jpg, bmp,...[7].

Pour réaliser et mettre en œuvre les travaux ci-dessus, du matériel et des logiciels
ultérieurs sont nécessaires pour développer l’approche proposée. J’ai utilisé les outils
et environnements suivants : système d’exploitation Windows10, Python 2.7/3.10, bi-
bliothèque OpenCV, bibliothèque Numpy, et bibliothèque Pillow principalement et un
ordinateur intel CORE i3.

4.2 Implémentation

Le processus de détection et d’identification des visages est une technique d’ap-


prentissage automatique, en apprenant et en extrayant les caractéristiques physiques de

Big Data et reconnaissance des visages 58


CHAPITRE 4. IMPLÉMENTATION ET RÉSULTATS UQTR

l’humain. Dans cette partie, on va faire correspondre ces caractéristiques avec les images
testées afin d’identifier une personne et la reconnaitre. Il existe plusieurs paramètres dif-
ficiles et variables dans la détection et l’identification des visages, tels que l’éclairage, les
différentes poses, les expressions de changement, les images d’entrée de mauvaise qua-
lité, etc.

4.2.1 Détection de visage

Pour réussir à faire la détection du visage, on doit posséder d’un fichier de clas-
sificateur HaarCascade, dans ce qui suit nous allons découvrir ensemble les principales
étapes afin de créer ce fichier.

Les étapes nécessaires pour créer un fichier Haar cascade classifier sont :

• Collection d’images d’entraînement positives et négatives

• Marquage d’images positives à l’aide des outils objectmarker.exe

• Création d’un fichier .vec (vecteur) basé sur des images marquées positives à
l’aide de createsamples.exe

• Formation du classificateur à l’aide de haartraining.exe

• Exécution du classificateur à l’aide de cvHaarDetectObjects()

Donc, comment cela fonctionne ? Ce sont d’énormes fichiers xml individuels avec
beaucoup d’ensembles de fonctionnalités et chaque xml correspond à un type très spé-
cifique de cas d’utilisation.

4.2.1.1 Etape 1 : Les images positives et les images négatives

Les images positives sont celles qui contiennent l’objet que nous souhaitons détec-
ter et les images négatives sont les images qui ne contiennent pas l’objet et contiennent
toute sorte d’objets différents que celui que nous voulons détecter.

Big Data et reconnaissance des visages 59


CHAPITRE 4. IMPLÉMENTATION ET RÉSULTATS UQTR

Figure 4.1 – Images positives

Figure 4.2 – Images négatives

4.2.1.2 Etape 2 : Préparation des images

Pour entrainer le classificateur, nous avons besoin d’un fichier texte contenant les
noms des images négatives, pour le créer nous devons exécuter le fichier batch bg.bat

Ensuite, nous préparons les images positives afin de créer le fichier vector qui
contient les noms des images positives ainsi que l’emplacement des objets dans chaque
image. Pour cela il faut avoir des images de type .bmp dans le dossier rowdata, par la
suite il faut exécuter l’application ObjectMarker afin de marquer notre objet dans chaque
image. ObjectMarker ouvre deux fenetres, une pour afficher l’image positive, dont je
souhaite marquer l’objet, et la deuxieme pour afficher les informations nécessaires sur
l’image, à savoir le nom, les coordonnées de la position de l’objet après l’avoir marqué.

Big Data et reconnaissance des visages 60


CHAPITRE 4. IMPLÉMENTATION ET RÉSULTATS UQTR

Un fichier Infor.txt a été créé contenant toutes les informations des images comme
suit :

rawdata/a1.bmp 1 140 200 273 318

rawdata/a10.bmp 2 96 34 81 120 269 127 95

rawdata/a2.bmp 1 111 131 222 224

rawdata/a3.bmp 1 38 66 184 263

rawdata/a4.bmp 1 61 125 364 448

rawdata/a5.bmp 1 98 74 268 396

rawdata/a6.bmp 2 152 36 104 164 24 214 128 148

rawdata/a7.bmp 1 83 103 248 356

rawdata/a8.bmp 1 37 35 90 124

rawdata/a9.bmp 4 128 28 60 68 285 78 47 62 388 129 44 58 472 69 50 68

Le premier nombre de chaque ligne définit le nombre d’objets existants dans


l’image donnée, et les quatre nombres qui suivent définissent les données de la posi-
tion de l’objet dans l’image. Pour les images qui contiennent n fois l’objet, nous aurons
n fois les quatre chiffres successivement.

Big Data et reconnaissance des visages 61


CHAPITRE 4. IMPLÉMENTATION ET RÉSULTATS UQTR

4.2.1.3 Etape 3 : création du fichier Vector des images positives

On exécute le fichier batch createsamples qui contient la commande suivante :

createsamples.exe -info positive/info.txt -vec vector/facevector.vec -num 100000


-w 24 -h 24

-info positive/info.txt Chemin du fichier d’informations positives

-vec vector/facevector.vec Chemin du fichier vectoriel de sortie

-num 100000 Nombre de fichiers positifs à compresser dans un fichier vectoriel

-w 24 Largeur des objets

-h 24 Hauteur des objets

4.2.1.4 Etape 4 : Le Haar-Trainning

Il faut adapter le fichier haarTraining selon le nombre d’images positives et néga-


tives qu’on a pour entrainer le programme.

–data cascades chemin pour stocker la cascade de classificateurs

-vec data/vector.vec Chemin qui indique l’emplacement du fichier vectoriel

-bg negative/bg.txt Chemin qui pointe vers le fichier d’arrière-plan

-npos 10 Nombre d’échantillons positifs inférieur à no. fichiers bmp positifs

-nneg 200 Nombre d’échantillons négatifs (patchs) supérieur à npos

nstages 15 Nombre d’étapes prévues pour la formation

-mem 1024 Quantité de mémoire affectée en Mo

-w 24 -h 24 Taille de l’échantillon

-nonsym on utilise ceci si l’objet n’est pas symétrique horizontalement

Big Data et reconnaissance des visages 62


CHAPITRE 4. IMPLÉMENTATION ET RÉSULTATS UQTR

Harrtraining.exe collecte un nouvel ensemble d’échantillons négatifs pour chaque


étape et –nneg définit la limite de la taille de l’ensemble. Il utilise les informations des
étapes précédentes pour déterminer lesquels des « échantillons candidats » sont mal
classés.

En exécutant le fichier batch, nous avons des informations définissant l’étape ac-
tuelle du processus de formation, le nombre de features utilisés à ce stade, Erreur expo-
nentielle du classificateur fort. . .

Big Data et reconnaissance des visages 63


CHAPITRE 4. IMPLÉMENTATION ET RÉSULTATS UQTR

4.2.1.5 Etape 5 : création du fameux fichier haarCascadeClassifier personnalisé

Après avoir fini l’étape de l’entrainement de notre fichier, on obtient les cata-
logues numérotés définissant les stages d’entrainnement réalisés. Maintenant, nous de-
vons combiner et regrouper les différents entrainements effectués pour obtenir notre
fichier entrainé en exécutant le fichier batch convert.bat

Big Data et reconnaissance des visages 64


CHAPITRE 4. IMPLÉMENTATION ET RÉSULTATS UQTR

Le fichier myhaar.xml a été créé avec succès, nous pouvons l’utiliser dans notre
programme pour détecter l’objet que nous cherchons dans l’image qui est le visage.

Dans ce projet, on va utiliser notre fichier haarcascade pour détecter les visages.
Importons cv2 et utilisons également la fonction CascadeClassifier d’OpenCV pour poin-
ter vers l’emplacement où nous avons stocké le fichier XML.

Maintenant, la deuxième étape consiste à charger l’image et à la convertir en


échelle de gris.

Gi,j = (0.2989, 0.5870, 0.1140)T .Pi,j

Généralement, les images que nous voyons se présentent sous la forme d’un canal
RVB (Rouge, Vert, Bleu). Ainsi, lorsque OpenCV lit l’image RVB, il stocke généralement
l’image dans le canal BGR (bleu, vert, rouge). Aux fins de la reconnaissance d’image,
nous devons convertir ce canal BGR en canal gris. La raison pour laquelle le canal gris
est facile à traiter et nécessite moins de calcul est qu’il il ne contient qu’un seul canal de
noir-blanc.

Maintenant, après avoir converti l’image de RVB en gris, nous allons maintenant
localiser les caractéristiques exactes de notre visage. Voyons comment nous pourrions
implémenter cela dans le code.

Dans ce morceau de code, nous utilisons une fonction intégrée qui s’appelle de-
tectMultiScale et on lui donne en paramètre l’objet dans lequel on a chargé notre image
après avoir été convertie en niveau de gris.

Big Data et reconnaissance des visages 65


CHAPITRE 4. IMPLÉMENTATION ET RÉSULTATS UQTR

Cette fonction nous aidera à trouver les caractéristiques / emplacements de notre


image. On utilisera toutes les fonctionnalités de l’objet f_c pour détecter les fonctionna-
lités de la nouvelle image.

Les paramètres que nous passerons à cette fonction sont :


— La variable d’échelle de gris ;
— scaleFactor, paramètre spécifiant dans quelle mesure la taille de l’image est ré-
duite ;
— minNeighbors, paramètre spécifiant le nombre de voisins que chaque rectangle
candidat doit avoir pour être conservé.
À partir de l’étape ci-dessus, la fonction detectMultiScale renvoie 4 valeurs : co-
ordonnée x, coordonnée y, largeur (w) et hauteur (h) de la caractéristique détectée du
visage. Sur la base de ces 4 valeurs, nous allons dessiner un rectangle autour du visage.

Figure 4.3 – Code pour détecter le visage

Ce bout de code lance la caméra de l’ordinateur et permet de détecter le visage et


enregistrer la séquence vidéo avec le visage détecté ainsi qu’une image du visage.

Big Data et reconnaissance des visages 66


CHAPITRE 4. IMPLÉMENTATION ET RÉSULTATS UQTR

Pour stopper l’exécution du code, nous allons appuyer sur ’q’, et enfin nous libérons
la source avec la cap.relase() et ou.release().

L’algorithme capte bien le flux de la caméra et parvient parfaitement à détecter le


visage.

Nous avons la sortie du programme ci-dessus sous forme de vidéo afin de détecter
le visage devant la caméra :

Figure 4.4 – Détection de visage

La détection de visage est généralement utilisée comme une étape de pré-


traitement pour trouver des régions qui sont potentiellement des visages et des membres
humains dans les images.

Big Data et reconnaissance des visages 67


CHAPITRE 4. IMPLÉMENTATION ET RÉSULTATS UQTR

Figure 4.5 – Détection de plusieurs visages

Bien que le classificateur haarcascade soit assez utile, cette approche présente peu
d’inconvénients.

La partie la plus difficile étant de spécifier avec précision la valeur des paramètres
de scaleFactor et minNeighbors de la fonction detectMultiScale. Il est assez courant de
se heurter à des scénarios dans lesquels nous devons régler les deux paramètres image
par image, ce qui est un gros problème lorsqu’il s’agit d’un cas d’utilisation de détection
d’image.

4.2.2 Reconnaissance de visage

Cette partie consiste à faire la reconnaissance du visage détecté auparavant à l’aide


des caractéristiques Haar et de l’algorithme Adaboost.

D’abords on utilise le fichier Haar Cascade Classifier créé pour détecter tous les
visages dans les images de la base de données à l’aide de la fonction os.walk() qui parcoure
tout le répertoire des images qui est sous forme d’une arborescence.

Big Data et reconnaissance des visages 68


CHAPITRE 4. IMPLÉMENTATION ET RÉSULTATS UQTR

Figure 4.6 – Les caractéristiques Haar

Ensuite on construit deux tableaux, le premier contient l’ensemble de photos et le


deuxième contient l’identité de chaque personne qui est le nom du répertoire. S’il y a des
images dans le répertoire, on va récupérer le nom du dossier contenant l’image, donc par
exemple on pourra être dans le répertoire images/soukaina_alaoui ce qu’on veux comme
nom ou identité,c’est juste soukaina_alaoui, donc à l’aide de la fonction split() on pourra
fractionner la phrase selon le caractère slash et récupérer que le dernier argument.

Par la suite, on va parcourir tout le tableau files contenant les fichiers afin de récu-
pérer ceux qui se terminent par .png ou .jpg et les stocker dans le tableau des X, si le label
qu’on est en train de traiter est déjà présent dans le tableau, on passe, si ce n’est pas le cas
on l’ajoute tout simplement et enfin on récupère l’ID en fonction du label du nom de la
personne dans mon tableau d’ID et on l’ajoute cette fois-ci au tableau Y qui contient donc
les identités des différents visages, et la boucle nous aide à former deux grands tableaux,
le premier pour stocker l’ID de chacune des photos et le deuxième stocke l’ensemble des
identités des images.

Enfin on pourra faire l’apprentissage automatique, l’entrainement se base sur les


deux tableaux présentés ci-dessus et il est important que ces deux tableaux aient le même
nombre d’éléments, et on lance notre recognizer.train() afin de générer un fichier entrainé
qui va nous permettre de reconnaitre les visages et les identifier par la suite.

Le code suivant présente la partie de la génération du fichier d’entrainement à


l’aide de l’histogramme LBP :

Big Data et reconnaissance des visages 69


CHAPITRE 4. IMPLÉMENTATION ET RÉSULTATS UQTR

Figure 4.7 – Entrainement avec l’histogramme LBP

Cette technique LBP nous permet de faire l’extraction des caractéristiques des dif-
férentes parties de l’image sélectionnées afin de calculer son histogramme et le comparer
avec les histogrammes des autres images pour pouvoir mesurer la similarité entre elles
et sortir avec un fichier bien entrainé qui peut comparer l’image reçue avec celles dans
la base de données afin de faire l’identification.

Figure 4.8 – Extraction des caractéristiques avec LBP

Big Data et reconnaissance des visages 70


CHAPITRE 4. IMPLÉMENTATION ET RÉSULTATS UQTR

L’idée principale de cette technique et de faire la représentation locale de chaque


pixel de l’image afin d’étudier leurs propriétés et leurs caractéristiques. Comme on peut
voir dans la figure ci-dessus, la technique LBP détecte les bords, les lignes, les taches, les
contours et les structures planes qui peuvent être mesurés et estimés par un histogramme
afin de le comparer par d’autres histogrammes dans le but de calculer la similarité et d’en
déduire s’il s’agit de la personne à identifier ou pas.

4.3 Expérimentation

D’abord, nous allons prendre un exemple simple qui est de faire la classification
entre deux visages, une méthode très simple est de calculer leurs motifs binaires locaux
ensuite les histogrammes normalisés de ces derniers.

Pour cela, nous prenons deux images de la même personne et la troisième image
sera d’une personne différente. Pour classifier ces images, nous devons mesurer la si-
milarité entre les deux images qui représente la même classe et l’image différente, et
ce à l’aide de la différence euclidienne entre leurs histogrammes normalisés des motifs
binaires locaux. La figure suivante montre l’expérimentation de cette technique.

Big Data et reconnaissance des visages 71


CHAPITRE 4. IMPLÉMENTATION ET RÉSULTATS UQTR

Figure 4.9 – Histogramme LBP et la mesure de similarité

Comme nous pouvons voir les histogrammes des images de Soukaina se res-
semblent avec une distance euclidienne proche de 0, par contre l’histogramme de Justin
est clairement différent et la mesure de dissimilitude est élevée, donc nous pouvons dire
que le calcul de la distance euclidienne entre les histogrammes des images nous aide à dé-
terminer si les visages se ressemblent et s’il s’agit de la même personne, cette technique
est efficace et nous donne des résultats précis avec un coût optimal.

Cette partie indique que les expériences exécutées correspondent aux perfor-
mances de l’algorithme de motifs binaires locaux de reconnaissance faciale appliqué
dans ce système. Il est nécessaire de décrire les conditions expérimentales qui doivent
être acceptables pour le système proposé. Ainsi, les expériences proposées doivent être
exécutées en changeant certains facteurs qui sont significatifs dans la méthode d’appren-
tissage et de reconnaissance du système, comme la position du visage, l’éclairage...

Pour tester cette approche de reconnaissance faciale en utilisant les motifs binaires
locaux et voir sa précision, l’auteur de ce mémoire s’est placée devant la caméra avec des

Big Data et reconnaissance des visages 72


CHAPITRE 4. IMPLÉMENTATION ET RÉSULTATS UQTR

photo de plusieurs personnes publiques et nous avons été reconnus par le système, et en
temps réel, comme le montre la figure 4.10 suivante :

Figure 4.10 – Reconnaissance faciale

Afin de mettre en place l’implémentation de cette approche de reconnaissance fa-


ciale, nous avons réalisé une application avec Python et openCV pour faciliter la mani-
pulation et l’utilisation du code.

Pour réaliser une interface graphique avec python afin de présenter l’application à
l’écran pour l’utilisateur, il faut utiliser la bibliothèque tkinter [3]. La bibliothèque tkinter
permet de construire une interface graphique contenant des boutons, des zones de texte
et plusieurs outils graphiques pour permettre aux utilisateurs la possibilité d’avoir une
application facile à manipuler et d’utiliser les fonctionnalités offertes sans avoir à saisir
ou comprendre les lignes de code.

L’interface graphique de notre application de reconnaissance de visage est très


simple, elle contient des boutons d’interaction, pour effectuer plusieurs tâches telles que
la reconnaissance faciale l’enregistrement de la vidéo d’identification du visage et la

Big Data et reconnaissance des visages 73


CHAPITRE 4. IMPLÉMENTATION ET RÉSULTATS UQTR

sauvegarde d’une photo du visage identifié, et du texte explicatif, elle peut être présentée
comme suit :

Figure 4.11 – Interface graphique

Le bouton Reconnaissance de visage lance la caméra et exécute le programme de


détection et de reconnaissance de visage,

Le bouton Ouvrir permet d’ouvrir la photo ou la vidéo capturée du visage identifié


à partir du répertoire dans lequel l’image ou la vidéo de la personne reconnue a été
enregistrée.

Le bouton Quitter permet de quitter l’application.

Big Data et reconnaissance des visages 74


CHAPITRE 4. IMPLÉMENTATION ET RÉSULTATS UQTR

4.4 Résultats et perspectives

D’après ce qui précède, nous observons que cette méthode est assez simple en
terme d’extraction des motifs binaires locaux et donne des résultats satisfaisants en terme
de temps et de précision. Les résultats produits par le prototype développé montrent
qu’une personne peut être détectée et reconnue en quelques fractions de secondes et en
temps réel.

On peut donc croire, que nous avons obtenu de bons résultats à partir de diverses
analyses expérimentales de cette technique, ils fournissent également des résultats ac-
ceptables pour l’occlusion, la variation de pose et l’illumination.

Figure 4.12 – Reconnaissance faciale avec éclairage faible

La vraie variation de pose se produit lorsque la position du sujet est à un angle


différent par rapport à la caméra, et le système peut reconnaître le visage même si dans
l’ensemble de données, seules les images frontales sont stockées comme indiqué dans
la figure 4.10. Plusieurs chercheurs [19] [2] ont obtenu de bons résultats même avec
différentes déviations angulaires et à différentes résolutions en utilisant cette approche.

Big Data et reconnaissance des visages 75


CHAPITRE 4. IMPLÉMENTATION ET RÉSULTATS UQTR

Figure 4.13 – Reconnaissance faciale avec différentes déviations angulaires

Comme illustré ci-dessus, le test a été fait avec trois variations angulaires diffé-
rentes, une à environ 30° à gauche, la deuxième c’est une position frontale face et la
troisième à environ 30° à droite et on obtient toujours le même résultat, qui est l’identi-
fication de la personne en temps réel.

Cependant, comme tout système de reconnaissance faciale, on peut remarquer des


imperfections, à chaque fois que l’éclairage de la pièce était insuffisant, le taux de recon-
naissance diminuait, puisqu’il y avait un nombre important de faux positifs. Un autre
défi était celui du matériel, la reconnaissance faciale nécessitant un matériel informa-
tique performant et plus particulièrement une caméra haute définition avec une haute
résolution.

Figure 4.14 – Reconnaissance faciale avec éclairage insuffisant

Big Data et reconnaissance des visages 76


CHAPITRE 4. IMPLÉMENTATION ET RÉSULTATS UQTR

La précision de cette approche est d’une valeur plus que 80% avec une résolution
faible de l’image. Les auteurs de [19] ont eu une précision de 78.4%, on peut obtenir de
meilleurs résultats avec une haute résolution d’image et une base de données volumi-
neuse.

Figure 4.15 – Précision de la méthode LBPH

De plus, le nombre d’images par personne dans la base de données de l’ensemble


d’apprentissage ayant des variations de pose et d’éclairage plus diverses joue un rôle
essentiel dans la détermination de la précision de la reconnaissance et peut augmenter
la précision et l’efficacité de l’approche.

Comme l’apprentissage automatique est très important de nos jours, il existe de


nombreux domaines où ce travail peut être étendu.

Le système développé pourrait identifier les visages humains en temps réel et être
intégré à Google Maps comme exemple d’application, pour suivre n’importe quel sujet
d’intérêt. En outre, les systèmes de reconnaissance faciale peuvent également être utilisés
dans le développement de systèmes de présence automatisés et pour enquêter sur des
activités criminelles.

Big Data et reconnaissance des visages 77


CHAPITRE 4. IMPLÉMENTATION ET RÉSULTATS UQTR

4.5 Conclusion générale


La technologie de reconnaissance faciale a parcouru un long chemin au cours des vingt
dernières années. Aujourd’hui, les machines sont capables de vérifier automatiquement
les informations d’identité pour les transactions sécurisées, pour les tâches de sur-
veillance et de sécurité, pour le contrôle d’accès aux bâtiments etc. Ces applications
fonctionnent généralement dans des environnements contrôlés et les algorithmes de re-
connaissance peuvent tirer parti des contraintes environnementales pour obtenir une
grande précision de reconnaissance . Cependant, les systèmes de reconnaissance faciale
de nouvelle génération vont avoir une application généralisée dans les environnements
intelligents - où les ordinateurs et les machines ressemblent davantage à des assistants
utiles.
Pour atteindre cet objectif, les ordinateurs doivent être capables d’identifier de manière
fiable les personnes à proximité d’une manière qui s’inscrit naturellement dans le schéma
des interactions humaines normales. Ils ne doivent pas nécessiter d’interactions particu-
lières et doivent se conformer aux intuitions humaines sur le moment où la reconnais-
sance est probable. Cela implique que les futurs environnements intelligents devraient
utiliser les mêmes modalités que les humains et présenter à peu près les mêmes limites.
Ces objectifs semblent maintenant atteints - cependant, des recherches substantielles
restent à faire pour que la technologie de reconnaissance des personnes fonctionne de
manière fiable, dans des conditions très variables en utilisant des informations prove-
nant de modalités uniques ou multiples.

Big Data et reconnaissance des visages 78


CHAPITRE 4. IMPLÉMENTATION ET RÉSULTATS UQTR

4.6 Annexe 1 : Détection de visage

1 i m p o r t numpy a s np
2 import cv2
3 import p i c k l e
4

6 cap = c v 2 . V i d e o C a p t u r e ( 0 )
7 f _ c = c v 2 . C a s c a d e C l a s s i f i e r ( "D : / c a n a d a / MAITRISE / p r o j e t E i g e n F a c e /
d a s a r _ h a a r t r a i n / d a s a r _ h a a r t r a i n / myhaar . xml " )
8 r e c o g n i z e r = cv2 . f a c e . LBPHFaceRecognizer_create ( )
9 r e c o g n i z e r . r e a d ( " t r a i n e r . yml " )
10 labels ={}
11 w i t h open ( " l a b e l s . p i c k l e " , ’ r b ’ ) a s f :
12 og_labels = pickle . load ( f )
13 l a b e l s = { v : k for k , v in og_labels . items ( ) }
14

15 d e f manup ( ) :
16 f o u r c c = c v 2 . V i d e o W r i t e r _ f o u r c c ( ∗ ’ MJPG ’ )
17 w i d t h = i n t ( cap . g e t ( c v 2 . CAP_PROP_FRAME_WIDTH ) + 0 . 5 )
18 h e i g h t = i n t ( cap . g e t ( c v 2 . CAP_PROP_FRAME_HEIGHT ) + 0 . 5 )
19 s i z e = ( width , h e i g h t )
20 o u t = c v 2 . V i d e o W r i t e r ( ’D : / c a n a d a / MAITRISE / p r o j e t E i g e n F a c e /
c a p t u r e D e t e c t i o n . a v i ’ , f o u r c c , 2 0 . 0 , ( i n t ( cap . g e t ( 3 ) ) , i n t ( cap . g e t
(4) ) ) )
21 b= True
22 w h i l e b== True :
23 b , image = cap . r e a d ( )
24 i f b== True :
25 i m a g e _ g r a y = c v 2 . c v t C o l o r ( image , c v 2 . COLOR_BGR2GRAY )
26 f a c e s = f _ c . d e t e c t M u l t i S c a l e ( i m a ge _ g r a y , 1 . 3 , 2 )
27 f o r ( x , y , h , w) i n f a c e s :
28 c v 2 . r e c t a n g l e ( image , ( x , y ) , ( x+w, y+h ) , ( 2 5 5 , 0 , 0 ) , 2 )
29 v i s a g e D e t e c t e d = i m a g e _ g r a y [ y : y+h , x : x+w]
30 id_ , conf = r e c o g n i z e r . p r e d i c t ( v i s a g e D e t e c t e d )
31 i f c o n f >=45 and c o n f < = 8 5 :
32 f o n t = c v 2 . FONT_HERSHEY_SIMPLEX
33 name= l a b e l s [ i d _ ]
34 color= (255 ,255 ,255)
35 p r e c i s i o n = f l o a t ( " { 0 : . 2 f } " . format ( ( 1 0 0 ∗ ( 1 − (
conf ) / 3 0 0 ) ) ) )
36 a c c . append ( p r e c i s i o n )
37 print ( precision )

Big Data et reconnaissance des visages 79


CHAPITRE 4. IMPLÉMENTATION ET RÉSULTATS UQTR

38 stroke= 2
39 c v 2 . p u t T e x t ( image , name , ( x , y ) , f o n t , 1 ,
c o l o r , s t r o k e , c v 2 . LINE_AA )
40 i m g _ e l e m e n t = " m o n _ v i s a g e . png "
41 c v 2 . i m w r i t e ( i m g _ e l e m e nt , v i s a g e D e t e c t e d )
42 c v 2 . imshow ( " s o u k a i n a f a c e r e c o g n i t i o n " , image )
43 o u t . w r i t e ( c v 2 . c v t C o l o r ( i m a g e _ gr a y , c v 2 .
COLOR_GRAY2BGR ) )
44 p a t h = ’D : / c a n a d a / MAITRISE / p r o j e t E i g e n F a c e /
capturePhoto . jpg ’
45 c v 2 . i m w r i t e ( path , i m a g e _ g r a y )
46 i f c v 2 . w a i t K e y ( 1 0 ) == o r d ( ’ q ’ ) :
47 break
48 cap . r e l e a s e ( )
49 out . r e l e a s e ( )
50 cv2 . destroyAllWindows ( )
51 return 0
52

53 manup ( )

Big Data et reconnaissance des visages 80


CHAPITRE 4. IMPLÉMENTATION ET RÉSULTATS UQTR

4.7 Annexe 2 : Reconnaissance et identification

1 import os
2

3 import cv2
4 i m p o r t numpy a s np
5 from P I L i m p o r t Image
6 import p i c k l e
7

8 BASE_DIR= o s . p a t h . d i r n a m e ( o s . p a t h . a b s p a t h ( _ _ f i l e _ _ ) )
9 i m a g e _ d i r = o s . p a t h . j o i n ( BASE_DIR , " i m a g e s " )
10 f a c e s _ c a s c a d e = c v 2 . C a s c a d e C l a s s i f i e r ( "D : / c a n a d a / MAITRISE /
p r o j e t E i g e n F a c e / d a s a r _ h a a r t r a i n / d a s a r _ h a a r t r a i n / myhaar . xml " )
11 r e c o g n i z e r = cv2 . f a c e . LBPHFaceRecognizer_create ( )
12

13 c u r r e n t _ i d =0
14 label_ids ={}
15 y_labels = []
16 x_train = []
17

18 f o r r o o t , d i r s , f i l e s i n o s . walk ( i m a g e _ d i r ) :
19 for f i l e in f i l e s :
20 i f f i l e . e n d s w i t h ( " png " ) o r f i l e . e n d s w i t h ( " j p g " ) o r f i l e .
e n d s w i t h ( " j p e g " ) o r f i l e . e n d s w i t h ( " PNG " ) :
21 path =os . path . j o i n ( root , f i l e )
22 l a b e l = o s . p a t h . basename ( r o o t ) . r e p l a c e ( " " , " − " ) . l o w e r ( )
23 i f not l a b e l in l a b e l _ i d s :
24 l a b e l _ i d s [ l a b e l ]= c u r r e n t _ i d
25 c u r r e n t _ i d +=1
26 id_ = l a b e l _ i d s [ l a b e l ]
27 p i l _ i m a g e = Image . open ( p a t h ) . c o n v e r t ( " L " )
28 size= (550 ,550)
29 f i n a l _ i m a g e = p i l _ i m a g e . r e s i z e ( s i z e , Image . ANTIALIAS )
30 i m a g e _ a r r a y = np . a r r a y ( f i n a l _ i m a g e , " u i n t 8 " )
31 f a c e s = f a c e s _ c a s c a d e . d e t e c t M u l t i S c a l e ( image_array ,
s c a l e F a c t o r = 1 . 5 , minNeighbors =5)
32

33 f o r ( x , y , w, h ) i n f a c e s :
34 r o i = i m a g e _ a r r a y [ y : y+h , x : x+w]
35 x _ t r a i n . append ( r o i )
36 y _ l a b e l s . append ( i d _ )
37

38 w i t h open ( " l a b e l s . p i c k l e " , ’wb ’ ) a s f :


39 p i c k l e . dump ( l a b e l _ i d s , f )

Big Data et reconnaissance des visages 81


CHAPITRE 4. IMPLÉMENTATION ET RÉSULTATS UQTR

40

41 r e c o g n i z e r . t r a i n ( x _ t r a i n , np . a r r a y ( y _ l a b e l s ) )
42 r e c o g n i z e r . s a v e ( " t r a i n e r . yml " )

Big Data et reconnaissance des visages 82


CHAPITRE 4. IMPLÉMENTATION ET RÉSULTATS UQTR

4.8 Annexe 3 : Interface graphique

1 import t k i n t e r
2 from t k i n t e r i m p o r t ∗
3 import cv2
4 from P I L i m p o r t Image , ImageTk
5 from t k i n t e r i m p o r t f i l e d i a l o g
6 i m p o r t numpy a s np
7 from t k i n t e r i m p o r t mess age box
8 import t k i n t e r as tk
9 import s h u t i l , os
10 import subprocess
11 import customtkinter
12 import t k i n t e r
13 import sys
14 import os
15 from t k i n t e r i m p o r t t t k
16

17 c u s t o m t k i n t e r . s e t _ a p p e a r a n c e _ m o d e ( " System " ) # O t h e r : " L i g h t " , " Dark


"
18 PATH = o s . p a t h . d i r n a m e ( o s . p a t h . r e a l p a t h ( _ _ f i l e _ _ ) )
19

20

21 c l a s s App ( c u s t o m t k i n t e r . CTk ) :
22

23 APP_NAME = " A p p l i c a t i o n de d e t e c t i o n de v i s a g e "


24 WIDTH = 7 0 0
25 HEIGHT = 5 0 0
26

27 d e f _ _ i n i t _ _ ( s e l f , ∗ a r g s , ∗ ∗ kwargs ) :
28 s u p e r ( ) . _ _ i n i t _ _ ( ∗ a r g s , ∗ ∗ kwargs )
29

30

31 s e l f . t i t l e ( App . APP_NAME )
32 s e l f . g e o m e t r y ( s t r ( App . WIDTH ) + " x " + s t r ( App . HEIGHT ) )
33 s e l f . m i n s i z e ( App . WIDTH , App . HEIGHT )
34

35 s e l f . p r o t o c o l ( "WM_DELETE_WINDOW" , s e l f . o n _ c l o s i n g ( ) )
36 i f s y s . p l a t f o r m == " d a r w i n " :
37 s e l f . b i n d ( " <Command−q> " , s e l f . o n _ c l o s i n g ( ) )
38 s e l f . b i n d ( " <Command−w> " , s e l f . o n _ c l o s i n g ( ) )
39 s e l f . createcommand ( ’ t k : : mac : : Q u i t ’ , s e l f . o n _ c l o s i n g ( ) )
40

Big Data et reconnaissance des visages 83


CHAPITRE 4. IMPLÉMENTATION ET RÉSULTATS UQTR

41 # ============ c r e a t e two CTkFrames ============


42 imagee = Image . open ( "D : / c a n a d a / MAITRISE / p r o j e t E i g e n F a c e / f o n d
. j p g " ) . r e s i z e ( ( s e l f . WIDTH , s e l f . HEIGHT ) )
43 s e l f . bg_image = ImageTk . P h o t o I m a g e ( imagee )
44 s e l f . image_label = t k i n t e r . Label ( master= s e l f )
45 s e l f . i m a g e _ l a b e l . p l a c e ( r e l x = 0 . 5 , r e l y = 0 . 5 , anchor= t k i n t e r .
CENTER )
46 s e l f . i m a g e _ l a b e l = t k i n t e r . L a b e l ( m a s t e r = s e l f , image = s e l f .
bg_image )
47 s e l f . i m a g e _ l a b e l . p l a c e ( r e l x = 0 . 5 , r e l y = 0 . 5 , anchor= t k i n t e r .
CENTER )
48 s e l f . f r a m e _ l e f t = c u s t o m t k i n t e r . CTkLabel ( m a s t e r = s e l f ,
borderwidth=" 2 " , r e l i e f =" ra ise d " , h i g h l i g h t c o l o r =" black " ,
h i g h l i g h t t h i c k n e s s =1 ,
49 width =200 , b g _ c o l o r
= ’ black ’ ,
50 h e i g h t =App . HEIGHT
−40
51 )
52 s e l f . f r a m e _ l e f t . p l a c e ( r e l x = 0 . 3 2 , r e l y = 0 . 5 , anchor= t k i n t e r . E )
53

54 s e l f . f r a m e _ r i g h t = c u s t o m t k i n t e r . CTkLabel ( m a s t e r = s e l f ,
borderwidth=" 2 " , r e l i e f =" ra ise d " , h i g h l i g h t c o l o r =" black " ,
h i g h l i g h t t h i c k n e s s =1 ,
55 width =420 ,
56 h e i g h t =App . HEIGHT
−40 , bg_color = ’ black ’
57 )
58 s e l f . f r a m e _ r i g h t . p l a c e ( r e l x = 0 . 3 6 5 , r e l y = 0 . 5 , anchor= t k i n t e r .
W)
59

60 # ============ f r a m e _ l e f t ============
61

62 s e l f . b u t t o n _ 1 = c u s t o m t k i n t e r . CTkButton ( m a s t e r = s e l f .
frame_left ,
63 text =" Detection " ,
64 command= s e l f .
detection ,
65 border_width =0 ,
f g _ c o l o r = ’ # B6B7B6 ’ , b g _ c o l o r = ’ b l a c k ’ ,
66 corner_radius =8)
67 s e l f . b u t t o n _ 1 . p l a c e ( r e l x = 0 . 5 , y = 1 8 0 , a n c h o r = t k i n t e r . CENTER )
68

69 s e l f . b u t t o n _ 2 = c u s t o m t k i n t e r . CTkButton ( m a s t e r = s e l f .

Big Data et reconnaissance des visages 84


CHAPITRE 4. IMPLÉMENTATION ET RÉSULTATS UQTR

frame_left ,
70 t e x t = " Ouvrir photo " ,
71 command= s e l f . o u v r i r ,
72 border_width =0 ,
f g _ c o l o r = ’ # B6B7B6 ’ , b g _ c o l o r = ’ b l a c k ’ ,
73 corner_radius =8)
74 s e l f . b u t t o n _ 2 . p l a c e ( r e l x = 0 . 5 , y = 2 3 0 , a n c h o r = t k i n t e r . CENTER )
75

76 s e l f . b u t t o n _ 3 = c u s t o m t k i n t e r . CTkButton ( m a s t e r = s e l f .
f r a m e _ l e f t , f g _ c o l o r = ’ # B6B7B6 ’ , b g _ c o l o r = ’ b l a c k ’ ,
77 t e x t = " Ouvrir Video " ,
78 command= s e l f . v i d e o ,
79 border_width =0 ,
80 corner_radius =8)
81 s e l f . b u t t o n _ 3 . p l a c e ( r e l x = 0 . 5 , y = 2 8 0 , a n c h o r = t k i n t e r . CENTER )
82

83

84 # ============ f r a m e _ r i g h t ============
85

86

87 # ============ f r a m e _ r i g h t ============
88

89 s e l f . l a b e l _ i n f o _ 1 = c u s t o m t k i n t e r . CTkLabel ( m a s t e r = s e l f .
frame_right ,
90 text = " Detection
de v i s a g e \ n " +
91 " utilisant
le fichier \n" +
92 " Haar
Cascade p e r s o n a l i s e " ,
93 width =250 ,
94 height =100 ,
95 corner_radius =20 ,
bg_color= ’ black ’ ,
96 f g _ c o l o r =( " #
B6B7B6 " ) , # <− custom t u p l e − c o l o r
97 justify=tkinter .
CENTER )
98

99 s e l f . l a b e l _ i n f o _ 1 . p l a c e ( r e l x = 0 . 5 , r e l y = 0 . 0 5 , anchor= t k i n t e r .
N)
100 s e l f . l a b e l _ i n f o _ 2 = c u s t o m t k i n t e r . CTkLabel ( m a s t e r = s e l f .
frame_right ,
101 t e x t = " Charger l ’

Big Data et reconnaissance des visages 85


CHAPITRE 4. IMPLÉMENTATION ET RÉSULTATS UQTR

image " ,
102 width =250 ,
103 height =250 ,
104 corner_radius
=110 , bg_color = ’ black ’ ,
105 f g _ c o l o r =( " #
B6B7B6 " ) ,
106

107 # <− custom t u p l e


−color
108 justify=tkinter .
CENTER )
109 s e l f . l a b e l _ i n f o _ 2 . p l a c e ( r e l x = 0 . 5 , r e l y = 0 . 3 5 , anchor= t k i n t e r .
N)
110

111

112

113 # ============ f r a m e _ r i g h t <− ============


114

115

116 s e l f . b u t t o n _ 5 = c u s t o m t k i n t e r . CTkButton ( m a s t e r = s e l f .
frame_right ,
117 height =25 ,
118 text=" Quitter " ,
119 command= s e l f .
terminer_click ,
120 border_width =0 ,
bg_color= ’ black ’ ,
121 c o r n e r _ r a d i u s =8 ,
f g _ c o l o r = ’ # B6B7B6 ’ )
122 s e l f . button_5 . p l a c e ( r e l x = 0 . 5 0 , r e l y = 0 . 9 5 , anchor= t k i n t e r .
CENTER )
123

124

125

126

127 def detection ( s e l f ) :


128 s u b p r o c e s s . Popen ( " C : / U s e r s / hp / P y c h a r m P r o j e c t s / p y t h o n P r o j e c t 1
/ D e t e c t i o n C o d e . py " , s h e l l = True )
129

130

131 def ouvrir ( s e l f , event =0) :


132 g l o b a l my_image
133 s e l f . f i l e n a m e = f i l e d i a l o g . a s k o p e n f i l e n a m e ( i n i t i a l d i r = "D : /

Big Data et reconnaissance des visages 86


CHAPITRE 4. IMPLÉMENTATION ET RÉSULTATS UQTR

c a n a d a / MAITRISE / p r o j e t E i g e n F a c e / " ,
134 filetypes =[( ’
Picture F i l e s ’ , ’ ∗ . jpg ’ ) ] )
135 my_image = ImageTk . P h o t o I m a g e ( Image . open ( s e l f . f i l e n a m e ) .
r e s i z e ( ( ( s e l f . l a b e l _ i n f o _ 2 ) . width , s e l f . l a b e l _ i n f o _ 2 . h e i g h t ) ) )
136

137 m y _ i m a g e _ l a b e l = c u s t o m t k i n t e r . CTkLabel ( m a s t e r = s e l f .
l a b e l _ i n f o _ 2 , c o r n e r _ r a d i u s = 1 0 0 , w i d t h = ( s e l f . l a b e l _ i n f o _ 2 ) . width
, h e i g h t = s e l f . l a b e l _ i n f o _ 2 . h e i g h t , image =my_image )
138 my_image_label . p l a c e ( r e l x = 0 . 5 , r e l y = 0 . 5 , anchor= t k i n t e r .
CENTER )
139 def t e r m i n e r _ c l i c k ( s e l f , event =0) :
140 " " " A f f i c h e un message popup p u i s t e r m i n e l e programme . " " "
141

142 r e p o n s e = mes sag ebox . a s k q u e s t i o n ( ’ Q u e s t i o n ’ , ’ D e s i r e z − vous


vraiment q u i t t e r ? ’ )
143

144 # a s k q u e s t i o n r e t o u r n e ’ y e s ’ ou ’ no ’
145

146 i f r e p o n s e == ’ y e s ’ :
147 self . quit ()
148

149 def video ( s e l f , event =0) :


150 f i l e n a m e = f i l e d i a l o g . a s k o p e n f i l e n a m e ( i n i t i a l d i r = "D : / c a n a d a /
MAITRISE / p r o j e t E i g e n F a c e / " ,
151 f i l e t y p e s = [ ( ’ Video
F i l e s ’ , ’ ∗ . avi ’ ) ])
152

153 print ( filename )


154 cap = c v 2 . V i d e o C a p t u r e ( f i l e n a m e )
155 r e t = True
156 w h i l e r e t == True :
157 r e t , f r a m e = cap . r e a d ( )
158 i f r e t == True :
159 c v 2 . imshow ( ’ f r a m e ’ , f r a m e )
160 i f ( c v 2 . w a i t K e y ( 2 5 0 ) & 0 xFF == o r d ( ’ q ’ ) ) :
161 break
162

163 cap . r e l e a s e ( )
164 cv2 . destroyAllWindows ( )
165

166 def on_closing ( s e l f , event =0) :


167 self . quit ()
168 def s t a r t ( s e l f ) :

Big Data et reconnaissance des visages 87


CHAPITRE 4. IMPLÉMENTATION ET RÉSULTATS UQTR

169 s e l f . mainloop ( )
170 i f __name__ == " __main__ " :
171 app = App ( )
172 app . s t a r t ( )

Big Data et reconnaissance des visages 88


Bibliographie

[1] La belle histoire des révolutions numériques, chapitre : l’inquiétante reconnais-


sance faciale. (2) :340.
[2] Pratik Nimbal Gopal Krishna Shyam Abhishek Pratap Singh, SunilKumar S Manvi.
Face recognition system based on lbph algorithm.
[3] Justin Bleich Abraham J. Wyner, Matthew Olson. Explaining the success of ada-
boost and random forests as interpolating classifiers.
[4] Loubna BEDOUI. Authentification de visages par la méthode d’analyse discrimi-
nante linéaire de fischer. (6) :22.
[5] David CristinacceTim Cootes. Facial feature detection using adaboost with shape
constraints.
[6] Gabriel Cormier. Chapitre 11. logique floue. page 2.
[7] J G Daugman. Computer science tripos : 16 lectures.
[8] C.N Ravi2 Dr C.Sunil Kumar1 and J.Dinesh3. Human facerecognition and detection
system with genetic and ant colonyoptimization algorithm iosr journal of computer
engineering.
[9] Dr.Bharati. Image classification process.
[10] Rahmita Wirza O.K. Rahmat Elham Bagherian. Facial feature extraction for face
recognition : a review.
[11] Hazem M. El-Bakry Mohy A. Abo Elsoud. Human face recognition using neural
networks.
[12] Fayaz Ali Dharejo Abddul Ghaffar Hira Memon Farah Deeba1, Aftab Ahmed. Lbph-
based enhanced real-time face recognition.
[13] Robert E. Schapire Yoav Freund. Boosting foundations and algorithms.
[14] Daniel Gutierrez. Where are we with computer vision ?
[15] S. Rankov J. Novakovic. Classification performance using principal component
analysis and different value of the ratio r.

89
BIBLIOGRAPHIE UQTR

[16] V. Kruger Jim Gemmell, Kentaro ToyamaK. Hierarchical wavelet networks for facial
feature localization.
[17] Takeo Kanade Jing XiaoS. BakerIain Matthews. Real-time combined 2d+3d active
appearance models.
[18] J. Kittler K. Jonsson, J. Matas and Y.P. Li. Learning support vectors for face verifi-
cation and recognition (2000).
[19] Semih Aslan2 Kamal Chandra Paul1. An improved real-time face recognition sys-
tem at low resolution based on local binary pattern histogram algorithm and clahe.
[20] Ashu Kumar · Amandeep Kaur · Munish Kumar. Face detection techniques : a
review.
[21] Norbert Krüger Christoph von der Malsburg Laurenz Wiskott, Jean-Marc Fellous.
Face recognition by elastic bunch graph matching.
[22] Gary B. Huang Erik Learned-Miller. Labeled faces in the wild : Updates and new
reporting procedures. Technical Report UM-CS-2014-003, University of Massachu-
setts, Amherst, May 2014.
[23] S. Marcel. A symmetric transformation for lda-based face verification.
[24] Dhia Alzubaydi Mohamed Husein*. Mobile face recognition application using eigen
face approaches. (4).
[25] Yeon-Sik Ryu Se-Young Oh. Automatic extraction of eye and mouth fields from a
face image using eigenfeatures and multilayer perceptrons.
[26] MÂENPÂÂ T. OJALA T., PIETIKÂINEN M. Multiresolution gray-scale and rotation
invariant texture classification with local binary patterns. 24(7) :971–987.
[27] David Kriegman Peter N. Belhumeur Joao P. Hespanha. Face recognition : Eigen-
faces vs. fish-erfaces : Recognition using class specific projection.
[28] Dr. John Fernandez Phillip Ian Wilson. Facial feature detection using haar classi-
fiers.
[29] H. A. Rowley and T. Kanade. Neural network - based face detection.
[30] Marc SILANUS. Reconnaissance faciale par eigenfaces. (7).
[31] Simon Baker Terence Sim and Maan Bsat. The cmu pose, illumination, and expres-
sion (pie) database of human faces.
[32] Christopher J Taylor Timothy F. CootesGareth J. Edwards. Active appearance mo-
dels.
[33] M. Turk and A. Pentland. Eigenfaces for recognition,.

Big Data et reconnaissance des visages 90


BIBLIOGRAPHIE UQTR

[34] Rituparna Jb Tushar Aggrawalb K N Balasubramanya Murthya S Natarajanb Vi-


nay Aa, Vinay S Shekhara. Cloud based big data analytics framework for face
recognition in social networks using machine learning. (3).
[35] Paul Viola and Michael Jones. Rapid object detection using a boostedcascade of
simple features.
[36] N. Vandenbroucke A. Ahmad et D. Hamad W. Ben Soltana, A. Porebski. Contribu-
tion des descripteurs de texture lbp à la classification d’images de dentelles. page 3.
[37] J. Kittler Y. Li and J. Matas. On matching scores of lda-based face verification.
[38] Sheng Zhang and Matthew Turk. Eigenfaces. (5).

Big Data et reconnaissance des visages 91

Vous aimerez peut-être aussi