การจัดการรูปภาพด้วย PyTorch

Deep Learning ระดับกลางด้วย PyTorch

Michal Oleszak

Machine Learning Engineer

ชุดข้อมูลเมฆ

ตัวอย่างจากชุดข้อมูลเมฆ: รูปภาพห้าภาพแสดงเมฆประเภทต่างๆ

1 https://www.kaggle.com/competitions/cloud-type-classification2/data
Deep Learning ระดับกลางด้วย PyTorch

รูปภาพคืออะไร?

รูปภาพเมฆที่ซูมเข้าบางส่วนจนมองเห็นพิกเซล

  • รูปภาพประกอบด้วยพิกเซล ("picture elements")
  • แต่ละพิกเซลเก็บข้อมูลสี

  • ภาพระดับสีเทา: จำนวนเต็มในช่วง 0 - 255

    • 30:

กล่องสีเทา

  • ภาพสี: จำนวนเต็มสามค่า หนึ่งค่าต่อช่องสี (Red, Green, Blue)
    • RGB = (52, 171, 235):

กล่องสีน้ำเงิน

Deep Learning ระดับกลางด้วย PyTorch

การโหลดรูปภาพเข้า PyTorch

โครงสร้างไดเรกทอรีที่ต้องการ:

clouds_train

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

 

  • โฟลเดอร์หลัก: clouds_train และ clouds_test
  • ภายในโฟลเดอร์หลัก: หนึ่งโฟลเดอร์ต่อหมวดหมู่
  • ภายในโฟลเดอร์แต่ละคลาส: ไฟล์รูปภาพ
Deep Learning ระดับกลางด้วย PyTorch

การโหลดรูปภาพเข้า 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, )
  • กำหนด transformation:

    • แปลงเป็น tensor
    • ปรับขนาดเป็น 128x128
  • สร้าง dataset โดยระบุ:

    • พาธของข้อมูล
    • transformation ที่กำหนดไว้
Deep Learning ระดับกลางด้วย PyTorch

การแสดงรูปภาพ

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

Deep Learning ระดับกลางด้วย PyTorch

Data augmentation

train_transforms = transforms.Compose([

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

Data augmentation: การสร้างข้อมูลเพิ่มโดยใช้ transformation แบบสุ่มกับรูปภาพต้นฉบับ

  • เพิ่มขนาดและความหลากหลายของชุดข้อมูลฝึกสอน
  • ทำให้โมเดลมีความทนทานมากขึ้น
  • ลด overfitting

รูปภาพเมฆสามภาพแสดง transformation การหมุน

Deep Learning ระดับกลางด้วย PyTorch

มาฝึกกันเถอะ!

Deep Learning ระดับกลางด้วย PyTorch

Preparing Video For Download...