Bilder mit PyTorch verarbeiten

Deep Learning mit PyTorch für Fortgeschrittene

Michal Oleszak

Machine Learning Engineer

Wolken-Datensatz

Beispiele aus dem Wolken-Datensatz: fünf Bilder mit verschiedenen Wolkentypen.

1 https://www.kaggle.com/competitions/cloud-type-classification2/data
Deep Learning mit PyTorch für Fortgeschrittene

Was ist ein Bild?

Ein Wolkenbild, ein Ausschnitt ist vergrößert, sodass Pixel sichtbar sind.

  • Ein Bild besteht aus Pixeln („picture elements“)
  • Jeder Pixel enthält Farbinformationen

  • Graustufenbilder: Ganzzahl 0–255

    • 30:

Graues Kästchen

  • Farbbilder: drei Ganzzahlen, je Kanal (Rot, Grün, Blau)
    • RGB = (52, 171, 235):

Blaues Kästchen

Deep Learning mit PyTorch für Fortgeschrittene

Bilder in PyTorch laden

Gewünschte Ordnerstruktur:

clouds_train

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

 

  • Hauptordner: clouds_train und clouds_test
  • In jedem Hauptordner: ein Ordner pro Kategorie
  • In jedem Klassenordner: Bilddateien
Deep Learning mit PyTorch für Fortgeschrittene

Bilder 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, )
  • Transformationen definieren:

    • Zu Tensor parsen
    • Auf 128×128 skalieren
  • Dataset erstellen mit:

    • Pfad zu den Daten
    • Vordefinierte Transformationen
Deep Learning mit PyTorch für Fortgeschrittene

Bilder anzeigen

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

Wolkebild-Ausgabe von plt.show

Deep Learning mit PyTorch für Fortgeschrittene

Datenaugmentation

train_transforms = transforms.Compose([

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

Datenaugmentation: Mehr Daten erzeugen, indem zufällige Transformationen auf Originalbilder angewandt werden

  • Größe und Vielfalt des Trainingssets erhöhen
  • Modellrobustheit verbessern
  • Overfitting reduzieren

Drei Wolkenbilder, die die Rotationstransformation zeigen

Deep Learning mit PyTorch für Fortgeschrittene

Lass uns üben!

Deep Learning mit PyTorch für Fortgeschrittene

Preparing Video For Download...