PyTorch ile görüntü işleme

PyTorch ile Orta Düzey Deep Learning

Michal Oleszak

Machine Learning Engineer

Bulutlar veri seti

Bulut veri setinden örnekler: farklı bulut türlerini gösteren beş görsel.

1 https://www.kaggle.com/competitions/cloud-type-classification2/data
PyTorch ile Orta Düzey Deep Learning

Görüntü nedir?

Piksellerin görünür olduğu, bir kısmı zumlanmış bulut görseli.

  • Görüntü pikselden ("resim öğesi") oluşur
  • Her piksel renk bilgisi içerir

  • Gri tonlu görüntüler: 0 - 255 arası tamsayı

    • 30:

Gri renkli kutu

  • Renkli görüntüler: her kanal için üç tamsayı (Kırmızı, Yeşil, Mavi)
    • RGB = (52, 171, 235):

Mavi renkli kutu

PyTorch ile Orta Düzey Deep Learning

Görüntüleri PyTorch'a yükleme

İstenen dizin yapısı:

clouds_train

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

 

  • Ana klasörler: clouds_train ve clouds_test
  • Her ana klasör içinde: her kategori için bir klasör
  • Her sınıf klasöründe: görüntü dosyaları
PyTorch ile Orta Düzey Deep Learning

Görüntüleri PyTorch'a yükleme

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önüşümleri tanımlayın:

    • Tensöre çevir
    • 128x128'e yeniden boyutlandır
  • Veri kümesini şu şekilde oluşturun:

    • Veriye giden yol
    • Önceden tanımlı dönüşümler
PyTorch ile Orta Düzey Deep Learning

Görüntüleri görüntüleme

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

plt.show çıktısında bulut görseli

PyTorch ile Orta Düzey Deep Learning

Veri artırma

train_transforms = transforms.Compose([

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

Veri artırma (data augmentation): Orijinal görsellere rastgele dönüşümler uygulayarak daha fazla veri üretme

  • Eğitim kümesinin boyutu ve çeşitliliğini artırır
  • Model sağlamlığını geliştirir
  • Aşırı uyumu azaltır

Döndürme dönüşümünü gösteren üç bulut resmi

PyTorch ile Orta Düzey Deep Learning

Hadi pratik yapalım!

PyTorch ile Orta Düzey Deep Learning

Preparing Video For Download...