Doctor AI

Dr. Savath Saypadith

240 ບົດຄວາມ

ແນະນຳການເຮັດ Image Augmentation ສຳລັບຊຸດຂໍ້ມູນຂະໜາດນ້ອຍ

ໂພສເມື່ອ # Computer Vision # Deep Learning # Python # PyTorch

ແນະນຳການເຮັດ Image Augmentation ສຳລັບຊຸດຂໍ້ມູນຂະໜາດນ້ອຍ

ລອງນຶກພາບວ່າ ທ່ານກຳລັງສ້າງໂມເດວ Computer Vision (CV) ເພື່ອກວດຈັບພະຍາດໃນໃບກາເຟທີ່ເມືອງປາກຊ່ອງ ຫຼື ກວດຈັບປ້າຍທະບຽນລົດໃນການຈະລາຈອນນະຄອນຫຼວງວຽງຈັນ. ບັນຫາທີ່ນັກພັດທະນາໃນປະເທດລາວພົບຫຼາຍທີ່ສຸດຄື “ບໍ່ມີຂໍ້ມູນພຽງພໍ”. ທ່ານອາດຈະລົງພື້ນທີ່ເກັບຮູບພາບມາໄດ້ພຽງແຕ່ 100 ຫຼື 200 ຮູບ ເຊິ່ງໜ້ອຍເກີນໄປສຳລັບການຝຶກສອນ (Train) ໂມເດວ Deep Learning. ສະຖານະການແບບນີ້ມັກຈະພາໃຫ້ເກີດບັນຫາ Overfitting (ໂມເດວຈື່ຈຳແຕ່ຮູບເດີມໆ ແລະ ໃຊ້ງານຈິງບໍ່ໄດ້).

ວິທີແກ້ໄຂທີ່ມີປະສິດທິພາບສູງສຸດ ແລະ ເປັນມາດຕະຖານໃນວົງການ AI ຄືການໃຊ້ເຕັກນິກ Image Augmentation.

Image Augmentation ແມ່ນຫຍັງ?

ເວົ້າງ່າຍໆ, ມັນຄືເຕັກນິກການສ້າງຂໍ້ມູນຮູບພາບໃໝ່ໆຈາກຊຸດຂໍ້ມູນເດີມທີ່ເຮົາມີຢູ່ແລ້ວ ໂດຍການດັດແປງຄຸນລັກສະນະບາງຢ່າງເລັກນ້ອຍ ເຊັ່ນ: ການໝຸນຮູບ, ການຕັດຮູບ, ການປ່ຽນສີ ຫຼື ການປັບແສງ. ສິ່ງນີ້ຊ່ວຍເພີ່ມຈຳນວນຮູບພາບສຳລັບການ Train ແລະ ຊ່ວຍໃຫ້ໂມເດວຮຽນຮູ້ທີ່ຈະຈຳແນກວັດຖຸໄດ້ດີຂຶ້ນໃນຫຼາຍສະພາບແວດລ້ອມ.

ເປັນຫຍັງເຕັກນິກນີ້ຈຶ່ງສຳຄັນສຳລັບການພັດທະນາ AI ໃນລາວ?

ໃນຂະນະທີ່ຕ່າງປະເທດມີ Dataset ມາດຕະຖານຂະໜາດໃຫຍ່ (ເຊັ່ນ ImageNet ທີ່ມີຫຼາຍລ້ານຮູບ), ແຕ່ສຳລັບຂໍ້ມູນທ້ອງຖິ່ນຂອງເຮົາ ເຊັ່ນ: ຮູບອາຫານລາວ, ຮູບປ້າຍທະບຽນລົດລາວ, ຕົ້ນໄມ້ທ້ອງຖິ່ນ ຫຼື ລະດັບນ້ຳຂອງ ເຮົາຕ້ອງໄດ້ເກັບກຳເອງທັງໝົດ. ການໃຊ້ Dataset ຂະໜາດນ້ອຍເປັນເລື່ອງທີ່ຫຼີກລ່ຽງບໍ່ໄດ້ໃນເບື້ອງຕົ້ນ. ຖ້າທ່ານມີຮູບໝາກຫຸ່ງ 100 ຮູບ, ການໃຊ້ Image Augmentation ສາມາດສ້າງຄວາມຫຼາກຫຼາຍ ຈຳລອງມຸມມອງໃໝ່ໆ ຊ່ວຍໃຫ້ໂມເດວຂອງທ່ານເຫັນພາບນັ້ນໃນແບບຄ້າຍຄືມີ 1,000 ຮູບໄດ້.

ເຕັກນິກຍອດນິຍົມ ແລະ ບໍລິບົດໃນການນຳໃຊ້

ກ່ອນຈະຂຽນໂຄດ, ເຮົາຕ້ອງເຂົ້າໃຈກ່ອນວ່າເຕັກນິກແຕ່ລະແບບເໝາະກັບວຽກປະເພດໃດ:

ລົງມືຂຽນໂຄດດ້ວຍ PyTorch (Torchvision)

ສຳລັບນັກພັດທະນາລະດັບກາງ (Intermediate), ການໃຊ້ torchvision.transforms.v2 ຂອງ PyTorch ແມ່ນວິທີທີ່ສະດວກ ແລະ ມີປະສິດທິພາບຫຼາຍ. ມາເບິ່ງວິທີສ້າງ Pipeline ສຳລັບເຮັດ Image Augmentation ກັນ.

ສິ່ງທີ່ຕ້ອງການ: ຕິດຕັ້ງ Libraries ຜ່ານ Terminal: pip install torch torchvision pillow matplotlib

import torch
import torchvision.transforms.v2 as v2
from PIL import Image
import matplotlib.pyplot as plt

# 1. ໂຫຼດຮູບພາບຕົວຢ່າງ (ສົມມຸດວ່າເປັນຮູບ 'ໃບກາເຟປາກຊ່ອງ' ທີ່ຊາວກະສິກອນຖ່າຍມາ)
# ກະລຸນາປ່ຽນຊື່ໄຟລ໌ໃຫ້ກົງກັບຮູບໃນເຄື່ອງຂອງທ່ານ
try:
    img = Image.open('coffee_leaf.jpg').convert('RGB')
except FileNotFoundError:
    print("ບໍ່ພົບໄຟລ໌ຮູບພາບ! ກະລຸນາກວດສອບຊື່ໄຟລ໌.")

# 2. ສ້າງ Pipeline ສຳລັບການເຮັດ Augmentation (Transforms)
data_transforms = v2.Compose([
    # ມີໂອກາດ 50% ທີ່ຈະປີ້ນພາບຊ້າຍ-ຂວາ (ຂຶ້ນກັບການສຸ່ມ)
    v2.RandomHorizontalFlip(p=0.5), 
    
    # ໝຸນຮູບໄປມາແບບສຸ່ມ ບໍ່ເກີນ 15 ອົງສາ ຂວາ ຫຼື ຊ້າຍ
    v2.RandomRotation(degrees=15),  
    
    # ປັບຄວາມສະຫວ່າງ ແລະ ຄວາມຄົມຊັດ ແບບສຸ່ມຊ່ວງ +/- 20%
    v2.ColorJitter(brightness=0.2, contrast=0.2), 
    
    # ແປງຮູບພາບໃຫ້ກາຍເປັນ Tensor ເພື່ອກຽມປ້ອນເຂົ້າ Neural Network
    v2.ToImage(), 
    v2.ToDtype(torch.float32, scale=True) 
])

# 3. ທົດລອງນຳໃຊ້ Transform ກັບຮູບເດີມຫຼາຍໆຄັ້ງ ເພື່ອຈຳລອງພາບໃໝ່
fig, axes = plt.subplots(1, 4, figsize=(15, 4))

# ສະແດງຮູບຕົ້ນສະບັບ
axes[0].imshow(img)
axes[0].set_title("ຮູບຕົ້ນສະບັບ (Original)")
axes[0].axis('off')

# ສະແດງຮູບທີ່ຜ່ານການ Augment ແລ້ວ 3 ຮູບ
for i in range(1, 4):
    augmented_img_tensor = data_transforms(img)
    # ການວາດຮູບ Tensor ດ້ວຍ Matplotlib ຕ້ອງປ່ຽນ Format ຈາກ (C, H, W) ເປັນ (H, W, C)
    augmented_img_numpy = augmented_img_tensor.permute(1, 2, 0).numpy()
    
    axes[i].imshow(augmented_img_numpy)
    axes[i].set_title(f"Augmented {i}")
    axes[i].axis('off')

plt.tight_layout()
plt.show()

ອະທິບາຍໂຄດ:

ບົດສະຫຼຸບທີ່ສຳຄັນ (Key Takeaways)

ການຂະຫຍາຍຊຸດຂໍ້ມູນຮູບພາບດ້ວຍເຕັກນິກ Image Augmentation ຖືເປັນທັກສະພື້ນຖານທີ່ສຳຄັນຫຼາຍສຳລັບນັກພັດທະນາ AI ລະດັບກາງ ໂດຍສະເພາະໃນປະເທດລາວທີ່ເຮົາກຳລັງເລີ່ມຕົ້ນສ້າງໂຄງສ້າງພື້ນຖານຂໍ້ມູນຂອງພວກເຮົາເອງ. ການນຳໃຊ້ເຕັກນິກນີ້ຢ່າງຖືກຕ້ອງຈະຊ່ວຍໃຫ້ໂມເດວຂອງທ່ານມີຄວາມທົນທານ, ເຊື່ອຖືໄດ້ ແລະ ພ້ອມສຳລັບການນຳໄປໃຊ້ງານຈິງໃນສະພາບແວດລ້ອມທ້ອງຖິ່ນໄດ້ຢ່າງມີປະສິດທິຜົນ.