Ver como markdown

Matriz de data augmentation

Definir um parâmetro de data augmentation não garante que ele chegue ao pipeline. Esta página registra como cada família treinável trata cada parâmetro do TrainConfig, usando a tabela declarativa que a biblioteca entrega como sua única fonte de verdade.

Os parâmetros

Estes são nomes de campos do TrainConfig, não a grafia da CLI. A CLI mapeia seus próprios aliases sobre eles, então --mosaic define mosaic_prob.

ParâmetroSignificado
mosaic_probProbabilidade de montar uma amostra em mosaico de 4 imagens
mixup_probProbabilidade de mesclar uma segunda amostra
hsv_probProbabilidade de jitter de cor HSV
flip_probProbabilidade de flip horizontal
degreesFaixa de rotação aleatória para o warp afim, em graus
translateFração de translação aleatória para o warp afim
mosaic_scaleFaixa de escala aleatória para o warp afim
mixup_scaleFaixa de escala de jitter aplicada à imagem parceira do MixUp
shearFaixa de cisalhamento aleatório para o warp afim, em graus
perspectiveMagnitude do warp projetivo para o warp afim
flipudProbabilidade de flip vertical
no_aug_epochsÉpocas finais treinadas com o data augmentation forte desativado
auto_augmentPolítica AutoAugment de classificação: randaugment, autoaugment ou augmix
erasingProbabilidade de RandomErasing na classificação
mixupProbabilidade de MixUp por batch na classificação, com soft labels
cutmixProbabilidade de CutMix por batch na classificação, com soft labels

Os quatro últimos formam o pacote de classificação. As famílias de detecção os ignoram. mixup é um parâmetro exclusivo da API: na CLI, --mixup é o alias do mixup_prob de detecção.

Consultar a spec diretamente
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"))

Os três status

StatusSignificado
usedO parâmetro chega ao pipeline de treinamento da família e altera as amostras
gated_by_mosaicO parâmetro se aplica apenas às amostras que passaram pelo ramo do mosaico, então com mosaic_prob == 0 ele nunca dispara
ignoredO parâmetro nunca chega ao pipeline; defini-lo não faz nada

ignored é o que vale conferir antes de uma execução, porque nada falha. A CLI avisa quando um parâmetro de treinamento definido explicitamente é um dos que a família selecionada ignora, e o treinador avisa quando mixup_prob > 0 não pode disparar porque a família condiciona o MixUp ao mosaico e mosaic_prob é zero.

Arquétipos de pipeline

Toda família coberta segue um de seis pipelines, com um punhado de desvios por família listados abaixo.

ParâmetroEstilo YOLOXYOLO-NASEstilo DETRClassificaçãoSemânticaRestauração
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

No pipeline no estilo YOLOX, o pré-processamento por amostra aplica o jitter HSV e os flips, enquanto o warp afim e o MixUp rodam apenas dentro do ramo do mosaico. Já o YOLO-NAS roda um afim por amostra que está sempre ligado, ignora o mosaico e aplica o MixUp de forma independente, reaproveitando mosaic_scale como faixa de escala do afim.

O pipeline no estilo DETR é um transform de passagem, sem mosaico. Sua distorção fotométrica, o zoom-out e o crop por IoU são constantes da receita, e não parâmetros configuráveis, e é por isso que hsv_prob e os parâmetros de geometria nunca chegam até ele. O pipeline de classificação usa um transform de ImageFolder cujo flip horizontal é um 0.5 fixo, e não flip_prob. O jitter de escala e o HSV da semântica vêm de atributos de classe da família, e não de parâmetros de configuração, e os flips da restauração são operações acopladas de entrada e alvo, com probabilidade fixa de 0.5.

no_aug_epochs é respeitado em todo lugar, embora o que ele desliga varie: mosaico e MixUp no estilo YOLOX, o afim e o MixUp no YOLO-NAS, as augmentations fotométricas e de crop fortes mais a cauda do learning rate no estilo DETR, e a cauda do scheduler no resto.

Famílias por arquétipo

ArquétipoFamílias
Estilo YOLOXyolox, yolo7, yolo9, yolo9_e2e, yolo9_p2, rtmdet, picodet, rtdetr, rtdetrv2, fomo
YOLO-NASyolonas
Estilo DETRdfine, domedetr, deim, deimv2, rtdetrv4, rfdetr, ec, dinov2
Classificaçãoresnet, convnext, mobilenetv4, efficientnetv2
Semânticasegformer
Restauraçãonafnet

Vinte e cinco famílias são cobertas. Uma família fora desta lista retorna um conjunto de ignorados vazio, então nenhum aviso é emitido para ela.

Desvios

FamíliaDiferença em relação ao seu arquétipo
rtmdetflipud ignorado: seu transform não tem flip vertical
picodetflipud ignorado
rtdetrflipud ignorado
rtdetrv2flipud ignorado
fomoperspective e flipud ignorados
echsv_prob, degrees e translate usados, apenas para task="pose"; detect e segment usam receitas fotométricas fixas
dinov2O pacote de classificação é usado, apenas para task="classify"

ec e dinov2 são famílias multitarefa, então um parâmetro só é marcado como ignorado quando todas as tarefas treináveis da família o ignoram. Isso impede que o aviso da CLI seja errado para uma tarefa enquanto está certo para outra.

O Dome-DETR herda os transforms do D-FINE sem alterações. A única coisa que ele não aceita é o treinamento multiescala, que sua configuração desativa, e não a spec de augmentation.

Parâmetros específicos de família

Algumas famílias carregam parâmetros de data augmentation na sua própria subclasse de TrainConfig, e não na base. A CLI não expõe esses parâmetros; defina-os pela API Python.

FamíliaParâmetroSignificado
yolo9, yolo9_e2e, yolo9_p2copy_pasteProbabilidade do augmentation de instâncias copy-paste, apenas task="segment"
yolo9, yolo9_e2e, yolo9_p2copy_paste_modeOrigem do copy-paste: flip espelha a mesma amostra, mixup usa uma segunda amostra
yolo9, yolo9_e2e, yolo9_p2rot90Probabilidade de rotação aleatória de 90 graus
rfdetrcopy_pasteProbabilidade de copy-paste para task="segment", apenas no modo flip
rfdetrcopy_paste_modeModo de origem do copy-paste para task="segment"
rfdetrcrop_resize_probProbabilidade de crop-resize aleatório no pipeline nativo
dfinecrop_resize_probProbabilidade de crop-resize aleatório, task="segment"
eccrop_resize_probProbabilidade de crop-resize aleatório, task="segment"
ec, yolonasbrightness_contrast_probProbabilidade de jitter de brilho e contraste, task="pose"
ec, yolonasaffine_probProbabilidade de afim ciente de keypoints, task="pose"

rot90 se aplica a detect e OBB no yolo9.

Consultando a spec

HelperRetorna
aug_support(family)A tabela de parâmetro para Support, ou None para uma família desconhecida
ignored_aug_params(family)O conjunto de nomes de parâmetros que a família ignora; vazio para uma família desconhecida
uses_mosaic_gating(family)Se o MixUp da família dispara apenas em amostras de mosaico
display_name(family)O nome da família voltado para humanos, usado nos avisos
mixup_gating_warning(family, mosaic_prob, mixup_prob)O texto do aviso quando o MixUp nunca pode disparar, senão None

Um Support é uma tupla nomeada de status e note, em que a nota explica por que um parâmetro é ignorado ou condicionado para aquela família.

O gate do mosaico

Para uma família no estilo YOLOX, mixup_prob=0.5 com mosaic_prob=0 desativa o MixUp por completo, porque o MixUp se aplica apenas a amostras de mosaico. Essa combinação é fácil de alcançar ao desligar o mosaico no fim do treinamento. O treinador registra um aviso nomeando a família, e mixup_gating_warning é a função pura por trás dele.

A lista de parâmetros, os status, os arquétipos, os desvios por família e as funções helper foram lidos de libreyolo/data/augment/spec.py na v1.5.0. Essa tabela está ancorada nos pipelines reais por tests/unit/test_augment_spec.py.