Técnicas de pré-processamento de dados para dados de visão computacional anotados
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 o processamento de imagens.
- PIL (Almofada): Uma biblioteca de imagens Python para abrir, manipular e salvar arquivos de imagem.
Relativamente ao YOLO11, 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.
No que diz respeito ao YOLO11, a normalização é tratada sem problemas como parte do seu pipeline de pré-processamento durante o treino do modelo. O YOLO11 executa automaticamente várias etapas de pré-processamento, incluindo a conversão para RGB, o escalonamento dos valores de pixel para o intervalo [0, 1] e a normalização usando valores predefinidos de média e desvio padrão.
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.
No que diz respeito ao YOLO11, 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 YOLO11 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
Considera um projeto que visa desenvolver um modelo para detetar e classificar diferentes tipos de veículos em imagens de trânsito utilizando o YOLO11. Recolhemos imagens de trânsito e anotámo-las com caixas delimitadoras e etiquetas.
Esta é a aparência de cada etapa do pré-processamento para este projeto:
- Redimensiona imagens: Uma vez que o YOLO11 lida com tamanhos de entrada flexíveis e efectua o redimensionamento automaticamente, não é necessário o redimensionamento manual. O modelo ajustará o tamanho da imagem de acordo com o parâmetro 'imgsz' especificado durante o treino.
- 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, pelo que 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: Modifica o ficheiro 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
Nota da Comunidade ⚠️
A partir de ultralytics>=8.3.10
, Ultralytics explorer support has been deprecated. Mas não te preocupes! Agora podes aceder a funcionalidades semelhantes e até melhoradas através do Ultralytics HUBA nossa plataforma intuitiva sem código foi concebida para simplificar o teu fluxo de trabalho. Com o Ultralytics HUB, podes continuar a explorar, visualizar e gerir os teus dados sem esforço, tudo sem escrever uma única linha de código. Certifica-te de que a verificas e tiras partido das suas poderosas funcionalidades!🚀
Para uma abordagem mais avançada à EDA, podes utilizar a ferramenta Ultralytics Explorer. Oferece capacidades robustas para explorar conjuntos de dados de visão computacional. Ao suportar a pesquisa semântica, as consultas SQL e a pesquisa de semelhança de vectores, a ferramenta facilita a análise e a compreensão dos dados. Com o Ultralytics Explorer, podes criar embeddings para o teu conjunto de dados para encontrar imagens semelhantes, executar consultas SQL para uma análise detalhada e efetuar pesquisas semânticas, tudo através de uma interface gráfica de fácil utilização.
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 no GitHub: Visita o repositório GitHub do YOLO11 e usa o separador Issues para colocar questões, reportar bugs 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 Documentação do YOLO11: Consulta a documentação oficial do YOLO11 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 YOLO11, tens de 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. 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, 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 o YOLO11, 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 treino do modelo.
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 o TensorFlow para uma divisão eficiente do conjunto de dados. Vê o guia detalhado sobre a preparação do conjunto de dados.
Posso lidar com diferentes tamanhos de imagem no YOLO11 sem redimensionamento manual?
Sim, Ultralytics YOLO11 pode lidar com tamanhos de imagem variáveis através do parâmetro 'imgsz' durante o treino 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.