Ir para o conteúdo

Técnicas de Pré-Processamento de Dados para Dados Anotados de Visão Computacional

Introdução

Depois de definir os objetivos do projeto de visão computacional e coletar e anotar os dados, o próximo passo é pré-processar os dados anotados e prepará-los para o treinamento do modelo. Dados limpos e consistentes são vitais para criar um modelo que tenha um bom desempenho.



Assista: Como Usar o Pré-Processamento e o Aumento de Dados para Melhorar a Precisão do Modelo em Cenários do Mundo Real 🚀

O pré-processamento é uma etapa no fluxo de trabalho de um projeto de visão computacional que inclui redimensionar imagens, normalizar valores de pixel, aumentar o conjunto de dados e dividir os dados em conjuntos de treinamento, validação e teste. Vamos explorar as técnicas essenciais e as melhores práticas para limpar seus dados!

Importância do Pré-processamento de Dados

Já estamos coletando e anotando nossos dados cuidadosamente com várias considerações em mente. Então, o que torna o pré-processamento de dados tão importante para um projeto de visão computacional? Bem, o pré-processamento de dados consiste em colocar seus dados em um formato adequado para treinamento, o que reduz a carga computacional e ajuda a melhorar o desempenho do modelo. Aqui estão alguns problemas comuns em dados brutos que o pré-processamento resolve:

  • 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 de Dados

Uma das primeiras e mais importantes etapas no pré-processamento de dados é o redimensionamento. Alguns modelos são projetados para lidar com tamanhos de entrada variáveis, mas muitos modelos exigem um tamanho de entrada consistente. Redimensionar imagens as torna uniformes e reduz a complexidade computacional.

Redimensionando Imagens

Você pode redimensionar suas imagens usando os seguintes métodos:

  • Interpolação Bilinear: Suaviza os valores dos pixels, fazendo uma média ponderada dos quatro valores de pixels mais próximos.
  • Vizinho Mais Próximo: Atribui o valor do pixel mais próximo sem calcular a média, levando a uma imagem em blocos, mas com uma computação mais rápida.

Para simplificar a tarefa de redimensionamento, você pode usar as seguintes ferramentas:

  • OpenCV: Uma biblioteca popular de visão computacional com extensas funções para processamento de imagem.
  • PIL (Pillow): Uma biblioteca de imagens python para abrir, manipular e salvar arquivos de imagem.

No que diz respeito ao YOLO11, o parâmetro 'imgsz' durante o treinamento do modelo permite tamanhos de entrada flexíveis. Quando definido para um tamanho específico, como 640, o modelo redimensionará as imagens de entrada para que sua maior dimensão seja de 640 pixels, mantendo a proporção original.

Ao avaliar as necessidades específicas do seu modelo e conjunto de dados, você pode determinar se o redimensionamento é uma etapa de pré-processamento necessária ou se o seu modelo pode lidar eficientemente com imagens de tamanhos variados.

Normalizando Valores de Pixel

Outra técnica de pré-processamento é a normalização. A normalização dimensiona os valores dos pixels para um intervalo padrão, o que ajuda numa convergência mais rápida durante o treino e melhora o desempenho do modelo. Aqui estão algumas técnicas de normalização comuns:

  • Escalonamento Min-Max: Escala os valores dos pixels para um intervalo de 0 a 1.
  • Normalização por Escore Z: Escala os valores dos pixels com base em sua média e desvio padrão.

No que diz respeito ao YOLO11, a normalização é tratada de forma integrada como parte de seu pipeline de pré-processamento durante o treinamento do modelo. O YOLO11 executa automaticamente várias etapas de pré-processamento, incluindo a conversão para RGB, o dimensionamento dos valores dos pixels para o intervalo [0, 1] e a normalização usando valores médios e de desvio padrão predefinidos.

Dividindo o Conjunto de Dados

Depois de limpar os dados, você está pronto para dividir o conjunto de dados. Dividir os dados em conjuntos de treinamento, validação e teste é feito para garantir que o modelo possa ser avaliado em dados não vistos para avaliar seu desempenho de generalização. Uma divisão comum é 70% para treinamento, 20% para validação e 10% para teste. Existem várias ferramentas e bibliotecas que você pode usar para dividir seus dados, como scikit-learn ou TensorFlow.

Considere o seguinte ao dividir seu conjunto de dados:

  • Manutenção da Distribuição de Dados: Garanta que a distribuição de dados das classes seja mantida nos conjuntos de treino, validação e teste.
  • Evitando Vazamento de Dados: Normalmente, o aumento de dados é feito após a divisão do conjunto de dados. O aumento de dados e qualquer outro pré-processamento devem ser aplicados apenas ao conjunto de treinamento para evitar que informações dos conjuntos de validação ou teste influenciem o treinamento do modelo.
  • Balanceamento de Classes: Para conjuntos de dados desequilibrados, considere técnicas como sobreamostragem da classe minoritária ou subamostragem da classe majoritária dentro do conjunto de treino.

O que é Aumento de Dados?

A etapa de pré-processamento de dados mais comumente discutida é o aumento de dados. O aumento de dados aumenta artificialmente o tamanho do dataset, criando versões modificadas das imagens. Ao aumentar seus dados, você pode reduzir o overfitting e melhorar a generalização do modelo.

Aqui estão alguns outros benefícios do aumento de dados:

  • Cria um Conjunto de Dados Mais Robusto: O aumento de dados pode tornar o modelo mais robusto a variações e distorções nos dados de entrada. Isto inclui alterações na iluminação, orientação e escala.
  • Económico: O aumento de dados é uma forma económica de aumentar a quantidade de dados de treino sem recolher e rotular novos dados.
  • Melhor Uso de Dados: Cada ponto de dados disponível é usado ao seu potencial máximo, criando novas variações

Métodos de Aumento de Dados

Técnicas comuns de aumento incluem inversão, rotação, escalonamento e ajustes de cor. Várias bibliotecas, como Albumentations, Imgaug e ImageDataGenerator do TensorFlow, podem gerar esses aumentos.

Visão Geral de Aumentos de Dados

No que diz respeito ao YOLO11, você pode aumentar seu conjunto de dados personalizado modificando o arquivo de configuração do conjunto de dados, um arquivo .yaml. Neste arquivo, você pode adicionar uma seção de aumento com parâmetros que especificam como você deseja aumentar seus dados.

O repositório Ultralytics YOLO11 suporta uma ampla gama de aumentos de dados. Você pode aplicar várias transformações, como:

  • Recortes Aleatórios
  • Inversão: As imagens podem ser invertidas horizontalmente ou verticalmente.
  • Rotação: As imagens podem ser rotacionadas em ângulos específicos.
  • Distorção

Além disso, você pode ajustar a intensidade dessas técnicas de aumento por meio de parâmetros específicos para gerar mais variedade de dados.

Um Estudo de Caso de Pré-processamento

Considere um projeto com o objetivo de desenvolver um modelo para detetar e classificar diferentes tipos de veículos em imagens de tráfego usando YOLO11. Recolhemos imagens de tráfego e anotámo-las com caixas delimitadoras e rótulos.

Veja como seria cada etapa do pré-processamento para este projeto:

  • Redimensionamento de Imagens: Como o YOLO11 lida com tamanhos de entrada flexíveis e realiza o redimensionamento automaticamente, o redimensionamento manual não é necessário. O modelo ajustará o tamanho da imagem de acordo com o parâmetro 'imgsz' especificado durante o treinamento.
  • Normalização de Valores de Pixel: O YOLO11 normaliza automaticamente os valores de pixel para um intervalo de 0 a 1 durante o pré-processamento, portanto, não é necessário.
  • Divisão do Conjunto de Dados: Divida o conjunto de dados em conjuntos de treino (70%), validação (20%) e teste (10%) usando ferramentas como o scikit-learn.
  • Aumento de Dados: Modifique o arquivo de configuração do conjunto de dados (.yaml) para incluir técnicas de aumento de dados, como recortes aleatórios, inversões horizontais e ajustes de brilho.

Essas etapas garantem que o conjunto de dados seja preparado sem problemas potenciais e esteja pronto para a Análise Exploratória de Dados (EDA).

Técnicas de Análise Exploratória de Dados

Após o pré-processamento e o aumento do seu conjunto de dados, a próxima etapa é obter insights por meio da Análise Exploratória de Dados. A EDA usa técnicas estatísticas e ferramentas de visualização para entender os padrões e distribuições em seus dados. Você pode identificar problemas como desequilíbrios de classe ou outliers e tomar decisões informadas sobre o pré-processamento adicional de dados ou ajustes no treinamento do modelo.

Técnicas de EDA Estatística

As técnicas estatísticas geralmente começam com o cálculo de métricas básicas, como média, mediana, desvio padrão e intervalo. Essas métricas fornecem uma visão geral rápida das propriedades do seu conjunto de dados de imagem, como distribuições de intensidade de pixel. A compreensão dessas estatísticas básicas ajuda você a compreender a qualidade geral e as características de seus dados, permitindo que você identifique quaisquer irregularidades precocemente.

Técnicas de EDA Visual

As visualizações são fundamentais na EDA para conjuntos de dados de imagem. Por exemplo, a análise de desequilíbrio de classes é outro aspecto vital da EDA. Ajuda a determinar se certas classes estão sub-representadas em seu conjunto de dados. Visualizar a distribuição de diferentes classes ou categorias de imagens usando gráficos de barras pode revelar rapidamente quaisquer desequilíbrios. Da mesma forma, outliers podem ser identificados usando ferramentas de visualização como box plots, que destacam anomalias na intensidade dos pixels ou distribuições de características. A detecção de outliers impede que pontos de dados incomuns distorçam seus resultados.

As ferramentas comuns para visualizações incluem:

  • Histogramas e Gráficos de Caixa: Útil para entender a distribuição dos valores dos pixels e identificar outliers.
  • Gráficos de Dispersão: Úteis para explorar relações entre características ou anotações de imagens.
  • Mapas de Calor: Eficaz para visualizar a distribuição de intensidades de pixels ou a distribuição espacial de recursos anotados dentro de imagens.

Usando o Ultralytics Explorer para EDA

Nota da Comunidade ⚠️

A partir de ultralytics>=8.3.10, o suporte ao Ultralytics Explorer foi descontinuado. Mas não se preocupe! Agora você pode acessar funcionalidades semelhantes e até aprimoradas através de Ultralytics HUB, a nossa plataforma intuitiva sem código, projetada para otimizar o seu fluxo de trabalho. Com o Ultralytics HUB, você pode continuar explorando, visualizando e gerenciando seus dados sem esforço, tudo isso sem escrever uma única linha de código. Não deixe de conferir e aproveitar seus recursos poderosos! 🚀

Para uma abordagem mais avançada de EDA, você pode usar a ferramenta Ultralytics Explorer. Ela oferece recursos robustos para explorar datasets de visão computacional. Ao suportar pesquisa semântica, consultas SQL e pesquisa de similaridade vetorial, a ferramenta facilita a análise e a compreensão de seus dados. Com o Ultralytics Explorer, você pode criar embeddings para seu dataset para encontrar imagens semelhantes, executar consultas SQL para análises detalhadas e realizar pesquisas semânticas, tudo por meio de uma interface gráfica amigável.

Visão Geral do Ultralytics Explorer

Entre em Contato e Conecte-se

Discutir sobre seu projeto com outros entusiastas de visão computacional pode lhe dar novas ideias de diferentes perspectivas. Aqui estão algumas ótimas maneiras de aprender, solucionar problemas e fazer networking:

Canais para se Conectar com a Comunidade

  • Problemas no GitHub: Visite o repositório YOLO11 no GitHub e use a aba Issues para levantar questões, reportar bugs e sugerir funcionalidades. A comunidade e os mantenedores estão lá para ajudar com qualquer problema que você enfrentar.
  • Servidor Ultralytics Discord: Junte-se ao servidor Ultralytics Discord para se conectar com outros usuários e desenvolvedores, obter suporte, compartilhar conhecimento e trocar ideias.

Documentação Oficial

  • Documentação Ultralytics YOLO11: Consulte a documentação oficial do YOLO11 para obter guias completos e informações valiosas sobre inúmeras tarefas e projetos de visão computacional.

Seu conjunto de dados está pronto!

Dados devidamente redimensionados, normalizados e aumentados melhoram o desempenho do modelo, reduzindo o ruído e melhorando a generalização. Ao seguir as técnicas de pré-processamento e as melhores práticas descritas neste guia, você pode criar um conjunto de dados sólido. Com o seu conjunto de dados pré-processado pronto, você pode prosseguir com confiança para as próximas etapas do seu projeto.

FAQ

Qual é a importância do pré-processamento de dados em projetos de visão computacional?

O pré-processamento de dados é essencial em projetos de visão computacional porque garante que os dados estejam limpos, consistentes e em um formato ideal para o treinamento do modelo. Ao abordar problemas como ruído, inconsistência e desequilíbrio nos dados brutos, as etapas de pré-processamento, como redimensionamento, normalização, aumento e divisão do conjunto de dados, ajudam a reduzir a carga computacional e a melhorar o desempenho do modelo. Para mais detalhes, visite as etapas de um projeto de visão computacional.

Como posso usar o Ultralytics YOLO para aumento de dados?

Para aumento de dados com Ultralytics YOLO11, você precisa modificar o arquivo de configuração do conjunto de dados (.yaml). Neste arquivo, você pode especificar várias técnicas de aumento, como recortes aleatórios, inversões horizontais e ajustes de brilho. Isso pode ser feito de forma eficaz usando as configurações de treinamento explicadas aqui. O aumento de dados ajuda a criar um conjunto de dados mais robusto, reduzir o overfitting e melhorar a generalização do modelo.

Quais são as melhores técnicas de normalização de dados para dados de visão computacional?

A normalização dimensiona os valores dos pixels para um intervalo padrão para uma convergência mais rápida e melhor desempenho durante o treinamento. As técnicas comuns incluem:

  • Escalonamento Min-Max: Escala os valores dos pixels para um intervalo de 0 a 1.
  • Normalização por Escore Z: Escala os valores dos pixels com base em sua média e desvio padrão.

Para o YOLO11, a normalização é tratada automaticamente, incluindo a conversão para RGB e o dimensionamento do valor dos pixels. Saiba mais sobre isso na seção de treinamento do modelo.

Como devo dividir meu conjunto de dados anotado para treinamento?

Para dividir seu conjunto de dados, uma prática comum é dividi-lo em 70% para treinamento, 20% para validação e 10% para teste. É importante manter a distribuição de dados das classes entre essas divisões e evitar a fuga de dados, realizando o aumento apenas no conjunto de treinamento. Utilize ferramentas como scikit-learn ou TensorFlow para uma divisão eficiente do conjunto de dados. Consulte o guia detalhado sobre preparação do conjunto de dados.

Posso lidar com tamanhos de imagem variáveis no YOLO11 sem redimensionamento manual?

Sim, o Ultralytics YOLO11 pode lidar com tamanhos de imagem variáveis por meio do parâmetro 'imgsz' durante o treinamento do modelo. Este parâmetro garante que as imagens sejam redimensionadas para que sua maior dimensão corresponda ao tamanho especificado (por exemplo, 640 pixels), mantendo a proporção. Para um manuseio de entrada mais flexível e ajustes automáticos, verifique a seção de treinamento do modelo.



📅 Criado há 1 ano ✏️ Atualizado há 2 meses

Comentários