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.
Práctico
Qué hace el aumento de datos#

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ámetro | Predeterminado | Qué hace | Cuándo cambiarlo |
|---|---|---|---|
hsv_h | 0.015 | Variación del tono | Ponlo a 0 cuando el color defina una clase |
hsv_s / hsv_v | 0.7 / 0.4 | Variación de saturación y brillo | Redúcela si la iluminación es fija y está controlada |
degrees | 0.0 | Rotación aleatoria (±grados) | Auméntala cuando los objetos puedan aparecer en cualquier ángulo |
translate / scale | 0.1 / 0.5 | Desplazamiento y zoom | Redúcelos si los recortes pueden cortar partes que definen una clase |
fliplr | 0.5 | Probabilidad de volteo horizontal | Ponla a 0 cuando la izquierda y la derecha sean importantes, como en el texto |
flipud | 0.0 | Probabilidad de volteo vertical | Auméntala para vistas cenitales, aéreas o microscópicas |
mosaic | 1.0 | Une cuatro imágenes en una | Rara vez; consulta close_mosaic |
close_mosaic | 10 | Desactiva mosaic durante las últimas N épocas | Redúcelo en ejecuciones muy cortas |
mixup / cutmix | 0.0 / 0.0 | Mezcla dos imágenes o pega un fragmento de una sobre otra | Pruébalo en conjuntos de datos pequeños, después de establecer un valor de referencia |
copy_paste | 0.0 | Pega instancias de objetos de unas imágenes en otras | Conjuntos 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 exterior | Sí: depende de la hora del día | Conservar |
| Volteo horizontal en una cámara de seguridad | Sí: la gente camina en ambas direcciones | Conservar |
| Volteo vertical en una cámara montada en la pared | No: el suelo siempre queda abajo | Desactivar |
| Volteo vertical en una cámara cenital sobre una cinta transportadora | Sí: en el fotograma no hay «arriba» | Activar |
| Rotación de 90° en una cámara fija de carretera | No: la cámara nunca gira | Desactivar |
| Cambio de tono cuando las piezas rojas y verdes pertenecen a clases distintas | No: destruye la señal | Desactivar |

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#

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.
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.
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.
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.
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ámetro | Opción | Justificación |
|---|---|---|
flipud | 0.5 | Una vista cenital parece igual al voltearla verticalmente |
degrees | 180 | Los barcos aparecen con cualquier orientación |
hsv_h | predeterminado | El color del casco varía y no sirve para identificar la clase |
mosaic | predeterminado | Hay 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=180En 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.