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. train() e a CLI mapeiam as grafias curtas 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
perspectiveIntensidade do warp projetivo somado ao warp afim: os cantos do canvas se movem para dentro em até min(perspective * 100, 0.2) vezes metade do lado do canvas, por eixo; 0 desativa
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 os controles de classificação. As famílias de detecção os ignoram. train() e a CLI direcionam mixup para a mistura de lotes nos classificadores e para mixup_prob nos detectores.

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_probusedusedusedusedignoredignored
degreesgatedusedignoredignoredignoredignored
translategatedusedignoredignoredignoredignored
mosaic_scalegatedusedignoredignoredignoredignored
mixup_scalegatedusedignoredignoredignoredignored
sheargatedusedignoredignoredignoredignored
perspectivegatedusedignoredignoredignoredignored
flipudusedusedignoredusedignoredignored
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 do tipo DETR usa uma transformação sem mosaic. Distorção fotométrica, zoom-out e recorte por IoU são constantes da receita, não parâmetros configuráveis; por isso, hsv_prob e os controles geométricos não os alteram. A classificação usa flip_prob para inversões horizontais e flipud para verticais. A variação de escala e HSV da segmentação semântica vem de atributos da classe do modelo; na restauração, entrada e alvo são invertidos juntos com probabilidade fixa de 0.5.

no_aug_epochs é respeitado em todos os pipelines, mas desativa operações diferentes: mosaic e MixUp nos pipelines do tipo YOLOX; transformação afim e MixUp no YOLO-NAS; aumentos fotométricos fortes e recorte, com a parte final do cronograma da taxa de aprendizado, no DETR; aumento automático, erasing, MixUp e CutMix na classificação. Os recortes e as inversões da classificação continuam ativos.

Famílias por arquétipo

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

Trinta e uma 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
ppyoloeflipud ignorado: a receita de origem usa uma rotação aleatória de 90 graus no lugar
gtrmosaic_prob e mixup_prob usados, durante as primeiras mosaic_epochs épocas; degrees, translate e mosaic_scale moldam o afim que segue o mosaic
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.6.0. Essa tabela está ancorada nos pipelines reais por tests/unit/test_augment_spec.py.