Mengelola gambar dengan PyTorch

Deep Learning Lanjutan dengan PyTorch

Michal Oleszak

Machine Learning Engineer

Dataset awan

Contoh dari dataset awan: lima gambar yang menunjukkan berbagai jenis awan.

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

Apa itu gambar?

Gambar awan dengan bagian yang dizoom agar piksel terlihat.

  • Gambar terdiri dari piksel ("picture elements")
  • Tiap piksel berisi informasi warna

  • Gambar grayscale: bilangan bulat 0 - 255

    • 30:

Kotak berwarna abu-abu

  • Gambar berwarna: tiga bilangan bulat, satu per kanal warna (Merah, Hijau, Biru)
    • RGB = (52, 171, 235):

Kotak berwarna biru

Deep Learning Lanjutan dengan PyTorch

Memuat gambar ke PyTorch

Struktur direktori yang diinginkan:

clouds_train

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

 

  • Folder utama: clouds_train dan clouds_test
  • Di tiap folder utama: satu folder per kategori
  • Di tiap folder kelas: file gambar
Deep Learning Lanjutan dengan PyTorch

Memuat gambar ke 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, )
  • Definisikan transformasi:

    • Ubah ke tensor
    • Ubah ukuran ke 128x128
  • Buat dataset dengan:

    • Path ke data
    • Transformasi pradefinisi
Deep Learning Lanjutan dengan PyTorch

Menampilkan gambar

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

Gambar awan keluaran dari plt.show

Deep Learning Lanjutan dengan PyTorch

Augmentasi data

train_transforms = transforms.Compose([

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

Augmentasi data: Membuat lebih banyak data dengan menerapkan transformasi acak pada gambar asli

  • Menambah ukuran dan keragaman data latih
  • Meningkatkan ketangguhan model
  • Mengurangi overfitting

Tiga gambar awan yang menunjukkan transformasi rotasi

Deep Learning Lanjutan dengan PyTorch

Ayo berlatih!

Deep Learning Lanjutan dengan PyTorch

Preparing Video For Download...