ResNet — skip connection-এর শক্তি
এই পাঠে যা শিখবেন
- Residual learning-এর গাণিতিক intuition
- Basic block ও bottleneck block-এর architecture
- ResNet-18, 34, 50, 101, 152 — কোনটা কখন
- PyTorch-এ ResNet implementation
১ · Degradation problem (revisit)
VGG-এর experiment — 19 layer-এর পরে accuracy কমে। Counter-intuitive — capacity বাড়লে কেন accuracy কম?
He et al.-এর observation: "যদি deeper network-এর extra layer identity হত — তাহলে অন্তত equal accuracy থাকা উচিত। Worse মানে — optimization fail।"
Identity mapping বানানো কঠিন non-linear network-এ। তাই — identity-কে easy default বানিয়ে নিন। "Residual" শেখাতে দিন — পার্থক্যটুকু।
২ · Residual learning
Standard CNN block: input $x$ → $F(x)$ output।
ResNet block:
$$y = F(x) + x$$
- $F(x)$ = Conv-BN-ReLU-Conv-BN। "Residual"।
- $x$ — direct skip connection।
- Output $y$ — both summed।
Key insight: network-এর শেখা কাজ এখন $F(x)$ — যা residual। Identity যদি optimal — $F(x) = 0$ শেখা সহজ (just zero out the weights)।
৩ · Why does it work?
- Gradient flow: backprop-এ skip path-এর gradient direct early layer-এ পৌঁছে। Vanishing gradient problem dissolved।
- Smoother loss landscape: Li et al. (২০১৮) visualization — ResNet loss surface অনেক বেশি smooth।
- Implicit ensemble: $2^n$ paths through n blocks — multiple sub-networks ensemble।
- Easy identity: degradation problem direct address।
৪ · Basic block (ResNet-18, 34)
x → Conv 3×3 → BN → ReLU → Conv 3×3 → BN → (+) → ReLU → output
└─────────── skip ─────────────────────┘
Two 3×3 conv + skip। ResNet-18 ও 34-এ ব্যবহৃত।
৫ · Bottleneck block (ResNet-50, 101, 152)
x → Conv 1×1 (compress) → BN → ReLU
→ Conv 3×3 (process) → BN → ReLU
→ Conv 1×1 (expand) → BN → (+) → ReLU → output
└─────────────── skip ──────────────┘
Inception-এর bottleneck idea: 1×1 → 3×3 → 1×1। Compute সাশ্রয়। 256 → 64 → 64 → 256 typical।
৬ · ResNet variants
| Variant | Block type | Params | Top-1 |
|---|---|---|---|
| ResNet-18 | Basic | 11.7M | 69.8% |
| ResNet-34 | Basic | 21.8M | 73.3% |
| ResNet-50 | Bottleneck | 25.6M | 76.1% |
| ResNet-101 | Bottleneck | 44.5M | 77.4% |
| ResNet-152 | Bottleneck | 60.2M | 78.3% |
৭ · PyTorch-এ ResNet block
import torch
import torch.nn as nn
class BasicBlock(nn.Module):
def __init__(self, ch):
super().__init__()
self.conv1 = nn.Conv2d(ch, ch, 3, padding=1, bias=False)
self.bn1 = nn.BatchNorm2d(ch)
self.conv2 = nn.Conv2d(ch, ch, 3, padding=1, bias=False)
self.bn2 = nn.BatchNorm2d(ch)
self.relu = nn.ReLU(inplace=True)
def forward(self, x):
identity = x
out = self.relu(self.bn1(self.conv1(x)))
out = self.bn2(self.conv2(out))
out = out + identity # residual add
return self.relu(out)
block = BasicBlock(64)
x = torch.randn(1, 64, 56, 56)
y = block(x)
print("In:", x.shape, "Out:", y.shape)
# Pretrained ResNet-50
from torchvision.models import resnet50, ResNet50_Weights
m = resnet50(weights=ResNet50_Weights.IMAGENET1K_V2)
n = sum(p.numel() for p in m.parameters())
print(f"ResNet-50 params: {n:,}") # ~25.5M
out + identity — মাত্র এই একটি line CV-কে বদলে দিয়েছে। torchvision-এর ResNet-50 — ImageNet pretrained, transfer learning-এর gold standard।
৮ · ResNet-এর variants
- ResNet v2 (২০১৬, He et al.): pre-activation — BN-ReLU আগে, conv পরে। Slightly better।
- ResNeXt (২০১৭): grouped convolution। 32-group, similar params, +1% accuracy।
- Wide ResNet: deep-এর বদলে wider — 50-layer wider better than 152 thin।
- Squeeze-and-Excitation ResNet (SENet): channel attention add। ImageNet 2017 winner।
৯ · Modern uses
- Object detection: Faster R-CNN, Mask R-CNN — ResNet-50/101 backbone।
- Segmentation: FCN, DeepLab, U-Net++ — ResNet encoder।
- Pose estimation: HRNet — ResNet-derived।
- Self-supervised: MoCo, SimCLR, BYOL — ResNet-50 backbone।
- Medical: chest X-ray, retinal — ResNet-50 transfer learning।
- Style transfer: ResNet feature also use।
ভাবনার প্রশ্ন
প্র ০১ ResNet-এর skip connection identity-add। কিন্তু channel mismatch (64 → 128) হলে কী হয়? Spatial size mismatch হলে?
এটি ResNet implementation-এর crucial detail। Naive skip every-block-এ কাজ করে না।
Channel mismatch:
- ResNet-এ stage transition-এ channel double (64 → 128 → 256 → 512)।
- Direct add impossible — different channel count।
- Solution: 1×1 conv on skip path — channel project।
Spatial mismatch:
- Stage transition-এ 2x downsample (stride=2)।
- Skip-ও same downsample চাই।
- Solution: 1×1 stride-2 conv on skip path।
Two skip variants:
# Identity skip (when shapes match)
out = F(x) + x
# Projection skip (when shapes mismatch)
out = F(x) + Conv1x1_stride2(x)
Original paper-এ option (A):
- Zero-padding for extra channels।
- Spatial — every-other element subsample।
- No extra parameter।
- Slightly worse accuracy।
Option (B): Projection only at downsample (default):
- Within-stage skip = identity।
- Between-stage skip = 1×1 conv projection।
- Standard ResNet implementation।
Option (C): Projection always:
- Every block-এ 1×1 projection।
- Marginal accuracy gain।
- Param overhead তুলনামূলক বেশি।
Code structure:
class ResBlock(nn.Module):
def __init__(self, in_ch, out_ch, stride=1):
super().__init__()
self.conv1 = nn.Conv2d(in_ch, out_ch, 3, stride, 1)
self.conv2 = nn.Conv2d(out_ch, out_ch, 3, 1, 1)
# Projection skip if needed
if stride != 1 or in_ch != out_ch:
self.skip = nn.Conv2d(in_ch, out_ch, 1, stride)
else:
self.skip = nn.Identity()
Pre-activation vs post-activation:
- Original: Conv-BN-ReLU-Conv-BN + skip → ReLU।
- v2: BN-ReLU-Conv-BN-ReLU-Conv + skip।
- v2 — gradient flow better, slightly higher accuracy।
Modern implementations:
- torchvision ResNet — option (B)।
- Timm library — multiple variants।
- Custom paper — task-specific tweaks।
মূল উপলব্ধি: "Skip connection trivial" misconception। Implementation-এ subtle, performance impact noticeable। Engineering attention to detail।
প্র ০২ "Implicit ensemble" hypothesis — ResNet-কে $2^n$ paths-এর ensemble বলে দেখা যায়। এই interpretation মাথায় কী implication?
Veit et al. (২০১৬, NeurIPS) — "Residual Networks Behave Like Ensembles"। সর্বাধিক influential interpretation।
Path count:
- Each ResNet block — দু'টি option: take F(x) ও skip-only।
- $n$ blocks → $2^n$ unique paths।
- ResNet-152 — $2^{50}+$ paths!
Empirical evidence:
- Random block skip — accuracy gentle drop।
- VGG block skip — catastrophic drop।
- ResNet — robust to layer ablation।
Length distribution of effective paths:
- Path length distribution — binomial।
- Most paths length n/2 (15-25 for ResNet-50)।
- Very short ও very long paths rare।
- Effective depth অনেক কম than nominal depth।
Implications:
- Vanishing gradient: short path-এ direct gradient — primary value।
- Stochastic depth: randomly skip block during training (DropPath)। Same intuition।
- Layer pruning: some block remove without breaking — production-এ smaller model।
Stochastic Depth (Huang et al., 2016):
- Training-এ 50% probability skip a block।
- Inference-এ — সব block।
- Acts as regularization + ensemble।
- Train ResNet-1202!
Modern extension:
- DropPath: ConvNeXt, Swin-এ standard।
- RegNetY: path-level regularization।
- NFNet: Normalizer-Free + scaled residual।
Theoretical depth:
- Greff et al. — "highway/ResNet performs iterative refinement"।
- Each block — small refinement to running representation।
- Different from "deep abstraction" classical view।
Counter-evidence (Wu et al., 2018):
- ResNet-152 reduce করে depth — accuracy drops।
- "Pure ensemble" view incomplete।
- Block-level interaction matters।
মূল উপলব্ধি: Network-এর behavior often defies architectural intent। ResNet "deep" শোনায় কিন্তু "ensemble" আচরণ। Empirical understanding-ই ground truth।
প্র ০৩ ResNet-152 ImageNet-এ 78%। ResNet-200, 1000 — কেন popular না? Diminishing returns কোথায়?
এটি architecture scaling-এর fundamental observation।
ResNet depth vs accuracy:
- ResNet-18: 70%।
- ResNet-34: 73% (+3%)।
- ResNet-50: 76% (+3%)।
- ResNet-101: 77% (+1%)।
- ResNet-152: 78% (+1%)।
- ResNet-200: 78.3% (+0.3%)।
- ResNet-1001 (cifar): saturate।
Diminishing returns:
- Accuracy gain per layer halves with depth।
- Compute doubles, accuracy 0.3% gain — bad trade।
- Overfitting concern at extreme depth।
Why deeper not always better:
- Information bottleneck: early feature already rich।
- Optimization difficulty: long path more local minima।
- Compute/memory: training time prohibitive।
- Inductive bias mismatch: very deep — task-specific need vary।
Better strategies than depth-only:
- Width: Wide ResNet — same depth, wider channel।
- Resolution: bigger input image।
- Group conv: ResNeXt — same params, better capacity।
- Attention: SE blocks — channel attention।
- Compound scaling: EfficientNet — depth + width + resolution balanced।
EfficientNet-B7 (২০১৯):
- Depth 813 layer equivalent (compound scaled)।
- 84% top-1 — ResNet-152 (78%) থেকে অনেক ভালো।
- Same FLOPs, different distribution।
Modern era:
- "Deeper" ছেড়ে — "wider" বা "smarter" approach।
- ConvNeXt: simple but tuned blocks।
- Vision Transformer: attention based — different scaling।
Production reality:
- ResNet-50 — most production deployment।
- ResNet-101/152 — research, accuracy-critical।
- 200+ rare — diminishing return clear।
Bangladesh-এর context:
- GPU limited — ResNet-50 sweet spot।
- Mobile — MobileNet, EfficientNet-B0।
- Server with budget — ResNet-101 good।
মূল উপলব্ধি: "Depth = capacity" — partial truth। Smart architecture trumps brute depth। ResNet's contribution — depth possible, কিন্তু pursue carefully।
প্র ০৪ Vision Transformer ResNet-কে replace করতে ক্রমশ পারছে। ২০২৬-এ ResNet-এর role কোথায়? "Legacy" নাকি "essential"?
এটি ২০২৬-এ active debate। Honest assessment — both/and rather than either/or।
ResNet still essential:
- Mobile/edge: CNN inductive bias, fast inference।
- Small dataset: ResNet pretrain transfers ভাল। ViT অনেক data চাই।
- Detection: Faster R-CNN, YOLO — ResNet backbone dominant।
- Medical imaging: regulatory acceptance, interpretability।
- Industrial systems: millions of deployed models।
ViT taking over:
- Large-scale image classification: JFT-pretrained ViT outperforms।
- Multimodal: CLIP-style vision-language — ViT default।
- Foundation models: DINOv2, MAE, EVA — ViT।
- Generation: DiT (Diffusion Transformer) — Stable Diffusion 3।
Hybrid approaches winning:
- ConvNeXt: CNN modernized with transformer tricks।
- Swin: Window-based attention — CNN-like locality।
- CoAtNet: Conv early, attention late।
- EfficientFormer: Mobile-optimized hybrid।
Compute landscape:
- ViT — GPU/TPU চাই, batch matters।
- ResNet — CPU runnable, mobile chips optimize।
- Bangladesh deployment — ResNet pragmatic।
Specific use case:
- Image classification (ImageNet-style): ConvNeXt > ViT > ResNet।
- Object detection: ResNet-50 + DINO/RT-DETR competitive।
- Segmentation: Mask2Former (transformer) leading।
- Self-supervised: ViT-MAE dominant।
- Mobile: MobileNetV3, EfficientNet (CNN)।
Future trajectory (5-year):
- ResNet-50 — likely declining but persistent।
- ConvNeXt-style updated CNN — surviving।
- ViT — continuing growth in foundation model space।
- New paradigms (Mamba, RWKV-vision) — potential disruption।
Skill investment recommendation:
- Master ResNet — historical foundation, current production।
- Master ViT — future-proof।
- Understand hybrid — most practical work।
- Don't bet on either alone।
মূল উপলব্ধি: Architecture-এ "winner takes all" rare। ResNet — Like SQL among databases — old, ubiquitous, still essential despite newer alternatives। Engineer-এর pragmatism: tool-fluent across paradigms।
অনুশীলন
-
Block params: ResNet-50 bottleneck (in=256, mid=64, out=256) — total params (BN ignored)?
$256 \times 64 + 64 \times 9 \times 64 + 64 \times 256 = 16{,}384 + 36{,}864 + 16{,}384 = 69{,}632$ ~70K।
-
Transfer learning: Pretrained ResNet-50 দিয়ে binary classification (cat/dog) — last layer modify।
m = resnet50(weights='DEFAULT') # Freeze all except last for p in m.parameters(): p.requires_grad = False m.fc = nn.Linear(2048, 2) # binary head # Now train m.fc only -
ভাবুন: ResNet-এ skip connection-এর বদলে concatenation (DenseNet-style) করলে কী হত?
Channel-wise grow — each block channel double করতে বাধ্য। Memory overhead massive। ResNet add-এ — channel constant। DenseNet feature reuse-এ better (parameter কম)। Trade-off ভিন্ন।
আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ
- পাঠ ১৫ · DenseNet ও EfficientNet পরবর্তী পাঠ ResNet-এর successor — feature reuse ও compound scaling।
- পাঠ ১৩ · Inception আগের পাঠ Width-এর approach।
- পাঠ ১৬ · Transfer learning এগিয়ে ResNet pretrained ব্যবহার-এর practical।
- সব AI Courses দেখুন ABCL TECH Python, ML, DL, NLP, CV, GenAI, RL, MLOps — সব AI কোর্স একসাথে।