Praca z wytrenowanymi modelami

Głębokie uczenie dla obrazów z PyTorch

Michal Oleszak

Machine Learning Engineer

Korzystanie z wytrenowanych modeli

  • Trenowanie modeli od podstaw:

    • Długi proces
    • Wymaga dużej ilości danych
  • Wytrenowane modele – modele już wytrenowane na określonym zadaniu

    • Bezpośrednio wielokrotnego użytku w nowych zadaniach
    • Wymagają dostosowania do nowego zadania (transfer learning)
  • Etapy korzystania z wytrenowanych modeli:

    • Zapisywanie i wczytywanie modeli lokalnie
    • Pobieranie modeli torchvision
Głębokie uczenie dla obrazów z PyTorch

Zapisywanie modelu PyTorch

  • torch.save()
  • Rozszerzenie modelu: .pt lub .pth
  • Zapisanie wag modelu za pomocą .state_dict()
    torch.save(model.state_dict(), "BinaryCNN.pth")
    
Głębokie uczenie dla obrazów z PyTorch

Wczytywanie modeli PyTorch

  • Utworzenie nowego modelu

    new_model = BinaryCNN()
    
  • Wczytanie zapisanych parametrów

    new_model.load_state_dict(torch.load('BinaryCNN.pth'))
    
Głębokie uczenie dla obrazów z PyTorch

Pobieranie modeli torchvision

from torchvision.models import (
    resnet18, ResNet18_Weights
)


weights = ResNet18_Weights.DEFAULT
model = resnet18(weights=weights)
transforms = weights.transforms()
  • Import architektury resnet i wag
  • Pobranie wag
  • Utworzenie modelu z przekazanymi wagami
  • Zapisanie wymaganych transformacji danych
Głębokie uczenie dla obrazów z PyTorch

Przygotowanie nowych obrazów wejściowych

from PIL import Image

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

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

 

obraz kota

  • Wczytanie obrazu
  • Transformacja obrazu
  • Zmiana kształtu obrazu
Głębokie uczenie dla obrazów z PyTorch

Generowanie nowej predykcji

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
  • Tryb ewaluacji do inferencji
  • Wyłączenie gradientów
  • Przekazanie obrazu do modelu i usunięcie wymiaru wsadowego
  • Zastosowanie softmax
  • Wybór klasy o najwyższym prawdopodobieństwie i pobranie jej indeksu
  • Mapowanie indeksu klasy na etykietę
  • Wydrukowanie etykiety klasy
Głębokie uczenie dla obrazów z PyTorch

Czas na ćwiczenia!

Głębokie uczenie dla obrazów z PyTorch

Preparing Video For Download...