Swin Transformer
এই পাঠে যা শিখবেন
- Window-based attention
- Shifted window — cross-window connection
- Hierarchical feature build-up
- Detection/segmentation backbone use
১ · ViT-এর সমস্যা detection-এ
Vanilla ViT — same resolution all layer. FPN-style multi-scale support নেই। Detection-এ সমস্যা।
Compute issue: 1024×1024 image, 16 patch → 4096 token. Self-attention $O(N^2)$ — 16M operation.
Swin = ViT + locality + hierarchy. Window-attention compute reduce, shifted window-এ cross-window connection, stage-wise downsample CNN-like.
২ · Window attention
Image-কে non-overlapping windows-এ ভাগ (e.g., 7×7 patch per window). Attention শুধু window-এর ভিতরে compute.
- Standard attention: $O(N^2)$।
- Window attention: $O(N \cdot M^2)$ যেখানে $M$ = window size.
- $M$ fixed → linear in $N$।
৩ · Shifted window — connect across
Pure window-attention isolated — windows কখনো communicate করে না।
Shifted window: alternate layer-এ window shift (M/2). নতুন windows previous layers-এর content cross করে।
- Layer 1: regular window.
- Layer 2: shifted window — half-overlap with layer 1.
- Two layer-এর combination — full coverage.
৪ · Hierarchical structure
4 stage, each stage:
- Patch merge (2×2 → 1) — spatial downsample 2x.
- Channel double.
- Multiple Swin block.
Stage progression: $H/4 \times W/4 \times 96 \to H/8 \times W/8 \times 192 \to H/16 \times W/16 \times 384 \to H/32 \times W/32 \times 768$।
ResNet-এর মতো — multi-scale feature naturally available. Detection FPN ready.
৫ · Swin variants
- Swin-T (Tiny): 28M params.
- Swin-S (Small): 50M.
- Swin-B (Base): 88M.
- Swin-L (Large): 197M.
৬ · Swin v2 (২০২২)
- 3 billion parameter version.
- Larger window (24 vs 7).
- Cosine attention — stability.
- Log-spaced relative position bias.
- Higher resolution support.
৭ · PyTorch use
import torch
from torchvision.models import swin_t, Swin_T_Weights
w = Swin_T_Weights.IMAGENET1K_V1
model = swin_t(weights=w)
model.eval()
x = torch.randn(1, 3, 224, 224)
with torch.no_grad():
out = model(x)
print("Output:", out.shape) # (1, 1000)
print(f"Params: {sum(p.numel() for p in model.parameters()):,}") # ~28M
# Multi-scale features (manually extract)
features = []
def hook(m, i, o):
features.append(o)
# Hook stage outputs for FPN-style use
৮ · Use cases
- Object detection: Swin + Mask R-CNN — COCO SOTA.
- Semantic segmentation: Swin + UperNet — ADE20K SOTA.
- Instance segmentation: Mask2Former + Swin.
- Video: Video Swin Transformer.
- Medical: Swin-UNet — 3D segmentation.
৯ · ConvNeXt — CNN strikes back
Liu et al. (২০২২) — "A ConvNet for the 2020s". ResNet-কে modern training trick + ViT design choice দিয়ে modernize. Swin-এর সাথে competitive.
- 7×7 depthwise conv (Swin-এর 7-window equivalent).
- LayerNorm, GELU.
- Inverted bottleneck.
- Pure CNN, no attention.
- Often beats Swin on similar setting.
১০ · Swin vs ConvNeXt vs ViT
| Model | ImageNet | Detection (COCO) | Mobile |
|---|---|---|---|
| ViT-B | 81.8% | N/A direct | Hard |
| Swin-B | 83.5% | 51.9 | Medium |
| ConvNeXt-B | 83.8% | 52.6 | Better |
| EfficientNet-B7 | 84.3% | N/A | Yes |
ভাবনার প্রশ্ন
প্র ০১ Window attention compute reduce, কিন্তু long-range dependency limit. Practical impact কী?
Window-attention trade-off — efficiency vs global context.
ViT global attention:
- Layer 1 — every patch sees every patch.
- Long-range dependency immediate.
- Compute O(N²)।
Swin local attention:
- Layer 1 — patch sees only window (49 patch).
- Long-range dependency build through stages.
- Stage 4 — receptive field eventually covers everything.
- Compute linear.
Effective receptive field:
- Stage 1: 7×7 window.
- Stage 2: shifted + downsample → 14×14 effective.
- Stage 4: 7×7 window-এ 32x downsample = 224×224 effective.
- Full image cover by stage 4.
Practical impact:
- Shape, size, fine-grained — Swin equally good.
- Truly long-range (e.g., scene context cross-half image) — slightly worse than ViT.
- Most CV task — local sufficient.
Mitigation:
- Larger window (Swin v2 — 24×24).
- Global attention layers occasionally.
- Cross-window mechanisms.
Real comparison:
- ImageNet — Swin within 0.5% of ViT.
- Detection — Swin BETTER (multi-scale).
- Segmentation — Swin BETTER.
- Long-range reasoning task — ViT slight edge.
মূল উপলব্ধি: "Global attention always better" — myth. Most vision task local + hierarchy যথেষ্ট। Swin-এর efficiency win.
প্র ০২ Shifted window — implementation-এ tricky. Cyclic shift trick কী, padding/masking কীভাবে?
Shifted window-এর efficient implementation — engineering brilliance.
Naive shift:
- Window positions shift M/2.
- Edge windows partial — pad zero.
- More windows (e.g., 9 instead of 4).
- Compute increase.
Cyclic shift trick:
- Image-কে cyclic shift (top→bottom, left→right wrap).
- Windows now regular grid again.
- Same compute as non-shifted.
- Reverse shift after attention.
Masking:
- Cyclic shift-এ — cross-image-boundary patches mixed.
- Attention-এ mask — invalid pair prevent.
- Mask pre-computed, reuse.
Implementation:
def shift_window(x, shift):
# x: (B, H, W, C)
return torch.roll(x, shifts=(-shift, -shift), dims=(1, 2))
def reverse_shift(x, shift):
return torch.roll(x, shifts=(shift, shift), dims=(1, 2))
# In Swin block
if shift > 0:
x = shift_window(x, shift)
attn = window_attention(x, mask)
x = reverse_shift(attn, shift)
else:
x = window_attention(x)
Mask construction:
- Per window — patches from different "regions" identify.
- Within-region attention OK.
- Cross-region attention masked.
- Once compute, reuse for all forward.
Performance:
- Cyclic + mask — same compute as non-shifted.
- Memory minimal overhead.
- Backward pass also efficient.
Lesson:
- Algorithm correctness ≠ efficient implementation.
- Hardware-aware design crucial.
- Engineering art — research paper-এর underrated component.
মূল উপলব্ধি: Implementation cleverness — Swin-এর success-এর key. "Pretty algorithm" alone insufficient — efficient code matters.
প্র ০৩ Swin detection-এ champion ছিল ২০২১। ২০২৬-এ — DINO-DETR, Mask2Former এ Swin backbone vs full transformer? Trade-off?
Architecture wars-এর latest chapter.
Swin backbone:
- Hierarchical features → FPN compatible.
- Detection head choice flexible.
- Training mature, code well-tested.
- Mask R-CNN, DETR — both works.
ViT backbone (vanilla):
- Single-scale — detection awkward.
- Modify (e.g., ViTDet) make work.
- Self-supervised pretrain (MAE) very strong.
DINO-DETR + Swin:
- Swin backbone + DETR head.
- COCO 63.3 mAP — top performer.
- Proven combination.
EVA-02 + Mask2Former:
- EVA pretrained ViT.
- Mask2Former head.
- Slightly better than Swin equivalent.
ConvNeXt + DINO:
- Pure CNN backbone with modern training.
- Mobile-friendlier.
- Similar detection accuracy.
Compute trade-off:
- Swin — moderate compute.
- ViT-MAE — slightly more.
- EVA — heavy.
- ConvNeXt — efficient.
Production recommendation 2026:
- SOTA accuracy: EVA-02 + Mask2Former.
- Best speed/accuracy: Swin-B + DINO-DETR.
- Mobile: ConvNeXt-Tiny + YOLO.
- Realtime: RT-DETR (Swin/ResNet variants).
Bangladesh practical:
- GPU-rich research — EVA-02.
- Production server — Swin-B.
- Edge — ConvNeXt-Tiny.
মূল উপলব্ধি: "Best architecture" task + compute + ecosystem-dependent. Swin still strong, ViT/CNN/hybrid-এর mix — modern reality.
প্র ০৪ Swin v2 (২০২২) 3B params — vision foundation model. Trillion-parameter vision আছে কি? Future direction?
Vision scaling — NLP-এর pace follow করছে।
Vision model size timeline:
- ২০১২ AlexNet: 60M.
- ২০১৭ ResNeXt-101: 84M.
- ২০১৯ EfficientNet-B7: 66M.
- ২০২০ ViT-Huge: 632M.
- ২০২২ Swin-V2-3B: 3B.
- ২০২২-২০২৩ ViT-22B (Google): 22B.
- ২০২৩ EVA-02: 1B.
- ২০২৪ DINOv2: ~1B.
Compared to LLM:
- GPT-3: 175B.
- GPT-4: speculatively 1T+.
- Llama-3 405B.
- Vision lagging by 100x.
Why slower scaling vision:
- Image data scarcer than text (curated).
- Cost — each image 100x text-bytes.
- Pretraining objective less clear (MAE vs DINO vs supervised).
- Less commercial pressure.
Multimodal era:
- Vision + language combine — GPT-4V, Gemini.
- Vision encoder typically smaller (1-10B).
- Most "intelligence" in language part.
Where pure vision scale:
- Medical imaging — DINOv2 + finetune.
- Satellite/remote sensing — billion-scale.
- Industrial — task-specific large model.
Future trends:
- Multimodal native (image + video + text + audio).
- Vision-language pretraining dominant.
- Pure vision foundation model role narrow but persistent.
Bangladesh implication:
- Train such model impossible locally.
- Foundation model API (Anthropic, OpenAI) leverage.
- Local fine-tune (LoRA) only realistic option.
- Open foundation model (DINOv2, Llama) preferred.
মূল উপলব্ধি: Vision foundation model age dawning. Bangladesh — adapter, applier, evaluator. Research-funded scaling unattainable, application-layer rich.
অনুশীলন
-
Compute compare: 224×224 image, patch 4 (Swin-T) → token count? Window 7×7 — windows কত?
Token: $(224/4)^2 = 56^2 = 3136$। Window: $56/7 = 8$ per row, $8^2 = 64$ windows.
-
Pretrained: torchvision Swin-T load and inference.
from torchvision.models import swin_t m = swin_t(weights='DEFAULT').eval() out = m(torch.randn(1, 3, 224, 224)) -
ভাবুন: Bangladesh medical 3D MRI segment — Swin-UNet vs U-Net কখন কোনটা?
Small dataset (under 100 volumes) → U-Net. Large multi-hospital dataset (1000+) → Swin-UNet — long-range context capture better.
আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ
- পাঠ ২৭ · CLIP পরবর্তী পাঠVision + language.
- পাঠ ২৫ · Vision Transformer আগের পাঠSwin-এর foundation.
- সব AI Courses দেখুন ABCL TECHসব কোর্স।