Data Augmentation
El aumento de datos entrena modelos con copias transformadas aleatoriamente de imágenes existentes, por ejemplo, volteadas, recortadas o con cambios de color, para mejorar su generalización.
El aumento de datos amplía la variedad de un conjunto de datos de entrenamiento mediante la aplicación de transformaciones aleatorias, como volteos, recortes, cambios de escala, ajustes de color y mezclas de imágenes, a los ejemplos que ya contiene. Cada copia transformada conserva su etiqueta original, así que el modelo aprende que un objeto sigue siendo el mismo aunque cambien el punto de vista, la iluminación y la posición. Recopilar y etiquetar imágenes nuevas es lento y caro, lo que convierte el aumento de datos en la defensa más económica frente al sobreajuste; casi todos los modelos modernos de visión por computador se entrenan con esta técnica.
Cómo funciona el aumento de datos#
La mayoría de los procesos de entrenamiento aplican aumentos en línea: el cargador de datos transforma cada imagen al crear un lote, con nuevos parámetros aleatorios cada vez, así que cada época muestra una versión distinta de cada imagen. En cambio, el aumento sin conexión guarda en el disco un número fijo de copias transformadas antes del entrenamiento, lo que multiplica el almacenamiento necesario y ofrece al modelo muchas menos variantes distintas.
Dos reglas evitan que el aumento de datos corrompa los datos. En primer lugar, las etiquetas deben desplazarse junto con los píxeles: en la detección de objetos, la segmentación de instancias y la estimación de pose, una transformación geométrica debe actualizar cada caja delimitadora, máscara y punto clave; además, un volteo horizontal también intercambia los puntos clave de la izquierda y la derecha. En segundo lugar, la transformación debe ser posible en el mundo real: los volteos verticales son adecuados para imágenes aéreas y microscópicas, mientras que en escenas urbanas generan coches boca abajo que nunca aparecen durante la inferencia. Las transformaciones de Torchvision aplican automáticamente la primera regla cuando se pasan las cajas junto con la imagen:
from urllib.request import urlopen
from PIL import Image
from torchvision import tv_tensors
from torchvision.transforms import v2
image = Image.open(urlopen("https://ultralytics.com/images/bus.jpg")) # 810 x 1080 pixels
boxes = tv_tensors.BoundingBoxes([[50, 400, 250, 900]], format="XYXY", canvas_size=(1080, 810))
# Flip every time (p=1.0) and shift colors; the box must move with the pixels
augment = v2.Compose([v2.RandomHorizontalFlip(p=1.0), v2.ColorJitter(brightness=0.4, saturation=0.7)])
new_image, new_boxes = augment(image, boxes)
print(f"Original box: {boxes.tolist()}")
print(f"Flipped box: {new_boxes.tolist()}")El cuadro alrededor del hombre situado a la izquierda de la imagen pasa de [50, 400, 250, 900] a [560, 400, 760, 900], reflejado a lo largo de los 810 píxeles de anchura, mientras que el ajuste de color modifica los píxeles sin tocar el cuadro.
Técnicas habituales#
- Transformaciones geométricas: Los volteos, las rotaciones, los cambios de escala, las traslaciones, los recortes, los cizallamientos y las deformaciones de perspectiva simulan distintas posiciones de cámara y tamaños de objeto.
- Transformaciones fotométricas: Los cambios de brillo, contraste, saturación y tono, además del desenfoque y el ruido, simulan distintas condiciones de iluminación, sensores y calidad de imagen.
- Oclusión: El borrado aleatorio y el recorte enmascaran rectángulos para impedir que el modelo dependa de una sola parte de un objeto.
- Mezcla de imágenes: MixUp combina dos imágenes y sus etiquetas; CutMix pega un parche de una imagen en otra; el mosaico coloca cuatro imágenes en una sola muestra de entrenamiento, y la técnica de copiar y pegar coloca objetos segmentados sobre fondos nuevos.
- Políticas automatizadas: RandAugment aplica una secuencia aleatoria de transformaciones controlada por solo dos ajustes: el número de transformaciones y su intensidad. Así se elimina la costosa búsqueda que requerían las políticas aprendidas anteriores.
Procesos de aumento de datos para la detección de objetos#
Los procesos de detección encadenan varias transformaciones, cada una aplicada con su propia probabilidad, de modo que cada imagen de entrenamiento recibe una combinación aleatoria distinta.
El entrenamiento de Ultralytics YOLO ejecuta este proceso de forma predeterminada, con mosaico en todas las imágenes (mosaic=1.0), un 50 % de probabilidad de volteo horizontal (fliplr=0.5), cambios de escala de hasta ±50 % y ajustes de color HSV. Además, desactiva el mosaico en las últimas 10 épocas (close_mosaic=10) para que el modelo termine con imágenes completas y de aspecto natural.
from ultralytics import YOLO
# Carga un modelo YOLO26n preentrenado
model = YOLO("yolo26n.pt")
# fliplr: probabilidad de volteo horizontal; scale: intervalo de zoom (+/- 70%); degrees: intervalo de rotación (+/- 5)
results = model.train(data="coco8.yaml", epochs=10, fliplr=0.5, scale=0.7, degrees=5.0)Durante esta ejecución, el entrenador de YOLO26 guarda los tres primeros lotes aumentados como train_batch0.jpg, train_batch1.jpg y train_batch2.jpg, con los cuadros dibujados, para que puedas comprobar el efecto de cada ajuste antes de iniciar una ejecución larga.
Aumento de datos y términos relacionados#
- Datos sintéticos: Se generan desde cero con motores de renderizado, simuladores o modelos de difusión. El aumento modifica imágenes reales que ya existen.
- Preprocesamiento de datos: Pasos deterministas, como el cambio de tamaño y la normalización, que se aplican de forma idéntica a cada imagen durante el entrenamiento y la inferencia. El aumento es aleatorio y solo se aplica durante el entrenamiento.
- Aumento en tiempo de prueba (TTA): Ejecuta la inferencia sobre varias versiones aumentadas de la misma entrada, como copias volteadas y reescaladas, y combina las predicciones; a cambio de un pequeño aumento de precisión, requiere más cálculo.










