Робота з попередньо натренованими моделями

Глибоке навчання для зображень із PyTorch

Michal Oleszak

Machine Learning Engineer

Використання попередньо натренованих моделей

  • Навчання моделей з нуля:

    • Довгий процес
    • Потрібно багато даних
  • Попередньо натреновані моделі — моделі, уже навчені на завданні

    • Можна одразу використовувати для нового завдання
    • Потребують адаптації до нового завдання (transfer learning)
  • Кроки для використання попередньо натренованих моделей:

    • Збереження й завантаження моделей локально
    • Завантаження моделей torchvision
Глибоке навчання для зображень із PyTorch

Збереження повної моделі PyTorch

  • torch.save()
  • Розширення файлів моделі: .pt або .pth
  • Збережіть ваги моделі через .state_dict()
    torch.save(model.state_dict(), "BinaryCNN.pth")
    
Глибоке навчання для зображень із PyTorch

Завантаження моделей PyTorch

  • Створіть нову модель

    new_model = BinaryCNN()
    
  • Завантажте збережені параметри

    new_model.load_state_dict(torch.load('BinaryCNN.pth'))
    
Глибоке навчання для зображень із PyTorch

Завантаження моделей torchvision

from torchvision.models import (
    resnet18, ResNet18_Weights
)


weights = ResNet18_Weights.DEFAULT
model = resnet18(weights=weights)
transforms = weights.transforms()
  • Імпортуйте архітектуру resnet і ваги
  • Витягніть ваги
  • Створіть модель, передавши їй ваги
  • Збережіть потрібні перетворення даних
Глибоке навчання для зображень із PyTorch

Підготовка нових вхідних зображень

from PIL import Image

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

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

 

зображення кота

  • Завантажте зображення
  • Перетворіть зображення
  • Змініть форму зображення
Глибоке навчання для зображень із PyTorch

Генерування нового передбачення

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
  • Режим оцінювання для інференсу
  • Вимкніть градієнти
  • Передайте зображення в модель і приберіть розмір пакета
  • Застосуйте softmax
  • Оберіть клас з найбільшою ймовірністю та отримайте його індекс
  • Співвіднесіть індекс класу з міткою
  • Виведіть мітку класу
Глибоке навчання для зображень із PyTorch

Давайте потренуємось

Глибоке навчання для зображень із PyTorch

Preparing Video For Download...