Técnicas de pré-processamento de dados para dados anotados de visão computacional#
A pré-processamento de dados transforma imagens brutas e anotadas em entradas limpas e consistentes que um modelo de computer vision precisa para treinar bem. Com o Ultralytics YOLO26, as operações principais de pixels — conversão RGB, escala para [0, 1] e redimensionamento — são executadas automaticamente dentro do pipeline de treinamento, portanto o trabalho que resta é dividir seu conjunto de dados corretamente, balancear as classes e escolher as multiplicações. Este guia cobre essas técnicas essenciais: redimensionamento, normalização, divisão de conjuntos de dados, aumento de dados e análise exploratória de dados (EDA).
Watch: How to Use Data Preprocessing and Augmentation to Improve Model Accuracy in Real-World Scenarios 🚀
Esta etapa vem após você ter defined your project's goals e collected and annotated your data, e fica no início do computer vision project workflow.
Por que o pré-processamento importa#
O pré-processamento coloca seus dados em um formato que reduz a carga computacional e melhora o desempenho do modelo. Ele aborda três problemas comuns em dados brutos:
- Ruído: Variações irrelevantes ou aleatórias nos dados.
- Inconsistência: Variações em tamanhos, formatos e qualidade das imagens.
- Desequilíbrio: Distribuição desigual de classes ou categorias através do conjunto de dados.
Técnicas de pré-processamento#
As técnicas principais são redimensionamento, normalização, divisão de conjunto de dados e aumentação. Com o YOLO26, as duas primeiras são automáticas, enquanto a divisão e a aumentação são onde suas escolhas importam mais.
Redimensionamento de imagens#
Muitos modelos exigem um tamanho de entrada consistente, portanto, o redimensionamento torna as imagens uniformes e reduz a complexidade computacional. Dois métodos comuns de interpolação são:
- Interpolação Bilinear: Suaviza os valores dos pixels tirando uma média ponderada dos quatro pixels mais próximos.
- Vizinho Mais Próximo: Copia o valor do pixel mais próximo sem fazer média — é mais rápido, mas produz uma imagem mais pixelada.
Bibliotecas como OpenCV e PIL (Pillow) fornecem essas funções, mas com o YOLO26 você geralmente não redimensiona manualmente. O argumento imgsz durante o model training lida com isso: quando definido com um valor como 640, o YOLO dimensiona cada imagem para que sua maior dimensão tenha 640 pixels, preservando a proporção de aspecto, e em seguida preenche o lado mais curto (cinza padrão, valor 114) para alcançar uma entrada quadrada 640 × 640.
Normalização de valores de pixels#
A normalização escala os valores dos pixels para um intervalo padrão, o que ajuda o modelo a convergir mais rápido durante o treinamento. Duas técnicas comuns são:
- Escalonamento Mín-Máx: Escala os valores dos pixels para um intervalo de 0 a 1.
- Normalização Z-Score: Escala os valores dos pixels com base em sua média e desvio padrão.
O YOLO26 lida com a normalização automaticamente como parte do seu pipeline de pré-processamento: ele converte imagens para RGB e dimensiona os valores dos pixels para o intervalo [0, 1] dividindo por 255 (escala min-max). O YOLO não aplica normalização de média/desvio padrão (escore z) estilo ImageNet por padrão, portanto nenhuma etapa de normalização manual é necessária.
Divisão do conjunto de dados#
Dividir os dados em conjuntos de treinamento, validação e teste permite que você avalie o modelo em dados não vistos e meça sua generalização. Uma divisão comum é de 70% para treinamento, 20% para validação e 10% para testes. Ferramentas como scikit-learn ou TensorFlow tornam isso simples.
Mantenha estes pontos em mente ao dividir:
- Mantenha a distribuição de classes: Garanta que cada classe seja representada proporcionalmente nos conjuntos de treinamento, validação e teste.
- Equilibre as classes: Para conjuntos de dados desequilibrados, considere fazer oversampling da classe minoritária ou under-sampling da classe majoritária — apenas dentro do conjunto de treinamento.
Divida o conjunto de dados antes de aplicar qualquer aumentação ou outro pré-processamento, e aplique essas transformações apenas ao conjunto de treinamento. Aumentar antes da divisão permite que informações das imagens de validação ou teste influenciem o treinamento, produzindo pontuações enganosamente altas que colapsam em dados do mundo real.
Aumentando o conjunto de dados#
Data augmentation aumenta artificialmente o tamanho de um conjunto de dados criando versões modificadas de imagens existentes. Isso ajuda a reduzir o overfitting e melhora a generalização, com vários benefícios:
- Modelos mais robustos: Variações em iluminação, orientação e escala tornam o modelo resiliente a distorções do mundo real.
- Custo-efetivo: Você expande o conjunto de treinamento sem coletar e rotular novos dados.
- Melhor uso dos dados: Cada imagem anotada gera múltiplas variações de treinamento.
Com o YOLO26, o aumento é controlado por meio de training arguments passados para model.train() ou pelas flags CLI equivalentes — não editando o YAML do conjunto de dados, que define metadados do conjunto de dados como caminhos, nomes de classes e divisões. As aumentações integradas incluem:
- Mosaic, MixUp e CutMix (
mosaic,mixup,cutmix): Combinam várias imagens em uma única amostra de treinamento. - Flips (
fliplr,flipud): Espelham imagens horizontalmente ou verticalmente. - Geometric transforms (
degrees,translate,scale,shear,perspective): Rotacionam, deslocam, ampliam e distorcem imagens. - HSV color jitter (
hsv_h,hsv_s,hsv_v): Variam matiz, saturação e brilho. - Copy-paste (
copy_paste): Cola objetos entre imagens para segmentação.
from ultralytics import YOLO
model = YOLO("yolo26n.pt")
# Augmentation is configured with training arguments, not the dataset YAML
model.train(data="coco8.yaml", epochs=10, hsv_h=0.015, fliplr=0.5, mosaic=1.0, degrees=10.0)Para obter a lista completa de argumentos de aumento e seus valores padrão, consulte a referência de augmentation settings e o YOLO data augmentation guide dedicado. Se o pacote albumentations estiver instalado, o YOLO também habilita suas aumentações integradas baseadas no Albumentations automaticamente.
Um estudo de caso: Pré-processamento para detecção de veículos#
Considere um projeto para detectar e classificar veículos em imagens de tráfego com o YOLO26, começando com imagens anotadas com bounding boxes e rótulos. Veja como se parece cada decisão de pré-processamento:
- Resizing: Nenhum trabalho manual — o YOLO26 redimensiona para
imgszdurante o treinamento. - Normalization: Nenhum trabalho manual — o YOLO26 dimensiona os valores dos pixels para
[0, 1]automaticamente. - Divisão: Divida o conjunto de dados em 70% de treinamento, 20% de validação e 10% de teste, mantendo a distribuição de classes consistente entre as divisões.
- Augmentation: Defina argumentos de treinamento adequados para cenas de tráfego — por exemplo,
fliplrpara invariância de direção,hsv_vpara iluminação diurna/noturna emosaicpara densidade variada de objetos.
Com essas decisões tomadas, o conjunto de dados está pronto para Análise Exploratória de Dados (EDA).
Análise Exploratória de Dados (EDA)#
A EDA usa estatísticas e visualizações para revelar padrões e distribuições em seus dados, ajudando você a capturar problemas como desequilíbrio de classes ou outliers antes do treinamento.
Técnicas estatísticas de EDA#
A EDA estatística começa com métricas básicas — média, mediana, desvio padrão e intervalo — calculadas sobre propriedades como distribuições de intensidade de pixels. Elas fornecem uma visão geral rápida da qualidade do seu conjunto de dados e revelam irregularidades cedo.
Técnicas visuais de EDA#
Visualizações revelam padrões que as estatísticas resumidas perdem, como desequilíbrio de classes e outliers. Ferramentas comuns incluem:
- Histogramas e box plots: Mostram a distribuição dos valores de pixels e sinalizam outliers na intensidade ou nas distribuições de características.
- Gráficos de barras: Revelam desequilíbrio de classes comparando quantos exemplos cada classe possui.
- Gráficos de dispersão: Exploram relacionamentos entre características da imagem ou anotações.
- Mapas de calor: Visualizam distribuições de intensidade de pixels ou a distribuição espacial de anotações através das imagens.
Plataforma Ultralytics para EDA#
Para uma abordagem sem código para EDA, envie seu conjunto de dados para a Ultralytics Platform. A guia Charts do conjunto de dados gera automaticamente visualizações principais de EDA: distribuição de divisões, contagens das principais classes, histogramas de largura/altura de imagem e mapas de calor 2D de posições de anotação e dimensões de imagem. A guia Images permite que você navegue pelos seus dados em visualizações de grade, compactas ou em tabela com sobreposições de anotação, facilitando a identificação de exemplos rotulados incorretamente ou classes desbalanceadas sem escrever nenhum código.
Conclusão#
Dados devidamente divididos, normalizados e aumentados reduzem o ruído e melhoram a generalização, transformando uma coleção bruta de imagens em um conjunto de treinamento confiável. Com seu conjunto de dados pré-processado, a próxima etapa é train your model. Se surgirem dúvidas ao longo do caminho, pergunte à comunidade no Ultralytics GitHub repository ou no Ultralytics Discord server.
FAQ#
O pré-processamento garante que seus dados estejam limpos, consistentes e em um formato otimizado para treinamento. Ao lidar com ruídos, inconsistências e desbalanceamento de classes em dados brutos, etapas como redimensionamento, normalização, aumento e divisão de conjuntos de dados reduzem a carga computacional e melhoram o desempenho do modelo. Veja as steps of a computer vision project para saber como isso se encaixa no fluxo de trabalho mais amplo.
Configure o aumento por meio de argumentos de treinamento, e não pelo YAML do conjunto de dados. Passe argumentos como
fliplr,mosaic,hsv_hedegreesparamodel.train()(ou as flags CLI equivalentes) para definir a probabilidade e a força de cada transformação. Eles são definidos nas augmentation settings e explicados no YOLO data augmentation guide.As duas técnicas mais comuns são o escalonamento min-max (reescalar pixels para um intervalo de 0 a 1) e a normalização z-score (reescalar com base na média e desvio padrão). O YOLO26 aplica o escalonamento min-max automaticamente — convertendo imagens para RGB e dividindo os valores dos pixels por 255 — então você não precisa de uma etapa manual de normalização. Ele não aplica a normalização z-score por padrão.
Uma prática comum é 70% para treinamento, 20% para validação e 10% para testes. Mantenha a distribuição de classes em todas as três divisões e evite data leakage aplicando o aumento apenas ao conjunto de treinamento após a divisão. Ferramentas como scikit-learn ou TensorFlow lidam com a divisão de forma eficiente. Consulte o data collection and annotation guide para a preparação do conjunto de dados a montante.
Sim. O argumento
imgszredimensiona as imagens durante o treinamento e a inferência para que sua maior dimensão corresponda ao tamanho especificado (por exemplo, 640 pixels), preservando a proporção de aspecto, e em seguida preenche o lado mais curto. Você não precisa redimensionar as imagens por conta própria — consulte a documentação de model training para obter detalhes.