Trenowanie klasyfikatorów obrazów

Głębokie uczenie z PyTorch – poziom średnio zaawansowany

Michal Oleszak

Machine Learning Engineer

Augmentacja danych — przypomnienie

Zdjęcie kota.

Głębokie uczenie z PyTorch – poziom średnio zaawansowany

Augmentacja danych — przypomnienie

Zdjęcie kota odbitego poziomo i obróconego.

Głębokie uczenie z PyTorch – poziom średnio zaawansowany

Czego nie należy augmentować

Żółta cytryna i zielona limonka wyglądają podobnie — różnią się tylko kolorem.

Głębokie uczenie z PyTorch – poziom średnio zaawansowany

Czego nie należy augmentować

Żółta cytryna i zielona limonka wyglądają podobnie — różnią się tylko kolorem.

Głębokie uczenie z PyTorch – poziom średnio zaawansowany

Czego nie należy augmentować

Litera „W" po odbiciu pionowym wygląda jak litera „M".

  • Augmentacje mogą wpływać na etykietę
  • Czy to jest problemem, zależy od zadania
  • Zawsze dobieraj augmentacje z uwzględnieniem danych i zadania!
Głębokie uczenie z PyTorch – poziom średnio zaawansowany

Augmentacje do klasyfikacji chmur

Przykładowe zdjęcia chmur.

  • Losowy obrót: uodparnia model na różne kąty formacji chmur
  • Odbicie poziome: symuluje różne perspektywy nieba
  • Automatyczna korekcja kontrastu: symuluje różne warunki oświetleniowe
train_transforms = transforms.Compose([
    transforms.RandomHorizontalFlip(),
    transforms.RandomRotation(45),
    transforms.RandomAutocontrast(),
    transforms.ToTensor(),
    transforms.Resize((128, 128))
])
Głębokie uczenie z PyTorch – poziom średnio zaawansowany

Strata entropii krzyżowej

  • Klasyfikacja binarna: binarna entropia krzyżowa (BCE)
  • Klasyfikacja wieloklasowa: entropia krzyżowa
  • criterion = nn.CrossEntropyLoss()
Głębokie uczenie z PyTorch – poziom średnio zaawansowany

Pętla treningowa klasyfikatora obrazów

net = Net(num_classes=7)

criterion = nn.CrossEntropyLoss()
optimizer = optim.Adam(net.parameters(), lr=0.001)


for epoch in range(10): for images, labels in dataloader_train: optimizer.zero_grad() outputs = net(images) loss = criterion(outputs, labels) loss.backward() optimizer.step()
Głębokie uczenie z PyTorch – poziom średnio zaawansowany

Czas na ćwiczenia!

Głębokie uczenie z PyTorch – poziom średnio zaawansowany

Preparing Video For Download...