Why transfer learning is the default
A pretrained backbone has already learned 'how images work' from millions of examples. Your downstream task — say, classify 7 species of bird — has maybe 5000 labeled examples. Training a CNN from scratch on 5000 images would overfit catastrophically. Transfer learning lets you reuse the backbone's understanding and just train a small head on your task.
Three flavors: frozen backbone (only train the head; cheapest, often surprisingly competitive), full fine-tune (train everything; best accuracy, more compute), partial unfreeze (train head + last few layers; middle ground).
The lr trick for fine-tuning
For full fine-tuning, use a much smaller learning rate than you would for from-scratch training (1e-4 or 1e-5 instead of 1e-3). Optionally use a higher learning rate for the new head than the pretrained backbone — the head starts random and needs more updates than the backbone needs to adjust.
The data preprocessing match
Match the preprocessing the backbone was trained with. ImageNet pretrained models expect specific normalization (mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]) and a specific input size (usually 224×224). torchvision exposes the right transforms via weights.transforms() — use that, don't reinvent.