Práce s předtrénovanými modely

Deep Learning pro obrázky s PyTorchem

Michal Oleszak

Machine Learning Engineer

Využití předtrénovaných modelů

  • Trénování modelů od základu:

    • Zdlouhavý proces
    • Vyžaduje velké množství dat
  • Předtrénované modely – modely již natrénované na určité úloze

    • Přímo použitelné na nové úlohy
    • Vyžadují přizpůsobení nové úloze (transfer learning)
  • Kroky při využití předtrénovaných modelů:

    • Ukládání a načítání modelů lokálně
    • Stahování modelů z torchvision
Deep Learning pro obrázky s PyTorchem

Ukládání modelu PyTorch

  • torch.save()
  • Přípona modelu: .pt nebo .pth
  • Uložení vah modelu pomocí .state_dict()
    torch.save(model.state_dict(), "BinaryCNN.pth")
    
Deep Learning pro obrázky s PyTorchem

Načítání modelů PyTorch

  • Vytvoření nové instance modelu

    new_model = BinaryCNN()
    
  • Načtení uložených parametrů

    new_model.load_state_dict(torch.load('BinaryCNN.pth'))
    
Deep Learning pro obrázky s PyTorchem

Stahování modelů z torchvision

from torchvision.models import (
    resnet18, ResNet18_Weights
)


weights = ResNet18_Weights.DEFAULT
model = resnet18(weights=weights)
transforms = weights.transforms()
  • Import architektury resnet a vah
  • Extrakce vah
  • Vytvoření instance modelu s vahami
  • Uložení požadovaných datových transformací
Deep Learning pro obrázky s PyTorchem

Příprava nových vstupních obrázků

from PIL import Image

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

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

 

obrázek kočky

  • Načtení obrázku
  • Transformace obrázku
  • Změna tvaru obrázku
Deep Learning pro obrázky s PyTorchem

Generování nové predikce

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
  • Režim vyhodnocení pro inferenci
  • Zakázání gradientů
  • Předání obrázku modelu a odebrání dimenze dávky
  • Aplikace softmaxu
  • Výběr třídy s nejvyšší pravděpodobností a extrakce indexu
  • Mapování indexu třídy na popisek
  • Výpis popisku třídy
Deep Learning pro obrázky s PyTorchem

Pojďme procvičovat!

Deep Learning pro obrázky s PyTorchem

Preparing Video For Download...