Link to this sectionTécnicas de pré-processamento de dados para dados de Computer Vision anotados#
Link to this sectionIntrodução#
Após definir os objetivos do seu projeto de visão computacional e coletar e anotar 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 com bom desempenho.
Watch: How to Use Data Preprocessing and Augmentation to Improve Model Accuracy in Real-World Scenarios 🚀
O pré-processamento é uma etapa no fluxo de trabalho do projeto de visão computacional que inclui redimensionar imagens, normalizar valores de pixels, aumentar o conjunto de dados (augmentation) 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!
Link to this sectionImportância do pré-processamento de dados#
Já estamos coletando e anotando nossos dados cuidadosamente, levando várias considerações em conta. 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 trata de colocar seus dados em um formato adequado para o 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 aborda:
- Ruído: Variações irrelevantes ou aleatórias nos dados.
- Inconsistência: Variações em tamanhos, formatos e qualidade das imagens.
- Desequilíbrio: Distribuição desigual de classes ou categorias no conjunto de dados.
Link to this sectionTécnicas de pré-processamento de dados#
Um dos primeiros e mais importantes passos no pré-processamento de dados é o redimensionamento. Alguns modelos são projetados para lidar com tamanhos de entrada variáveis, mas muitos exigem um tamanho de entrada consistente. Redimensionar imagens torna-as uniformes e reduz a complexidade computacional.
Link to this sectionRedimensionamento de imagens#
Você pode redimensionar suas imagens usando os seguintes métodos:
- Interpolação Bilinear: Suaviza os valores dos pixels calculando a média ponderada dos quatro valores de pixels mais próximos.
- Vizinho Mais Próximo (Nearest Neighbor): Atribui o valor do pixel mais próximo sem calcular a média, resultando em uma imagem mais pixelizada, mas com processamento 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 extensas para processamento de imagem.
- PIL (Pillow): Uma Python Imaging Library para abrir, manipular e salvar arquivos de imagem.
Com relação ao YOLO26, o parâmetro 'imgsz' durante o treinamento do modelo permite tamanhos de entrada flexíveis. Quando definido com um tamanho específico, como 640, o modelo redimensionará as imagens de entrada para que sua maior dimensão tenha 640 pixels, mantendo a proporção 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 seu modelo consegue lidar eficientemente com imagens de tamanhos variados.
Link to this sectionNormalização de valores de pixels#
Outra técnica de pré-processamento é a normalização. A normalização escala os valores dos pixels para um intervalo padrão, o que ajuda em uma convergência mais rápida durante o treinamento e melhora o desempenho do modelo. Aqui estão algumas técnicas comuns de normalização:
- Escalonamento Mín-Máx: Escala os valores dos pixels para um intervalo de 0 a 1.
- Normalização Z-Score: Escala os valores dos pixels com base em sua média e desvio padrão.
Com relação ao YOLO26, a normalização é tratada perfeitamente como parte de seu pipeline de pré-processamento durante o treinamento do modelo. O YOLO26 executa automaticamente várias etapas de pré-processamento, incluindo a conversão para RGB, o escalonamento dos valores dos pixels para o intervalo [0, 1] e a normalização usando valores predefinidos de média e desvio padrão.
Link to this sectionDivisão do conjunto de dados#
Uma vez que você limpou os dados, você está 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, a fim de 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:
- Mantendo a distribuição de dados: Garanta que a distribuição de dados das classes seja mantida nos conjuntos de treinamento, validação e teste.
- Evitando vazamento de dados (Data Leakage): Normalmente, o aumento de dados (data augmentation) é feito 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 treinamento para evitar que informações dos conjuntos de validação ou teste influenciem o treinamento do modelo.
- Equilibrando classes: Para conjuntos de dados desequilibrados, considere técnicas como superamostragem (oversampling) da classe minoritária ou subamostragem (under-sampling) da classe majoritária dentro do conjunto de treinamento.
Link to this sectionO que é aumento de dados (Data Augmentation)?#
A etapa de pré-processamento de dados mais comentada é o aumento de dados. O aumento de dados aumenta artificialmente o tamanho do conjunto de dados 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. Isso inclui mudanças na iluminação, orientação e escala.
- Custo-benefício: O aumento de dados é uma maneira econômica de aumentar a quantidade de dados de treinamento sem coletar e rotular novos dados.
- Melhor uso dos dados: Cada ponto de dados disponível é usado em seu potencial máximo criando novas variações.
Link to this sectionMétodos de aumento de dados#
Técnicas comuns de aumento incluem inversão (flipping), rotação, escalonamento e ajustes de cor. Várias bibliotecas, como Albumentations, Imgaug e o ImageDataGenerator do TensorFlow, podem gerar esses aumentos.
Com relação ao YOLO26, você pode aumentar seu conjunto de dados personalizado modificando o arquivo de configuração do conjunto de dados, um arquivo .yaml. Nesse arquivo, você pode adicionar uma seção de aumento com parâmetros que especificam como você deseja aumentar seus dados.
O repositório Ultralytics YOLO26 suporta uma ampla gama de aumentos de dados. Você pode aplicar várias transformações como:
- Recortes aleatórios (Random Crops)
- Inversão (Flipping): As imagens podem ser invertidas horizontal 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 através de parâmetros específicos para gerar mais variedade de dados.
Link to this sectionUm estudo de caso sobre pré-processamento#
Considere um projeto que visa desenvolver um modelo para detectar e classificar diferentes tipos de veículos em imagens de tráfego usando o YOLO26. Coletamos imagens de tráfego e as anotamos com caixas delimitadoras (bounding boxes) e rótulos.
Aqui está como cada etapa de pré-processamento seria para este projeto:
- Redimensionamento de imagens: Como o YOLO26 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 pixels: O YOLO26 normaliza automaticamente os valores dos pixels para um intervalo de 0 a 1 durante o pré-processamento, portanto, não é necessário fazê-lo manualmente.
- Divisão do conjunto de dados: Divida o conjunto de dados em conjuntos de treinamento (70%), validação (20%) e teste (10%) usando ferramentas como scikit-learn.
- Data Augmentation: 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 possíveis problemas e esteja pronto para a Análise Exploratória de Dados (EDA).
Link to this sectionTécnicas de análise exploratória de dados#
Após pré-processar e aumentar seu conjunto de dados, o próximo passo é 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 valores discrepantes (outliers) e tomar decisões informadas sobre ajustes adicionais no pré-processamento de dados ou no treinamento do modelo.
Link to this sectionTé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. Entender essas estatísticas básicas ajuda você a compreender a qualidade e as características gerais dos seus dados, permitindo que você identifique quaisquer irregularidades precocemente.
Link to this sectionTécnicas visuais de EDA#
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. Ela 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 imagem 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 dos pixels ou nas distribuições das características. 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 entender a distribuição dos valores dos pixels e identificar valores discrepantes.
- Gráficos de Dispersão (Scatter Plots): Úteis para explorar relações entre características ou anotações das imagens.
- Mapas de calor (Heatmaps): Eficazes para visualizar a distribuição das intensidades dos pixels ou a distribuição espacial das características anotadas dentro das imagens.
Link to this sectionUsando a plataforma Ultralytics para EDA#
Para uma abordagem sem código para EDA, carregue seu conjunto de dados na Plataforma Ultralytics. A aba Charts do conjunto de dados gera automaticamente as visualizações descritas acima: distribuição da divisão, contagens das classes principais, histogramas de largura/altura da imagem e mapas de calor 2D das posições de anotação e dimensões da imagem. A aba Images permite que você navegue pelos seus dados em visualizações de grade, compacta ou tabela com sobreposições de anotação, facilitando a detecção de exemplos rotulados incorretamente ou classes desequilibradas sem escrever uma única linha de código.
Link to this sectionEntre em contato e conecte-se#
Ter discussões sobre seu projeto com outros entusiastas de visão computacional pode lhe dar novas ideias sob diferentes perspectivas. Aqui estão algumas ótimas maneiras de aprender, solucionar problemas e fazer networking:
Link to this sectionCanais para se conectar com a comunidade#
- GitHub Issues: Visite o repositório GitHub do YOLO26 e use a aba Issues para levantar questões, relatar bugs e sugerir recursos. A comunidade e os mantenedores estão lá para ajudar com quaisquer problemas que você encontrar.
- Servidor Discord da Ultralytics: Junte-se ao servidor Discord da Ultralytics para conectar-se com outros usuários e desenvolvedores, obter suporte, compartilhar conhecimento e trocar ideias.
Link to this sectionDocumentação Oficial#
- Documentação Ultralytics YOLO26: Consulte a documentação oficial do YOLO26 para guias completos e insights valiosos sobre inúmeras tarefas e projetos de visão computacional.
Link to this sectionSeu conjunto de dados está pronto!#
Dados devidamente redimensionados, normalizados e aumentados melhoram o desempenho do modelo ao reduzir o ruído e melhorar 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 seu conjunto de dados pré-processado pronto, você pode prosseguir com confiança para as próximas etapas do seu projeto.
Link to this sectionFAQ#
Link to this sectionQual é 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 em dados brutos, etapas de pré-processamento como redimensionamento, normalização, aumento e divisão do conjunto de dados ajudam a reduzir a carga computacional e melhorar o desempenho do modelo. Para mais detalhes, visite os passos de um projeto de visão computacional.
Link to this sectionComo posso usar o Ultralytics YOLO para aumento de dados?#
Para aumento de dados com o Ultralytics YOLO26, você precisa modificar o arquivo de configuração do conjunto de dados (.yaml). Nesse 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.
Link to this sectionQuais são as melhores técnicas de normalização de dados para dados de visão computacional?#
A normalização escala 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 Mín-Máx: Escala os valores dos pixels para um intervalo de 0 a 1.
- Normalização Z-Score: Escala os valores dos pixels com base em sua média e desvio padrão.
Para o YOLO26, a normalização é tratada automaticamente, incluindo a conversão para RGB e o escalonamento dos valores dos pixels. Saiba mais sobre isso na seção de treinamento de modelo.
Link to this sectionComo 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 nessas divisões e evitar o vazamento de dados realizando o aumento apenas no conjunto de treinamento. Use ferramentas como scikit-learn ou TensorFlow para uma divisão eficiente do conjunto de dados. Veja o guia detalhado sobre preparação de conjuntos de dados.
Link to this sectionPosso lidar com tamanhos de imagem variados no YOLO26 sem redimensionamento manual?#
Sim, o Ultralytics YOLO26 pode lidar com tamanhos de imagem variados através do parâmetro 'imgsz' durante o treinamento do modelo. Esse 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 de modelo.