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.
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:
De este modo, el modelo deja de depender tanto de detalles accidentales y aprende patrones más robustos.
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.
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.
De forma general, las transformaciones de augmentation suelen agruparse en varias familias:
Cada familia ataca un tipo distinto de variación presente en el mundo real.
Las augmentations geométricas modifican la posición, orientación o escala del contenido visual. Algunas de las más comunes son:
Estas transformaciones son especialmente útiles cuando el objeto puede aparecer en posiciones u orientaciones variables y eso no cambia su clase.
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:
La pregunta siempre es la misma: ¿una imagen rotada sigue siendo un ejemplo válido de la clase?
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:
El flip vertical suele ser aún más delicado y menos universalmente válido.
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.
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.
Las augmentations fotométricas modifican la apariencia visual sin alterar la geometría. Algunas muy usadas son:
Estas transformaciones son útiles para que el modelo no dependa demasiado de condiciones exactas de iluminación o color.
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.
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.
Otra familia útil consiste en introducir pequeñas degradaciones visuales realistas, por ejemplo:
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.
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.
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.
El augmentation puede aplicarse de dos maneras principales:
Hoy en día suele preferirse el augmentation online, porque genera mayor diversidad y evita multiplicar innecesariamente el tamaño en disco del dataset.
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.
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.
Hay problemas donde ciertas transformaciones pueden ser directamente incorrectas. Por ejemplo:
Por eso no conviene copiar recetas genéricas sin pensar en la semántica de los datos.
El augmentation no se aplica igual en todas las tareas:
Esto hace que las herramientas y pipelines de augmentation deban ser consistentes con el tipo de anotación.
En Python, algunas herramientas muy utilizadas para augmentation son:
torchvision.transformstorchvision es muy cómoda para clasificación. Albumentations es especialmente fuerte cuando se trabaja también con cajas, máscaras y puntos clave.
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.
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.
La única manera confiable de saber si una estrategia de augmentation ayuda es evaluándola. Algunas señales de que está funcionando bien son:
Si el augmentation es demasiado agresivo o irrelevante, puede empeorar el aprendizaje.
Algunas recomendaciones útiles:
En augmentation, más no siempre significa mejor.
torchvision y Albumentations son herramientas muy usadas para implementarlo.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.