Object detection কী
এই পাঠে যা শিখবেন
- Detection vs classification — fundamental difference
- Bounding box, IoU, mAP
- One-stage vs two-stage detectors
- Application landscape
১ · Detection task definition
Input: একটি ছবি। Output: list of detection — প্রতিটি = (class, bounding box, confidence)।
Example: একটি traffic photo-তে — তিনটি car, দু'টি pedestrian, একটি motorcycle। প্রতিটির ছবিতে কোথায় (rectangle) এবং কী (class)।
Classification: "image-এ কী আছে?" (single answer)। Detection: "প্রতিটি object কোথায় ও কী?" (multiple answers)। Output structure থেকে training pipeline ভিন্ন।
২ · Bounding box
একটি rectangle যা object cover করে। Format-এর variation:
- Pascal VOC: $(x_1, y_1, x_2, y_2)$ — top-left ও bottom-right।
- COCO: $(x, y, w, h)$ — top-left + width/height।
- YOLO: $(x_c, y_c, w, h)$ normalized [0,1]।
৩ · IoU (Intersection over Union)
দু'টি bbox-এর match measure:
$$\text{IoU} = \frac{|A \cap B|}{|A \cup B|}$$
- 1.0 = perfect overlap।
- 0 = no overlap।
- 0.5 — typical correctness threshold।
৪ · mAP (mean Average Precision)
Detection-এর primary metric। Per-class AP-এর mean।
- Per-class: recall-precision curve-এর area।
- mAP@0.5: IoU 0.5 threshold-এ AP।
- mAP@0.5:0.95: COCO standard — IoU 0.5, 0.55, ..., 0.95-এর average।
- mAP-small/medium/large: object size-ভিত্তিক।
৫ · Classification থেকে detection-এর challenge
- Variable output count: এক image-এ ০ থেকে শতাধিক object।
- Localization accuracy: tight bounding box।
- Multi-scale: ছোট ও বড় বস্তু একসাথে।
- Class imbalance: background pixel object-এর চেয়ে অনেক বেশি।
- Compute: per-image বহু operation।
৬ · Two-stage detectors
- Stage 1: Region Proposal — "এই region-এ কিছু আছে?" (objectness, no class)।
- Stage 2: Classify each proposal + refine box।
- Examples: R-CNN, Fast R-CNN, Faster R-CNN, Mask R-CNN।
- Pro: high accuracy।
- Con: slower (multi-stage compute)।
৭ · One-stage detectors
- Single shot: grid-এর প্রতি cell-এ direct (class + box) predict।
- No proposals: end-to-end one pass।
- Examples: YOLO (v1-v8), SSD, RetinaNet, EfficientDet।
- Pro: realtime — 30-100+ FPS।
- Con: traditionally less accurate (gap shrunk)।
৮ · Modern transformer-based
- DETR (২০২০): end-to-end transformer detector। NMS-free।
- Deformable DETR, DINO-DETR: faster convergence।
- RT-DETR: realtime DETR — YOLO competitor।
৯ · Detection pipeline-এর elements
- Backbone: ResNet/EfficientNet feature extractor।
- Neck: FPN (Feature Pyramid Network) — multi-scale feature।
- Head: classification + bbox regression।
- NMS: non-maximum suppression — duplicate detection remove।
১০ · COCO dataset
- ৩৩০K image, ৮০ class।
- Annotation: bbox + segmentation mask + keypoints।
- Modern detection-এর benchmark।
- আজকের SOTA: mAP 65-70%।
১১ · Application landscape
- Autonomous driving: car, pedestrian, traffic sign।
- Surveillance: intrusion, weapon detection।
- Retail: product detection — Amazon Go-style।
- Medical: tumor, lesion detection।
- Agriculture: crop disease, pest counting।
- Sports: player tracking।
- Industrial: defect detection।
ভাবনার প্রশ্ন
প্র ০১ Detection-এর output variable length — ০ থেকে ১০০ object। Neural network-এর fixed output size constraint কীভাবে handle?
এটি detection architecture design-এর central challenge। Multiple solutions evolved।
Approach 1: Dense grid prediction (YOLO):
- Image-কে $S \times S$ grid-এ ভাগ।
- Each cell predict $B$ box (typical 3-5)।
- Total $S \times S \times B$ candidate output।
- Confidence threshold + NMS — final detection।
- Fixed output: $S \times S \times B \times (5 + C)$।
Approach 2: Region proposal (Faster R-CNN):
- RPN proposes ~2000 candidate region।
- Each candidate independent classify + refine।
- Per-image variable count detection।
- Fixed at proposal stage, variable at output।
Approach 3: Set prediction (DETR):
- Fixed $N$ "object queries" (e.g., 100)।
- Each query — one slot in output (or "no object")।
- Hungarian matching loss।
- Truly fixed output size।
Approach 4: Anchor-free (FCOS, CenterNet):
- Each pixel predict — center? size?
- Heatmap-style output।
- Local maxima → detection।
NMS — common deduplication:
- Multiple cell same object detect।
- NMS — highest confidence keep, IoU > 0.5 with high — discard।
- Variable output count emerge।
Trade-offs:
- Dense grid: dense candidate, NMS-dependent।
- Two-stage: accurate, slow।
- DETR: elegant set, slow convergence।
- Anchor-free: simpler, gaining popularity।
Loss function complexity:
- Each ground-truth box → assign to one prediction (anchor matching)।
- Unassigned predictions → "background" class।
- Loss combination: classification + localization + objectness।
মূল উপলব্ধি: Variable output — neural network fundamental limitation। Detection-এর architectural creativity এই challenge-কে different ways-এ address। Modern trend — set prediction (DETR) elegant।
প্র ০২ mAP@0.5 ও mAP@0.5:0.95 — পার্থক্য কেন matter? কোনটা production-এ ভালো metric?
এটি detection community-র ongoing debate। Different metric different reality capture।
mAP@0.5 (Pascal VOC standard):
- Single IoU threshold।
- "Box approximately right" — counted।
- Lenient localization criterion।
- Pre-2017 standard।
mAP@0.5:0.95 (COCO):
- 10 IoU threshold (0.5, 0.55, ..., 0.95) average।
- Tight localization rewarded।
- Higher bar — harder to score high।
- Modern standard।
Numerical difference:
- Faster R-CNN: mAP@0.5 = 70%, mAP@0.5:0.95 = 35-40%।
- YOLOv8: mAP@0.5 = 65%, mAP@0.5:0.95 = 47%।
- "Better localization" matters।
Production metric choice:
- Self-driving: mAP@0.7 or higher — safety, tight box matters।
- Surveillance: mAP@0.5 sufficient — "presence detect" goal।
- Medical: mAP@0.7-0.9 — precise lesion border।
- Counting: mAP@0.5 — count more important than tightness।
- Robot grasping: mAP@0.9 — tight box critical।
Other relevant metrics:
- AR (Average Recall): max detection / proposal recall।
- AP-small/medium/large: size-stratified।
- F1 score at threshold: single confidence level।
- FPS / latency: realtime constraint।
Beyond traditional mAP:
- Open-vocabulary detection: CLIP-based — zero-shot class।
- Probability calibration: confidence reliability।
- Robustness: COCO-Stuff, OOD eval।
Caveats:
- mAP — single number, hides per-class variation।
- Class imbalance — rare class poorly score।
- "Hard negative" — confused background as object।
- Always look at confusion matrix, qualitative samples।
Bangladesh use case:
- Traffic detection — mAP@0.5 + size-specific।
- Crop disease — mAP@0.5 + class-balanced।
- Document text — IoU > 0.7 (tight letter box)।
মূল উপলব্ধি: Single metric oversimplify। Production-এ multiple metric track + qualitative review। Numbers tell story, but visual inspection ground truth।
প্র ০৩ One-stage (YOLO) vs two-stage (Faster R-CNN) — কখন কোনটা? Modern era-এ এই distinction এখনো relevant?
২০১৬-এর strict dichotomy ক্রমশ blur হচ্ছে। কিন্তু core trade-off relevant।
Historical context:
- Two-stage era (2014-2017): R-CNN → Fast R-CNN → Faster R-CNN। Accuracy lead।
- One-stage emergence (2016+): YOLO, SSD, RetinaNet — speed-focused।
- Modern: YOLOv8, RT-DETR — accuracy gap closed।
Two-stage strengths:
- Localization accuracy: RPN refine + RoI align — tight boxes।
- Small object: proposal at multiple scales।
- Custom objective: stage modification flexible।
- Used in: Mask R-CNN, Cascade R-CNN।
One-stage strengths:
- Speed: 30-150+ FPS।
- Mobile-friendly: lightweight backbones, quantizable।
- Simpler training: single loss।
- Used in: realtime application।
Modern landscape:
- YOLOv8 (2023): mAP 53.9% on COCO, 280 FPS।
- Faster R-CNN ResNet-50: mAP 41.0%, 17 FPS।
- RT-DETR: 53% mAP, 100 FPS।
- DINO-DETR: 63% mAP, slow।
Choice criteria:
- Realtime (>30 FPS): YOLOv8, RT-DETR।
- Maximum accuracy: DINO-DETR, Co-DETR।
- Mobile/edge: YOLOv8-nano, MobileDet।
- Instance segmentation: Mask2Former (DETR-style)।
- Custom annotation type: two-stage flexibility।
DETR family — third paradigm:
- Set prediction, no anchor, no NMS।
- Traditionally slower convergence।
- DINO, Co-DETR — accuracy SOTA।
- RT-DETR — realtime competitive।
Bangladesh deployment:
- Mobile traffic app: YOLOv8-nano।
- Server CCTV: YOLOv8-medium।
- Medical research: Faster R-CNN + RX, accuracy priority।
- Edge IoT: YOLOv8-tiny, MobileDet।
Future trend:
- Distinction blurring।
- "Anchor-free + NMS-free" — DETR direction।
- Foundation model detection (Grounding DINO) — text prompt!
মূল উপলব্ধি: Old binary (one vs two stage) misleading। Modern question — speed vs accuracy + which architecture family + foundation model leverage।
প্র ০৪ NMS (Non-Maximum Suppression) — almost সব detector-এর post-processing। কী algorithm, কেন এটি একটি limitation?
NMS — detection-এর "necessary evil"। Heuristic, deterministic, কিন্তু modern criticism।
NMS algorithm:
- Confidence-এ sort detections (descending)।
- Highest confidence keep।
- IoU > threshold-এ overlap-এর সব discard।
- Repeat next highest confidence।
- Continue till empty।
def nms(boxes, scores, iou_thresh=0.5):
keep = []
sorted_idx = scores.argsort(descending=True)
while len(sorted_idx) > 0:
idx = sorted_idx[0]
keep.append(idx)
ious = compute_iou(boxes[idx], boxes[sorted_idx[1:]])
sorted_idx = sorted_idx[1:][ious <= iou_thresh]
return keep
Why needed:
- Detector dense prediction — same object multiple time।
- Without NMS — output cluttered।
- Visualization inspires confusion।
NMS-এর problems:
- Hyperparameter: IoU threshold task-dependent।
- Crowded scene: two cars touching → one suppress।
- Inference cost: $O(N^2)$ box pairs।
- Non-differentiable: end-to-end training-এ obstacle।
Variants:
- Soft-NMS: linear/Gaussian decay instead of hard suppress।
- Weighted NMS: bbox merge instead of suppress।
- Adaptive NMS: threshold per-instance।
- Matrix NMS: parallelizable।
NMS-free detectors:
- DETR: set prediction — Hungarian matching ensure unique।
- Sparse R-CNN: learnable proposals।
- FCOS-style centerness: implicit duplicate suppress।
Modern hybrid:
- Most production system এখনো NMS use।
- YOLOv8: NMS।
- RT-DETR: NMS-free!
- Co-DETR: NMS-free with high accuracy।
Realtime impact:
- YOLOv8 GPU: NMS 1-2 ms।
- Mobile: NMS often biggest bottleneck post-conv।
- NMS-free — mobile-attractive।
Crowded scene — case study:
- Pedestrian dense crowd — overlap inevitable।
- Standard NMS → many missed।
- Soft-NMS → some recover।
- DETR-style → handles natively।
Bangladesh context:
- Dhaka traffic — extremely crowded।
- Standard YOLO + NMS — overlap rickshaw + CNG miss।
- RT-DETR or specialized crowd detector preferable।
মূল উপলব্ধি: NMS — historical artifact। Modern direction NMS-free। কিন্তু practical deployment-এ এখনো ubiquitous। Tool change হলেও limitation conceptual।
অনুশীলন
-
IoU calc: Box A = (10, 10, 50, 50), B = (30, 30, 60, 60) — IoU?
Intersection: $(30-50) \times (30-50) = 20 \times 20 = 400$. A area = $40 \times 40 = 1600$, B area = $30 \times 30 = 900$. Union = $1600 + 900 - 400 = 2100$. IoU = $400/2100 ≈ 0.19$।
-
Pretrained detector: torchvision Faster R-CNN load করে inference।
from torchvision.models.detection import fasterrcnn_resnet50_fpn m = fasterrcnn_resnet50_fpn(weights='DEFAULT').eval() img = torch.rand(3, 800, 800) with torch.no_grad(): out = m([img]) print(out[0].keys()) # 'boxes', 'labels', 'scores' -
ভাবুন: ১টি 1024×768 ছবিতে YOLOv8 inference নিতে কত compute? 3 anchor, 80 class।
Roughly: backbone ~10 GFLOPs, head per-pixel grid (1024/32 × 768/32 × 3 anchors) ~6300 candidate। Total ~15-20 GFLOPs। RTX 3060 — 30+ FPS।
আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ
- পাঠ ১৮ · R-CNN family পরবর্তী পাঠ Two-stage detector evolution।
- পাঠ ১৬ · Transfer learning আগের পাঠ Detection-এও pretrained backbone।
- পাঠ ১৯ · YOLO এগিয়ে One-stage detector-এর star।
- সব AI Courses দেখুন ABCL TECH Python, ML, DL, NLP, CV, GenAI, RL, MLOps — সব AI কোর্স একসাথে।