Entrenamiento de clasificadores de imágenes

Aprendizaje profundo intermedio con PyTorch

Michal Oleszak

Machine Learning Engineer

Revisión del aumento de datos

Imagen de un gato.

Aprendizaje profundo intermedio con PyTorch

Revisión del aumento de datos

Imagen de un gato volteado horizontalmente y girado.

Aprendizaje profundo intermedio con PyTorch

Lo que no se debe aumentar

El limón amarillo y la lima verde son iguales, solo se diferencian en el color.

Aprendizaje profundo intermedio con PyTorch

Lo que no se debe aumentar

El limón amarillo y la lima verde son iguales, solo se diferencian en el color.

Aprendizaje profundo intermedio con PyTorch

Lo que no se debe aumentar

La letra «W» después de girarla verticalmente parece la letra «M».

  • Las ampliaciones pueden afectar a la etiqueta.
  • Que esto resulte confuso depende de la tarea que se esté realizando.
  • ¡Elige siempre las ampliaciones teniendo en cuenta los datos y la tarea!
Aprendizaje profundo intermedio con PyTorch

Ampliaciones para la clasificación de nubes

Una muestra de imágenes de nubes.

  • Rotación aleatoria: expone el modelo a diferentes ángulos de formaciones de nubes.
  • Volteo horizontal: simula diferentes puntos de vista del cielo.
  • Ajuste automático del contraste: simula diferentes condiciones de iluminación.
train_transforms = transforms.Compose([
    transforms.RandomHorizontalFlip(),
    transforms.RandomRotation(45),
    transforms.RandomAutocontrast(),
    transforms.ToTensor(),
    transforms.Resize((128, 128))
])
Aprendizaje profundo intermedio con PyTorch

Pérdida por entropía cruzada

  • Clasificación binaria: pérdida por entropía cruzada binaria (BCE)
  • Clasificación multiclase: pérdida por entropía cruzada
  • criterion = nn.CrossEntropyLoss()
Aprendizaje profundo intermedio con PyTorch

Bucle de entrenamiento del clasificador de imágenes

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()
Aprendizaje profundo intermedio con PyTorch

¡Vamos a practicar!

Aprendizaje profundo intermedio con PyTorch

Preparing Video For Download...