<< All versions
Skill v1.0.0
currentAutomated scan100/100wenmin-wu/ds-skills/albumentations-detection-augmentation
──Details
PublishedOctober 21, 2026 at 02:07 AM
Content Hashsha256:779ddc8b7d59bba2...
Git SHA718b09722905
──Files
Files (1 file, 2.6 KB)
SKILL.md2.6 KBactive
SKILL.md · 65 lines · 2.6 KB
version: "1.0.0" name: cv-albumentations-detection-augmentation description: > Applies albumentations augmentations to object detection data while preserving bbox-label correspondence via BboxParams.
Albumentations Detection Augmentation
Overview
Albumentations supports spatial transforms (flip, rotate, crop, resize) that automatically adjust bounding boxes alongside the image. The key is BboxParams — it tells the pipeline the bbox format (pascal_voc, coco, yolo) and which field maps labels to boxes. Without this, augmented bboxes get shuffled or lost. This pattern wraps albumentations into a detection framework's data mapper (Detectron2, MMDetection) or a custom PyTorch Dataset.
Quick Start
python
import albumentations as Aimport numpy as np# Define augmentation pipeline with bbox supporttransform = A.Compose([A.HorizontalFlip(p=0.5),A.RandomBrightnessContrast(p=0.3),A.ShiftScaleRotate(shift_limit=0.05, scale_limit=0.1,rotate_limit=15, p=0.5),A.RandomResizedCrop(height=512, width=512, scale=(0.8, 1.0), p=0.5),], bbox_params=A.BboxParams(format='pascal_voc', # [x_min, y_min, x_max, y_max]label_fields=['category_ids'],min_area=100, # drop tiny boxes after cropmin_visibility=0.3, # drop mostly-clipped boxes))# Apply to image + bboxesbboxes = [[100, 100, 300, 300], [400, 200, 500, 400]]labels = [0, 1]result = transform(image=image,bboxes=bboxes,category_ids=labels,)aug_image = result['image']aug_bboxes = result['bboxes'] # transformed coordinatesaug_labels = result['category_ids'] # preserved correspondence
Workflow
- Define augmentation pipeline with
A.ComposeandA.BboxParams - Specify bbox format:
pascal_voc,coco(x,y,w,h), oryolo(normalized) - Map label fields so they track with bboxes through transforms
- Set
min_areaandmin_visibilityto drop degenerate boxes after cropping - Apply in Dataset
__getitem__or framework-specific mapper
Key Decisions
- Format: Match your annotation format —
pascal_vocfor [x1,y1,x2,y2],yolofor normalized [cx,cy,w,h] - min_area/min_visibility: Prevents training on tiny slivers; 100px² area and 0.3 visibility are safe defaults
- Spatial only: Non-spatial transforms (brightness, contrast) don't affect bboxes — safe to add freely
- Label tracking:
label_fieldslinks labels to bboxes; without it, augmented boxes lose their class IDs