EN JA ZH ES

Aumento de datos para aprendizaje automático - Técnicas prácticas de augmentación de imágenes

· 9 min de lectura

Qué es el Data Augmentation - Por qué expandir los datos de entrenamiento

El Data Augmentation genera nuevas muestras de entrenamiento aplicando transformaciones a datos existentes, expandiendo efectivamente el conjunto de datos de entrenamiento. Los modelos de deep learning requieren datos masivos, pero recopilar datos etiquetados es costoso. La augmentación genera muestras de entrenamiento diversas a partir de datos limitados, mejorando significativamente la capacidad de generalización del modelo.

Supresión del sobreajuste:

Con datos de entrenamiento insuficientes, los modelos se sobreajustan a las muestras de entrenamiento, degradando la precisión de predicción en datos no vistos. El data augmentation aumenta la diversidad de los datos de entrenamiento, evitando que los modelos dependan excesivamente de patrones específicos. Por ejemplo, si todas las imágenes de gatos miran al frente, el modelo no puede reconocer gatos de perfil. Agregar augmentaciones de rotación y volteo permite aprender características invariantes a la orientación.

Efectos cuantificados de la augmentación:

  • CIFAR-10: La augmentación básica (volteo horizontal + recorte aleatorio) por sí sola mejora la precisión de test en 2-3%
  • ImageNet: La aplicación de AutoAugment mejora la precisión Top-1 en 0.83% (de 77.63% a 78.46%)
  • Imágenes médicas: Con 100-500 imágenes, el AUC típicamente mejora 0.05-0.15 comparado con sin augmentación

Augmentación online vs offline:

La augmentación online aplica transformaciones aleatorias por lote dentro del bucle de entrenamiento, generando variaciones diferentes en cada época. La augmentación offline pre-guarda datos aumentados, consumiendo almacenamiento pero reduciendo el cómputo de entrenamiento. Frameworks modernos como PyTorch y TensorFlow estandarizan la augmentación online por eficiencia de memoria y generación ilimitada de variaciones.

Augmentación geométrica - Cambiar posición y forma

Las transformaciones geométricas modifican las posiciones de píxeles y representan la categoría de augmentación más fundamental y efectiva. Ayudan a los modelos a adquirir invariancia ante variaciones de posición, orientación y escala de objetos encontradas en escenarios de despliegue real.

Volteo horizontal:

Una de las augmentaciones más simples pero más efectivas. Reflejar imágenes de izquierda a derecha duplica efectivamente el volumen de datos. La mayoría de las imágenes naturales poseen simetría izquierda-derecha, haciéndola válida para casi todas las tareas. Evitar para reconocimiento de texto o imágenes médicas donde la lateralidad importa. PyTorch la aplica mediante transforms.RandomHorizontalFlip(p=0.5).

Rotación:

Rota aleatoriamente las imágenes dentro de rangos de ángulo especificados. Típicamente se usa de -15 a +15 grados, pero imágenes satelitales y de patología se benefician de rotación completa de 360 grados. Las regiones negras de la rotación se manejan mediante padding de reflexión o recorte. Albumentations configura con A.Rotate(limit=15, border_mode=cv2.BORDER_REFLECT).

Recorte aleatorio:

Extrae sub-regiones de posiciones aleatorias. El entrenamiento de ResNet usa estándarmente recortes aleatorios de 224x224 desde imágenes fuente de 256x256. La variación de posición de recorte enseña invariancia posicional. La detección de objetos requiere manejar bounding boxes cortados por recortes.

Transformación afín:

Combina rotación, escalado, cizallamiento y traslación simultáneamente. A.Affine(scale=(0.8, 1.2), shear=(-10, 10)) aplica múltiples transformaciones a la vez. El cizallamiento simula cambios de ángulo de visión y distorsión de perspectiva.

Deformación elástica:

Genera campos de desplazamiento aleatorios para deformar localmente las imágenes como goma. Particularmente efectiva para reconocimiento de dígitos manuscritos (MNIST), propuesta por Simard et al. (2003). Ampliamente usada en segmentación de imágenes médicas para simular variaciones de forma de órganos con deformaciones realistas.

Augmentación de color y píxeles - Cambiar la apariencia

Las augmentaciones de color modifican el tono, brillo y contraste de la imagen. Construyen robustez ante variaciones de condiciones de iluminación y configuraciones de cámara. Combinadas con transformaciones geométricas, generan variaciones de entrenamiento altamente diversas para una cobertura integral de datos en condiciones de despliegue.

Ajuste de brillo y contraste:

Modifica aleatoriamente el brillo y contraste general de la imagen. A.RandomBrightnessContrast(brightness_limit=0.2, contrast_limit=0.2) varía típicamente dentro de un rango de más-menos 20%. La fotografía exterior varía significativamente con la hora y el clima, haciendo que esta augmentación simule efectivamente la variación ambiental del mundo real.

Transformación HSV:

Modifica independientemente Tono, Saturación y Valor en el espacio de color HSV. Se configura mediante A.HueSaturationValue(hue_shift_limit=20, sat_shift_limit=30, val_shift_limit=20). Los cambios de tono alteran los colores de los objetos, promoviendo el aprendizaje de características independientes del color. Limitar los cambios de tono para tareas donde el color proporciona pistas críticas como el reconocimiento de semáforos.

Ruido gaussiano:

Agrega ruido gaussiano aleatorio a las imágenes simulando ruido del sensor y entornos de baja luz, mejorando la robustez al ruido. A.GaussNoise(var_limit=(10, 50)) especifica el rango de varianza. El ruido excesivo desestabiliza el entrenamiento, requiriendo configuraciones de rango apropiadas para una convergencia estable.

Desenfoque gaussiano:

Aplica filtro gaussiano para desenfocar imágenes simulando errores de enfoque y desenfoque por movimiento. Efectivo para detección de objetos al reproducir objetos distantes que aparecen borrosos en escenas reales. A.GaussianBlur(blur_limit=(3, 7)) especifica el rango de tamaño del kernel.

CLAHE:

Aplica mejora de contraste local, particularmente efectiva para imágenes médicas y oscuras, enfatizando características locales mientras preserva la distribución general de brillo. Se aplica mediante A.CLAHE(clip_limit=4.0, tile_grid_size=(8, 8)) para procesamiento local adaptativo que revela detalles ocultos.

Augmentación basada en mezcla - MixUp, CutMix y Mosaic

Las augmentaciones basadas en mezcla combinan múltiples imágenes para generar nuevas muestras de entrenamiento. A diferencia de las transformaciones de imagen única, la interpolación y composición entre imágenes promueve fronteras de decisión más suaves y suprime efectivamente el sobreajuste mediante efectos implícitos de suavizado de etiquetas.

MixUp (Zhang et al., 2018):

Interpola linealmente dos imágenes y sus etiquetas para generar nuevas muestras. La proporción de mezcla lambda se muestrea de la distribución Beta Beta(alpha, alpha), calculando x_new = lambda*x1 + (1-lambda)*x2. Alpha=0.2 es estándar con aproximadamente 1% de mejora de precisión reportada en CIFAR-10. El suavizado de etiquetas proporciona regularización que suprime la sobreconfianza del modelo en las predicciones.

CutMix (Yun et al., 2019):

Corta regiones rectangulares de una imagen y las pega en otra. Las etiquetas se mezclan proporcionalmente a la relación de área. A diferencia de MixUp, la información local se preserva, facilitando el aprendizaje de características parciales. Más de 1% de mejora Top-1 en ImageNet, efectivo también para tareas de detección y segmentación.

Mosaic (YOLOv4):

Compone 4 imágenes en una dispuestas en una cuadrícula 2x2. Cada imagen se redimensiona y recorta aleatoriamente. Un pase forward aprende contexto de 4 imágenes, cuadruplicando efectivamente el tamaño del lote. Particularmente efectivo para mejorar la precisión de detección de objetos pequeños, estándar en YOLOv5 y versiones posteriores de la familia YOLO.

GridMask:

Aplica máscaras de patrón de cuadrícula regular ocultando regiones de la imagen. Evolución de Cutout que oculta múltiples regiones pequeñas regularmente, evitando que los modelos dependan excesivamente de características locales. Variar el espaciado y ancho de la cuadrícula aleatoriamente genera patrones de máscara diversos para un aprendizaje de características más robusto.

Augmentación automatizada - AutoAugment y RandAugment

Optimizar los hiperparámetros de augmentación (qué transformaciones, a qué intensidad, con qué probabilidad) es desafiante. Las estrategias de augmentación automatizada usan aprendizaje por refuerzo o algoritmos de búsqueda para descubrir automáticamente políticas de augmentación óptimas sin ajuste manual.

AutoAugment (Cubuk et al., 2019):

Usa aprendizaje por refuerzo para buscar políticas de augmentación óptimas. Las políticas comprenden 25 sub-políticas, cada una conteniendo 2 operaciones de transformación con tipo, probabilidad y magnitud. La búsqueda requiere 15.000 horas-GPU pero las políticas descubiertas se transfieren a otros conjuntos de datos. Las políticas descubiertas en ImageNet muestran que las combinaciones de rotación, transformaciones de color y cizallamiento son más efectivas.

RandAugment (Cubuk et al., 2020):

Reduce drásticamente el costo de búsqueda de AutoAugment con un diseño simple. Selecciona N transformaciones aleatorias aplicadas con magnitud compartida M. Solo 2 parámetros de búsqueda permiten optimización por grid search. N=2, M=9 muestra buenos resultados en muchas tareas. Implementación extremadamente simple que logra rendimiento igual o mejor que el mucho más costoso AutoAugment.

TrivialAugment (2021):

Simplifica aún más RandAugment aplicando solo una transformación aleatoria con magnitud aleatoria por imagen. Cero hiperparámetros necesarios mientras iguala el rendimiento de RandAugment. Contraintuitivo que lo más simple funcione igual de bien, explicado por la diversidad suficiente que se acumula a lo largo de muchas épocas de entrenamiento con selección estocástica.

Implementación:

PyTorch proporciona uso directo mediante transforms.RandAugment(num_ops=2, magnitude=9). La biblioteca timm ofrece pipelines de augmentación completos incluyendo variantes de AutoAugment y RandAugment a través de su función create_transform para fácil integración.

Estrategias de augmentación por tarea e implementación con Albumentations

La estrategia óptima de augmentación varía según la tarea. El diseño de augmentación adaptado a las características de clasificación de imágenes, detección de objetos y segmentación semántica es importante. Albumentations es una biblioteca de augmentación de imágenes rápida basada en OpenCV, 2-10 veces más rápida que torchvision.transforms.

Augmentación para clasificación de imágenes:

En tareas de clasificación, las transformaciones pueden aplicarse libremente a toda la imagen. El pipeline estándar es: redimensionar, recorte aleatorio, volteo horizontal, transformación de color, normalización. En el entrenamiento de EfficientNet, la combinación RandAugment + Mixup + CutMix es estándar.

Augmentación para detección de objetos:

En detección de objetos, los bounding boxes deben transformarse junto con la imagen. Albumentations soporta la transformación automática de bounding boxes con bbox_params=A.BboxParams(format="pascal_voc", min_visibility=0.3). La augmentación Mosaic es particularmente efectiva para la detección de objetos pequeños y se usa estándarmente en la serie YOLO.

Augmentación para segmentación:

En segmentación, las mismas transformaciones geométricas deben aplicarse a la imagen y la máscara. Las transformaciones de color se aplican solo a la imagen, no a la máscara. La deformación elástica es particularmente efectiva para segmentación de órganos.

Test-Time Augmentation (TTA):

Técnica que aplica augmentación también durante la inferencia, promediando múltiples resultados de predicción para mejorar la precisión. Aplica volteo horizontal, multi-escala y rotaciones leves, promediando las predicciones de cada variación. En competiciones, típicamente se obtiene una mejora de precisión del 0.5-1%.

Comparación de rendimiento:

  • Albumentations: Basado en OpenCV, el más rápido. Más de 1000 imágenes/segundo de velocidad de procesamiento
  • torchvision.transforms: Basado en Pillow, estándar de PyTorch. 1/3-1/5 de la velocidad de Albumentations
  • Kornia: Ejecuta transformaciones en GPU. Óptimo para procesamiento por lotes
  • DALI (NVIDIA): Optimiza todo el pipeline en GPU. Elimina cuellos de botella de CPU en entrenamiento a gran escala

Artículos relacionados

Visión general de la detección de objetos - Comparación de arquitectura y rendimiento de YOLO, SSD y Faster R-CNN

Explicación sistemática de la detección de objetos con aprendizaje profundo. Cubre los principios de YOLO, SSD y Faster R-CNN, compromisos velocidad-precisión y criterios de selección prácticos con benchmarks concretos.

Fundamentos de segmentación de imágenes - Principios de división de regiones y aplicaciones

Introducción sistemática a la segmentación de imágenes, desde métodos clásicos de umbralización hasta técnicas de aprendizaje profundo (U-Net, DeepLab, SAM), incluyendo métricas de evaluación e implementación en navegador.

Aprendizaje por transferencia para clasificación de imágenes con datos limitados - Guía de Fine-tuning

Construye clasificadores de imágenes de alta precisión con solo 100 imágenes usando modelos preentrenados. Guía práctica de aprendizaje por transferencia con ejemplos de código PyTorch.

Introducción a la segmentación semántica - Arquitecturas U-Net y DeepLab

Explicación detallada de las arquitecturas centrales de segmentación semántica, desde el trabajo pionero de FCN hasta la estructura codificador-decodificador de U-Net y la convolución dilatada de DeepLab, incluyendo preparación de datos y despliegue.

Tecnología de etiquetado automático de imágenes - Detección de objetos, reconocimiento de escenas y generación de subtítulos

Explicación de la tecnología de etiquetado automático de imágenes con IA. Cubre detección de objetos (YOLO), reconocimiento de escenas, generación de subtítulos de imágenes y su implementación en aplicaciones web con ejemplos prácticos.

Comparación de herramientas de anotación de imágenes - Cómo elegir entre CVAT, Label Studio y Roboflow

Comparación exhaustiva de herramientas de anotación de imágenes para aprendizaje automático. Cubre funcionalidades, costos y capacidades de asistencia IA de CVAT, Label Studio, Roboflow y más.

Términos relacionados