Lucrul cu modele pre-antrenate

Deep Learning pentru imagini cu PyTorch

Michal Oleszak

Machine Learning Engineer

Utilizarea modelelor pre-antrenate

  • Antrenarea modelelor de la zero:

    • Proces îndelungat
    • Necesită multe date
  • Modele pre-antrenate - modele deja antrenate pe o sarcină

    • Reutilizabile direct pe o sarcină nouă
    • Necesită ajustare la noua sarcină (transfer learning)
  • Pași pentru utilizarea modelelor pre-antrenate:

    • Salvarea și încărcarea modelelor local
    • Descărcarea modelelor torchvision
Deep Learning pentru imagini cu PyTorch

Salvarea unui model PyTorch complet

  • torch.save()
  • Extensie model: .pt sau .pth
  • Salvați ponderile modelului cu .state_dict()
    torch.save(model.state_dict(), "BinaryCNN.pth")
    
Deep Learning pentru imagini cu PyTorch

Încărcarea modelelor PyTorch

  • Instanțiați un model nou

    new_model = BinaryCNN()
    
  • Încărcați parametrii salvați

    new_model.load_state_dict(torch.load('BinaryCNN.pth'))
    
Deep Learning pentru imagini cu PyTorch

Descărcarea modelelor torchvision

from torchvision.models import (
    resnet18, ResNet18_Weights
)


weights = ResNet18_Weights.DEFAULT
model = resnet18(weights=weights)
transforms = weights.transforms()
  • Importați arhitectura și ponderile resnet
  • Extrageți ponderile
  • Instanțiați un model cu ponderi
  • Stocați transformările de date necesare
Deep Learning pentru imagini cu PyTorch

Pregătirea imaginilor noi de intrare

from PIL import Image

image = Image.open("cat013.jpg")

image_tensor = transform(image)
image_reshaped = image_tensors.unsqueeze(0)

 

imagine pisică

  • Încărcați imaginea
  • Transformați imaginea
  • Remodelați imaginea
Deep Learning pentru imagini cu PyTorch

Generarea unei predicții noi

model.eval()


with torch.no_grad():
pred = model(image_reshaped).squeeze(0)
pred_cls = pred.softmax(0)
cls_id = pred_cls.argmax().item()
cls_name = weights.meta["categories"][cls_id]
print(cls_name)
Egyptian cat
  • Mod de evaluare pentru inferență
  • Dezactivați gradienții
  • Treceți imaginea prin model și eliminați dimensiunea de lot
  • Aplicați softmax
  • Selectați clasa cu probabilitate maximă și extrageți indexul
  • Mapați indexul clasei la etichetă
  • Afișați eticheta clasei
Deep Learning pentru imagini cu PyTorch

Să exersăm!

Deep Learning pentru imagini cu PyTorch

Preparing Video For Download...