ML Notes Computer VisionDeep Learning

Pre-trained Vision Encoders

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

Contents

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