Vous êtes sur la page 1sur 52

Resume

Notre projet vise principalement limplementation de Deep Learning sur un GPU NVI-
DIA en premier lieu et sur le Cloud en 2eme lieu.
Pour le front-end, on a choisi DIGITS, une application web, pour mieux visualiser la
fonctionnalite des algorithmes de DL sans code. Comme back-en, cetait Caffe le plus
adaptable a nos besoins.
Notre projet se divise globalement en 3 parties principales : la premiere cest de preparer
lenvironnement de travail (Installation, configuration. . . ) , la 2eme sert a implementer
quelques fameux algorithmes de classification et de detection des objets tout en exploi-
tant des diverses base de donnees normalisees et issues de differentes sources en appliquant
chaque fois un algorithme approprie.
On a insiste dans ce projet eventuellement sur limportance de Cloud pour tourner les
algorithmes de DL qui sappliquent sur des grandes bases de donnees et ce dans la derniere
partie.
Ce projet constitue une terre fertile ou on peut planter des applications dIA qui peuvent
aider lhumanite dans le plus proche avenir.
Mots cles : Deep Learning, NVIDIA, DIGITS, Caffe, Cloud.
Table des matieres

Table des figures vi

Liste des tableaux viii

Liste des acronymes ix

Introduction generale x

1 Montee du Deep Learning 1


1.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1
1.2 La machine Learning : lapprentissage automatique . . . . . . . . . . . . . 1
1.3 Le Deep Learning : lapprentissage profond . . . . . . . . . . . . . . . . . . 4
1.3.1 Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
1.3.2 Quelques fameux algorithmes . . . . . . . . . . . . . . . . . . . . . 6
1.3.3 Lavenement du Deep Learning . . . . . . . . . . . . . . . . . . . . 7
1.4 Les processeurs graphiques . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.4.1 Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.4.2 GPU vs CPU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
1.5 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

2 Preparation de lenvironnement 12
2.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2 Compute Unified Device Architecture :CUDA . . . . . . . . . . . . . . . . 12
2.2.1 Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2.2 Installation du CUDA . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.3 Caffe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.3.1 Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.3.2 Installation du Caffe . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.4 NVIDIA Deep Learning GPU Training System : DIGITS . . . . . . . . . . 14
iv
TABLE DES MATIERES v

2.4.1 Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.4.2 Installation du DIGITS . . . . . . . . . . . . . . . . . . . . . . . . . 15
2.5 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

3 Implementation 17
3.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.2 Devices . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.2.1 Creation de Dataset . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.2.2 Trainer le modele . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.2.3 Tester le modele . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.3 MNIST . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.3.1 Creation de DataSet . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.3.2 Trainer le modele . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.3.3 Tester le modele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.4 KITTI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.4.1 Creation de DataSet . . . . . . . . . . . . . . . . . . . . . . . . . . 24
3.4.2 Trainer le Modele . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.5 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

4 La solution Cloud 29
4.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4.1.1 Amazon Web Service . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4.1.2 Amazon Elastic Compute Cloud (EC2) . . . . . . . . . . . . . . . . 29
4.1.2.1 Definition . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4.1.2.2 Avantages . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4.1.2.3 Activation dinstance g2.2xlarge . . . . . . . . . . . . . . . 31
4.1.3 Preparation de lenvironnement . . . . . . . . . . . . . . . . . . . . 35

Conclusion generale 37

Bibliographie 37

Annexe 1 39

Annexe 2 42
Table des figures

1.1 Determination dune fonction lineaire par la machine learning [1] . . . . . . 2


1.2 Schema du fonctionnement dun neurone artificiel [2] . . . . . . . . . . . . 3
1.3 Principe de fonctionnement de Machine Learning . . . . . . . . . . . . . . 3
1.4 Introduction de lalgorithme intermediaire dans la machine Learning . . . . 4
1.5 Architecture dun reseau de neurones multicouches [3] . . . . . . . . . . . . 5
1.6 Pricipe de fonctionnement Deep Learning . . . . . . . . . . . . . . . . . . . 5
1.7 Architecture de LeNet [4] . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
1.8 Architecture dAlexNet [4] . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.9 Architecture de GoogleNet [4] . . . . . . . . . . . . . . . . . . . . . . . . . 7
1.10 Le massif du Mont-Blanc vu par DeepDream [5] . . . . . . . . . . . . . . . 8
1.11 Disposition des ALUs : GPU vs CPU [6] . . . . . . . . . . . . . . . . . . . 9
1.12 Comment le GPU accelere le calcul [6] . . . . . . . . . . . . . . . . . . . . 10

2.1 Page dacceuil de digits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

3.1 Insertion de chemin pour Devices . . . . . . . . . . . . . . . . . . . . . . . 18


3.2 Insertion de Nom de Base de doonees . . . . . . . . . . . . . . . . . . . . . 18
3.3 Analyse de resultat de creation de DataSet . . . . . . . . . . . . . . . . . . 19
3.4 Analyse de resultat de lentrainement de Modele . . . . . . . . . . . . . . . 20
3.5 Tester la performance de modele . . . . . . . . . . . . . . . . . . . . . . . . 20
3.6 Detection des 10 Categories . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.7 Detection des 10 Categories . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.8 Insertion de lURL dune image dun nombre manuscrit . . . . . . . . . . . 23
3.9 Resultat du test de modele . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.10 Arboresence de larchitecture de la base de donnees [7] . . . . . . . . . . . 24
3.11 Creation de KITTI DataSet . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.12 Taille de KITTI DataSet . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
3.13 Preparation de Modele(1) . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
3.14 Preparation de Modele(2) . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
vi
TABLE DES FIGURES vii

3.15 Erreur de creation de modele . . . . . . . . . . . . . . . . . . . . . . . . . 27

4.1 Selection du type de service . . . . . . . . . . . . . . . . . . . . . . . . . . 31


4.2 Lancement dune instance EC2 . . . . . . . . . . . . . . . . . . . . . . . . 32
4.3 Selection dune image machine . . . . . . . . . . . . . . . . . . . . . . . . . 32
4.4 Selection de type dinstance EC2 . . . . . . . . . . . . . . . . . . . . . . . 33
4.5 Choix du taille de stockage . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.6 Configuration de la securite . . . . . . . . . . . . . . . . . . . . . . . . . . 34
4.7 Creation de paire de cle . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
4.8 Demarrage de linstance EC2 . . . . . . . . . . . . . . . . . . . . . . . . . 35
4.9 La courbe dentrainement de modele de KITTI . . . . . . . . . . . . . . . . 36
4.10 Test du modele de KITTI . . . . . . . . . . . . . . . . . . . . . . . . . . . 36

4.11 Installation CUDA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39


4.12 Installation Caffe (packages) . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.13 Installation Caffe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
4.14 Installation Caffe (python packages . . . . . . . . . . . . . . . . . . . . . . 40
4.15 Suite Installation de Python packages . . . . . . . . . . . . . . . . . . . . . 40
4.16 Configuration de Caffe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
4.17 Installation de Digits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
4.18 Telechargement de Mnist DataSet . . . . . . . . . . . . . . . . . . . . . . . 41
4.19 Execution de prepare kitti data.py . . . . . . . . . . . . . . . . . . . . . . 41

4.20 Mise a jour du systeme et installation des packages . . . . . . . . . . . . . 42


4.21 Installation de Theano . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
4.22 Installation de CUDA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.23 Installation de CuDNN . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
4.24 Installation de Caffe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
4.25 Installation de Digits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
Liste des tableaux

3.1 La listes des fichiers a telecharger [7] . . . . . . . . . . . . . . . . . . . . . 24

viii
Liste des acronymes

IA : Intelligence Artificielle.
ML : Machine Learning.
DL : Deep Learning.
NN : Neural Network.
CNN : Convolutional Neural Network.
DNN : Deep Neural Network.
MPL : Multi Layer Perceptron.
GPU : Graphical Processing Unit.
CPU : Central Processing Unit.
ALU : Arithmetic Logic Unit.
CUDA : Compute Unified Device Architecture.
cuDNN : Nvidia CUDA Deep Neural Networks.
DIGITS : Nvidia Deep Learning GPU Training System.
AWS : Amazon Web Service.
EC2 : Elastic Compute Cloud.
HPDA : High Performance Data Analytics.
HPC : High Performance Computer.
IOT : Internet Of Things.

ix
Introduction generale

Lorsque lintelligence artificielle a dabord emerge comme une discipline, les scientifiques
avaient de grands espoirs pour cela. Ils voulaient creer lIntelligence Artificielle Generale,
cest-a-dire un systeme informatique capable de faire quelque chose dhumain, dune ma-
niere meilleure et plus rapide que nous. Apres que lIA na pas reussi a respecter ses
promesses initiales, les scientifiques ont reduit leurs attentes, tout en se concentrant sur
des taches specifiques.
Aujourdhui, la Machine Learning est le seul domaine qui apporte des resultats promet-
teurs et pertinents. Lidee derriere elle est assez simple. Plutot que de programmer des
ordinateurs avec un ensemble specifique dinstructions pour accomplir une tache parti-
culiere, comme le deplacement, la parole ou la reconnaissance de visages, vous codez les
machines pour apprendre de leur propre maniere a effectuer la tache.
Differents concepts algorithmiques ont ete utilises pour la Machine Learning, mais ce sont
les biomimetiques, ou biomimetrie, qui ont permis une percee reelle. Biomimetics sins-
pirent de la biologie, dans ce cas, le cerveau humain, afin de concevoir une machine plus
intelligente. Cela a conduit au developpement de reseaux de neurones artificiels, qui sont
programmes pour traiter linformation de la meme maniere que notre cerveau.
Nos propres processus dapprentissage sont lies aux synapses du cerveau, qui servent de
connexion entre nos neurones. Plus une stimulation est stimulee, plus la connexion est ren-
forcee et lapprentissage sest ameliore. Les chercheurs se sont inspires de ce mecanisme
pour concevoir une synapse artificielle, appelee memristor.
Ces dernieres annees, plus precisement en 2012, le Deep Learning est monte sur scene
pour voler la vedette a la Machine Learning. Il a envahi tous les grands titres, ainsi, il est
devenu le centre dattention de tout le monde grace a ses realisations spectaculaires !
Comment fonctionne ce reseau de neurones artificiels ?
Du Machine Learning au Deep Learning, pourquoi cette migration ?
Comment et ou peut-on implementer le Deep Learning ?

x
Chapitre 1

Montee du Deep Learning

1.1 Introduction
Vers les annees 1950, un nouveau terme a ete remonte dans le monde cetait lintelligence
artificielle. Mais, rapidement des histoires des sciences fiction ont montre linquietude en-
vers des machines plus intelligentes que lhomme ce qui a mene a sa disparition.
Aujourdhui, ce terme revient en force avec lapparition de nouvelles techniques dappren-
tissage, lapparition des processeurs de grande puissance de calcul ainsi que la disponibilite
des donnees.

1.2 La machine Learning : lapprentissage automa-


tique
La machine Learning est une technologie de lintelligence artificielle qui tient a modeliser
et a classer des donnees selon des categories. Elle consiste a faire tourner des algorithmes
qui permettent aux ordinateurs dapprendre en etudiant, au prealable, des exemples.
Ces algorithmes dapprentissage automatique sont fondes essentiellement sur une analyse
des donnees qui va servir ensuite dans la classification et la reconnaissance de nouvelles
donnees [1].
Le fonctionnement de la machine Learning se resume dans deux phases [3] :
Une phase dapprentissage utilisee pour entrainer, a laide des exemples dentrees et
de sorties (donnees etiquetees), lalgorithme a reconnaitre les donnees.
Une phase de prediction utilisee pour tester le modele.

1
2 CHAPITRE 1. MONTEE DU DEEP LEARNING

Dans un premier temps, le fonctionnement de la machine learning consistait essentielle-


ment a determiner une relation lineaire reliant des entrees X avec des sorties Y : Y=aX+b.
La figure ci-dessous presente un exemple dapplication ou on trouve une relation simple
entre la surface et le prix dun appartement a Paris [1].

Figure 1.1 Determination dune fonction lineaire par la machine learning [1]

Cependant, pour des exemples assez compliques (classification des images compliquees,
detection des objets sur , la comprehension de la parole. . . ), la machine Learning etait
incapable de les modeliser et il demeure difficile de trouver des relations simples entre
les entrees et la sortie. On est besoin alors de quelque chose qui peut prendre beaucoup
dentrees et qui arrive a capturer des relations plus complexes dou lintervention du reseau
de neurones. Ce dernier presente une interconnexion entre plusieurs neurones. En realite
ces neurones ne sont que des fonctions mathematiques qui vont mettre en relation des
entrees avec une sortie [3].
1.2. LA MACHINE LEARNING : LAPPRENTISSAGE AUTOMATIQUE 3

Figure 1.2 Schema du fonctionnement dun neurone artificiel [2]

Ces neurones, polyvalents, sont semblables aux neurones biologiques car ils imitent le
fonctionnement du cerveau humain. En effet, on prend un reseau de neurones et on y
presente une base de donnees dexemples dentrees et de sorties. Le reseau va analyser les
donnees un par un et il prend une decision a ce sujet.A chaque iteration, il sera informe,
a laide dune fonction cout, si sa determination est correcte ou non. Si sa decision etait
erronee, lalgorithme va ajuster sur les connexions entre les neurones du reseau afin de
changer ses previsions futures. Ce processus sera repute jusqua ce que les connexions
soient reglees et le reseau devient capable de predire correctement la sortie si on y presente
une entree [8]. Notons bien que cet entranement peut necessiter des heures, voire des jours
tout depend de la puissance de lordinateur et de la taille de base de donnees.

Figure 1.3 Principe de fonctionnement de Machine Learning

Remarque : Plus quon a dentrees (beaucoup de details et de caracteristiques), plus


quon ajoute de neurone, plus la phase dapprentissage sera tres compliquee et donc il
4 CHAPITRE 1. MONTEE DU DEEP LEARNING

devient tres difficile dextraire des relations. La solution est donc de faire des algorithmes
intermediaires. Ces algorithmes ne sont pas des reseaux de neurones, ils consistent a
analyser les donnees et extraire toutes ses caracteristiques interessantes qui vont etre
utilisees comme des entrees pour les reseaux de neurones [3].

Figure 1.4 Introduction de lalgorithme intermediaire dans la machine Learning

Mais avec ces algorithmes, on est devant un autre enjeu cest le degree de fidelite aux
donnees car la qualite de prediction va dependre des resultats fournis par ces algorithmes
intermediaires et pour cela leurs conceptions necessitent un travail dintelligence ce qui
nest pas garanti dou la naissance du Deep Learning.

1.3 Le Deep Learning : lapprentissage profond

1.3.1 Definition
Le Deep Learning est un ensemble de technique de classification et dapprentissage auto-
matique, visant a reproduire le fonctionnement du cerveau humain. Il a nee vers 2006 et
se base sur des reseaux de neurones artificiels. La particularite de ces reseaux est quils
sont organises en couche et dune maniere hierarchique [5].
Le DL vient de resoudre le probleme de lalgorithme de construction des caracteristiques,
son idee est de sauter letape de conception de cet algorithme en faisant un gros reseau
de neurone avec plein de couches [3].
1.3. LE DEEP LEARNING : LAPPRENTISSAGE PROFOND 5

Figure 1.5 Architecture dun reseau de neurones multicouches [3]

Ces couches sont utilisees pour effectuer un traitement, hierarchises, des donnees et ex-
traire tous leurs caracteristiques. Ainsi chaque couche prend comme entree la sortie de
la precedente pour estimer une sortie qui va servir comme entree pour la couche dapres
et avec ce processus le programme arrive a determiner la relation dentrees-sortie meme
quelle parait tres compliquee [5].

Figure 1.6 Pricipe de fonctionnement Deep Learning

Bien que la phase dapprentissage fut tres difficile avec un gros reseau de neurones, des
grands pionniers de Deep Learning (comme Yann LeCun,. . . ) ont arrive a construire des
algorithmes qui sont capables de determiner des relations assez complexes entre des entrees
et une sortie. Ainsi le petit miracle qui se produit avec le Deep Learning cest que les
couches inferieures du reseau de neurone cherchent dabord a traiter les elements les plus
simple presentes dans une donnee et les couches superieures extraient les caracteristiques
les plus complexes ce qui va faciliter la phase dapprentissage [5].
Actuellement il devient facile de faire des reseaux de neurones profonds qui ont plus dune
centaine de couches et plusieurs millions de neurones.
6 CHAPITRE 1. MONTEE DU DEEP LEARNING

1.3.2 Quelques fameux algorithmes


Il existe plusieurs categories dalgorithmes de DL dont les plus fameux sont :
Les reseaux de neurones profonds (Deep Neural Networks) : Ce sont des reseaux
MLP ( Multi Layer Perceptron) qui ont le plus grand nombre de couches cachees ce
qui permet au reseau de neurones de mieux detecter les legeres variations du modele
dapprentissage. Il est souvent utilise dans la reconnaissance de parole [2].
La machine de Boltzmann profonde (Deep Belief Network) : Ces algorithmes
fonctionnent suivant deux phases principales : lune sert a classer les donnees en
categorie sans criteres predefinis (apprentissage non supervise), suivi de lentraine-
ment classique (apprentissage supervise). Cette etape dapprentissage non-supervise,
permet, en outre, de faciliter lapprentissage supervise [2].
Les reseaux de neurones convolutionnels (CNN ou Convolutional Neural Net-
works) :Le traitement de donnees est divise en sous-parties, et pour chaque partie,
un cluster de neurones sera cree afin detudier cette portion specifique. Ce genre
de reseaux se base essentiellement sur des operations de convolution et de pooling
exerce sur les images presentees comme matrices [2].
Bien evidemment, on va choisir le CNN comme reseaux de neurones vu quil est le meilleur
a sadapter avec nos besoins. Ce type pere de NN a des ramifications suite a limportance
de traitement dimage de nos jours. On peut citer comme exemples :
LeNet : Le premier CNN developpe par Yann LeCun dans les annees 90 pour la
reconnaissance des codes postaux et les chiffres manuscrits [4].

Figure 1.7 Architecture de LeNet [4]

AlexNet : developpe par Alex Krizhevsky, Ilya Sutskever et Geoff Hinton.Il a ete
soumis au defi ImageNet ILSVRC en 2012 et a nettement occupe la 2eme place. Le
reseau avait une architecture tres similaire a LeNet, mais avec plus grand nombres
des couches convolutionnelles empilees les unes sur les autres [4].
1.3. LE DEEP LEARNING : LAPPRENTISSAGE PROFOND 7

Figure 1.8 Architecture dAlexNet [4]

GoogleNet : gagnant ILSVRC 2014 et developpe par Szegedy et al. De Google. Son
challenge etait de reduire considerablement le nombre de parametres dans le reseau.
Il existe egalement plusieurs versions de suivi vers GoogLeNet, tout recemment
DetectNet utilise pour la detection des objets [4].

Figure 1.9 Architecture de GoogleNet [4]

1.3.3 Lavenement du Deep Learning


Aujourdhui, le Deep Learning a envahi tous les domaines. Il est tres utilise dans [8] :
 Computer Vision : Cest une branche de lintelligence artificielle, qui consiste a
entrainer lordinateur a comprendre et a analyser les images et les flux video grace
a une serie de traitements.
 Internet et Cloud
La reconnaissance de la parole, la fabrication et la classification de limage.
Lanalyse des scenes sur une image (analyse du signal visuel) et lanalyse du
signal sonore.
Lanalyse des details graphiques de notre vie privee quon partage sur les re-
seaux sociaux
8 CHAPITRE 1. MONTEE DU DEEP LEARNING

Le Traitement Automatique des Langues (TAL) : cest une technique utilise


pour entrainer lordinateur a traiter des donnees langagieres en tenant compte
des caracteristiques du langage humain.
 Medicine et biologie
Detection des tumeurs avec la technique de segmentation des images.
 Medias et Loisir
Sous-titrage video.
 Securite et defense
La reconnaissances faciale et/ou vocale.
 La conduite autonome
Detection des objets et la reconnaissance du signal de la circulation.
Le deep Learning constitue une grande revolution dans lintelligence artificielle. Des grandes
entreprises (IBM, GOOGLE, FACEBOOK, SIRI, CORTANA . . . ) ont ete apprecie par
cette nouvelle technologie et ils ont decide de lintegrer dans de nombreuses applications.
En effet, avec des algorithmes de Deep Learning, FACEBOOK a developpe une applica-
tion de reconnaissance de visage nomme DeepFace . Quant a Google, il a developpe un
logiciel, cest un descripteur dimage, qui prendre une image et la decrit par une phrase
ainsi quune application intitulee DeepDream qui consiste a faire entrainer la machine
a reconnaitre des formes sur des images puis les reproduire [5].

Figure 1.10 Le massif du Mont-Blanc vu par DeepDream [5]

Aujourdhui, le succes du Deep Learning est non seulement lie a lutilisation des archi-
tectures particulieres de reseau de neurones bien adaptes aux besoins mais aussi lie au
puissance enorme de calcul et notamment le progres de processeurs graphiques : les GPUs.
1.4. LES PROCESSEURS GRAPHIQUES 9

1.4 Les processeurs graphiques

1.4.1 Definition
Le GPU (Graphical Processing Unit) est un processeur qui a pour fonction le calcul de
laffichage 2D et 3D (des images, des videos, des animations . . . ), on le trouve generalement
integre dans les cartes graphiques. Cest un element indispensable dans les ordinateurs,
sans lui il ny en a pas dimage sur lecran [6].

1.4.2 GPU vs CPU


Contrairement au CPU (Central Processing Unit), Le GPU possede de nombreuses unites
de calcul (ALU) ce qui le rend tres efficace pour le traitement parallele des donnees et
avec ses operations paralleles le calcul devient tres rapide [6].

Figure 1.11 Disposition des ALUs : GPU vs CPU [6]

Le fonctionnement du GPU ne fait pas partie de notre etude, cependant on va se concen-


trer sur les raisons qui ont pousse les fondateurs du Deep Learning a utiliser le GPU
(specifiquement NVIDIA) pour entrainer leurs algorithmes.
Comme on a dit precedemment, pour quun reseau de neurones, comportant des milliers
de connexions, apprenne a faire une tache il faut tout dabord lentrainer en utilisant une
base de donnees etiquetees.
Mais cette phase dentrainement peut prendre beaucoup de temps, donc pour pouvoir
laccelerer les fondateurs du Deep Learning ont pense a utiliser le GPU en parallele avec
le CPU
10 CHAPITRE 1. MONTEE DU DEEP LEARNING

Figure 1.12 Comment le GPU accelere le calcul [6]

NVIDIA, leader sur le marche des cartes graphiques, a fabrique des GPUs utilises essentiel-
lement dans lindustrie de lintelligence artificielle. Actuellement, tous les algorithmes du
Deep Learning tournent autours des systemes ayant le GPU NVIDIA parce quil presente
de nombreux avantages [9] :
 Latout majeur des GPUs est le traitement parallele des donnees. En effet le fait de
repartir les operations de calcul sur plusieurs unites de calcul permet dobtenir le
resultat dans un temps raisonnable ce qui entraine une acceleration, de 10 a 20 fois,
dans la phase dentrainement des reseaux de neurones.
 Les GPUs sont tres adaptes pour lexecution, dans un temps faible, des algorithmes
dapprentissage qui sappuient sur des donnees complexes.
 Grace au service Cloud, on est capable maintenant de traiter un grand nombre de
donnees sur des GPUs hyper puissants comme Tesla, concu specialement pour le
DL, avec un cout energetique et une infrastructure materielle relativement faible.
1.5. CONCLUSION 11

1.5 Conclusion
Le Deep Learning est une nouvelle technologie qui a ete repandit dans tous les domaines
et notamment dans la classification et la segmentation des images, la detection des ob-
jets. . . Nous, on va essayer dimplementer ces techniques pour quon puisse les utiliser
ulterieurement dans des applications mais, avant tout, il faut preparer lenvironnement
necessaire pour leurs implementations.
Chapitre 2

Preparation de lenvironnement

2.1 Introduction

Pour toutes applications dapprentissage profond, comme pour tous autres types dap-
plication, preparation dun environnement favorable constitue lune des phases les plus
importantes dans leurs developpements.

2.2 Compute Unified Device Architecture :CUDA

2.2.1 Definition

CUDA est une plate-forme informatique, ecrite en C++, comprend un compilateur spe-
cialement concu pour les GPUs NVIDIA ainsi que des bibliotheques mathematiques et
des outils de debogage et doptimisation des performances des applications toute en ex-
ploitant la puissance de lunite de traitement graphique (GPU) [10].
Parmi les bibliotheques inclues dans CUDA on cite le NVIDIA CUDA Deep Neural Net-
work (cuDNN), une bibliotheque de primitives pour les reseaux de neurones profonds.
Cette bibliotheque aide a implementer beaucoup doperations de grandes dimensions telle
que la convolution, en donnant une bonne performance a lapplication mais avec une uti-
lisation minimale de la memoire. Ainsi Lutilisation de cette bibliotheque permet daug-
menter la vitesse dentrainement des algorithmes de plus de 44% , avec plus de 6 fois de
vitesse dans les Frameworks de Deep Learning quon les verra ulterieurement. [11]
Le cuDNN a permis daccelerer les Frameworks de Deep Learning toute en laissant les
developpeurs de ce domaine concentres sur la formation du reseau de neurones avec une
bonne performance plutot que de se charger par loptimisation des performances du GPU.
12
2.3. CAFFE 13

2.2.2 Installation du CUDA


Pour installer CUDA on a suit les etapes suivantes [12] :
1. Installation des packages necessaire pour la configuration du CUDA.
2. Installation de la derniere toolkit CUDA (version 8.0) ainsi que le dernier pilote de
NVIDIA (nvidia-375).

2.3 Caffe

2.3.1 Definition
Afin quon puisse implementer certaines algorithmes de Deep Learning il nous faut un
Framework qui va faciliter le travail du developpeur.
Vu le grand succes et la popularite du Deep Learning dans de nombreuses applications
plusieurs communautes (Google et Facebook...) ainsi que de nombreuses universites (uni-
versite de Berkeley...) ont dirige leurs interets pour le developpement des Frameworks
de Deep Learning, concus essentiellement pour beneficier de lacceleration du GPU, qui
aident a faire tourner facilement les reseaux de neurones.
Comme on a deja dit dans le chapitre precedent, on a choisi de faire tourner des reseaux
de neurones convolutionnels (CNN) dans ce cas deux Frameworks de DL, Open Source,
peuvent etre utilises :
 Torch : Cest un Framework developpe en Lua, il est tres flexible en termes de
support de diverses architectures de reseau de neurone profondes et aussi en termes
de bibliotheques supportees.
 Caffe : Cest un Framework developpe, en C++/CUDA,par le centre de vision et
dapprentissage de Berkeley (BVLC) et par des contributeurs communautaires.
Dans le cadre de notre projet, on a choisi dutiliser le Framework Caffe parce quil est tres
utilise dans la reconnaissance de limage et il presente de nombreux avantages.
Ces avantages resultent essentiellement dans sa rapidite dans le traitement des donnees
massives ainsi que la maniere dont les modeles sont definis.
Le modele defini par caffe est forme par
 Blobs, Layers et Nets : Caffe definit le modele par son schema propre (pas de
code), au fur et a mesure que les donnees traversent le reseau il y aura une com-
munication entre les donnees, dans et a travers les couches, ainsi que leur stockage.
Cette operation est realisee a laide du Blob qui fournit une memoire unifiee tenant
des donnees (les lots dimages, les parametres du modele. . . ).
14 CHAPITRE 2. PREPARATION DE LENVIRONNEMENT

 Forward/Backward : Le passage en avant calcule la sortie compte tenu de lentree


pour linference.
Le passage en arriere calcule le gradient compte tenu de la perte dapprentissage.
 Loss : Lapprentissage est guide par une fonction de perte qui specifie lobjectif
dapprentissage en mappant les parametres du modele a une valeur scalaire specifiant
la mauvaise de ces parametres.
 Solver : Le solver a pour role de superviser loptimisation du modele et generer
les mises a jour des parametres du reseau. Parmi les solvers du Caffe on peut citer
AdaDelta et Adam.
 Layer catalogue : Cest un fichier de definition du modele, dextension .prototxt
, contient la definition de toutes les operations a executer par chaque couche du
modele ainsi que leurs parametres.
 Interfaces : Comme on a deja dit precedemment Caffe est ecrit avec C++/CUDA,
mais ce Framework presente des interfaces en Python et en MATLAB afin de faciliter
le travail des developpeurs.
 Data : Les donnees vont subir des operations de convolutions, de sous echantillon-
nage ainsi que dautres transformations.

2.3.2 Installation du Caffe


Pour installer Caffe on a suit les etapes suivantes [12] :
1. Installation des packages.
2. Telechargement du Caffe.
3. Installation des packages de Python.
4. Configuration du Caffe.

2.4 NVIDIA Deep Learning GPU Training System :


DIGITS

2.4.1 Definition
On a eu la chance que NVIDIA, leader sur le marche des GPU, a developpe, en 2015,
un outil qui sappelle digits permettant de visualiser en temps reel la formation des re-
seaux de neurones concus pour la classification et la segmentation des images, ainsi que
2.4. NVIDIA DEEP LEARNING GPU TRAINING SYSTEM : DIGITS 15

la detection des objets toute en exploitant la capacite de calcul de ses fameux processeurs
graphiques. Cest cet outil quon va utiliser dans le cadre de notre projet.
Digits est une application Web ecrite en python qui fournit une interface graphique propre
pour linterfacage avec le Caffe.
A laide de cette interface intuitive vous pouvez gerer vos donnees et suivre le comporte-
ment et les performances des reseaux de neurones profonds en visualisant en temps reel
leurs formations.Vous pouvez concevoir et selectionner rapidement le reseau de neurones
qui sadapte le mieux avec vos donnees [13].

2.4.2 Installation du DIGITS


Pour bien configurer digits,il faut que la version CUDA doive etre compatible avec la
version de NVIDIA driver.Ensuite, il ne reste quinstaller digits et tous ces dependencies
Une fois linstallation est termine, digits devrait maintenant etre execute a http : //
localhost /[12]. Et voila notre interface graphique :

Figure 2.1 Page dacceuil de digits


16 CHAPITRE 2. PREPARATION DE LENVIRONNEMENT

Remarque : Normalement digits va etre execute automatiquement sur le port 80 si


quelquun a deja un serveur qui sexecute sur ce port digits ne peut pas etre lance et pour
cela il faut reconfigurer digits et le lancer sur un autre port [12].

2.5 Conclusion
CUDA, Caffe, Digits Constituent les principaux outils fournis par NVIDIA Deep Learning
SDK afin de deployer des applications dapprentissage profond accelerees par le GPU.
Une fois que tous ces elements etaient prepares il ne reste que manipuler concretement
les algorithmes dapprentissage profond via des exemples. Cest ce qui fait lobjectif du
suivant chapitre.
Chapitre 3

Implementation

3.1 Introduction
Maintenant quon a bien prepare les joueurs, allons sur le terrain pour contempler les
performances et voir si ca va confondre avec nos attentes ou non.

3.2 Devices
Comme tout debut classique, on va commencer par trainer le plus simple modele qui
consiste a distinguer entre les categories des telephones portables, autrement dit, le modele
doit etre capable de pouvoir bien comprendre si la photo quon lui fournit aleatoirement
contient un iphone, un ipad ou un sumsung galaxy !
Tout dabord, on regroupe la base de donnees denviron 150 images en total sur trois
dossiers portant chacun le nom de celui de la categorie. On obtient alors un dossier pere
intitule Devices Contenant nos trois dossiers fils.
Ouvrons la jolie page daccueil de Digits a travers localhost, dela on peut creer les datasets
et les modeles.

3.2.1 Creation de Dataset


Dans la page daccueil de Dataset, cliquez images ->classification.
Ca va vous mener a une autre page ou vous allez configurer les parametres de base de
donnees afin de la creer convenablement.
Veuillez inserer le chemin complet vers votre dossier quon a appele dans notre cas
Devices dans la case de Training images .

17
18 CHAPITRE 3. IMPLEMENTATION

Figure 3.1 Insertion de chemin pour Devices

On a laisse les autres parametres par defaut tels quils sont. Choisissez le nom de votre
DataSet et cliquez create .

Figure 3.2 Insertion de Nom de Base de doonees

Ca va prendre quelques secondes vu que la taille de notre base de donnees est assez petite.
Vous aurez finalement cette page qui presente le nombre de categories pour le training et
la validation, la taille de votre Dataset. . .

3.2.2 Trainer le modele


Revenant au page daccueil, choisissant maintenant Models .
3.2. DEVICES 19

Figure 3.3 Analyse de resultat de creation de DataSet

Cliquez models->images->classifier.
Choisissez votre Dateset cree precedemment.
Inserez le nom de model.
Choisissez lalgorithme dAlexNet.

Remarque : A ce point-la, si on cree le modele ca peut produire une erreur ( Out of


memory ). La solution cest daugmenter les parametres de performance comme suivant :

X Batch size : veuillez verifier le batch size par defaut a partir de fichier qui se
trouve dans le dossier de caffe intitule en general alexnet.prototxt . Commencez
la valeur par 10 en incrementant tout en gardant lil sur la performance de votre
GPU en %. (Pour notre cas on a atteint 40 comme limite avec 90% de performance).
X Changer le Learning rate le nombre de l epoch peut egalement ameliorer la
performance. Vous pouvez egalement consulter le Learning rate par defaut dans le
meme fichier ainsi que dautre information concernant cet algorithme.

Vous etes prets maintenant de trainer le modele en cliquant create . Le modele tournera,
entre-temps, les courbes peuvent vous visualiser le taux de precision et le taux de perte.
Ce qui va vous choquer vraiment dans ce state-la cest le taux de precision deteriore quon
peut bien lexpliquer par la petite taille de notre Dataset des le debut.
20 CHAPITRE 3. IMPLEMENTATION

Figure 3.4 Analyse de resultat de lentrainement de Modele

3.2.3 Tester le modele

Si tout va bien on peut tester le modele et voir la magie qui charme ! Choisissons une image
aleatoirement ou de votre ordinateur ou de linternet et tester. Vous allez remarquer quil
est intelligent mais pas assez, donc ca peut nous satisfaire mais pas assez !

Figure 3.5 Tester la performance de modele

En suivant notre instinct, on aura recours a trainer un autre modele avec une base de
donnees plus grande.
3.3. MNIST 21

3.3 MNIST

3.3.1 Creation de DataSet

A la fin de cette partie, on sera capable de trainer Caffe a fin de reconnaitre les chiffres
manuscrits. On utilisera MNIST handwritten digit database comme base de donnees,
contenant 60000 images pour le training et 10000 exemples dimage pour le testing, et
LeNet comme algorithme concu specialement pour cette tache. Les deux sont mis a dis-
position par Yann LeCun sur son site officiel.
Pour le premier pas, on doit preparer la base de donnees en la telechageant depuis le site
officiel de Yann LeCun.
Si le telechargement est bien termine, ouvriez digits et creez la Dataset en changeant :

Image type -> Grayscale.

Image size -> 28*28.

Choisissez un nom sans oublier dindiquer le chemin vers le dossier train qui se
trouve dans le dossier Mnist .

Lorsque le travail est termine, retournez a la page daccueil en cliquant sur DIGITS dans
la partie superieure gauche de la page. Vous devriez maintenant voir votre ensemble de
donnees repertorie sous longlet Datasets.

Figure 3.6 Detection des 10 Categories


22 CHAPITRE 3. IMPLEMENTATION

3.3.2 Trainer le modele


Cliquez sur Models -> New Model -> Images -> Classification.
Ensuite, dans la nouvelle page New Image Classification Model saisissez le suivant :
X Mnist dataset dans Select Dataset
X LeNet comme algorithme.
X Nommez le model.
X Cliquez sur create .
Vous pouvez remarquer a la fin que la precision atteint 100%, cest le resultat desire.

Figure 3.7 Detection des 10 Categories

3.3.3 Tester le modele


Cest le moment quon attend toujours : tester le modele !
Allons au bas de la page, cliquez sur upload image si vous voulez tester une image qui
existe deja sur votre ordinateur ou bien inserer lURL dune image sur internet.
3.4. KITTI 23

Figure 3.8 Insertion de lURL dune image dun nombre manuscrit

Le resultat est super-interessante, la performance de Digits avec la base de donnees de


Mnist et LeNet est optimale.

Figure 3.9 Resultat du test de modele

Digits a montre quil est brillant sur le domaine de classification des images, mais est-ce
le cas pour dautres domaines et dautres besoins ?
Pour repondre a cette question, on a recours a essayer avec la detection des objets dans
une photo donnee.

3.4 KITTI
Dans ce dernier exemple, on a choisi demployer les donnees de la piste de detection dob-
jets de la KITTI Vision Benchmark Suite. Vous pouvez bien evidemment utiliser toute
autre donnee que vous souhaitez mais faites attention Digits sattend a ce que les donnees
soient etiquetees dans le style des donnees KITTI.
Cette fois-ci on va telecharger la base de donnees de KITTI a travers le site web :
http ://www.cvlibs.net/datasets/kitti/eval object.php
24 CHAPITRE 3. IMPLEMENTATION

Vous serez face a une liste ou vous choisissez seulement ces telechargements :

Table 3.1 La listes des fichiers a telecharger [7]

Description Nom du fichier


Left color images of object data set data bject image 2.zip
Training labels of object data set data object label 2.zip
Object development kit devkit object.zip

Maintenant que le telechargement est fini, copiez ces fichiers dans $DIGITS ROOT/examples/object-
detection/ .
Ensuite executez le script Python prepare kitti data.py pour creer deux sous dossier
train et val , ca peut prendre un peu de temps depense principalement pour extraire
les fichiers compresses.
Enfin vous aurez $DIGITS ROOT/examples/object-detection/kitti-data/train,val/.
Si vous jetez un il sur les donnees vous allez remarquer quelles sont organisees de la
maniere suivante :

Un dossier image contenantt les .png , .jpg, ect.


Un dossier label contenant les .txt.

Pour chaque image du dossier image , il doit y avoir un fichier texte correspondant
dans le dossier label . Par exemple, si le dossier image contient une image nommee
toto.png, le dossier label doit inclure un fichier texte nomme toto.txt.

Figure 3.10 Arboresence de larchitecture de la base de donnees [7]

3.4.1 Creation de DataSet


Dans la page daccueil de Digits, cliquez New Dataset->Images->Objet Detection.
Lors de la creation de Dataset :
3.4. KITTI 25

Inserer le chemin vers les dossiers train et val ou vous trouvez dedans deux dossiers
nommes image et label .
Gardez les autres parametres inchanges.
Cliquez Create .

Figure 3.11 Creation de KITTI DataSet

Vous allez remarquer que la taille de la base de donnees creee cette fois-ci est tres grande
comparant aux precedentes (5.32 GB).

Figure 3.12 Taille de KITTI DataSet

3.4.2 Trainer le Modele


Derive de GoogleNet, DetectNet est concu specialement pour la detection des objets. Pour
plus dinformation visitez ce site web :
https ://devblogs.nvidia.com/parallelforall/detectnet-deep-neural-network-object-detection-
digits/
Afin de trainer ce reseau de neurones, on doit avoir la version NVcaffe 0.15.1 ou ulterieur.
Veuillez verifier votre version en haut a droite de la page daccueil de Digits -> Info.
26 CHAPITRE 3. IMPLEMENTATION

Vous trouvez la description de DetectNet dans :


$CAFFE ROOT/examples/kitti/detectnet network.prototxt
Dans la page de creation de Model :
Selecter votre base de donnees precedemment creee.
Substract mean -> none.
Learning rate -> 0.0001.
Solver -> ADAM.

Figure 3.13 Preparation de Modele(1)

Custom Network -> Caffe -> copier/coller le contenu de detectnet network.prototxt.


Visualise lalgorithme en cliquant Visualize .
3.4. KITTI 27

Figure 3.14 Preparation de Modele(2)

Comme DetectNet est derive de GoogleNet, il est bien recommande dutiliser le pre-traine
GoogleNet fourni par ImageNet, ceci servira a accelerer le training de DetectNet.
Vous pouvez trouver le modele pre-traine de GoogleNet sur ce lien :
http ://dl.caffe.berkeleyvision.org/bvlc googlenet.caffemodel

Specifier le chemin vers le fichier telecharge de GoogleNet.caffemodel dans la case


Pretrained Model(s)
Finalement, cliquez create .

Figure 3.15 Erreur de creation de modele

On avait une erreur de memoire : pour notre ordinateur on a un GPU de memoire 2 GB


ce qui est insuffisant pour ce modele parce que DetectNet demande au moins 12 GB de
memoire GPU.
28 CHAPITRE 3. IMPLEMENTATION

3.5 Conclusion
Ce nest pas la fin de chemin, heureusement, le Cloud nous a sauves !
Dans le chapitre suivant, Nous decouvrirons comment poursuivre notre travail sur le cloud.
Chapitre 4

La solution Cloud

4.1 Introduction
Comme dhabitude, pour tous problemes de memoire et de stockage de donnees, le Cloud
est la pour nous offrir, a travers Amazon Web Service, des machines virtuelles (dans notre
cas des GPUs) qui vont accelerer les algorithmes dapprentissage profond appliques a des
donnees enormes.

4.1.1 Amazon Web Service


AWS est une plateforme de service Cloud computing qui fournit des services enormes
notamment les capacites de calcul, les options de stockages ainsi que les bases de donnees.

4.1.2 Amazon Elastic Compute Cloud (EC2)


4.1.2.1 Definition

Cest un service web, destine aux developpeurs dapplications, qui permet de faciliter
lacces a des ressources, egalement les instances destines a des fins de calcul, fournies par
le Cloud Computing.

4.1.2.2 Avantages

Amazon EC2 presente de nombreux avantages [14] :

X Acces elastiques aux ressources informatiques :


Amazon EC2 permet aux developpeurs dobtenir et de configurer des capacites fa-
cilement ainsi quy calibrer, en quelques minutes, selon les besoins de calcul.En plus
29
30 CHAPITRE 4. LA SOLUTION CLOUD

que ca le developpeur a le droit de mettre en service plusieurs instances simultane-


ment et de les desactiver a tout moment.
X Controle total :
Ainsi, a partir de nimporte quelle machine, lutilisateur peut acceder a chaque racine
de toutes ses instances et conserver tous ses donnees meme apres arret de linstance
pour les retrouver ensuite en redemarrant cette meme instance.
X Flexibilite du service :
Amazon EC2 offre loccasion aux developpeurs de choisir, selon les besoins, le type
dinstance, le systeme dexploitation. . . Amazon EC2 va completer la configuration
(CPU, la memoire. . . ) de la machine virtuelle qui repond le mieux a ses choix.
X Compatibilite avec dautres Amazon Web Service :
Afin de faciliter les operations de calcul et le stockage des donnees Amazon EC2
fait appel a dautres Amazon Web Services tels que Amazon Simple Storage Ser-
vice (Amazon S3), Amazon Relational Database Service (Amazon RDS) et Amazon
SimpleDB.
X Fiabilite :
La rapidite de la configuration et de la mise en service des instances EC2 prouve la
fiabilite de ce service.
X Securite :
Ce service offre la possibilite aux developpeurs de definir les instances figurant au
sein dun cloud prive Virtuel (VPC) ainsi que de controler, a travers des groupes de
securites, les trafics reseau qui sortent ou entrent a ses instances.
X Rentabilite :
Les capacites de calcul ne sont pas cheres, le developpeur paye un tarif tres bas par
rapport a ce quil consomme ainsi quil ne paye que les tarifs des instances en cours
dexecution.
X Demarrage :
En ouvrant linterface web du service EC2, le developpeur peut, a laide des clics
simples ou la console EC2, configurer et activer les instances EC2.
Cette instance permet dacceder aux GPUs qui vont nous aider a appliquer et
ameliorer les performances des algorithmes dapprentissage profond.
Dans les paragraphes suivants on va decouvrir la maniere avec laquelle on a accede
a une instance g2.2xlarge, les etapes quon a suivi pour lactiver et enfin on va
implementer une application de deep Learning (detection des objets) en utilisant
des algorithmes dapprentissage profond acceleres par les GPUs.
4.1. INTRODUCTION 31

4.1.2.3 Activation dinstance g2.2xlarge

Avant tous pour quon puisse utiliser et activer des instances EC2 il faut avoir acces
vers le Amazon Cloud Service via un compte Amazon.
Pour activer linstance g2.2xlarge il faut suivre les etapes suivantes [?] :
1. Passez par le site web Rosetta HUB pour sidentifier (entrer le login et le mot
de passe).
2. Choisissez le service que vous cherchez : EC2.

Figure 4.1 Selection du type de service

3. Cliquez sur Lancer linstance sur le tableau de bord EC2.


32 CHAPITRE 4. LA SOLUTION CLOUD

Figure 4.2 Lancement dune instance EC2

4. Selectionnez Ubuntu Server 14.04 LTS ... comme une image machine.

Figure 4.3 Selection dune image machine


4.1. INTRODUCTION 33

5. Selectionnez le type dinstance GPU : g2.2xlarge .

Figure 4.4 Selection de type dinstance EC2

6. Cliquez sur next jusqua arriver a la page Add Storage , il est recom-
mande daugmenter la taille du stockage du root volume jusqua 20 GB
parce que 8 GB (mise par defaut) est insuffisante pour pouvoir utiliser le GPU.
.

Figure 4.5 Choix du taille de stockage

7. Dans la page Configure Security Group , cliquez sur add rule et entrer
5000 dans la plage des ports et definissez la source a nimporte quel endroit. .
34 CHAPITRE 4. LA SOLUTION CLOUD

Figure 4.6 Configuration de la securite

8. Cliquez sur review and launch puis sur launch , vous serez invite a creer
et a telecharger votre paire de cles afin que vous puissiez utiliser SSH dans
votre serveur. Telechargez la paire de cles et conservez-la dans un endroit sur.
.

Figure 4.7 Creation de paire de cle

9. Enfin cliquez sur launch et attendez jusqua ce que linstance demarre. Une
fois linstance est en cours dexecution une adresse IP public sera attribue a
elle. .

Maintenant on a active linstance g2.2xlarge il ne reste que se connecter a cette


instance via le SSH.
4.1. INTRODUCTION 35

Figure 4.8 Demarrage de linstance EC2

4.1.3 Preparation de lenvironnement


Pour une preparation complete de lenvironnement il faut suivre les etapes suivantes
[12] :
1. Mettre a jour votre systeme.
2. Installer les preliminaires et les packages necessaires pour limplementation.
3. Installer CUDA.
4. Installer la bibliotheque cuDNN.
5. Installer Caffe.
6. Installer digits.
Si tout va bien, vous disposez maintenant dun serveur Web DIGITS que vous pouvez
lacceder a lURL http : // <public ip> : 5000. Vous serez maintenant capable de lutiliser
pour entrainer des algorithmes de Deep Learning.
Voila maintenant quon a bien prepare lenvironnement on revient au 3eme chapitre et
on reconstruit la base de donnees de KITTI puis on cree le modele comme on a indique !
Cette fois-ci on aura la courbe suivante :
36 CHAPITRE 4. LA SOLUTION CLOUD

Figure 4.9 La courbe dentrainement de modele de KITTI

Sachant que mAP ( main Average Precision) est le meilleur indicateur de precision du
modele, on peut bien remarquer quon a bien reussi a trainer un modele de tres bon taux
de precision. Cest le moment devaluer la performance pratique du modele a travers le
test.
Pour quon ait les objets qui se trouvent dans la photo encadres par des rectangles on doit
selectionner Bounding Boxes dans Select Visualization .

Figure 4.10 Test du modele de KITTI

Remarque : On peut toutefois tester un ensemble dimage en utilisant loption Test a


list of Images.
Conclusion generale

Le BigData, lIOT et le HPC, ce nouveau triangle qui domine le domaine de lIT ou


chaque sommet est indispensable pour la persistance de lautre ! Le Deep learning dans
cette situation est le centre de ce triangle, le carburant !
Boule de cristal pleine des milliards des donnees, Le BigData est consideree aujourdhui
la nouvelle arme sophistiquee et fatale. Le posseder/gerer devient le grand enjeu mondial
ce qui mene le monde a investir dans les Super Calculateurs et les algorithmes danalyse
et doptimisation des donnees dou la naissance de nouveau concept HPDA (High Perfor-
mance Data Analytics).
Les donnees sont donc comme le petrole, il faut les raffiner pour quelles prennent de
la valeur. Les raffineries sont des super calculateurs qui trient et analysent des milliards
des donnees, issues de plusieurs sources principalement les objets connectes, en temps
reel grace a des algorithmes intelligents de DL et a travers les framework comme Apache
Spark vu que ce dernier a montre une performance spectaculaire dans le traitement des
donnees.
Pour mieux decouvrir limportance de HPC, on a assiste au premier workshop du HPC
en Tunisie qui a deroule a ESPRIT incubator. Cest dans cette occasion quon a realise
que le Deep Learning en particulier et lIA en general netait realisable quavec le progres
de HPC, surtout les GPU, et la solution Cloud qui permet dallouer des ressources mate-
rielles pour tourner les algorithmes.
On a assiste egalement au JPO de Supcom pour quon puisse sapprocher plus au pou-
voir de BigData et cetait la ou on etait surpris par leffet miraculeux de ce concept dans
les nouvelles strategies daujourdhui dans tous les domaines : commerciales, politiques,
medicales, sociales. . .
Ce projet nous a ouvert les yeux sur les nouvelles tendances technologiques autour des-
quelles le monde se deroule aujourdhui. Il nous a donne egalement lopportunite de pour-
suive un stage dete dans le domaine de Deep Learning/Machine Learning et pourquoi
pas un PFE pour lannee prochaine pour quon puisse mettre en valeur notre travail dans
une concrete application.
37
Bibliographie

[1] Loc. Knuchel : Le machine learning, cest quoi exactement ? Nouvembre 2013.
[2] Phillipe. Beraud : Une premiere introduction au deep learning. Avril 2016.
[3] Adil. Moujahid : A practical introduction to deep learning with caffe and python.
Juin 2016.
[4] Eugenio. Culurciellos blog : Neural network architectures. Juin 2016.
[5] Tual. Morgane : Comment le deep learning revolutionne lintelligence artificielle.
Juillet 2015.
[6] Le deep learning pas A pas : LimplEmentation (2/2). Disponible sur In-
ternet < https ://www.technologies-ebusiness.com/langages/le-deep-learning-pas-a-
pas-limplementation-22>.
[7] Object detection. Disponible sur Internet <
https ://github.com/NVIDIA/DIGITS/tree/master/examples/object-detection>.
[8] Louis . Ludovic : Machine learning et deep learning, comment ca marche ? Decembre
2016.
[9] Apprentissage automatique. Disponible sur Internet <
http ://www.nvidia.fr/object/tesla-gpu-machine-learning-fr.htmltp>.
[10] Traitement parallEle cuda. Disponible sur Internet <
http ://www.nvidia.fr/object/cuda-parallel-computing-fr.html>.
[11] Sharan. Chetlur : cudnn : Efficient primitives for deep learning. octobre 2016.
[12] Ubuntu installation. Disponible sur Internet < https ://gi-
thub.com/NVIDIA/DIGITS/blob/master/docs/UbuntuInstall.md>.
[13] Digits : Deep learning gpu training system. Disponible sur Internet <
https ://devblogs.nvidia.com/parallelforall/digits-deep-learning-gpu-training-
system/>.
[14] Amazon ec2. Disponible sur Internet < https ://aws.amazon.com/fr/ec2/>.
38
Annexe 1

Cette annexe contient les differentes commandes utilisees ,dans la preparation de lenvi-
ronnement, pour implementer des algorithmes de Deep Learning sur le GPU NVIDIA.

Figure 4.11 Installation CUDA

Figure 4.12 Installation Caffe (packages)


39
40 ANNEXE 1

Figure 4.13 Installation Caffe

Figure 4.14 Installation Caffe (python packages

Figure 4.15 Suite Installation de Python packages

Figure 4.16 Configuration de Caffe

Figure 4.17 Installation de Digits


41

Figure 4.18 Telechargement de Mnist DataSet

Figure 4.19 Execution de prepare kitti data.py


Annexe 2

Cette annexe contient les differentes commandes utilisees ,dans la preparation de lenvi-
ronnement, pour implementer des algorithmes de Deep Learning sur le cloud.

Figure 4.20 Mise a jour du systeme et installation des packages

Figure 4.21 Installation de Theano

42
43

Figure 4.22 Installation de CUDA


44 ANNEXE 2

Figure 4.23 Installation de CuDNN

Figure 4.24 Installation de Caffe

Figure 4.25 Installation de Digits