diff --git a/web/content/am/TP_Classification.md b/web/content/am/TP_Classification.md index c3a619ea27d88f03a5b3c295f0729357a453e07e..1a99db0a22f38fb2a77e0818712393e6a5a015ef 100644 --- a/web/content/am/TP_Classification.md +++ b/web/content/am/TP_Classification.md @@ -16,7 +16,7 @@ Un neurone artificiel (ou un perceptron) reçoit des valeurs d’entrées, il le somme est passée à une fonction d'activation. Par exemple une fonction d'activation très simple peut-être de comparer la somme à un seuil. Si elle est inférieure, la valeur de sortie sera 0, 1 sinon. L’objectif de l’apprentissage/optimisation est de retrouver les poids qui ferons correspondre au mieux la sortie à partir des entrées sur une base de connaissance disponible. -<img src="//neurone.png" class="align-center" width="400" /> + @@ -25,7 +25,9 @@ elle est inférieure, la valeur de sortie sera 0, 1 sinon. L’objectif de l’a Le principe du réseau de neurones est d’assembler entre-eux des neurones, pour leur faire apprendre des tâches complexes. Les neurones vont être regroupés en couches, une couche réalisant une tâche donnant un niveau d’abstraction supplémentaire pour la couche suivante. Par exemple, pour reconnaître une lettre, la couche la plus basse va repérer des morceaux de courbes et la couche supérieure estime que certaines -courbes ensembles forme un 'A' et non un 'S'. L’utilisation de plusieurs couches (layer en anglais) est appelée apprentissage profond/Deep Learning. <img src="//dl_layer.png" class="align-center" width="400" /> +courbes ensembles forme un 'A' et non un 'S'. L’utilisation de plusieurs couches (layer en anglais) est appelée apprentissage profond/Deep Learning. + + [Voir une explication plus détaillé sur Wikipedia par exemple.](https://fr.wikipedia.org/wiki/R%C3%A9seau_de_neurones_artificiels) @@ -34,7 +36,7 @@ courbes ensembles forme un 'A' et non un 'S'. L’utilisation de plusieurs couch Dans un 1er temps, allez jouer sur le web avec ["Playground classifier"](https://playground.tensorflow.org/) pour comprendre le principe de la classification de points avec un réseau de neurones profond. -<img src="//playground_dl.jpg" class="align-center" width="500" /> + @@ -51,7 +53,7 @@ Dans un 2e temps vous allez écrire votre classifier de points avec PyTorch. Pour notre problème de reconnaitre la couleur d'un point, il faut des données d'apprentissage. [Le code de départ est donné ici](https://github.com/ucacaxm/DeepLearning_Vision_SimpleExamples/blob/master/src/classifier/classifier_pointcloud_empty.py). Ce code génère des points (les données) procéduralement, donc autant que l'on veut. La classe bleu sont les points dont les coordonnées sont inférieures à cosinus, et la classe verte sont les points au dessus de cosinus. Dans un "vrai" problème, ces données ne peuvent se générer, il faut les trouver quelque part ... -<img src="//point_cloud.jpg" class="align-center" width="400" /> + @@ -131,7 +133,7 @@ Le code ci-dessous donne un réseau minimaliste. Vous devrez l'améliorer pour q Le résultat sera le taux de bonne reconnaissance de points, mesuré avec des points jamais observés pendant l'apprentissage. Par exemple après un apprentissage nous obtenons un taux de 96% de bonne classification, les points rouges sur l'image suivante sont les points mal classifiés. -<img src="//point_cloud_errorclassif.jpg" class="align-center" width="400" /> + @@ -141,10 +143,9 @@ Pour rendre le problème un peu plus dur vous pouvez augmenter la plage de gén devient x = np.array( [ 4.0*3.141592*np.random.ranf(), 2.0*np.random.ranf()-1 ]) ``` - -<img src="//point_cloud_4pi.jpg" class="align-center" width="400" /> + @@ -154,12 +155,11 @@ Pour ce 2e problème un peu plus concret, nous disposons d'images et nous voudri exemple, pour reconnaitre le nombre à partir de l'image du nombre écrit ou reconnaitre la figure géométrique à partir d'un dessin, ou plus largement reconnaitre une famille d'objets (chat, voiture, avion, fourchette, etc.). -Pour ce type de tâche , le réseau approprié est le ConvNET ou CNN : Convolution Neural Network. Vous pouvez lire des explications sur ce qu'est un CNN : - - * [[https://medium.com/@CharlesCrouspeyre/comment-les-r%C3%A9seaux-de-neurones-%C3%A0-convolution-fonctionnent-b288519dbcf8|Plutôt vulgarisation]] - * [[https://ujjwalkarn.me/2016/08/11/intuitive-explanation-convnets/|Explication intuitive]] +Pour ce type de tâche, le réseau approprié est le ConvNET ou CNN : Convolution Neural Network. Vous pouvez lire des explications sur ce qu'est un CNN : +* [[https://medium.com/@CharlesCrouspeyre/comment-les-r%C3%A9seaux-de-neurones-%C3%A0-convolution-fonctionnent-b288519dbcf8|Plutôt vulgarisation]] +* [[https://ujjwalkarn.me/2016/08/11/intuitive-explanation-convnets/|Explication intuitive]] -<img src="/convnet.png" class="align-center" width="600" /> + Pour ce TP, nous vous invitons à utiliser [une base de données d'images issue d'un projet de L3 qui cherche à reconnaitre 5 formes dessinés](https://github.com/ucacaxm/DeepLearning_Vision_SimpleExamples/blob/master/data/shapes5_preprocessed.zip) : carré, cercle, triangle, sablier, étoile. Il y a que quelques centaines d'images par forme, c'est un bon challenge de voir ce que la reconnaissance donne avec finalement assez peu d'images. Il est également intéressant d'augmenter les données. Dans le cas d'images comme ici, vous pouvez faire de petites rotations aléatoires aux images pour en augmenter le nombre. @@ -220,4 +220,4 @@ Un exemple de code qui charge une base d'images, voir également la doc de [imag Il est intéressant de voir que chaque couche de convolutions devient de plus en plus spécifiques à l'objet : -<img src="//dl_cnn_progression.png" class="align-center" width="600" /> + diff --git a/web/content/am/_index.md b/web/content/am/_index.md index c3292ee6756a23a17c75da76b644dfff157ecf20..d8c955852feced76b02d63255296f54c66344c6a 100644 --- a/web/content/am/_index.md +++ b/web/content/am/_index.md @@ -29,7 +29,6 @@ description: "Partie A. Meyer" --> - diff --git a/web/content/am/images/convnet.png b/web/content/am/images/convnet.png new file mode 100644 index 0000000000000000000000000000000000000000..4ab863f17269d6244c99b465dd23668ff9e50ffe Binary files /dev/null and b/web/content/am/images/convnet.png differ diff --git a/web/content/am/images/dl_cnn_progression.png b/web/content/am/images/dl_cnn_progression.png new file mode 100644 index 0000000000000000000000000000000000000000..692466d3635523eaed36b9920b53b342da0b75d4 Binary files /dev/null and b/web/content/am/images/dl_cnn_progression.png differ diff --git a/web/content/am/images/dl_layer.png b/web/content/am/images/dl_layer.png new file mode 100644 index 0000000000000000000000000000000000000000..b351d1d472d1598112a2e3335d9bc88087af7437 Binary files /dev/null and b/web/content/am/images/dl_layer.png differ diff --git a/web/content/am/images/dl_neuron.png b/web/content/am/images/dl_neuron.png new file mode 100644 index 0000000000000000000000000000000000000000..74b2cb9b16250eee7b882d51d559f82478c414b2 Binary files /dev/null and b/web/content/am/images/dl_neuron.png differ diff --git a/web/content/am/images/dl_playground.jpg b/web/content/am/images/dl_playground.jpg new file mode 100644 index 0000000000000000000000000000000000000000..8362f8858be2c6d8768190edbf4e598fc2b2e48f Binary files /dev/null and b/web/content/am/images/dl_playground.jpg differ diff --git a/web/content/am/images/point_cloud.jpg b/web/content/am/images/point_cloud.jpg new file mode 100644 index 0000000000000000000000000000000000000000..bb3f05560ca8fcecb3dc0870112eb7ef4210be51 Binary files /dev/null and b/web/content/am/images/point_cloud.jpg differ diff --git a/web/content/am/images/point_cloud_4pi.jpg b/web/content/am/images/point_cloud_4pi.jpg new file mode 100644 index 0000000000000000000000000000000000000000..842fcc49b86361d5ec43d38020be3206749b0b1e Binary files /dev/null and b/web/content/am/images/point_cloud_4pi.jpg differ diff --git a/web/content/am/images/point_cloud_errorclassif.jpg b/web/content/am/images/point_cloud_errorclassif.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7b7db4f9b4ebd1aa0124570e67766d18a0e1b1cd Binary files /dev/null and b/web/content/am/images/point_cloud_errorclassif.jpg differ