Procesarea imaginilor cu PyTorch

Deep Learning intermediar cu PyTorch

Michal Oleszak

Machine Learning Engineer

Setul de date cu nori

Exemple din setul de date cu nori: cinci imagini cu diferite tipuri de nori.

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

Ce este o imagine?

O imagine cu un nor, cu o zonă mărită pentru a face pixelii vizibili.

  • Imaginea este formată din pixeli ("picture elements")
  • Fiecare pixel conține informații de culoare

  • Imagini în tonuri de gri: număr întreg între 0 și 255

    • 30:

Casetă de culoare gri

  • Imagini color: trei numere întregi, câte unul per canal de culoare (Roșu, Verde, Albastru)
    • RGB = (52, 171, 235):

Casetă de culoare albastră

Deep Learning intermediar cu PyTorch

Încărcarea imaginilor în PyTorch

Structura de directoare dorită:

clouds_train

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

 

  • Foldere principale: clouds_train și clouds_test
  • În fiecare folder principal: un folder per categorie
  • În fiecare folder de clasă: fișierele de imagini
Deep Learning intermediar cu PyTorch

Încărcarea imaginilor în 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, )
  • Definirea transformărilor:

    • Conversie la tensor
    • Redimensionare la 128x128
  • Crearea setului de date cu:

    • Calea către date
    • Transformările predefinite
Deep Learning intermediar cu PyTorch

Afișarea imaginilor

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

Imaginea unui nor afișată cu plt.show

Deep Learning intermediar cu PyTorch

Augmentarea datelor

train_transforms = transforms.Compose([

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

Augmentarea datelor: Generarea de date suplimentare prin aplicarea de transformări aleatoare asupra imaginilor originale

  • Creșterea dimensiunii și diversității setului de antrenament
  • Îmbunătățirea robusteții modelului
  • Reducerea supraadaptării

Trei imagini cu nori ilustrând transformarea de rotație

Deep Learning intermediar cu PyTorch

Să exersăm!

Deep Learning intermediar cu PyTorch

Preparing Video For Download...