Preprocesar imágenes y audio para el entrenamiento

Entrenamiento eficiente de modelos de IA con PyTorch

Dennis Lee

Data Engineer, Amazon

Preparar imágenes y audio

Aplicación de imagen

  • Clasificación de imágenes para identificar objetos
  • Fragmentación de datos

 

Imagen de una aplicación de detección de objetos con coches en una calle. La app se ejecuta en un teléfono sostenido frente a la escena.

Aplicación de audio

  • Dar órdenes por voz
  • Ejemplo: "Baja el volumen"

 

Imagen de tecnología asistiva basada en audio para que personas con discapacidad visual usen comandos de voz en su teléfono.

Entrenamiento eficiente de modelos de IA con PyTorch

Manipular un conjunto de imágenes de ejemplo

print(dataset)
Dataset({
    features: ['img', 'label'],
    num_rows: 1000
})
print(dataset[0]["img"])
<PIL.JpegImagePlugin.JpegImageFile image mode=RGB size=720x480>
Entrenamiento eficiente de modelos de IA con PyTorch

Estandarizar el formato de imagen

  • Formato de imágenes: ancho, alto
  • Estandariza píxeles: media, desviación estándar
  • AutoImageProcessor carga todos los pasos de preprocesamiento
from transformers import AutoImageProcessor
model = "microsoft/swin-tiny-patch4-window7-224"

image_processor = AutoImageProcessor.from_pretrained(model)
Entrenamiento eficiente de modelos de IA con PyTorch

Estandarizar el formato de imagen

dataset = dataset.map(
    lambda examples: {

"pixel_values": [
image_processor(image, return_tensors="pt").pixel_values for image in examples["img"] ]}, batched=True)
print(dataset)
Dataset({
    features: ['img', 'label', 'pixel_values'],
    num_rows: 1000
})
Entrenamiento eficiente de modelos de IA con PyTorch

Manipular un conjunto de audio de ejemplo

print(dataset)
DatasetDict({
    train: Dataset({

features: ['file', 'audio',
'label'], num_rows: 1000 }), ... })
Entrenamiento eficiente de modelos de IA con PyTorch

Estandarizar el formato de audio

  • Estandariza el número de muestras
  • Frecuencia de muestreo: muestras por segundo
  • Duración máx.: segundos de audio
sampling_rate = 16000  # 16 kHz

max_duration = 1 # 1 second
max_length = sampling_rate * max_duration
print(f"max_length = {max_length:,} samples")
max_length = 16,000 samples
Entrenamiento eficiente de modelos de IA con PyTorch

Estandarizar el formato de audio

from transformers import AutoFeatureExtractor

model = "facebook/wav2vec2-base"
feature_extractor = AutoFeatureExtractor.from_pretrained(model)


def preprocess_function(split_data):
audio_arrays = [x["array"] for x in split_data["audio"]]
inputs = feature_extractor(audio_arrays,
sampling_rate=feature_extractor.sampling_rate, max_length=int(feature_extractor.sampling_rate * max_duration),
truncation=True) return inputs
Entrenamiento eficiente de modelos de IA con PyTorch

Aplicar la función de preprocesamiento

  • Mapea preprocess_function al dataset
  • remove_columns: elimina las columnas audio y file
  • batched: procesa ejemplos del dataset en lotes
dataset = dataset["train"].map(preprocess_function,

remove_columns=["audio", "file"],
batched=True)
Entrenamiento eficiente de modelos de IA con PyTorch

Aplicar la función de preprocesamiento

print(dataset)
DatasetDict({
    train: Dataset({
        features: ['label', 'input_values'],
        num_rows: 1000
    })
Entrenamiento eficiente de modelos de IA con PyTorch

Preparar datos para entrenamiento distribuido

  • DataLoader: prepara datos para carga e iteración durante el entrenamiento
  • accelerator.prepare(): coloca los datos en CPU o GPU según disponibilidad
  • Fragmentación de datos: cada GPU procesa un subconjunto, como repartir porciones de pizza
  • accelerator.prepare() funciona con DataLoaders de PyTorch (torch.utils.data.DataLoader)
from accelerate import Accelerator
from torch.utils.data import DataLoader

dataloader = DataLoader(dataset, batch_size=32, shuffle=True)


accelerator = Accelerator() dataloader = accelerator.prepare(dataloader)
Entrenamiento eficiente de modelos de IA con PyTorch

¡Vamos a practicar!

Entrenamiento eficiente de modelos de IA con PyTorch

Preparing Video For Download...