RAPPORT
De Projet de Fin d’Etudes
SUJET
Augmentation d’une base d’apprentissage
Pour le Deep Learning
Présenté par :
Gouadria Oumaima
Encadré par :
Introduction Générale.................................................................................................................1
Chapitre 1 : Présentation générale et état de l’art.......................................................................3
1.1. Introduction.................................................................................................................3
1.2. Présentation de l’ADDIXO.......................................................................................3
1.3. Problématique.............................................................................................................3
1.4. Deep Learning.............................................................................................................4
1.5. Etat de l’art..................................................................................................................6
1.5.1. Opérateurs d’augmentation.......................................................................................6
1.5.2. Les réseaux génératifs adversaires GAN................................................................14
1.6. Conclusion................................................................................................................16
Chapitre 2 : Implémentation.....................................................................................................17
2.1. Introduction....................................................................................................................17
2.2. Choix des technologies..................................................................................................17
2.2.1. Python .................................................................................................................17
2.2.2. Tensorflow ............................................................................................................17
2.2.3. Keras ...................................................................................................................18
2.2.4. Pandas .................................................................................................................18
2.2.5. Numpy .................................................................................................................18
2.2.6. Scikit-Learn ..........................................................................................................18
2.2.7. Matplotlib ..............................................................................................................18
2.2.8. Scipy ...................................................................................................................18
2.2.9. Open CV .............................................................................................................19
2.2.10. Django ................................................................................................................19
2.3. Présentation de la base d’apprentissage.........................................................................19
2.4. Augmentation par les opérateurs de transformation d’images......................................20
2.4.1. Rotation...................................................................................................................20
2.4.2. Injection du bruit Speckle Noise............................................................................21
2.4.3. Injection du bruit poivre et sel (Salt and Pepper Noise)........................................21
2.4.4. Injection de bruit Gaussien (Gaussian Noise).........................................................22
2.4.5. Shadow (ombre)......................................................................................................22
2.4.6. Shade color..............................................................................................................23
2.4.7. Enhancement (Renforcement)................................................................................23
2.4.8. Blur (Flou)..............................................................................................................25
2.5. SRGAN (Super Résolution GAN).................................................................................27
2.6. Interface graphique :......................................................................................................28
2.7. Conclusion.....................................................................................................................29
Chapitre 3 : Test et évaluation..................................................................................................30
3.1. Introduction....................................................................................................................30
3.2. Les réseaux de neurones convolutionnels CNN............................................................30
3.3. Notre modèle CNN........................................................................................................31
3.4. Résultats de notre CNN pour la base d’ADDIXO.......................................................32
3.5. Résultats de notre CNN pour la nouvelle base d’apprentissage....................................34
3.6. Conclusion.....................................................................................................................38
Conclusion Générale et Perspectives........................................................................................39
Bibliographie.............................................................................................................................41
Liste des figures
Annexe 1...................................................................................................................................43
Introduction Générale
Le contrôle qualité est une tâche importante dans le processus d’un système de production. Il
vise à vérifier que le produit correspond bien au cahier des charges initial et respecte bien
certaines normes techniques. C’est un élément clé du processus de création de valeur pour
l’entreprise.
L’objectif de la phase d’apprentissage est d’utiliser les données disponibles pour identifier des
règles de décision permettant de prédire le résultat à propos de données futures. Dans notre
cas les données disponibles sont les pièces défectueuses et les pièces non défectueuses. Afin
de tirer profit de Deep Learning, il est nécessaire de disposer d’une grande base de données
d’apprentissage (Dataset). Or, généralement dans le domaine du contrôle qualité, nous ne
disposons que d’une base limitée d’échantillons. Pour pallier cet inconvénient, il est donc
nécessaire d’agrandir la base d’apprentissage et de créer de nouvelles données
d’apprentissage.
C’est dans le cadre que se suite notre projet de fin d’études. L’objectif de ce travail consiste à
augmenter la taille de la base d’apprentissage initiale en générant de nouvelles images. Pour
ce faire, des transformations mathématiques seront effectuées sur les images originales de la
base d’apprentissage client. Ces transformations seront effectuées entre autres par le biais de
certains opérateurs de traitement d’images.
Notre projet consiste donc à augmenter la taille de la base d’apprentissage initiale en générant
de nouvelles images par le biais de filtres et d’opérateurs géométriques. La base
d’apprentissage fournie par ADDIXO est une base relative au domaine du contrôle qualité
1
Elle est composée d’un ensemble de pièces non défectueuses et des pièces non défectueuses
Le but étant d’apprendre si une pièce contient des défauts de fabrication ou non.
Notre rapport est décomposé en trois chapitres. Dans le premier chapitre, nous présentons le
contexte de notre travail. Nous commençons par présenter la société d’accueil ainsi que la
problématique. Ensuite, nous donnons les notions de base du Deep Learning. Enfin nous
présentons quelques techniques utilisées dans la littérature, pour l’agrandissement des bases
d’apprentissages.
Nous détaillons dans le second chapitre l’implémentation des différents opérateurs utilisés, la
méthode SRGAN ainsi que l’interface graphique développée.
Dans le troisième chapitre intitulé ’’Tests et évaluations’’, nous présentons les résultats
obtenus suite à l’agrandissement de la base d’apprentissage. Ensuite, nous analysons et
évaluons les résultats obtenus.
Enfin nous présentons la conclusion générale ainsi que les perspectives de notre travail.
2
Chapitre 1 : Présentation générale et état de l’art
1.1. Introduction
Nous commençons par présenter la société d’accueil, à savoir la société ADDIXO. Ensuite,
nous expliquons notre problématique qui consiste à agrandir une base d’apprentissage dans le
but d’avoir de bonnes performances pour un apprentissage par le Deep Learning. Enfin, nous
terminons par un état de l’art sur les méthodes d’augmentation de base d’apprentissage.
ADDIXO [3] est une entreprise de développement des machines industrielles, spécialisée
dans l’ingénierie des solutions multi-techniques à forte valeur ajoutée pour l'industrie 4.0.
ADDIXO aide ses clients, confrontés à une accélération des innovations et des
transformations technologiques, en l’accompagnant de leurs projets d’ingénierie grâce à son
savoir-faire dans la gestion des projets R&D et à ses ressources compétitives de haute qualité.
1.3. Problématique
Le contrôle qualité est une tâche importante dans le processus d’un système de production. Il
vise à vérifier qu’un produit correspond bien au cahier des charges initial et respecte bien
certaines normes techniques. C’est un élément clé du processus de création de valeur pour
l’entreprise.
3
Les techniques d’intelligence artificielle (IA) et plus particulièrement les techniques
d’apprentissage profond (Deep Learning) ont été appliquées avec succès dans différents
domaines et notamment le contrôle qualité.
L’entreprise ADDIXO cherche à développer un système intelligent de contrôle qualité
permettant la détection des pièces défectueuses. Pour ce faire, des méthodes d’apprentissage
et plus particulièrement de Deep Learning seront utilisées.
L’objectif de la phase d’apprentissage est d’utiliser les données disponibles pour identifier des
règles de décision permettant de prédire le résultat à propos de données futures. Dans le cadre
de notre projet, les données disponibles sont les pièces défectueuses et les pièces non
défectueuses. Afin de tirer profit du Deep Learning, il est nécessaire de disposer d’une grande
base de données d’apprentissage (Dataset). Or, généralement, dans le domaine du contrôle
qualité, nous ne disposons que d’une base limitée d’échantillons. Pour pallier cet
inconvénient, il est donc nécessaire d’agrandir la base d’apprentissage et de créer de nouvelles
données d’apprentissage.
C’est dans ce cadre que se situe notre projet de fin d’études. L’objectif de ce travail consiste à
augmenter la taille de la base d’apprentissage initiale en générant de nouvelles images. Pour
ce faire, des transformations mathématiques seront effectuées sur les images originales de la
base d’apprentissage client. Ces transformations seront effectuées entre autres par le biais de
certains opérateurs de traitement d’images.
4
Un réseau de neurones artificiels est un système informatique matériel ou logiciel dont le
fonctionnement est équivalent à celui des neurones du cerveau humain.[7]
Avoir un grand ensemble de données est crucial pour les performances du modèle
d'apprentissage en profondeur. Cependant, nous pouvons améliorer les performances du
modèle en augmentant les données.
C’est une technique pour créer artificiellement de nouvelles données d'entraînement à partir
des données d'entraînement existantes.
L'augmentation des données images est peut-être le type d'augmentation de données le plus
connu et implique la création de versions transformées d'images dans l'ensemble de données
d'apprentissage qui appartiennent à la même classe que l'image d'origine.
Les transformations comprennent une gamme d'opérations du domaine de la manipulation
d'images, telles que les opérateurs de décalages, de retournements, et bien plus encore.
Dans cette partie on va identifier tous les opérateurs et les méthodes d’agrandissement des
bases d’images.
Plusieurs opérateurs d’augmentation existent dans la littérature. Ces opérateurs sont des
opérateurs mathématiques qui permettent de porter des transformations sur l’image.
La rotation
Une rotation est une isométrie qui permet de tourner les images autour d’un point et d’un
certain angle. [10]
6
La rotation illustrée par la figure2 est notée R (O, a) où O est le centre et ‘a’ l’angle. Le
centre de rotation est un point invariant. Il existe deux sens de rotation possibles :
Le sens des aiguilles d’une montre et le sens contraire aux aiguilles d’une montre. Dans le cas
du sens des aiguilles d'une montre : dans ce cas l'angle est négatif. Il varie de 0 à -360°.
Le sens contraire des aiguilles d'une montre : est le sens trigonométrique. Dans ce sens l'angle
de rotation est positif et varie de 0 à 360°.
Des valeurs particulières de l'angle de rotation conduisent à des situations très particulières.
Ainsi une rotation d’angle égal à 0°, 360° ou -360° fait correspondre chaque point d'une
image à lui-même. [10]
Le retournement (flip)
Les retournements (flips) sont aussi des rotations avec des angles particuliers. Si l’angle de
rotation est égal à 180° ou -180° on parle de flip vertical. Si l’angle de rotation est égal à 90°
ou -90° c’est un flip horizontal.
7
La translation
La translation permet de glisser l’image. Soit un point de coordonnées (x, y). Si (x, y) subit
une translation (a, b), sa nouvelle position (x’, y’) vérifie :
x’=x+a
y’=y+b
Bruit (Noise)
Généralement il est souhaitable que la luminosité de l'image soit uniforme, sauf lorsqu’elle
change pour former une image. Il existe alors des facteurs qui tendent à produire une
Variation de la luminosité d'une image affichée même en l'absence de détail d’image. Cette
variation est généralement aléatoire et n'a pas de schéma particulier. Dans de nombreux cas, il
réduit la qualité de l’image. Il est particulièrement important lorsque les images contiennent
des objets très petits et présentent un contraste relativement faible. Cette variation aléatoire de
la luminosité de l'image est appelée « Bruit ». La présence de bruit donne à une image un
aspect marbré, granuleux, texturé ou neigeux.
Également il est possible de traiter des détails de scène non pertinents comme s'il s'agissait de
bruit d'image (par exemple, des textures de réflexion de surface). Les caractéristiques du bruit
dépendent de sa source, comme l'opérateur qui réduit le mieux ses effets.
De nombreux packages de traitement d'image contiennent des opérateurs pour ajouter
artificiellement du bruit à une image. La corruption délibérée d'une image avec du bruit nous
8
permet de tester la résistance d'un opérateur de traitement d'image au bruit et d'évaluer les
performances de divers filtres de bruit.
Specle noise ou bruit de chatoiement est l’apparition des pixels clairs et sombres. Ce type de
bruit est couramment observé dans le radar (micro-ondes ou millimètre, Systèmes de
détection des ondes) bien qu’elle puisse apparaître dans tout type d’image détectée utilisant un
rayonnement cohérent.
Salt and Pepper Noise ou bruit poivre et sel, apparait sous la forme de points blancs et noirs
réparties aléatoirement sur l’image. Beaucoup de facteurs peuvent causer ce type de bruit
comme les capteurs comportant des pixels défectueux, ou lors de la transmission de l’image
ou la conversion analogique numérique.
9
Figure7 : Bruit poivre et sel d’une image
Shadow (ombre)
L'opérateur "shadow" représente un flou très complexe et une nouvelle coloration de la forme
de transparence de l'image donnée. Cet opérateur prendra une image normale et la convertira
en une image d’ombre.
10
Figure 9 : Ombre d’une image
Shade color
Généralement les ombres sont toujours noires comme l’effet de l’opérateur shadow par des
objets opaques. Si un objet Translucide est sélectionné, les ombres prennent la couleur de
l'objet qui les projette.
Zoom
Zoom signifie agrandir une image dans un sens où les détails de l'image sont devenus plus
visibles et clairs.
11
Figue 11: Zoom [11]
Contraste
L’amélioration de contraste est l’amélioration de la perceptibilité des objets. Cet opérateur
améliore la différence de luminosité entre les objets et leurs arrière-plans. Les améliorations
de contraste sont généralement effectuées sous la forme d'un étirement de contraste suivi
d’une amélioration tonale, bien que celles-ci puissent être réalisées en une seule étape.
Les améliorations tonales améliorent la luminosité dans les zones d'ombre (sombre), de tons
moyens (gris) ou de surbrillance (clair).
Si le contraste est élevé alors les noirs sont trop noirs et les blancs trop blancs. Au contraire si
le contraste est très faible les pixels sont une nuance de gris moyen.
Brillance (Brightness)
L'augmentation de la luminosité rend chaque pixel de l'image plus clair. Inversement, une
diminution de la luminosité rend chaque pixel de l'image plus sombre. Cette modification peut
améliorer la visibilité des zones excessivement sombres ou claires de l'image, mais sature
l'image si elles sont prises trop loin.
12
Figure13 : Brillance [11]
Sharpness
Le principe de cet opérateur est d'assombrir les pixels sombres et éclaircir les pixels clairs.
Ainsi, les contours, les détails et le bruit sont renforcés et les zones uniformes sont
inchangées.[8]
Flou (Blur)
Une autre source de perturbation des images est le flou. Les filtres de flou consistent à
modifier la valeur du pixel pour qu'elle se rapproche de celle des pixels voisins. Les
différences entre pixels voisins sont donc réduites. Le bruit, les contours et les détails sont
atténués et l'image est "lissée".[8]
13
Figure 15 : image flou [13]
Random erasing
Random erasing ou effacement aléatoire il permet d’effacer aléatoirement à chaque fois une
zone de l’image. Il sélectionne au hasard une partie rectangulaire et efface les pixels de cette
partie.
Les Réseaux Génératifs Adversaires (GAN) ont eu un énorme succès depuis qu'ils ont été
introduits en 2014 par Ian J. Goodfellow. Ce sont des classes d’algorithme d’apprentissage
non supervisé qui génèrent des images avec un fort degré de réalisme.
14
Que sont donc les réseaux génératifs adversaires ?
Les GANs sont des modèles dits génératifs qui sont différents des techniques
traditionnelles d’analyse de données comme la classification. Alors que cette technique
vise à apprendre à discriminer les données issues de différentes classes, les algorithmes
génératifs visent à faire le contraire : les méthodes GAN cherchent à générer des données
qui lui seraient associées.
Concrètement, l’architecture d’un GAN est composée de deux réseaux de neurones, mis en
compétition. Le premier appelé le générateur, crée un échantillon de données. Le deuxième
réseau, c’est le discriminateur, tente de détecter si cet échantillon est original ou s’il s’agit
d’un résultat du générateur. [4]
Le générateur apprend à générer des données plausibles. Les instances ou les images générées
deviennent des exemples d'entraînement négatifs pour son adversaire le discriminateur.
Le discriminateur apprend à distinguer les fausses données du générateur des vraies données.
Le discriminateur pénalise le générateur pour produire des résultats imaginables.
Lorsque l'entraînement commence, le générateur produit évidemment de fausses données et le
discriminateur apprend rapidement à dire que c'est faux. [4]
Le générateur et le discriminateur sont tous deux des réseaux de neurones. La sortie du
générateur est connectée directement à l'entrée du discriminateur.
Les GAN peuvent avoir de multiples cas d’usage. Il est possible de s’en servir pour imiter du
contenu multimédia, des textes ou encore des discours. [16].
De manière générale, la principale utilité d’un GAN est de créer des données à partir de rien
[20].
15
Figure 17 : Architecture des méthodes GAN [6]
Il existe plusieurs méthodes GAN pour le traitement d'images dont nous citons à titre
d'exemples CycleGAN, Super Résolution GAN (SRGAN), Stacked GAN (SGAN), …
1.6. Conclusion
Nous avons commencé par présenter, dans ce chapitre, le contexte de notre travail. Ensuite,
nous avons présenté quelques opérateurs de transformation d'images utilisés dans
l'augmentation des bases d'images.
Enfin, nous avons présenté GAN (Generative Adversarial Network) qui est un outil
relativement nouveau et puissant pour effectuer la génération non supervisée de nouvelles
images.
16
Chapitre 2 : Implémentation
2.1. Introduction
Le choix des techniques spécifiques et des opérateurs d'augmentation des données utilisées
pour un ensemble de données d'apprentissage doit être choisi dans le cadre de contrôle
qualité.
Nous commençons dans ce chapitre par présenter les choix technologiques effectués. Ensuite,
nous présentons les caractéristiques de la base d’apprentissage d’ADDIXO, les opérateurs
d’augmentation et la méthode SRGAN utilisée Enfin, nous présentons l’interface graphique
que nous avons développé afin de faciliter la manipulation de nos données.
2.2.1. Python
Python est un langage de programmation orienté objet. Sa force majeure est qu’il propose des
milliers de modules qui nous permettent de gagner un temps précieux durant le d
´développement de nos applications.
Python dispose de quelques librairies spécialisées pour l’IA comme Numpy et Pandas.
Concernant le domaine de l'apprentissage automatique et l’apprentissage en profondeur,
Python offre une pléthore de librairies de très grande qualité.
2.2.2. Tensorflow
Tensorflow est une bibliothèque open source d’apprentissage automatique développé par
Google en 2015 et en évolution jusqu’à ce jour-là. L’apprentissage en profondeur
spécialement les réseaux de neurones sont implémentés avec cette bibliothèque.
17
2.2.3. Keras
Keras [20] est une API python d’apprentissage en profondeur interfaciable avec Tensorflow,
CNTK et Theano permet l’expérimentation rapide. Il Permet le prototypage rapide et facile. Il
supporte à la fois les réseaux convolutifs (CNN) et les réseaux récurrents ainsi que la
combinaison des deux comme dans le cas des GANs.
2.2.4. Pandas
Pandas est une bibliothèque python open source permettant l’analyse et la manipulation des
donnée. Elle est rapide, puissante, flexible et facile à utiliser.
2.2.5. Numpy
Numpy est une bibliothèque python qui permet d’effectuer des calculs numériques.
2.2.6. Scikit-Learn
Scikit-Learn est une bibliothèque open source pour l’analyse des données écrite en python.
Elle contient un grand nombre d’implémentations pour beaucoup d’algorithme d’IA. Elle est
basée sur d’autre bibliothèque python comme Pandas et Numpy.
2.2.7. Matplotlib
Matplotlib est une bibliothèque python permettant de tracer et visualiser des données sous
formes de graphiques. C’est une librairie puissante et compatible avec beaucoup de
plateforme.
18
2.2.8. Scipy
Scipy est une bibliothèque Python open source permet le calcul scientifique et technique, elle
contient des modules d’optimisation, d’intégration et d’algèbre linière et de traitement
d’image.
2.2.9. Open CV
Open CV est une bibliothèque python open source qui permet le traitement d’image en temps
réel.
2.2.10. Django
Nous avons utilisé Django pour développer une interface qui nous permet de manipuler
facilement notre Base d'apprentissage et de pouvoir changer d'une manière conviviale les
paramètres des différents opérateurs utilisés pour l'agrandissement de la base. Nous avons
utilisé Django pour développer une interface qui nous permet de manipuler facilement notre
Base d'apprentissage et de pouvoir changer d'une manière conviviale les paramètres des
différents opérateurs utilisés pour l'agrandissement de la base.
ADDIXO nous a fourni une base d’apprentissage de 172 images représentants des
composants de pièces automobiles. La base est composée de 104 images défectueuses et 68
images de pièces non défectueuses. Les images sont des images couleur de taille 640*480.
Il est à noter que la taille de cette base est très réduite. En effet, pour que les réseaux de
neurones profonds soient efficaces, ils résistent une énorme quantité de données. D’où
l'intérêt de l'agrandissement de la base d'apprentissage.
19
Nous notons que les images d’ADDIXO sont confidentielles. C’est pourquoi, nous avons
utilisés d’autres images tout le long de ce rapport.
Nous présentons dans ce qui suit les opérateurs de transformation que nous avons utilisé pour
agrandir notre base d'apprentissage.
Il est intéressant de noter que nous devons choisir les opérateurs dans le cadre du contrôle
qualité. Par conséquent, nous avons utilisé les opérateurs qui ne suppriment et n’altère aucune
partie de l’image originale pour garantir une classification correcte. Ainsi, les opérateurs tels
que la translation le zoom et Random erasing.
2.4.1. Rotation
Nous avons appliqué, sur notre base, l’opérateur rotation avec un angle égale à 60° (Figure
19). Cet opérateur génère une image avec une rotation de 60° pour chaque image de la base
d’apprentissage.
20
Figure 19: Rotation avec angle a=60°
Nous avons appliqué, sur notre base, l’opérateur specle noise. Nous avons fait varier la
quantité de Specle Noise entre 0.001 et 0,1 en générant 10 images avec des quantités de bruit
différentes. La figure 19 illustre l’effet de cet opérateur.
21
Figure 21 : Image avec bruit poivre et sel
Nous avons appliqué, sur notre base, l’opérateur Gaussian noise (figure 22).. Nous avons fait
varier la quantité de Gaussian Noise entre 1 et 100 en générant 10 images avec des quantités
de bruit différentes.
22
Figure 23. : Effet de l’opérateur shadow (ombre)
Nous avons appliqué, sur notre base, l’opérateur Shade color (figure 24). Nous avons fait
varier la quantité de Shade color entre 0.3 et 0.5 en générant 10 images avec de couleurs et de
Shade color quantité différentes.
Ainsi, nous avons pu multiplier la taille de notre base initiale par 10.
Nous avons appliqué, sur notre base, l’opérateur Enhancement. Cet opérateur contient le
contraste, la brillance et la Sharpness. Nous avons fait varier la quantité de contraste entre 0.5
et 1.7 en générant 10 images avec des quantités de contraste différentes (figure 25), la quantité
de brillance entre 0.6 et 1,4 en générant 10 images avec des quantités de brillance différentes
(figure 26) et la quantité de sharpness entre 0.1 et 5 en générant 10 images avec des quantités
de Sharpness différentes(figure27).
Ainsi, pour cet opérateur, nous avons pu multiplier la taille de notre base initiale par 30.
23
Figure 25: Effet du contraste
Nous avons appliqué, sur notre base, l’opérateur Shade color. Nous avons fait varier la
quantité de flou entre 2 et 6 en générant 10 images avec de quantité de flou différentes (Figure
28).
Ainsi, avec l’opérateur blur nous avons pu multiplier la taille de notre base initiale par 10.
24
Figure 28 : Effet du flou
Nous résumons dans le tableau 1 les différents opérateurs que nous avons utilisés dans le
cadre de notre travail ainsi que le nombre d'images générées pour chaque opérateur.
Détails et caractéristiques
Nom opérateur Description opérateur Opérateur par défaut Nombre images générées
(par défaut)
25
Specle_Noise Ajoute du bruit Min specle. Noise=0.0001 10 images
granulaire
Max specle. Noise=0.1
Noise (Bruit)
réseau adversaire, elle prend une image d'entrée à basse résolution (LR) et génère une image
super-résolue (SR).
figure 29, dans le but de tromper le discriminateur qui est formé pour distinguer les images
26
SR de celles à haute résolution (HR). Plus précisément, le réseau discriminateur utilise
l'image HR comme variable, qui guide le réseau pour distinguer les images réelles SR. Nous
La figure 30 montre la différence entre une image basse résolution et une image super
résolution. L’étape la super résolution permet d'augmenter la densité des pixels pour améliorer
la netteté des images
27
Maintenant, que nous avons détaillé les différentes méthodes utilisées pour l'agrandissement
de notre base d'apprentissage, nous présentons l'interface graphique que nous avons
développé.
28
2.7. Conclusion
Nous avons détaillé dans ce chapitre, les opérateurs de transformation d'images que nous
avons sélectionné pour l'agrandissement de la base d'apprentissage pour le contrôle qualité
d'ADDIXO.
ADDIXO dispose d’un Dataset de 172 images dont 104 images défectueuses et 68 images
non défectueuses. Nous avons sélectionné les opérateurs d’agrandissement dans le cadre de
contrôle qualité. En effet, les opérateurs choisis ne doivent rien couper de l’image pour
garantir une classification correcte et une performance maximale. En plus, des opérateurs de
transformation d'images, nous avons utilisé la méthode SRGAN qui permet d'améliorer la
résolution des images. L'application de ces méthodes d'agrandissement, nous a permis de
passer d'une base d'une taille de 172 images à une base de taille 15652 images. Ainsi, nous
avons pu multiplier la taille de notre base par un facteur de YY.
A l’aide du Framework Django nous avons développé une interface graphique pour manipuler
l’agrandissement de la base d’apprentissage.
29
Chapitre 3 : Test et évaluation
3.1. Introduction
Nous commençons par présenter le réseau de neurones convolutionnel (CNN) que nous avons
utilisé pour évaluer l'impact de l'agrandissement de la base d'apprentissage sur l'apprentissage
par Deep Learning. Ensuite, nous analysons et évaluons les résultats obtenus.
La première partie d’un CNN est la partie convolutive à proprement parler. Elle fonctionne
comme un extracteur de caractéristiques des images. Une image est passée à travers une
succession de filtres, ou noyaux de convolution, créant de nouvelles images appelées cartes de
convolutions. Certains filtres intermédiaires réduisent la résolution de l’image par une
opération de maximum local. Au final, les cartes de convolutions sont mises à plat et
concaténées en un vecteur de caractéristiques. [18]
Ce dernier est ensuite branché en entrée d’une deuxième partie, constituée de couches
entièrement connectées (perceptron multicouche). Le rôle de cette partie est de combiner les
caractéristiques du vecteur de caractéristiques pour classer l’image. [18]
30
Figure32 : Architecture d’un CNN [18]
Une architecture CNN est formée par un empilement de couches de traitement indépendantes
[18] :
La couche de convolution (CONV) qui traite les données d'un champ récepteur.
La couche de correction (ReLU), souvent appelée par abus 'ReLU' en référence à la fonction
d'activation (Unité de rectification linéaire).
La couche "entièrement connectée" (FC), dans laquelle tous les nœuds contenus se
connectent à tous les nœuds de la couche suivante.
Nous avons créé un simple CNN pour tester l’effet de l’agrandissement de la base
d’apprentissage sur les performances d’un CNN.
Nous avons travaillé seulement avec deux classes d’images (pièces défectueuses et pièces non
défectueuses). Nous avons subdivisé notre base en un ensemble d’entraiment (train) et un
ensemble de test (test), l’ensemble de traitement est composé de 70% du nombre des images
de la base d’apprentissage et l’ensemble de test de 30% du nombre d’image.
Nous avons importé le modèle d’apprentissage par transfert du CNN. C’est un modèle
pratique car il est livré avec des réseaux neuronaux prédéfinis
Cette techniques et appelées apprentissage par transfert ou transfert Learning, car on exploite
la connaissance acquise sur un problème de classification général pour l’appliquer de nouveau
à un problème particulier comme une initialisation du modèle [19].
Nous avons utilisé exactement le vgg16 car il contient seulement 16 couches et des filtres
3×3.
31
Ensuite nous avons ajouté 3 couches supplémentaires, on peut les modifier selon nos besoins
et nous avons fixé le nombre d’époche à 7, c’est un hyperparamètre qui définit le nombre de
fois que l'algorithme d'apprentissage fonctionnera sur l'ensemble de données d'apprentissage.
Nous avons entrainé notre modèle avec la base d’apprentissage originale d’ADDIXO qui
contient seulment 172 images et nous avons obtenu les résultats suivantes :
32
Epoche Ensemble Ensemble de test
d’entrainment
Loss =0.43
Tableau illustratif des résultats de CNN pour la base d’apprentissage d’ADDIXO (172 images)
33
Tableau 2 :Résultat de CNN pour la base d’apprentissage avant d’agrandissement
34
Figure 33 : Visualisation de la précision et de la perte pour la base de données originale
35
Tableau illustratif des résultats de CNN pour la nouvelle base d’apprentissage
36
Acc =0.78 Acc =0.92
Epoche 2 Loss = 0.28 Loss = 0.15
Acc =0.89 Acc =0.93
Epoche 3 Loss = 0.23 Loss = 0.14
Acc =0.91 Acc =0.97
Epoche 4 Loss = 0.18 Loss = 0.20
Acc =0.92 Acc =0.92
Epoche 5 Loss = 0.16 Loss = 0.08
Acc =0.93 Acc =0.97
Epoche 6 Loss = 0.14 Loss = 0.10
Acc =0.94 Acc =0.92
Epoche 7 Loss = 0.12 Loss = 0.16
Acc =0.94 Acc =0.94
Résultat Accurancy = 94%
Loss=0.16
Tableau 3 : Résultat de CNN pour la nouvelle base d’apprentissage
37
Figure 34 : Visualisation de la précision et de la perte pour la nouvelle base l’agrandissement
La valeur de perte est passé de 43% pour une base de 172 images à 16% pour la même base
après agrandissement (15652 images).
38
3.6. Conclusion
Nous avons créé un CNN pour la classification d’image. Notre CNN se compose de 16
couches de vgg16 et nous avons ajouté 3 couches et le nombre d’epoches est égale à 7. Nous
avons testé notre modèle avec la base d’apprentissage d’ADDIXO qui comporte seulement
172 images puis avec la nouvelle base d’apprentissage qui comporte 15652 images suite à
l’application des opérateurs d’agrandissement.
Il est évident d’après nos résultats que l’agrandissement de la base améliore la performance de
notre CNN. Ainsi, la précision passe de 78% à 94% et la perte diminue de 0.43 à 0.16 .
39
Conclusion Générale et Perspectives
Ce travail rentre dans le cadre de notre projet de fin d’études en licence fondamentale
informatique à la faculté des sciences de Tunis. Il consiste à agrandir une base d’apprentissage
pour le contrôle qualité dans le but d’améliorer les performances de l’utilisation des
techniques de deep Learning et plus particulièrement CNN.
Avoir un grand nombre de données est crucial pour les performances des modèles de deep
Learning.
La société d’accueil ADDIXO dispose d’une base d’apprentissage de 172 dont images 104
images de pièces défectueuses et 68 images de pièces non défectueuses. Afin de tirer profit du
Deep Learning, il est nécessaire de disposer d’une grande base d’apprentissage (Dataset). Or,
généralement dans le domaine du contrôle qualité, nous ne disposons que d’une base limitée
d’échantillons. Pour pallier cet inconvénient et améliorer les performances du deep Learning
nous avons utilisé 10 opérateurs d’agrandissement de la base d’apprentissage. Les opérateurs
que nous avons utilisé dans le cadre de contrôle qualité sont : Rotation, Specle Noise, Salt
and Pepper Noise, Gaussian Noise, Shadow, Shade color, Contraste, Brillance, Sharpness et
Flou. Chaqu’un de ces opérateurs génère 10 images différentes pour chaque image de la base
d’apprentissage.
Les opérateurs choisis ne doivent rien couper de l’image pour garantir une classification
correcte et une performance maximale. Ainsi les opérateurs tels que la translation le zoom et
Random erasing n’ont pas été utilisés.
L'application des opérateurs de transformation d'images choisis, nous a permis de passer d'une
base d'apprentissage de taille 172 images à une base de taille 15652 images.
Pour une classification performante nous avons utilisé la méthode SRGAN ou GAN-Super
Résolution qui génère des images de super résolution.
Afin de tester l'impact de l'agrandissement de la base d'apprentissage sur les performances du
Deep Learning, nous avons adapté les paramètres d'un CNN à notre base d'apprentissage et
nous l'avons entraîné sur la base d'apprentissage de départ (172 images) et la base après
agrandissement (15652 images). Les résultats de classification d’images obtenus avant et
après l’agrandissement de la base d’apprentissage ont montré l’amélioration des performances
de notre CNN. Ainsi, la précision du modèle passe de 78% à 94% et la valeur de perte
40
diminue de 0.43 à 0,16. Nous avons constaté que l’augmentation du nombre des images
améliore les performances du modèle d’apprentissage profond.
Finalement on a créé une interface web pour la manipulation des données et des opérateurs à
l’aide du Framework Django.
41
Bibliographie
Sites web consultés
[1] : ///https://openaccess.thecvf.com/content_cvpr_2017/papers/Ledig_Photo-
Realistic_Single_Image_CVPR_2017_paper.pdf [consulté le 16/03/2020]
[2] : //https://towardsdatascience.com/dataaugmentationtechniquesinpythonf216ef5eed69
[Consulté le 1/02/2020]
[3] : Site officiel d’Addixo //https://www.addixo.com/[consulté le13/07/2020]
[4] : //https://dataanalyticspost.com/Lexique/reseau-antagoniste-generatif//
[Consulté le 12/05/2020]
[5] : //https://www.futurasciences.com/tech/definitions/intelligence-artificielle-deep-learning-
17262/ [Consulté le 10/07/2020]
[6] : https://mc.ai/learning-generative-adversarial-networks-gans/[consulté le 25/5/2020]//
[7] : //https://www.lebigdata.fr/reseau-de-neurones-artificiels-definition[consulté 7/05/2020]
[8] ://https://www.sites.univrennes2.fr/artsspectacle/cian/image_numFlash/pdf/chap5_tout52p
df?fbclid=IwAR2OKElsgTCpzJJZkFuyTQmIlMznB_mEVFDaiK2XZlK6wLPXQH-
ImJ78oUk [consulté le 10/07/2020]
[9] ://https://nanonets.com/blog/data-augmentation-how-to-use-deep-learning-when-you-
have-limited-data-part-2/ [consulté le 10/03/2020]
[10] : //http://warmaths.fr/MATH/Resum3/nivVLa%20Rotation.htm [consulté le 15 /07/2020]
[11]://https://medium.com/@pierre_guillou/data-augmentation-par-fastai-v1-e2e69e071ccc
[consulté le 07/03/2020]
[12]://https://www.123couleurs.fr/exp%C3%A9riences/exp%C3%A9riences-vision/ev-
ombrescolor%C3%A9es/ [consulté le 05/06/2020]
42
[13]:// https://fr.wiktionary.org/wiki/flou [consulté le 05/06/2020]
[14]://https://www.groundai.com/project/random-erasing-data-augmentation/2 [consulté le
05/06/2020]
[15]://
https://www.codeflow.site/fr/article/how-to-build-a-deep-learning-model-to-predict-
employee-retention-using-keras-and
tensorflow#:~:text=Keras%20est%20une%20API%20de,plus%20rapide%20et%20plus
%20facile. [Consulté le 10/07/2020]
[16]://https://www.lebigdata.fr/gan-definition-tout-savoir?fbclid=IwAR2Jx-
PBwnhpefdNSJvhg2xV74i-CHcJuymDyh6cY_t-1mBTWn0wjPIsNJg [consulté le
15/07/2020]
[17] ://https://helpx.adobe.com/fr/photoshop/using/adjusting-image-sharpness-blur.html
[consulté le 15/07/2020]
[18]://http://dspace.univ-tlemcen.dz/bitstream/112/12235/1/Classification-des-images-avec-
les-reseaux-de-neurones.pdf [consulté le 02 /072020]
[19] : // https://blog.octo.com/classification-dimages-les-reseaux-de-neurones-convolutifs-en-
toute-simplicite/[consulté le 02 /072020]
[20]://https://www.lebigdata.fr/gan-definition-tout-savoir [consulté le 15/07/2020]
43
Annexe 1
44
Le script model.py contient notre modèle SRGAN
45
46
L’entrainement s’effectue par le script main.py, Au terminal on exécute la commande
suivante
Python train.py
47
Importations des bibliothèques pour le CNN
48
Implémentation de la rotation en python :
49
Implémentation de Speckle Noise en python :
50
51
Implémentation du Salt/Pepper Noise en Python :
52
Implémentation du Gaussian noise en python :
53
Implémentation d’ombre en python :
54
Implémentation du Shade color en Python :
55
Implémentation du renforcement en python :
56
Implémentation du flou en python :
57
58
Création de notre modèle de CNN
59
ملخص
في هذا المجال لدينا. بما في ذلك مراقبة الجودة، بنجاح في مختلف المجاالت، وخاصة تقنيات التعلم العميق، تم تطبيق• تقنيات الذكاء االصطناعي
فقط قاعدة بينات• محدود
يتكون هذا المشروع من توسيع قاعدة التعلم من خالل توليد صور جديدة من خالل العوامل الرياضية وطريقة أس أرجان من أجل تحسين أداء
تقنيات• التعلم العميق وعلى وجه الخصوص سي إن
Résumé
Les techniques d’intelligence artificielle (IA) et plus particulièrement les techniques
d’apprentissage profond (Deep Learning) été appliquées avec succès dans différents domaines
et notamment le contrôle qualité. Ce domaine nous ne disposons que d’une base limitée
d’échantillons.
Ce projet consiste à agrandir une base d’apprentissage en générant des nouvelles images par
des opérateurs mathématiques et la méthode SRGAN dans le but d’améliorer les
performances es techniques de deep Learning et plus particulièrement CNN.
Mots clés : l’apprentissage profond, Agrandissement de la base, CNN
Abstract
Artificiel intelligence (AI) techniques, and in particular Deep Learning techniques, have been
successfully applied in different areas, including qualité control. In This area we have only a
limited data.
This Project consists in data augmentation by generating new images by mathematical
operators and the SRGAN method in order to improve performance of deep Learning and
more particularly CNN.
60
61