Paris study group March -April 2019

Grâce à Amine, nous disposons d’un Google Drive partagé içi
Thanks to Amine we now have a shared Google Drive

http://bit.ly/fast_ai

Edmund

3 Likes

Regular expressions

For those who want to better understand regular expressions, I highly recommend to read and watch the links given in the course:

7 Likes

En parlant de regex, celle présente dans la 9ème cellule de code du notebook de la 1ere leçon mérite peut-être quelques explications…

pat = r'/([^/]+)_\d+.jpg$' Qu’est-ce que cela peut bien signifier ??

D’abord le “r” devant une string (délimitée par des apostrophes ou des guillemets) est propre à Python signifie que cette string sera interprétée selon des règles différentes des string “normales”. Cela permet notamment de modifier les règles d’interprétation des “caractères d’échappement”.

Comme dans tous langages, pour comprendre cette regex, il faut la décomposer:

  1. /” signifie simplement que l’on cherche un slash.
  2. ([^/]+) est plus complexe, il faut le décomposer à nouveau :
    a) “[^/]” signifie tous les caractères et symboles à l’exclusion de/”.
    b) Le “+” qui suit signifie au moins une fois.
    c) Les parenthèses “()” sont utiles avec certaines fonctions afin de distinguer la chaîne de caractère que l’on cherche de celle que l’on veut transmettre en output. Cela indique que c’est la chaîne correspondant au regex entre les parenthèses qui sera transmise en output.
    d) Donc, “([^/]+)” signifie : renvoie le 1er bout de code qui est précédé par /, qui ne contient pas /et est qui est suivi par la regex qui suit cette expression, en l’occurence “_\d+.jpg$” que nous allons maintenant interprêter à nouveau morceau par morceau.
  1. \d” remplace tous nombres entre 0 & 9 donc “\d+” recherche une suite de nombre (par exemple 0000marcherait).
  2. .jpg” recherche cette suite de caractère
  3. Enfin “$” indique la fin de la chaîne de caractère (ou parfois un retour à la ligne).

Bref, si on interprète r'/([^/]+)_\d+.jpg$' dans le contexte de ce notebook en langage naturel, cela dit:

"pour la chaine de caractère passée en input, recherche la partie de son nom qui suit le dernier slash ("/") et qui est suivi par underscore ("_"), un nombre et l’extension “.jpg” et fournit la en output à la fonction suivante."

:stuck_out_tongue_closed_eyes:

6 Likes

Bonjour à tous!

Merci pour cette décomposition @godot, très utile !
J’ajouterai au post de @EmmaS que le site https://regexone.com/ est très intéressant, il construit sur base d’exercices progressifs. C’est simple au début, mais franchement compliqué (tordu ?) à la fin :slight_smile:

Bonjour,

Merçi à tous d’être venus.
Le meetup suivant a été programmé officiellement.

Godefroy m’a envoyé un email concernant la téchnique du “scraping” comme on appelle la recupération d’images via le web:

"… il me semble qu’il ne serait pas inintéressant d’utiliser pour le cours prochain un tuto de Pyimagesearch (une célèbre newsletter autour du deep learning et du computer vision) qui indique pas à pas comment récupérer par Google des images que l’on peut ensuite utiliser pour faire de l’entraînement. Voici le lien:

https://www.pyimagesearch.com/2017/12/04/how-to-create-a-deep-learning-dataset-using-google-images/

D’abord cela permettra à chacun de personnaliser le classifieur de la leçon 1 et donc de s’amuser encore plus et ensuite, cela fournit une partie de la solution au problème proposé par Jeremy Howard à la fin de la vidéo.

Bonne soirée,

Godefroy

A noter que les commentaires du dit article proposent des outils.

Edmund

1 Like

Bonjour @AmineSab, @eronald, @godot. Si vous n’y voyez pas d’inconvénients, je vais insérer dans le wiki post du thread Feedbacks from existing study groups votre idée d’un Google Drive partagé. C’est une super idée afin d’archiver et rendre accessibles tous les documents produits dans le cadre des groupes d’études.

2 Likes

Bonjour @AmineSab. Fastai a publié un guide pour utiliser fastai sur Colab: https://course.fast.ai/start_colab.html
Je ne l’ai pas encore utilisé. Tu en as écrit un autre car celui-ci ne fonctionne pas bien?

1 Like

Bonjour @pierreguillou, j’ai pris mes infos de ce tuto! J’ai eu du mal à le trouver hier, c’est pourquoi j’ai préféré faire une version courte et en français que j’ai partagé aux gens présents hier soir (et pour avoir la version jupyter local sur le même document). Je t’en prie pour le google drive ! Un point important selon moi est que tout le monde puisse avoir accès en lecture et écriture, pour tous les documents car on peut toujours avoir quelque chose à rajouter ou enrichir. La curation se fait facilement avec les documents drive en cas d’abus.

2 Likes

Super d’accord. J’ai inséré ton initiative dans le wiki post du feedback sur les groupes d’études. Merci :slight_smile:

Hello,

Un hack simple et utile pour télécharger un jeux de données d’images via Google Images et s’entraîner au “hot dog/no hot dog”:

Amusez-vous bien !

2 Likes

Bonjour,

Pour la création de dataset, j’ajouterai ce lien : Small tool to build image dataset: fastclass. Deux scripts très pratiques !

Bonjour à tous - concernant la Session 1 du groupe:

  • La séance a lieu lundi 11 à 19h - Amine a demandé qu’on décale les sessions sur 19h à partir de maintenant.

  • Je parlerai français pendant mon éxposé, saud demande générale de passer en anglais. Ceux qui désirent s’entraider en anglais pour les exos peuvent le faire.

  • Robert Salita peut venir expliquer la configuration d’un PC Deep Learning à domicile, pour ceux qui désirent avoir ça chez eux. A vous de décider quand vous voulez qu’il vienne.

  • A mon avis la carte graphique pas cher à acheter en ce moment est la Nvidia RTX 2060, et dans tous les cas, une RTX. Compter 300 zeuros. Il existe des notebooks HP et Dell/Alienware qui ent embarquent une version peut-être un peu bridée.

  • Ce serait super que vous mettiez à jour vos photos içi et sur le Meetup afin que l’on sâche qui est qui.

VISIONNEZ LA LECON 1 SVP - VISIONNEZ!!! ET LISEZ LES NOTES DE COURS INDIQUEES EN MARGE.
Edmund

1 Like

The next practical will be on Monday March 25 as Amine is busy on Monday March 18.

The March 11 hands-on practical covered training with image augmentation transforms (rotations etc), actually looking at the data files, saving a trained net, running individual images through a classifier. Students who attended should now play with running their own pictures through deep nets, and attempt to train their own nets from reduced sample sets with the help of data augmentation transforms (rotations etc).

Homework Assignment:
All people who attended were told to make 4 pieces of1/4 sheet of A4 paper hand-marked with a heavy marker pen, each with one of the signs 3, 7, O (circle) , X (cross) . The assigned homework is

  • to image the handwritten 3 and 7 with a cellphone and run them through the MNIST sample net as trained in the course notes during Lesson 1 (see below).

  • to train a net to recognize general handwritten O (circle) and X cross.

  • All trained nets and marked page photos should be kept and on March 25 week we will try and see who has the best trained net.

Edmund

PS. Please try to work through Lesson 2 of the FastAI course before the next practical.

Here is the link to the notebook that was on the projector.

J’ai réussi à complèter la première partie du devoir à la maison.

Je n’ai pas encore tout compris, mais en faisant l’exo en lisant la doc on finit par comprendre comment importer des fichiers, sauver des réseaux etc.

Deux fonctions utiles:

open_image(‘monfichierimage’) vous affiche une image, mais img=open_image(monfichierimage’) vous crée un object img de type Image.

si learn est un object Learner déjà entrainé, et img un object Image, learn.predict(img) effectue l’infèrence et vous imprime les prévisions du réseau.

Excusez mes erreurs, je suis très vague, ou plutôt corrigez les, vous avez la moitié voir un tiers de mon age!

Annoncez aussi votre réussite içi même, c’est motivant!

Cet exercice est réellement utile pour prendre en main la librairie FastAI et l’environnement - se perdre un peu dans une nouvelle ville, c’est tout le plaisir du touriste, non?

Edmund

Mon premier test …

1 Like

Hello Edmund
Et quel predict ??
Dans le TP, je ne comprends pas la prédiction de O et X avec la data augmentation ??
Bon we
Bruno

1 Like

@bruno16 -

C’est bien de poser des questions!

C’était juste pour montrer les images utilisées pour mon premier test, qu’elles commencent très crades. Un des buts du jeu est de trouver comment on passe d’images prises en mauvaises conditions à quelquechose que le réseau reconnait. Et ça je voudrais que les gens le fassent eux mêmes. SE CONFRONTER AU MONDE REEL.

La prédiction avec O et X avec Data Augmentation. C’est que en fait pour créer un réseau de rien on n’a pas assez d’échantillons, donc je propose aux étudiants d’utiliser les options de transformation dans les classes du générateur DataImageBunch pour créer des versions transformées (zooméées, symmetrisées, tournées etc) à partir de quelques O et X dessinés qu’ils se font eux mêmes, et voir si leur réseau résultant fonctionne mieux que sans cela. .

La Data Augmentation est une des découvertes récentes avec le Transfer Learning avec ResNet qui fornt que les CNN fonctionnent si bien en pratique sans enormément de de données d’entrainement.

J’épére bien que tu feras le TP et afficheras tes résultats-où les difficutés içi,

Edmund

@bruno16

Voici un exemple où l’équipe Fastai gagné un concours avec sa Data Augmentation:

If you want to match our top single-machine CIFAR-10 result, it’s as simple as four lines of code:

tfms = ([pad(padding=4), crop(size=32, row_pct=(0,1), col_pct=(0,1)),
    flip_lr(p=0.5)], [])
data = data_from_imagefolder('data/cifar10', valid='test',
    ds_tfms=tfms, tfms=cifar_norm)
learn = Learner(data, wrn_22(), metrics=accuracy).to_fp16()
learn.fit_one_cycle(25, wd=0.4)

Tu peux lire plus içi:
https://www.fast.ai/2018/10/02/fastai-ai/

Hi Edmond @eronald
Thanks for the link, but to be clear ,
pour la data-augmentation c’est au sein d’une même classe,
si on fait un classifier pour les 3 et les 7 , cela ne donne rien d’augmenter avec des 0 ou X ?
Voici un medium récent sur le one-shot learning en détection d’image
mais c’est plutot du fastai part 2

Bonne semaine
Bruno

1 Like

Hi Bruno,
Merçi bien de ton commentaire.

Thank you for the link, which is very interesting.

En ce qui concerne les O et le X, cela n’a rien à voir avec les 3 et les 7, le but du jeu est de créer à partir de tout point de départ que tu te choisis, comme par exemple Resnet, un classifieur avec très peu de données de training, quelques gribouillages vite faits., Içi je pense qu’à l’aide de la data augmentation incorporée dans FastAi cet exercice difficile à priori devient un TP à la portée des membres de notre groupe.

Nous le saurons avec certitude lundi prochain!

Edmund