Gérer les images avec PyTorch

Deep learning intermédiaire avec PyTorch

Michal Oleszak

Machine Learning Engineer

Dataset de nuages

Exemples du dataset de nuages : cinq images de différents types de nuages.

1 https://www.kaggle.com/competitions/cloud-type-classification2/data
Deep learning intermédiaire avec PyTorch

Qu’est-ce qu’une image ?

Image de nuage avec un zoom montrant les pixels.

  • Une image est composée de pixels (« éléments d’image »)
  • Chaque pixel contient des informations de couleur

  • Images en niveaux de gris : entier de 0 à 255

    • 30 :

Carré gris

  • Images couleur : trois entiers, un par canal (Rouge, Vert, Bleu)
    • RGB = (52, 171, 235) :

Carré bleu

Deep learning intermédiaire avec PyTorch

Charger des images dans PyTorch

Structure de répertoires souhaitée :

clouds_train

- cumulus
- 75cbf18.jpg - ...
- cumulonimbus - ...
clouds_test
- cumulus - cumulonimbus - ...

 

  • Dossiers principaux : clouds_train et clouds_test
  • Dans chaque dossier principal : un dossier par catégorie
  • Dans chaque dossier de classe : des fichiers image
Deep learning intermédiaire avec PyTorch

Charger des images dans PyTorch

from torchvision.datasets import ImageFolder
from torchvision import transforms


train_transforms = transforms.Compose([ transforms.ToTensor(), transforms.Resize((128, 128)), ])
dataset_train = ImageFolder( "data/clouds_train", transform=train_transforms, )
  • Définir les transformations :

    • Convertir en tenseur
    • Redimensionner en 128x128
  • Créer le dataset en passant :

    • Chemin des données
    • Transformations prédéfinies
Deep learning intermédiaire avec PyTorch

Afficher des images

dataloader_train = DataLoader(
    dataset_train, 
    shuffle=True, 
    batch_size=1,
)

image, label = next(iter(dataloader_train))
print(image.shape)
torch.Size([1, 3, 128, 128])
image = image.squeeze().permute(1, 2, 0)
print(image.shape)
torch.Size([128, 128, 3])
import matplotlib.pyplot as plt
plt.imshow(image)
plt.show()

Image de nuage affichée par plt.show

Deep learning intermédiaire avec PyTorch

Augmentation des données

train_transforms = transforms.Compose([

transforms.RandomHorizontalFlip(), transforms.RandomRotation(45),
transforms.ToTensor(), transforms.Resize((128, 128)), ])
dataset_train = ImageFolder( "data/clouds/train", transform=train_transforms, )

Augmentation des données : générer plus de données en appliquant des transformations aléatoires aux images d’origine

  • Augmente la taille et la diversité de l’entraînement
  • Améliore la robustesse du modèle
  • Réduit le surapprentissage

Trois images de nuages montrant la rotation

Deep learning intermédiaire avec PyTorch

Passons à la pratique !

Deep learning intermédiaire avec PyTorch

Preparing Video For Download...