Ultralytics YOLO27: Únete a la lista de espera.
Get Started
Lecciónprincipiante

Usa el aumento de datos con cuidado

Prueba cada aumento de datos con la cámara de despliegue, crea un perfil justificado, entrena con él y comprueba el resultado en los lotes de entrenamiento.

Imagina una línea de clasificación que separa cápsulas rojas de naranjas y que se ha entrenado con la variación de tono predeterminada. En cada época, el modelo ve cápsulas rojas teñidas de naranja, así que aprende que el color no importa, justo lo que tenía que aprender. El aumento de datos solo hace que un modelo sea más robusto cuando cada transformación es algo que la cámara de despliegue podría producir realmente. En esta lección aprenderás a decidir qué transformaciones conservar.

Resultado

Elige un perfil de aumento de datos con una justificación de una línea para cada parámetro modificado, entrena con él y compruébalo en train_batch0.jpg.

Vía rápida
Si ya tienes experiencia, aquí tienes un resumen.
  1. Primero, entrena con el aumento de datos predeterminado y registra el valor de referencia.

  2. Desactiva las transformaciones que la cámara nunca podría producir, como los cambios de tono cuando el color define una clase.

  3. Activa las transformaciones que la cámara sí podría producir, como flipud para vistas cenitales.

  4. Abre train_batch0.jpg y confirma que las cajas se ajustan bien y que se conservan las características distintivas de las clases.

Práctico

Qué hace el aumento de datos#

Aumentos de una foto de un guacamayo: volteo horizontal, recorte, desenfoque de mediana, contraste, cambio de tono, saturación y valor, y gamma

El aumento de datos transforma las imágenes de entrenamiento sobre la marcha, de modo que el modelo ve una versión ligeramente distinta de cada imagen en cada época. Si se aplica bien, mejora la robustez ante cambios de iluminación, escala y orientación y reduce el sobreajuste, porque el modelo no puede memorizar imágenes que cambian constantemente. Si se aplica mal, enseña escenas físicamente imposibles y oculta carencias del conjunto de datos que deberías corregir.

Fíjate en el panel de tono de arriba: el guacamayo rojo se vuelve amarillo. Eso no supone ningún problema para distinguir «guacamayo» de «no guacamayo», pero resulta perjudicial si el color es lo que diferencia dos de tus clases.

Los parámetros predeterminados más importantes#

Estos son los valores predeterminados de Ultralytics 8.4; la referencia de parámetros de aumento de datos enumera todos los parámetros:

ParámetroPredeterminadoQué haceCuándo cambiarlo
hsv_h0.015Variación del tonoPonlo a 0 cuando el color defina una clase
hsv_s / hsv_v0.7 / 0.4Variación de saturación y brilloRedúcela si la iluminación es fija y está controlada
degrees0.0Rotación aleatoria (±grados)Auméntala cuando los objetos puedan aparecer en cualquier ángulo
translate / scale0.1 / 0.5Desplazamiento y zoomRedúcelos si los recortes pueden cortar partes que definen una clase
fliplr0.5Probabilidad de volteo horizontalPonla a 0 cuando la izquierda y la derecha sean importantes, como en el texto
flipud0.0Probabilidad de volteo verticalAuméntala para vistas cenitales, aéreas o microscópicas
mosaic1.0Une cuatro imágenes en unaRara vez; consulta close_mosaic
close_mosaic10Desactiva mosaic durante las últimas N épocasRedúcelo en ejecuciones muy cortas
mixup / cutmix0.0 / 0.0Mezcla dos imágenes o pega un fragmento de una sobre otraPruébalo en conjuntos de datos pequeños, después de establecer un valor de referencia
copy_paste0.0Pega instancias de objetos de unas imágenes en otrasConjuntos de datos de segmentación, semántica y OBB con clases poco frecuentes

Los conjuntos de datos de profundidad son la excepción: mosaic, mixup, cutmix y copy_paste producirían mapas de profundidad emparejados no válidos, así que el cargador de profundidad los establece automáticamente en 0.

La prueba de despliegue#

Cada transformación activada debe superar una pregunta y, después, una segunda:

Transformación¿Realista?Veredicto
Brillo ±30 % en una cámara exteriorSí: depende de la hora del díaConservar
Volteo horizontal en una cámara de seguridadSí: la gente camina en ambas direccionesConservar
Volteo vertical en una cámara montada en la paredNo: el suelo siempre queda abajoDesactivar
Volteo vertical en una cámara cenital sobre una cinta transportadoraSí: en el fotograma no hay «arriba»Activar
Rotación de 90° en una cámara fija de carreteraNo: la cámara nunca giraDesactivar
Cambio de tono cuando las piezas rojas y verdes pertenecen a clases distintasNo: destruye la señalDesactivar

Aumento mediante una rotación de 180 grados: una guacamaya boca abajo, una vista que una cámara fija y vertical nunca captura

Una guacamaya boca abajo es una imagen de entrenamiento válida para un dron que mira directamente hacia abajo, y una imagen desperdiciada para una cámara fijada a una pared. Las transformaciones que no superan la prueba generan una señal de entrenamiento negativa: el modelo aprende a reconocer imágenes que nunca verá, a costa de capacidad para las que sí verá.

Un perfil de ejemplo#

Una cámara cenital sobre una cinta transportadora clasifica piezas cuyas clases solo se distinguen por el color. Hay que eliminar la variación del tono, mientras que los volteos verticales y las pequeñas rotaciones se vuelven realistas. Ejecuta este ejemplo tal cual con el conjunto de demostración COCO8; sustituye el YAML de datos por el tuyo y usa un número real de épocas:

from ultralytics import YOLO

model = YOLO("yolo26n.pt")
model.train(
    data="coco8.yaml",
    epochs=1,
    imgsz=320,
    hsv_h=0.0,  # el color es la señal de la clase: conserva los tonos reales
    flipud=0.5,  # vista cenital: no hay «arriba» en el fotograma
    degrees=10.0,  # las piezas pueden quedar en cualquier ángulo pequeño
)

Abre train_batch0.jpg en la carpeta de ejecución y comprueba tres cosas: que los cuadros delimitadores sigan ajustándose bien tras la transformación, que se conserven las características que definen la clase (color, forma, texto) y que nada parezca físicamente imposible. Reduce la intensidad de cualquier transformación que incumpla alguno de estos puntos. Entrena tu primer modelo explica la propia ejecución del entrenamiento.

Mosaic y close_mosaic#

Aumento Mosaic que combina cuatro fotos de loros en una sola imagen de entrenamiento

Mosaic combina cuatro imágenes en una y está activado de forma predeterminada. Es el aumento más eficaz para la detección: cada imagen de entrenamiento reúne varias escenas, escalas y contextos de objetos. El inconveniente es que las imágenes Mosaic no se parecen a los fotogramas de producción, así que close_mosaic=10 lo desactiva durante las últimas 10 épocas y el modelo termina entrenándose con entradas realistas. Al cerrar Mosaic también se desactivan mixup, cutmix y copy_paste, mientras que los volteos, HSV y las transformaciones geométricas siguen ejecutándose.

Las ejecuciones cortas nunca usan mosaico

En las ejecuciones de close_mosaic épocas o menos, incluido el perfil de una época de arriba, el mosaico está desactivado desde la primera época. Evalúa el mosaico a partir de train_batch0.jpg de una ejecución completa, no de una prueba rápida.

Qué no puede solucionar el aumento de datos#

El aumento de datos multiplica lo que ya existe. Si el conjunto de datos no contiene imágenes nocturnas, ningún ajuste genera la noche: solo genera versiones más claras y más oscuras del día. Si una clase solo funciona con un aumento agresivo, no tienes suficientes ejemplos de esa clase. Vuelve a Recopila datos representativos de alta calidad.

Llevar todos los parámetros al máximo oculta el verdadero problema

Con un conjunto de datos pequeño y todas las ampliaciones al máximo, el entrenamiento usa imágenes cada vez más alejadas de las condiciones de despliegue, y el mAP de validación suele bajar. Cambia un argumento cada vez, con un motivo, y compáralo con la configuración de referencia predeterminada usando la misma división.

Cuando los recortes eliminan la clase

Si una clase se define por una parte pequeña del objeto, como el símbolo de una esquina en una carta, mosaic, translate y scale pueden recortar esa parte y crear una imagen de entrenamiento idéntica a la de otra clase. Reduce esos valores para ese conjunto de datos y confirma la solución en train_batch0.jpg.

Pruébalo

Marca cada argumento de la tabla de valores predeterminados como mantener, cambiar o desactivar para tu despliegue, y justifica cada cambio en una línea. Entrena una vez con los valores predeterminados y otra con tu perfil, usando la misma partición, y registra el mAP50-95 de validación de ambos. Entregables: la tabla anotada, ambas puntuaciones y un train_batch0.jpg de la ejecución personalizada.

Cuándo se considera terminado
Has terminado la lección cuando se cumplen todas estas condiciones.
  • Cada argumento modificado tiene una justificación de despliegue de una línea.

  • Los perfiles predeterminado y personalizado se comparan en la misma partición de validación.

  • train_batch0.jpg de la ejecución personalizada muestra cuadros ajustados y características de clase intactas.

Mostrar solución

Un dron inspecciona un puerto desde arriba y detecta barcos con cuadros orientados. Desde ese punto de vista no hay «arriba», los barcos apuntan en todas las direcciones y el color no define la clase:

ParámetroOpciónJustificación
flipud0.5Una vista cenital parece igual al voltearla verticalmente
degrees180Los barcos aparecen con cualquier orientación
hsv_hpredeterminadoEl color del casco varía y no sirve para identificar la clase
mosaicpredeterminadoHay muchos objetos pequeños por imagen; Mosaic ayuda

En el conjunto de demostración aéreo DOTA8:

yolo obb train data=dota8.yaml model=yolo26n-obb.pt epochs=1 imgsz=320 flipud=0.5 degrees=180

En una cámara fija de calle, los mismos dos cambios no superarían la prueba de despliegue: los coches nunca aparecen boca abajo en una transmisión de una cámara montada en la pared.

Qué viene después

El conjunto de datos, las particiones y el aumento ya están listos; la siguiente lección determina objetivamente si el conjunto de datos está preparado para entrenar.