Manipulación de imágenes con PyTorch

Aprendizaje profundo intermedio con PyTorch

Michal Oleszak

Machine Learning Engineer

Conjunto de datos de nubes

Muestras del conjunto de datos sobre nubes: cinco imágenes que muestran diferentes tipos de nubes.

1 https://www.kaggle.com/competitions/cloud-type-classification2/data
Aprendizaje profundo intermedio con PyTorch

¿Qué es una imagen?

Imagen de una nube con una parte ampliada para que se vean los píxeles.

  • La imagen está compuesta por píxeles («elementos de imagen»).
  • Cada píxel contiene información sobre el color.

  • Imágenes en escala de grises: número entero entre 0 y 255.

    • 30:

Cuadro de color gris

  • Imágenes en color: tres números enteros, uno para cada canal de color (rojo, verde, azul).
    • RGB = (52, 171, 235):

Cuadro azul

Aprendizaje profundo intermedio con PyTorch

Carga de imágenes en PyTorch

Estructura de directorios deseada:

clouds_train

- cumulus
- 75cbf18.jpg - ...
- cumulonimbus - ...
clouds_test
- cumulus - cumulonimbus - ...

 

  • Carpetas principales: clouds_train y clouds_test
  • Dentro de cada carpeta principal: una carpeta por categoría.
  • Dentro de cada carpeta de clase: archivos de imagen.
Aprendizaje profundo intermedio con PyTorch

Carga de imágenes en PyTorch

from torchvision.datasets import ImageFolder
from torchvision import transforms


train_transforms = transforms.Compose([ transforms.ToTensor(), transforms.Resize((128, 128)), ])
dataset_train = ImageFolder( "data/clouds_train", transform=train_transforms, )
  • Define las transformaciones:

    • Analizar a tensor
    • Cambiar el tamaño a 128x128
  • Crear paso de conjunto de datos:

    • Ruta a los datos
    • Transformaciones predefinidas
Aprendizaje profundo intermedio con PyTorch

Visualización de imágenes

dataloader_train = DataLoader(
    dataset_train, 
    shuffle=True, 
    batch_size=1,
)

image, label = next(iter(dataloader_train))
print(image.shape)
torch.Size([1, 3, 128, 128])
image = image.squeeze().permute(1, 2, 0)
print(image.shape)
torch.Size([128, 128, 3])
import matplotlib.pyplot as plt
plt.imshow(image)
plt.show()

Imagen en la nube de plt.show

Aprendizaje profundo intermedio con PyTorch

Aumento de datos

train_transforms = transforms.Compose([

transforms.RandomHorizontalFlip(), transforms.RandomRotation(45),
transforms.ToTensor(), transforms.Resize((128, 128)), ])
dataset_train = ImageFolder( "data/clouds/train", transform=train_transforms, )

Aumento de datos Generación de más datos mediante la aplicación de transformaciones aleatorias a imágenes originales.

  • Aumenta el tamaño y la diversidad del conjunto de entrenamiento.
  • Mejorar la solidez del modelo
  • Reducir el sobreajuste

Tres imágenes de nubes que muestran la transformación de rotación.

Aprendizaje profundo intermedio con PyTorch

¡Vamos a practicar!

Aprendizaje profundo intermedio con PyTorch

Preparing Video For Download...