Rapport Final
Rapport Final
i
Abstract
iii
TABLE DES MATIÈRES
INTRODUCTION GÉNÉRALE....................................................................................................................5
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
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
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
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 :
Kafka
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.
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.
Structure du rapport :
6|Page
Chapitre 1 : Revue de littérature :
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.
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.
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.
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.
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.
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
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.
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.
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.
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.
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…
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.
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.
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.
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
• 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é).
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.
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.
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é.
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 :
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.
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.
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 :
26 | P a g e
Chapitre 2 :
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.
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.
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.
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.
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.
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.
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.
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.
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 :
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 :
2. Besoins techniques :
a. Big Data :
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.
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.
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.
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 :
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 :
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 :
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.
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.
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 :
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.
A. L’énoncé :
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 :
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.
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 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}
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.
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 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})
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.
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 » ) &
49 | P a g e
Contrainte numéro 12 :
Haut1 = « chemise » || Haut1 = « pull over » ==> haut2 = « manteau » || haut2 = «Veste » ||
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 :
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 :
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.
53 | P a g e
Chapitre 4 :
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 :
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 :
F. Keras
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.
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 :
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.
H. Matplotlib :
59 | P a g e
Interface pylab : reproduit fidèlement la syntaxe MATLAB
Bibliothèque haut niveau : idéale pour le calcul interactif
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 :
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.
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)
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 :
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.
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 :
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.
64 | P a g e
a. 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 :
Ces deux inconvénients m’ont posé problème surtout que ma machine n’est pas suffisamment
performantes pour ce genre de traitement.
Nous allons nous servir d’une base de données déjà fourni et prête à l’utilisation qui
s’appelle DeepFashion 12 .
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 :
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.
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.
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.
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).
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) :
75 | P a g e
Maintenant, pour tracer les courbes d'apprentissage et de Loss , ajoutons la fonction plot_history
Visualisons :
76 | P a g e
Figure 24 : Plot de Loss du modèle pour train et validation
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.
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
79 | P a g e
Le modèle fait des prédictions erronées, donc il reste à améliorer
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 :
m. Conclusion :
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 :
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