Chapter 44
Vision Transformers
Vision Transformers
🖼️ Image-ও Token হতে পারে
Vision Transformer (ViT) ছবিকে ছোট ছোট patch-এ ভেঙে token হিসেবে দেখে — তারপর NLP Transformer-এর মতই self-attention চালায়। CNN-এর বিকল্প হিসেবে SOTA পারফরম্যান্স।
ViT-এর মূল ধাপ
- Image → 16×16 patches → flatten।
- Linear projection → patch embedding।
- Positional embedding + [CLS] token যোগ।
- Standard Transformer Encoder stack।
- [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 কেন গুরুত্বপূর্ণ।