왜 transfer learning 이 default
Pretrained backbone 이 수백만 example 에서 'image 가 어떻게 작동하는지' 이미 학습. 본인 downstream task — 새 7 종 분류 — 는 5000 라벨 example 정도. From scratch 5000 image 에 CNN train 하면 catastrophically overfit. Transfer learning 이 backbone 의 이해 재사용하고 task 에 small head 만 train 하게 해.
3 가지 맛: frozen backbone (head 만 train, 가장 싸고 자주 surprisingly competitive), full fine-tune (전부 train, best accuracy, more compute), partial unfreeze (head + 마지막 몇 layer train, 중간).
Fine-tuning 의 lr trick
Full fine-tuning 에 from-scratch training 보다 훨씬 작은 learning rate (1e-3 대신 1e-4 또는 1e-5) 사용. 옵션으로 새 head 에 pretrained backbone 보다 높은 learning rate — head 는 random 시작하고 update 더 필요, backbone 은 이미 좋고 큰 update 가 손상.
Data preprocessing match
Backbone 이 train 된 preprocessing 매치. ImageNet pretrained model 은 specific normalization (mean=[0.485, 0.456, 0.406], std=[0.229, 0.224, 0.225]) 와 specific input size (보통 224×224) 기대. torchvision 이 weights.transforms() 통해 올바른 transform 노출 — 그거 써, 다시 발명하지 마.