Técnicas de pré-processamento de dados para dados de visão computacional anotados
Introdução
Depois de definir os objectivos do seu 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 seus dados!
Importância do pré-processamento de dados
Já estamos a recolher e a anotar os 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 os seus dados num formato adequado para treino 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 do pré-processamento de dados é o redimensionamento. Alguns modelos são concebidos para lidar com tamanhos de entrada variáveis, mas muitos modelos requerem um tamanho de entrada consistente. O redimensionamento de imagens torna-as uniformes e reduz a complexidade computacional.
Redimensionamento de imagens
Pode redimensionar as suas imagens utilizando 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, pode utilizar as seguintes ferramentas:
- OpenCV: Uma biblioteca popular de visão computacional com funções extensivas para processamento de imagens.
- PIL (Pillow): Uma biblioteca de imagens Python para abrir, manipular e salvar arquivos de imagem.
Relativamente a 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, pode determinar se o redimensionamento é um passo de pré-processamento necessário ou se o seu modelo pode lidar eficazmente com imagens de tamanhos diferentes.
Normalização de valores de pixel
Outra técnica de pré-processamento é a normalização. A normalização ajusta os valores dos pixels para um intervalo padrão, o que ajuda a uma convergência mais rápida durante o treino e melhora o desempenho do modelo. Aqui estão algumas técnicas de normalização comuns:
- Escala Mín-Máx: Dimensiona os valores de pixel para um intervalo de 0 a 1.
- Normalização de Z-Score: Escala os valores de pixel com base na sua média e desvio padrão.
No que diz respeito a YOLO11, a normalização é tratada sem problemas como parte do seu pipeline de pré-processamento durante a formação do modelo. YOLO11 efectua automaticamente vários passos de pré-processamento, incluindo a conversão para RGB, o escalonamento dos valores de píxeis para o intervalo [0, 1] e a normalização utilizando valores predefinidos de média e desvio padrão.
Dividir o conjunto de dados
Depois de limpar os dados, está pronto para dividir o conjunto de dados. A divisão dos dados em conjuntos de treino, validação e teste é efectuada para garantir que o modelo pode ser avaliado em dados não vistos para avaliar o seu desempenho de generalização. Uma divisão comum é 70% para treino, 20% para validação e 10% para teste. Existem várias ferramentas e bibliotecas que podem ser utilizadas para dividir os dados, como o scikit-learn ou TensorFlow.
Considere o seguinte ao dividir o seu conjunto de dados:
- Manutenção da distribuição de dados: Assegurar 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. -Balanceamento declasses: Para conjuntos de dados desequilibrados, considerar técnicas como a sobreamostragem da classe minoritária ou a subamostragem da classe maioritária no conjunto de treino.
O que é o Data Augmentation?
A etapa de pré-processamento de dados mais comummente discutida é o aumento de dados. O aumento de dados aumenta artificialmente o tamanho do conjunto de dados através da criação de versões modificadas de imagens. Ao aumentar os seus dados, pode reduzir o sobreajuste e melhorar a generalização do modelo.
Eis algumas outras vantagens da ampliação 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.
- Económica: 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, escalonamento e ajustes de cor. Várias bibliotecas, como Albumentations, Imgaug e ImageDataGenerator do site TensorFlow, podem gerar essas ampliações.
No que diz respeito a YOLO11, pode aumentar o seu conjunto de dados personalizado modificando o ficheiro de configuração do conjunto de dados, um ficheiro .yaml. Neste ficheiro, pode adicionar uma secção de aumento com parâmetros que especificam como pretende aumentar os seus dados.
- Culturas aleatórias
- Inverter: As imagens podem ser invertidas na horizontal ou na vertical.
- Rotação: As imagens podem ser rodadas em ângulos específicos.
- Distorção
Além disso, é possível ajustar a intensidade destas técnicas de aumento através 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 detetar e classificar diferentes tipos de veículos em imagens de tráfego utilizando YOLO11. Recolhemos imagens de trânsito e anotámo-las com caixas delimitadoras e etiquetas.
Eis o aspeto de cada passo do pré-processamento para este projeto:
- Redimensionamento de 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 treinamento.
- Normalização de valores de pixel: YOLO11 normaliza automaticamente os valores de pixel para um intervalo de 0 a 1 durante o pré-processamento, pelo que não é necessário.
- Dividir o conjunto de dados: Dividir o conjunto de dados em conjuntos de treino (70%), validação (20%) e teste (10%) utilizando ferramentas como o scikit-learn.
- Aumento de dados: Modificar o ficheiro de configuração do conjunto de dados (.yaml) para incluir técnicas de aumento de dados, tais como colheitas aleatórias, inversões horizontais e ajustes de brilho.
Estes passos garantem que o conjunto de dados é preparado sem quaisquer problemas potenciais e está pronto para a Análise Exploratória de Dados (EDA).
Técnicas de análise exploratória de dados
Depois de pré-processar e aumentar o seu conjunto de dados, o passo seguinte é obter informações através da Análise Exploratória de Dados. A AED utiliza técnicas estatísticas e ferramentas de visualização para compreender os padrões e as distribuições nos seus dados. Pode identificar problemas como desequilíbrios de classe ou outliers e tomar decisões informadas sobre o pré-processamento de dados adicionais ou ajustes de formação de modelos.
Técnicas estatísticas de EDA
As técnicas estatísticas começam frequentemente com o cálculo de métricas básicas, como a média, a mediana, o desvio padrão e o intervalo. Estas métricas fornecem uma visão geral rápida das propriedades do seu conjunto de dados de imagem, como as distribuições de intensidade de pixéis. A compreensão destas estatísticas básicas ajuda-o a compreender a qualidade geral e as caraterísticas dos seus dados, permitindo-lhe detetar quaisquer irregularidades numa fase inicial.
Técnicas visuais de EDA
As visualizações são fundamentais na AED para conjuntos de dados de imagens. Por exemplo, a análise de desequilíbrio de classes é outro aspeto vital da EDA. A visualização da distribuição de diferentes classes ou categorias de imagens utilizando gráficos de barras pode revelar rapidamente quaisquer desequilíbrios. Da mesma forma, os valores atípicos podem ser identificados utilizando ferramentas de visualização como gráficos de caixa, que destacam anomalias na intensidade dos pixels ou nas distribuições de caraterísticas. A deteção de valores atípicos evita que pontos de dados invulgares distorçam os seus resultados.
As ferramentas comuns para visualizações incluem:
- Histogramas e Box Plots: Úteis para compreender a distribuição dos valores de pixéis e identificar valores atípicos.
- Gráficos de dispersão: Útil para explorar relações entre caraterísticas de imagem ou anotações.
- Mapas de calor: Eficazes para visualizar a distribuição de intensidades de píxeis ou a distribuição espacial de caraterísticas anotadas em imagens.
Utilização do Ultralytics Explorer para EDA
Nota da Comunidade ⚠️
A partir de ultralytics>=8.3.10
, o suporte do Ultralytics explorer foi descontinuado. Mas não se preocupe! Pode agora aceder a funcionalidades semelhantes e até melhoradas através do Ultralytics HUBA nossa plataforma intuitiva sem código foi concebida para otimizar o seu fluxo de trabalho. Com o Ultralytics HUB, pode continuar a explorar, visualizar e gerir os seus dados sem esforço, tudo sem escrever uma única linha de código. Não deixe de conferir e tirar proveito de seus poderosos recursos!
Para uma abordagem mais avançada à EDA, pode utilizar a ferramenta Ultralytics Explorer. Esta ferramenta 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ças vectoriais, a ferramenta facilita a análise e a compreensão dos seus dados. Com o Ultralytics Explorer, pode criar embeddings para o seu 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.
Contactar e estabelecer ligações
Ter discussões sobre o seu projeto com outros entusiastas da visão computacional pode dar-lhe novas ideias a partir de diferentes perspectivas. Aqui estão algumas maneiras excelentes de aprender, solucionar problemas e interagir:
Canais de ligação à comunidade
- Problemas do GitHub: Visite o repositório YOLO11 do GitHub e use a guia Problemas para fazer perguntas, relatar bugs e sugerir recursos. A comunidade e os mantenedores estão à disposição para ajudar com quaisquer problemas que você enfrente.
- Ultralytics Servidor Discord: Junte-se ao servidor Discord deUltralytics para se ligar a outros utilizadores e programadores, obter apoio, partilhar conhecimentos e debater ideias.
Documentação oficial
- Ultralytics YOLO11 Documentação: Consulte a documentação oficial do YOLO11 para obter guias completos e informações valiosas sobre várias tarefas e projectos de visão computacional.
O seu conjunto de dados está pronto!
Os dados corretamente 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, pode criar um conjunto de dados sólido. Com o seu conjunto de dados pré-processado pronto, pode avançar com confiança para os passos seguintes do seu projeto.
FAQ
Qual é a importância do pré-processamento de dados em projectos de visão computacional?
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 a formação 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, visite as etapas de um projeto de visão computacional.
Como é que posso utilizar Ultralytics YOLO para aumentar os dados?
Para aumentar os dados com Ultralytics YOLO11 , é necessário modificar o ficheiro de configuração do conjunto de dados (.yaml). Neste ficheiro, pode 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, reduzir o ajuste excessivo 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 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: Dimensiona os valores de pixel para um intervalo de 0 a 1.
- Normalização de Z-Score: Escala os valores de pixel com base na sua média e desvio padrão.
Para YOLO11, a normalização é tratada automaticamente, incluindo a conversão para RGB e o escalonamento do valor do pixel. Saiba mais sobre este assunto na secção de formação de modelos.
Como devo dividir o meu conjunto de dados anotados para treino?
Para dividir o seu conjunto de dados, uma prática comum é dividi-lo em 70% para formação, 20% para validação e 10% para teste. É importante manter a distribuição de dados das classes ao longo destas divisões e evitar fugas de dados, efectuando o aumento apenas no conjunto de formação. Utilize ferramentas como o scikit-learn ou o TensorFlow para uma divisão eficiente do conjunto de dados. Consulte o guia detalhado sobre a preparação do conjunto de dados.
Posso gerir diferentes tamanhos de imagem em YOLO11 sem redimensionamento manual?
Sim, Ultralytics YOLO11 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, consulte a secção de treino do modelo.