IOAI ML Notes Computer VisionDeep Learning

Pre-trained Vision Encoders

Common vision backbones and how to use them for transfer learning.

Syllabus Map


Overview


ResNet

Core idea

How it works

PyTorch access

from torchvision import models

model = models.resnet50(weights=models.ResNet50_Weights.DEFAULT)
model.fc = nn.Linear(model.fc.in_features, num_classes)

Pre-activation ResNets

Key difference

Why it helps

Hypothesis Space (Intuition)

Architecture Comparisons

ResNet vs VGG

DenseNet vs ResNet

Addition vs concatenation

Failure Cases & Tradeoffs

Practical Notes

Widely adopted in modern CNN backbones

Improves deep-network optimization stability


VGG

How it works

PyTorch access

from torchvision import models

model = models.vgg16(weights=models.VGG16_Weights.DEFAULT)
model.classifier[-1] = nn.Linear(model.classifier[-1].in_features, num_classes)

MobileNet

Core idea

How it works

O(K2MNHW)\mathcal{O}(K^2 M N H W) O(K2MHW+MNHW)\mathcal{O}(K^2 M H W + M N H W) standard: K2MNHW\text{standard: } K^2 M N H W depthwise + pointwise: K2MHW+MNHW\text{depthwise + pointwise: } K^2 M H W + M N H W

PyTorch access

from torchvision import models

model = models.mobilenet_v3_small(weights=models.MobileNet_V3_Small_Weights.DEFAULT)
model.classifier[-1] = nn.Linear(model.classifier[-1].in_features, num_classes)

EfficientNet

Core idea

How it works

PyTorch access

from torchvision import models

model = models.efficientnet_b0(weights=models.EfficientNet_B0_Weights.DEFAULT)
model.classifier[-1] = nn.Linear(model.classifier[-1].in_features, num_classes)

ConvNeXt

Core idea

How it works

PyTorch access

from torchvision import models

model = models.convnext_tiny(weights=models.ConvNeXt_Tiny_Weights.DEFAULT)
model.classifier[-1] = nn.Linear(model.classifier[-1].in_features, num_classes)

Vision Transformer (ViT)

Core idea

How it works

N=HWP2N = \frac{H W}{P^2}

PyTorch access

from torchvision import models

model = models.vit_b_16(weights=models.ViT_B_16_Weights.DEFAULT)
model.heads.head = nn.Linear(model.heads.head.in_features, num_classes)

DenseNet

Core idea

How it works

PyTorch access

from torchvision import models

model = models.densenet121(weights=models.DenseNet121_Weights.DEFAULT)
model.classifier = nn.Linear(model.classifier.in_features, num_classes)

Practical Notes

Use for transfer learning.

Freeze early layers when data is limited.

← Back to Blog