Entraîner des classificateurs d'images

Apprentissage profond intermédiaire avec PyTorch

Michal Oleszak

Machine Learning Engineer

Retour sur l'augmentation des données

Image d'un chat.

Apprentissage profond intermédiaire avec PyTorch

Retour sur l'augmentation des données

Image d'un chat retournée horizontalement et pivotée.

Apprentissage profond intermédiaire avec PyTorch

Ce qu'il ne faut pas augmenter

Un citron jaune et une lime verte se ressemblent, ne diffèrent que par la couleur.

Apprentissage profond intermédiaire avec PyTorch

Ce qu'il ne faut pas augmenter

Un citron jaune et une lime verte se ressemblent, ne diffèrent que par la couleur.

Apprentissage profond intermédiaire avec PyTorch

Ce qu'il ne faut pas augmenter

La lettre « W » après un retournement vertical ressemble à la lettre « M ».

  • Les augmentations peuvent influer sur l'étiquette
  • Le caractère ambigu dépend de la tâche
  • Choisissez toujours les augmentations selon les données et la tâche !
Apprentissage profond intermédiaire avec PyTorch

Augmentations pour classifier les nuages

Un échantillon de photos de nuages.

  • Rotation aléatoire : exposer le modèle à divers angles de formations nuageuses
  • Retournement horizontal : simuler différents points de vue du ciel
  • Ajustement auto du contraste : simuler diverses conditions d'éclairage
train_transforms = transforms.Compose([
    transforms.RandomHorizontalFlip(),
    transforms.RandomRotation(45),
    transforms.RandomAutocontrast(),
    transforms.ToTensor(),
    transforms.Resize((128, 128))
])
Apprentissage profond intermédiaire avec PyTorch

Perte d'entropie croisée

  • Classification binaire : perte d'entropie croisée binaire (BCE)
  • Classification multi-classe : perte d'entropie croisée
  • criterion = nn.CrossEntropyLoss()
Apprentissage profond intermédiaire avec PyTorch

Boucle d'entraînement du classificateur d'images

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()
Apprentissage profond intermédiaire avec PyTorch

Passons à la pratique !

Apprentissage profond intermédiaire avec PyTorch

Preparing Video For Download...