YOLO Vision 2026:

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

O pré-processamento de dados transforma imagens brutas e anotadas nas 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, escalamento para [0, 1] e redimensionamento — são executadas automaticamente no pipeline de treino, pelo que o trabalho restante consiste em dividir corretamente o dataset, equilibrar as classes e escolher as técnicas de aumento. Este guia aborda essas técnicas essenciais: redimensionamento, normalização, divisão do dataset, 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 🚀

Este passo ocorre depois de teres definido os objetivos do teu projeto e recolhido e anotado os teus dados, e situa-se no início do fluxo de trabalho de um projeto de visão computacional.

Porque é importante o pré-processamento#

O pré-processamento coloca os teus 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 dataset.

Técnicas de pré-processamento#

As principais técnicas são o redimensionamento, a normalização, a divisão do dataset e o aumento de dados. Com o YOLO26, as duas primeiras são automáticas, enquanto a divisão e o aumento de dados são as áreas em que as tuas escolhas têm maior impacto.

Redimensionar imagens#

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

  • Interpolação bilinear: Suaviza os valores dos píxeis calculando 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 uma média — é mais rápido, mas produz uma imagem mais pixelizada.

Bibliotecas como o OpenCV e o PIL (Pillow) disponibilizam estas funções, mas com o YOLO26 normalmente não precisas de redimensionar manualmente. O argumento imgsz trata disso. No percurso quadrado de tamanho fixo, a validação e a inferência aplicam letterbox às imagens em direção a uma entrada imgsz × imgsz, como 640 × 640, preservando a proporção e preenchendo com cinzento (valor 114). As imagens maiores são reduzidas para caber, enquanto as imagens menores não são ampliadas quando o aumento de escala está desativado. No percurso predefinido de treino, mosaic=1.0 coloca quatro imagens lado a lado numa tela maior e recorta-a de volta para imgsz; quando close_mosaic desativa o mosaico nas épocas finais, as imagens recebem letterbox 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:

  • Escalamento Min-Max: Ajusta os valores dos píxeis para um 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 seu pipeline de pré-processamento: converte as imagens para RGB e ajusta os valores dos píxeis ao intervalo [0, 1], dividindo-os por 255 (escalamento min-max). O YOLO não aplica por predefinição a normalização de média e desvio padrão ao estilo do ImageNet (z-score), pelo que não é necessário um passo de normalização manual.

Dividir o dataset#

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 o scikit-learn ou o TensorFlow tornam este processo simples.

Tem em conta estes pontos ao fazer a divisão:

  • Manter a distribuição das classes: Garante que cada classe é representada proporcionalmente nos conjuntos de treino, validação e teste.
  • Equilibrar as classes: Para datasets desequilibrados, considera sobreamostrar a classe minoritária ou subamostrar a classe maioritária — apenas no conjunto de treino.
Evitar a fuga de dados

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

Aumentar o dataset#

O aumento de dados aumenta artificialmente o tamanho de um dataset ao criar versões modificadas de imagens existentes. Ajuda a reduzir o sobreajuste e melhora a generalização, com vários benefícios:

  • Modelos mais robustos: Variações na iluminação, orientação e escala tornam o modelo resistente a distorções do mundo real.
  • Económico: Expande o conjunto de treino sem recolher e etiquetar novos dados.
  • Melhor utilização dos dados: Cada imagem anotada gera várias variações de treino.

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

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

  • Mosaic, MixUp e CutMix (mosaic, mixup, cutmix): Combinam várias imagens numa única amostra de treino.
  • Inversões (fliplr, flipud): Espelham as imagens horizontal ou verticalmente.
  • 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): Variam a tonalidade, a saturação e o brilho.
  • Copy-paste (copy_paste): Cola cópias adicionais de objetos segmentados, espelhadas por predefinição dentro da mesma imagem ou obtidas 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 automatizada de aumento e apagamento aleatório ao treinar um classificador.
Definir a intensidade do aumento durante o treino
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 os respetivos valores predefinidos, consulta a referência de definições de aumento e o guia dedicado ao aumento de dados do YOLO. Se o pacote albumentations estiver instalado, o YOLO também ativa automaticamente os seus 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 o YOLO26, começando por imagens anotadas com caixas delimitadoras e etiquetas. Eis o aspeto de cada decisão de pré-processamento:

  • Redimensionamento: Nenhum trabalho manual — o YOLO26 redimensiona para imgsz durante o treino.
  • Normalização: Nenhum trabalho manual — o YOLO26 ajusta automaticamente os valores dos píxeis para [0, 1].
  • Divisão: Divide o dataset em 70% para treino, 20% para validação e 10% para teste, mantendo a distribuição das classes consistente entre as divisões.
  • Aumento: Define argumentos de treino adequados a cenas de trânsito — por exemplo, fliplr para invariância de direção, hsv_v para iluminação diurna/noturna e mosaic para diferentes densidades de objetos.

Com estas decisões tomadas, o dataset está pronto para a análise exploratória de dados (EDA).

Análise exploratória de dados (EDA)#

A EDA utiliza estatísticas e visualizações para revelar padrões e distribuições nos teus dados, ajudando-te a detetar problemas como desequilíbrios entre classes ou valores atípicos antes do treino.

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 as distribuições da intensidade dos píxeis. Estas métricas fornecem uma visão geral rápida da qualidade do teu dataset 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 detetam, como desequilíbrios entre classes e valores atípicos. As ferramentas comuns incluem:

  • 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 entre 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 uma abordagem sem código à EDA, carrega o teu dataset na Ultralytics Platform. O separador Charts do dataset 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 teus dados nas vistas de grelha, compacta ou tabela, com sobreposições de anotações, facilitando a identificação de exemplos etiquetados incorretamente ou de classes desequilibradas sem escrever qualquer código.

Conclusão#

Dados corretamente divididos, normalizados e aumentados reduzem o ruído e melhoram a generalização, transformando uma coleção bruta de imagens num conjunto de treino fiável. Com o teu dataset pré-processado, o passo seguinte é treinar o teu 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 teus dados estão limpos, consistentes e num formato otimizado para o treino. Ao resolver o ruído, a inconsistência e o desequilíbrio entre classes nos dados brutos, passos como o redimensionamento, a normalização, o aumento de dados e a divisão do dataset reduzem a carga computacional e melhoram o desempenho do modelo. Consulta as etapas de um projeto de visão computacional para perceber como se integra no fluxo de trabalho geral.

  • Configura o aumento de dados através de argumentos de treino, e não do YAML do dataset. Passa argumentos como fliplr, mosaic, hsv_h e degrees para model.train() (ou os sinalizadores CLI equivalentes) para definir a probabilidade e a intensidade de cada transformação. Estes argumentos estão definidos nas definições de aumento e são explicados no guia de aumento de dados do YOLO. Os datasets de pose são a exceção: o mapeamento de pontos-chave flip_idx fica no YAML do dataset, e as inversões são desativadas sem ele.

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

  • Uma prática comum é usar 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 apenas ao conjunto de treino depois da divisão. Ferramentas como o scikit-learn ou o TensorFlow tratam da divisão de forma eficiente. Consulta o guia de recolha e anotação de dados para a preparação anterior do dataset.

  • Sim. O argumento imgsz controla o tamanho de entrada pretendido sem trabalho manual. No percurso quadrado de tamanho fixo, a validação e a inferência aplicam letterbox às imagens em direção à forma especificada, preservando a proporção; as imagens maiores são reduzidas para caber, enquanto as imagens menores não são ampliadas quando o aumento de escala está desativado. Durante o treino, o aumento de dados mosaic predefinido atinge o tamanho pretendido colocando quatro imagens lado a lado 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 obter detalhes.

Comentários