DenseNet ও EfficientNet
এই পাঠে যা শিখবেন
- DenseNet-এর dense connectivity
- EfficientNet-এর compound scaling formula
- MBConv block (mobile inverted bottleneck)
- কোন architecture কখন
১ · DenseNet — feature reuse
Huang et al. (২০১৭, CVPR best paper)। Idea — ResNet-এর skip connection-কে extreme-এ নিয়ে যান।
- ResNet block: $x_l = F(x_{l-1}) + x_{l-1}$।
- DenseNet block: $x_l = F([x_0, x_1, ..., x_{l-1}])$ — সব আগের layer-এর concatenation।
প্রতিটি new layer — সব previous output access। Connection count: $\binom{L+1}{2}$ for $L$-layer dense block।
ResNet — feature add (lossy)। DenseNet — feature concat (lossless)। প্রতি layer পুরো history দেখে। Parameter অনেক কম, কিন্তু memory বেশি।
২ · DenseNet structure
- Dense block: 6-12 layer concat-connected।
- Transition layer: dense block-এর মধ্যে — 1×1 conv (channel reduce) + 2×2 pool।
- Growth rate $k$: প্রতিটি layer $k$ channel add। Typical 12-32।
- Bottleneck: 1×1 → 3×3 within layer।
৩ · DenseNet variants
- DenseNet-121: 8M params। Standard।
- DenseNet-169, 201, 264: deeper variants।
- ResNet-50 (25M, 76% top-1) vs DenseNet-121 (8M, 75% top-1) — 3x kewer params!
৪ · DenseNet-এর benefit
- Parameter efficient: feature reuse — same task fewer parameter।
- Gradient flow: direct connection layer-1 থেকে layer-L।
- Implicit deep supervision: early layer features classifier-এ direct contribute।
- Diversified features: later layer different "context" combine।
৫ · DenseNet-এর সমস্যা
- Memory hungry: activation tensor concat — train memory প্রায় 2x।
- Slower: concatenation overhead, GPU non-friendly।
- Implementation complex: ResNet-এর চেয়ে বেশি bookkeeping।
৬ · EfficientNet — compound scaling
Tan & Le (২০১৯, Google)। Question — যখন আমরা CNN scale করি — depth, width, resolution-এর কোনটা বাড়াই?
Previous practice: arbitrary। ResNet — depth। Wide ResNet — width। বেশিরভাগ — increase image size।
EfficientNet insight: তিনটিকেই balance করতে হবে। Compound coefficient $\phi$ দিয়ে:
- Depth: $d = \alpha^\phi$।
- Width: $w = \beta^\phi$।
- Resolution: $r = \gamma^\phi$।
- Constraint: $\alpha \cdot \beta^2 \cdot \gamma^2 \approx 2$ (FLOPs ~$2^\phi$)।
৭ · EfficientNet B0 → B7
| Variant | Resolution | Params | Top-1 |
|---|---|---|---|
| B0 | 224×224 | 5.3M | 77.1% |
| B1 | 240 | 7.8M | 79.1% |
| B3 | 300 | 12M | 81.6% |
| B5 | 456 | 30M | 83.6% |
| B7 | 600 | 66M | 84.3% |
৮ · MBConv block
EfficientNet-এর core block — Mobile Inverted Bottleneck Convolution (MobileNetV2 origin)।
x → 1×1 conv (expand) → BN → SiLU
→ 3×3 depthwise conv → BN → SiLU
→ SE module (channel attention)
→ 1×1 conv (project) → BN
→ Skip connection
- Inverted bottleneck: ResNet-এ ছোট মাঝখানে; এতে — বড় মাঝখানে।
- Depthwise sep conv: per-channel spatial → 1×1 cross-channel।
- SiLU/Swish: $x \cdot \sigma(x)$ activation।
- SE module: Squeeze-and-Excitation — channel-wise attention।
৯ · PyTorch-এ EfficientNet
import torch
from torchvision.models import efficientnet_b0, EfficientNet_B0_Weights
from torchvision.models import densenet121, DenseNet121_Weights
# EfficientNet-B0
m = efficientnet_b0(weights=EfficientNet_B0_Weights.IMAGENET1K_V1)
m.eval()
x = torch.randn(1, 3, 224, 224)
with torch.no_grad():
y = m(x)
print("EfficientNet-B0 out:", y.shape)
print(f"Params: {sum(p.numel() for p in m.parameters()):,}")
# DenseNet-121
m2 = densenet121(weights=DenseNet121_Weights.IMAGENET1K_V1)
m2.eval()
print(f"DenseNet-121 params: {sum(p.numel() for p in m2.parameters()):,}")
১০ · কোনটা কখন
- ResNet-50: general default, well-supported।
- DenseNet-121: param-constrained transfer learning, medical imaging।
- EfficientNet-B0: mobile, edge — best accuracy/param ratio।
- EfficientNet-B5/B7: server-side max accuracy।
- EfficientNetV2 (২০২১): faster training, slightly different scaling।
ভাবনার প্রশ্ন
প্র ০১ DenseNet "feature reuse" দাবি করে। কিন্তু concat-এর memory cost ResNet-এর চেয়ে অনেক বেশি। কেন তাও পরিগণিত efficient?
এটি apparent paradox — parameter efficient হলেও memory inefficient।
Parameter efficiency:
- DenseNet-121: 8M params।
- ResNet-50: 25M params।
- 3x reduction — same accuracy।
কেন param efficient:
- Each layer growth rate $k$ = 32 channel add। ResNet block 64-256।
- Cumulative concat — feature reuse, no redundant relearning।
- Direct supervision early layers — efficient feature use।
Memory cost:
- Concat — all activation maps preserve।
- Forward pass — concat tensor grow gradually।
- Backward pass — all stored।
- Memory grows quadratically with depth।
Empirical:
- DenseNet-121 train memory ~12 GB (batch 32, 224 input)।
- ResNet-50 same setting ~6 GB।
- 2x memory cost despite 3x fewer params।
Memory optimization tricks:
- Shared concat memory: recompute concat on backward — trade compute for memory।
- Memory-efficient implementation (Pleiss et al., 2017): 4-5x memory reduction।
- Gradient checkpointing: standard technique।
Inference vs training:
- Inference — no backward, memory acceptable।
- Training — main bottleneck।
- Mobile inference — DenseNet OK after pruning।
Why param efficiency matters:
- Disk storage, model download — params।
- Edge device — flash memory limited।
- Quantization-friendly — fewer weights।
Why memory matters:
- Training cost — GPU rental।
- Batch size — too small → noisy gradient।
- Multi-GPU complexity।
মূল উপলব্ধি: "Efficient" depends on metric। Param ≠ memory ≠ compute ≠ latency। Engineer-এর কাজ — task-relevant axis-এ optimize।
প্র ০২ EfficientNet-এর compound scaling formula কোথা থেকে এসেছে — empirical heuristic নাকি theoretical?
মোস্টলি empirical, কিন্তু constraint mathematical।
Search procedure (paper-এর Section 3):
- Baseline EfficientNet-B0 architecture — Neural Architecture Search-এ obtain।
- Fix $\phi = 1$।
- Grid search over $\alpha, \beta, \gamma$।
- Constraint $\alpha \cdot \beta^2 \cdot \gamma^2 \approx 2$ (FLOPs ~$2^\phi$)।
- Best: $\alpha=1.2, \beta=1.1, \gamma=1.15$।
FLOPs constraint origin:
- FLOPs ∝ depth × width² × resolution²।
- Doubling each: depth ×2 → 2x FLOPs। Width ×2 → 4x। Resolution ×2 → 4x।
- $\alpha \cdot \beta^2 \cdot \gamma^2 = 2$ → φ increment = 2x FLOPs।
Why specific values?
- $\alpha=1.2$: depth most beneficial gain per FLOP।
- $\beta=1.1$: width modest scaling।
- $\gamma=1.15$: resolution important কিন্তু compute heavy।
- Hardware-dependent — GPU memory access pattern।
Theoretical limitation:
- FLOPs counter — actual latency-এর approximate।
- Hardware-specific scaling vary।
- Memory bandwidth bottleneck capture করে না।
Empirical alternatives:
- RegNet (Radosavovic et al., 2020) — different scaling rule।
- NFNet — normalization-free, different scaling।
- EfficientNetV2 — fused MBConv early, slightly different।
Practical takeaway:
- "Don't scale only depth" — VGG era mistake।
- Balance > brute force।
- Specific α, β, γ task/architecture-specific।
Bangladesh deployment:
- Mobile — B0/B1, low resolution OK।
- Server — B3/B5।
- B7 expensive — only when accuracy critical।
মূল উপলব্ধি: Compound scaling — discipline of "scale everything together"। Specific numbers empirical, principle universal।
প্র ০৩ MBConv-এ "inverted bottleneck" (expand → process → project) — ResNet-এর reverse। কেন এটি mobile-friendly?
MobileNetV2 (Sandler et al., 2018)-এর key contribution। Counter-intuitive কিন্তু effective।
ResNet bottleneck:
- Wide (256) → narrow (64) → process → wide (256)।
- Skip connection on wide tensor।
- Memory storage — wide tensors।
MobileNet inverted bottleneck:
- Narrow (16) → wide (96 = 6×16) → process → narrow (16)।
- Skip connection on narrow tensor।
- Memory storage — narrow tensors।
Why mobile-friendly:
- Memory efficiency: only narrow activations stored cross-block। Mobile RAM-limited।
- Depthwise spatial: wide expansion-এ depthwise conv (per-channel) — cheap।
- Linear bottleneck: last 1×1 — no ReLU। Avoid information collapse in narrow space।
"Linear bottleneck" theory:
- Narrow space-এ ReLU — many neuron 0।
- Information collapse → manifold corrupt।
- Linear projection preserve manifold।
- Wide intermediate-এ ReLU OK — redundancy থাকে।
Expansion ratio:
- Typical 6× — 16 → 96 → 16।
- Smaller (3-4×) — less compute but accuracy drop।
- Larger (8-10×) — diminishing return।
SE module addition (EfficientNet):
- Squeeze: GAP → 1×1 conv reduce।
- Excitation: 1×1 conv → sigmoid scale।
- Channel attention — useful channel boost।
- ~1% accuracy gain, minimal compute।
Activation choice:
- MobileNetV2: ReLU6 (clip to 6)।
- EfficientNet: SiLU/Swish — $x \cdot \sigma(x)$।
- Smooth — better gradient।
Hardware optimizations:
- Depthwise conv — Apple Neural Engine, Qualcomm Hexagon optimized।
- Inverted bottleneck — fewer memory transfers।
- Compiler-level fusion — depthwise + pointwise fused kernel।
মূল উপলব্ধি: Mobile architecture — different constraint, different shape। Inverted bottleneck — counter-intuitive insight from optimization-aware design।
প্র ০৪ EfficientNet ImageNet-এ champion ছিল ২০১৯-এ। ২০২৬-এ — ConvNeXt, MaxViT, EVA — কেমন আছে EfficientNet-এর position?
Honest assessment — EfficientNet still relevant কিন্তু leadership বদলে গেছে।
EfficientNet (2019):
- B7: 84.3% top-1, 66M params।
- Mobile-friendly variants (Lite)।
- Production-deployed massively।
EfficientNetV2 (2021):
- Fused MBConv early stages — faster training।
- Progressive resizing — gradual resolution increase during training।
- 87.3% top-1 (V2-XL)।
ConvNeXt (2022, Liu et al.):
- "Modernized" ResNet — transformer-inspired tweaks।
- Depthwise 7×7, LayerNorm, GELU, fewer normalization।
- 87.8% top-1 (ConvNeXt-XL)।
- Pure CNN, transformer-competitive।
MaxViT (2022):
- CNN + Transformer hybrid।
- Multi-axis attention।
- 88.5% top-1।
EVA, DINOv2 (2023):
- Self-supervised foundation models।
- Linear probe 89%+।
- Transfer to anything without fine-tune।
EfficientNet-এর current position:
- Mobile: still strong — EfficientNet-Lite series।
- Edge devices: NPU optimized for MBConv।
- Production simplicity: well-tested, documented।
- Transfer learning: ResNet-50/EfficientNet-B0 — most common starting point।
Where EfficientNet is being supplanted:
- Server-side classification — ConvNeXt, MaxViT।
- Object detection backbone — Swin, ConvNeXt।
- Foundation model finetune — DINOv2।
- Multimodal — CLIP-derived ViT।
Bangladesh-এ practical:
- Mobile/Edge — EfficientNet-B0 still best।
- Server — ConvNeXt-Small competitive, similar speed।
- Research — DINOv2 features worth experimenting।
2-year forecast:
- EfficientNet — niche but enduring (mobile)।
- ConvNeXt-style — "modern CNN" default।
- Foundation models — research frontier।
- Mamba/RWKV-vision — disruptor potential।
মূল উপলব্ধি: ML architecture aging cycle — 3-5 year leadership। EfficientNet — graceful aging, still useful for specific contexts। Engineer-এর task: track + adapt।
অনুশীলন
-
Compound calc: EfficientNet B0 → B3 — depth, width, resolution কতটা বাড়ে?
$\phi=3$, so $d=1.2^3=1.73$, $w=1.1^3=1.33$, $r=1.15^3=1.52$। Resolution: 224 × 1.52 ≈ 340 (paper-এ 300)।
-
Pretrained: torchvision থেকে EfficientNet-B0 load করে cat/dog finetune-এর কোড লিখুন।
from torchvision.models import efficientnet_b0 m = efficientnet_b0(weights='DEFAULT') m.classifier[1] = nn.Linear(1280, 2) # binary # train m.classifier only বা full network -
ভাবুন: DenseNet-121 medical imaging-এ popular কেন? ResNet-50-এর তুলনায় কী advantage?
Medical dataset ছোট (1K-10K)। DenseNet param efficient (8M vs 25M) — overfitting কম। Feature reuse subtle distinction (tumor vs benign) capture-এ ভালো। Stanford CheXNet, etc. DenseNet-121-এ।
আরও পড়ুন · ABCL TECH-এ আপনার পরবর্তী পদক্ষেপ
- পাঠ ১৬ · Transfer learning পরবর্তী পাঠ Module 2-এর শেষ — pretrained model practical use।
- পাঠ ১৪ · ResNet আগের পাঠ Skip connection-এর basis।
- পাঠ ২৫ · ViT এগিয়ে CNN-এর alternative — attention-based।
- সব AI Courses দেখুন ABCL TECH Python, ML, DL, NLP, CV, GenAI, RL, MLOps — সব AI কোর্স একসাথে।