Encore une fois, merci à Jeremy Howard, pour son merveilleux cours sur le Machine Learning.

Cet article doit tout (sauf les erreurs) à son cours n°2 : https://course.fast.ai/videos/?lesson=2

Nous développons ici, dans Google Colab, une application, qui permet de détecter automatiquement si un drapeau est un drapeau breton, un drapeau pirate ou un drapeau de la Juventus de Turin.

Collecte des données

Obtention des URLs

Tout d’abord, nous allons collecter nos images. Grâce à Google.

Le plus simple est d’utiliser Google Chrome comme éditeur. Mais ce qui suit peut aussi être effectué avec les autres navigateurs.

  • Effectuer une requête dans Google Images (par exemple : drapeaux bretons)
  • Descendre pour obtenir plus de résultats
  • Ouvrir une console JavaScript  CmdOptJ sur Mac
  • Exécuter la commande suivante dans la console :
  • Sauvegarder le fichier (c’est la liste des URLs des images présentées dans Google Images)
  • Recommencez avec les drapeaux Pirates et ceux de la Juventus

Sauvegarde des données

Maintenant que nous avons les URLs de nos images, il faut les stocker dans l’environnement Google Colab.

  • Tout d’abord, ouvrir l’environnement :
  • créer les dossiers
  • Copier les fichiers des URLS des drapeaux. On utilisera files.upload() qui permet d’importer les fichiers souhaités présents sur votre disque
  • déplacer chaque fichier dans son dossier

Import des images

Recommencez trois fois en changeant les paramètres :

(évidemment l’import de fastai.vision ne se fait qu’une seule fois)

A la suite de ces lignes, vous devez avoir toutes vos images dans notre environnement.

Vérification des images

On supprime les images qu’on ne peut pas ouvrir

Voir quelques images

On crée un jeu de données train et un pour la validation (20%).

Voir : https://docs.fast.ai/vision.data.html#ImageDataBunch

Résumé du jeu de données

Entraînement du modèle

Resnet

On utilise un CNN de type ResNet (34).

On obtient une erreur de 5%, ce qui n’est pas si mal.

learning rate

On cherche le learning rate le plus approprié, en appliquant la méthode décrite ci-dessous :

The method  learn.lr_find() helps you find an optimal learning rate. It uses the technique developed in the 2015 paper Cyclical Learning Rates for Training Neural Networks, where we simply keep increasing the learning rate from a very small value, until the loss stops decreasing. We can plot the learning rate across batches to see what this looks like.

Deep Learning 2: Part 1 Lesson 1 – Hiromi Suenaga

L’erreur chute à 4%

Interprétation

Nettoyage des données

Il ya des erreurs de classification car souvent il y a des données qui ne sont pas de qualité. Une intervention « humaine » est parfois nécessaire.

L’idéal pour corriger les données, c’est d’utiliser les Widgets de fastai. Le problème, c’est qu’ils ne marchent pas avec Colab.

Matrice de confusion

Maintenant , il faut trouver un moyen de supprimer les images erronées sur GCT (Google Colab Tools)

Pour cela, on va d’abord les identifier.

On obtient ainsi la liste des images les moins bien classées (dans le validation set). Pour connaitre le nom du fichier, sachant l’id :

Puis pour détruire l’image :

Ensuite

On itère après avoir mis à jour les données (supprimer les images erronées).