Arbeta med förtränade modeller

Djupinlärning för bilder med PyTorch

Michal Oleszak

Machine Learning Engineer

Använda förtränade modeller

  • Träna modeller från grunden:

    • Tidskrävande process
    • Kräver stora mängder data
  • Förtränade modeller – modeller redan tränade på en uppgift

    • Direkt återanvändbara på en ny uppgift
    • Kräver anpassning till den nya uppgiften (transferlärning)
  • Steg för att använda förtränade modeller:

    • Spara och ladda modeller lokalt
    • Ladda ned torchvision-modeller
Djupinlärning för bilder med PyTorch

Spara en fullständig PyTorch-modell

  • torch.save()
  • Modelltillägg: .pt eller .pth
  • Spara modellvikter med .state_dict()
    torch.save(model.state_dict(), "BinaryCNN.pth")
    
Djupinlärning för bilder med PyTorch

Ladda PyTorch-modeller

  • Skapa en ny modellinstans

    new_model = BinaryCNN()
    
  • Ladda sparade parametrar

    new_model.load_state_dict(torch.load('BinaryCNN.pth'))
    
Djupinlärning för bilder med PyTorch

Ladda ned torchvision-modeller

from torchvision.models import (
    resnet18, ResNet18_Weights
)


weights = ResNet18_Weights.DEFAULT
model = resnet18(weights=weights)
transforms = weights.transforms()
  • Importera resnet-arkitektur och vikter
  • Extrahera vikter
  • Skapa en modellinstans med vikterna
  • Lagra nödvändiga datatransformeringar
Djupinlärning för bilder med PyTorch

Förbered nya indatabilder

from PIL import Image

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

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

 

kattbild

  • Ladda bild
  • Transformera bild
  • Forma om bild
Djupinlärning för bilder med PyTorch

Generera en ny prediktion

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
  • Utvärderingsläge för inferens
  • Inaktivera gradienter
  • Skicka bilden till modellen och ta bort batchdimensionen
  • Tillämpa softmax
  • Välj klassen med högst sannolikhet och hämta dess index
  • Mappa klassindex till etikett
  • Skriv ut klassetiketten
Djupinlärning för bilder med PyTorch

Nu kör vi en övning!

Djupinlärning för bilder med PyTorch

Preparing Video For Download...