Créer votre jeu de données

Consignes

De la même manière que dans le mini-projet, vous allez collecter votre propre jeu de données d’images à classifier. Il devra contenir deux classes d’entre 10 et 30 images chacunes, typiquement prises avec votre téléphone portable.

Pour aller plus loin \(\clubsuit\)

Si vous êtes à l’aise et souhaitez aller plus loin, vous pouvez:

  • Avoir plus de deux classes d’images.

  • Traiter d’autres données que des images.

Notez que, dans ce cas, vous pourrez être amenés à devoir adapter fortement les feuilles que nous vous fournissons.

Préparation du jeu de données

Conseil important: Choisissez des images qui sont toutes dans la même orientation (carrée, portrait ou paysage) car avoir un mélange rend la préparation des images plus complexe.

Voilà comment préparer votre jeu de données :

  • [ ] Déposez votre propre jeu de données dans un sous-dossier data dans IntroSciencesDonnees/Semaine8. Sur JupyterHub, vous pouvez utiliser le bouton Téléverser en haut à droite.

  • [ ] Suivez les mêmes conventions de nommage que lors du premier projet:

    • a01.jpg, a02.jpg, … pour les images de la première classe;

    • b01.jpg, b02.jpg, … pour les images de la deuxième classe.

  • [ ] Vérifiez la taille individuelle des images:

      cd ~/IntroScienceDonnees/Semaine8/data
      ls -lh
    

    Si elle dépasse 50~ko par image, réduisez la résolution pour limiter les temps de calcul et la taille de votre dépôt avant de démarrer le projet 2. Pour cela, utilisez la commande ci-dessous, disponible sur JupyterHub et en salles de TP :

      cd ~/IntroScienceDonnees/Semaine8/data
      mogrify -geometry 256x256 *.jpg 
    

    Vous pourrez ensuite les redimensionner et les recadrer en Python, comme vu la semaine dernière.

  • [ ] Assurez-vous que le répertoire data ne contienne rien d’autre. Lorsque vous avez terminé, utilisez les commandes suivantes pour rajouter les fichiers dans votre dépôt git:

     cd ~/IntroScienceDonnees/Semaine8
     git add data
    

Chargement de votre jeu de données

# Automatically reload code when changes are made
%load_ext autoreload
%autoreload 2
from PIL import Image, ImageDraw, ImageFont
import matplotlib.pyplot as plt

from intro_science_donnees import *
from utilities import *
dataset_dir = 'data'
images = load_images(dataset_dir, "*.png")

Combien d’images contient votre première série de données ? Stockez ce nombre dans une variable n1

n1 = 10 # Changez cette valeur
first = images[:n1]
image_grid(first, titles=first.index)
last = images[n1:]
image_grid(last, titles=last.index)
assert len(images) >= 20

Métadonnées

Il est important de noter qu’il est très difficile de collecter de bonnes données qui ne soient pas entachées de biais. En vue de rechercher et corriger de tels biais, vous devez essayer de conserver le plus d’informations possible sur vos exemples : par exemple, le lieu, la date et l’heure à laquelle les images ont été prises etc. Heureusement, la plupart des téléphones ou appareils photos récents capturent ce genre d’informations, encodées dans le fichier d’image lui-même! Nous appelons cela les métadonnées.

En vous inspirant de la feuille sur les biais de la semaine 7, vous pourrez effectuer une analyse des biais dans vos images. Pour cela vous devrez en extraire les métadonnées. Un mini utilitaire vous est fournis dans utilities.py (regardez comment il fonctionne!). Voici par exemple les métadonnées pour l’une des images en JPEG de notre jeu de données sur les mélanomes :

from intro_science_donnees import data
img = Image.open(os.path.join(data.dir, 'Melanoma', 'a01.jpg'))
extract_metadata(img)

Fin

Maintenant que vous avez préparé votre jeu de données, vous pouvez reprendre l’analyse de la feuille 2_analyse avec vos propres images.