Académique Documents
Professionnel Documents
Culture Documents
DEPARTEMENT INFORMATIQUE
Elaboré par :
Bâ Ahmed
Encadré par :
Année Universitaire :
1
Dédicace
« Louange à Dieu tout puissant, qui m’a permis de voir ce jour tant attendu
A mes très chers parents, BA Djibril Ifra et Aissata Harouna Diallo qui m’ont toujours servi de
modèle et d’exemple, pour leurs prières ininterrompues, leurs sacrifices et leurs patiences
sans réserves durant toutes ces années. Merci pour votre disponibilité énorme, vos conseils
incontournables et tout le mal qu’ils continu de se donner pour mon accomplissement. Que
Qu’ALLAH vous couvre de grâce accompagné de longévité jusqu'à la récolte des fruits de vos
efforts.
A ma grande sœur Bouya Djibril Bâ et mon grand frère Mouhamedoun Djibril Bâ et mes
petits frères et sœurs. Merci pour vos encouragements sans limite et l’intérêt qu’ils portent à
ma réussite. Je prie Dieu pour que vos chemins soient comblés de succès.
A toute la famille Pambinabé Sans votre soutien, jamais ce travail ne serait réalisé et qu’il soit
l’exaucement de vos vœux tant avancés. »
Ahmed Bâ
2
Remerciement
Nous tenons à remercier et à exprimer notre profond respect à tous ceux qui ont contribué de
près ou de loin à la réussite de ce projet. Et plus particulièrement :
Nous exprimons notre profonde gratitude envers Madame Bensalem Raja, notre encadrante
universitaire à Institut Supérieur des Sciences Appliquées et de Technologie de Sousse
(ISSATSO), pour ses conseils, sa patience et son assistance qui n’a pas cessé de nous orienter
tout au long du projet.
Nous remercions, également, Monsieur Houssem Ben Khalfallah notre encadrant
professionnel et madame Mariem Jelassi, le chef de la direction (CEO) au sein de THIS, pour
nous avoir donné l’opportunité de faire ce projet et pour l’effort qu’ils ont épargné pour nous
guider.
Nous remercions également le président de Jury ainsi que le rapporteur d'avoir accepté d'évaluer
notre travail.
Enfin, nous ne manquerons pas d’exprimer nos remerciements à tous nos enseignants à
L’ISSATSO.
3
Table des matières
Introduction générale ................................................................................................................ 10
Chapitre 1 Etude du projet ....................................................................................................... 11
1.1 Introduction .................................................................................................................... 12
1.2 Présentation de l’organisme d’accueil ............................................................................ 12
1.3 Analyse de l’existant ...................................................................................................... 13
1.3.1 Etude de l’existant ................................................................................................... 13
1.3.2 Critique de l’existant ............................................................................................... 14
1.3.3 Notre solution .......................................................................................................... 15
1.4 Méthodologie et langage de modélisation adoptés......................................................... 15
1.4.1 Etude de la méthode agile ....................................................................................... 15
1.4.2 Langage adopté : UML ........................................................................................... 16
Chapitre 2 Etat de l’art ............................................................................................................. 18
2.1-Introduction .................................................................................................................... 19
2.2-Généralités ..................................................................................................................... 19
2.2.1 Termes du domaine d’étude .................................................................................... 19
2.2.2 Méthodes d’apprentissage automatique .................................................................. 20
2.2.3- Réseau de neurones artificiels ................................................................................ 21
2.4. Types de réseaux de neurones les plus populaires ........................................................ 24
2.4.1. Les réseaux de neurones récurrents ........................................................................ 24
2.4.2Les réseaux de neurones convolutifs ........................................................................ 25
2.5. Bibliothèques les plus populaires .................................................................................. 27
2.5.1 TensorFlow.............................................................................................................. 27
2.5.2.Keras ........................................................................................................................ 28
4
2.5.3 OpenCv.................................................................................................................... 29
3-Les algorithmes de détection faciale ................................................................................. 29
3.1. Définition de détection faciale (de faces ou de visages) ........................................... 29
3.2. Définition de vision par ordinateur (Computer vision) ............................................. 29
3.3.1. OpenCv haarcascade .............................................................................................. 30
3.3.2. MTCNN ................................................................................................................. 30
4-La détection des émotions ................................................................................................. 31
4.1 Définition des émotions faciale .................................................................................. 31
4.2. Modèles pré-entraînés pour la classification d'images .............................................. 34
4.2.1 Apprentissage par transfert (Transfert Learning) ................................................... 34
Conclusion ........................................................................................................................ 37
Chapitre 3 Sprint zéro .............................................................................................................. 38
3.1 Introduction .................................................................................................................... 39
3.2 la démarche suivie .......................................................................................................... 39
3.2.1 Explication de la démarche : ................................................................................... 39
3 .3 Spécification des besoins .............................................................................................. 40
3.3.1 Acteurs du projet ..................................................................................................... 40
3.3.2 Besoins fonctionnels ............................................................................................... 40
3.3.3 Besoin non fonctionnels .............................................................................................. 41
3.3.4 Diagramme de cas d’utilisation global .................................................................... 41
3.4 Conception architecturale ............................................................................................... 42
3.4.1 Structure architecturale ........................................................................................... 42
3.4.2 Pattern architectural................................................................................................. 43
3.5 Gestion du projet avec SCRUM ..................................................................................... 44
3.5.1 L’équipe de développement .................................................................................... 44
3.5.2 Le backlog du produit ............................................................................................. 44
3.5.3 Découpage du projet................................................................................................ 45
3.6 Conclusion ...................................................................................................................... 45
Chapitre 4 Sprint 1 ................................................................................................................... 46
4.1 Introduction .................................................................................................................... 47
4.2 Spécifications fonctionnelles.......................................................................................... 47
4.2.1 Classification des cas d’utilisation par acteur ......................................................... 47
4.2.2 Diagramme de cas d’utilisation ............................................................................... 48
4.2.3 Description textuelle des cas d’utilisations ............................................................. 48
4.3 Conception des cas d’utilisations ................................................................................... 49
5
4.3.1 Diagrammes de Séquence Système ......................................................................... 49
4.4- Diagramme de Classe du SPRINT 1 ............................................................................. 52
4.5 Codage ............................................................................................................................ 53
4.5.1 Tableau de la base de données ................................................................................ 53
4.6 Développement et Test ................................................................................................... 53
4.7 Conclusion ...................................................................................................................... 55
Chapitre 5 Sprint 2 ................................................................................................................... 56
5.1 Introduction .................................................................................................................... 57
5.2 Spécifications fonctionnelles.......................................................................................... 57
5.2.1 classification des cas d’utilisation par acteur .......................................................... 57
5.2.2 Diagramme de cas d’utilisation ............................................................................... 58
5.3 Conception des cas d’utilisation ..................................................................................... 59
5.3.1 Diagramme de séquences système .......................................................................... 59
5.4 –Diagramme de classes du Sprint 2 ............................................................................... 64
5.5 Codage ............................................................................................................................ 64
5.6 Test ................................................................................................................................. 65
5.7 Conclusion ...................................................................................................................... 67
Chapitre 6 Environnement logiciel et matériel ....................................................................... 68
6.1 Introduction .................................................................................................................... 69
6.2 Environnement de travail ............................................................................................... 69
6.2.1 Matériels utilisés ..................................................................................................... 69
6.2.2 Logiciels utilisés ...................................................................................................... 69
6.2.3 langages et frameworks adoptés .............................................................................. 70
6.3 Conclusion ...................................................................................................................... 71
Conclusion générale ................................................................................................................. 72
6
Table des figures
Figure 1. 1 Logo de l’organisme d’accueil .............................................................................. 12
Figure 1. 2 zoom....................................................................................................................... 13
Figure 1. 3 Google Meet .......................................................................................................... 14
Figure 1. 4 Diagramme UML ................................................................................................... 17
Figure 1. 5 langage de modélisation UML [6] ......................................................................... 16
7
Figure 5. 3 Diagramme de séquences système du cas « Capturer image » dans vidéo ............ 61
Figure 5. 4 Diagramme de séquence système du cas « capturer image » dans session ........... 61
Figure 5. 5 Diagramme de séquence système de cas « corriger émotion ................................. 62
Figure 5. 6 Diagramme de séquences du cas « Charger images » ........................................... 63
Figure 5. 7 Diagramme de classe du Sprint 2 .......................................................................... 64
Figure 5. 8 Interfaces de chargement d’images à partir d’une vidéo ....................................... 65
Figure 5. 9 Interface de chargement d’images séparées ........................................................... 66
Figure 5. 10 Interface rejoindre session ................................................................................... 67
8
Liste des tableaux
Table 1. 1 - Tableau comparatif de Zoom et Google Meet ...................................................... 14
9
Introduction générale
Les émotions sont vitales. Elles permettent d’améliorer la communication entre les humains,
assurer une meilleure compréhension du message véhiculé. Les émotions jouent un rôle
primaire pour la prise des décisions, car elles façonnent la personnalité et influencent les
comportements.
Avec l’évolution de l’intelligence artificielle et ses innovations, les sociétés sont en concurrence
pour intégrer ou créer des applications web utilisant l’intelligence artificielle.
Notre société THIS a décidé alors de créer une application web intégrant l’intelligence
artificielle pour détecter les émotions sur les diffèrent médias visuels.
Notre application permet plus précisément de reconnaitre les émotions faciales dans les vidéos
ou en visioconférence, pour faciliter la tâche des psychologues qui sont obligés de consulter
leurs patients à distance, dû à la situation sanitaire, et d’autre part pour réduire les déplacements
au patient.
Notre rapport est organisé en six chapitres, qui se présentent comme suit :
Chapitre 1 : ce chapitre présente le cadre du projet y compris une présentation de l’organisation
d’accueil à savoir la société THIS, une étude de l’existant pour mieux comprendre le contexte
général de ce projet suivie de l’analyse de l’existant, pour terminer par la méthodologie de
gestion et le langage de modélisation adoptés pour notre projet.
Chapitre 2 : ce chapitre nommé « Etat de l’art » consiste à comprendre la généralité de
l’intelligence artificielle dans un premier temps ensuite à présenter des algorithmes de détection
faciale et dans la dernière partie la détection des émotions faciale.
Chapitre 3 : dans ce chapitre, nous commençons par la description de la démarche suivie,
ensuite la spécification des acteurs et des besoins, pour clôturer par la définition de la
conception architecturale adoptée ainsi que la décomposition des besoins en sprints.
Chapitre 4 : ce chapitre est consacré à l’étude et la réalisation du Sprint 1
Chapitre 5 : ce chapitre est consacré à l’étude et la réalisation du Sprint 2
Chapitre 6 : nous allons présenter dans ce chapitre l’environnement de développement matériel
et logiciel qui a représenté un facteur important pour réaliser notre application.
10
Chapitre 1
Etude du projet
11
1.1 Introduction
Pour ce chapitre, nous allons commencer par la présentation de l’organisme d’accueil, Ensuite
nous allons analyser l’existant de l’environnement actuel afin de trouver des solutions pour
résoudre notre problème et améliorer notre situation.
Enfin, nous allons montrer la méthodologie et le langage de conception adoptés dans notre
projet ce qui nous aiderons à réussir la gestion de notre projet.
« THIS » qui est l’abréviation de « Tech Healthcare Innovation Systems » représente une
startup informatique Tunisienne en phase de pré-label qui développe des solutions
technologiques destinées au secteur de la santé. Sa mission consiste à développer et mettre en
place des solutions digitales répondant aux besoins de ses partenaires afin de faciliter et
d’optimiser son travail au quotidien.
12
1.3 Analyse de l’existant
Quand un psychologue fixe un rendez-vous avec un patient, il peut le consulter dans une
clinique ou hôpital…
Avec l’émergence des nouvelles technologies, les rendez-vous de consultation peuvent se
passer en ligne avec des outils de visioconférence. Nous citons parmi ces outils :
Zoom : est un outil de visioconférence professionnel de référence sur le marché. La technologie
Zoom permet de créer des réunions en ligne, proposer une assistance technique, organiser des
webinaires en vidéo, créer des salles de conférences et discuter par écrit grâce à une messagerie
instantanée. [1]
Figure 1. 2 zoom
Google Meet : autrefois appelé Hangouts Meet, est le service de visioconférence de Google
conçu pour les professionnels. Il permet aux entreprises d’organiser des vidéoconférences
facilement. La création de réunions est facilitée, tout comme l’invitation : il suffit de transmettre
un lien généré automatiquement. Les participants ont juste besoin de posséder un compte
Google. [2]
13
Figure 1. 3 Google Meet
En revanche ces outils ne sont pas la meilleure solution pour les Psychologues qui souhaitent
rencontrer leurs patients via vidéoconférence.
14
1.3.3 Notre solution
Pour résoudre ce problème, nous avons proposé dans le cadre de notre projet de fin d’études,
une solution qui permettra aux clients de rejoindre leur Psychologue à distance sans être obligés
de se déplacer, et qui facilite la tâche des psychologues en détectant automatiquement les
émotions des patients dans une vidéo en temps réel ou en temps différé sur une vidéo déjà
enregistré, et ce en se basant sur des techniques de l’intelligence artificielle.
Avec cette Application web, les psychologues gagneront plus de temps et plus de précision, et
auront une application de visioconférence qui cible leur attentes professionnelles tout en prenant
en compte les circonstances de l’enregistrement vidéo (comme les conditions d’éclairage du
patient et les mouvements continus de son visage, etc.).
15
1.4.2 Langage adopté : UML
Pour concevoir notre système, nous avons choisi UML comme langage de modélisation. Son
logo est présenté par la figure 1.4.
UML est l’abréviation de Unified Modeling Language, c’est-à-dire « Langage unifié pour la
modélisation ». C’est une notation graphique destinée à la création de modèles orientés-objet.
Ce n’est pas une méthode, c’est un ensemble d’outils permettant la modélisation des données
et des traitements pour spécifier et construire les différents diagrammes de conception de notre
future application informatique.
Notre choix s’est basé sur les points forts de ce langage notamment la simplicité de comprendre
sa façon de conception par tout type d’utilisateur, la facilité de maintenance des diagrammes
existants par d’autres développeurs externes et sa standardisation. La figure suivante illustre
les différents diagrammes qu’il propose :
16
Figure 1. 5 Diagramme UML
17
Chapitre 2
Etat de l’art
2.1-Introduction .................................................................................................................... 19
2.2-Généralités ..................................................................................................................... 19
2.2.1 Termes du domaine d’étude .................................................................................... 19
2.2.2 Méthodes d’apprentissage automatique .................................................................. 20
Apprentissage supervisé ............................................................................................... 20
Apprentissage non supervisé ........................................................................................ 20
Apprentissage semi supervisé ...................................................................................... 20
Apprentissage par renforcement ................................................................................... 21
2.2.3- Réseau de neurones artificiels ................................................................................ 21
Structure d’un réseau de neurones artificiels ............................................................... 22
La fonction d’activation ............................................................................................... 22
2.4. Types de réseaux de neurones les plus populaires ........................................................ 24
2.4.1. Les réseaux de neurones récurrents ........................................................................ 24
2.4.2Les réseaux de neurones convolutifs ........................................................................ 25
2.5. Bibliothèques les plus populaires .................................................................................. 27
2.5.1 TensorFlow.............................................................................................................. 27
2.5.2.Keras ........................................................................................................................ 28
2.5.3 OpenCv.................................................................................................................... 29
3-Les algorithmes de détection faciale ................................................................................. 29
3.1. Définition de détection faciale (de faces ou de visages) ........................................... 29
3.2. Définition de vision par ordinateur (Computer vision) ............................................. 29
3.3.1. OpenCv haarcascade .............................................................................................. 30
3.3.2. MTCNN ................................................................................................................. 30
4-La détection des émotions ................................................................................................. 31
4.1 Définition des émotions faciale .................................................................................. 31
4.2. Modèles pré-entraînés pour la classification d'images .............................................. 34
4.2.1 Apprentissage par transfert (Transfert Learning) ................................................... 34
4.2.2 Meilleurs modèles pré-entraînés ......................................................................... 34
VGG-16 ........................................................................................................................ 34
Inception V3 ................................................................................................................. 34
ResNet 50 ..................................................................................................................... 35
EfficientNet .................................................................................................................. 35
Conclusion ........................................................................................................................ 37
18
2.1-Introduction
Ce chapitre a pour but dans un premier temps à l’exposition de la définition de l’intelligence
artificielle, suivie des algorithmes des détections des visages. Dans un second temps, nous
présentons les méthodes d’extractions des émotions faciales. Enfin, quelques bases de données
utilisées pour la détection automatique des émotions faciales
2.2-Généralités :
Nous allons voir la généralité de l’intelligence artificielle.
19
2.2.2 Méthodes d’apprentissage automatique
Apprentissage supervisé
La majorité des méthodes d’apprentissage automatique utilisent un apprentissage supervisé
(en anglais « supervised learning »). Ce dernier se base sur des variables d’entrée (x) et une
variable de sortie (Y). On utilise en plus un algorithme pour apprendre la fonction de
mapping de l’entrée à la sortie telle que : Y = f (X)
On traite des problèmes avec l’apprentissage semi-supervisé quand on a une grande quantité
de données d’entrée (X) et que seules certaines données sont étiquetées(Y).
20
D’où ce type de problèmes se situe entre l’apprentissage supervisé et l’apprentissage non
supervisé. Un intérêt provient du fait que l'étiquetage de données nécessite l'intervention d'un
utilisateur humain. Cette opération peut s'avérer fastidieuse lorsque les jeux de données
deviennent très grands. Par exemple : une archive de photos dans laquelle certaines images sont
étiquetées (chien, chat, personne, par exemple) et la plupart ne le sont pas.
Apprentissage par renforcement
21
réseau de neurones peut apprendre à l’ordinateur de reconnaître des objets, et dans ce cas un
grand nombre d’objets de même type est présenté au réseau de neurones, et l’ordinateur
apprendra à reconnaître cet objet sur des nouvelles données tel que les images.
Structure d’un réseau de neurones artificiels
Un réseau de neurones artificiels est composé de neurones complètement reliés entre eux.
On parle du terme « fully connected ». Ces neurones sont répartis en plusieurs couches (en
anglais, layers). Pour chaque couche, ces neurones sont connectés aux neurones de la
couche suivante et de la couche précédente. La figure 2.2 illustre l’architecture générale
d’un réseau de neurones artificiels.
Dans la figure ci-dessus, sa première couche, étant la couche d’entrée (en anglais, input
layer) représente les données d’entrée dans le réseau de neurones. La dernière couche, étant
la couche de sortie (en anglais, output layer) récupère les résultats de l’entrainement. Les
couches au milieu permettent d’effectuer les calculs d’entrainement. On n’a pas accès à ces
couches, c’est pourquoi on les appelle les couches cachées (en anglais, hidden layers).
La fonction d’activation
Une fonction d’activation est une fonction mathématique utilisée sur un signal. Elle va
reproduire le potentiel d’activation que l’on retrouve dans le domaine de la biologie du
cerveau humain. Elle va permettre le passage d’information ou non de l’information si le
seuil de stimulation est atteint. Concrètement, elle va avoir pour rôle de décider si on active
ou non une réponse du neurone. Un neurone ne va faire qu’appliquer la fonction suivante :
X = ∑ (entrée * poids) + biais
C’est sur cette sortie que la fonction d’activation va s’appliquer [6].
Voici quelques exemples de fonctions d’activation
Sigmoid (logistic) : C’est la fonction la plus populaire depuis des décennies. Mais
aujourd’hui, elle devient beaucoup moins efficace par rapport à d’autres pour une
22
utilisation au niveau des couches cachées. En effet, elle perd de l’information due à
une saturation que cela soit pour la phase de propagation avant ou rétropropagation
(feed forward ou de backpropagation en anglais), en donnant des effets non linéaires
au réseau à cause d’un paramètre unique [7].
Propagation avant : C'est l'étape de prédiction. Nous envoyons une donnée à notre
réseau et il essaie de prédire la classe de sortie. Des informations, des valeurs et des
sommes sont échangées entre chaque neurone et chaque couche. Les données
circulent de la couche d'entrée vers la couche de sortie.
Rétropropagation : C'est la phase d'apprentissage. Après avoir transmis une
donnée à travers notre réseau, nous obtiendrons un résultat sur la prédiction. C'est
pourquoi le premier entraînement est souvent erroné, car les poids et les biais du
réseau sont initialisés aléatoirement et seront mis à jour lors de l'entraînement via ce
processus.
Son domaine est l'ensemble de tous les nombres réels et sa plage est (0, 1). Par
conséquent, l'entrée de la fonction est soit un très grand nombre négatif, soit un très
grand nombre positif, la sortie est toujours comprise entre 0 et 1. Il en va de même
pour tout nombre compris entre -∞ et +∞ [8].
La figure suivante montre la courbe mathématique de cette fonction :
1 (1)
F(x) = 1+𝑒−𝑥
23
Figure 2. 4 fonction relu
F (X1, X2) = W1 X1 + W2 X2 +b
A = Relu(F)
En général, les réseaux de neurones sont classifiés en fonction du nombre d’épaisseurs qui
séparent l’entrée de données de la production du résultat, en fonction du nombre des couches
cachées ou encore en du nombre d’entrées et de sorties de chaque couche. Voici les types de
réseaux de neurones les plus populaires :
2.4.1. Les réseaux de neurones récurrents (RNN, recurrent neural network) : Ils
sont principalement utilisés pour la reconnaissance vocale et le traitement automatique du
langage naturel.
Dans un RNN, les informations parcourent une boucle. Lorsqu'il prend une décision, il
considère l'entrée actuelle et aussi ce qu'il a appris des entrées qu'il a reçues précédemment.
Par conséquent, un RNN a deux entrées : le présent et le passé récent. Ceci est important car
la séquence de données contient des informations cruciales sur ce qui va suivre, c'est pourquoi
un RNN peut faire des choses que d'autres algorithmes ne peuvent pas faire.
24
Figure 2. 5 réseau de neurones récurrent
La couche de convolution : les couches de convolution analyse l’image par zone. Elles
se focalisent sur chaque partie de la donnée.
25
Max pooling : Le MaxPooling prend en entrée des échantillons pour en extraire la valeur
max. Il garde seulement les informations importantes.
Figure 2. 7 max_pooling
Voici un bref aperçu sur les architectures CNN les plus populaires en fonction de leur
performance.
26
Figure 2. 8 comparatif des CNN
Jusqu’à maintenant on a abordé les CNN d’une manière théorique, et donc pour les utiliser,
on a besoin des outils pour implémenter les algorithmes CNN, afin d’appliquer les modèles
sur des images et des vidéos de notre choix.
Pour se faire on utilisera les bibliothèques suivantes : TensorFlow, Keras et OpenCv.
27
Figure 2. 9 TensorFlow
2.5.2.Keras
C’est une API de réseau de neurones écrite en langage Python. Il s’agit d’une bibliothèque
Open Source, exécutée par-dessus des frameworks tels TensorFlow.
Conçue pour être modulaire, rapide et simple d’utilisation, Elle offre une façon simple et
intuitive de créer des modèles de Deep Learning
Keras TensorFlow
Keras est une API de haut niveau qui TensorFlow est un framework qui propose
s'exécute sur TensorFlow des API de haut et de bas niveau .
Obligatoire d’apprendre la syntaxe de
Keras est facile à utiliser si l’on connais le
l'utilisation de diverses fonctions
langage Python.
Tensorflow.
Idéal pour la recherche en apprentissage
Parfait pour des mises en œuvre rapides.
profond, les réseaux complexes.
utilise les outils de visualisation de carte
Utilise un autre outil de débogage d'API.
Tensor pour le débogage.
Il a commencé par François Chollet à partir
d'un projet et développé par un groupe de Il a été développé par l'équipe Google Brain.
personnes.
Écrit en Python, un wrapper pour Theano, Écrit principalement en C++, CUDA et
TensorFlow et CNTK. Python.
Keras a une architecture simple, lisible et
Tensorflow n'est pas très facile à utiliser.
concise.
Dans le framework Keras, il y a un besoin
Il est assez difficile d'effectuer un débogage
très moins fréquent de déboguer des réseaux
dans TensorFlow.
simples.
TensorFlow utilisé pour les modèles hautes
Keras est généralement utilisé pour les petits
performances et les grands ensembles de
ensembles de données.
données.
28
Il est soutenu par une large communauté
Le soutien communautaire est minime.
d'entreprises technologiques.
Table 2. 2 - Comparaison entre Keras et Tensorflow
2.5.3 OpenCv
OpenCv (Open Computer Vision) est une bibliothèque graphique. Elle est spécialisée dans le
traitement d’images, que ce soit pour de la photo ou de la vidéo.
Sa première version est sortie en juin 2000. Elle est disponible sur la plupart des systèmes
d’exploitation et existe pour les langages Python, C++ et Java.
OpenCv fournit un ensemble de plus de 2500 algorithmes de vision par ordinateur,
accessibles au travers d’API
Figure 2. 11 OpenCV
29
3.3. Algorithmes de détection faciale
Voici les modèles de détection faciale les plus populaires :
Open Cv
SSD
Dlib
Mediapipe
RetinaFace
MTCNN
3.3.1. OpenCv haarcascade
Comparé à d'autres détecteurs basés sur le Deep Learning, OpenCV est le détecteur de
visage le plus léger. Il utilise un algorithme de haar-cascade qui n'est pas basé sur des
techniques d'apprentissage en profondeur. C'est pourquoi il est rapide, mais ses
performances sont relativement faibles. Pour qu'OpenCV fonctionne correctement, des
images frontales sont nécessaires. De plus, ses performances de détection des yeux sont
moyennes. Cela provoque des problèmes d'alignement.
3.3.2. MTCNN
Il s'agit d'un détecteur de visage basé sur le Deep Learning, et il est livré avec des repères
faciaux. C'est la raison pour laquelle les scores de détection et d'alignement sont élevés pour
MTCNN. Cependant, il est plus lent qu'OpenCV
Figure 2. 12 MTCNN
Voici une figure comparative entre les modèles opencv_haar et MTCNN en GPU colab
30
Figure 2. 13 comparaison entre openCV, Dlib, MTCNN
31
Figure 2. 14 les émotions faciales
La représentation discrète des émotions est très fréquente dans les systèmes de reconnaissance
automatique.
32
Figure 2. 15 Représentation discrète des émotions
33
4.2. Modèles pré-entraînés pour la classification d'images
Avant de citer les meilleurs modèles pré-entraînés on doit connaitre l’apprentissage par
transfert (Transfert Learning).
VGG-16
VGG16 est un modèle de CNN qui a atteint une précision de de 92.7% dans le tip 5 pendent
le test dans ImageNet, il a remporter la 2ème place de ILSVRC 2014.
Inception V3
Inception V3 est un réseau de neurones convolutif permettant l’analyse d’images et la
détection d’objets. Il est la 3ème édition du réseau de neurones convolutionnels de Google,
présenté lors du défi de reconnaissance ImageNet ILSVRC, il a occupé la première place
en 2014.
34
ResNet 50
ResNet est un réseau de neurones profond caractérisé par l’emploi de connexions saute-
couches, il a remporté la compétition ILSVRC en 2015.
ResNet 50 est le successeur d’autre modèles avec plus de couche, dont la première
s’appelait Residual net ou ResNet.
EfficientNet
EfficientNet est une architecture de réseau neuronal convolutif et une méthode de mise à
l'échelle qui met uniformément à l'échelle toutes les dimensions de
profondeur/largeur/résolution à l'aide d'un coefficient composé.
Le tableau suivant introduit une comparaison entre les différents modèles précèdent
ImageNet est une ensemble de données de plus de 14 millions d’images haute résolution
appartenant à 1000 classes collectées sur le Web.
35
Figure 2. 18 comparaison entre le modèle CNN
36
Conclusion
Dans le présent chapitre, nous avons commencé par une généralité de l’intelligence
artificielle, ensuite exposé les algorithmes de détection des visages et dans un dernier temps
nous avons présenté des algorithmes qui nous permettrons de détecter les émotions dans des
images. Ce chapitre nous a permis de comprendre la voie sur le domaine d’étude ce qui
nous a permis de choisir la démarche à suivre et ça sera l’un des objectifs du chapitre
suivant.
37
Chapitre 3
Sprint zéro
3.1 Introduction .................................................................................................................... 39
3.2 la démarche suivie .......................................................................................................... 39
3.2.1 Explication de la démarche : ................................................................................... 39
3 .3 Spécification des besoins .............................................................................................. 40
3.3.1 Acteurs du projet ..................................................................................................... 40
3.3.2 Besoins fonctionnels ............................................................................................... 40
3.3.3 Besoin non fonctionnels .............................................................................................. 41
3.3.4 Diagramme de cas d’utilisation global .................................................................... 41
3.4 Conception architecturale ............................................................................................... 42
3.4.1 Structure architecturale ........................................................................................... 42
3.4.2 Pattern architectural................................................................................................. 43
3.5 Gestion du projet avec SCRUM ..................................................................................... 44
3.5.1 L’équipe de développement .................................................................................... 44
3.5.2 Le backlog du produit ............................................................................................. 44
3.5.3 Découpage du projet................................................................................................ 45
3.6 Conclusion ...................................................................................................................... 45
38
3.1 Introduction
L’analyse et la spécification des besoins représentent la phase préliminaire du cycle de
développement d’un logiciel. Elle sert à identifier les acteurs réactifs du système et leur associer
chacun l’ensemble d’actions avec lesquelles ils interviennent. Dans ce chapitre, nous allons
précéder par une spécification des besoins auxquels doit répondre l’application, et nous
passerons au conception architecturale enfin la gestion du projet avec SCRUM
39
que notre état de l’art nous a permis de montrer que MTCNN donne les meilleurs résultats, nous
avons décidé de l’adopter pour l’extraction des visages.
La deuxième phase consiste a appliqué un modèle CNN a l’image extrait par le modèle
MTCNN, pour extraire les caractéristiques émotionnelles faciale et en fin faire une prédiction
selon les pourcentages obtenus.
40
- Rejoindre session
- Se déconnecter
41
figure 3. 2 Diagramme de cas d’utilisation global
42
figure 3. 3 l’architecture à 3 niveaux (ou 3-tiers) du système d’information
Comme le montre la figure précédente, l’architecture 3-tiers est définie par les 3 niveaux
suivants :
Niveau I : Il représente la couche de présentation qui correspond à l’interface utilisateur qui
consiste à afficher les données et permet à l’utilisateur final d’interagir avec ces dernières.
Niveau II : Il représente la couche de traitement (ou couche « métier » ) qui réalise
l’implémentation des règles métiers et des contrôles nécessaires des données
Niveau III : Il concerne la couche d’accès aux données qui assure la persistance des données
qui doivent être conservées.
43
3.5 Gestion du projet avec SCRUM
Cette partie consiste à élaborer trois élément principaux du SCRUM, à savoir l’équipe de
développement, le backlog du produit et le découpage du projet.
3.5.1 L’équipe de développement
Le Product Owner : son rôle principal est la représentation officielle du client au sein d’un
projet. Nous parlons alors du responsable de développement et d’évolution du projet.
Le Scrum Master : c’est la personne responsable de l’organisation des actions et des tâches,
tout le long du cycle de développement, donc nous pouvons dire qu’il facilite la
communication entre les membres de l’équipe et avec le product owner dansle but
d’améliorer la productivité au sein du projet.
Scrum Team : Nous parlons de toute personne responsable du développement, du testet de
la réalisation du projet comme le designer, le programmeur, etc.
44
4 Créer compte 4 En tant que patient, Elevée
je peux créer un compte
5 Rejoindre session 5 En tant que patient ou psychologue, je Elevée
peux rejoindre une session
6 Déconnection 6 En tant que utilisateur je peux me
déconnecter
Table 3. 1 - Le backlog du produit
Sprint 1 Authentification
Créer compter
Rejoindre session
Se déconnecter
Sprint 2 Charger vidéo
Charger image
Capturer image
Corrigé émotion
Table 3. 2 - Découpage du projet
3.6 Conclusion
Dans ce chapitre, nous avons mis les premiers pas de notre application qui consiste à la précision
des besoins fonctionnels et non fonctionnels de l’application sous une méthodologie bien
déterminée dans le but d’améliorer la productivité du projet en évitant les risques des fautes,
tout en gardant les objectifs du client. Dans le chapitre suivant, nous allons décrire les
fonctionnalités du Sprint 1 et son déroulement avec les diagrammes UML.
45
Chapitre 4
Sprint 1
4.1 Introduction .................................................................................................................... 47
4.2 Spécifications fonctionnelles.......................................................................................... 47
4.2.1 Classification des cas d’utilisation par acteur ......................................................... 47
4.2.2 Diagramme de cas d’utilisation ............................................................................... 48
4.2.3 Description textuelle des cas d’utilisations ............................................................. 48
4.3 Conception des cas d’utilisations ................................................................................... 49
4.3.1 Diagrammes de Séquence Système ......................................................................... 49
4.4- Diagramme de Classe du SPRINT 1 ............................................................................. 52
4.5 Codage ............................................................................................................................ 53
4.5.1 Tableau de la base de données ................................................................................ 53
4.6 Développement et Test ................................................................................................... 53
4.7 Conclusion ...................................................................................................................... 55
46
4.1 Introduction
Dans ce chapitre, nous allons aborder les fonctionnalités et les tâches qui consistent à créer le
compte d’un patient ce qui lui permettra de rejoindre une session de visioconférence, avec un
psychologue déjà authentifier.
ID UserStory ID tâche tâche
1 En tant qu’utilisateur je peux 1.A Faire les diagrammes de cas
m’authentifier afin d’accéder au d’utilisation et de séquences de la
site fonctionnalité « S’authentifier »
47
4.2.2 Diagramme de cas d’utilisation
Dans ce diagramme, nous déterminerons les fonctions du système avec lesquelles les
psychologues et le patient interviennent.
Une fois l’authentification est terminée, le psychologue ou le patient peut accéder à son
interface d’accueil.
48
Tableau descriptif du cas « Créer un compte »
Cas d’utilisation Créer Compte
Acteurs Patient
Pré-condition La patient visite le site
Post-Condition Compte patient créé
Scénario principal 1- Le patient clique sur créer un compte
2- Le système redirige le patient vers la page d’inscription.
3- Le patient fournit ses données et clique sur le bouton
« s’inscrire ».
4- Le système vérifie les données saisies.
5- Le patient un message de succès d’inscription
6- S’il y a des données saisie incorrecte retour à l’étape 3
Table 4. 4 – Tableau descriptif du cas « Créer compte »
49
Le patient ou le psychologue doit insérer ses données de connexion (le login et le mot de
passe) et déterminer son profil (s’il est patient ou psychologue) pour accéder à son propre
interface d’accueil.
Le patient doit s’inscrire en fournissant son nom, email et mot de passe pour avoir un
compte. Le système va vérifier les données avant de les envoyer à la base de données.
50
Figure 4. 3 Diagramme de séquence système du cas « Créer compte »
51
Figure 4. 4 Diagramme de séquence système de cas « rejoindre session »
52
4.5 Codage
4.5.1 Tableau de la base de données
Attributs Type Contraintes
id Int Primary Key
nom Varchar(100) -
Email Varchar(100) -
Mot de passe Varchar(100) -
Table 4.6 Table 4. 6 – Table « Psychologue »
L’interface d’authentification
53
Figure 4. 7 Interface d’accueil du psychologue
54
Figure 4. 8 Interface d’inscription d’un patient
4.7 Conclusion
Dans ce chapitre, nous avons fait la description des fonctionnalités du Sprint 1, nous
avons dressé quelques diagrammes UML y compris les diagrammes de séquences
ainsi que les diagrammes de cas d’utilisation des différentes fonctionnalités du
premier Sprint 1. Enfin nous avons réalisé et testé les fonctionnalités requises. Le
chapitre suivant aura l’objet de la description conceptuelle et textuelle des cas
d’utilisation du Sprint 2 de notre projet.
55
Chapitre 5
Sprint 2
56
5.1 Introduction
Après avoir terminé le Sprint 1, nous allons déterminer les tâches du Sprint 2 qui consiste à
charger des images et des vidéos, capturer des images, corriger des émotions. Le Sprint Backlog
du Sprint 2 se présente dans le tableau ci-dessous comme suit :
ID UserStory ID tâche Tâche
1 En tant que psychologue, je peux 1.A Faire les diagrammes de cas
charger une vidéo d’utilisation, puis de
séquences de la fonctionnalité
« Charger vidéo »
1.B Développer le cas « Charger
vidéo »
1.C Tester le cas « Charger
vidéo »
2 En tant que psychologue, je peux 2.A Faire le diagramme de
charger des images séquence de la fonctionnalité
« Charger image »
2.B Développer le cas « charger
image »
2.C Tester le cas « Charger
image »
3 En tant que psychologue, je peux 3.A Faire le diagrammes de
capturer une image séquences de la fonctionnalité
« Capturer image »
3.B Développer le cas «Capturer
image »
4 En tant que psychologue, je peux corriger 4.A Faire le diagramme de cas
les émotions d’utilisation, puis de
séquences de la fonctionnalité
« Corriger émotion »
4.B Développer le cas « Corriger
émotion »
4.C Tester le cas « Corriger
émotion »
Table 5. 1 - Le backlog du deuxième sprint
57
5.2.2 Diagramme de cas d’utilisation
Dans ce diagramme nous montrons les fonctions du patient et le psychologue que nous
parviendrons à réaliser à la fin du Sprint 2.
Le psychologue a la possibilité de charger des images, capturer des images soit dans une vidéo
ou dans une session de visioconférence
Tableau Descriptif de cas « Charger vidéo »
58
6- Le système commence à détecter les émotions s’il termine la
détection des visages
Le psychologue peut importer une vidéo vers son espace de travail afin d’analyser les
émotions contenues dans la vidéo.
59
Figure 5. 2 Diagramme de séquences système du cas « Charger vidéo »
Une fois le psychologue a chargé une vidéo, le système commence à prédire des émotions
relatives à cette vidéo. Si le psychologue remarque que le système a fait de fausses
prédictions, il peut capturer des images de ces fausses prédictions.
60
Figure 5. 3 Diagramme de séquences système du cas « Capturer image » dans vidéo
Figure 5.4 Diagramme de séquence système du cas « capturer image » dans session
61
Figure 5. 5 Diagramme de séquence système de cas « corriger émotion
62
Figure 5. 6 Diagramme de séquences du cas « Charger images »
63
5.4 –Diagramme de classes du Sprint 2
5.5 Codage
Tableau de la base de données
64
5.6 Test
Nous sommes aux dernières phases du Sprint 2. Ces phases consistent à développer les
fonctionnalités et assurer le bon fonctionnement du système. Les interfaces suivantes
représentent le résultat de ces phases :
Interface de chargement d’image vidéos
65
Figure 5. 9 Interface de chargement d’images séparées
66
Figure 5. 10 Interface rejoindre session
5.7 Conclusion
Dans ce chapitre, nous avons réalisé le dernier Sprint de notre projet. Nous avons débuté
par présenter son backlog produit, ensuite nous avons fourni une description textuelle de ses
différents besoins fonctionnels en présentant les acteurs participants et les scénarios relatifs.,
Par la suite, nous avons illustré les diagrammes de cas d’utilisation et de séquences pour ce
Sprint ce qui nous a permis d’aboutir au codage et au test de ses fonctionnalités. Le chapitre
suivant donnera une idée sur l’environnement matériel et l’environnement logiciel qui ont aidé
à ce que notre projet voit le jour.
67
Chapitre 6 Environnement
logiciel et matériel
68
6.1 Introduction
Dans ce chapitre nous allons exposer le matériel utilisé ainsi que les logiciels utilisés et en fin
les langages adoptés
69
double licence GPL et propriétaire. C'est
l'un des logiciels de gestion de base de
données les plus utilisés au monde
Postman C’est un outil de développement api qui
encapsule plusieurs fonctionnalités. Il
nous permet de gérer et tester nos API
RES
Table 6. 2 - Les environnements logiciels utilisées
6.3 Conclusion
Ce chapitre présente la phase de clôture de notre rapport dont nous avons cité les logiciels et
les langages utilisés. Ces outils nous ont apporté de nouvelles compétences à notre formation
universitaire.
71
Conclusion générale
En se basant sur le concept qui indique que l’intelligence artificielle nous a permis de faire
plusieurs tâches à la place des humains et que les visioconférences sont indispensables dans
notre vie actuelle, nous avons pu combiner ces deux atouts pour créer une application de
visioconférence qui vas aider les psychologues à prendre des décisions selon les émotions des
patients qu’ils consultent en visioconférence.
Pour ce faire, nous avons commencé par la présentation de l’organisme d’accueil THIS où nous
avons effectué notre stage. Nous passé à l’établissement d’une étude du projet en général
comportant l’étude de l’existant, le critique de l’existant, et la proposition de notre solution sans
oublier de fixer la méthodologie de gestion et le langage de modélisation adoptés. Notre projet
ne fait pas partie d’une simple application de gestion ordinaire, mais en plus d’une application
de recherche scientifique. Cela nous a poussé à faire un bref aperçu sur un domaine important
de l’intelligence artificielle à savoir la détection faciale et la détection des émotions sans
négliger l’étude des algorithmes de Deep Learning adoptés.
Une fois, l’environnement de recherche a été compris, nous avons présenté la démarche de
détection d’émotions que nous avons suivies. Nous avons également déterminé nos besoins
fonctionnels et non fonctionnels et le rôle de chaque acteur. Nous avons pu appliquer la
méthodologie Scrum en regroupant ces besoins dans des sprints d’une façon significative. Pour
chaque sprint, nous avons décrit textuellement la spécification des besoins, puis abouti
successivement aux phases de conception, de codage et finalement de test. Le travail obtenu
était encourageant et a répondu aux attentes de la société d’accueil THIS. Dans cette société,
nous avons appris l’esprit de groupe et les techniques de communication dans un monde
professionnel vu que notre travail représente un module dans une grande application.
Grâce à ce projet, nous avons en plus découvert un environnement logiciel professionnel et
polyvalent ainsi que de nouvelles bases de données images pertinentes.
72
Référence
- [1] https://www.blogdumoderateur.com/tools/zoom/
- [2] https://www.blogdumoderateur.com/tools/google-hangouts-meet/
- [3] https://www.slideshare.net/ChaymaMghazli/mthode-dagile-scrum-
49631404?ref=&smtNoRedir=1
- [4] https://docplayer.fr/6338906-Developpement-d-une-application-web-pour-la-gestion-
bancaire.html
- [5] https://www.college-de-france.fr/site/stephane-mallat/Introduction-aux-reseaux-de-
neurones-profonds.html
- [6] https://deeplylearning.fr/cours-theoriques-deep-learning/fonction-dactivation/
- [7] https://deeplylearning.fr/cours-theoriques-deep-learning/fonction-dactivation/
- [8] https://neuroconnection.eu/une-introduction-douce-a-la-fonction-sigmoide/
- [9] https://www.journaldunet.fr/web-tech/guide-de-l-intelligence-artificielle/1501861-
tensorflow-tout-savoir-sur-la-plateforme-de-deep-learning-de-
google/#:~:text=TensorFlow%20est%20une%20biblioth%C3%A8que%20open,'intelligence%2
0artificielle%20(IA)
- [10] https://datascientest.com/keras
- [11] https://blogdummi.fr/dossier/architecture-mvc-diviser-pour-mieux-developper/
- [12] https://www.supinfomaroc.com/blog/larchitecture-mvc/
73