Albumentations - Augmentasi Gambar Tingkat Lanjut
Daftar Isi
Pendahuluan
Augmentasi gambar adalah salah satu teknik regularisasi paling efektif dalam computer vision. Dengan memperbanyak dataset pelatihan secara artifisial menggunakan versi gambar yang telah ditransformasi, kita dapat meningkatkan kemampuan generalisasi model secara signifikan dan mengurangi overfitting.
Albumentations adalah pustaka augmentasi gambar yang cepat, fleksibel, dan kaya fitur yang dirancang untuk praktisi machine learning. Dibangun di atas OpenCV dan NumPy, pustaka ini menyediakan lebih dari 70 jenis transformasi augmentasi yang berbeda dan dioptimalkan untuk performa — seringkali 2-10 kali lebih cepat dibandingkan alternatif seperti torchvision atau imgaug.Keunggulan utama Albumentations:
- Kecepatan: Sangat dioptimalkan dengan backend OpenCV
- Kelengkapan: 70+ transformasi mencakup geometris, warna, cuaca, dan lainnya
- Fleksibilitas: Bekerja dengan gambar, mask, bounding box, dan keypoint secara bersamaan
- Integrasi: Kompatibel penuh dengan PyTorch, TensorFlow, dan framework lainnya
- Reprodusibilitas: Transformasi deterministik dengan kontrol seed
Dalam tutorial ini, Anda akan mempelajari cara membangun pipeline augmentasi berkualitas produksi, mengintegrasikannya ke dalam alur kerja deep learning, membuat transformasi kustom, dan mengukur performa.
Prasyarat
Sebelum memulai tutorial ini, Anda harus memiliki:
- Python 3.8 atau lebih tinggi
- Pemahaman dasar konsep computer vision
- Keakraban dengan PyTorch (untuk integrasi DataLoader)
- Pengalaman dengan dasar-dasar NumPy dan pemrosesan gambar
Instalasi dan Pengaturan
Instal Albumentations dan dependensinya:
# Instal albumentations dengan semua ekstra
pip install albumentations[all]
Atau instalasi minimal
pip install albumentations
Dependensi tambahan untuk tutorial ini
pip install torch torchvision matplotlib opencv-python-headless
Verifikasi instalasi:
import albumentations as A
import cv2
import numpy as np
print(f"Versi Albumentations: {A.version}")
Muat gambar sampel
image = cv2.imread("sampel.jpg")
image = cv2.cvtColor(image, cv2.COLORBGR2RGB)
print(f"Bentuk gambar: {image.shape}")
Memahami Pipeline Augmentasi
Albumentations menggunakan pendekatan pipeline deklaratif. Anda mendefinisikan urutan transformasi, masing-masing dengan probabilitas penerapan, kemudian melewatkan data Anda melalui pipeline tersebut.
import albumentations as A
import cv2
import numpy as np
Definisikan pipeline sederhana
transform = A.Compose([
A.HorizontalFlip(p=0.5),
A.RandomBrightnessContrast(p=0.3),
A.Resize(height=256, width=256),
])
Muat dan transformasi gambar
image = cv2.imread("sampel.jpg")
image = cv2.cvtColor(image, cv2.COLORBGR2RGB)
Terapkan transformasi
result = transform(image=image)
augmentedimage = result["image"]
print(f"Bentuk asli: {image.shape}")
print(f"Bentuk setelah augmentasi: {augmentedimage.shape}")
Pipeline juga dapat menangani mask, bounding box, dan keypoint secara bersamaan:
# Pipeline dengan dukungan bounding box
transform = A.Compose([
A.HorizontalFlip(p=0.5),
A.RandomCrop(height=300, width=300, p=1.0),