사전 학습된 비전 모델 선택지
torchvision은 수십 가지 구조의 사전 학습 가중치를 제공해. 가장 자주 쓰는 모델군은 네 가지야:
- ResNet(resnet18/34/50/101/152): 튼튼한 기본 선택이야. 신뢰할 만하고 구조가 잘 알려져 있으며 CUDA, MPS, CPU에서 모두 빠르게 돌아. 새 작업을 시작할 때 좋은 기준점이야.
- EfficientNet(efficientnet_b0..b7, _v2_*): 정확도와 매개변수 수 사이의 균형이 좋아. 모바일 배포나 대규모 추론처럼 모델 크기가 중요할 때 적합해.
- ConvNeXt(convnext_tiny/small/base/large): ViT와의 성능 격차를 좁힌 현대적인 ConvNet이야. 성능이 강하면서 같은 정확도에서는 ViT보다 빠른 경우가 많아.
- 비전 Transformer(vit_b_16/32, vit_l_16, vit_h_14): Transformer를 이미지에 적용한 구조야. 많은 작업에서 최고 수준의 성능을 내지만 CNN보다 더 많은 데이터를 요구하고 매개변수당 계산도 조금 느려.
구조마다 다른 헤드 교체 방법
분류기 헤드가 있는 위치는 구조마다 달라:
- ResNet:
model.fc = nn.Linear(model.fc.in_features, num_classes) - EfficientNet:
model.classifier[1] = nn.Linear(model.classifier[1].in_features, num_classes) - ConvNeXt:
model.classifier[2] = nn.Linear(model.classifier[2].in_features, num_classes) - ViT:
model.heads.head = nn.Linear(model.heads.head.in_features, num_classes)
먼저 print(model)로 구조를 보고 마지막 선형 계층을 찾아 교체해. 관례가 어느 정도 일정하므로 작은 도우미 함수를 한 번 작성해 재사용할 수 있어.