Mask R-CNN
এই পাঠে যা শিখবেন
- Mask R-CNN — Faster R-CNN-এর extension
- RoI Align — quantization-free region pooling
- Mask head architecture
- PyTorch-এ inference + finetune
১ · Mask R-CNN-এর জন্ম
Kaiming He et al. (২০১৭, Facebook AI Research)। Faster R-CNN-এর extension। Conceptually simple, accuracy high।
Goal: instance segmentation — per-object pixel mask। প্রতিটি car-এর আলাদা mask। Object detection + per-instance segmentation।
Faster R-CNN-এর প্রতিটি RoI-এ — মাত্র এক additional branch (mask head)। Multi-task learning, decoupled prediction। Simple addition, dramatic capability।
২ · Mask R-CNN architecture
Shared components (Faster R-CNN থেকে)
- Backbone: ResNet-50/101 + FPN।
- RPN: region proposal।
- RoI Align: feature extract (RoI Pool → RoI Align)।
Three parallel heads
- Classification head: RoI → class probability।
- Bbox regression head: RoI → refined bbox।
- Mask head (new): RoI → 28×28 binary mask per class।
৩ · RoI Align
RoI Pool-এর problem: integer quantization-এ sub-pixel misalignment। Mask precision-এ এটি critical।
- RoI Pool: integer round → bin division integer।
- RoI Align: continuous coordinate, bilinear interpolation।
- 4 sample point per bin, average।
- Sub-pixel accurate।
Effect on mask AP: 24.5 → 30.3 (+5.8%) — vital improvement।
৪ · Mask head detail
- RoI feature 14×14 → 4 conv 3×3 → upsample 28×28 → 1 conv 1×1।
- Per-class mask channel: $K \times 28 \times 28$ (where $K$ = num classes)।
- Inference: only target class-এর mask use।
- Output binary — per pixel sigmoid।
৫ · Loss function
Multi-task loss:
$$\mathcal{L} = \mathcal{L}_{\text{cls}} + \mathcal{L}_{\text{bbox}} + \mathcal{L}_{\text{mask}}$$
- $\mathcal{L}_{\text{cls}}$: softmax cross-entropy।
- $\mathcal{L}_{\text{bbox}}$: smooth L1 (Faster R-CNN)।
- $\mathcal{L}_{\text{mask}}$: per-pixel binary cross-entropy (only on positive RoI)।
Decoupling: mask loss only on ground-truth class — class prediction-এর সাথে competition নেই।
৬ · Why decoupling matters
Standard FCN-based segmentation: mask head per-pixel softmax over all class। Class compete।
Mask R-CNN: per-class binary mask। Classification & mask separate task। Each class own mask binary।
Result: mask quality higher, training stable।
৭ · PyTorch-এ Mask R-CNN
import torch
from torchvision.models.detection import maskrcnn_resnet50_fpn
from torchvision.models.detection import MaskRCNN_ResNet50_FPN_Weights
w = MaskRCNN_ResNet50_FPN_Weights.COCO_V1
model = maskrcnn_resnet50_fpn(weights=w)
model.eval()
img = torch.rand(3, 800, 800)
with torch.no_grad():
out = model([img])
det = out[0]
print("Boxes:", det['boxes'].shape) # (N, 4)
print("Labels:", det['labels'].shape) # (N,)
print("Scores:", det['scores'].shape) # (N,)
print("Masks:", det['masks'].shape) # (N, 1, H, W) — float
# Filter & threshold mask
keep = det['scores'] > 0.7
final_masks = det['masks'][keep]
binary_masks = (final_masks > 0.5).squeeze(1)
print("Confident detections with masks:", binary_masks.shape)
৮ · Mask R-CNN extensions
- Cascade Mask R-CNN: multi-stage refinement।
- HTC (Hybrid Task Cascade): task interleaving।
- PointRend: uncertain pixel refine separately।
- Mask2Former: universal segmentation, transformer-based।
৯ · Use cases
- Autonomous driving: per-vehicle, per-pedestrian instance।
- Robotics: object grasping।
- Retail: Amazon Go-style automatic checkout।
- Medical: per-cell, per-lesion analysis।
- Wildlife: animal census।
- AR: virtual try-on, occlusion।
- Bangladesh use: garment defect detect, fish counting।
১০ · Detectron2
- Facebook AI Research-এর library।
- Mask R-CNN, Cascade, PointRend included।
- Modular, well-documented।
- Production-grade।
ভাবনার প্রশ্ন
প্র ০১ Mask R-CNN-এ per-class binary mask — vs FCN-style multi-class softmax mask। Decoupling-এর rationale?
এটি instance segmentation-এর fundamental insight।
FCN-style (semantic):
- Per pixel — softmax over $C$ class।
- Pixel can be only one class।
- Class compete at pixel level।
Mask R-CNN per-class binary:
- $K$ binary mask, one per class।
- Sigmoid (not softmax)।
- Pixel can be multiple class technically।
- RoI-level class decide first।
Why decouple:
- Class prediction independent of mask।
- Mask training simpler — no inter-class compete।
- Per-instance binary easier to learn।
- Empirically: AP 30.3 (decoupled) vs 24.7 (coupled)।
Mask quality reason:
- Coupled: pixel must "compete" — boundary fuzzy।
- Decoupled: per-class focused — boundary sharp।
Inference:
- RoI classify first → predicted class।
- Use that class's mask channel।
- Other class's mask discard।
Memory cost:
- $K$ mask per RoI — bigger output।
- COCO 80 class — 80 × 28 × 28 mask per RoI।
- Acceptable trade-off।
Modern alternative:
- Class-agnostic mask + classification — single mask per RoI।
- Mask2Former — single output mask per query, class via cross-attention।
- Decoupling philosophy persists।
মূল উপলব্ধি: Multi-task neural network — task structure design matters। Decoupling related but distinct tasks often improves both।
প্র ০২ RoI Align bilinear interpolation use করে। Trilinear বা cubic চাইলে আরও accurate হত? Trade-off?
Interpolation choice — sampling theory-এর domain।
Bilinear interpolation:
- 4 nearest neighbor weighted average।
- Linear in each dimension।
- Fast, simple।
- Slightly blurry on sharp edge।
Bicubic alternative:
- 16 neighbor (4×4) cubic spline।
- Sharper edges।
- 4x more compute।
- Can overshoot (halo)।
Lanczos/sinc-based:
- Highest theoretical quality।
- Many neighbor (8x8 to 16x16)।
- Computational expensive।
Empirical Mask R-CNN:
- Bilinear: 30.3 AP_mask।
- Bicubic — marginal improvement, not justifying compute।
- Trilinear (3D feature) — for 3D detection only।
Why bilinear sufficient:
- Feature map already smooth (post-conv)।
- Subsequent conv re-aggregate।
- Sharp edge at output layer (final 1×1 conv)।
Modern alternative:
- Deformable convolution — learnable sampling location।
- Replace static interpolation।
- Used in DCNv2, Deformable DETR।
Hardware acceleration:
- Bilinear — GPU bilinear sampling primitive।
- Cubic — more memory access — slow।
মূল উপলব্ধি: Bilinear "good enough" for feature map। Sub-pixel accuracy bilinear-এ achieve possible। Diminishing return higher-order।
প্র ০৩ Mask R-CNN-এর mask 28×28 fixed। Large object (e.g., entire wall)-এ এই resolution insufficient — কী করব?
এটি Mask R-CNN-এর notable limitation। Large object-এ blocky mask।
Why 28×28:
- RoI Align output 14×14 → upsample 28×28।
- RoI 200×200 image-এ — 28×28 mask = 7x sub-sample।
- RoI 1000×1000 — 28×28 mask = 36x sub-sample।
- Large object — coarse mask।
Solutions:
- Mask resolution increase: 56×56 — slower, marginal gain।
- Refinement post-process: CRF, dense prediction।
- PointRend (২০২০): uncertain pixel-এ point-wise refine — high-res mask।
- Cascade Mask R-CNN: multi-stage refine।
PointRend specifically:
- Initial mask coarse (28×28)।
- Identify "uncertain" pixel (boundary)।
- Sample those — fine prediction।
- Original 28×28 + refinement → high-res mask।
- Effective for large object।
Mask2Former approach:
- Per-pixel mask at full resolution।
- No RoI cropping/resize।
- Memory cost বেশি।
SAM (২০২৩):
- Promptable, full-resolution mask।
- Decoupled from detection।
- Mask R-CNN বাড়ির মাঝারি instance, SAM single-object high-res।
Practical recommendation:
- Small/medium object: Mask R-CNN OK।
- Large object boundary critical: PointRend/Mask2Former।
- Pixel-perfect: SAM with detection prompts।
মূল উপলব্ধি: Architecture trade-off — fixed resolution simple but limit। Modern direction — adaptive/multi-resolution।
প্র ০৪ Bangladesh garment factory defect detection — Mask R-CNN choose কেন? Realtime YOLO + segmentation কোথায় better?
Real production decision। Bangladesh RMG industry — defect detection critical।
Garment defect detection profile:
- Defect type: stain, hole, color, stitch।
- Resolution: high (4K camera typical)।
- Speed: 100-1000 garment/min line।
- Accuracy: critical — miss 1% = customer return।
Mask R-CNN strengths:
- Per-defect instance — count exact।
- Pixel-precise boundary — defect area measure।
- Multi-class — defect type categorize।
- High accuracy on small defects।
Mask R-CNN weaknesses:
- Slow — 10 FPS GPU max।
- Mobile deploy hard।
- Heavy GPU requirement।
YOLOv8-seg alternative:
- YOLOv8 — segmentation variant।
- 30+ FPS।
- Mobile-deployable।
- Slightly less accurate।
Decision matrix for Bangladesh garment:
- Primary inspection (high-cam, server): Mask R-CNN — accuracy priority।
- Mobile inspection (worker handheld): YOLOv8-seg।
- Realtime line camera: YOLOv8-seg।
- Final QC desk: Mask R-CNN, slower but accurate।
Pipeline approach:
- Stage 1: YOLO realtime — coarse defect detect।
- Stage 2: Mask R-CNN — flagged image precise analyze।
- Hybrid speed + accuracy।
Bangladesh implementation:
- BGMEA — RMG industry body — AI initiative।
- Local startups (Doer, etc.) — defect detection product।
- Investment: GPU server $5K-20K।
- ROI: defect rate 5% → 1% — millions saved।
Domain considerations:
- Fabric color variability — augment heavy।
- Lighting variability — controlled lightbox।
- New defect emergence — model continuously update।
মূল উপলব্ধি: Production system — single model rare। Hybrid pipeline (fast + accurate) optimal। Bangladesh RMG-এ AI deployment significant business potential।
অনুশীলন
-
Mask R-CNN inference: torchvision-এ pretrained Mask R-CNN load + inference example।
from torchvision.models.detection import maskrcnn_resnet50_fpn m = maskrcnn_resnet50_fpn(weights='DEFAULT').eval() out = m([img_tensor]) masks = (out[0]['masks'] > 0.5).squeeze(1) -
Custom finetune: Mask R-CNN custom 5-class dataset adapt।
from torchvision.models.detection.faster_rcnn import FastRCNNPredictor from torchvision.models.detection.mask_rcnn import MaskRCNNPredictor m = maskrcnn_resnet50_fpn(weights='DEFAULT') n_class = 6 # 5 + background in_features = m.roi_heads.box_predictor.cls_score.in_features m.roi_heads.box_predictor = FastRCNNPredictor(in_features, n_class) in_features_mask = m.roi_heads.mask_predictor.conv5_mask.in_channels m.roi_heads.mask_predictor = MaskRCNNPredictor(in_features_mask, 256, n_class) -
ভাবুন: Mask R-CNN vs YOLOv8-seg vs Mask2Former — কখন কোনটা?
Mask R-CNN — accuracy & flexibility। YOLOv8-seg — realtime speed। Mask2Former — universal segmentation, transformer SOTA, accuracy maximum কিন্তু slow।
আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ
- পাঠ ২৪ · SAM পরবর্তী পাঠFoundation segmentation model।
- পাঠ ২২ · U-Net আগের পাঠSemantic counterpart।
- সব AI Courses দেখুন ABCL TECHসব কোর্স।