Ultralytics YOLO27: Inscreve-te na lista de espera.
Get Started
Aulainiciante

Use o aumento de dados com cuidado

Teste cada transformação com a câmera de implantação, crie um perfil justificado, treine com ele e confira o resultado nos lotes de treino.

Imagine uma linha de classificação que separa cápsulas vermelhas de cápsulas laranjas, treinada com a variação padrão de matiz. A cada época, o modelo vê cápsulas vermelhas tingidas de laranja e aprende que a cor não importa — justamente aquilo que precisava aprender. O aumento de dados só torna um modelo mais robusto quando cada transformação é algo que a câmera de implantação realmente poderia produzir. Esta lição apresenta o teste que determina quais transformações manter.

Resultado

Escolha um perfil de aumento de dados com uma justificativa de implantação de uma linha para cada argumento alterado, treine com ele e verifique-o em train_batch0.jpg.

Via rápida
Se já sabes orientar-te, aqui está a versão resumida.
  1. Primeiro, treine com o aumento de dados padrão e registre a linha de base.

  2. Desative transformações que a câmera nunca poderia produzir, como mudanças de matiz quando a cor define uma classe.

  3. Ative transformações que a câmera poderia produzir, como flipud para vistas de cima.

  4. Abra train_batch0.jpg e confirme que as caixas permanecem ajustadas e que os atributos distintivos das classes são preservados.

Prático

O que o aumento de dados faz#

Aumentos aplicados a uma foto de uma arara: inversão horizontal, recorte, desfoque mediano, contraste, mudança de matiz-saturação-valor e gama

O aumento de dados transforma imagens de treino durante a execução, para que o modelo veja uma versão ligeiramente diferente de cada imagem a cada época. Quando bem aplicado, melhora a robustez à iluminação, à escala e à orientação e reduz o sobreajuste, pois o modelo não consegue memorizar imagens que estão sempre mudando. Quando mal aplicado, ensina cenários fisicamente impossíveis e oculta lacunas no conjunto de dados que você deveria corrigir.

Observe o painel de matiz acima: a arara vermelha fica amarela. Isso é inofensivo para "arara vs. não arara", mas prejudicial se a cor for o que diferencia duas das suas classes.

As configurações padrão que importam#

Estas são as configurações padrão da Ultralytics 8.4; a referência de configurações de aumento de dados lista todos os argumentos:

ArgumentoPadrãoO que fazQuando alterar
hsv_h0.015Variação de matizDefina como 0 quando a cor definir uma classe
hsv_s / hsv_v0.7 / 0.4Variação de saturação e brilhoReduza se a iluminação for fixa e controlada
degrees0.0Rotação aleatória (±graus)Aumente quando os objetos aparecerem em qualquer ângulo
translate / scale0.1 / 0.5Deslocamento e zoomReduza se os recortes puderem cortar partes que definem a classe
fliplr0.5Probabilidade de inversão horizontalDefina como 0 quando a esquerda e a direita forem importantes, como no texto
flipud0.0Probabilidade de inversão verticalAumente para vistas de cima, aéreas ou de microscópio
mosaic1.0Combina quatro imagens em umaRaramente; consulte close_mosaic
close_mosaic10Desativa o mosaic nas últimas N épocasReduza para execuções muito curtas
mixup / cutmix0.0 / 0.0Combina duas imagens / cola um recorte de uma imagem sobre outraExperimente em conjuntos de dados pequenos, depois de estabelecer uma linha de base
copy_paste0.0Cola instâncias de objetos entre imagensConjuntos de dados de segmentação, segmentação semântica e OBB com classes raras

Conjuntos de dados de profundidade são a exceção: mosaic, mixup, cutmix e copy_paste produziriam mapas de profundidade pareados inválidos, então o carregador de profundidade os define automaticamente como 0.

O teste de implantação#

Cada transformação ativada precisa passar por uma pergunta e, depois, por outra:

TransformaçãoRealista?Decisão
Brilho ±30% em uma câmera externaSim: horário do diaManter
Inversão horizontal em uma câmera de segurançaSim: as pessoas caminham nos dois sentidosManter
Inversão vertical em uma câmera montada na paredeNão: o chão permanece na parte inferiorDesativar
Inversão vertical em uma câmera sobre uma esteira transportadoraSim: não existe “para cima” no enquadramentoAtivar
Rotação de 90° em uma câmera fixa de estradaNão: a câmera nunca giraDesativar
Deslocamento de matiz quando peças vermelhas e verdes pertencem a classes diferentesNão: destrói o sinalDesativar

Aumento por rotação de 180 graus: uma arara de cabeça para baixo, uma imagem que uma câmera fixa e vertical nunca produz

Uma arara de cabeça para baixo é uma boa imagem de treinamento para um drone apontado diretamente para baixo e uma imagem desperdiçada para uma câmera presa à parede. Transformações que não passam no teste produzem um sinal de treinamento negativo: o modelo aprende a reconhecer imagens que nunca verá, em detrimento da capacidade para reconhecer aquelas que verá.

Um perfil prático#

Uma câmera apontada para baixo sobre uma esteira transportadora separa peças cujas classes diferem apenas pela cor. O jitter de matiz deve ser removido, enquanto inversões verticais e pequenas rotações se tornam realistas. Isto é executado como mostrado no conjunto de demonstração COCO8; substitui o YAML dos teus dados e usa uma quantidade real de épocas:

from ultralytics import YOLO

model = YOLO("yolo26n.pt")
model.train(
    data="coco8.yaml",
    epochs=1,
    imgsz=320,
    hsv_h=0.0,  # a cor é o sinal da classe: mantenha os tons fiéis
    flipud=0.5,  # vista de cima: não há "cima" no quadro
    degrees=10.0,  # as peças aparecem em qualquer ângulo pequeno
)

Abre train_batch0.jpg na pasta da execução e verifica três coisas: as caixas continuam precisas após a transformação, os sinais que definem a classe (cor, forma, texto) permanecem intactos e nada parece fisicamente impossível. Reduz qualquer transformação que comprometa um desses pontos. Treina o teu primeiro modelo aborda a própria execução do treinamento.

Mosaic e close_mosaic#

Aumento Mosaic combinando quatro fotos de papagaios em uma imagem de treinamento

O Mosaic combina quatro imagens em uma e fica ativado por padrão. É o aumento com maior impacto para a detecção: cada imagem de treinamento reúne várias cenas, escalas e contextos de objetos. O problema é que as imagens Mosaic não se parecem com os quadros de inferência, então close_mosaic=10 o desativa nas 10 épocas finais e o modelo termina com entradas realistas. Desativar o Mosaic também desativa mixup, cutmix e copy_paste, enquanto as inversões, HSV e transformações geométricas continuam sendo aplicadas.

Execuções curtas nunca usam mosaico

Em execuções com duração de no máximo close_mosaic épocas, incluindo o perfil de uma época acima, o mosaico fica desativado desde a primeira época. Avalie o mosaico com base em train_batch0.jpg de uma execução de duração completa, não em um teste rápido.

O que o aumento de dados não consegue corrigir#

O aumento de dados multiplica o que já existe. Se o conjunto de dados não tiver imagens noturnas, nenhuma configuração produz a noite: ela só produz versões mais claras e mais escuras do dia. Se uma classe só funciona com um aumento agressivo, não tens exemplos suficientes dessa classe. Volta a Recolher dados representativos e de alta qualidade.

Aumentar todos os parâmetros ao máximo oculta o verdadeiro problema

Com um conjunto de dados pequeno, usar todas as ampliações no máximo faz o treinamento usar imagens cada vez mais diferentes das imagens de implantação, e o mAP de validação costuma cair. Altere um argumento por vez, com um motivo, e compare com a linha de base padrão na mesma divisão.

Quando os recortes apagam a classe

Se uma classe for definida por uma pequena parte do objeto, como o símbolo no canto de uma carta de baralho, mosaic, translate e scale podem recortar essa parte e criar uma imagem de treinamento que parece exatamente uma classe diferente. Reduza esses valores para esse conjunto de dados e confirme a correção em train_batch0.jpg.

Experimente

Marca cada argumento na tabela de valores padrão como manter, alterar ou desativar para a tua implantação, com uma linha de justificativa por alteração. Treina uma vez com os valores padrão e outra com o teu perfil, usando a mesma divisão, e regista o mAP50-95 de validação de ambos. Entrega: a tabela anotada, as duas pontuações e um train_batch0.jpg da execução personalizada.

Concluído quando
Você concluiu a aula quando todos estes critérios forem atendidos.
  • Cada argumento alterado tem uma justificativa de uma linha relacionada à implantação.

  • Os perfis padrão e personalizado são comparados na mesma divisão de validação.

  • train_batch0.jpg da execução personalizada mostra caixas precisas e sinais de classe intactos.

Mostrar solução

Um drone inspeciona um porto diretamente de cima, detectando navios com caixas orientadas. Desse ponto de vista, não existe “para cima”, os navios apontam em todas as direções e a cor não define a classe:

ArgumentoEscolhaJustificativa
flipud0.5Uma vista de cima parece igual quando invertida verticalmente
degrees180Os navios aparecem em todas as orientações
hsv_hpadrãoA cor do casco varia e não é um sinal de classe
mosaicpadrãoMuitos objetos pequenos por imagem; o Mosaic ajuda

No conjunto de demonstração aérea DOTA8:

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

Para uma câmera fixa de rua, as mesmas duas alterações não passariam no teste de implantação: os carros nunca ficam de cabeça para baixo em uma transmissão de uma câmera montada na parede.

Próximos passos

O conjunto de dados, as divisões e o aumento estão prontos; a próxima lição determina objetivamente se o conjunto de dados está pronto para treinamento.

Entre para salvar seu progresso