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.
Prático
O que o aumento de dados faz#

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:
| Argumento | Padrão | O que faz | Quando alterar |
|---|---|---|---|
hsv_h | 0.015 | Variação de matiz | Defina como 0 quando a cor definir uma classe |
hsv_s / hsv_v | 0.7 / 0.4 | Variação de saturação e brilho | Reduza se a iluminação for fixa e controlada |
degrees | 0.0 | Rotação aleatória (±graus) | Aumente quando os objetos aparecerem em qualquer ângulo |
translate / scale | 0.1 / 0.5 | Deslocamento e zoom | Reduza se os recortes puderem cortar partes que definem a classe |
fliplr | 0.5 | Probabilidade de inversão horizontal | Defina como 0 quando a esquerda e a direita forem importantes, como no texto |
flipud | 0.0 | Probabilidade de inversão vertical | Aumente para vistas de cima, aéreas ou de microscópio |
mosaic | 1.0 | Combina quatro imagens em uma | Raramente; consulte close_mosaic |
close_mosaic | 10 | Desativa o mosaic nas últimas N épocas | Reduza para execuções muito curtas |
mixup / cutmix | 0.0 / 0.0 | Combina duas imagens / cola um recorte de uma imagem sobre outra | Experimente em conjuntos de dados pequenos, depois de estabelecer uma linha de base |
copy_paste | 0.0 | Cola instâncias de objetos entre imagens | Conjuntos 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ção | Realista? | Decisão |
|---|---|---|
| Brilho ±30% em uma câmera externa | Sim: horário do dia | Manter |
| Inversão horizontal em uma câmera de segurança | Sim: as pessoas caminham nos dois sentidos | Manter |
| Inversão vertical em uma câmera montada na parede | Não: o chão permanece na parte inferior | Desativar |
| Inversão vertical em uma câmera sobre uma esteira transportadora | Sim: não existe “para cima” no enquadramento | Ativar |
| Rotação de 90° em uma câmera fixa de estrada | Não: a câmera nunca gira | Desativar |
| Deslocamento de matiz quando peças vermelhas e verdes pertencem a classes diferentes | Não: destrói o sinal | Desativar |

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#

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.
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.
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.
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.
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:
| Argumento | Escolha | Justificativa |
|---|---|---|
flipud | 0.5 | Uma vista de cima parece igual quando invertida verticalmente |
degrees | 180 | Os navios aparecem em todas as orientações |
hsv_h | padrão | A cor do casco varia e não é um sinal de classe |
mosaic | padrão | Muitos 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=180Para 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.