Chapter 44

Vision Transformers

Vision Transformers
🖼️ Image-ও Token হতে পারে
Vision Transformer (ViT) ছবিকে ছোট ছোট patch-এ ভেঙে token হিসেবে দেখে — তারপর NLP Transformer-এর মতই self-attention চালায়। CNN-এর বিকল্প হিসেবে SOTA পারফরম্যান্স।

ViT-এর মূল ধাপ

  1. Image → 16×16 patches → flatten।
  2. Linear projection → patch embedding।
  3. Positional embedding + [CLS] token যোগ।
  4. Standard Transformer Encoder stack।
  5. [CLS] embedding → MLP head → class।

PyTorch (timm) দিয়ে ViT

import timm, torch
model = timm.create_model('vit_base_patch16_224', pretrained=True, num_classes=10)
x = torch.randn(1, 3, 224, 224)
print(model(x).shape)  # [1,10]

ViT vs CNN

  • CNN: built-in locality, কম data-তেও ভালো।
  • ViT: global attention, বেশি data দরকার (JFT-300M)।
  • Hybrid (Swin, ConvNeXt) — সেরা of both worlds।

Swin Transformer

Shifted window attention — local + hierarchical, detection/segmentation-এ SOTA।

DeiT — কম data-তে ViT

Distillation token দিয়ে CNN teacher থেকে শেখে — ImageNet-1K-তেই ভালো।

💡 কখন ViT ব্যবহার করবেন
বড় dataset বা pretrained checkpoint থাকলে ViT/Swin চমৎকার। ছোট dataset-এ EfficientNet/ResNet সাধারণত safer pick।

সারসংক্ষেপ

✨ এই অধ্যায়ে যা শিখলাম
  • ViT = patches as tokens + Transformer।
  • Swin/DeiT — practical improvements।
  • Data scale ও pretraining কেন গুরুত্বপূর্ণ।