অধ্যায়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 albumentations
python
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 tensor

Detection/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 অসম্ভব।

প্র্যাকটিস টাস্ক
  1. একটি ছবির ১০টি augmented version save করে চোখে compare করুন।
  2. Mixup implement করে দুটি ছবি (lambda=0.5) blend করে label-ও blend করুন।
  3. একই model — কোনো augment vs strong augment — accuracy পার্থক্য দেখুন।

সারসংক্ষেপ

  • Augmentation = free, effective dataset expansion।
  • Albumentations দ্রুত ও bbox/mask aware।
  • Mixup/CutMix modern classifier-এ standard।
  • Validation-এ কখনো augment নয়।