R´ esum´ e Notre projet pr ojet vise principalement l’impl´ ementation ementation de Deep Learning Lear ning sur un GPU NVIDIA en premier lieu et sur le Cloud en 2´eme eme lieu. Pour le front-end, on a choisi DIGITS, une application web, pour mieux visualiser la fonctionnalit fonctionnalit´´e des algorithmes algorithmes de DL sans code. Comme back-en, back-en, c’´ etait etait Caffe le plus adaptable a` nos besoins. Notre projet pro jet se divise globalement en 3 parties principales : la premi` pr emi`ere ere c’est de pr´eparer eparer l’environne l’environnement ment de travail travail (Installation, (Installation, configuration. configuration. . . ) , la 2´eme eme sert a` impl´ imp l´ement em enter er quelques quelques fameux algorithmes algorithmes de classification classification et de d´etection etection des objets tout en exploiexploitant des diverses diverse s base b ase de donn´ees ees normalis´ norma lis´ees ees et issues de diff´erentes erentes sources sourc es en appliquant appliq uant chaque fois un algorit a lgorithme hme appropri´ appro pri´e. e. On a insist´ insist´e dans ce projet ´eventuelle eventuellement ment sur l’importance l’importance de Cloud pour tourner les algorithmes algor ithmes de DL qui s’applique s’a ppliquent nt sur des d es grande gr andess bases base s de donn´ees ees et e t ce dans la l a derni` der ni`ere ere partie. Ce projet constitue une terre fertile o` u on peut planter des applications d’IA qui peuvent aider l’humanit´ e dans le plus proche avenir.
Mots Mo ts cl´ cl ´ es es : Deep Learning, NVIDIA, DIGITS, Caffe, Cloud.
Table ble des des mat mati` eres er es Table des figures Liste des tableaux
vi viii
Liste des acronymes
ix
Introduction g´ en´ erale
x
1
1
Mont´ ee du Deep Learning 1.1
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1
1.2 1.2
La mac machine hine Lear Learni ning ng : l’ap l’appr pren enti tisssage sage au auto toma mati tiqu quee . . . . . . . . . . . . .
1
1.3
Le Deep Lea Learni rning : l’appren rentissage pro profon ond d . . . . . . . . . . . . . . . . . .
4
1.3.1
D´efinition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4
1.3.2
Quelques fameux algorithmes . . . . . . . . . . . . . . . . . . . . .
6
1.3.3
L’av`enement du Deep Learning . . . . . . . . . . . . . . . . . . . .
7
Les pro cesseurs graphiques . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
1.4.1
D´efinition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
1.4.2
GPU vs CPU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11
1.4
1.5
2 Pr´ eparation de l’environnement
12
2.1
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2
Compute Unifi nified Device Arch rchitectu cture :CUDA . . . . . . . . . . . . . . . . 12
2.3
2.4 2.4
2.2.1
D´efinition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12
2.2.2
Installation du CUDA . . . . . . . . . . . . . . . . . . . . . . . . . 13
Caffe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.3.1
D´efinition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13
2.3.2
Installation du Caffe . . . . . . . . . . . . . . . . . . . . . . . . . .
14
NVID NVIDIA IA Deep Deep Lear Learni ning ng GPU GPU Train rainin ingg Syst System em : DIGI DIGITS TS . . . . . . . . . . 14 iv
Table ble des des mat mati` eres er es Table des figures Liste des tableaux
vi viii
Liste des acronymes
ix
Introduction g´ en´ erale
x
1
1
Mont´ ee du Deep Learning 1.1
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
1
1.2 1.2
La mac machine hine Lear Learni ning ng : l’ap l’appr pren enti tisssage sage au auto toma mati tiqu quee . . . . . . . . . . . . .
1
1.3
Le Deep Lea Learni rning : l’appren rentissage pro profon ond d . . . . . . . . . . . . . . . . . .
4
1.3.1
D´efinition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4
1.3.2
Quelques fameux algorithmes . . . . . . . . . . . . . . . . . . . . .
6
1.3.3
L’av`enement du Deep Learning . . . . . . . . . . . . . . . . . . . .
7
Les pro cesseurs graphiques . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
1.4.1
D´efinition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
1.4.2
GPU vs CPU . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
9
Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
11
1.4
1.5
2 Pr´ eparation de l’environnement
12
2.1
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
2.2
Compute Unifi nified Device Arch rchitectu cture :CUDA . . . . . . . . . . . . . . . . 12
2.3
2.4 2.4
2.2.1
D´efinition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
12
2.2.2
Installation du CUDA . . . . . . . . . . . . . . . . . . . . . . . . . 13
Caffe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13 2.3.1
D´efinition . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13
2.3.2
Installation du Caffe . . . . . . . . . . . . . . . . . . . . . . . . . .
14
NVID NVIDIA IA Deep Deep Lear Learni ning ng GPU GPU Train rainin ingg Syst System em : DIGI DIGITS TS . . . . . . . . . . 14 iv
` TABLE DES MATI ERES
2.4.1 2.4.2 2.5
D´efinition
v . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Installation du DIGITS . . . . . . . . . . . . . . . . . . . . . . . . . 15
Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
3 Impl´ ementation
16
17
3.1
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.2
Devices
3.3
3.2.1
Cr´eation de Dataset . . . . . . . . . . . . . . . . . . . . . . . . . .
3.2.2
Trainer le mo d`ele
3.2.3
Tester le mo d`ele
MNIST 3.3.1
3.4
3.5
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 . . . . . . . . . . . . . . . . . . . . . . . . . . . 18 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Cr´eation de DataSet . . . . . . . . . . . . . . . . . . . . . . . . . .
21
3.3.2
Trainer le mo d`ele . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.3.3
Tester le mod od``ele . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
KITTI . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23 3.4.1
Cr´eation de DataSet . . . . . . . . . . . . . . . . . . . . . . . . . .
3.4.2
Trainer le Mod od``ele . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4 La solution Cloud 4.1
17
24 28
29
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29 4.1.1
Amazon Web Service . . . . . . . . . . . . . . . . . . . . . . . . . .
4.1.2
Amazon zon Elastic Compute Cloud (EC (EC2) . . . . . . . . . . . . . . . . 29
4.1.3
29
4.1.2.1
D´efinition . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
4.1.2.2
Avantages . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.1. 4.1.2. 2.33
Acti Activ vati ation d’in d’inst stan ance ce g2.2 g2.2xl xlar arge ge . . . . . . . . . . . . . . . 31
29
Pr´epa e parat ration de l’env environn nneement . . . . . . . . . . . . . . . . . . . . 35
Conclusion g´ en´ erale
37
Bibliographie
37
Annexe 1
39
Annexe 2
42
Table des figures 1.1 D´ etermin eterminati ation on d’un d’unee foncti fonction on lin lin´´eaire eaire par par la machin machinee learn learning ing [1] . . . . . .
2
1.2 1.2
Sch Sch´ema e ma du fonc foncti tion onne neme men nt d’un d’un neur neuron onee arti artific ficie iell [2] [2] . . . . . . . . . . . .
3
1.3
Prin rincipe cipe de fonct nctionnem nement de Mach achine Lea Learni rning . . . . . . . . . . . . . .
3
1.4 Introdu Introducti ction on de l’algor l’algorith ithme me interm interm´´ediaire ediaire dan danss la la mac machin hinee Learn Learning ing . . . .
4
1.5 1.5
Arc Archite hitect ctur uree d’u d’un n r´esea e seau u de de neu neuro rone ness multi ultico couc uche hess [3] [3] . . . . . . . . . . . .
5
1.6
Prici ricipe pe de foncti ctionneme ement Deep eep Lear earnin ning . . . . . . . . . . . . . . . . . . .
5
1.7
Architecture de LeNet [4] . . . . . . . . . . . . . . . . . . . . . . . . . . . .
6
1.8
Architecture d’AlexNet [4] . . . . . . . . . . . . . . . . . . . . . . . . . . .
7
1.9
Architecture de Goog oogleNet [4] . . . . . . . . . . . . . . . . . . . . . . . . .
7
1.10 Le massif du Mon Mont-Blanc vu par DeepD epDrea ream [5] . . . . . . . . . . . . . . .
8
1.11 Dispo possition des ALUs : GPU vs CPU [6] . . . . . . . . . . . . . . . . . . .
9
1.12 1.12 Co Comm mmen entt le le GPU GPU acc acc´el` e l`ere e re le le cal calcu cull [6] [6] . . . . . . . . . . . . . . . . . . . . 10 2.1
Page d’acceuil de digits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.1
Insertion de chemin po pou ur Devices . . . . . . . . . . . . . . . . . . . . . . . 18
3.2
Inserti rtion de Nom de Base de doon oon´ees . . . . . . . . . . . . . . . . . . . . . 18
3.3 3.3
Anal An alys ysee de r´esul e sulta tatt de cr´ cr´eati e ation on de Da Data taSe Sett . . . . . . . . . . . . . . . . . . 19
3.4 3.4
Anal An alys ysee de de r´ r´esul e sulta tatt de de l’en l’entra train inem emen entt de de Mod` Mod` ele e le . . . . . . . . . . . . . . . 20
3.5
Tester la perf perfoormance nce de mod od``ele . . . . . . . . . . . . . . . . . . . . . . . . 20
3.6
D´etecti ectioon des 10 Cat´ at´ego e gorie ries . . . . . . . . . . . . . . . . . . . . . . . . . . 21
3.7
D´etecti ectioon des 10 Cat´ at´ego e gorie ries . . . . . . . . . . . . . . . . . . . . . . . . . . 22
3.8 3.8
Inse Insert rtio ion n de l’UR l’URL L d’un d’unee imag imagee d’un d’un nom nombre bre man manuscr uscrit it . . . . . . . . . . . 23
3.9
R´esultat du test de mod od``ele . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
3.10 3.10 Arbor Arbor´´esence e sence de l’a l’arc rchi hitec tectur turee de la bas basee de don donn´ n´ ees e es [7] [7] . . . . . . . . . . . 24 3.11 Cr´eation de KITTI DataSet . . . . . . . . . . . . . . . . . . . . . . . . . . 25 3.12 Taille de KITTI DataSet . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25 3.13 Pr´epara aration tion de Mod Mod`ele(1) e(1) . . . . . . . . . . . . . . . . . . . . . . . . . . . 26 3.14 Pr´epara aration tion de Mod Mod`ele(2) e(2) . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 vi
vii
TABLE DES FIGURES
3.15 Erreu rreurr de cr´eation tion de mod od``ele
. . . . . . . . . . . . . . . . . . . . . . . . . 27
4.1
S´election du type de service . . . . . . . . . . . . . . . . . . . . . . . . . .
31
4.2
Lancement d’une instance EC2 . . . . . . . . . . . . . . . . . . . . . . . .
32
4.3
S´election d’une image machine . . . . . . . . . . . . . . . . . . . . . . . . . 32
4.4
S´election de type d’instance EC2 . . . . . . . . . . . . . . . . . . . . . . . 33
4.5
Choix du taille de stock ockage . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.6
Config figu urat ration de la s´ecu e curit rit´e . . . . . . . . . . . . . . . . . . . . . . . . . . 34
4.7
Cr´eation de paire de cl´e . . . . . . . . . . . . . . . . . . . . . . . . . . . .
4.8
D´emarrage de l’instance EC2 . . . . . . . . . . . . . . . . . . . . . . . . . 35
4.9 4.9
La cour courbe be d’en d’entr trai aine neme men nt de de mod mod``ele e le de de KIT KITTI TI . . . . . . . . . . . . . . . . 36
34
4.10 Test du mod`ele de KITTI . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 4.11 Installation CUDA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 4.12 Installation Caffe (packages) . . . . . . . . . . . . . . . . . . . . . . . . . . 39 4.13 Installation Caffe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
40
4.14 Instal tallatio tion Caffe (py (pytho hon n packages . . . . . . . . . . . . . . . . . . . . . . 40 4.15 Suite Instal tallation tion de Python pack ackage ages . . . . . . . . . . . . . . . . . . . . . 40 4.16 Configuration de Caffe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40 4.17 Installation de Digits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
40
4.18 4.18 T´el´ e l´echa e charg rgem emen entt de Mnis Mnistt DataS ataSet et . . . . . . . . . . . . . . . . . . . . . . . 41 4.19 Execution de prepare ki kitti da data.py . . . . . . . . . . . . . . . . . . . . . . 41 4.20 4.20 Mise Mise a` jou jourr du du sys systt`eme e me et et ins insta tall llat atio ion n des des pac packages ages . . . . . . . . . . . . . 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` t´el´echarger [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 g´ en´ erale Lorsque l’intelligence artificielle a d’abord ´emerg´e comme une discipline, les scientifiques avaient de grands espoirs pour cela. Ils voulaient cr´eer l’Intelligence Artificielle G´en´erale, c’est-`a-dire un syst`eme informatique capable de faire quelque chose d’humain, d’une mani`ere meilleure et plus rapide que nous. Apr`es que l’IA n’a pas r´eussi a` respecter ses promesses initiales, les scientifiques ont r´eduit leurs attentes, tout en se concentrant sur des tˆ aches sp´ecifiques. Aujourd’hui, la Machine Learning est le seul domaine qui apporte des r´esultats prometteurs et pertinents. L’id´ee derri`ere elle est assez simple. Plutˆ ot que de programmer des ordinateurs avec un ensemble sp´ecifique d’instructions pour accomplir une tˆ ache particuli`ere, comme le d´eplacement, la parole ou la reconnaissance de visages, vous codez les machines pour apprendre de leur propre mani`ere a` effectuer la tˆache. Diff´erents concepts algorithmiques ont ´et´e utilis´es pour la Machine Learning, mais ce sont les biomim´etiques, ou biomim´etrie, qui ont permis une perc´ee r´eelle. Biomimetics s’inspirent de la biologie, dans ce cas, le cerveau humain, afin de concevoir une machine plus intelligente. Cela a conduit au d´eveloppement de r´eseaux de neurones artificiels, qui sont programm´es pour traiter l’information de la mˆeme mani`ere que notre cerveau. Nos propres processus d’apprentissage sont li´es aux synapses du cerveau, qui servent de connexion entre nos neurones. Plus une stimulation est stimul´ee, plus la connexion est renforc´ee et l’apprentissage s’est am´elior´e. Les chercheurs se sont inspir´es de ce m´ecanisme pour concevoir une synapse artificielle, appel´ee memristor. Ces derni`eres ann´ees, plus pr´ecis´ement en 2012, le Deep Learning est mont´e sur sc`ene pour voler la vedette a` la Machine Learning. Il a envahi tous les grands titres, ainsi, il est devenu le centre d’attention de tout le monde grˆ ace a` ses r´ealisations spectaculaires ! Comment fonctionne ce r´eseau de neurones artificiels ? Du Machine Learning au Deep Learning, pourquoi cette migration ? Comment et o` u peut-on impl´ementer le Deep Learning ?
x
Chapitre 1 Mont´ ee du Deep Learning 1.1
Introduction
Vers les ann´ees 1950, un nouveau terme a ´et´e remont´e dans le monde c’etait l’intelligence artificielle. Mais, rapidement des histoires des sciences fiction ont montr´e l’inqui´etude envers des machines plus intelligentes que l’homme ce qui a men´e a` sa disparition. Aujourd’hui, ce terme revient en force avec l’apparition de nouvelles techniques d’apprentissage, l’apparition des processeurs de grande puissance de calcul ainsi que la disponibilit´e des donn´ees.
1.2
La machine Learning : l’apprentissage automatique
La machine Learning est une technologie de l’intelligence artificielle qui tient a` mod´eliser et a` classer des donn´ees selon des cat´egories. Elle consiste a` faire tourner des algorithmes qui permettent aux ordinateurs d’apprendre en ´etudiant, au pr´ealable, des exemples. Ces algorithmes d’apprentissage automatique sont fond´es essentiellement sur une analyse des donn´ees qui va servir ensuite dans la classification et la reconnaissance de nouvelles donn´ees [1]. Le fonctionnement de la machine Learning se r´esume dans deux phases [3] : — Une phase d’apprentissage utilis´ee pour entrainer, a` l’aide des exemples d’entr´ees et de sorties (donn´ees ´etiquet´ees), l’algorithme a` reconnaitre les donn´ees. — Une phase de pr´ediction utilis´ee pour tester le mod`ele.
1
2
CHAPITRE 1.
´ DU DEEP LEARNING MONT EE
Dans un premier temps, le fonctionnement de la machine learning consistait essentiellement a` d´eterminer une relation lin´eaire reliant des entr´ees X avec des sorties Y : Y=aX+b. La figure ci-dessous pr´esente un exemple d’application o` u on trouve une relation simple entre la surface et le prix d’un appartement `a Paris [1].
Figure 1.1
– D´etermination d’une fonction lin´eaire par la machine learning [1]
Cependant, pour des exemples assez compliqu´es (classification des images compliqu´ees, d´etection des objets sur , la compr´ehension de la parole. . . ), la machine Learning ´etait incapable de les mod´eliser et il demeure difficile de trouver des relations simples entre les entr´ees et la sortie. On est besoin alors de quelque chose qui peut prendre beaucoup d’entr´ees et qui arrive a` capturer des relations plus complexes d’o` u l’intervention du r´eseau de neurones. Ce dernier pr´esente une interconnexion entre plusieurs neurones. En r´ealit´e ces neurones ne sont que des fonctions math´ ematiques qui vont mettre en relation des entr´ees avec une sortie [3].
1.2. LA MACHINE LEARNING : L’APPRENTISSAGE AUTOMATIQUE
Figure 1.2
3
– Sch´ ema du fonctionnement d’un neurone artificiel [2]
Ces neurones, polyvalents, sont semblables aux neurones biologiques car ils imitent le fonctionnement du cerveau humain. En effet, on prend un r´ eseau de neurones et on y pr´esente une base de donn´ees d’exemples d’entr´ees et de sorties. Le r´eseau va analyser les ` chaque it´eration, il sera inform´e, donn´ees un par un et il prend une d´ecision a` ce sujet.A `a l’aide d’une fonction coˆ ut, si sa d´etermination est correcte ou non. Si sa d´ecision ´etait erron´ee, l’algorithme va ajuster sur les connexions entre les neurones du r´eseau afin de changer ses pr´evisions futures. Ce processus sera r´eput´e jusqu’` a ce que les connexions soient r´egl´ees et le r´eseau devient capable de pr´edire correctement la sortie si on y pr´esente une entr´ee [8]. Notons bien que cet entraˆınement peut n´ecessiter des heures, voire des jours tout d´epend de la puissance de l’ordinateur et de la taille de base de donn´ees.
Figure 1.3
– Principe de fonctionnement de Machine Learning
Remarque : Plus qu’on a d’entr´ees (beaucoup de d´etails et de caract´eristiques), plus qu’on ajoute de neurone, plus la phase d’apprentissage sera tr`es compliqu´ ee et donc il
4
CHAPITRE 1.
´ DU DEEP LEARNING MONT EE
devient tr`es difficile d’extraire des relations. La solution est donc de faire des algorithmes interm´ ediaires. Ces algorithmes ne sont pas des r´eseaux de neurones, ils consistent a` analyser les donn´ees et extraire toutes ses caract´eristiques int´ eressantes qui vont ˆetre utilis´ees comme des entr´ees pour les r´eseaux de neurones [3].
Figure 1.4
– Introduction de l’algorithme interm´ediaire dans la machine Learning
Mais avec ces algorithmes, on est devant un autre enjeu c’est le d´egr´ee de fid´elit´e aux donn´ees car la qualit´e de pr´ediction va d´ependre des r´esultats fournis par ces algorithmes interm´ ediaires et pour cela leurs conceptions n´ecessitent un travail d’intelligence ce qui n’est pas garanti d’o` u la naissance du Deep Learning.
1.3 1.3.1
Le Deep Learning : l’apprentissage profond D´ efinition
Le Deep Learning est un ensemble de technique de classification et d’apprentissage automatique, visant `a reproduire le fonctionnement du cerveau humain. Il a n´ee vers 2006 et se base sur des r´eseaux de neurones artificiels. La particularit´e de ces r´eseaux est qu’ils sont organis´es en couche et d’une mani`ere hi´erarchique [5]. Le DL vient de r´esoudre le probl`eme de l’algorithme de construction des caract´eristiques, son id´ee est de sauter l’´etape de conception de cet algorithme en faisant un gros r´eseau de neurone avec plein de couches [3].
1.3. LE DEEP LEARNING : L’APPRENTISSAGE PROFOND
Figure 1.5
5
– Architecture d’un r´eseau de neurones multicouches [3]
Ces couches sont utilis´ees pour effectuer un traitement, hi´erarchis´es, des donn´ees et extraire tous leurs caract´eristiques. Ainsi chaque couche prend comme entr´ee la sortie de la pr´ec´edente pour estimer une sortie qui va servir comme entr´ee pour la couche d’apr`es et avec ce processus le programme arrive a` d´eterminer la relation d’entr´ees-sortie mˆeme qu’elle parait tr`es compliqu´ee [5].
Figure 1.6
– Pricipe de fonctionnement Deep Learning
Bien que la phase d’apprentissage fˆ ut tr`es difficile avec un gros r´eseau de neurones, des grands pionniers de Deep Learning (comme Yann LeCun,. . . ) ont arriv´ e a` construire des algorithmes qui sont capables de d´eterminer des relations assez complexes entre des entr´ees et une sortie. Ainsi le petit miracle qui se produit avec le Deep Learning c’est que les couches inf´erieures du r´eseau de neurone cherchent d’abord a` traiter les ´el´ements les plus simple pr´esent´es dans une donn´ee et les couches sup´erieures extraient les caract´eristiques les plus complexes ce qui va faciliter la phase d’apprentissage [5]. Actuellement il devient facile de faire des r´eseaux de neurones profonds qui ont plus d’une centaine de couches et plusieurs millions de neurones.
6
CHAPITRE 1.
1.3.2
´ DU DEEP LEARNING MONT EE
Quelques fameux algorithmes
Il existe plusieurs cat´egories d’algorithmes de DL dont les plus fameux sont : — Les r´eseaux de neurones profonds (Deep Neural Networks) : Ce sont des r´eseaux MLP ( Multi Layer Perceptron) qui ont le plus grand nombre de couches cach´ees ce qui permet au r´eseau de neurones de mieux d´etecter les l´eg`eres variations du mod`ele d’apprentissage. Il est souvent utilis´e dans la reconnaissance de parole [2]. — La machine de Boltzmann profonde (Deep Belief Network) : Ces algorithmes fonctionnent suivant deux phases principales : l’une sert a` classer les donn´ees en cat´egorie sans crit`eres pr´ed´efinis (apprentissage non supervis´e), suivi de l’entrainement classique (apprentissage supervis´e). Cette ´etape d’apprentissage non-supervis´e, permet, en outre, de faciliter l’apprentissage supervis´e [2].
eseaux de neurones convolutionnels (CNN ou Convolutional Neural Net— Les r´ works) :Le traitement de donn´ees est divis´e en sous-parties, et pour chaque partie, un cluster de neurones sera cr´e´e afin d’´etudier cette portion sp´ecifique. Ce genre de r´eseaux se base essentiellement sur des op´erations de convolution et de pooling exerc´e sur les images pr´esent´ees comme matrices [2]. Bien ´evidemment, on va choisir le CNN comme r´eseaux de neurones vu qu’il est le meilleur `a s’adapter avec nos besoins. Ce type p`ere de NN a des ramifications suite a` l’importance de traitement d’image de nos jours. On peut citer comme exemples : — LeNet : Le premier CNN d´evelopp´ e par Yann LeCun dans les ann´ees 90 pour la reconnaissance des codes postaux et les chiffres manuscrits [4].
Figure 1.7
– Architecture de LeNet [4]
— AlexNet : d´evelopp´e par Alex Krizhevsky, Ilya Sutskever et Geoff Hinton.Il a ´et´e soumis au d´efi ImageNet ILSVRC en 2012 et a nettement occup´e la 2´eme place. Le r´eseau avait une architecture tr`es similaire a` LeNet, mais avec plus grand nombres des couches convolutionnelles empil´ees les unes sur les autres [4].
1.3. LE DEEP LEARNING : L’APPRENTISSAGE PROFOND
Figure 1.8
7
– Architecture d’AlexNet [4]
— GoogleNet : gagnant ILSVRC 2014 et d´evelopp´e par Szegedy et al. De Google. Son challenge ´etait de r´eduire consid´erablement le nombre de param`etres dans le r´eseau. Il existe ´egalement plusieurs versions de suivi vers GoogLeNet, tout r´ecemment DetectNet utilis´e pour la d´etection des objets [4].
Figure 1.9
1.3.3
– Architecture de GoogleNet [4]
L’av` enement du Deep Learning
Aujourd’hui, le Deep Learning a envahi tous les domaines. Il est tr`es utilis´e dans [8] : Computer
Vision : C’est une branche de l’intelligence artificielle, qui consiste a`
entrainer l’ordinateur a` comprendre et a` analyser les images et les flux vid´eo grˆ ace `a une s´erie de traitements. Internet
et Cloud
— La reconnaissance de la parole, la fabrication et la classification de l’image. — L’analyse des sc` enes sur une image (analyse du signal visuel) et l’analyse du signal sonore. — L’analyse des d´etails graphiques de notre vie priv´ee qu’on partage sur les r´eseaux sociaux
8
CHAPITRE 1.
´ DU DEEP LEARNING MONT EE
— Le Traitement Automatique des Langues (TAL) : c’est une technique utilis´e pour entrainer l’ordinateur a` traiter des donn´ees langagi`eres en tenant compte des caract´eristiques du langage humain. edicine M´
et biologie
— D´etection des tumeurs avec la technique de segmentation des images.
M´edias et Loisir — Sous-titrage vid´eo.
S´ecurit´e et d´efense — La reconnaissances faciale et/ou vocale.
La
conduite autonome
— D´ etection des objets et la reconnaissance du signal de la circulation. Le deep Learning constitue une grande r´evolution dans l’intelligence artificielle. Des grandes entreprises (IBM, GOOGLE, FACEBOOK, SIRI, CORTANA . . . ) ont ´et´e appr´eci´e par cette nouvelle technologie et ils ont d´ecid´e de l’int´egrer dans de nombreuses applications. En effet, avec des algorithmes de Deep Learning, FACEBOOK a d´evelopp´ e une application de reconnaissance de visage nomm´e « DeepFace » . Quant `a Google, il a d´evelopp´e un logiciel, c’est un descripteur d’image, qui prendre une image et la d´ecrit par une phrase ainsi qu’une application intitul´ee « 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]
Aujourd’hui, le succ`es du Deep Learning est non seulement li´e a` l’utilisation des architectures particuli`eres de r´eseau de neurones bien adapt´es aux besoins mais aussi li´e au puissance ´enorme de calcul et notamment le progr`es de processeurs graphiques : les GPUs.
1.4. LES PROCESSEURS GRAPHIQUES
1.4 1.4.1
9
Les processeurs graphiques D´ efinition
Le GPU (Graphical Processing Unit) est un processeur qui a pour fonction le calcul de l’affichage 2D et 3D (des images, des vid´eos, des animations . . . ), on le trouve g´en´eralement int´egr´e dans les cartes graphiques. C’est un ´el´ement indispensable dans les ordinateurs, sans lui il n’y en a pas d’image sur l’´ecran [6].
1.4.2
GPU vs CPU
Contrairement au CPU (Central Processing Unit), Le GPU poss`ede de nombreuses unit´es de calcul (ALU) ce qui le rend tr`es efficace pour le traitement parall`ele des donn´ees et avec ses op´erations parall`eles le calcul devient tr`es 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 concentrer sur les raisons qui ont pouss´e les fondateurs du Deep Learning a` utiliser le GPU (sp´ecifiquement NVIDIA) pour entrainer leurs algorithmes. Comme on a dit pr´ec´edemment, pour qu’un r´eseau de neurones, comportant des milliers de connexions, apprenne a` faire une tˆache il faut tout d’abord l’entrainer en utilisant une base de donn´ees ´etiquet´ees. Mais cette phase d’entrainement peut prendre beaucoup de temps, donc pour pouvoir l’acc´el´erer les fondateurs du Deep Learning ont pens´e a` utiliser le GPU en parall`ele avec le CPU
10
CHAPITRE 1.
Figure 1.12
´ DU DEEP LEARNING MONT EE
– Comment le GPU acc´el`ere le calcul [6]
NVIDIA, leader sur le march´e des cartes graphiques, a fabriqu´e des GPUs utilis´es essentiellement dans l’industrie de l’intelligence artificielle. Actuellement, tous les algorithmes du Deep Learning tournent autours des syst`emes ayant le GPU NVIDIA parce qu’il pr´esente de nombreux avantages [9] :
L’atout majeur des GPUs est le traitement parall`ele des donn´ees. En effet le fait de r´epartir les op´erations de calcul sur plusieurs unit´es de calcul permet d’obtenir le r´esultat dans un temps raisonnable ce qui entraine une acc´el´eration, de 10 a` 20 fois, dans la phase d’entrainement des r´eseaux de neurones.
Les GPUs sont tr`es adapt´es pour l’ex´ecution, dans un temps faible, des algorithmes d’apprentissage qui s’appuient sur des donn´ees complexes.
Grˆace au service Cloud, on est capable maintenant de traiter un grand nombre de donn´ees sur des GPUs hyper puissants comme Tesla, con¸ cu sp´ecialement pour le DL, avec un coˆ ut ´energ´etique et une infrastructure mat´erielle relativement faible.
1.5. CONCLUSION
1.5
11
Conclusion
Le Deep Learning est une nouvelle technologie qui a ´et´e r´epandit dans tous les domaines et notamment dans la classification et la segmentation des images, la d´etection des ob jets. . . Nous, on va essayer d’impl´ ementer ces techniques pour qu’on puisse les utiliser ult´erieurement dans des applications mais, avant tout, il faut pr´eparer l’environnement n´ecessaire pour leurs impl´ementations.
Chapitre 2 Pr´ eparation de l’environnement 2.1
Introduction
Pour toutes applications d’apprentissage profond, comme pour tous autres types d’application, pr´eparation d’un environnement favorable constitue l’une des phases les plus importantes dans leurs d´eveloppements.
2.2 2.2.1
Compute Unified Device Architecture :CUDA D´ efinition
CUDA est une plate-forme informatique, ´ecrite en C++, comprend un compilateur sp´ecialement con¸cu pour les GPUs NVIDIA ainsi que des biblioth`eques math´ematiques et des outils de d´ebogage et d’optimisation des performances des applications toute en exploitant la puissance de l’unit´e de traitement graphique (GPU) [10]. Parmi les biblioth`eques inclues dans CUDA on cite le NVIDIA CUDA Deep Neural Network (cuDNN), une biblioth`eque de primitives pour les r´eseaux de neurones profonds. Cette biblioth`eque aide a` impl´ementer beaucoup d’op´erations de grandes dimensions telle que la convolution, en donnant une bonne performance a` l’application mais avec une utilisation minimale de la m´emoire. Ainsi L’utilisation de cette biblioth`eque permet d’augmenter la vitesse d’entrainement des algorithmes de plus de 44% , avec plus de 6 fois de vitesse dans les Frameworks de Deep Learning qu’on les verra ult´erieurement. [11] Le cuDNN a permis d’acc´el´erer les Frameworks de Deep Learning toute en laissant les d´eveloppeurs de ce domaine concentr´es sur la formation du r´eseau de neurones avec une bonne performance plutˆ ot que de se charger par l’optimisation des performances du GPU. 12
13
2.3. CAFFE
2.2.2
Installation du CUDA
Pour installer CUDA on a suit les ´etapes suivantes [12] : 1. Installation des packages n´ecessaire pour la configuration du CUDA. 2. Installation de la derni`ere toolkit CUDA (version 8.0) ainsi que le dernier pilote de NVIDIA (nvidia-375).
2.3
Caffe
2.3.1
D´ efinition
Afin qu’on puisse impl´ementer certaines algorithmes de Deep Learning il nous faut un Framework qui va faciliter le travail du d´eveloppeur. Vu le grand succ`es et la popularit´e du Deep Learning dans de nombreuses applications plusieurs communaut´es (Google et Facebook...) ainsi que de nombreuses universit´es (universit´e de Berkeley...) ont dirig´e leurs int´erˆets pour le d´eveloppement des Frameworks de Deep Learning, con¸cus essentiellement pour b´en´eficier de l’acc´el´eration du GPU, qui aident a` faire tourner facilement les r´eseaux de neurones. Comme on a d´ej`a dit dans le chapitre pr´ec`edent, on a choisi de faire tourner des r´eseaux de neurones convolutionnels (CNN) dans ce cas deux Frameworks de DL, Open Source, peuvent ˆetre utilis´es : Torch
: C’est un Framework d´evelopp´ e en Lua, il est tr`es flexible en termes de
support de diverses architectures de r´eseau de neurone profondes et aussi en termes de biblioth`eques support´ees. Caffe
: C’est un Framework d´evelopp´e, en C++/CUDA,par le centre de vision et
d’apprentissage de Berkeley (BVLC) et par des contributeurs communautaires. Dans le cadre de notre projet, on a choisi d’utiliser le Framework Caffe parce qu’il est tr`es utilis´e dans la reconnaissance de l’image et il pr´esente de nombreux avantages. Ces avantages r´esultent essentiellement dans sa rapidit´e dans le traitement des donn´ees massives ainsi que la mani`ere dont les mod`eles sont d´efinis. Le mod`ele d´efini par caff´e est form´e par Blobs,
Layers et Nets : Caffe d´efinit le mod`ele par son sch´ema propre (pas de
code), au fur et a` mesure que les donn´ees traversent le r´eseau il y aura une communication entre les donn´ees, dans et a` travers les couches, ainsi que leur stockage. Cette op´eration est r´ealis´ee a` l’aide du Blob qui fournit une m´emoire unifi´ee tenant des donn´ees (les lots d’images, les param`etres du mod`ele. . . ).
´ CHAPITRE 2. PR EPARATION DE L’ENVIRONNEMENT
14
Forward/Backward
: Le passage en avant calcule la sortie compte tenu de l’entr´ee
pour l’inf´erence. Le passage en arri`ere calcule le gradient compte tenu de la perte d’apprentissage. Loss
: L’apprentissage est guid´e par une fonction de perte qui sp´ecifie l’objectif
d’apprentissage en mappant les param`etres du mod`ele a` une valeur scalaire sp´ecifiant la ”mauvaise” de ces param`etres. Solver
: Le solver a pour rˆ ole de superviser l’optimisation du mod`ele et g´en´erer
les mises `a jour des param`etres du r´eseau. Parmi les solvers du Caffe on peut citer AdaDelta et Adam. Layer
catalogue : C’est un fichier de d´efinition du mod`ele, d’extension ”.prototxt
”, contient la d´efinition de toutes les op´erations a` ex´ecuter par chaque couche du mod`ele ainsi que leurs param`etres. Interfaces
: Comme on a d´ej` a dit pr´ec´edemment Caffe est ´ecrit avec C++/CUDA,
mais ce Framework pr´esente des interfaces en Python et en MATLAB afin de faciliter le travail des d´eveloppeurs. Data
: Les donn´ees vont subir des op´erations de convolutions, de sous ´echantillon-
nage ainsi que d’autres transformations.
2.3.2
Installation du Caffe
Pour installer Caffe on a suit les ´etapes suivantes [12] : 1. Installation des packages. 2. T´el´echargement du Caffe. 3. Installation des packages de Python. 4. Configuration du Caffe.
2.4
NVIDIA Deep Learning GPU Training System : DIGITS
2.4.1
D´ efinition
On a eu la chance que NVIDIA, leader sur le march´e des GPU, a d´evelopp´ e, en 2015, un outil qui s’appelle digits permettant de visualiser en temps r´eel la formation des r´eseaux de neurones con¸cus pour la classification et la segmentation des images, ainsi que
2.4.
NVIDIA DEEP LEARNING GPU TRAINING SYSTEM : DIGITS
15
la d´etection des objets toute en exploitant la capacit´e de calcul de ses fameux processeurs graphiques. C’est cet outil qu’on va utiliser dans le cadre de notre projet. Digits est une application Web ´ecrite en python qui fournit une interface graphique propre pour l’interfa¸cage avec le Caffe. ` l’aide de cette interface intuitive vous pouvez g´erer vos donn´ees et suivre le comporteA ment et les performances des r´eseaux de neurones profonds en visualisant en temps r´eel leurs formations.Vous pouvez concevoir et s´electionner rapidement le r´eseau de neurones qui s’adapte le mieux avec vos donn´ees [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 qu’installer digits et tous ces dependencies Une fois l’installation est termin´e, digits devrait maintenant ˆetre ex´ecut´e a` http : // localhost /[12]. Et voil`a notre interface graphique :
Figure 2.1
– Page d’acceuil de digits
´ CHAPITRE 2. PR EPARATION DE L’ENVIRONNEMENT
16
Remarque : Normalement digits va ˆetre ex´ecut´e automatiquement sur le port 80 si quelqu’un a d´ej` a un serveur qui s’ex´ecute sur ce port digits ne peut pas ˆetre lanc´e 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 d´eployer des applications d’apprentissage profond acc´el´er´ees par le GPU. Une fois que tous ces ´el´ements ´etaient pr´epar´es il ne reste que manipuler concr`etement les algorithmes d’apprentissage profond via des exemples. C’est ce qui fait l’objectif du suivant chapitre.
Chapitre 3 Impl´ ementation 3.1
Introduction
Maintenant qu’on a bien pr´epar´ e les joueurs, allons sur le terrain pour contempler les performances et voir si c¸a va confondre avec nos attentes ou non.
3.2
Devices
Comme tout d´ebut classique, on va commencer par trainer le plus simple mod`ele qui consiste a` distinguer entre les cat´egories des t´el´ephones portables, autrement dit, le mod`ele doit ˆetre capable de pouvoir bien comprendre si la photo qu’on lui fournit al´eatoirement contient un iphone, un ipad ou un sumsung galaxy ! Tout d’abord, on regroupe la base de donn´ees d’environ 150 images en total sur trois dossiers portant chacun le nom de celui de la cat´egorie. On obtient alors un dossier p`ere intitul´e « Devices » Contenant nos trois dossiers fils. Ouvrons la jolie page d’accueil de Digits `a travers localhost, del` a on peut cr´eer les datasets et les mod`eles.
3.2.1
Cr´ eation de Dataset
Dans la page d’accueil de Dataset, cliquez images ->classification. Ca ¸ va vous mener a` une autre page o` u vous allez configurer les param`etres de base de donn´ees afin de la cr´eer convenablement. Veuillez ins´erer le chemin complet vers votre dossier qu’on a appel´ e dans notre cas « Devices » dans la case de « Training images ». 17
´ CHAPITRE 3. IMPL EMENTATION
18
Figure 3.1
– Insertion de chemin pour Devices
On a laiss´e les autres param`etres par d´efaut tels qu’ils sont. Choisissez le nom de votre DataSet et cliquez « create ».
Figure 3.2
– Insertion de Nom de Base de doon´ees
Ca ¸ va prendre quelques secondes vu que la taille de notre base de donn´ees est assez petite. Vous aurez finalement cette page qui pr´esente le nombre de cat´egories pour le training et la validation, la taille de votre Dataset. . .
3.2.2 •
Trainer le mod` ele
Revenant au page d’accueil, choisissant maintenant « Models ».
19
3.2. DEVICES
Figure 3.3
– Analyse de r´esultat de cr´eation de DataSet
•
Cliquez models->images->classifier.
•
Choisissez votre Dateset cr´e´e pr´ec´edemment.
• •
Ins´erez le nom de model. Choisissez l’algorithme d’AlexNet.
` ce point-l`a, si on cr´ee le mod`ele c¸a peut produire une erreur (« Out of Remarque : A memory » ). La solution c’est d’augmenter les param`etres de performance comme suivant :
erifier le batch size par d´efaut a` partir de fichier qui se « Batch size » : veuillez v´ trouve dans le dossier de caffe intitul´e en g´en´eral « alexnet.prototxt ». Commencez la valeur par 10 en incr´ ementant tout en gardant l’œil sur la performance de votre GPU en %. (Pour notre cas on a atteint 40 comme limite avec 90% de performance).
Changer
le « Learning rate » le nombre de l’ « epoch » peut ´egalement am´eliorer la
performance. Vous pouvez ´egalement consulter le Learning rate par d´efaut dans le mˆeme fichier ainsi que d’autre information concernant cet algorithme. Vous ˆetes prˆets maintenant de trainer le mod`ele en cliquant « create ». Le mod`ele tournera, entre-temps, les courbes peuvent vous visualiser le taux de pr´ ecision et le taux de perte. Ce qui va vous choquer vraiment dans ce state-l` a c’est le taux de pr´ecision d´et´erior´e qu’on peut bien l’expliquer par la petite taille de notre Dataset d`es le d´ebut.
´ CHAPITRE 3. IMPL EMENTATION
20
Figure 3.4
3.2.3
– Analyse de r´esultat de l’entrainement de Mod`ele
Tester le mod` ele
Si tout va bien on peut tester le mod`ele et voir la magie qui charme ! Choisissons une image al´eatoirement ou de votre ordinateur ou de l’internet et tester. Vous allez remarquer qu’il est intelligent mais pas assez, donc c¸a peut nous satisfaire mais pas assez !
Figure 3.5
– Tester la performance de mod`ele
En suivant notre instinct, on aura recours a` trainer un autre mod`ele avec une base de donn´ees plus grande.
21
3.3. MNIST
3.3
MNIST
3.3.1
Cr´ eation de DataSet
` la fin de cette partie, on sera capable de trainer Caffe `a fin de reconnaitre les chiffres A manuscrits. On utilisera « MNIST handwritten digit database » comme base de donn´ees, contenant 60000 images pour le training et 10000 exemples d’image pour le testing, et LeNet comme algorithme con¸cu sp´ecialement pour cette tˆ ache. Les deux sont mis a` disposition par Yann LeCun sur son site officiel. Pour le premier pas, on doit pr´eparer la base de donn´ees en la t´el´echageant depuis le site officiel de Yann LeCun. Si le t´elechargement est bien termin´e, ouvriez digits et cr´eez la Dataset en changeant : •
Image type -> Grayscale.
•
Image size -> 28*28.
•
Choisissez un nom sans oublier d’indiquer le chemin vers le dossier « train » qui se trouve dans le dossier « Mnist ».
Lorsque le travail est termin´e, retournez a` la page d’accueil en cliquant sur DIGITS dans la partie sup´ erieure gauche de la page. Vous devriez maintenant voir votre ensemble de donn´ees r´epertori´e sous l’onglet ”Datasets”.
Figure 3.6
– D´etection des 10 Cat´egories
´ CHAPITRE 3. IMPL EMENTATION
22
3.3.2
Trainer le mod` ele
Cliquez sur Models -> New Model -> Images -> Classification. Ensuite, dans la nouvelle page « New Image Classification Model » saisissez le suivant :
« Mnist » dataset dans « Select Dataset »
LeNet
comme algorithme.
Nommez Cliquez
le model.
sur « create ».
Vous pouvez remarquer a` la fin que la pr´ecision atteint 100%, c’est le r´esultat d´esir´e.
Figure 3.7
3.3.3
– D´etection des 10 Cat´egories
Tester le mod` ele
C’est le moment qu’on attend toujours : tester le mod`ele ! Allons au bas de la page, cliquez sur « upload image » si vous voulez tester une image qui existe d´ej` a sur votre ordinateur ou bien ins´erer l’URL d’une image sur internet.
23
3.4. KITTI
Figure 3.8
– Insertion de l’URL d’une image d’un nombre manuscrit
Le r´esultat est super-int´eressante, la performance de Digits avec la base de donn´ees de Mnist et LeNet est optimale.
Figure 3.9
– R´esultat du test de mod`ele
Digits a montr´e qu’il est brillant sur le domaine de classification des images, mais est-ce le cas pour d’autres domaines et d’autres besoins ? Pour r´epondre a` cette question, on a recours a` essayer avec la d´etection des objets dans une photo donn´ee.
3.4
KITTI
Dans ce dernier exemple, on a choisi d’employer les donn´ees de la piste de d´etection d’ob jets de la KITTI Vision Benchmark Suite. Vous pouvez bien ´evidemment utiliser toute autre donn´ee que vous souhaitez mais faites attention Digits s’attend a` ce que les donn´ees soient ´etiquet´ees dans le style des donn´ees KITTI. Cette fois-ci on va t´el´echarger la base de donn´ees de KITTI a` travers le site web : « http ://www.cvlibs.net/datasets/kitti/eval object.php »
´ CHAPITRE 3. IMPL EMENTATION
24
Vous serez face a` une liste o` u vous choisissez seulement ces t´el´echargements : Table 3.1
– La listes des fichiers a` t´el´echarger [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 t´el´echargement est fini, copiez ces fichiers dans $DIGITS ROOT/examples/objectdetection/ . Ensuite ex´ecutez le script Python « prepare kitti data.py » pour cr´eer deux sous dossier « train » et « val » , ¸ca peut prendre un peu de temps d´epens´e principalement pour extraire les fichiers compress´es. Enfin vous aurez $DIGITS ROOT/examples/object-detection/kitti-data/train,val/. Si vous jetez un œil sur les donn´ ees vous allez remarquer qu’elles sont organis´ees de la mani`ere 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 nomm´ee toto.png, le dossier « label » doit inclure un fichier texte nomm´e toto.txt.
Figure 3.10
3.4.1
– Arbor´esence de l’architecture de la base de donn´ees [7]
Cr´ eation de DataSet
Dans la page d’accueil de Digits, cliquez New Dataset->Images->Objet Detection. Lors de la cr´eation de Dataset :
25
3.4. KITTI •
Ins´erer le chemin vers les dossiers train et val o` u vous trouvez dedans deux dossiers nomm´es « image » et « label ».
•
Gardez les autres param`etres inchang´es.
•
Cliquez « Create ».
Figure 3.11
– Cr´eation de KITTI DataSet
Vous allez remarquer que la taille de la base de donn´ees cr´e´ee cette fois-ci est tr`es grande comparant aux pr´ec´edentes (5.32 GB).
Figure 3.12
3.4.2
– Taille de KITTI DataSet
Trainer le Mod` ele
D´eriv´e de GoogleNet, DetectNet est con¸ cu sp´ecialement pour la d´etection des objets. Pour plus d’information visitez ce site web : https ://devblogs.nvidia.com/parallelforall/detectnet-deep-neural-network-object-detectiondigits/ Afin de trainer ce r´eseau de neurones, on doit avoir la version NVcaffe 0.15.1 ou ult´erieur. Veuillez v´erifier votre version en haut a` droite de la page d’accueil de Digits -> Info.
´ CHAPITRE 3. IMPL EMENTATION
26 Vous trouvez la description de DetectNet dans :
$CAFFE ROOT/examples/kitti/detectnet network.prototxt Dans la page de cr´eation de Model : •
S´electer votre base de donn´ees pr´ec´edemment cr´e´ee.
•
Substract mean -> none.
•
Learning rate -> 0.0001.
•
Solver -> ADAM.
Figure 3.13
– Pr´eparation de Mod`ele(1)
•
Custom Network -> Caffe -> copier/coller le contenu de detectnet network.prototxt.
•
Visualise l’algorithme en cliquant « Visualize ».
27
3.4. KITTI
Figure 3.14
– Pr´eparation de Mod`ele(2)
Comme DetectNet est d´eriv´e de GoogleNet, il est bien recommand´e d’utiliser le pr´e-train´e GoogleNet fourni par ImageNet, ceci servira a` acc´el´erer le training de DetectNet. Vous pouvez trouver le mod`ele pr´e-train´e de GoogleNet sur ce lien : http ://dl.caffe.berkeleyvision.org/bvlc googlenet.caffemodel
•
Sp´ecifier le chemin vers le fichier t´el´echarg´e de GoogleNet.caffemodel dans la case « Pretrained Model(s) »
•
Finalement, cliquez « create ».
Figure 3.15
– Erreur de cr´eation de mod`ele
On avait une erreur de m´emoire : pour notre ordinateur on a un GPU de m´emoire 2 GB ce qui est insuffisant pour ce mod`ele parce que DetectNet demande au moins 12 GB de m´emoire GPU.
´ CHAPITRE 3. IMPL EMENTATION
28
3.5
Conclusion
Ce n’est pas la fin de chemin, heureusement, le Cloud nous a sauv´es ! Dans le chapitre suivant, Nous d´ecouvrirons comment poursuivre notre travail sur le cloud.
Chapitre 4 La solution Cloud 4.1
Introduction
Comme d’habitude, pour tous probl`emes de m´emoire et de stockage de donn´ees, le Cloud est l`a pour nous offrir, a` travers Amazon Web Service, des machines virtuelles (dans notre cas des GPUs) qui vont acc´el´erer les algorithmes d’apprentissage profond appliqu´es a` des donn´ees ´enormes.
4.1.1
Amazon Web Service
AWS est une plateforme de service Cloud computing qui fournit des services ´enormes notamment les capacit´es de calcul, les options de stockages ainsi que les bases de donn´ees.
4.1.2
Amazon Elastic Compute Cloud (EC2)
4.1.2.1
D´ efinition
C’est un service web, destin´e aux d´eveloppeurs d’applications, qui permet de faciliter l’acc`es a` des ressources, ´egalement les instances destin´es a` des fins de calcul, fournies par le Cloud Computing.
4.1.2.2
Avantages
Amazon EC2 pr´esente de nombreux avantages [14] :
es Acc`
´ elastiques aux ressources informatiques :
Amazon EC2 permet aux d´eveloppeurs d’obtenir et de configurer des capacit´es facilement ainsi qu’y calibrer, en quelques minutes, selon les besoins de calcul.En plus 29
30
CHAPITRE 4. LA SOLUTION CLOUD
que c¸a le d´eveloppeur a le droit de mettre en service plusieurs instances simultan´ ement et de les d´esactiver a` tout moment.
ole Contrˆ
total :
Ainsi, `a partir de n’importe quelle machine, l’utilisateur peut acc´eder a` chaque racine de toutes ses instances et conserver tous ses donn´ees mˆeme apr`es arrˆet de l’instance pour les retrouver ensuite en red´emarrant cette mˆeme instance.
e Flexibilit´
du service :
Amazon EC2 offre l’occasion aux d´eveloppeurs de choisir, selon les besoins, le type d’instance, le syst`eme d’exploitation. . . Amazon EC2 va compl´eter la configuration (CPU, la m´emoire. . . ) de la machine virtuelle qui r´epond le mieux a` ses choix.
e Compatibilit´
avec d’autres Amazon Web Service :
Afin de faciliter les op´ erations de calcul et le stockage des donn´ees Amazon EC2 fait appel a` d’autres Amazon Web Services tels que Amazon Simple Storage Service (Amazon S3), Amazon Relational Database Service (Amazon RDS) et Amazon SimpleDB.
e Fiabilit´
:
La rapidit´e de la configuration et de la mise en service des instances EC2 prouve la fiabilit´e de ce service.
ecurit´ e S´
:
Ce service offre la possibilit´e aux d´eveloppeurs de d´efinir les instances figurant au sein d’un cloud priv´e Virtuel (VPC) ainsi que de contrˆ oler, a` travers des groupes de s´ecurit´es, les trafics r´eseau qui sortent ou entrent a` ses instances.
e Rentabilit´
:
Les capacit´es de calcul ne sont pas ch`eres, le d´eveloppeur paye un tarif tr`es bas par rapport a` ce qu’il consomme ainsi qu’il ne paye que les tarifs des instances en cours d’ex´ecution.
emarrage D´
:
En ouvrant l’interface web du service EC2, le d´eveloppeur peut, a` l’aide des clics simples ou la console EC2, configurer et activer les instances EC2. ⇒
Cette instance permet d’acc´eder aux GPUs qui vont nous aider a` appliquer et
am´eliorer les performances des algorithmes d’apprentissage profond. Dans les paragraphes suivants on va d´ecouvrir la mani`ere avec laquelle on a acc´ed´e `a une instance g2.2xlarge, les ´etapes qu’on a suivi pour l’activer et enfin on va impl´ementer une application de deep Learning (d´etection des objets) en utilisant des algorithmes d’apprentissage profond acc´el´er´es par les GPUs.
31
4.1. INTRODUCTION
4.1.2.3
Activation d’instance g2.2xlarge
Avant tous pour qu’on puisse utiliser et activer des instances EC2 il faut avoir acc`es vers le Amazon Cloud Service via un compte Amazon. Pour activer l’instance g2.2xlarge il faut suivre les ´etapes suivantes [?] : 1. Passez par le site web Rosetta HUB pour s’identifier (entrer le login et le mot de passe). 2. Choisissez le service que vous cherchez : EC2.
Figure 4.1
– S´election du type de service
3. Cliquez sur ”Lancer l’instance” sur le tableau de bord EC2.
32
CHAPITRE 4. LA SOLUTION CLOUD
Figure 4.2
– Lancement d’une instance EC2
4. S´electionnez ”Ubuntu Server 14.04 LTS ...” comme une image machine.
Figure 4.3
– S´election d’une image machine
33
4.1. INTRODUCTION
5. S´electionnez le type d’instance GPU : g2.2xlarge .
Figure 4.4
– S´election de type d’instance EC2
6. Cliquez sur « next » jusqu’`a arriver a` la page « Add Storage », il est recommand´e d’augmenter la taille du stockage du « root volume » jusqu’`a 20 GB parce que 8 GB (mise par d´efaut) 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 d´efinissez la source a` n’importe quel endroit. .
34
CHAPITRE 4. LA SOLUTION CLOUD
Figure 4.6
– Configuration de la s´ecurit´e
8. Cliquez sur « review and launch » puis sur « launch» , vous serez invit´e a` cr´eer et a` t´el´echarger votre paire de cl´es afin que vous puissiez utiliser SSH dans votre serveur. T´el´echargez la paire de cl´es et conservez-la dans un endroit sˆ ur. .
Figure 4.7
– Cr´eation de paire de cl´e
9. Enfin cliquez sur « launch » et attendez jusqu’` a ce que l’instance d´emarre. Une fois l’instance est en cours d’ex´ecution une adresse IP public sera attribu´e a` elle. . Maintenant on a activ´e l’instance g2.2xlarge il ne reste que se connecter a` cette instance via le SSH.
35
4.1. INTRODUCTION
Figure 4.8
4.1.3
– D´emarrage de l’instance EC2
Pr´ eparation de l’environnement
Pour une pr´eparation compl`ete de l’environnement il faut suivre les ´etapes suivantes [12] : 1. Mettre a` jour votre syst`eme. 2. Installer les pr´eliminaires et les packages n´ecessaires pour l’impl´ementation. 3. Installer CUDA. 4. Installer la biblioth`eque cuDNN. 5. Installer Caffe. 6. Installer digits. Si tout va bien, vous disposez maintenant d’un serveur Web DIGITS que vous pouvez l’acc´eder a` l’URL http : //
: 5000. Vous serez maintenant capable de l’utiliser pour entrainer des algorithmes de Deep Learning. Voil`a maintenant qu’on a bien pr´epar´e l’environnement on revient au 3`eme chapitre et on reconstruit la base de donn´ees de KITTI puis on cr´ee le mod`ele comme on a indiqu´e ! Cette fois-ci on aura la courbe suivante :
36
CHAPITRE 4. LA SOLUTION CLOUD
Figure 4.9
– La courbe d’entrainement de mod`ele de KITTI
Sachant que mAP ( main Average Precision) est le meilleur indicateur de pr´ ecision du mod`ele, on peut bien remarquer qu’on a bien r´eussi a` trainer un mod`ele de tr`es bon taux de pr´ecision. C’est le moment d’´evaluer la performance pratique du mod`ele a` travers le test. Pour qu’on ait les objets qui se trouvent dans la photo encadr´es par des rectangles on doit s´electionner « Bounding Boxes » dans « Select Visualization ».
Figure 4.10
– Test du mod`ele de KITTI
Remarque : On peut toutefois tester un ensemble d’image en utilisant l’option « Test a list of Images».
Conclusion g´ en´ erale Le BigData, l’IOT et le HPC, ce nouveau triangle qui domine le domaine de l’IT o` u chaque sommet est indispensable pour la persistance de l’autre ! Le Deep learning dans cette situation est le centre de ce triangle, le carburant ! Boule de cristal pleine des milliards des donn´ees, Le BigData est consid´er´ee aujourd’hui la nouvelle arme sophistiqu´ee et fatale. Le poss´eder/g´erer devient le grand enjeu mondial ce qui m`ene le monde a` investir dans les Super Calculateurs et les algorithmes d’analyse et d’optimisation des donn´ees d’o` u la naissance de nouveau concept HPDA (High Performance Data Analytics). Les donn´ees sont donc comme le p´etrole, il faut les raffiner pour qu’elles prennent de la valeur. Les raffineries sont des super calculateurs qui trient et analysent des milliards des donn´ ees, issues de plusieurs sources principalement les objets connect´es, en temps r´eel grˆ ace a` des algorithmes intelligents de DL et a` travers les framework comme Apache Spark vu que ce dernier a montr´e une performance spectaculaire dans le traitement des donn´ees. Pour mieux d´ecouvrir l’importance de HPC, on a assist´e au premier workshop du HPC en Tunisie qui a d´eroul´e a` ESPRIT incubator. C’est dans cette occasion qu’on a r´ealis´e que le Deep Learning en particulier et l’IA en g´en´eral n’´etait r´ealisable qu’avec le progr`es de HPC, surtout les GPU, et la solution Cloud qui permet d’allouer des ressources mat´ erielles pour tourner les algorithmes. On a assist´e ´egalement au JPO de Sup’com pour qu’on puisse s’approcher plus au pouvoir de BigData et c’´etait l` a o`u on ´etait surpris par l’effet miraculeux de ce concept dans les nouvelles strat´egies d’aujourd’hui dans tous les domaines : commerciales, politiques, m´edicales, sociales. . . Ce projet nous a ouvert les yeux sur les nouvelles tendances technologiques autour desquelles le monde se d´eroule aujourd’hui. Il nous a donn´e ´egalement l’opportunit´e de poursuive un stage d’´et´e dans le domaine de Deep Learning/Machine Learning et pourquoi pas un PFE pour l’ann´ee prochaine pour qu’on puisse mettre en valeur notre travail dans une concr`ete application. 37
Bibliographie [1] Lo¨ıc. Knuchel : Le machine learning, c’est quoi exactement ? Nouvembre 2013. [2] Phillipe. Beraud : Une premi`ere introduction au deep learning. Avril 2016. [3] Adil. Moujahid : A practical introduction to deep learning with caffe and python. Juin 2016. [4] Eugenio. Culurciello’s blog : Neural network architectures. Juin 2016. [5] Tual. Morgane : Comment le « deep learning » r´evolutionne l’intelligence artificielle. Juillet 2015. ` pas : L’implEmentation ´ [6] Le deep learning pas A (2/2). ternet
<
Disponible sur In-
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 ? D´ecembre 2016. [9] Apprentissage
automatique.
Disponible
sur
Internet
<
Internet
<
http ://www.nvidia.fr/object/tesla-gpu-machine-learning-fr.htmltp>. [10] Traitement
` parallEle
cuda.
Disponible
sur
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. https
Disponible sur Internet
<
://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 diff´erentes commandes utilis´ees ,dans la pr´eparation de l’environnement, pour impl´ementer des algorithmes de Deep Learning sur le GPU NVIDIA.
Figure 4.11
Figure 4.12
– Installation CUDA
– Installation Caffe (packages) 39
40
ANNEXE 1
Figure 4.13
Figure 4.14
Figure 4.15
– Installation Caffe
– Installation Caffe (python packages
– Suite Installation de Python packages
Figure 4.16
– Configuration de Caffe
Figure 4.17
– Installation de Digits
41
Figure 4.18
– T´el´echargement de Mnist DataSet
Figure 4.19
– Execution de prepare kitti data.py
Annexe 2 Cette annexe contient les diff´erentes commandes utilis´ees ,dans la pr´eparation de l’environnement, pour impl´ementer des algorithmes de Deep Learning sur le cloud.
Figure 4.20
– Mise a` jour du syst`eme et installation des packages
Figure 4.21
– Installation de Theano
42
43
Figure 4.22
– Installation de CUDA