Vision Transformer (ViT)
এই পাঠে যা শিখবেন
- ViT architecture step-by-step
- Patch embedding, position embedding
- Self-attention CV-তে
- ViT vs CNN trade-off
১ · ViT-এর big idea
Transformer (২০১৭) NLP-এ revolution। ২০২০ পর্যন্ত CV-তে CNN dominant। Dosovitskiy et al. — "We do not need convolution at all"।
Approach: image-কে non-overlapping patches-এ ভাগ → প্রতিটি patch = "word"। Standard NLP transformer apply।
Image = sequence of patches। Patch = "visual word"। Transformer-এর self-attention all patch-pair relationship modeling — global context থেকেই।
২ · ViT pipeline
- Patch: 224×224 image → 14×14 = 196 patch (16×16 each)।
- Linear embed: each patch flatten (768-D) → linear → embedding।
- Position embed: learnable position vector add।
- CLS token: additional learnable token prepend (classification proxy)।
- Transformer encoder: 12 layer (ViT-Base) — multi-head attention + FFN।
- Classification: CLS token-এর final output → MLP head → class।
৩ · ViT variants
| Variant | Layers | Heads | Embed | Params |
|---|---|---|---|---|
| ViT-Base | 12 | 12 | 768 | 86M |
| ViT-Large | 24 | 16 | 1024 | 307M |
| ViT-Huge | 32 | 16 | 1280 | 632M |
৪ · Self-attention quick recap
Each patch query, key, value vector compute। Attention score:
$$\text{Attention}(Q, K, V) = \text{softmax}\left( \frac{Q K^T}{\sqrt{d_k}} \right) V$$
- $Q$: query — "এই patch কী চাইছে?"
- $K$: key — "এই patch কী আছে?"
- $V$: value — "এই patch-এর information"।
- All-to-all comparison।
৫ · Key result — data hungry
ImageNet (1.4M) trained ViT-Base — ResNet-50-এর চেয়ে worse। কিন্তু:
- JFT-300M (300M images, Google internal) — ViT outperforms।
- Reason: CNN-এর inductive bias (locality, translation equivariance) — ViT শিখতে চাই, কিন্তু data-hungry।
- Sufficient data → ViT learn patterns CNN encode-এ।
৬ · Modern improvements
- DeiT (২০২১): data-efficient training tricks, ImageNet-only competitive।
- Swin Transformer (২০২১): windowed local attention, hierarchical।
- MAE (২০২১): masked autoencoder pretrain — self-supervised।
- DINOv2 (২০২৩): 1.4B image self-supervised — SOTA features।
- EVA, BEiT: alternative pretrain strategies।
৭ · Position embedding
Self-attention permutation-invariant — patch order ignore। Position information explicit add:
- Learnable 1D: simple, original ViT।
- Sinusoidal 2D: relative position encode।
- RoPE: rotary position embedding — modern।
৮ · PyTorch-এ ViT
import torch
from torchvision.models import vit_b_16, ViT_B_16_Weights
w = ViT_B_16_Weights.IMAGENET1K_V1
model = vit_b_16(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()):,}") # ~86M
# Inspect patch embedding
print("Conv proj kernel:", model.conv_proj.kernel_size) # (16, 16)
print("Conv proj stride:", model.conv_proj.stride) # (16, 16)
৯ · ViT applications
- Image classification: ImageNet SOTA (with sufficient pretrain)।
- CLIP: ViT image encoder, contrastive language alignment।
- SAM: ViT-H image encoder।
- DINOv2: self-supervised foundation।
- Medical imaging: ViT chest X-ray, retinal।
- Multimodal: ViT + LLM (LLaVA, BLIP)।
১০ · Pros & cons summary
Pros:
- Long-range attention native।
- Scales with data (better than CNN at large data)।
- NLP architecture share — multimodal easy।
- Self-supervised pretrain (MAE, DINO) very effective।
Cons:
- Data-hungry — small data CNN better।
- Quadratic compute in patch count।
- Mobile deploy hard।
- Less interpretable than CNN।
ভাবনার প্রশ্ন
প্র ০১ ViT-এর "patch as word" — patch size 16 কেন? 8 বা 32 কী effect?
Patch size — ViT-এর primary hyperparameter।
16×16 standard:
- 224 image → 196 patch (14×14)। Sequence length manageable।
- Compute O(N²) — N=196 reasonable।
- Most pretrained available।
8×8 (smaller patch):
- 224 image → 784 patch। Sequence 4x longer।
- Compute 16x — slow।
- Better fine-grained detection।
- Used in some medical, satellite।
32×32 (larger patch):
- 224 image → 49 patch. Sequence short।
- Compute 4x faster।
- Coarser features।
- Less common, but used for very large image।
Trade-off:
- Smaller patch = finer detail, more compute।
- Larger patch = coarser, faster।
- Sweet spot 16 — empirically validated।
Variable patch:
- Swin — hierarchical, gradual merge।
- NaViT — variable size, accept any aspect।
মূল উপলব্ধি: Patch size — granularity vs compute। Task-specific tune। 16 reasonable default।
প্র ০২ ViT inductive bias কম — তাই data hungry। Inductive bias কী, CNN-এ কী আছে যা ViT-এ নেই?
Inductive bias = "model's prior assumptions about data structure"। CV-তে critical concept।
CNN inductive bias:
- Locality: nearby pixel related, distant less।
- Translation equivariance: object position-independent feature।
- Hierarchy: low-level → high-level structure।
- Weight sharing: same kernel everywhere।
ViT lack:
- No locality assumption — every patch can attend any।
- Translation equivariance — only via position embedding (data-dependent)।
- Hierarchy — flat (all layer same resolution)।
- No weight sharing across spatial।
Effect with small data:
- CNN — bias correct mostly, data refines।
- ViT — bias must be learned from data।
- 1M image — CNN already good, ViT bad।
- 100M image — ViT learns bias + more, surpasses CNN।
Bias-variance trade-off:
- Strong bias — biased but consistent (CNN)।
- Weak bias — flexible but data-hungry (ViT)।
- Right bias-data match key।
Hybrid attempts:
- Swin — local attention (locality bias)।
- CoAtNet — conv early + attention late।
- Best of both world।
Position embedding role:
- 2D-aware position help inductive bias।
- Random init — completely flexible।
- Sinusoidal — some bias।
মূল উপলব্ধি: "No free lunch"। Bias trade-off। Modern direction — task-appropriate bias inject।
প্র ০৩ MAE (Masked Autoencoder) ViT pretrain — কীভাবে কাজ করে? ImageNet alone ViT competitive কেন এটি দিয়ে?
MAE (He et al., 2021) — ViT-এর "BERT moment"। Self-supervised approach revolutionary।
Idea:
- 75% patch random mask।
- Encoder process visible 25% only।
- Decoder reconstruct full image।
- Loss: MSE reconstruct vs original।
Why effective:
- "Holistic understanding" force — guess hidden from visible।
- Strong pretext task — generic feature emerge।
- Asymmetric design — encoder light (75% miss), decoder heavy।
- Compute-efficient pretrain।
NLP parallel:
- BERT — masked language modeling। Word predict।
- MAE — masked image modeling। Patch predict।
- Same philosophy, different domain।
Key innovations:
- High mask ratio (75%): NLP 15%, vision-এ much higher।
- Asymmetric encoder-decoder: efficient।
- Light decoder discarded post-pretrain: only encoder for downstream।
ImageNet result:
- ViT-Large from scratch ImageNet: 76%।
- ViT-Large MAE pretrain + ImageNet finetune: 85.9%।
- +10% — massive improvement।
Compared to ImageNet supervised pretrain:
- MAE — slightly better।
- Plus: no label needed for pretrain।
- Scales with unlabeled data।
Subsequent extensions:
- VideoMAE: spatiotemporal mask।
- MAE-3D: volumetric medical।
- ConvNeXt-V2: MAE-style for CNN।
- EVA, BEiT-2: related approaches।
DINOv2:
- Different self-supervised — distillation-based।
- 1.4B image, ViT-G (1B params)।
- Linear probe ImageNet 86.5%।
- Possibly best vision foundation 2023-2024।
মূল উপলব্ধি: Self-supervised — vision-এ NLP-র parallel। Pretraining recipe = key to ViT-এর dominance। Bangladesh AI — pretrained foundation use, finetune local।
প্র ০৪ ViT mobile-এ inference difficult। Mobile ViT, EfficientFormer — কীভাবে adapt?
Mobile vision — ViT-এর Achilles heel। Active research area।
Why ViT mobile-unfriendly:
- Self-attention $O(N^2)$ — sequence length-এ quadratic।
- 196 patch × 196 attention matrix = 38K compute per layer।
- Mobile NPU ARM-optimized for convolution।
- Memory bandwidth bottleneck।
MobileViT (২০২২, Apple):
- Hybrid: conv early + transformer block intermediate।
- Local attention windows — compute manageable।
- 5M params, similar to MobileNetV3।
- Performance — better than MobileNet।
EfficientFormer (২০২২):
- Hybrid: 4D conv blocks early, transformer late।
- Small-resolution attention (downsampled)।
- 2 ms inference iPhone (real-time)।
FastViT (২০২৩, Apple):
- Replace attention with structural reparameterization।
- Conv at training, simplify at inference।
- iPhone real-time।
NextViT (২০২২):
- Convolution + transformer hybrid block।
- Industry application focus।
EdgeNeXt:
- Split-depth-wise transpose attention।
- Mobile-friendly variations।
Common patterns:
- Conv early (locality)।
- Attention late (semantic)।
- Window-based attention।
- Reduced attention head count।
- Linear/efficient attention।
Bangladesh deployment:
- Low-end Android — pure CNN (MobileNetV3) safer।
- Mid-range — MobileViT, EfficientFormer।
- iPhone — FastViT iOS-optimize।
Quantization:
- ViT FP32 → INT8 — typically 2-3% accuracy drop।
- 4-bit possible with care।
- Distillation help।
মূল উপলব্ধি: Pure ViT mobile-এ rare এখনো। Hybrid future। Bangladesh-এর diverse mobile market — multi-architecture pipeline।
অনুশীলন
-
Patch count: 384×384 image, patch 16 — sequence length?
$(384/16)^2 + 1 = 24^2 + 1 = 577$ (CLS token সহ)।
-
ViT vs ResNet: Same task, same data — কোনটা bigger likely better?
1K image — ResNet। 100K image — close। 10M image — ViT। Pretrained ViT (DINOv2) finetune almost always wins।
-
ভাবুন: Bangla street sign — 200 image। ViT-Base scratch fail করবে — কী fix?
(1) DINOv2 pretrained backbone use। (2) Linear probe বা LoRA finetune। (3) Heavy augment। (4) Alternatively MobileNetV3 simpler but more reliable on small data।
আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ
- পাঠ ২৬ · Swin Transformer পরবর্তী পাঠViT-এর hierarchical successor।
- পাঠ ২৪ · SAM আগের পাঠViT-based foundation।
- পাঠ ২৭ · CLIP এগিয়েViT + language।
- সব AI Courses দেখুন ABCL TECHসব কোর্স।