Xử lý ảnh với PyTorch

Deep Learning nâng cao với PyTorch

Michal Oleszak

Machine Learning Engineer

Bộ dữ liệu mây

Mẫu từ bộ dữ liệu mây: năm ảnh với các loại mây khác nhau.

1 https://www.kaggle.com/competitions/cloud-type-classification2/data
Deep Learning nâng cao với PyTorch

Ảnh là gì?

Ảnh mây với một phần được phóng to để thấy rõ pixel.

  • Ảnh gồm các pixel ("picture elements")
  • Mỗi pixel chứa thông tin màu

  • Ảnh xám: số nguyên trong 0 - 255

    • 30:

Ô màu xám

  • Ảnh màu: ba số nguyên, mỗi kênh màu (Đỏ, Lục, Lam) một số
    • RGB = (52, 171, 235):

Ô màu xanh lam

Deep Learning nâng cao với PyTorch

Nạp ảnh vào PyTorch

Cấu trúc thư mục mong muốn:

clouds_train

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

 

  • Thư mục chính: clouds_trainclouds_test
  • Trong mỗi thư mục chính: một thư mục cho mỗi hạng mục
  • Trong mỗi thư mục lớp: các tệp ảnh
Deep Learning nâng cao với PyTorch

Nạp ảnh vào 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, )
  • Xác định các biến đổi:

    • Chuyển sang tensor
    • Đổi kích thước 128x128
  • Tạo dataset với:

    • Đường dẫn dữ liệu
    • Các biến đổi đã định nghĩa
Deep Learning nâng cao với PyTorch

Hiển thị ảnh

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

Ảnh mây hiển thị từ plt.show

Deep Learning nâng cao với PyTorch

Tăng cường dữ liệu

train_transforms = transforms.Compose([

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

Tăng cường dữ liệu: Tạo thêm dữ liệu bằng các biến đổi ngẫu nhiên trên ảnh gốc

  • Tăng kích thước và độ đa dạng tập huấn luyện
  • Cải thiện độ bền vững của mô hình
  • Giảm overfitting

Ba ảnh mây minh họa phép quay

Deep Learning nâng cao với PyTorch

Ayo berlatih!

Deep Learning nâng cao với PyTorch

Preparing Video For Download...