Salta para o conteúdo

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

Introdução

Depois de definir os objectivos do projeto de visão por computador e de recolher e anotar os dados, o passo seguinte é pré-processar os dados anotados e prepará-los para a formação do modelo. Dados limpos e consistentes são vitais para criar um modelo com bom desempenho.

O pré-processamento é um passo no fluxo de trabalho do projeto de visão computacional que inclui o redimensionamento de imagens, a normalização dos valores de pixel, o aumento do conjunto de dados e a divisão dos dados em conjuntos de treino, validação e teste. Vamos explorar as técnicas essenciais e as melhores práticas para limpar os teus dados!

Importância do pré-processamento de dados

Já estamos coletando e anotando nossos dados cuidadosamente com diversas 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 que reduza a carga computacional e ajude a melhorar o desempenho do modelo. Aqui estão alguns problemas comuns em dados brutos que o pré-processamento aborda:

  • 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. O redimensionamento de imagens torna-as uniformes e reduz a complexidade computacional.

Redimensionar imagens

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

  • Interpolação bilinear: Suaviza os valores de pixel fazendo uma média ponderada dos quatro valores de pixel mais próximos.
  • Vizinho mais próximo: Atribui o valor do pixel mais próximo sem calcular a média, o que leva a uma imagem com blocos, mas a um cálculo mais rápido.

Para tornar o redimensionamento uma tarefa mais simples, você pode usar as seguintes ferramentas:

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

Relativamente a YOLOv8, o parâmetro 'imgsz' durante o treino do modelo permite tamanhos de entrada flexíveis. Quando definido para um tamanho específico, como 640, o modelo redimensiona as imagens de entrada para que a sua maior dimensão seja 640 pixels, mantendo a relação de aspeto original.

Ao avaliar as necessidades específicas do seu modelo e do conjunto de dados, você pode determinar se o redimensionamento é uma etapa de pré-processamento necessária ou se o seu modelo pode lidar com eficiência 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 na convergência mais rápida durante o treinamento e melhora o desempenho do modelo. Aqui estão algumas técnicas comuns de normalização:

  • Escala Mín-Máx: Escala os valores de pixel para um intervalo de 0 a 1.
  • Normalização de Z-Score: Escala os valores de pixel com base em sua média e desvio padrão.

Em relação a YOLOv8 , a normalização é tratada perfeitamente como parte do pipeline de pré-processamento durante o treinamento do modelo. YOLOv8 executa automaticamente várias etapas de pré-processamento, incluindo conversão para RGB, dimensionamento de valores de pixel para o intervalo [0, 1] e normalização usando valores de média e desvio padrão predefinidos.

Dividindo o conjunto de dados

Depois de limpar os dados, você estará pronto para dividir o conjunto de dados. A divisão dos dados em conjuntos de treinamento, validação e teste é feita para garantir que o modelo possa ser avaliado em dados não vistos para avaliar seu desempenho de generalização. Uma divisão comum é de 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:

  • Atualizar a distribuição de dados: Assegura que a distribuição de dados das classes é mantida nos conjuntos de treino, validação e teste.
  • Evitar a fuga de dados: Normalmente, o aumento de dados é efectuado após a divisão do conjunto de dados. O aumento de dados e qualquer outro pré-processamento só devem ser aplicados ao conjunto de treino para evitar que as informações dos conjuntos de validação ou de teste influenciem o treino do modelo. -Equilibraas classes: Para conjuntos de dados desequilibrados, considera técnicas como a sobreamostragem da classe minoritária ou a subamostragem da classe maioritária no 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 conjunto de dados criando versões modificadas de 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: A ampliação 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.
  • Rentável: O aumento de dados é uma forma económica de aumentar a quantidade de dados de formação sem recolher e rotular novos dados.
  • Melhor utilização dos dados: Cada ponto de dados disponível é utilizado no seu potencial máximo, criando novas variações

Métodos de aumento de dados

As técnicas comuns de aumento incluem inversão, rotação, dimensionamento e ajustes de cores. Várias bibliotecas, como Albumentations, Imgaug e TensorFlow ImageDataGenerator do, pode gerar esses aumentos.

Visão geral das ampliações de dados

Em relação a YOLOv8, podes aumentar o teu conjunto de dados personalizado modificando o ficheiro de configuração do conjunto de dados, um ficheiro .yaml. Neste ficheiro, podes adicionar uma secção de aumento com parâmetros que especificam como queres aumentar os teus dados.

O repositórioUltralytics YOLOv8 suporta uma vasta gama de ampliações de dados. Podes aplicar várias transformações, tais como:

  • Culturas Aleatórias
  • Invertendo: As imagens podem ser invertidas horizontalmente ou verticalmente.
  • Rotação: As imagens podem ser giradas 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 que visa desenvolver um modelo para detectar e classificar diferentes tipos de veículos em imagens de trânsito utilizando YOLOv8 . Coletamos imagens de tráfego e as anotamos com caixas delimitadoras e rótulos.

Esta é a aparência de cada etapa do pré-processamento para este projeto:

  • Redimensionando imagens: desde YOLOv8 lida com tamanhos de entrada flexíveis e executa 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.
  • Normalizando Valores de Pixel: YOLOv8 normaliza automaticamente os valores dos pixels para um intervalo de 0 a 1 durante o pré-processamento, portanto, não é necessário.
  • Dividindo o conjunto de dados: divida o conjunto de dados em conjuntos de treinamento (70%), validação (20%) e teste (10%) usando ferramentas como 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 cortes aleatórios, inversões horizontais e ajustes de brilho.

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

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

Depois de pré-processar e aumentar seu conjunto de dados, a próxima etapa é obter insights por meio da Análise Exploratória de Dados. A EDA utiliza técnicas estatísticas e ferramentas de visualização para compreender os padrões e distribuições dos seus dados. Você pode identificar problemas como desequilíbrios de classe ou valores discrepantes e tomar decisões informadas sobre pré-processamento adicional de dados ou ajustes de treinamento de modelo.

Técnicas Estatísticas de EDA

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 a compreender a qualidade e as características gerais dos seus dados, permitindo detectar quaisquer irregularidades antecipadamente.

Técnicas de EDA Visual

As visualizações são fundamentais no EDA para conjuntos de dados de imagens. Por exemplo, a análise do desequilíbrio de classes é outro aspecto vital da AED. 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, valores discrepantes podem ser identificados usando ferramentas de visualização como box plots, que destacam anomalias na intensidade de pixels ou distribuições de recursos. A detecção de valores discrepantes evita que pontos de dados incomuns distorçam seus resultados.

Ferramentas comuns para visualizações incluem:

  • Histogramas e Box Plots: Úteis para compreender a distribuição de valores de pixels e identificar valores discrepantes.
  • Gráficos de dispersão: úteis para explorar relações entre recursos de imagem ou anotações.
  • Mapas de calor: eficazes para visualizar a distribuição de intensidades de pixel ou a distribuição espacial de recursos anotados em imagens.

Usando Ultralytics Explorador para EDA

Para uma abordagem mais avançada ao EDA, você pode usar o Ultralytics Ferramenta explorador. Ele oferece recursos robustos para explorar conjuntos de dados de visão computacional. Ao oferecer suporte à pesquisa semântica, consultas SQL e pesquisa por similaridade vetorial, a ferramenta facilita a análise e a compreensão de seus dados. Com Ultralytics Explorer, você pode criar embeddings para seu conjunto de dados 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.

Descrição geral do Ultralytics Explorer

Alcance e conecte-se

Discutir seu projeto com outros entusiastas da 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 do GitHub: Visita o repositório YOLOv8 GitHub e utiliza o separador Problemas para colocar questões, comunicar erros e sugerir funcionalidades. A comunidade e os mantenedores estão lá para ajudar com quaisquer problemas que enfrentes.
  • Ultralytics Servidor Discord: Junta-te ao servidor Discord deUltralytics para te ligares a outros utilizadores e programadores, obteres apoio, partilhares conhecimentos e debateres ideias.

Documentação oficial

  • Ultralytics YOLOv8 Documentação: Consulta a documentação oficial do YOLOv8 para obteres guias completos e informações valiosas sobre várias tarefas e projectos de visão por computador.

Seu conjunto de dados está pronto!

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

FAQ

Qual é a importância do pré-processamento de dados em projectos de visão por computador?

O pré-processamento de dados é essencial em projectos de visão computacional porque garante que os dados estão limpos, consistentes e num formato ideal para o treino de modelos. Ao abordar questões como ruído, inconsistência e desequilíbrio em dados brutos, as etapas de pré-processamento como redimensionamento, normalização, aumento e divisão de conjunto de dados ajudam a reduzir a carga computacional e a melhorar o desempenho do modelo. Para obter mais detalhes, visita as etapas de um projeto de visão computacional.

Como posso utilizar Ultralytics YOLO para aumentar os dados?

Para aumentar os dados com Ultralytics YOLOv8 , é necessário modificar o ficheiro de configuração do conjunto de dados (.yaml). Neste ficheiro, podes especificar várias técnicas de aumento, como cortes aleatórios, inversões horizontais e ajustes de brilho. Isto pode ser feito eficazmente utilizando as configurações de formação aqui explicadas. O aumento de dados ajuda a criar um conjunto de dados mais robusto, reduz o ajuste excessivo e melhora 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 de pixel para um intervalo padrão para uma convergência mais rápida e um melhor desempenho durante o treino. As técnicas comuns incluem:

  • Escala Mín-Máx: Escala os valores de pixel para um intervalo de 0 a 1.
  • Normalização de Z-Score: Escala os valores de pixel com base em sua média e desvio padrão.

Para YOLOv8, a normalização é tratada automaticamente, incluindo a conversão para RGB e o escalonamento do valor do pixel. Sabe mais sobre isto na secção de formação de modelos.

Como devo dividir o meu conjunto de dados anotados para treino?

Para dividir o teu conjunto de dados, uma prática comum é dividi-lo em 70% para treino, 20% para validação e 10% para teste. É importante manter a distribuição de dados das classes nestas divisões e evitar a fuga de dados, efectuando o aumento apenas no conjunto de treino. Utiliza ferramentas como o scikit-learn ou TensorFlow para uma divisão eficiente do conjunto de dados. Vê o guia detalhado sobre a preparação do conjunto de dados.

Posso gerir diferentes tamanhos de imagem em YOLOv8 sem redimensionamento manual?

Sim, Ultralytics YOLOv8 pode lidar com tamanhos de imagem variáveis através do parâmetro 'imgsz' durante o treinamento do modelo. Este parâmetro assegura que as imagens são redimensionadas para que a sua maior dimensão corresponda ao tamanho especificado (por exemplo, 640 pixels), mantendo a relação de aspeto. Para um tratamento de entrada mais flexível e ajustes automáticos, verifica a secção de treino do modelo.



Criado em 2024-05-31, Atualizado em 2024-07-05
Autores: glenn-jocher (4), abirami-vina (1)

Comentários