21. Data augmentation para imágenes

21.1 Introducción

En muchos proyectos de visión por computadora, el dataset disponible no es tan grande ni tan diverso como quisiéramos. Aun cuando el conjunto de imágenes esté bien recolectado y bien etiquetado, puede seguir siendo insuficiente para entrenar un modelo robusto. Aquí aparece una técnica fundamental: el data augmentation.

El data augmentation consiste en generar variantes plausibles de las imágenes de entrenamiento mediante transformaciones controladas. La idea no es inventar datos arbitrarios, sino ampliar la diversidad visual del dataset para que el modelo aprenda a generalizar mejor.

En este tema veremos qué es el augmentation, qué tipos de transformaciones se usan, cuándo ayudan realmente y qué precauciones deben tenerse para no alterar el significado de los datos.

21.2 ¿Qué problema intenta resolver?

Un modelo entrenado con un conjunto limitado puede sobreajustarse fácilmente. Eso significa que aprende demasiado bien las particularidades del entrenamiento, pero falla cuando aparecen variaciones nuevas en imágenes no vistas.

El augmentation ayuda a combatir este problema porque expone al modelo a múltiples versiones del mismo ejemplo:

  • Diferentes orientaciones.
  • Cambios leves de escala.
  • Variaciones de brillo.
  • Pequeños recortes.
  • Ruido razonable.

De este modo, el modelo deja de depender tanto de detalles accidentales y aprende patrones más robustos.

El data augmentation no reemplaza un buen dataset, pero puede hacer que el modelo aproveche mucho mejor el que ya tenemos.

21.3 Intuición general

Imaginemos que queremos entrenar un clasificador de gatos y solo tenemos una imagen de un gato mirando al frente. Si el modelo viera solo esa versión exacta, podría volverse demasiado sensible a esa pose, a esa iluminación o a ese encuadre.

En cambio, si durante el entrenamiento le mostramos versiones rotadas, recortadas, ligeramente más oscuras o reflejadas, aprenderá que el concepto “gato” sigue siendo el mismo aunque cambien ciertos aspectos superficiales.

Esa es la esencia del augmentation: enseñar invariancias y tolerancia a variaciones plausibles.

21.4 Augmentation no es simplemente duplicar imágenes

Duplicar archivos sin cambios no aporta nada. El valor del augmentation está en generar transformaciones útiles y coherentes con el problema. Cada ejemplo aumentado debe seguir representando la misma clase o una versión válida del mismo fenómeno visual.

Por eso el augmentation no es una técnica mecánica. Requiere criterio sobre qué transformaciones son plausibles y cuáles podrían alterar el significado de la imagen.

21.5 Tipos principales de augmentations

De forma general, las transformaciones de augmentation suelen agruparse en varias familias:

  • Geométricas.
  • Fotométricas o cromáticas.
  • Ruido y degradación.
  • Recortes y reencuadres.
  • Combinaciones más avanzadas.

Cada familia ataca un tipo distinto de variación presente en el mundo real.

21.6 Transformaciones geométricas

Las augmentations geométricas modifican la posición, orientación o escala del contenido visual. Algunas de las más comunes son:

  • Rotaciones pequeñas.
  • Traslaciones leves.
  • Escalados.
  • Recortes aleatorios.
  • Flip horizontal.

Estas transformaciones son especialmente útiles cuando el objeto puede aparecer en posiciones u orientaciones variables y eso no cambia su clase.

21.7 Rotaciones

Las rotaciones ayudan a que el modelo sea menos sensible a pequeñas inclinaciones. Son útiles en muchos problemas, pero deben aplicarse con criterio.

Por ejemplo:

  • En clasificación de objetos generales pueden ser muy útiles.
  • En lectura de texto, una rotación fuerte puede volver inválido el ejemplo.
  • En imágenes médicas, cierta orientación puede tener significado clínico.

La pregunta siempre es la misma: ¿una imagen rotada sigue siendo un ejemplo válido de la clase?

21.8 Flip horizontal y vertical

El flip horizontal es una de las augmentations más comunes en visión por computadora. Sirve muy bien cuando el objeto puede aparecer mirando hacia la izquierda o hacia la derecha sin cambiar su identidad.

Sin embargo, no siempre conviene:

  • En texto, un flip horizontal suele invalidar completamente la imagen.
  • En señales de tránsito o símbolos con orientación, puede alterar el significado.
  • En ciertas imágenes médicas, izquierda y derecha pueden no ser intercambiables.

El flip vertical suele ser aún más delicado y menos universalmente válido.

21.9 Recortes aleatorios

Los recortes aleatorios permiten que el modelo aprenda a reconocer el objeto aunque no siempre aparezca centrado exactamente igual. También ayudan a que el sistema no dependa demasiado del fondo.

Pero hay una condición importante: el recorte no debe eliminar por completo la información esencial. Si el objeto desaparece o queda irreconocible, la transformación deja de ser útil.

21.10 Escalado y zoom

Modificar ligeramente la escala enseña al modelo a tolerar objetos más grandes o más pequeños dentro del encuadre. Esto es útil porque en el mundo real la distancia a la cámara cambia constantemente.

Otra vez, el principio es el mismo: el aumento debe simular una variación plausible, no distorsionar artificialmente la semántica del ejemplo.

21.11 Transformaciones fotométricas

Las augmentations fotométricas modifican la apariencia visual sin alterar la geometría. Algunas muy usadas son:

  • Cambios de brillo.
  • Cambios de contraste.
  • Ajustes de saturación.
  • Variaciones de tono.

Estas transformaciones son útiles para que el modelo no dependa demasiado de condiciones exactas de iluminación o color.

21.12 Brillo y contraste

Modificar brillo y contraste ayuda a simular capturas más oscuras, más claras o con distintas condiciones de exposición. Es una de las augmentations más prácticas, porque en muchos entornos reales la iluminación varía considerablemente.

Sin embargo, un ajuste excesivo puede destruir información relevante. Por eso conviene usar rangos moderados y realistas.

21.13 Cambios de color

Variar saturación, tono o balance cromático puede ayudar cuando el color no es un rasgo esencial o cuando el entorno de captura introduce diferencias entre cámaras y condiciones de luz.

Pero también puede ser riesgoso si el color es precisamente la clave del problema. Por ejemplo, si queremos distinguir frutas por color de madurez, alterar demasiado la cromaticidad puede confundir el entrenamiento.

21.14 Ruido y degradación

Otra familia útil consiste en introducir pequeñas degradaciones visuales realistas, por ejemplo:

  • Ruido gaussiano suave.
  • Ligero desenfoque.
  • Compresión moderada.
  • Pequeñas oclusiones.

Estas augmentations ayudan al modelo a no depender de imágenes perfectas, algo especialmente importante si en producción habrá sensores baratos, compresión o entornos difíciles.

21.15 Cutout y oclusiones parciales

Algunas estrategias más avanzadas consisten en tapar pequeñas regiones de la imagen de forma aleatoria. La lógica es obligar al modelo a no depender de una sola zona específica para decidir.

Esto puede aumentar robustez frente a oclusiones parciales, aunque debe usarse con cuidado para no ocultar completamente la información esencial.

21.16 Mixup, CutMix y técnicas más avanzadas

Además de transformaciones clásicas, existen técnicas más sofisticadas como Mixup o CutMix, donde se combinan imágenes y etiquetas de forma controlada.

Estas estrategias suelen usarse en entrenamiento avanzado porque pueden mejorar regularización y generalización. Sin embargo, conceptualmente son más complejas y no siempre necesarias en proyectos introductorios.

21.17 Augmentation online y offline

El augmentation puede aplicarse de dos maneras principales:

  • Offline: generar y guardar nuevas imágenes aumentadas antes del entrenamiento.
  • Online: aplicar transformaciones al vuelo durante cada época de entrenamiento.

Hoy en día suele preferirse el augmentation online, porque genera mayor diversidad y evita multiplicar innecesariamente el tamaño en disco del dataset.

21.18 Augmentation solo en entrenamiento

Una regla muy importante es que el augmentation se aplica normalmente solo al conjunto de entrenamiento. No debe aplicarse de la misma manera a validación o test, porque esos conjuntos deben reflejar la evaluación real del modelo sobre datos no alterados artificialmente.

Si aumentamos también el test, estaríamos cambiando la referencia de evaluación y complicando la interpretación de resultados.

21.19 Relación con el problema real

La calidad del augmentation depende de cuánto se parezca a las variaciones reales que el modelo enfrentará en producción. Si el entorno final incluye cámaras inclinadas, cambios de luz y leves desenfoques, tiene sentido simular eso.

Si introducimos transformaciones irreales, podríamos entrenar al modelo sobre ejemplos que no representan el dominio del problema.

El mejor augmentation no es el más agresivo ni el más creativo. Es el que reproduce variaciones plausibles del entorno real de uso.

21.20 Casos donde augmentation puede ser peligroso

Hay problemas donde ciertas transformaciones pueden ser directamente incorrectas. Por ejemplo:

  • Texto invertido o rotado en OCR.
  • Radiografías donde izquierda y derecha importan.
  • Señales o símbolos cuya orientación cambia su significado.
  • Problemas donde color exacto define la clase.

Por eso no conviene copiar recetas genéricas sin pensar en la semántica de los datos.

21.21 Augmentation en clasificación, detección y segmentación

El augmentation no se aplica igual en todas las tareas:

  • En clasificación, suele bastar con transformar la imagen y conservar la etiqueta.
  • En detección, también deben transformarse las cajas.
  • En segmentación, deben transformarse de manera coherente las máscaras.
  • En pose, hay que actualizar los puntos clave.

Esto hace que las herramientas y pipelines de augmentation deban ser consistentes con el tipo de anotación.

21.22 Herramientas frecuentes

En Python, algunas herramientas muy utilizadas para augmentation son:

  • torchvision.transforms
  • Albumentations
  • Funciones de OpenCV para operaciones manuales

torchvision es muy cómoda para clasificación. Albumentations es especialmente fuerte cuando se trabaja también con cajas, máscaras y puntos clave.

21.23 Ejemplo con torchvision

Un ejemplo básico de augmentation con torchvision.transforms podría ser:

from torchvision import transforms

transform = transforms.Compose([
    transforms.Resize((224, 224)),
    transforms.RandomHorizontalFlip(),
    transforms.RandomRotation(10),
    transforms.ColorJitter(brightness=0.2, contrast=0.2),
    transforms.ToTensor()
])

Este pipeline redimensiona, hace flip aleatorio, rota levemente, ajusta color y luego convierte a tensor.

21.24 Ejemplo con Albumentations

Una opción muy usada en proyectos más avanzados es Albumentations:

import albumentations as A

transform = A.Compose([
    A.Resize(224, 224),
    A.HorizontalFlip(p=0.5),
    A.RandomBrightnessContrast(p=0.5),
    A.GaussianBlur(p=0.2)
])

Esta biblioteca es especialmente potente cuando hace falta aplicar las mismas transformaciones a imágenes y anotaciones asociadas.

21.25 ¿Cómo saber si el augmentation ayuda?

La única manera confiable de saber si una estrategia de augmentation ayuda es evaluándola. Algunas señales de que está funcionando bien son:

  • Menor sobreajuste.
  • Mejor desempeño en validación.
  • Mayor robustez frente a imágenes variadas.

Si el augmentation es demasiado agresivo o irrelevante, puede empeorar el aprendizaje.

21.26 Buenas prácticas

Algunas recomendaciones útiles:

  • Usar transformaciones plausibles para el dominio.
  • Empezar con augmentations simples y medir impacto.
  • No aplicar cambios destructivos sin justificación.
  • Recordar que validación y test deben quedar limpios.
  • Asegurar coherencia entre imagen y anotaciones.

En augmentation, más no siempre significa mejor.

21.27 Qué debes recordar de este tema

  • El data augmentation genera variantes plausibles de las imágenes de entrenamiento para mejorar generalización.
  • Puede incluir transformaciones geométricas, fotométricas y degradaciones suaves.
  • Debe reflejar variaciones reales del problema, no transformaciones arbitrarias.
  • Se aplica normalmente solo al conjunto de entrenamiento.
  • En tareas con cajas, máscaras o puntos clave, las anotaciones deben transformarse junto con la imagen.
  • torchvision y Albumentations son herramientas muy usadas para implementarlo.

21.28 Conclusión

El data augmentation es una de las técnicas más prácticas y efectivas para mejorar la robustez de modelos de visión por computadora, especialmente cuando el dataset es limitado o cuando el entorno real presenta variaciones importantes.

Su valor no está en producir imágenes “raras”, sino en exponer al modelo a transformaciones coherentes con el mundo en el que deberá operar. Bien aplicado, ayuda a que la red aprenda patrones más estables y menos dependientes de detalles accidentales del conjunto de entrenamiento.

En el próximo tema daremos otro paso importante: la construcción de una CNN en PyTorch, donde empezaremos a llevar toda esta teoría al código de forma directa.