Ultralytics YOLO27:
Get Started

Técnicas de pré-processamento de dados anotados de visão computacional#

O pré-processamento de dados transforma imagens brutas anotadas em entradas limpas e consistentes de que um modelo de visão computacional precisa para treinar bem. Com o Ultralytics YOLO26, as operações essenciais sobre píxeis — conversão para RGB, escalonamento para [0, 1] e redimensionamento — são executadas automaticamente no pipeline de treino. Assim, o trabalho restante consiste em dividir corretamente o conjunto de dados, equilibrar as classes e escolher as ampliações. Este guia aborda estas técnicas essenciais: redimensionamento, normalização, divisão do conjunto de dados, aumento de dados e análise exploratória de dados (EDA).



Assista: Como usar o pré-processamento e o aumento de dados para melhorar a precisão do modelo em cenários reais 🚀

Esta etapa ocorre depois de definires os objetivos do projeto e recolheres e anotares os dados, e integra as primeiras fases do fluxo de trabalho de um projeto de visão computacional.

Porque é que o pré-processamento é importante#

O pré-processamento coloca os dados num formato que reduz a carga computacional e melhora o desempenho do modelo. Resolve três problemas comuns dos dados brutos:

  • Ruído: variações irrelevantes ou aleatórias nos dados.
  • Inconsistência: variações nos tamanhos, formatos e qualidade das imagens.
  • Desequilíbrio: distribuição desigual de classes ou categorias no conjunto de dados.

Técnicas de pré-processamento#

As principais técnicas são o redimensionamento, a normalização, a divisão do conjunto de dados e o aumento de dados. No YOLO26, as duas primeiras são automáticas, enquanto as escolhas mais importantes dizem respeito à divisão e ao aumento de dados.

Redimensionar imagens#

Muitos modelos exigem um tamanho de entrada consistente, por isso o redimensionamento uniformiza as imagens e reduz a complexidade computacional. Dois métodos de interpolação comuns são:

  • Interpolação bilinear: suaviza os valores dos píxeis através de uma média ponderada dos quatro píxeis mais próximos.
  • Vizinho mais próximo: copia o valor do píxel mais próximo sem calcular a média — é mais rápido, mas produz uma imagem mais pixelizada.

Bibliotecas como OpenCV e PIL (Pillow) disponibilizam estas funções, mas, com YOLO26, normalmente não precisas de redimensionar as imagens manualmente. O argumento imgsz trata disso. No percurso de tamanho quadrado fixo, a validação e a inferência ajustam as imagens com letterboxing para uma entrada imgsz × imgsz, como 640 × 640, preservando a proporção e adicionando margens cinzentas (valor 114). As imagens maiores são reduzidas para caber, enquanto as imagens menores não são ampliadas quando a opção de aumento de escala está desativada. No percurso de treino predefinido, mosaic=1.0 coloca, em vez disso, quatro imagens num mosaico sobre uma tela maior e recorta-a para imgsz; quando close_mosaic desativa o mosaico nas épocas finais, as imagens recebem letterboxing e continuam a ser transformadas aleatoriamente, em vez de passarem sem alterações. Os lotes retangulares (rect=True) e multi_scale usam formas de entrada diferentes.

Normalizar os valores dos píxeis#

A normalização ajusta os valores dos píxeis a um intervalo padrão, o que ajuda o modelo a convergir mais rapidamente durante o treino. Duas técnicas comuns são:

  • Escalonamento min-max: ajusta os valores dos píxeis ao intervalo de 0 a 1.
  • Normalização z-score: ajusta os valores dos píxeis com base na média e no desvio padrão.

O YOLO26 trata automaticamente da normalização como parte do pipeline de pré-processamento: converte as imagens para RGB e ajusta os valores dos píxeis ao intervalo [0, 1], dividindo-os por 255 (escalonamento min-max). Por predefinição, o YOLO não aplica a normalização de média/desvio padrão ao estilo ImageNet (z-score), pelo que não é necessária nenhuma etapa de normalização manual.

Dividir o conjunto de dados#

Dividir os dados em conjuntos de treino, validação e teste permite avaliar o modelo com dados que não viu e medir a sua capacidade de generalização. Uma divisão comum é 70% para treino, 20% para validação e 10% para teste. Ferramentas como scikit-learn ou TensorFlow tornam este processo simples.

Tem estes pontos em conta ao dividir os dados:

  • Mantém a distribuição das classes: garante que cada classe está representada proporcionalmente nos conjuntos de treino, validação e teste.
  • Equilibra as classes: em conjuntos de dados desequilibrados, considera sobreamostrar a classe minoritária ou subamostrar a classe maioritária — apenas no conjunto de treino.
Evita a fuga de dados

Divide o conjunto de dados antes de aplicar qualquer aumento de dados ou outro pré-processamento e aplica essas transformações apenas ao conjunto de treino. Aumentar os dados antes da divisão permite que as informações das imagens de validação ou teste influenciem o treino, produzindo pontuações artificialmente elevadas que caem perante dados do mundo real.

Aumentar o conjunto de dados#

O aumento de dados aumenta artificialmente o tamanho de um conjunto de dados, criando versões modificadas das imagens existentes. Ajuda a reduzir o sobreajuste e melhora a generalização, com várias vantagens:

  • Modelos mais robustos: variações na iluminação, orientação e escala tornam o modelo mais resiliente a distorções do mundo real.
  • Rentável: expande o conjunto de treino sem recolher e rotular dados novos.
  • Melhor aproveitamento dos dados: cada imagem anotada gera várias versões de treino.

Examples of data augmentation techniques including flips, rotations, scaling, and color adjustments applied to a sample image

No YOLO26, a intensidade do aumento de dados é controlada através dos argumentos de treino passados a model.train() ou das flags CLI equivalentes, não através da edição do YAML do conjunto de dados, que define metadados como caminhos, nomes de classes e divisões. A única exceção é flip_idx: os conjuntos de dados de pose declaram-no no YAML do conjunto de dados para mapear pares de pontos-chave esquerdo/direito, e o YOLO desativa completamente fliplr e flipud quando esse elemento está em falta. Os aumentos integrados incluem:

  • Mosaico, MixUp e CutMix (mosaic, mixup, cutmix): combinam várias imagens numa única amostra de treino.
  • Inversões (fliplr, flipud): espelham as imagens na horizontal ou na vertical.
  • Transformações geométricas (degrees, translate, scale, shear, perspective): rodam, deslocam, ampliam e deformam as imagens.
  • Variação de cor HSV (hsv_h, hsv_s, hsv_v): varia a tonalidade, a saturação e o brilho.
  • Copiar e colar (copy_paste): cola cópias adicionais de objetos segmentados, espelhadas por predefinição na mesma imagem ou retiradas de outra imagem com copy_paste_mode=mixup.
  • Troca de canais (bgr): troca a ordem dos canais RGB para BGR.
  • Transformações de classificação (auto_augment, erasing): aplica uma política de aumento automatizada e apagamento aleatório durante o treino de um classificador.
Define a intensidade do aumento de dados durante o treino
from ultralytics import YOLO

model = YOLO("yolo26n.pt")

# A ampliação é configurada com argumentos de treino, não no YAML do conjunto de dados
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 dos argumentos de aumento de dados e dos respetivos valores predefinidos, consulta a referência de definições de aumento de dados e o guia de aumento de dados do YOLO dedicado. Se o pacote albumentations estiver instalado, o YOLO também ativa automaticamente os aumentos integrados baseados em Albumentations.

Estudo de caso: pré-processamento para deteção de veículos#

Considera um projeto para detetar e classificar veículos em imagens de trânsito com YOLO26, usando imagens anotadas com caixas delimitadoras e rótulos. Eis como se concretiza cada decisão de pré-processamento:

  • Redimensionamento: não é necessário trabalho manual — o YOLO26 redimensiona para imgsz durante o treino.
  • Normalização: não é necessário trabalho manual — o YOLO26 ajusta automaticamente os valores dos píxeis para [0, 1].
  • Divisão: divide o conjunto de dados em 70% para treino, 20% para validação e 10% para teste, mantendo a distribuição das classes consistente entre as divisões.
  • Aumento de dados: define argumentos de treino adequados a cenários de trânsito — por exemplo, fliplr para invariância à direção, hsv_v para iluminação diurna/noturna e mosaic para densidades de objetos variadas.

Com estas decisões tomadas, o conjunto de dados está pronto para a 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 nos dados, ajudando a detetar problemas como o desequilíbrio de classes ou valores atípicos antes do treino.

Técnicas estatísticas de EDA#

A EDA estatística começa por métricas básicas — média, mediana, desvio padrão e amplitude — calculadas sobre propriedades como as distribuições da intensidade dos píxeis. Estas métricas dão uma visão geral rápida da qualidade do conjunto de dados e revelam irregularidades numa fase inicial.

Técnicas visuais de EDA#

As visualizações revelam padrões que as estatísticas sumárias não mostram, como o desequilíbrio de classes e os valores atípicos. Entre as ferramentas comuns estão:

  • Histogramas e diagramas de caixa: mostram a distribuição dos valores dos píxeis e assinalam valores atípicos nas distribuições de intensidade ou de características.
  • Gráficos de barras: revelam o desequilíbrio de classes ao comparar o número de exemplos de cada classe.
  • Gráficos de dispersão: exploram relações entre características das imagens ou anotações.
  • Mapas de calor: visualizam as distribuições da intensidade dos píxeis ou a distribuição espacial das anotações nas imagens.

Ultralytics Platform para EDA#

Para fazer EDA sem código, carrega o conjunto de dados para a Ultralytics Platform. O separador Charts do conjunto de dados gera automaticamente visualizações essenciais de EDA: distribuição das divisões, contagens das principais classes, histogramas da largura/altura das imagens e mapas de calor 2D das posições das anotações e das dimensões das imagens. O separador Images permite explorar os dados em grelha, numa vista compacta ou em tabela, com sobreposições das anotações, facilitando a deteção de exemplos mal rotulados ou de classes desequilibradas sem escrever código.

Conclusão#

Dados divididos, normalizados e aumentados corretamente reduzem o ruído e melhoram a generalização, transformando uma coleção bruta de imagens num conjunto de treino fiável. Com o conjunto de dados pré-processado, o passo seguinte é treinar o modelo. Se surgirem dúvidas pelo caminho, pergunta à comunidade no repositório do Ultralytics no GitHub ou no servidor do Ultralytics no Discord.

Perguntas frequentes#

  • O pré-processamento garante que os dados estão limpos, consistentes e num formato otimizado para o treino. Ao resolver problemas de ruído, inconsistência e desequilíbrio de classes nos dados brutos, etapas como o redimensionamento, a normalização, o aumento de dados e a divisão do conjunto de dados reduzem a carga computacional e melhoram o desempenho do modelo. Consulta as etapas de um projeto de visão computacional para perceber como se enquadra no fluxo de trabalho mais amplo.

  • Configura o aumento de dados através dos argumentos de treino, não do YAML do conjunto de dados. Passa argumentos como fliplr, mosaic, hsv_h e degrees para model.train() (ou usa as flags CLI equivalentes) para definir a probabilidade e a intensidade de cada transformação. Estes argumentos estão definidos nas definições de aumento de dados e são explicados no guia de aumento de dados do YOLO. Os conjuntos de dados de pose são uma exceção: o mapeamento de pontos-chave flip_idx fica no YAML do conjunto de dados e as inversões são desativadas quando esse mapeamento está em falta.

  • As duas técnicas mais comuns são o escalonamento min-max (redimensionar os píxeis para o intervalo de 0 a 1) e a normalização z-score (redimensionar com base na média e no desvio padrão). O YOLO26 aplica automaticamente o escalonamento min-max — convertendo as imagens para RGB e dividindo os valores dos píxeis por 255 —, pelo que não precisas de uma etapa de normalização manual. Por predefinição, não aplica a normalização z-score.

  • Uma prática comum é reservar 70% para treino, 20% para validação e 10% para teste. Mantém a distribuição das classes nas três divisões e evita a fuga de dados, aplicando o aumento de dados apenas ao conjunto de treino, depois da divisão. Ferramentas como scikit-learn ou TensorFlow dividem os dados de forma eficiente. Consulta o guia de recolha e anotação de dados para informações sobre a preparação prévia do conjunto de dados.

  • Sim. O argumento imgsz controla o tamanho de entrada pretendido, sem necessidade de trabalho manual. No percurso de tamanho quadrado fixo, a validação e a inferência ajustam as imagens com letterboxing para a forma especificada, preservando a proporção; as imagens maiores são reduzidas para caber, enquanto as imagens menores não são ampliadas quando a opção de aumento de escala está desativada. Durante o treino, o aumento de dados de mosaico predefinido atinge o tamanho pretendido colocando quatro imagens num mosaico e recortando-as. Os lotes retangulares (rect=True) e multi_scale usam formas de entrada diferentes. Consulta a documentação de treino de modelos para mais detalhes.

Comentários