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

Rapport Final

Transféré par

hajar khindouf
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 DOCX, PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
27 vues93 pages

Rapport Final

Transféré par

hajar khindouf
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 DOCX, PDF, TXT ou lisez en ligne sur Scribd

Remerciements

Je tiens à présenter mes remerciements dans un premier temps à


toute l’équipe pé- dagogique du master Traitement intelligent des
systèmes (Intelligent processing systems IPS) pour avoir assuré la partie
théorique de cette formation et plus particulièrement notre responsable
de formation M. Abdellah EL IDRISSI pour son aide, son suivi, ses
recommandations et le temps qu’il nous’a consacré.

Je souhaite également adresser mes remerciements spéciaux à Mme


Manar ABOU- RIZQ qui n’a pas épargné d’effort au profit de notre
formation et de nous faire part de son expérience et son savoir Abondant.

Sans oublier Mademoiselle ZRIRA Nabila, pour son spécial style de


formation, très captivant et détaillé, et qui m’a donné vraiment l’envie de
travailler sur un thème pareil dans la discipline du Deep learning, elle
avait un rôle important dans mon choix.

Je ne peux pas faire passer ce travail sans présenter mes sincères


sentiments de respect et de remerciement à ma chef de service au
ministère de la santé, qui m’a toujours soutenu et m’a donné le temps et
le support pour pouvoir compléter mon travail, ainsi que l’ensemble de
l’équipe du service, et plus spécialement Madame Fatiha EL MANSOURI,
qui effectuait souvent mon travail pour me fournir le temps convenable
pour travailler au projet de fin d’études.

Je tiens aussi à adresser mes remerciements à mes parents qui m’ont


toujours soutenu, et supporté, et n’ont jamais manqué de confiance en
moi, et à mes compétences, et mon aptitude à compléter mon travail.

Et enfin, je présente mes plus profonds remerciements à ma précieuse


perle, ma femme, qui m’a accompagné par ses encouragements et soutien
durant toute la phase de formation et le déroulement de ce travail.

i
Abstract

The fashion industry, and the textile industry, is a huge economic


sector, which requires more and more technical and technological
development.

Thus, fashion consumers, have the need to manage their acquisitions


and their articles, for this few applications to the general public offer this
kind of services, which allows users the control of their goods and to the
companies the visibility of preferences of the masses, for a common
interest.

For this, the solution we provide is to design an application that


manages the wardrobe, namely the clothing items of a person, and to
collect the information and analyze it in order to generate knowledge
with fashion data thus advising the user in a relevant way of what to
wear

Our project will focus on the heart of the application, an algorithm


based on deep learning techniques, which is based on an image to provide
information on what kind of clothing exists in said image, in addition to a
CSP model that will describe how one can generate clothing
combinations worthy of being worn.

Keywords : Deep Learning, VGG16, CSP, FSR, Fashion

iii
TABLE DES MATIÈRES

INTRODUCTION GÉNÉRALE....................................................................................................................5

CHAPITRE 1 : REVUE DE LITTÉRATURE....................................................................................................7

« L’INTELLIGENCE ARTIFICIELLE ET SES ENJEUX DANS L’INDUSTRIE DE LA MODE ».................................7

INTRODUCTION.............................................................................................................................................................8
I. DÉFINITION DE L’INTELLIGENCE ARTIFICIELLE..............................................................................................................9
.1 Définition....................................................................................................................................................9
1. Les volets de l’intelligence artificielle..........................................................................................................10
2. Historique de l’intelligence artificielle.........................................................................................................11
3. Secteur d’usage de l’intelligence artificielle................................................................................................12
II. LA VISION PAR ORDINATEUR.................................................................................................................................14
1. Définition..................................................................................................................................................14
2. Les cas d’usage de la vision par ordinateur................................................................................................14
a. Reconnaissance optique de caractères.................................................................................................................15
b. Reconnaissance faciale..........................................................................................................................................16
c. Le secteur industriel..............................................................................................................................................16
3. Les défis de la vision par ordinateur.........................................................................................................19
a. Simuler la vision humaine intelligente...................................................................................................................19
b. Problème de chevauchement d’objets et angle de vision.......................................................................................19
III. MACHINE LEARNING ET DEEP LEARNING.................................................................................................................20
1. Machine learning......................................................................................................................................20
2. Deep learning...........................................................................................................................................21
a. Définition............................................................................................................................................................... 21
b. Importance du deeplearning.................................................................................................................................23
c. Types de réseaux de neurones..............................................................................................................................23
IV. CSP : CONSTRAINTS SATISFACTION PROBLEMS........................................................................................................25
1. Définition..................................................................................................................................................25
2. Quand utiliser les CSP...............................................................................................................................25
3. Les consistances d’un CSP...........................................................................................................................26

CHAPITRE 2.........................................................................................................................................27

« PRÉSENTATION DU PROJET ET ÉTUDE DU BESOIN »..........................................................................27

INTRODUCTION........................................................................................................................................................... 28
I. ETUDE DE L’EXISTANT.........................................................................................................................................29

1|Page
1. L’IA au service de l’entreprise......................................................................................................................29
2. L’IA au service du consommateur de la mode............................................................................................29
II. PROBLÉMATIQUE............................................................................................................................................... 30
III. SOLUTION PROPOSÉES........................................................................................................................................ 31
IV. SPÉCIFICATIONS FONCTIONNELLES..........................................................................................................................32
1. Fonctionnalités du projet..........................................................................................................................32
a. Capacité de prendre une photo............................................................................................................................32
b. Capacité de se connecter à un serveur..................................................................................................................32
c. Ajouter, modifier et afficher les articles................................................................................................................32
d. Classification des vêtements à base d’une image....................................................................................................33
e. Proposition de tenues...........................................................................................................................................33
2. Parties prenantes du projet......................................................................................................................33
V. SPÉCIFICATIONS TECHNIQUES................................................................................................................................33
1. Besoins de maintenance...........................................................................................................................34
2. Besoins techniques....................................................................................................................................34
a. Big Data................................................................................................................................................................. 34
1. Hadoop............................................................................................................................................................34
2. Apache Kafka...................................................................................................................................................35
3. Apache Spark...................................................................................................................................................36
L’écosystème de Spark...................................................................................................................................................37
4. Apache Hive.....................................................................................................................................................38
b. Langage de programmation..................................................................................................................................39
1. Python..............................................................................................................................................................40
CONCLUSION..............................................................................................................................................................40

CHAPITRE 3.........................................................................................................................................41

« CONCEPTION ET MÉTHODOLOGIE DE TRAVAIL »..............................................................................41

INTRODUCTION........................................................................................................................................................... 42
MÉTHODOLOGIE DE TRAVAIL.........................................................................................................................................42
CONCEPTION DES FONCTIONNALITÉS................................................................................................................................42
1. Use cases..................................................................................................................................................42
2. Base de données.......................................................................................................................................43
3. Problème de satisfaction des contraintes.................................................................................................45
A. L’énoncé...................................................................................................................................................................45
B. Ensemble des variables.........................................................................................................................................46
C. Les domaines de définition des variables..............................................................................................................46
D. Les contraintes......................................................................................................................................................47

2|Page
1. Les relations d’implication..................................................................................................................................49
2. Inégalités..........................................................................................................................................................50
3. Dans la liste......................................................................................................................................................50
CONCLUSION..............................................................................................................................................................52

CHAPITRE 4.........................................................................................................................................53

« EXÉCUTION ET ÉVALUATION DU TRAVAIL »......................................................................................53

INTRODUCTION........................................................................................................................................................... 54
1. MÉTHODES ET TECHNOLOGIES..............................................................................................................................54
1. Bibliothèques Python................................................................................................................................54
E. Tensorflow............................................................................................................................................................ 54
F. Keras..................................................................................................................................................................... 55
G. Numpy.................................................................................................................................................................. 56
H. Matplotlib..............................................................................................................................................................57
2. Outils employés........................................................................................................................................58
A. Anaconda..............................................................................................................................................................59
Navigateur Anaconda......................................................................................................................................................60
B. Jupyter.................................................................................................................................................................. 61
3. VGG16...................................................................................................................................................... 62
a. Architecture de VGG16:........................................................................................................................................63
b. Avantages..............................................................................................................................................................64
c. Inconvénients........................................................................................................................................................64
4. Deep learning pour la classification d’images............................................................................................64
d. Préparation des données......................................................................................................................................65
e. Description du modèle..........................................................................................................................................66
f. Chargement du Dataset , et extraction des données............................................................................................67
g. Apprentissage par transfert de VGG16.................................................................................................................72
h. L’évaluation du modèle sur des nouvelles images................................................................................................75
i. Evaluation du modèle sur une image du test........................................................................................................76
j. Calcul de nombres des images mal classées..........................................................................................................77
k. Évaluation du modèle à l'aide d'un ensemble de données aléatoire.....................................................................78
l. Améliorer les performances du réseau.................................................................................................................79
m. Conclusion.............................................................................................................................................................82

CONCLUSION GÉNÉRALE......................................................................................................................84

RÉFÉRENCES........................................................................................................................................86

WEBOGRAPHIE........................................................................................................................................................... 86

3|Page
Liste des figures :

Figure 1 : Les différentes disciplines de l’intelligence artificielle

Figure 2 : Chronologie du développement de l’intelligence artificielle

Figure 3 : Reconnaissance optique de caractères

Figure 4 : Les différents types d’apprentissage machine

Figure 5 : Imbrication du deeplearning au sein du machine learning

Figure 6 : Comparaison entre DL et ML en fonction de performances

Figure 7 : Structure d’un réseau de neurones artificiel

Figure 8 : Exemple de réseau de

neurones Figure 9 : L’Ecosystem de

Hadoop Figure 10 : Archtecture de

Kafka

Figure 11 : Archtecture de Spark

Figure 12 : Ecosystème de Spark

Figure 13 : Architecture et composants de Hive

Figure 14 : Diagramme use case de l’application

Figure 15 : Diagramme de classe de la base de données

Figure 16 : Quelques graphes de Matplotlib

Figure 17 : Configuration de l’ordinateur utilisé pour ce travail

Figure 18 : L’intergace graphique d’Anaconda

Figure 19 : Couches de VGG16

Figure 20 : Achitecture de VGG16

Figure 21 : DeepFashion dataset

Figure 22 : Architecture de CNN pour la classification des vêtements

Figure 23 : Plot de précision du modèle pour train et validation

Figure 24 : Plot de Loss du modèle pour train et validation

4|Page
Introduction générale :
L’intelligence artificielle demeure importante de nos jours, dans presque n’importe quel domaine
d’activités, vu son apport gigantesque en terme d’économie de temps, de facilitation d’immenses
tâches, et de rendre l’impossible pour un être humain, possible et faisable pour une machine,
selon ses performances.

Le domaine de mode et d’habillement, est un secteur gigantesque qui s’impose dans les
besoins vitaux de l’humanité, avec une capitalisation très importante et une croissance
remarquable, qui représente des milliards de dollars, avec des entreprises et des marques géantes.

Selon Statista.com : « Le marché mondial de l'habillement devrait croître en valeur de 1 500


milliards de dollars américains en 2020 à environ 2 250 milliards de dollars d'ici 2025, ce qui
montre que la demande de vêtements et de chaussures est en augmentation dans le monde. La
répartition régionale de la part de la demande de vêtements devrait rester globalement constante
entre 2015 et 2020, bien que la région Asie-Pacifique ait enregistré le niveau de croissance le plus
élevé avec 4 % . Les trois plus grands marchés mondiaux de l'habillement sont les États-Unis, la
Chine et le Japon par ordre décroissant.» 1

Les recherches qui s’inscrivent dans le cadre de l’utilisation des méthodes de l’intelligence
artificielle dans le domaine d’habillement sont encore rares, et ça représente encore un champ de
recherche fertile, et prometteurs, que ça soit pour les grands acteurs du secteur, les PME et aussi
pour les particuliers.

Notre projet peut apporter beaucoup d’avantages à la fois aux consommateurs de la matière
de mode, qui représentent l’utilisateurs final de la solution, ainsi qu’aux entreprises qui peuvent
l’utiliser afin de générer un savoir important des préférences du clients, et bien exploiter les
données générés aux sein de l’application, pour affiner leurs stratégies et leurs décisions, pour du
rendement meilleur, et dans un cadre win-win vis-à-vis aux consommateurs, une bonne stratégie
égale à une satisfaction de la clientèle et donc une croissance assurée et bonne compréhension du
marché.

Il s’agit d’une application intelligente, qui va englober l’utilisation de ses vêtements d’une
façon rationnelle, assisté par une intelligence artificielle, afin de gagner en agencement de son
5|Page
armoire, ainsi que d’avoir une vision claire de ses propriétés vestimentaires, et aussi de pouvoir
prendre conseil d’une application qui apprend chaque jours de vos préférences et des expériences
précédentes, afin de recommander aux clients ce qu’il peut porter en fonction de l’évènement , du
temps, des actualités et de ses préférences.

L’idée de la présente application nait d’un besoin personnel, qui m’était important, à l’instar
de la plupart des gens, qui ont subi à l’illusion de ne pas avoir suffisamment de vêtements à
porter, à cause du désordre et de l’éparpillement de leurs pièces, ce qui donne toujours
l’impression de ne pas avoir quoi porter dans le moment opportun, et cela est dû au manque
d’une vision claire de ce que l’on possède. Ainsi l’idée s’est développé pour englober d’autres
fonctionnalités tel que la reconnaissance et l’analyse des images qui est, en effet, le sujet de la
partie d’exécution du présent travail de fin d’étude.

L’objectif de ce projet n’est en vérité pas de construire l’intégralité de l’application en


question, mais d’essayer de mettre nos connaissances et nos compétences acquises au sein de la
formation, en application tout en développant la fonctionnalité de reconnaissance de vêtements
dans les images, ainsi que de modéliser un CSP pour la structuration des tenues vestimentaires à
partir des images de vêtements présents dans la base de données (l’armoir) de l’utilisateur de
l’application, et cela en exploitant les compétences suivantes :

 Vision par ordinateur


 Quelques algorithmes de l’apprentissage profond (Deep learning)
 La programmation par satisfaction de contraintes ou CSP (Constraints satisfaction
problems)

Structure du rapport :

Ce rapport sera divisé en 4 chapitres , et sera structuré selon le plan suivant :

1- Chapitre 1 : Revue de littérature : (Intelligence artificielle au service de l’industrie de la


mode)
2- Présentation du projet et étude du besoin
3- Conception et méthodologie de travail
4- Exécution et évaluation du travail
5- Conclusion

6|Page
Chapitre 1 : Revue de littérature :

« L’intelligence artificielle et ses enjeux


dans l’industrie de la mode »

7|Page
Introduction :
Dans ce chapitre nous allons introduire l’intelligence artificielle, et ses enjeux économiques et
techniques en faveur de l’industrie en général, et spécialement dans le domaine de la mode qui est
notre sujet, ainsi que de présenter une vision techniques globale, de l’intelligence artificielle et
comme elle peut être appliquée afin de remplir un besoin ou résoudre un problème concret.

Pour ce chapitre sera traité selon 3 grandes modalités :

1- Définition de l’intelligence artificielle et son application dans le monde réél


2- Ses enjeux en faveur du secteur de la mode
3- Vue technique de l’intelligence artificielle et comment l’appliquer aux besoins réél.

8|Page
I. Définition de l’intelligence artificielle :
1. Définition :
Selon Wikipedia 2: Le terme « intelligence artificielle », créé par John McCarthy, est souvent
abrégé par le sigle « IA » (ou « AI » en anglais, pour Artificial Intelligence). Il est défini par l’un
de ses créateurs, Marvin Lee Minsky, comme « la construction de programmes informatiques qui
s’adonnent à des tâches qui sont, pour l’instant, accomplies de façon plus satisfaisante par des
êtres humains car elles demandent des processus mentaux de haut niveau tels que :
l’apprentissage perceptuel, l’organisation de la mémoire et le raisonnement critique ». On y
trouve donc le côté
« artificiel » atteint par l'usage des ordinateurs ou de processus électroniques élaborés et le côté
« intelligence » associé à son but d'imiter le comportement. Cette imitation peut se faire dans le
raisonnement, par exemple dans les jeux ou la pratique des mathématiques, dans la
compréhension des langues naturelles, dans la perception : visuelle (interprétation des images et
des scènes), auditive (compréhension du langage parlé) ou par d'autres capteurs, dans la
commande d'un robot dans un milieu inconnu ou hostile.

Même si elles respectent globalement la définition de Minsky, certaines définitions de l'IA


varient sur deux points fondamentaux :

 les définitions qui lient l'IA à un aspect humain de l'intelligence, et celles qui la lient à un
modèle idéal d'intelligence, non forcément humaine, nommée rationalité ;
 les définitions qui insistent sur le fait que l'IA a pour but d'avoir toutes les apparences de
l'intelligence (humaine ou rationnelle), et celles qui insistent sur le fait que
le fonctionnement interne du système d'IA doit ressembler également à celui de l'être
humain et être au moins aussi rationnel.

Selon ma propre définition : l’intelligence artificielle est un ensemble de théories, des


techniques et de pratiques qui peuvent mener une machine à exécuter des tâches rationnelles et
simuler la capacité de raisonner, en imitant l’intelligence humaine, et cela en mettant en place un
modèle complexe non programmable de la même manière fonctionnelle traditionnelle.

9|Page
1. Les volets de l’intelligence artificielle :
L’intelligence artificielle englobe plusieurs disciplines différentes l’une de l’autre tel que la
perception visuelle (computer vision) , le traitement de langage naturel (NLP), l’apprentissage
machine, le traitement de problème de contraintes combinatoires infinis…, dont le facteur
commun est de permettre à la machine de simuler la raison et l’intelligence humaine.

Dans la figure suivante, une on affiche une liste non exhaustive des différentes disciplines de
l’intelligence artificielle.

Figure 1 : Les différentes disciplines de l’intelligence artificielle

10 | P a g e
2. Historique de l’intelligence artificielle :
Pour mieux comprendre n’importe quel sujet, il est inutile de manquer la partie de l’histoire
et de l’enchainement des évènements qui ont permis d’arriver au niveau actuelle de la discipline.
En effet, l’histoire de l’intelligence artificielle fut une ancienne apparition, avec des tentatives
éparpillées pour pouvoir procurer à des objets le pouvoir d’exécuter des calculs automatiques.

Cependant, les premiers pas effectifs de l’humanité vers le domaine de l’intelligence


artificielle ne font apparition qu’en 1943, avec la publication de l’article “A Logical Calculus of
Ideas Immanent in Nervous Activity.” par Warren McCullough et Walter Pitts. Dans ce
document, les scientifiques présentent le premier modèle mathématique pour la création d’un
réseau de neurones.

Le premier ordinateur à réseau de neurones, SNARC, sera créé en 1950 par deux étudiants de
Harvard : Marvin Minsky et Dean Edmonds. La même année, Alan Turing publie le Turing Test
qui sert encore aujourd’hui à évaluer les IA. 3

La chronologie de la progression de la recherche dans le domaine l’IA par la suite, et jusqu’à


l’année 2000, peut être résumé dans la la figure suivante :

Figure 2 : Chronologie du développement de l’intelligence artificielle

Après cette période l’intelligence artificielle rentre dans une phase d’hibernation, en ce que l’on
appelle l’hiver de l’intelligence artificielle, jusqu’à 2008 lorsque Google arrive à réaliser un

11 | P a g e
formidable progrès en domaine de reconnaissance de discours et lance cette fonctionnalité dans
ses smartphones.

Mais c'est en 2012 que le secteur de l'intelligence artificielle franchit un pallier considérable,
sortant de l'« hiver » dans lequel il s'était quelque peu endormi, faute de progrès significatifs.
Cette année-là, pour la première fois, un réseau de neurones profond remporta le challenge
ImageNet, un concours de reconnaissance d'images. Avec un taux d'erreurs de seulement 16,4 %,
il distança très largement le second programme (26,2 %). Cette performance remit sur le devant
de la scène une technique d'apprentissage profond ( deep learning ) qui avait commencé à faire
ses preuves dans les années 1990, notamment avec les travaux du français Yann Le Cun et des
canadiens Yoshua Bengio et Geoffrey Hinton, avant d'être un temps laissée de côté. La puissance
de calcul des cartes graphiques couplée à la mise à disposition de grandes bases de données
étiquetées (une image d'un chien sur un vélo en train de jouer de la guitare est accompagnée des
indications « chien », « vélo» et « guitare ») permirent à ces programmes d'enfin faire leurs
preuves à grande échelle.4

Ainsi, durant la meme année 2012, monsieur Andrew NG a pu nourrir un réseau de neurones
de plus de 10 millions de vidéos, en guise d’apprentissage, ce réseau de neurone à l’instar
d’imageNet, a permis d’identifier les objets sans avoir besoin de les définir au préalable.

En 2016, l’IA prouve qu’elle peut battre l’homme à n’importe quel secteur d’activité, si on la
fait apprendre de la bonne manière, tout en battant le coréen Lee Sedol, champion du jeu de GO,
par une intelligence artificielle.

3. Secteur d’usage de l’intelligence artificielle :


De nos jours, l’intelligence artificielle se trouve presque en tout ce qui nous entoure.

Internet fut rempli d’algorithmes intelligent capable de définir les préférences de l’utilisateur
afin de lui recommander un film, ou un produit, ou même une vidéo sur Youtube, par ce que l’on
nomme « un système de recommandation » qui est une filière du Machine Learning.

Ainsi les objets connectés, tel que les smartphones, les frigos intelligents, les drones, et les
voitures connectées.

12 | P a g e
L’intelligence artificielle intervient dans chaque secteur d’activité selon les besoins de ce
dernier, ainsi par exemple, le Deep learning et la vision par ordinateurs, ont envahi le secteur de
la conduite, et fournissent de nos jours des voitures capables de s’auto piloter afin d’arriver à un
endroit donné, sans l’intervention humaine.

Plus sérieusement le secteur économique et industriel, vise à bénéficier de plus en plus de


l’intelligence artificielle afin de renforcer les chaines de productions, en donnant plus
d’autonomie de leurs robots d’usines, qui font preuve de productivités plusieurs fois plus que les
ouvriers.

Le secteur financier et le secteur manageriel, peuvent bénéficier des bienfaits de


l’intelligence artificielle afin de produire des stratégies et des prises de décisions plus pertinentes,
basées sur l’expérience précédente, et des erreurs et des gloires du passé.

Notre secteur concerné est le secteur de Fashion et de Mode, qui déjà franchit les pas pour
pouvoir tirer profit de la technologie intelligente ses dernières années, avec l’apparition des
application intelligentes pouvant démonter l’usage des vêtements par simulation directement sur
le corps humains, tel que l’application apparut dernièrement par Adidas, qui permet à l’utilisateur
d’essayer l’image des chaussures directement et en temps réel, avec une réalité augmentée, sur la
vidéo prise du pied, cela fut vraiment une révolution dans le domaine de la mode

13 | P a g e
Ce que nous avons cité ci-dessus est loin d’être une liste exhaustive des secteurs qui ont
bénéficié et qui bénéficieront encore des bienfaits de l’intelligence artificielle, car le domaine est
aussi large et vague que le monde.

Après cette introduction, passons maintenant à définir les volets de l’intelligence artificielle
que nous allons exploiter durant cette réalisation, et comment on peut en tirer profit.

II. La vision par ordinateur :


1. Définition :
Computer Vision ou vision par ordinateur est une technologie d’intelligence artificielle
permettant aux ordinateurs de « voir » de la même façon que les êtres humains.5

Le terme de « Computer Vision » ou « vision par ordinateur » en français désigne les


différentes techniques permettant aux ordinateurs de voir et de comprendre le contenu d’images.
Il s’agit d’une sous-catégorie d’intelligence artificielle et de Machine Learning.

Le domaine de la Computer Vision regroupe de multiples techniques issues de divers champs


d’ingénierie ou d’informatique. De manière générale, les différentes méthodes ont pour but de
reproduire la vision humaine. Pour comprendre le contenu des images, les machines doivent être
capables d’en extraire une description : un objet, une description, un modèle 3D…

Certains systèmes de vision par ordinateur peuvent aussi nécessiter un traitement de l’image, à
savoir une simplification ou une augmentation de son contenu. En guise d’exemple, on peut citer
la normalisation des propriétés photométriques de l’image, le recadrage de ses contours ou la
suppression du « bruit » tels que les artefacts numériques induits par un faible éclairage.

2. Les cas d’usage de la vision par ordinateur :

14 | P a g e
Malgré les difficultés liées au développement de la vision par ordinateur, les avancées
considérables effectuées au fil des années permettent déjà à la Computer Vision d’effectuer de
nombreuses tâches.

L’utilisation de ma vision par ordinateur ne peut pas être cerner dans une liste exhaustive,
mais elle peut être employée dans n’importe quel domaine traitant des images ou des videos, tel
que l’organisation de la circulation, la reconnaissance faciale, l’imagerie médicale, ou même la
sécurité assistée par les caméras de surveillance…

Prenons quelques exemples :

a. Reconnaissance optique de caractères :

Cette technologie se révèle efficace pour la reconnaissance optique de caractères, aussi appelée
« OCR ». qui permet d’extraire du texte d’après une écriture existante sur une image. Elle est
également utilisée dans le domaine du détail, notamment pour les caisses automatiques.

15 | P a g e
Figure 3 : Reconnaissance optique de caractères

b. Reconnaissance faciale :

Les technologies de reconnaissance faciale des smartphones les plus récents, comme le
fameux Face ID des derniers iPhone d’Apple, reposent-elles aussi sur la Computer Vision. Cette
même technologie est exploitée par les caméras de surveillance automatiques.

c. Le secteur industriel :

Dans le secteur industriel, reposant sur le robotique et l’intelligence artificielle, la vision par
ordinateur à un rôle primordial, pour identifier les produits, les sélectionner, effectuer des tâches
dessus, fabrication…etc.

16 | P a g e
d. Secteur automobile :

Dans le domaine de la sécurité automobile, la vision par ordinateur est utilisée pour la
détection de dangers. Avec l’émergence des voitures autonomes, la Computer Vision occupera
bientôt une place centrale dans l’industrie automobile puisque c’est elle qui permettra aux
véhicules de « voir » sur la route.

e. La photogrammétrie

La photogrammétrie permettant de générer des modèles 3D est également basée sur la vision par
ordinateur. On l’utilise aussi pour l’inspection de machines ou pour l’analyse d’imagerie
médicale.

17 | P a g e
f. Gaming :

Même dans le secteur du gaming, la vision par ordinateur a commencé à se procurer un rôle
important, en sublimant le secteur des jeux par une expérience utilisateur magnifique.

Exemple : La kinect de Microsoft.

18 | P a g e
Comme on peut le constater, la technologie de vision par ordinateur n’est pas une technique
exclusivement réservée à un secteur, mais une vague technologique qui est aussi révolutionnaire
que l’intelligence artificielle elle-même.

3. Les défis de la vision par ordinateur :


a. Simuler la vision humaine intelligente:

Simuler une compétence humaine, représente toujours un défi, vu l’idéalité de la créature


humaine, cependant, la force de la vision par ordinateur est prouvée de vue de son apport à la
technologie et de l’épanouissement aux différents secteurs d’activités.

En effet la vision Humaine reste encore un mystère, non encore décortiqué, vu la complexité du
process de la vision et du fonctionnement de chaque organe intervenant séparément.

b. Problème de chevauchement d’objets et angle de vision:

Un objet peut être perçu sous de multiples angles, dans diverses conditions d’éclairage,
partielle caché par d’autres objets…

19 | P a g e
III. Machine learning et Deep learning :
1. Machine learning :
En intelligence artificielle le machine learning fut l’une des disciplines les plus connus. Le
terme machine learning, fit apparition en 1959 par l’informaticien américain Arthur Samuel, en
parlant de son programme capable de jouer aux dames et d’apprendre au fur et au mesures des
parties jusqu’à arriver à battre le 4ème meilleur joueur des états unis.6

Le machine learning, ou l’apprentissage machine en français, est une branche de


l’intelligence artificielle qui concerne la conception, l’analyse, le développement et
l’implémentation de modèles, permettant à une machine d’apprendre à partir des données par un
processus systématique afin de remplir une tâche. Le Machine Learning empreinte donc les
techniques de Datamining permettant de classer et trier les objets de notre monde (Classification),
de prédire des événements (Prédiction), d’identifier des règles sous-jacentes à des données,
d’analyser des séries temporelles, d’interpréter des textes (Analyse des sentiments sur les réseaux
sociaux, NLP) ...

Figure 4 : Les différents types d’apprentissage machine


20 | P a g e
On distingue principalement trois types d’apprentissages :

• L’apprentissage supervisé : C’est l’application la plus directe, on cherche un modèle qui prédit
(Régression ou classification) notre variable expliquée (output, response) préalablement connue à
partir des variables explicatives (Features, inputs).

• L’apprentissage non supervisé : Quand on ne dispose pas de variable à prédire, et que le nombre
de classes et leur nature n’ont pas été prédéterminés, on parle d’apprentissage non supervisé ou
Clustering. L’algorithme doit découvrir par lui-même la structure plus ou moins cachée des
données et séparer les données en différents groupes (clusters) homogènes (notion de similarité).

• L’apprentissage par renforcement : Le but du “Reinforcement Learning” est d’apprendre en


permanence, à partir d’expériences, ce qu’il convient de faire en différentes situations, de façon à
optimiser une récompense quantitative au cours du temps. L’action de l’algorithme sur
l’environnement produit une valeur de retour qui guide l’algorithme d’apprentissage (Essaie,
Erreur).

2. Deep learning :
a. Définition :

L’apprentissage profond est une branche du machine learning, qui se base sur l’apprentissage
simulé du cerveau humain, en employant des structures complexes appelé réseaux de neurones
artificiels, comme ceux présents dans le cerveau.

21 | P a g e
Figure 5 : Imbrication du deeplearning au sein du machine learning

Le deep learning vient pour surmonter les limites rencontrées avec le machine Learning,
avec les méthodes dites classiques.

Figure 6 : Comparaison entre DL et ML en fonction de performances

Il repose sur l’ensemble des techniques et des pratiques appliquées sur des réseaux de
neurones afin d’obtenir un algorithme neuronal, capable de donner des résultats satisfaisants pour
des problèmes d’apprentissage compliqués.

22 | P a g e
b. Importance du deeplearning :

L’apprentissage profond peut effectuer plusieurs tâches dans l’apprentissage machine, tel que
la classification, la régression et le clustering.

En effet, il existe des besoins qui ne peuvent pas être traiter via machine learning classic, et
donc de là que vient l’importance du deep learning.

c. Types de réseaux de neurones :

Les réseaux de neurones artificielles, ne sont pas quelque chose de tangible, mais un concept
inspiré du domaine biologique, ils consistent à simuler le fonctionnement du cerveau humain, où
un ensemble remarquable de neurones collaborent et fonctionnent ensemble afin de générer un
signal qui mène à la compréhension d’un aspect donné.

Figure 7 : Structure d’un réseau de neurones artificiel

Un exemple de réseau de neurones simple qui peut prédire l’orientation politique d’une
personne à partir de certaines données concernant l’intéressé:

23 | P a g e
Figure 8 : Exemple de réseau de neurones

Il existe plusieurs types de réseaux de neurones qui couvrent chacun, des besoins
fonctionnels et techniques spécifiques, citons les deux plus populaires :

1. Réseau de neurones récurrent – Recurrent Neural Network (RNN):


Ce sont des réseaux de neurones spécialisés qui utilisent le contexte des entrées lors du calcul
de la sortie. La sortie dépend des entrées et des sorties calculées précédemment.
Ainsi, les RNN conviennent aux applications où les informations historiques sont
importantes. Ces réseaux nous aident à prévoir les séries chronologiques dans les applications
commerciales et à prévoir les mots dans les applications de type chatbot. Ils peuvent
fonctionner avec différentes longueurs d’entrée et de sortie et nécessitent une grande quantité
de données.

2. Réseau de neurones de convolution – Convolution Neural Network (CNN):


Ces réseaux reposent sur des filtres de convolution (matrices numériques). Les filtres sont
appliqués aux entrées avant que celles-ci ne soient transmises aux neurones.
Ces réseaux de neurones sont utiles pour le traitement et la prévision d’images.7

24 | P a g e
Notre projet donc repose sur les réseaux de neurones de convolution vu que nous sommes
concernés par un traitement et extraction de données ainsi qu’une classification à partir des
images.

IV. CSP : Constraints Satisfaction problems :


1. Définition :
Un problème de satisfaction des contraintes, ou programmation par satisfaction de contraintes
ou tout simplement CSP, est une technique de résolution des problèmes combinatoires complexes
issue de la programmation logique et de l’intelligence artificielle et apparue à la fin des années
1980. Elle consiste à modéliser un problème par un ensemble de relations logiques, des
contraintes, imposant des conditions sur l’instanciation possible d’un ensemble de variables
définissant une solution du problème.8

UN modèle CSP se compose de trois éléments essentiels :

1. Les variables du problème : Se sont les conteneurs de données qui doivent être instanciées
selon des règles bien définit lors de la définition des contraintes (X1, X2, X3…)
2. Domaine de définition des variables : C’est l’ensemble des valeurs que peuvent prendre une
chacune de variable (D1, D2, D3…)
3. Les contraintes : C’est un ensemble de règles régissant les relations entre les variables lors de
l’instanciation de chacune, avec les valeurs définit au préalable dans les domaines de
définition.

Un modèle CSP est donc représenté par un triplet : (X,D,C)

Avec : X est l’ensemble des variables

D l’ensemble des domaines de définitions des

variables C l’ensemble des contraintes.

2. Quand utiliser les CSP :


25 | P a g e
Les CSP servent à résoudre des problèmes combinatoires, représentant un nombre élevé de relations
entre les des variables, et des règles de gestion strictes qui ne doivent pas être violés, tel qu’elles
sont les règles d’agencement, d’affectation de ressources, de rétablissement des emplois des
temps, des règles de jeux comme les échecs et Soduku…etc. brefs tout problème combinatoire
avec un nombre continu de contraintes.

3. Les consistances d’un CSP :


La consistance d’un CSP est un filtre qui permet de cerner l’espace de recherche pour aboutir
plus facilement et plus rapidement à la solution, lors de la résolution du problème.

Elle consiste à éliminer certaines valeurs des domaines de définitions des variables, ces
valeurs qui n’ont aucun support avec d’autres valeurs des autres variables, selon la définition des
contraintes.

Par exemple :

Si l’on veut colorer 3 box et que l’un de ces boxes s’il soit en rouge, les autres ne peuvent
pas être colorés. Donc il convient clairement d’éliminer la couleur rouge du domaine de
définition de ladite boxe.

Il existe plusieurs types de consistances, qui permettent à mieux résoudre le problème, citons :

 Arc consistency (ou la consistance d’arc)


 Local consistency (consistance locale)
 Node consistency (ou consistance de nœud)
 Path consistency ( consitance de chemin)

26 | P a g e
Chapitre 2 :

« Présentation du projet et étude du


besoin »

27 | P a g e
Introduction :
Dans ce chapitre, nous allons essayer de présenter le projet, et de définir notre objectif, ainsi
de décrire la carte de route pour les atteindre.

Pour un bon pilotage du projet, il est indispensable de bien penser d’une façon généraliste
puis spécifique, afin de déterminer les limites, l’étude de faisabilités, les enjeux que nous allons
traiter dans la conception et la réalisation, ainsi de planifier la démarche à faire, pour y arriver.

Ce chapitre alors va être une présentation des besoins, de la problématique qui s’impose, et
que nous allons essayer de traiter et de présenter une solution opérationnelle, et efficace, afin de
la surmonter, puis de réaliser un cahier de spécifications fonctionnelles détaillant les
fonctionnalités que notre projet couvrira, puis de donner une proposition au volet technique, en
suggérant des technologies et des méthodes qui vont nous aider à résoudre la problématique, dans
un cahier de spécifications technique détaillées.

28 | P a g e
I. Etude de l’existant :
Le domaine de la mode est un secteur émergeant, qui subit toujours aux changements, et aux
développement, il est nécessaire donc de penser à des projets d’intelligence artificielle afin
d’aider à la fois les entreprises et les consommateurs du secteur, dans un cadre de satisfaction
mutuelle.

La présence de l’intelligence artificielle dans le domaine de la mode, fait son apparition dès
sa récente démocratisation, en faisant du secteur l’un des champs d’activités les plus actifs.

1. L’IA au service de l’entreprise :


La mode étant en perpétuelle évolution, détecter les tendances et prédire finement les
volumes de ventes est un autre enjeu stratégique pour l’industrie textile, et ce afin de ne fabriquer
que les quantités nécessaires, au meilleur prix et au bon moment. En complément des cahiers de
tendance, l’IA aide aujourd’hui les stylistes à capter plus systématiquement les tendances
révélées via les réseaux sociaux.

L’IA est aussi à l’œuvre pour enrichir les fiches articles, avec des attributs descriptifs riches
et précis, générés automatiquement depuis une simple photo. On appelle cela le Deep Tagging.

Cela ne fut que quelques un des manifestations de l’IA au profit des entreprises de Mode et de
textile.

2. L’IA au service du consommateur de la mode :


Dans un marché ultra concurrentiel, il est très difficile de recruter et de fidéliser les
consommateurs sans leur proposer une expérience client de grande qualité. Pour cela une marque
doit offrir un parcours d’achat fluide et aussi personnalisé que possible, à chacun de ces clients et
quel que soit le canal d’interaction. Pour adresser correctement cette explosion combinatoire, de
nombreux acteurs de la mode exploitent désormais les formidables capacités de l’IA pour
proposer des solutions innovantes au service du client. Par exemple, la startup française Veertus
permet, à partir du code à barres d’un article, d’essayer virtuellement un vêtement sur son
smartphone et ainsi de se passer de l’essayage en cabine. Basé sur des techniques d’apprentissage
automatique, le parcours d’achat en boutique est simplifié et digitalisé, deux atouts précieux en
période Covid-19.
29 | P a g e
L’IA est aussi de plus en plus utilisé pour fluidifier le service client, grâce à des chatbots capables
de répondre rapidement à de nombreuses questions telles que : le suivi d’une commande, la
disponibilité d’un article dans un magasin près de chez soi…

Aussi des méthodes de recherches en ligne basées sur les images d’une personne, permettent
d’effectuer une rechercher sur une pièce vestimentaire, que la personne en question porte sur son
corps, et de sa disponibilité au marché, ainsi de proposer des articles similaires, et du contenu
relatif à ce style vestimentaire…

II. Problématique :
D’après l’étude de l’existant, il s’avère que le domaine de la mode est déjà enrichi de
méthodes et de techniques intelligentes qui peuvent aider la production et la consommation et être
plus pertinente et rationnelle, et donc de préserver l’environnement, et d’économiser
remarquablement sur tous les plans.

Cependant, il existe toujours un champ de développement et d’amélioration qui peut apporter du


bénéficie à notre recherche, et où on peut trouver un besoin à satisfaire, ou un problème à
résoudre.

La problématique détectée, comme cité au préalable, commence à apparaitre d’un besoin


personnel, lorsque j’ai commencé à me paniquer à chaque fois, pour trouver quoi porter dans un
événement donné, ou une réunion de travail, ou bien de chercher où est ma veste préférée, ou ma
paire de chaussure favori :

 Cela m’a directement donné l’envie d’avoir une application informatique qui fait tout ce
charabia, et le rend organisable, en donnant une vision claire de ce que l’on possède dans
son armoire, avec une énumération de chaque article et de le trouver directement où il
existe.

Après vient l’amélioration de l’idée et la phase de maturation fait apparaitre d’autres besoins pas
moins important que la graine de l’idée :

30 | P a g e
 L’utilisation d’une telle application peut être une tâche lourde, qui peut augmenter la
charge de travail au consommateur de vue de leur engagement vers l’organisation et faire
l’inventaire de chaque vêtement séparément, chose qui n’est pas évidente.
 L’existence des vêtements et avoir une vision sur leur distribution et leur stockage, ainsi
que leur situation et état n’est pas suffisant pour pouvoir en tirer profit au maximum,
Après la question :
 Savoir quoi porter avec quoi
 Et quand porter quoi
 Point de vue économique : Absence de données relatifs aux utilisations des vêtements et
chaussures par les clients, afin de les exploiter pour améliorer l’expérience.

III.Solution proposées :
Après la présentation de la problématique, on peut proposer de construire une application qui
couvre l’ensemble des éléments de la problématique, afin d’essayer à remplir les besoins
décortiqués, et de résoudre les problèmes que peut poser l’existence d’une telle problématique :

1. Concevoir une application mobile, qui peut être utilisée à partir d’un smartphone et qui
peut gérer les vêtements stockés dans son armoire.
2. L’utilisation de l’intelligence artificielle pour permettre aux utilisateurs d’automatiser la
prise en main de l’application, en exploitant les images des vêtements (computer vision).
3. Construire une fonctionnalité pour la proposition de tenue vestimentaire en combinant les
vêtements présents dans l’armoire.
4. Traitement des données collectées par l’application afin d’améliorer l’expérience 
pourquoi ne pas donner aux entreprises la possibilité de savoir ce que l’on porte le plus,
et ce que l’on préfère afin de :
a. Engager des publicités plus pertinentes au lieu de spammer les clients par n’importe
quoi
b. Donner aux entreprises une vision sur le marché en leur fournissant des données
exploitables pour l’amélioration de leur offre.

31 | P a g e
IV. Spécifications fonctionnelles :
Dans cette partie, nous allons essayer de développer un peu la description des solutions
proposées, et de définir les fonctionnalités de l’application.

Le projet consiste en une application intelligente qui repose sur le traitement d’image et l’apprentissage
profond (deep learning) ainsi que la programmation par contraintes.

Les fonctionnalités de l’application peuvent être listé en MVP comme suit :

 Prendre une photo de la pièce vestimentaire


 L’analyser et la classer selon le modèle de classification définit en Deep learning(c’est ce que
nous allons détailler par la suite et c’est le cœur de notre projet)
 La sauvegarder dans la base de données selon la saisi et la classe que le modèle a prédit
 Proposer des tenues vestimentaires composées des vêtements présents dans la base de
données, (qu’on va nommer son armoire) -> c’est le rôle des CSP.

1. Fonctionnalités du projet :
Nous allons détailler un peu les fonctionnalités souhaitées de l’application, mais nous ne focaliserons
dans la phase de réalisation par la suite que sur deux, celles qui concernent la classification
d’images et le CSP de proposition de tenues vestimentaires.

a. Capacité de prendre une photo :

L’application doit avoir la capacité de prendre des photos de la camera du téléphone, et de la stocker
dans un répertoire.

b. Capacité de se connecter à un serveur :

Elle doit être capable de communiquer avec un serveur distant pour pouvoir interroger le modèle que
nous allons développer, et pour envoyer et recevoir les données.

c. Ajouter, modifier et afficher les articles :

32 | P a g e
Notre application doit donner une interface utilisateur ergonomique pour que l’utilisateur puisse
gérer ses articles vestimentaires et ses chaussures dans l’application, et de voir ses vêtements
classés selon des catégories, ainsi que selon l’emplacement dans un armoire, chose qu’il va
définir manuellement, lors de l’ajout ou la modification des données de l’article, afin d’avoir une
visibilité de son armoire.

d. Classification des vêtements à base d’une image :

Après l’introduction d’une image de la pièce prise directement sur l’application, ou prise au
préalable, l’utilisateur peut demander de l’application de classifier sa pièce et la mettre dans une
catégorie convenable.

e. Proposition de tenues :

L’utilisateur peut demander à l’application de le conseiller, en formant une tenue


vestimentaire convenable à son besoin, selon le temps actuel, l’événement concerné…etc. et cela
à partir de ses vêtements.

2. Parties prenantes du projet :


L’application est destinée à deux types d’utilisateurs :

 -Utilisateur particulier : Les personnes souhaitant bénéficier d’une bonne gestion de


leurs vêtements, et par conséquent une meilleure visibilité, et donc une bonne économie et
rationalité de l’utilisation de ses biens.
 -Les entreprise : Souhaitant avoir une visibilité des préférences de leurs clients, et

V. Spécifications techniques :
Ce genre de projets requiert un certain niveau technique pour pouvoir réaliser ses
fonctionnalités, ainsi que la montée en compétences dans ces domaines techniques, peut donner
un élan vers l’atteinte de nos objectifs.

33 | P a g e
1. Besoins de maintenance :
Tout d’abord, et afin d’assurer une application ergonomique, l’application doit respecter les
volets suivant :

 La sécurité : Il faut maintenir un certain niveau de sécurité, et protéger l’utilisateur de


l’application et l’intégrité des données, ainsi l’accès à l’espace de l’utilisateur doit être
protéger par une authentification.
 La maintenabilité : La conception de l’application ainsi que le code doit être
compréhensible et maintenable, pour une éventuelle correction.
 Evolutivité : L’application aussi doit être ouverte à tout changement ou mise à niveau des
fonctionnalités.

2. Besoins techniques :
a. Big Data :

Cette application est censée traiter un ensemble gigantesque de données d’images, et de


données concernant les vêtements, pour cela inutile d’essayer de donner des tâches
d’apprentissage automatique à un processeur de téléphone, ou à un ordinateur portable, d’où vient
la nécessité d’un serveur de Big Data.

Qu’est un serveur de Big Data :

Le big data tend à désigner la discipline du stockage, du traitement et de l'analyse en temps


réel d'énormes ensembles de données commerciales. Ce n'est pas seulement la taille de la source
qui rend ces informations difficiles à examiner, mais aussi le manque de structure et la vitesse à
laquelle elles doivent être traitées. C'est pourquoi le big data est généralement défini par les trois
V : volume, vitesse et variété.

Un serveur Big Data peut désigner une machine distante qui fournit des services permettant de
gérer un immense ensemble de données, et d’effectuer de tâches lourdes sur ces derniers.

Les différents modules du serveur bigdata :

1. Hadoop :

34 | P a g e
Hadoop est un framework open source, écrit en Java et géré par la fondation Apache. Il a été
conçu pour répondre aux besoins du Big Data, tant au plan technique qu’économique. Hadoop est
capable de stocker et traiter de manière efficace un grand nombre de donnés, en reliant plusieurs
serveurs banalisés entre eux pour travailler en parallèle. Il existe plusieurs distributions de
Hadoop, dont les plus connues sont celles de Cloudera, Hortonworks et MapR. Bien que dans le
même temps, d’autres distributions Hadoop voient aussi le jour. Le framework Hadoop de base
se compose des modules suivants :

 Hadoop Common : ce sont des bibliothèques Java et utilitaires requis par d'autres modules
Hadoop
 Hadoop Distributed File System (HDFS): un système de fichiers distribué.
 Hadoop YARN : framework pour la gestion des ressources du cluster.
 Hadoop MapReduce : framework pour le traitement parallèle des données massives.

Figure 9 : L’Ecosystem de Hadoop

2. Apache Kafka

Kafka est un système distribué de messagerie pour l’agrégation de log, le traitement en temps
réel et le monitoring. Développé par linkedin et écrit en scala, il est conçu pour facilement monter

35 | P a g e
en charge et supporter des débits de données très importants. Kafka conserve les données qu’il
reçoit dans des topics, correspondant à des catégories de données.

Figure 10 : Archtecture de Kafka

3. Apache Spark

Il s’agit d’un projet de la fondation Apache issu de recherches à Berkeley. Apache Spark
peut traiter des données issues de différents référentiels de données, dont Hadoop Distributed File
System (HDFS), des bases de données NoSQL et des data stores de données relationnels, tels
qu'Apache Hive. En outre, Spark prend en charge le traitement In-memory, ainsi les
performances des applications d'analytique Big Data. Toutefois, il permet aussi un traitement
conventionnel sur disque lorsque les ensembles de données sont trop volumineux pour la
mémoire système disponible. Spark est écrit en Scala et peut être indifféremment utilisé en Java,
en Scala et en Python.

36 | P a g e
Figure 11 : Archtecture de Spark

Spark fournit aux programmeurs un substitut potentiellement plus rapide et plus flexible à
MapReduce, le logiciel auquel étaient liées les premières versions d'Hadoop. Il exécute des tâches
100 fois plus vite que MapReduce en cas de traitement en mémoire, et 10 fois plus vite sur
disque. Néanmoins deux cas se distinguent pour lesquels le passage à Spark aura tout son sens :
L’analyse en temps réel et les algorithmes puissants (grâce à MLlib).

L’écosystème de Spark

L’écosystème Spark comporte ainsi aujourd’hui plusieurs outils dont chacun l’apporte des
fonctionnalités supplémentaires, ce qui le rend si attractif :

1. Spark :pour les traitements “en batch”.


2. Spark Streaming : pour le traitement en continu de flux de données.
3. MLlib : pour le Machine Learning. Il s’agit d’une bibliothèque de méthodes
d’apprentissage (type k-means…) optimisée pourSpark.
4. GraphX : pour les calculs de graphes.
5. Spark SQL : une implémentation SQL-like d’interrogation de données.

37 | P a g e
Figure 12 : Ecosystème de Spark

4. Apache Hive

Apache Hive est une infrastructure d’entrepôt de données intégrée sur Hadoop permettant
l'analyse, le requétage via un langage proche syntaxiquement de SQL ainsi que la synthèse de
données Bien qu’initialement développée par Facebook, Apache Hive est maintenant utilisée et
développée par d'autres sociétés comme Netflix.

Il prend en charge des requêtes rédigées en langage HiveQL. Il traduit automatiquement les
requêtes de type SQL en tâches MapReduce exécutées sur Hadoop. Parallèlement, HiveQL prend
en charge les scripts MapReduce personnalisés qui se connectent aux requêtes. Hive autorise
également la sérialisation/dé sérialisation des données, et accroît la flexibilité de la conception de
schémas en intégrant un catalogue système appelé Hive-Metastore.

38 | P a g e
Figure 13 : Architecture et composants de Hive

b. Langage de programmation :

Cette application requiert plusieurs besoins au niveau du choix du langage de


programmation, les critères du choix repose sur le besoin fonctionnel et technique, vu que l’on
utilisera plusieurs modules différents.

39 | P a g e
Par exemple en deep learning nous allons avoir besoin d’un langage robuste, simple, rapide, et
communautaire le choix est sans doute va vers Python.

1. Python :

Python est un langage de programmation interprété, orienté objet, de haut


niveau avec une sémantique dynamique. Ses structures de données intégrées de
haut niveau, combinées à un typage dynamique et à une liaison dynamique, le
rendent très attrayant pour le développement rapide d'applications, ainsi que
pour
une utilisation comme langage de script ou de collage pour connecter des composants existants
entre eux. La syntaxe simple et facile à apprendre de Python met l'accent sur la lisibilité et réduit
donc le coût de maintenance du programme. Python prend en charge les modules et les packages,
ce qui encourage la modularité du programme et la réutilisation du code. L'interpréteur Python et
la vaste bibliothèque standard sont disponibles sous forme source ou binaire sans frais pour toutes
les principales plates-formes et peuvent être distribués gratuitement.

Il maintenant le langage le plus utilisé et le plus performant dans le domaine des sciences de
données, et de l’intelligence artificielle.

Conclusion :
Dans ce chapitre, nous avons essayé d’identifier nos besoins, de définir nos objectifs, ainsi de
décrire les besoin fonctionnels et techniques de notre projet.

40 | P a g e
Chapitre 3 :

« Conception et Méthodologie de
travail »

41 | P a g e
Introduction :
Cette phase représente la plus importante de toutes les phases, c’est l’étape transitionnelle
entre la planification et le passage effectif à l’action.

Après la présentation des technologies de développement, le but de ce chapitre est de décrire


les différents aspects du projet, à l’aide du langage de modélisation UML, ainsi la modélisation
d’un CSP, qui nous fournira des solutions pour le conseil des tenues vestimentaires.

La conception englobera l’ensemble des besoins fonctionnelles, quant à la réalisation ne


concentrera que sur La classification d’images

Méthodologie de travail :
Avant d’entamer le travail, il est important de faire un planning des tâches à faire pour faciliter le
suivi du déroulement.

Les différentes tâches à faire pour commencer ce projet sont :

 La synthèse des besoins fonctionnelles et techniques


 La conception des fonctionnalités
 La conception du CSP
 L’installation des outils bigdata
 La recherche des images d’entrainement
 Développement du modèle de classification des images avec Deep learning

Conception des fonctionnalités :


1. Use cases :
Ce diagramme de cas d’utilisation (Use cases), représente l’ensemble des fonctionnalités tel
qu’elles apparaissent à l’utilisateur particulier de l’application.

42 | P a g e
Figure 14: Use cases de l’application

2. Base de données :
La base de données requise pour cette application ne sera pas compliquée, vu qu’elle ne
possède pas trop de table interconnectées, et peu d’associations, mais ce qui compte le plus c’est
la quantité d’images et de données récoltés, qui nous fournissent un carburant pour les études par
la suite, et pour alimenter nos modules d’apprentissage, afin de fournir des informations
pertinentes concernant les vêtements demandés, et les préférences des consommateurs.

43 | P a g e
Figure 15 : Diagramme de classe de la base de données

La base de données conçu pour nos besoins, dans un premier temps n’a besoin que de 4 tables :

 Utilisateur : pour stocker les données relatives aux utilisateur


 Armoire : Pour stocker les données des classeurs des vêtements, afin de fourni à
l’utilisateur une visibilité de l’emplacement de ses vêtements
 Vêtements : Bien évidemment c’est la table cœur de l’application, vu qu’elle tourne
autour de classement des vêtments.
 Image_vêtements : C’est une table qui décrira les images que nous avons récoltés, leur
chemin d’accès …etc.
Alors les règles de gestion de ses tables consistent à des relations simples :

 Un armoire peut contenir plusieurs vêtement comme peut être vide (association 0..*)
 Une pièce vestimentaire peut être classé dans un seul armoire, ou bien ne pas être classée
(associaiton 0..1)
 Une pièce vestimentaire peut avoir une image descriptive ou plusieurs image (association
1..*)

44 | P a g e
 Une image concerne une seule pièce vestimentaire (association 1..1)
La classe vêtement contient un attribut « Type » qui représente la classe prédite par le
modèle de Deep learning responsable de classer les images des vêtements selon des classes pré
déterminées.

3. Problème de satisfaction des contraintes :


Afin de formuler des tenues dignes d’être portés, et respectant le style
vestimentaire ainsi que le code fashion que l’utlisateur préfère, nous
allons essayer de modéliser un CSP, afin de trouver des combinaisons
convenables.

A. L’énoncé :

Pour réaliser ce CSP, nous allons en premier temps considérer,


seulement les types de vêtements, et laisser les couleurs et les styles de
couleurs pour des perspectives éventuelles, ainsi nous ne focaliserons que
sur l’habillement des hommes, pour simplifier la tâche.

Un homme peut s’habiller en 5 parties de son corps :

 Il peut porter
 Quelque chose sur sa tête, tel qu’un chapeau, une casquette…
 Sur son tronc de corps, une chemise, une veste, un tricot,tshirt, polo (on ne va pas
considérer les sous-vêtements, vu qu’il ne sont pas visible sur le corps)
 En bas, des pantalons, shorts, Jeans,
 Dans ces pieds, des chaussures, et des chaussettes à la fois, on peut les catégoriser
comme, chaussures classes, espadrilles, sneakers, run, Boots, chaussettes sportives,
chaussettes classes
 Accessoire sur le poignet : Bracelet, montre
 Accessoire sur le visage : lunettes
 Ainsi les combinaisons doivent varier selon le temps (qu’il fait beau, il fait chaud, il fait
froit) et selon le mode (sportif, mode casual… nous en prendrons deux)

45 | P a g e
B. Ensemble des variables :

Comme on peut le constater, on peut considérer 8 types de variables :

 Temps
 Mode
 Tête
 Haut
 Bas
 Pieds
 Accessoire du bras
 Accessoire du visage

Cependant, il y a une contrainte que nous devons résoudre, avant de passer à la définition des
domaines de définition des variables.

Il y a des variables qui peuvent prendre 2 ou 3 valeurs à la fois :

Par Exemple : Haut peut être initialisé par une chemise, un tricot, et une veste et chemise et cravate à
la fois.

Ou un homme peut porter deux accessoires de bras à la fois (bracelet et montre) Comment

on peut les résoudre ?

On a choisi donc de dupliquer les variables autant de fois qu’on peut avoir de valeurs :

X = {Temps, Haut1, haut2, haut3, bas, tête, pieds, accessoire du bras1, accessoire du bras2,
accessoire du visage}

C. Les domaines de définition des variables :

Les domaines de définitions, sont les ensembles des valeurs que chacune des variables peut
prendre lors de l’instanciation.

Pour cela, nous avons chacune des variables supporte certains types de vêtements (valeurs)

46 | P a g e
 Temps={ beau, chaud, froid}
 Mode = {casual, sport }
 D(haut1,haut2,haut3) = {Veste, Monteau,jacket, chemise, polo, tricot, pull over,cravate,
t- shirt, t-shirt longue manches}
 D(bas) = {Pantalon style habillé, Jeans, short, Pantalon vintage, pantalon jogging}
 D(tête) = {casquette, chapeau western, tophat anglais, chapeau panama,sun hat, newsboy,
}
 D(pied) = {chaussures class, boots, sneakers, run, espadrilles, mocassin)
 D(accessoire bras1,accessoire bras2) = {bracelet,montre}
 D(accessoire du visage) ={lunettes class, lunettes sportives, lunettes de vue}

D. Les contraintes :

Pour formuler ce CSP, il faut définir des contraintes, qui vont formuler nos règles de gestion
des solutions, pour limiter l’espace de recherche, et en même temps trouver une ou plusieurs
solutions qui répondent aux besoin sollicité.

Tout d’abord nous allons essayer d’expimer les contraintes en dur, et de faire un inventaire
d’elles, pour pouvoir les cerner.

1. Le temps doit être initialisé en premier, puis le mode


2. Haut et bas et pieds doivent toujours être initialisés
3. Après initialisation de temps et mode :
 Haut doit être initialisé en premier,
 puis bas,
 puis pied,
 puis peu importe
4. Il suffit d’initialiser une seule des variables dupliquées
5. Si temps fait beau, et mode casual :
 haut peut être : chemise, veste, polo, cravate

47 | P a g e
6. Si temps fait beau, et mode sport :
 haut peut être : tshirt,t-shirt longues manches
7. Si temps fait chaud et mode casual :
 haut doit être chemise, polo, tshirt, cravate
8. Si temps fait chaud et mode sport :
 haut :tshirt
9. Si temps fait froid et mode casual :
 haut : chemise, tricot, pullover, manteau, jacket, cravate
10. Si temps fait froid et mode sport :
 haut : tshirt longue manche, jacket (ou les deux)
11. Si en haut on porte une chemise, il faut que (Et logique):
 Bas soit jeans, ou pantalon habillé (classe)
 Les pieds doivent porter des chaussures classes, ou des boots, ou mocassin
 La tête ne doit pas porter une casquette,
 Et Pas de lunette sportives en accessoires
12. Si en haut on porte : Chemise ou pullover :
 on peut remplir la deuxième variable en haut, avec veste, ou manteau, ou jacket
13. Si en haut on porte : chemise, et en bas un pantalon classe (style habillé) :
 On peut porter dans la 3ème variable une cravate.
14. Si en haut on porte tshirt ou polo et temps fait beau:
 Bas soit jeans.
15. Si en haut on porte tshirt ou polo et temps fait chaud:
 Bas soit short.
16. Si en bas on porte un short :
 Pied doivent porter : Espadrilles, sneakers, ou run
17. Si jeans en bas, et temps fait beau et mode casual :
 Pieds : sneakers, boots
18. Si jeans en bas, et temps fait beau et mode Sport :
 Pieds : sneakers, boots, espadrille
19. Si Short en bas :
 Pieds : Sneakers, Sun, Espadrilles

48 | P a g e
Pour formuler nos contraintes, nous allons nous servir des listes :

Nous allons construire six listes, formant des sous-ensemble des domaines de définition, et
qui correspondent à l’état du temps et le choix du mode, distinctivement, respectivement sont
comme suit :

Liste 1 : Beau_casual ( haut { chemise, veste, polo, cravate }, bas{ Pantalon style habillé,jeans,
short}, pied{chaussures classes, sneakers, boots,mocassin})

Liste 2 : Beau_sport ( haut { tshirt,t-shirt longues manches }, bas{jeans }, pied{sneakers,


espadrilles, run})

Liste 3 : froid_casual ( haut {chemise, tricot, pullover, manteau, jacket, cravate },


bas{jeans,pantalons classe}, pied{boots,chaussures classes, sneakers})

Liste 4 : froid_sport ( haut { tshirt longue manche, jacket }, bas{ Jeans, pantalon jogging},
pied{ espadrilles, run, sneakers })

Liste 5 : chaud_casual ( haut { chemise, polo, tshirt, cravate }, bas{pantalons habillé, jeans}, pied{chaussures
classes, espadrilles, sneakers})

Liste 6 : chaud_sport ( haut { tshirt }, bas{short, jeans}, pied{espadrilles, run, sneakers})

Les contraintes sur nos variables, et nos listes de variables peuvent être sous forme d’égalités, et
inégalité unaire, ainsi que d’implication et équivalence.

1. Les relations d’implication :

Modélisons la contraintes numéro ‘11‘ (et qui nous servira par la suite de résoudre les autres en
se basant sur les listes) :

Haut1 = « chemise » => (bas = « pantalon habillé (classe) » || bas = « jeans » ) && (pieds =

« chaussures classes » || pieds = « boots » || pieds = « mocassin » ) & ( tête ≠ «casquette » ) &

( accessoire_visage ≠ « lunettes sportives »

49 | P a g e
Contrainte numéro 12 :

Haut1 = « chemise » || Haut1 = « pull over » ==> haut2 = « manteau » || haut2 = «Veste » ||

haut2 = « jacket » || haut2 = « vide »

Haut1 = « chemise » && bas = « pantalon habillé classe» ==> haut3 = « cravate » || haut3 =
« vide »

2. Inégalités :

Pour les variables dupliquées, il est clair qu’elles ne doivent pas être égales, vu que nous ne
pouvons pas mettre deux chemises à la fois, ou deux vestes :

Pour cela :

- Haut1 ≠ haut2 ≠ haut3

Ainsi haut3 correspond généralement à la cravate donc il est préférable de la cerner

toujours et l’associer à cravate, à moins que nous voulions ultérieurement d’étendre le CSP à
choisir 4 ou 5 types de vêtements du même niveau :

- Haut3 = « cravate »

3. Dans la liste :

Pour les autres contraintes, il suffit de choisir les instanciations des variables à partir des listes
que nous avons créées, et qui correspondes chacune aux instanciations des variables temps et
beau, pour cela nos contraintes seront :

- Temps = « beau » && mode = « casual » ==> haut1 IN


beau_casual(haut()) && bas IN beau_casual(bas()) && pied IN
beau_casual(pieds())
- Temps = « beau » && mode = « sport » ==> haut1 IN beau_sport(haut())
&& bas IN beau_sport(bas()) && pied IN beau_sport(pieds())
- Temps = « froid » && mode = « casual » ==> haut1 IN

50 | P a g e
froid_casual(haut()) && bas IN froid_casual(bas()) && pied IN
froid_casual(pieds())

51 | P a g e
- Temps = « froid » && mode = « sport» ==> haut1 IN froid_sport(haut())
&& bas IN froid_sport(bas()) && pied IN froid_sport(pieds())
- Temps = « chaud » && mode = « casual » ==> haut1 IN
chaud_casual(haut()) && bas IN chaud_casual(bas()) && pied IN
chaud_casual(pieds())
- Temps = « chaud » && mode = « sport » ==> haut1 IN
chaud_sport(haut()) && bas IN chaud_sport(bas()) && pied IN
chaud_sport(pieds())

52 | P a g e
Conclusion :
Dans cette phase de conception, nous avons essayé d’avoir une vision sur l’ensemble des
fonctionnalités et comment nous avons conçu une manière de les réaliser et de les mettre en
œuvre, grace à la modélisation UML, et la modélisation des CSP.

Cependant, le CSP reste d’une qualité à améliorer en perspective, et de générer plus de


contraintes, et de types de vêtements, tel que celles que nous allons voir dans la phase suivantes ,
formant le Dataset de notre modèle du Deeplearning, ainsi d’étendre ce programme pour qu’il
puisse traiter les besoins de mode des femmes aussi

53 | P a g e
Chapitre 4 :

« Exécution et évaluation du travail »

54 | P a g e
Introduction :
Dans cette partie, nous allons présenter les modalités de la réalisation de nos objectifs, et de
notre conception, mais en ne se focalisant que sur l’algorithme de Deep learning, qui nous servira
de classifier les images et de savoir quel type de vêtement est sujet de l’image.

En effet, Cette partie sera structurée d’une façon qui permettrait de présenter les technologies
utilisées lors de la réalisation, l’explication des méthodes et des étapes de la construction de
l’algorithme de classification, ensuite une évaluation des résultats obtenues, et enfin quelques
captures d’écran preuves de résultats et quelques portions du code sources.

1. Méthodes et technologies :
La réalisation de ce projet repose sur le Deep learning, que nous avons détaillé au préalable
dans la section de littérature, mais vu que ce domaine représente un très vaste et large champ de
compétences, nous allons essayer de définir exactement ce que nous avons exploité comme
techniques pour aller en avant dans la réalisation du projet.

1. Bibliothèques Python :
E. Tensorflow :

Tensorflow est une puissante bibliothèque d’apprentissage automatique orientée


flux de données (Data flow) créée par l’équipe Google Brain de Google et rendue
open source en 2015. Elle est conçue pour être facile à utiliser et largement
applicable à la fois pour de problèmes liés aux réseaux numériques et neuronaux, ainsi que
d’autres domaines. Tensorflow est l’un des outils les plus utilisés en intelligence artificielle dans
le domaine de l’apprentissage automatique 9

Le projet Google Brain a débuté en 2011 pour explorer les utilisations de réseaux de
neurones profonds à très grande échelle, à la fois pour la recherche et pour une utilisation dans les
produits de Google. Dans le cadre des premiers travaux de ce projet, l’équipe de Google Brain a
construit DistBelief, la première génération évolutive d’apprentissage. Et grâce à l’expérience

55 | P a g e
d’équipe avec

56 | P a g e
DistBelief et d’une compréhension plus complète des propriétés de système souhaitables et des
exigences en matière d’apprentissage et d’utilisation de réseaux neuronaux, Tensorflow a connu
le 11 février 2017, la naissance de la deuxième génération de système Google Brain pour la mise
en œuvre et le déploiement de modèles d’apprentissage automatique à grande échelle. En février
2018, Google a annoncé la mise à disposition de TPUs (unité de traitement de tenseur) en version
bêta sur la plateforme Google Cloud (Girija 2016).

Ce qui encourage les utilisateurs de cet outil est ses avantages représenté ci-dessous :

 Open source rapide, flexible, et évolutif pour la recherche et la production ;


 Portabilité : Tensorflow s’exécute sur des GPUs, CPUs (Unité centrale de traitement) et
TPUs, desktops et sur les serveurs. Ainsi, il donne la possibilité de déployer un modèle
entraîné sur un mobile en tant que partie de produit, et c’est ainsi qu’il constitue une
véritable fonctionnalité de portabilité (sof 2016).
 Tensorflow disponible pour plusieurs langages : Python, R, C++, Java, C# etc ;

F. Keras

Keras est une API de réseaux de neurones de haut niveau,


écrite en Python. En effet, c’est un framework d’apprentissage en
profondeur (deep learning) qui offre un moyen pratique de
définir et de former presque tous les types de modèles
d’apprentissage en
profondeur. Keras a été initialement développé pour les chercheurs, dans le but de permettre une
expérimentation rapide. Ainsi, il est capable de s’exécuter sur Tensorflow, Microsoft Cognitive
(Chollet François 2018).
Toolkit (CNTK) ou Theano

Keras compte plus de 250 000 utilisateurs individuels à la moitié du 2018 (d’après la
documentation de cet outil), allant des chercheurs universitaires aux ingénieurs des startups et des
grandes entreprises aux étudiants diplômés et aux amateurs. Keras est utilisé chez Google,
Netflix, Uber, CERN, Yelp, Square et des centaines de startups travaillant sur un large éventail de
problèmes. C’est également un framework populaire sur Kaggle, où presque tous les concours
récents d’apprentissage en profondeur ont été gagnés avec des modèles Keras.
57 | P a g e
Il a été développé dans le cadre des efforts de recherche du projet ONEIROS (Système
d’exploitation de robot intelligent neuroélectronique). Son auteur et responsable principal est
François Chollet, un ingénieur de Google. Sa première publication a eu lieu le 27 mars 2015.

En 2017, l’équipe Tensorflow de Google a décidé de prendre en charge Keras dans la


bibliothèque principale de Tensorflow. Puis Microsoft a également ajouté à Keras un backend
CNTK, disponible à partir de CNTK v2.0.

De ce qui suit, nous résumons les avantages de cet API dans les points suivants :

 Open source ;
 Permet un prototypage simple et rapide (convivialité, modularité et extensibilité) ;
 Prend en charge les réseaux convolutifs et les réseaux récurrents, ainsi que les
combinaisons des deux ;
 Fonctionne parfaitement sur CPU et GPU ;
 Keras avait plusieurs backends tels que Tensorflow, CNTK et Theano ;
 Keras est compatible avec Python.

Cependant, Keras ne gère que les API de haut niveau qui s’exécutent sur un autre moteur ou
infrastructure tels que Tensorflow, Theano ou CNTK. Les cinq plateformes, packages et
bibliothèques expliqué précédemment sont des outils open-source que nous avons utilisé au cours
de ce travail, leurs configurations et la comparaison entre elles sera expliqué respectivement dans
le chapitre modélisation 4.1 et le chapitre évaluation 5.1.

Dans la section suivante, nous allons décrire les principaux algorithmes que nous avons
adopté pour cette étude, leur principe, leur spécificité et quelques principaux hyper paramètres
propres à chacun d’entre eux.

G. Numpy :

NumPy est une bibliothèque pour langage de programmation Python,


destinée à manipuler des matrices ou tableaux multidimensionnels ainsi que
des fonctions mathématiques opérant sur ces tableaux.

58 | P a g e
Plus précisément, cette bibliothèque logicielle libre et open source fournit de multiples
fonctions permettant notamment de créer directement un tableau depuis un fichier ou au contraire
de sauvegarder un tableau dans un fichier, et manipuler des vecteurs, matrices et polynômes.

NumPy est la base de SciPy, regroupement de bibliothèques Python autour du calcul scientifique

10.

NumPy cible l'implémentation de référence CPython de Python, interpréteur non optimisé


de bytecode. Les algorithmes mathématiques écrits pour cette version de Python sont souvent
beaucoup plus lents que leurs équivalents qui ont été compilés. NumPy résout le problème de la
lenteur en partie en fournissant des tableaux multidimensionnels avec les fonctions et opérateurs
qui travaillent efficacement sur ces tableaux. Leur utilisation nécessite la réécriture d'une partie
du code source, et notamment, les boucles internes.

L'utilisation de NumPy dans Python offre des fonctionnalités comparables à celles


de MATLAB car ils sont tous deux interprétés. Ils permettent tous deux à l'utilisateur d'écrire des
programmes rapides en réalisant des opérations sur des tableaux ou des matrices à la place
de scalaires. MATLAB dispose d'un grand nombre de boîtes à outils supplémentaires telles
que Simulink. NumPy, quant à lui, est intrinsèquement intégré à Python.

H. Matplotlib :

Matplotlib est une bibliothèque du langage de programmation Python destinée à tracer et


visualiser des données sous formes de graphiques5. Elle peut être combinée avec les bibliothèques
python de calcul scientifique NumPy et SciPy6. Matplotlib est distribuée librement et
gratuitement sous une licence de style BSD4. Sa version stable actuelle (la 2.0.1 en 2017) est
compatible avec la version 3 de Python.

Plusieurs points rendent cette bibliothèque intéressante :

 Export possible en de nombreux formats matriciels (PNG, JPEG...) et vectoriels


(PDF, SVG...)
 Documentation en ligne en quantité, nombreux exemples disponibles sur internet Forte
communauté très active

59 | P a g e
 Interface pylab : reproduit fidèlement la syntaxe MATLAB
 Bibliothèque haut niveau : idéale pour le calcul interactif

Figure 16 : Quelques graphes de Matplotlib

2. Outils employés :
Avant d’entamer la phase de développement du modèle de classification sélectionné pour ce
travail (RF, GBM, XGB et Deep learning). L’installation et la configuration des différents
plateformes open source utilisées dans cette étude (Anaconda, Tensorflow et Keras) m’a exigé
une période assez importante. Bien évidemment, cette phase a consisté à comprendre et à se
familiariser avec le mode de fonctionnement et d’implémentation de chaque plateforme. En effet,
cette phase m’a permis d’approfondir mes connaissances dans le domaine de la programmation
des modèle deep learning avec Python.

Il est à noter que toutes ces plateformes, packages et bibliothèques sont installés et
configurés sur un ordinateur portable Asus avec 8 Gb en RAM et un processeur Intel R core(TM)
i7 – 3610QM CPU @ 2.30 GHz (8CPUs) ∼ 2.3 GHz. Cet ordinateur a un système d’exploitation
Windows 10.

60 | P a g e
Figure 17 : Configuration de l’ordinateur utilisé pour ce travail

Puisque notre projet est basé sur Python, nous avons besoin de préparer un environnement
python, pour cela, il ne faut pas trop se compliquer la tâche, il y a un outil qui englobe un
environnement python scientifique complet, avec la possibilité de l’installation des librairies et
des framworks dont nous avons besoin, c’est Anaconda

A. Anaconda :

Anaconda est une distribution libre et Open Source des langages de


programmation Python et R appliqué au développement d'applications dédiées à la science des
données et à l'apprentissage automatique, qui vise à simplifier la gestion des paquets et de
déploiement3. Les versions de paquetages sont gérées par le système de gestion de
paquets conda. La distribution Anaconda est utilisée par plus de 6 millions d'utilisateurs et
comprend plus de 250 paquets populaires en science des données adaptés pour Windows, Linux
et MacOS.

61 | P a g e
Figure 18 : L’intergace graphique d’Anaconda

Navigateur Anaconda :

Le Navigateur Anaconda est une interface graphique (GUI) incluse dans la distribution
Anaconda, et qui permet aux utilisateurs de lancer des applications, mais aussi de gérer les
librairies conda, les environnements et les canaux sans utiliser la moindre ligne de commande.

Le Navigateur peut également accéder à des librairies présentes sur le Cloud Anaconda ou
dans un Repository Anaconda local, afin de les installer dans un environnement, les exécuter et
les mettre à jour. Il est disponible pour Windows, macOS et Linux.

Les applications suivantes sont disponibles par défaut dans le navigateur:

 JupyterLab
 Jupyter Notebook
 QtConsole5
 Spyder
 Glue
 Orange
 RStudio
 Visual Studio Code

62 | P a g e
Concernant L’installation de Tensorflow et Keras, nous étions obligé de créer un nouvel
environnement Anaconda, puis l’activer pour installer les packages Tensorflow et Keras qui
nécessite la version Python 3.6. ou ultérieure.(nous utilisons V3.8)

Les étapes d’installation sont expliqués ci-dessous :

1. La création d’un environnement conda nommé « tensorflow » (le nom est arbitraire, on
peut choisir ce que l’on veut) en appelant la commande suivante :

conda create -n tensorflow pip python=3.8

2. L’activation de l’environnement Conda en exécutant la commande suivante :

activate tensorflow

Une fois cette configuration est terminée, nous somme prêt à installer les bibliothèques
Python utilisées pour Deep Learning, notamment : TensorFlow et Keras.

Pour installer TensorFlow, taper la commande suivante :

pip install tensorflow

Finalement pour installer la dernière API Keras, on vérifie tout d’abord la présence de l’un de ses
moteurs : TensorFlow, Theano ou CNTK. il suffit de taper la commande suivante :

pip install keras

B. Jupyter :

Jupyter Notebook est une application web utilisée pour programmer dans plus de 40
langages de programmation, dont Python, Julia, Ruby, R, ou encore Scala. C'est

63 | P a g e
un projet communautaire dont l'objectif est de développer des logiciels libres, des formats
ouverts et des services pour l'informatique interactive. Jupyter est une évolution du projet
IPython. Jupyter permet de réaliser des calepins ou notebooks, c'est-à-dire des programmes
contenant à la fois du texte en markdown et du code. Ces calepins sont utilisés en science des
données pour explorer et analyser des données.

Nous allons nous en servir pour écrire et exécuter notre code pour construire notre modèle de
deep learning, pour exécuter la tâche de classification d’images.

3. VGG16 :
VGG16 est le modèle de Réseaux de Neurones Convultifs que nous avons exploité pour
effectuer ce travail, donc de classifier les images.

Il est le modèle de réseau de neurones convolutif proposé par K. Simonyan et A. Zisserman


de l'Université d'Oxford dans l'article « Very Deep Convolutional Networks for Large-Scale
Image Recognition ». Le modèle atteint une précision de test de 92,7% dans le top 5 dans
ImageNet,qui est un ensemble de données de plus de 14 millions d'images appartenant à 1000
classes. C'était l'un des célèbres modèles soumis à l' ILSVRC-2014 . Il apporte une amélioration
par rapport à AlexNet en remplaçant les grands filtres de la taille du noyau (11 et 5 dans la
première et la deuxième couche convolutive, respectivement) par plusieurs filtres de la taille du
noyau 3 × 3 les uns après les autres. VGG16 a été entraîné pendant des semaines et utilisait les
GPU NVIDIA Titan Black.

Figure 19 : Couches de VGG16

64 | P a g e
a. Architecture de VGG16:

La figure ci-dessous décrit l’architecture de VGG16

Figure 20 : Architecture de VGG16

L'entrée de la couche cov1 est d'une image RVB de taille fixe 224 x 224. L'image est passée
à travers un empilement de couches convolutives (conv.), où les filtres ont été utilisés avec un
très petit champ récepteur : 3×3 (qui est la plus petite taille pour capturer la notion de
gauche/droite, haut/bas, centre ). Dans l'une des configurations, il utilise également des filtres de
convolution 1 × 1, qui peuvent être considérés comme une transformation linéaire des canaux
d'entrée (suivie de non-linéarité). La foulée de convolution est fixée à 1 pixel ; le remplissage
spatial de conv. l'entrée de la couche est telle que la résolution spatiale est conservée après
convolution, c'est-à-dire que le remplissage est de 1 pixel pour 3×3 conv. couches. La mise en
commun spatiale est réalisée par

65 | P a g e
cinq couches max-pooling, qui suivent une partie de la conv. couches (toutes les couches de
conv. ne sont pas suivies par max-pooling). Le max-pooling est réalisé sur une fenêtre de 2×2
pixels,

Trois couches entièrement connectées (FC) suivent une pile de couches convolutives (qui ont
une profondeur différente selon les architectures) : les deux premières ont chacune 4096 canaux,
la troisième effectue une classification ILSVRC à 1000 voies et contient donc 1000 canaux (un
pour chaque classer). La dernière couche est la couche soft-max. La configuration des couches
entièrement connectées est la même dans tous les réseaux.

Toutes les couches cachées sont équipées de la non-linéarité de rectification (ReLU). Il est
également noté qu'aucun des réseaux (sauf un) ne contient de normalisation de réponse locale
(LRN), une telle normalisation n'améliore pas les performances sur l'ensemble de données
ILSVRC, mais entraîne une augmentation de la consommation de mémoire et du temps de calcul.

b. Avantages :

VGG16 représente un taux de précision élevé par rapport à d’autres modèles, sur le Dataset
ImageNet, ce qui fait que VGG16 est un modèle très performant :

c. Inconvénients :

Malheureusement il existe deux inconvénients majeur de VGG16, qui peuvent handicaper


l’utilisation de ce modèle dans l’apprentissage :

 Il est très lent à s’entrainer


 Les poids de l'architecture réseau eux-mêmes sont assez importants (concernant le
disque/la bande passante).

Ces deux inconvénients m’ont posé problème surtout que ma machine n’est pas suffisamment
performantes pour ce genre de traitement.

4. Deep learning pour la classification d’images :


66 | P a g e
Maintenant, que nous avons préparé notre environnement de développement, nous pouvons
attaquer la phase de programmation du modèle de deep learning capable de classifier les images
des vêtements, et de nous dire quel type est-il présent dans l’image.

d. Préparation des données :

Nous allons nous servir d’une base de données déjà fourni et prête à l’utilisation qui
s’appelle DeepFashion 12 .

Figure 21 : DeepFashion Dataset

Le Dataset DeepFashion est une base de données de vêtements à grande échelle, qui présente
plusieurs caractéristiques intéressantes : Prédiction de catégorie et d'attribut de vêtements,
référence de récupération de vêtements en magasin, référence de récupération de vêtements du
consommateur à la boutique et référence de détection de point de repère de la mode, collectées
par le laboratoire multimédia à l'Université chinoise de Hong Kong. Cependant, pour notre projet,
nous n'utiliserons que le Dataset concernant : « Category et Attributes Prediction » car nous
allons travailler sur la détection et la classification des vêtements dans les images

Pour ce projet, nous avons créé notre propre sous-ensemble de données, réduisant le volume
d'images et la spécificité des catégories, pour plus de simplicité et des coûts de calcul réduits.
Nous
67 | P a g e
avons réduit notre classement DeepFashion. des 46 catégories d'origine de 's à 15
catégories. Ensuite, nous avons sélectionné 500 à 700 images dans chacune de nos catégories
simplifiées, comme le montre la figure ci-dessous :

Figure 22 : Notre Sous Dataset utilisé

e. Description du modèle :

Le système d'apprentissage en profondeur (Deep learning) alimenté par l'IA dans l'industrie
de la mode peut détecter, reconnaître, puis recommander ou générer de nouvelles conceptions. La
classification des vêtements peut être effectuée par un réseau approfondi formé sur des images
des différents types de vêtements. Les réseaux profonds peuvent également être formés pour
prédire les attributs des vêtements et détecter les vêtements individuels. Des images réelles
représenteront des personnes portant plusieurs types de vêtements. Par exemple, quelqu'un peut
porter un jean, une chemise et une veste. Il est préférable d'avoir un système robuste capable de
détecter tous ces

68 | P a g e
éléments à la fois. Le réseau neuronal peut être formé pour détecter un ou plusieurs types et
envoyer chaque partie détectée au réseau pour être classée dans l'une des catégories de vêtements.

Figure 22 : Architecture de CNN pour la classification des vêtements

f. Chargement du Dataset , et extraction des données :

Dans ce projet, nous avons choisi d’utiliser TensorFlow et Keras pour affiner VGG16, car
Keras fournit des outils faciles à utiliser pour charger des données, charger des modèles pré-
entraînés et affiner. Les ImageDataGenerator outils nous aideront à charger, normaliser,
redimensionner les données.

Pour commencer, importons les bibliothèques dont nous aurons besoin :

69 | P a g e
Maintenant que nous avons les bases, importons ImageDataGenerator, ajoutons notre
répertoire de données et commençons à charger les données d'entraînement et de validation. Les
données de validation ne représenteront que 10% de nos données d'entraînement : nous n'avons
besoin que des données de validation pour affiner les hyperparamètres du VGG16 pendant
l'entraînement. Nous définissons notre taille de lot dans cette partie du code

70 | P a g e
Maintenant que la fonction DalaLoad est définie, utilisons-la pour extraire nos
données d'entraînement et de validation et redimensionner les images à la forme qui
correspond à notre modèle pré-entraîné : 224 x 224 x 3.

Avant cela nous devons charger le modèle « keras.applications.vgg16 » :

Comme nous le constatons, il existe :

 7656 images d’entrainement


 842 images de validation.

Il est temps de charger le réseau VGG16 depuis Keras et d'afficher sa ligne de base :

71 | P a g e
Ensuite nous chargeons les poids ImageNet de ce réseau, afin de pouvoir l’utiliser lors de
l’apprentissage par transfert.

72 | P a g e
Avec la ligne de base du réseau et ses poids correspondants chargés, commençons à
restructurer le VGG16 pour classer les 15 catégories de vêtements différentes. Pour ce faire, nous
ajouterons une couche d'aplatissement, trois couches denses de 100 nœuds, une couche dense de
15 couches représentant les 15 catégories de vêtements et une couche Softmax pour afficher les
probabilités de classe (catégorie).

Cela donne les résultats suivants :

73 | P a g e
g. Apprentissage par transfert de VGG16 :

L'apprentissage par transfert pour VGG16 commence par le gel des poids du modèle qui
avaient été obtenus en entraînant le modèle sur un vaste ensemble de données tel qu'ImageNet . Ces

74 | P a g e
poids et filtres appris fournissent au réseau d'excellentes capacités d'extraction de
caractéristiques, ce qui nous aidera à augmenter ses performances lorsqu'il sera formé pour
classer les catégories de vêtements. Par conséquent, seules les couches entièrement connectées
(FC) seront entraînées tout en gardant la partie d'extraction de caractéristiques du modèle presque
gelée (en définissant un taux d'apprentissage très faible, comme 0,001). Gelons les couches
d'extraction d'entités en les définissant sur False :

Maintenant, nous pouvons compiler notre modèle en choisissant un taux d'apprentissage de (0.001)
et
l’Optimizer (Adamax) :

Après la compilation, nous pouvons lancer l’entrainement du modèle en utilisant la fonction


fit_generator(), puisque nous utilisons ImageDataGenerator pour charger nos données. Nous
allons entrainer et valider notre modèle en exploitant les données présentes et indiquées dans
les listes train_data et val_data. Nous avons choisi d’entrainer le modèle en 3 époques(epochs) :

Cela donne les résultats suivants :

75 | P a g e
Maintenant, pour tracer les courbes d'apprentissage et de Loss , ajoutons la fonction plot_history

Visualisons :

Figure 23 : Plot de précision du modèle pour train et validation

76 | P a g e
Figure 24 : Plot de Loss du modèle pour train et validation

h. L’évaluation du modèle sur des nouvelles images:

Notre réseau s'est bien comporté pendant la formation. Il devrait donc également être
performant lorsqu'il est testé sur des images de vêtements qu'il n'avait jamais vues
auparavant, Nous allons le tester sur notre ensemble d'images de test.

Tout d'abord, chargeons l'ensemble de test, puis transmettons les images de test au modèle à
l'aide de la fonction model.evaluate pour mesurer de la précision du réseau.

77 | P a g e
D’après les résultats, il s’avère que notre modèle est bien entrainé, il a atteint une précision
de 0.92, pour l’ensemble de données de test.

i. Evaluation du modèle sur une image du test :

Maintenant passons au réseau une image sélectionnée aléatoirement du répertoire du test, et


d’une catégorie donnée, et voyons si le modèle réussira à la prédire correctement, sachant que
l’image sélectionné doit être difficile à prédire, vu qu’elle contiendra plusieurs types
vestimentaires portées par une personne. par exemple, Jeans et Top. L'image sera lue
et traitée avec preprocess_input qui redimensionne l'image et la redimensionne pour s'adapter à
l'entrée du réseau formé.

Après avoir sélectionné l'image, nous la passerons à travers le modèle et


obtiendrons la sortie (prédiction).

78 | P a g e
Résultat obtenue pour l’image choisie :

Comme on peut le constater le modèle a pu prédire que la personne en image porte un Jeans

j. Calcul de nombres des images mal classées :

Étudions plus en détail la robustesse du modèle dans la détection des catégories de


vêtements. Pour ce faire, nous allons créer une fonction qui sélectionnera un lot aléatoire
d'images dans l'ensemble de test et le passera à travers le modèle pour prédire leurs classes, puis
calculera le nombre d'images mal classées.

Calculons maintenant le nombre d'images mal classées.

79 | P a g e
Le modèle fait des prédictions erronées, donc il reste à améliorer

k. Évaluation du modèle à l'aide d'un ensemble de données aléatoire :

Nous allons maintenant créer une fonction qui sélectionnera n'importe quelle image à partir
de n'importe quel ensemble de données - comme l'entraînement, les tests ou la validation - et
affichera les résultats sous la forme "classe vraie vs prédite" sous les images. Pour faciliter
l'interprétation des résultats, nous afficherons le nom de la catégorie (par exemple, "Jeans") plutôt
que comme un numéro de classe (par exemple, "5").

80 | P a g e
l. Améliorer les performances du réseau :

Comme nous l'avons montré dans les sections précédentes, les performances du réseau
étaient assez bonnes. Cependant, il peut être amélioré.

En effet, la raison pour laquelle notre modèle ne fonctionne pas parfaitement, est le Dataset,
qui n’est pas suffisant pour l’apprentissage, vu que le Dataset DeepFashion intégral, est énorme,
et nous ne nous en servirons que d’un échantillon allégé. Ce que nous pouvons effectuer, c’est
élargir un peu le volume du Dataset d’entrainement du réseau, c’est ce que l’on appelle :
l’augmentation des données.

L’augmentation des données est susceptible d’améliorer les performances du réseau lorsqu'il
est testé sur de nouvelles images de différents types et de différentes qualités. Le but de

81 | P a g e
l'augmentation des données est d'améliorer la capacité de généralisation du réseau. Cet objectif
est atteint en entrainant le réseau sur des images augmentées qui peuvent couvrir toutes les
permutations d'images que le réseau formé peut rencontrer lorsqu'il est testé sur des images
réelles.

Cela pourrait être fait grâce à la bibliothèque Keras, qui offre des outils prêts à utilisation
pour cet objectif, en rajoutant, tout simplement, des opérations de Zoom et de rotation aux images
existantes dans le Dataset, dans la fonction ImageDataGenerator :

La fonction ci-dessous nous montrera comment les images seront augmenté à partir des images
existantes, en plotant toutes les variantes augmentées :

82 | P a g e
Ainsi, nous pouvons maintenant afficher n’importe quelle image de notre Dataset, et voir ses
dérivées qui seront rajoutées au Dataset grâce à ce segment de code :

83 | P a g e
Exemple supplémentaire :

Maintenant il suffit de relancer l’entrainement du modèle, tout en exécutant notre fonction


d’augmentation de données, afin que notre ensemble de données d’entrainement devienne plus
pertinent.

m. Conclusion :

Dans la fin de la partie du codage du modèle de classification d’image de vêtements, notre


projet a traversé un long chemin vers la réalisation, et la concrétisation de l’idée générale du
projet,

84 | P a g e
ainsi la recherche menée pour arriver à ce résultat n’était pas évidente, vu que ce domaine
d’apprentissage en profondeur, m’était un domaine ambigu, et complétement nouveau.

Cependant, la réalisation faite jusqu’à présent, ne représente que le premier pas vers le
présent projet, le chemin de concrétisation de l’application est encore long, et ne fait que débuter,
avec tous ces effort, toutefois, le premier pas reste toujours le plus difficile à faire.

85 | P a g e
Conclusion générale :
Contrairement à ce que l’évidence peut laisser croire, la réalisation d’un projet de PFE,
quelle que soit son ampleur ou son contexte, suscite une recherche de l’excellence, et donc fait
appel à l’initiative ; la responsabilité, l’enthousiasme et l’engagement. Il nécessite également une
vision claire de l’action envisagée, et donc d’une formulation claire de toute phase de réalisation,
depuis la détermination du sujet du projet, jusqu’à l’imagination des micros détails du
déroulement de la réalisation, ainsi qu’un accompagnement et un suivi de compétences
significatives.

En effet la concrétisation de ce projet peut offrir un large portail aux recherches vers
l’automatisation des processus de gestion des applications des particuliers, afin de donner aux
utilisateurs une aisance à prendre en main leurs tâches quotidiennes, leur offrant une chance de
regagner en terme de temps et d’économies.

En outre de cela, une telle application peut offrir aux entreprises une visibilité énorme sur le
marché, par le biais de la récolte de données des préférences des consommateurs de la mode, afin
d’améliorer leur offre, ciblant à la fois la satisfaction d’une large clientèle, toujours en demande,
et une économie en exponentielle évolution.

Ainsi nous tenons à remarquer que ce travail, était d’un fructueux apport aux niveau des
connaissances, de les mettre en question, et de les mettre en application, pour générer une
expérience significative, dans différents secteurs de l’intelligence artificielle, de vue des
difficultés et des défis rencontrés durant, la recherche, et la réalisation de ce projet.

Néanmoins, les perspectives gardent les portes ouvertes vers une continuation de travail, afin
d’accomplir et de compléter qui reste encore en développement, et de le concrétiser dans son
intégralité en terme de :

 La programmation des fonctionnalités de l’application mobile en question.


 Repenser les fonctionnalités, et en rajouter d’autres
 L’amélioration le CSP responsable de synthèse de tenue vestimentaires et de le
rendre opérationnel pour choisir des vêtements convenables à partir d’une base de
données de l’utilisateur, tout en se basant sur plusieurs critères tel que le type, les

86 | P a g e
couleurs, les types de tissu…etc et en prenant en considération les deux sexe et
plusieurs paramètres.
 Ajouter d’autres modèles de deeplearning, et de machine learning, Afin de
générer des données exploitables, et de faire des recommandations pertinentes aux
clients

87 | P a g e
Références :
Webographie :
1. https://www.statista.com/topics/5091/apparel-market-worldwide/
2. https://fr.wikipedia.org/wiki/Intelligence_artificielle#:~:text=L'intelligence%20a
rtificielle%20(IA),qu'une%20discipline%20autonome%20constitu%C3%A9e.
3. https://datascientest.com/intelligence-artificielle-definition
4. https://hal.archives-ouvertes.fr/hal-02327501/document
5. https://www.lebigdata.fr/computer-vision-definition
6. https://blog.clevy.io/nlp-et-ia/introduction-machine-learning-1-3-
histoire/#:~:text=En%201959%2C%20c'est%20l,quatri%C3%A8me%20joueur
%20des%20%C3%89tats%2DUnis.
7. https://moncoachdata.com/blog/comprendre-les-reseaux-de-neurones/
8. https://www.i3s.unice.fr/~malapert/thesis/split/chapitre2.pdf
9. https://en.wikipedia.org/wiki/TensorFlow
10. https://fr.wikipedia.org/wiki/NumPy
11. https://neurohive.io/en/popular-networks/vgg16/
12. http://mmlab.ie.cuhk.edu.hk/projects/DeepFashion.html
13. https://github.com/keras-team/keras/issues/4465
14. https://www.memoireonline.com/07/15/9207/Resolution-dun-probleme-de-
satisfaction-de-contraintes-sur-les-intervalles.html
15. https://www.youtube.com/c/MachineLearnia

88 | P a g e
Bibiliographie :
 Soduku programming with C , Autheur : Giulio Zambon
 L’intelligence de l’intelligence artificielle , Autheur : Boris Barraud
 Machine learning A - Z Q&A
 Programmation par contraintes , Auhteur : David Savourey, CNRS Ecole Polytechnique
 Hands-on machine learning with Sci-kit learn & Tensorflow, Autheur : Aurélien Géron

89 | P a g e

Vous aimerez peut-être aussi