Afbeeldingen verwerken met PyTorch

Gevorderde Deep Learning met PyTorch

Michal Oleszak

Machine Learning Engineer

Wolkendataset

Voorbeelden uit de wolkendataset: vijf afbeeldingen met verschillende wolkentypen.

1 https://www.kaggle.com/competitions/cloud-type-classification2/data
Gevorderde Deep Learning met PyTorch

Wat is een afbeelding?

Een wolkenafbeelding met een ingezoomd deel zodat pixels zichtbaar zijn.

  • Een afbeelding bestaat uit pixels ("picture elements")
  • Elke pixel bevat kleurinformatie

  • Grijswaardenafbeeldingen: geheel getal 0–255

    • 30:

Grijs gekleurd vak

  • Kleurenafbeeldingen: drie gehele getallen, één per kleurkanaal (Rood, Groen, Blauw)
    • RGB = (52, 171, 235):

Blauw gekleurd vak

Gevorderde Deep Learning met PyTorch

Afbeeldingen in PyTorch laden

Gewenste mapstructuur:

clouds_train

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

 

  • Hoofdmappen: clouds_train en clouds_test
  • In elke hoofdmapp: één map per categorie
  • In elke classmap: afbeeldingsbestanden
Gevorderde Deep Learning met PyTorch

Afbeeldingen in PyTorch laden

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, )
  • Transformaties definiëren:

    • Naar tensor parsen
    • Resizen naar 128×128
  • Dataset maken met:

    • Pad naar data
    • Vooraf gedefinieerde transformaties
Gevorderde Deep Learning met PyTorch

Afbeeldingen weergeven

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()

Wolkenafbeelding, uitvoer van plt.show

Gevorderde Deep Learning met PyTorch

Data-augmentatie

train_transforms = transforms.Compose([

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

Data-augmentatie: meer data genereren met willekeurige transformaties op originele afbeeldingen

  • Vergroot omvang en variatie van de trainingsset
  • Verbetert modelrobuustheid
  • Vermindert overfitting

Drie wolkenafbeeldingen die de rotatietransformatie tonen

Gevorderde Deep Learning met PyTorch

Laten we oefenen!

Gevorderde Deep Learning met PyTorch

Preparing Video For Download...