Estratégias de Coleta e Anotação de Dados para Visão Computacional#
A coleta e a anotação de dados são os dois passos fundamentais de qualquer computer vision project: tu juntas imagens ou vídeos representativos e, em seguida, os rotulas para que um modelo possa aprender com eles. A qualidade desses dados determina diretamente o desempenho do modelo, razão pela qual a definição de classes, a obtenção imparcial e a anotação consistente são importantes antes que qualquer treinamento comece.
Watch: How to Build Effective Data Collection and Annotation Strategies for Computer Vision 🚀
Este guia aborda a setting up classes and collecting data, what data annotation is junto com os tipos e formatos de anotação à disposição para escolha, e as efficient labeling strategies — cada decisão alinhada com your project's goals.
Configurando Classes e Coletando Dados#
A coleta de imagens e vídeos para um projeto de visão computacional se resume a três decisões: quantas classes definir, onde obter os dados e como manter o conjunto de dados livre de vieses.
Escolhendo as Classes Certas para o Seu Projeto#
Uma das primeiras perguntas ao iniciar um projeto de visão computacional é quantas classes incluir. Você precisa determinar a filiação à classe, o que envolve as diferentes categorias ou rótulos que você deseja que seu modelo reconheça e diferencie. O número de classes deve ser determinado pelos objetivos específicos do seu projeto.
Por exemplo, se você quiser monitorar o tráfego, suas classes podem incluir "carro", "caminhão", "ônibus", "motocicleta" e "bicicleta". Por outro lado, para rastrear itens em uma loja, suas classes poderiam ser "frutas", "vegetais", "bebidas" e "lanches". Definir classes com base nos objetivos do seu projeto ajuda a manter seu conjunto de dados relevante e focado.
Ao definir suas classes, outra distinção importante a fazer é escolher entre contagens de classes amplas ou granulares. 'Contagem' refere-se ao número de classes distintas nas quais você está interessado. Essa decisão influencia a granularidade dos seus dados e a complexidade do seu modelo. Aqui estão as considerações para cada abordagem:
- Contagem de Classes Ampla: Estas são categorias mais abrangentes e inclusivas, como "veículo" e "não-veículo". Elas simplificam a anotação e exigem menos recursos computacionais, mas fornecem informações menos detalhadas, podendo limitar a eficácia do modelo em cenários complexos.
- Contagem de Classes Granular: Mais categorias com distinções mais refinadas, como "sedã", "SUV", "caminhonete" e "motocicleta". Elas capturam informações mais detalhadas, melhorando a precisão e o desempenho do modelo. No entanto, elas são mais demoradas e trabalhosas para anotar e exigem mais recursos computacionais.
Começar com classes mais específicas pode ser muito útil, especialmente em projetos complexos onde os detalhes são importantes. Classes mais específicas permitem que você colete dados mais detalhados, obtenha insights mais profundos e estabeleça distinções mais claras entre as categorias. Isso não só melhora a precisão do modelo, mas também torna mais fácil ajustar o modelo posteriormente, se necessário, economizando tempo e recursos.
Fontes de Dados#
Podes usar conjuntos de dados públicos ou reunir os teus próprios dados personalizados. Conjuntos de dados públicos como os do Kaggle e do Google Dataset Search Engine oferecem dados bem anotados e padronizados, tornando-os excelentes pontos de partida para treinar e validar modelos.
A coleta de dados personalizados, por outro lado, permite que você adapte seu conjunto de dados às suas necessidades específicas. Você pode capturar imagens e vídeos com câmeras ou drones, coletar imagens da web ou usar dados internos existentes da sua organização. Dados personalizados dão a você mais controle sobre sua qualidade e relevância. Combinar fontes de dados públicas e personalizadas ajuda a criar um conjunto de dados diversificado e abrangente.
Evitando Vieses na Coleta de Dados#
O viés ocorre quando determinados grupos ou cenários são subrepresentados ou superrepresentados no teu conjunto de dados. Isso leva a um modelo que tem um bom desempenho em alguns dados, mas um desempenho fraco em outros. É fundamental evitar bias in AI para que o teu modelo de visão computacional possa ter um bom desempenho em uma variedade de cenários.
Veja como você pode evitar vieses durante a coleta de dados:
- Fontes Diversificadas: Colete dados de muitas fontes para capturar diferentes perspectivas e cenários.
- Representação Equilibrada: Inclua uma representação equilibrada de todos os grupos relevantes. Por exemplo, considere diferentes idades, gêneros e etnias.
- Monitoramento Contínuo: Revise e atualize regularmente seu conjunto de dados para identificar e tratar quaisquer vieses emergentes.
- Técnicas de Mitigação de Viés: Usa métodos como a sobreamostragem de classes subrepresentadas, data augmentation e algoritmos conscientes de justiça.
Seguir essas práticas ajuda a criar um modelo mais robusto e justo que pode ser bem generalizado em aplicações do mundo real.
O que é Anotação de Dados?#
A anotação de dados é o processo de rotular dados para torná-los utilizáveis para o treinamento de modelos de machine learning. Na visão computacional, isso significa rotular imagens ou vídeos com as informações de que um modelo precisa para aprender. Sem dados devidamente anotados, os modelos não podem aprender com precisão as relações entre entradas e saídas.
Tipos de Anotação de Dados#
Dependendo dos requisitos específicos de um computer vision task, existem diferentes tipos de anotação de dados. Eis alguns exemplos:
- Caixas Delimitadoras (Bounding Boxes): Caixas retangulares desenhadas ao redor de objetos em uma imagem, usadas principalmente para tarefas de detecção de objetos. Essas caixas são definidas pelas suas coordenadas superior esquerda e inferior direita.
- Polígonos: Contornos detalhados para objetos, permitindo uma anotação mais precisa do que caixas delimitadoras. Os polígonos são usados em tarefas como instance segmentation, onde a forma do objeto é importante.
- Máscaras: Máscaras binárias onde cada pixel faz parte de um objeto ou do fundo. As máscaras são usadas em tarefas de semantic segmentation para fornecer detalhes em nível de pixel.
- Pontos-chave: Pontos específicos marcados em uma imagem para identificar locais de interesse. Os pontos-chave são usados em tarefas como pose estimation e deteção de pontos de referência faciais.
- Caixas Delimitadoras Orientadas: Retângulos que carregam um ângulo de rotação, usados em tarefas de OBB onde os objetos aparecem em orientações arbitrárias, como imagens aéreas.
Formatos Comuns de Anotação#
Após selecionar um tipo de anotação, é importante escolher o formato apropriado para armazenar e compartilhar as anotações. Os formatos mais comuns são:
| Formato | Estrutura de arquivo | Comumente usado para |
|---|---|---|
| COCO | Arquivo JSON único | Object detection, segmentação de instâncias, deteção de pontos-chave, segmentação de matéria e panoptic segmentation, legendagem de imagens |
| Pascal VOC | Um arquivo XML por imagem | Detecção de objetos |
| YOLO | Um arquivo .txt por imagem | Detecção de objetos, segmentação, pose e caixas orientadas |
O formato YOLO armazena uma linha por objeto com índices de classe começando em 0. Para detecção de objetos, a linha é class x_center y_center width height com coordenadas normalizadas de 0 a 1. Uma linha de segmentação substitui a caixa pelos pontos de polígono normalizados do objeto, enquanto uma linha de pose mantém a caixa e anexa as coordenadas dos pontos-chave após ela, com um sinalizador de visibilidade por ponto-chave quando o conjunto de dados declara kpt_shape: [n, 3]. Uma linha de OBB armazena class x1 y1 x2 y2 x3 y3 x4 y4 usando coordenadas de cantos normalizadas.
Se a tua ferramenta de anotação exporta COCO JSON, podes convertê-lo para rótulos YOLO .txt ou treinar diretamente no JSON com uma classe de conjunto de dados personalizada.
Definindo diretrizes de anotação#
Com um tipo de anotação e formato escolhidos, o próximo passo é estabelecer regras de rotulagem claras e objetivas. Estas regras atuam como um roteiro para a consistência e a accuracy em todo o processo de anotação. Os principaispetos destas regras incluem:
- Clareza e Detalhe: Certifique-se de que suas instruções sejam claras. Use exemplos e ilustrações para mostrar o que é esperado.
- Consistência: Mantenha suas anotações uniformes. Defina critérios padrão para anotar diferentes tipos de dados, para que todas as anotações sigam as mesmas regras.
- Redução de Viés: Mantenha-se neutro. Treine a si mesmo para ser objetivo e minimizar vieses pessoais para garantir anotações justas.
- Eficiência: Trabalhe de forma mais inteligente, não mais árdua. Use ferramentas e fluxos de trabalho que automatizem tarefas repetitivas, tornando o processo de anotação mais rápido e eficiente.
Revisar e atualizar regularmente suas regras de rotulagem ajudará a manter suas anotações precisas, consistentes e alinhadas com os objetivos do seu projeto.
Ferramentas de Anotação#
Uma boa ferramenta de anotação permite-te rotular todos os tipos que a tua tarefa necessita, aplica diretrizes consistentes e exporta rótulos num formato pronto para treino. A Ultralytics Platform fornece um editor de anotações integrado que cobre detecção, segmentação de instâncias, segmentação semântica, classificação, pose e OBB, com anotação inteligente impulsionada por SAM que transforma um único clique numa máscara para tarefas de detecção, segmentação de instâncias, segmentação semântica e OBB. Como as anotações são guardadas no layout que cada tarefa espera — linhas YOLO .txt para as tarefas espaciais e pastas de classe para classificação — o teu conjunto de dados rotulado passa diretamente para o treino sem etapa de conversão.
Qualidade da anotação: acurácia, precisão e outliers#
Antes de anotar em grande escala, ajuda entender a acurácia, a precision, os valores discrepantes e o controle de qualidade, para que não rotules os teus dados de maneira contraproducente.
Compreendendo a Precisão e a Exatidão#
É importante entender a diferença entre acurácia e precisão e como isso se relaciona com a anotação. Acurácia refere-se a quão próximos os dados anotados estão dos valores reais. Ajuda-nos a medir quão proximamente os rótulos refletem os cenários do mundo real. A precisão indica a consistência das anotações. Verifica se estás a dar o mesmo rótulo ao mesmo objeto ou recurso em todo o conjunto de dados. Alta acurácia e precisão levam a modelos mais bem treinados, reduzindo o ruído e melhorando a capacidade do modelo de generalizar a partir dos training data.
Identificando Valores Atípicos#
Valores atípicos são pontos de dados que divergem significativamente de outras observações no conjunto de dados. Com relação às anotações, um valor atípico pode ser uma imagem rotulada incorretamente ou uma anotação que não se encaixa no resto do conjunto de dados. Valores atípicos são preocupantes porque podem distorcer o processo de aprendizado do modelo, levando a previsões imprecisas e má generalização.
Você pode usar vários métodos para detectar e corrigir valores atípicos:
- Técnicas Estatísticas: Para detetar valores discrepantes em recursos numéricos como valores de pixel, coordenadas de bounding box ou tamanhos de objetos, podes usar métodos como gráficos de caixa, histogramas ou escores z.
- Técnicas Visuais: Para detectar anomalias em recursos categóricos, como classes de objetos, cores ou formas, use métodos visuais como plotagem de imagens, rótulos ou mapas de calor.
- Métodos Algorítmicos: Usa ferramentas como agrupamento (por exemplo, agrupamento K-means, DBSCAN) e algoritmos de anomaly detection para identificar valores discrepantes com base em padrões de distribuição de dados.
Controle de Qualidade de Dados Anotados#
Assim como em outros projetos técnicos, o controle de qualidade é obrigatório para dados anotados. É uma boa prática verificar regularmente as anotações para garantir que elas sejam precisas e consistentes. Isso pode ser feito de algumas maneiras diferentes:
- Revisando amostras de dados anotados
- Usando ferramentas automatizadas para detectar erros comuns
- Pedindo para outra pessoa verificar as anotações
Se você estiver trabalhando com várias pessoas, a consistência entre diferentes anotadores é importante. Um bom acordo entre anotadores significa que as diretrizes são claras e todos as estão seguindo da mesma maneira. Isso mantém todos na mesma página e as anotações consistentes.
Ao revisar, se você encontrar erros, corrija-os e atualize as diretrizes para evitar erros futuros. Forneça feedback aos anotadores e ofereça treinamento regular para ajudar a reduzir erros. Ter um processo sólido para lidar com erros mantém seu conjunto de dados preciso e confiável.
Estratégias Eficientes de Rotulagem de Dados#
Para tornar o processo de rotulagem de dados mais suave e eficaz, considere implementar estas estratégias:
- Diretrizes Claras de Anotação: Forneça instruções detalhadas com exemplos para garantir que todos os anotadores interpretem as tarefas de forma consistente. Por exemplo, ao rotular pássaros, especifique se deve incluir o pássaro inteiro ou apenas partes específicas.
- Verificações Regulares de Qualidade: Estabeleça benchmarks e use métricas específicas para revisar o trabalho, mantendo altos padrões por meio de feedback contínuo.
- Use Ferramentas de Pré-anotação: Muitas plataformas modernas de anotação oferecem recursos de pré-anotação assistidos por IA que podem acelerar significativamente o processo, gerando automaticamente anotações iniciais que os humanos podem refinar.
- Implemente Aprendizado Ativo (Active Learning): Essa abordagem prioriza a rotulagem das amostras mais informativas primeiro, o que pode reduzir o número total de anotações necessárias, mantendo o desempenho do modelo.
- Processamento em Lote: Agrupe imagens semelhantes para anotação para manter a consistência e melhorar a eficiência.
Essas estratégias podem ajudar a manter anotações de alta qualidade enquanto reduzem o tempo e os recursos necessários para o processo de rotulagem.
Conclusão#
recolher dados diversos e imparciais e anotá-los consistentemente com as ferramentas certas é a base de um modelo de visão computacional fiável. Com o teu conjunto de dados recolhido e rotulado, continua para o guia de etapas de um projeto de visão computacional para avançar para o treino e a avaliação. Se surgirem dúvidas ao longo do caminho, pergunta à comunidade no repositório GitHub da Ultralytics ou no servidor Discord da Ultralytics.
FAQ#
Para minimizar vieses, colete dados de fontes diversas, garanta uma representação equilibrada entre todos os grupos relevantes (como diferentes idades, gêneros e etnias), revise e atualize regularmente seu conjunto de dados para detectar vieses emergentes e aplique técnicas de mitigação como sobreamostragem de classes sub-representadas, aumento de dados e algoritmos conscientes de justiça. Evitar vieses dessa forma mantém o bom desempenho do seu modelo de visão computacional em cenários variados do mundo real e melhora sua capacidade de generalização.
Estabeleça diretrizes de rotulagem claras e objetivas com instruções, exemplos e ilustrações detalhados, e depois aplique-as uniformemente em todos os tipos de dados para que cada anotação siga as mesmas regras. Treine os anotadores para permanecerem neutros a fim de reduzir o viés pessoal, revise e atualize as diretrizes regularmente e use verificações automáticas de consistência, além de feedback entre anotadores, para manter a precisão alta e alinhada com os objetivos do seu projeto.
Algumas centenas de objetos anotados por classe são suficientes para começar a experimentar com transfer learning, mas para um desempenho confiável no mundo real, a Ultralytics recomenda at least 1,500 images and 10,000 labeled instances per class. Associa um conjunto de dados suficientemente grande a um cronograma de treinamento razoável — around 300 epochs é um ponto de partida comum, reduzido se o modelo sofrer de overfitting precocemente — e mantém as tuas anotações rigorosas e alinhadas com os objetivos específicos do teu projeto. Explora estratégias detalhadas de treinamento no YOLO26 training guide.
Sim. A Ultralytics Platform inclui um editor de anotações integrado que suporta caixas delimitadoras, polígonos, pontos-chave, caixas orientadas e rótulos de classificação num único espaço de trabalho. A anotação inteligente impulsionada por SAM acelera a rotulagem para tarefas de detecção, segmentação de instâncias, segmentação semântica e OBB gerando máscaras a partir de um único clique, enquanto a pose e a classificação são anotadas manualmente. As anotações são armazenadas no layout que cada tarefa espera — linhas YOLO
.txtpara as tarefas espaciais, pastas de classe para classificação — prontas para o treino.Associa o tipo de anotação à tarefa que pretendes treinar. As caixas delimitadoras são as mais rápidas de desenhar e são tudo o que a detecção de objetos precisa. Polígonos e máscaras exigem visivelmente mais tempo por objeto, mas são necessários para a segmentação de instâncias quando a forma exata de um objeto importa. Os pontos-chave adequam-se à estimação de pose e à detecção de marcos, e as caixas orientadas adequam-se a tarefas de OBB como imagens aéreas, onde um retângulo alinhado aos eixos abrangeria demasiado fundo. Anotar para a tarefa mais restrita de que realmente precisas mantém o esforço de rotulagem proporcional ao resultado.