Stratégie de fine-tuning
Phase 1 : entraîner uniquement la tête (5 epochs)
model = EfficientNet.from_pretrained('efficientnet-b4')
for param in model.parameters():
param.requires_grad = False
# Unfreeze classifier
for param in model._fc.parameters():
param.requires_grad = True
Phase 2 : dégeler les blocs supérieurs (10 epochs)
for param in model._blocks[-20:].parameters():
param.requires_grad = True
Phase 3 : fine-tune complet avec LR faible (10 epochs)
optimizer = AdamW(model.parameters(), lr=1e-5)
Label smoothing
criterion = nn.CrossEntropyLoss(label_smoothing=0.1)
Réduit la surconfiance — généralement +1-2 % d'accuracy sur les petits jeux de données.