Ver como Markdown

Matriz de aumento de datos

Definir un parámetro de aumento de datos no garantiza que llegue al pipeline. Esta página recoge cómo trata cada familia entrenable cada parámetro de TrainConfig, a partir de la tabla declarativa que la biblioteca incluye como única fuente de verdad.

Los parámetros

Estos son nombres de campos de TrainConfig, no la forma en que los escribe la CLI. La CLI mapea sus propios alias sobre ellos, así que --mosaic define mosaic_prob.

ParámetroSignificado
mosaic_probProbabilidad de construir una muestra en mosaico de 4 imágenes
mixup_probProbabilidad de mezclar una segunda muestra
hsv_probProbabilidad de jitter de color HSV
flip_probProbabilidad de volteo horizontal
degreesRango de rotación aleatoria para el warp afín, en grados
translateFracción de traslación aleatoria para el warp afín
mosaic_scaleRango de escala aleatoria para el warp afín
mixup_scaleRango de escala de jitter aplicado a la imagen compañera de MixUp
shearRango de cizalladura aleatoria para el warp afín, en grados
perspectiveMagnitud del warp proyectivo para el warp afín
flipudProbabilidad de volteo vertical
no_aug_epochsÉpocas finales entrenadas con el aumento de datos fuerte desactivado
auto_augmentPolítica AutoAugment de clasificación: randaugment, autoaugment o augmix
erasingProbabilidad de RandomErasing en clasificación
mixupProbabilidad de MixUp por batch en clasificación, con etiquetas suaves
cutmixProbabilidad de CutMix por batch en clasificación, con etiquetas suaves

Los cuatro últimos son el pack de clasificación. Las familias de detección los ignoran. mixup es un parámetro exclusivo de la API: en la CLI, --mixup es el alias del mixup_prob de detección.

Consultar la spec directamente
from libreyolo.data.augment.spec import (    AUG_KNOBS,    aug_support,    ignored_aug_params,    uses_mosaic_gating,) print(sorted(AUG_KNOBS)) table = aug_support("yolo9")print(table["mixup_prob"].status, table["mixup_prob"].note) print(sorted(ignored_aug_params("dfine")))print(uses_mosaic_gating("yolo9"), uses_mosaic_gating("yolonas"))

Los tres estados

EstadoSignificado
usedEl parámetro llega al pipeline de entrenamiento de la familia y modifica las muestras
gated_by_mosaicEl parámetro solo se aplica a las muestras que tomaron la rama de mosaico, así que con mosaic_prob == 0 nunca se activa
ignoredEl parámetro nunca llega al pipeline; definirlo no hace nada

ignored es el que conviene comprobar antes de lanzar un entrenamiento, porque no falla nada. La CLI avisa cuando un parámetro de entrenamiento definido explícitamente es uno que la familia seleccionada ignora, y el entrenador avisa cuando mixup_prob > 0 no puede activarse porque la familia condiciona MixUp al mosaico y mosaic_prob es cero.

Arquetipos de pipeline

Todas las familias cubiertas siguen uno de seis pipelines, con unas pocas desviaciones por familia que se listan más abajo.

ParámetroEstilo YOLOXYOLO-NASEstilo DETRClasificaciónSemánticaRestauración
mosaic_probusedignoredignoredignoredignoredignored
mixup_probgatedusedignoredignoredignoredignored
hsv_probusedusedignoredignoredignoredignored
flip_probusedusedusedignoredignoredignored
degreesgatedusedignoredignoredignoredignored
translategatedusedignoredignoredignoredignored
mosaic_scalegatedusedignoredignoredignoredignored
mixup_scalegatedusedignoredignoredignoredignored
sheargatedusedignoredignoredignoredignored
perspectivegatedusedignoredignoredignoredignored
flipudusedusedignoredignoredignoredignored
no_aug_epochsusedusedusedusedusedused
auto_augmentignoredignoredignoredusedignoredignored
erasingignoredignoredignoredusedignoredignored
mixupignoredignoredignoredusedignoredignored
cutmixignoredignoredignoredusedignoredignored

En el pipeline de estilo YOLOX, el preprocesado por muestra aplica el jitter HSV y los volteos, mientras que el warp afín y MixUp solo se ejecutan dentro de la rama de mosaico. YOLO-NAS, en cambio, ejecuta un afín por muestra que está siempre activo, ignora el mosaico y aplica MixUp de forma independiente, reutilizando mosaic_scale como rango de escala del afín.

El pipeline de estilo DETR es una transformación de paso directo, sin mosaico. Su distorsión fotométrica, el zoom-out y el recorte por IoU son constantes de la receta y no parámetros configurables, y por eso hsv_prob y los parámetros de geometría nunca llegan hasta él. El pipeline de clasificación usa una transformación de ImageFolder cuyo volteo horizontal es un 0.5 fijo en lugar de flip_prob. El jitter de escala y el HSV de la semántica vienen de atributos de clase de la familia y no de parámetros de configuración, y los volteos de restauración son operaciones acopladas de entrada y objetivo con una probabilidad fija de 0.5.

no_aug_epochs se respeta en todas partes, aunque lo que desactiva cambia: el mosaico y MixUp en el estilo YOLOX, el afín y MixUp en YOLO-NAS, los aumentos fotométricos fuertes y los de recorte más la cola del learning rate en el estilo DETR, y la cola del scheduler en el resto.

Familias por arquetipo

ArquetipoFamilias
Estilo YOLOXyolox, yolo7, yolo9, yolo9_e2e, yolo9_p2, rtmdet, picodet, rtdetr, rtdetrv2, fomo
YOLO-NASyolonas
Estilo DETRdfine, domedetr, deim, deimv2, rtdetrv4, rfdetr, ec, dinov2
Clasificaciónresnet, convnext, mobilenetv4, efficientnetv2
Semánticasegformer
Restauraciónnafnet

Hay veinticinco familias cubiertas. Una familia que no esté en esta lista devuelve un conjunto de ignorados vacío, así que no se emite ningún aviso para ella.

Desviaciones

FamiliaDiferencia respecto a su arquetipo
rtmdetflipud ignorado: su transformación no tiene volteo vertical
picodetflipud ignorado
rtdetrflipud ignorado
rtdetrv2flipud ignorado
fomoperspective y flipud ignorados
echsv_prob, degrees y translate se usan, solo para task="pose"; detect y segment usan recetas fotométricas fijas
dinov2El pack de clasificación se usa, solo para task="classify"

ec y dinov2 son familias multitarea, así que un parámetro se marca como ignorado solo cuando todas y cada una de las tareas entrenables de la familia lo ignoran. Eso evita que el aviso de la CLI llegue a ser incorrecto para una tarea y correcto para otra.

Dome-DETR hereda las transformaciones de D-FINE sin cambios. Lo único que no admite es el entrenamiento multiescala, que desactiva su propia configuración y no la spec de aumento de datos.

Parámetros específicos de cada familia

Algunas familias llevan parámetros de aumento de datos en su propia subclase de TrainConfig en lugar de en la base. La CLI no los expone; defínelos a través de la API de Python.

FamiliaParámetroSignificado
yolo9, yolo9_e2e, yolo9_p2copy_pasteProbabilidad del aumento de instancias copy-paste, solo para task="segment"
yolo9, yolo9_e2e, yolo9_p2copy_paste_modeOrigen del copy-paste: flip refleja la misma muestra, mixup usa una segunda muestra
yolo9, yolo9_e2e, yolo9_p2rot90Probabilidad de rotación aleatoria de 90 grados
rfdetrcopy_pasteProbabilidad de copy-paste para task="segment", solo en modo flip
rfdetrcopy_paste_modeModo de origen del copy-paste para task="segment"
rfdetrcrop_resize_probProbabilidad de recorte y redimensionado aleatorios en el pipeline nativo
dfinecrop_resize_probProbabilidad de recorte y redimensionado aleatorios, task="segment"
eccrop_resize_probProbabilidad de recorte y redimensionado aleatorios, task="segment"
ec, yolonasbrightness_contrast_probProbabilidad de jitter de brillo y contraste, task="pose"
ec, yolonasaffine_probProbabilidad del afín consciente de keypoints, task="pose"

rot90 se aplica a detect y a OBB en yolo9.

Consultar la spec

HelperDevuelve
aug_support(family)La tabla de parámetro a Support, o None para una familia desconocida
ignored_aug_params(family)El conjunto de nombres de parámetros que la familia ignora; vacío para una familia desconocida
uses_mosaic_gating(family)Si el MixUp de la familia solo se activa en muestras de mosaico
display_name(family)El nombre de familia de cara al usuario que se usa en los avisos
mixup_gating_warning(family, mosaic_prob, mixup_prob)El texto del aviso cuando MixUp no puede activarse nunca, o None en caso contrario

Un Support es una tupla con nombre de status y note, donde la nota explica por qué un parámetro está ignorado o condicionado para esa familia.

La condición del mosaico

En una familia de estilo YOLOX, mixup_prob=0.5 con mosaic_prob=0 desactiva MixUp por completo, porque MixUp solo se aplica a las muestras de mosaico. Es una combinación fácil de alcanzar cuando se apaga el mosaico en la parte final del entrenamiento. El entrenador registra un aviso que nombra a la familia, y mixup_gating_warning es la función pura que hay detrás.

La lista de parámetros, los estados, los arquetipos, las desviaciones por familia y las funciones helper están leídos de libreyolo/data/augment/spec.py en la v1.5.0. Esa tabla está anclada a los pipelines reales por tests/unit/test_augment_spec.py.