অধ্যায়Phase 5 · ডিপ লার্নিং ফর ভিশন
5.3 25 মিনিট পড়া
Data Augmentation
Albumentations দিয়ে strong pipeline।
🎬 গল্প দিয়ে শুরু
“Data বেশি জমাতে পারছি না” — DL practitioner-এর সবচেয়ে সাধারণ অভিযোগ। সমাধান — Data Augmentation। একই ছবিকে rotate, flip, brightness পাল্টে কয়েক গুণ effective dataset।
মৌলিক augmentation
- Geometric — flip, rotate, crop, scale, perspective।
- Color — brightness, contrast, hue, saturation।
- Noise — Gaussian, ISO, blur।
- Cutout/Erasing — random patch দিয়ে ঢেকে দেয়া।
- Mixup / CutMix — দুটি ছবি/label blend।
Albumentations — fastest, OpenCV-backed
bash
pip install albumentationspython
augment.py
import albumentations as A
from albumentations.pytorch import ToTensorV2
import cv2
tfm = A.Compose([
A.RandomResizedCrop(224, 224, scale=(0.7, 1.0)),
A.HorizontalFlip(p=0.5),
A.Rotate(limit=15, p=0.5),
A.ColorJitter(0.2, 0.2, 0.2, 0.1, p=0.5),
A.GaussianBlur(blur_limit=(3,5), p=0.2),
A.CoarseDropout(max_holes=4, max_height=32, max_width=32, p=0.3),
A.Normalize([0.485,0.456,0.406],[0.229,0.224,0.225]),
ToTensorV2(),
])
img = cv2.cvtColor(cv2.imread("dog.jpg"), cv2.COLOR_BGR2RGB)
out = tfm(image=img)["image"] # torch tensorDetection/Segmentation-এ augmentation
Bounding box ও mask-ও augment-এর সাথে সিঙ্ক্রোনাইজ থাকতে হবে।
python
tfm = A.Compose([
A.HorizontalFlip(p=0.5),
A.RandomBrightnessContrast(p=0.4),
], bbox_params=A.BboxParams(format="yolo", label_fields=["labels"]))
aug = tfm(image=img, bboxes=boxes, labels=labels)Strong recipes
- RandAugment / TrivialAugment — randomly N op chain।
- AutoAugment — RL-discovered policy।
- Mixup — দুই image linear combination, label-ও blend।
- CutMix — একটি ছবির patch অন্যটিতে paste।
কতটা augment?
ছোট dataset → aggressive। বড় dataset (1M+) → light। অতিরিক্ত augment-এ model শেখা কঠিন হয়, accuracy কমে।
Validation-এ augmentation দেবেন না
Val/test set-এ শুধু resize + center crop + normalize। Augment করলে metric unstable, comparison অসম্ভব।
প্র্যাকটিস টাস্ক
- একটি ছবির ১০টি augmented version save করে চোখে compare করুন।
- Mixup implement করে দুটি ছবি (lambda=0.5) blend করে label-ও blend করুন।
- একই model — কোনো augment vs strong augment — accuracy পার্থক্য দেখুন।
সারসংক্ষেপ
- Augmentation = free, effective dataset expansion।
- Albumentations দ্রুত ও bbox/mask aware।
- Mixup/CutMix modern classifier-এ standard।
- Validation-এ কখনো augment নয়।