Compreender os principais passos de um projeto de visão computacional
Introdução
Computer vision is a subfield of artificial intelligence (AI) that helps computers see and understand the world like humans do. It processes and analyzes images or videos to extract information, recognize patterns, and make decisions based on that data.
Observa: How to Do [Computer Vision](https://www.ultralytics.com/glossary/computer-vision-cv) Projects | A Step-by-Step Guide
As técnicas de visão por computador, como a deteção de objectos, a classificação de imagens e a segmentação de instâncias, podem ser aplicadas em várias indústrias, desde a condução autónoma à imagiologia médica, para obter informações valiosas.
Trabalhar em seus próprios projetos de visão computacional é uma ótima maneira de entender e aprender mais sobre visão computacional. No entanto, um projeto de visão computacional pode consistir em muitas etapas e pode parecer confuso à primeira vista. Ao final deste guia, você estará familiarizado com as etapas envolvidas em um projeto de visão computacional. Examinaremos tudo, do início ao fim de um projeto, explicando por que cada parte é importante. Vamos começar e tornar seu projeto de visão computacional um sucesso!
Uma visão geral de um projeto de visão por computador
Antes de discutir os detalhes de cada etapa envolvida em um projeto de visão computacional, vejamos o processo geral. Se você iniciou um projeto de visão computacional hoje, seguiria as seguintes etapas:
- Sua primeira prioridade seria entender os requisitos do seu projeto.
- Em seguida, você coletará e rotulará com precisão as imagens que ajudarão a treinar seu modelo.
- Em seguida, você limparia seus dados e aplicaria técnicas de aumento para prepará-los para o treinamento do modelo.
- Após o treinamento do modelo, você testaria e avaliaria exaustivamente seu modelo para garantir que ele funcionasse de forma consistente sob diferentes condições.
- Por fim, você implantaria seu modelo no mundo real e o atualizaria com base em novos insights e feedback.
Agora que sabemos o que esperar, vamos mergulhar nos passos e fazer avançar o teu projeto.
Etapa 1: Definindo os objetivos do seu projeto
A primeira etapa em qualquer projeto de visão computacional é definir claramente o problema que você está tentando resolver. Conhecer o objetivo final ajuda você a começar a construir uma solução. Isso é especialmente verdadeiro quando se trata de visão computacional porque o objetivo do seu projeto afetará diretamente a tarefa de visão computacional em que você precisa se concentrar.
Seguem-se alguns exemplos de objectivos de projectos e de tarefas de visão por computador que podem ser utilizadas para atingir esses objectivos:
-
Objetivo: Desenvolver um sistema que possa monitorizar e gerir o fluxo de diferentes tipos de veículos nas auto-estradas, melhorando a gestão e a segurança do tráfego.
- Tarefa de visão computacional: A deteção de objectos é ideal para a monitorização do tráfego porque localiza e identifica eficazmente vários veículos. É menos exigente em termos computacionais do que a segmentação de imagens, que fornece detalhes desnecessários para esta tarefa, garantindo uma análise mais rápida e em tempo real.
-
Objetivo: Desenvolver uma ferramenta que auxilie os radiologistas, fornecendo contornos precisos, ao nível do pixel, de tumores em exames de imagiologia médica.
- Tarefa de visão computacional: A segmentação de imagens é adequada para a imagiologia médica porque fornece limites precisos e detalhados de tumores que são cruciais para avaliar o tamanho, a forma e o planeamento do tratamento.
-
Objetivo: Criar um sistema digital que categorize vários documentos (por exemplo, facturas, recibos, papelada legal) para melhorar a eficiência organizacional e a recuperação de documentos.
- Computer Vision Task: Image classification is ideal here as it handles one document at a time, without needing to consider the document's position in the image. This approach simplifies and accelerates the sorting process.
Passo 1.5: Selecionar o modelo e a abordagem de formação correctos
Depois de compreender o objetivo do projeto e as tarefas de visão computacional adequadas, uma parte essencial da definição do objetivo do projeto é a seleção do modelo e da abordagem de formação correctos.
Dependendo do objetivo, podes optar por selecionar o modelo primeiro ou depois de veres quais os dados que consegues recolher no Passo 2. Por exemplo, supõe que o teu projeto depende muito da disponibilidade de tipos específicos de dados. Nesse caso, pode ser mais prático recolher e analisar os dados primeiro, antes de selecionar um modelo. Por outro lado, se tiveres uma compreensão clara dos requisitos do modelo, podes escolher primeiro o modelo e depois recolher os dados que correspondem a essas especificações.
Choosing between training from scratch or using transfer learning affects how you prepare your data. Training from scratch requires a diverse dataset to build the model's understanding from the ground up. Transfer learning, on the other hand, allows you to use a pre-trained model and adapt it with a smaller, more specific dataset. Also, choosing a specific model to train will determine how you need to prepare your data, such as resizing images or adding annotations, according to the model's specific requirements.
Note: When choosing a model, consider its deployment to ensure compatibility and performance. For example, lightweight models are ideal for edge computing due to their efficiency on resource-constrained devices. To learn more about the key points related to defining your project, read our guide on defining your project's goals and selecting the right model.
Antes de entrares no trabalho prático de um projeto de visão por computador, é importante teres uma compreensão clara destes detalhes. Verifica se consideraste o seguinte antes de passares ao Passo 2:
- Defina claramente o problema que você está tentando resolver.
- Determina o objetivo final do teu projeto.
- Identifica a tarefa específica de visão computacional necessária (por exemplo, deteção de objectos, classificação de imagens, segmentação de imagens).
- Decide se quer treinar um modelo de raiz ou utilizar a aprendizagem por transferência.
- Selecciona o modelo adequado à tua tarefa e às tuas necessidades de implementação.
Etapa 2: Recolha de dados e anotação de dados
A qualidade dos teus modelos de visão por computador depende da qualidade do teu conjunto de dados. Podes recolher imagens da Internet, tirar as tuas próprias fotografias ou utilizar conjuntos de dados pré-existentes. Aqui estão alguns recursos excelentes para descarregar conjuntos de dados de alta qualidade: Google Dataset Search Engine, UC Irvine Machine Learning Repository, e Kaggle Datasets.
Algumas bibliotecas, como Ultralytics, fornecem suporte integrado para vários conjuntos de dados, facilitando o início da utilização de dados de alta qualidade. Estas bibliotecas incluem frequentemente utilitários para utilizar conjuntos de dados populares sem problemas, o que pode poupar muito tempo e esforço nas fases iniciais do seu projeto.
No entanto, se você optar por coletar imagens ou tirar suas próprias fotos, precisará anotar seus dados. A anotação de dados é o processo de rotular seus dados para transmitir conhecimento ao seu modelo. O tipo de anotação de dados com a qual você trabalhará depende da sua técnica específica de visão computacional. aqui estão alguns exemplos:
- Classificação de imagens: Rotularás toda a imagem como uma única classe.
- Object Detection: You'll draw bounding boxes around each object in the image and label each box.
- Image Segmentation: You'll label each pixel in the image according to the object it belongs to, creating detailed object boundaries.
A recolha e anotação de dados pode ser um esforço manual moroso. As ferramentas de anotação podem ajudar a tornar este processo mais fácil. Eis algumas ferramentas de anotação abertas úteis: LabeI Studio, CVAT e Labelme.
Step 3: Data Augmentation and Splitting Your Dataset
Depois de recolher e anotar os dados da imagem, é importante dividir o conjunto de dados em conjuntos de treino, validação e teste antes de efetuar o aumento de dados. A divisão do conjunto de dados antes do aumento é crucial para testar e validar o modelo em dados originais e inalterados. Ajuda a avaliar com precisão a capacidade de generalização do modelo para dados novos e não vistos.
Eis como dividir os teus dados:
- Conjunto de treinamento: É a maior parte dos teus dados, normalmente 70-80% do total, utilizada para treinar o teu modelo.
- Validation Set: Usually around 10-15% of your data; this set is used to tune hyperparameters and validate the model during training, helping to prevent overfitting.
- Conjunto de teste: Os restantes 10-15% dos teus dados são colocados de lado como conjunto de teste. É utilizado para avaliar o desempenho do modelo em dados não vistos após a conclusão do treino.
Depois de dividir os dados, pode efetuar o aumento de dados aplicando transformações como rodar, dimensionar e inverter imagens para aumentar artificialmente o tamanho do conjunto de dados. O aumento de dados torna o teu modelo mais robusto a variações e melhora o seu desempenho em imagens não vistas.
Libraries like OpenCV, Albumentations, and TensorFlow offer flexible augmentation functions that you can use. Additionally, some libraries, such as Ultralytics, have built-in augmentation settings directly within its model training function, simplifying the process.
Para compreender melhor os teus dados, podes utilizar ferramentas como o Matplotlib ou o Seaborn para visualizar as imagens e analisar a sua distribuição e características. A visualização dos teus dados ajuda a identificar padrões, anomalias e a eficácia das tuas técnicas de aumento. Também podes utilizar o Ultralytics Explorer, uma ferramenta para explorar conjuntos de dados de visão computacional com pesquisa semântica, consultas SQL e pesquisa de semelhanças vectoriais.
Ao compreender, dividir e aumentar corretamente os teus dados, podes desenvolver um modelo bem treinado, validado e testado que funciona bem em aplicações do mundo real.
Passo 4: Treino do modelo
Quando o conjunto de dados estiver pronto para ser treinado, podes concentrar-te na configuração do ambiente necessário, na gestão dos conjuntos de dados e no treino do modelo.
Primeiro, você precisará garantir que seu ambiente esteja configurado corretamente. Normalmente, isso inclui o seguinte:
- Installing essential libraries and frameworks like TensorFlow, PyTorch, or Ultralytics.
- Se estiveres a utilizar um GPU, a instalação de bibliotecas como CUDA e cuDNN ajudará a ativar a aceleração GPU e a acelerar o processo de formação.
Then, you can load your training and validation datasets into your environment. Normalize and preprocess the data through resizing, format conversion, or augmentation. With your model selected, configure the layers and specify hyperparameters. Compile the model by setting the loss function, optimizer, and performance metrics.
Libraries like Ultralytics simplify the training process. You can start training by feeding data into the model with minimal code. These libraries handle weight adjustments, backpropagation, and validation automatically. They also offer tools to monitor progress and adjust hyperparameters easily. After training, save the model and its weights with a few commands.
É importante ter em conta que a gestão adequada dos conjuntos de dados é vital para uma formação eficiente. Utiliza o controlo de versões dos conjuntos de dados para acompanhar as alterações e garantir a reprodutibilidade. Ferramentas como o DVC (Data Version Control) podem ajudar a gerir grandes conjuntos de dados.
Step 5: Model Evaluation and Model Finetuning
It's important to assess your model's performance using various metrics and refine it to improve accuracy. Evaluating helps identify areas where the model excels and where it may need improvement. Fine-tuning ensures the model is optimized for the best possible performance.
- Performance Metrics: Use metrics like accuracy, precision, recall, and F1-score to evaluate your model's performance. These metrics provide insights into how well your model is making predictions.
-
Ajuste de hiperparâmetros: Ajusta os hiperparâmetros para otimizar o desempenho do modelo. Técnicas como pesquisa em grade ou pesquisa aleatória podem ajudar a encontrar os melhores valores de hiperparâmetros.
-
Fine-Tuning: Make small adjustments to the model architecture or training process to enhance performance. This might involve tweaking learning rates, batch sizes, or other model parameters.
Passo 6: Teste do modelo
Nesta etapa, podes certificar-te de que o teu modelo tem um bom desempenho em dados completamente inéditos, confirmando que está pronto para ser implementado. A diferença entre o teste de modelos e a avaliação de modelos é que esta se concentra na verificação do desempenho do modelo final, em vez de o melhorar iterativamente.
É importante testar e depurar exaustivamente quaisquer problemas comuns que possam surgir. Testa o teu modelo num conjunto de dados de teste separado que não tenha sido utilizado durante a formação ou validação. Este conjunto de dados deve representar cenários do mundo real para garantir que o desempenho do modelo é consistente e fiável.
Also, address common problems such as overfitting, underfitting, and data leakage. Use techniques like cross-validation and anomaly detection to identify and fix these issues.
Step 7: Model Deployment
Depois de o teu modelo ter sido exaustivamente testado, é altura de o implementar. A implantação envolve tornar seu modelo disponível para uso em um ambiente de produção. Aqui estão as etapas para implantar um modelo de visão computacional:
-
Configurar o ambiente: Configura a infraestrutura necessária para a opção de implementação que escolheste, quer seja baseada na nuvem (AWS, Google Cloud, Azure) ou na borda (dispositivos locais, IoT).
-
Exporting the Model: Export your model to the appropriate format (e.g., ONNX, TensorRT, CoreML for YOLO11) to ensure compatibility with your deployment platform.
- Implantação do modelo: Implanta o modelo configurando APIs ou pontos de extremidade e integrando-o à sua aplicação.
- Garante a escalabilidade: Implementa balanceadores de carga, grupos de escalonamento automático e ferramentas de monitorização para gerir recursos e lidar com o aumento de dados e pedidos de utilizadores.
Etapa 8: Monitorização, manutenção e documentação
Depois que seu modelo for implantado, é importante monitorar continuamente seu desempenho, mantê-lo para lidar com quaisquer problemas e documentar todo o processo para referência e melhorias futuras.
As ferramentas de monitorização podem ajudar-te a seguir os indicadores-chave de desempenho (KPIs) e a detetar anomalias ou quebras de precisão. Ao monitorizar o modelo, pode estar ciente da deriva do modelo, em que o desempenho do modelo diminui ao longo do tempo devido a alterações nos dados de entrada. Periodicamente, treina novamente o modelo com dados actualizados para manter a precisão e a relevância.
Para além da monitorização e manutenção, a documentação também é fundamental. Documenta exaustivamente todo o processo, incluindo a arquitetura do modelo, os procedimentos de formação, os hiperparâmetros, os passos de pré-processamento de dados e quaisquer alterações efectuadas durante a implementação e a manutenção. Uma boa documentação garante a reprodutibilidade e facilita as futuras actualizações ou a resolução de problemas. Ao monitorizar, manter e documentar eficazmente o seu modelo, pode garantir que este se mantém preciso, fiável e fácil de gerir durante o seu ciclo de vida.
Envolvimento com a comunidade
A ligação a uma comunidade de entusiastas da visão computacional pode ajudar-te a resolver quaisquer problemas com que te depares enquanto trabalhas no teu projeto de visão computacional com confiança. Aqui estão algumas maneiras de aprender, solucionar problemas e trabalhar em rede de forma eficaz.
Recursos comunitários
- GitHub Issues: Check out the YOLO11 GitHub repository and use the Issues tab to ask questions, report bugs, and suggest new features. The active community and maintainers are there to help with specific issues.
- Ultralytics Servidor Discord: Junta-te ao servidor Discord deUltralytics para interagir com outros utilizadores e programadores, obter apoio e partilhar ideias.
Documentação oficial
- Ultralytics YOLO11 Documentation: Explore the official YOLO11 documentation for detailed guides with helpful tips on different computer vision tasks and projects.
A utilização destes recursos ajudar-te-á a ultrapassar desafios e a manteres-te atualizado com as últimas tendências e melhores práticas na comunidade da visão computacional.
Inicia hoje o teu projeto de visão computacional!
Assumir um projeto de visão computacional pode ser empolgante e gratificante. Ao seguir os passos deste guia, podes construir uma base sólida para o sucesso. Cada etapa é crucial para desenvolver uma solução que atenda aos teus objetivos e funcione bem em cenários do mundo real. À medida que fores ganhando experiência, irás descobrir técnicas e ferramentas avançadas para melhorar os teus projectos. Mantém a curiosidade, continua a aprender e explora novos métodos e inovações!
FAQ
Como é que escolho a tarefa de visão computacional certa para o meu projeto?
A escolha da tarefa de visão computacional correcta depende do objetivo final do teu projeto. Por exemplo, se quiseres monitorizar o tráfego, a deteção de objectos é adequada, uma vez que pode localizar e identificar vários tipos de veículos em tempo real. Para imagens médicas, a segmentação de imagens é ideal para fornecer limites detalhados de tumores, ajudando no diagnóstico e no planeamento do tratamento. Sabe mais sobre tarefas específicas como a deteção de objectos, a classificação de imagens e a segmentação de instâncias.
Porque é que a anotação de dados é crucial nos projectos de visão computacional?
A anotação de dados é vital para ensinar o teu modelo a reconhecer padrões. O tipo de anotação varia consoante a tarefa:
- Classificação de imagens: Rotula toda a imagem como uma única classe.
- Deteção de objectos: Caixas delimitadoras desenhadas à volta dos objectos.
- Segmentação de imagens: Cada pixel é etiquetado de acordo com o objeto a que pertence.
Ferramentas como Label Studio, CVAT e Labelme podem ajudar neste processo. Para mais informações, consulta o nosso guia de recolha e anotação de dados.
Que passos devo seguir para aumentar e dividir o meu conjunto de dados de forma eficaz?
A divisão do conjunto de dados antes do aumento ajuda a validar o desempenho do modelo nos dados originais e inalterados. Segue estes passos:
- Conjunto de treino: 70-80% dos teus dados.
- Validation Set: 10-15% for hyperparameter tuning.
- Conjunto de testes: Restantes 10-15% para avaliação final.
Após a divisão, aplica técnicas de aumento de dados como rotação, escala e inversão para aumentar a diversidade do conjunto de dados. Bibliotecas como Albumentations e OpenCV podem ajudar. Ultralytics também oferece configurações de aumento incorporadas para maior conveniência.
Como é que posso exportar o meu modelo de visão computacional treinado para implementação?
Exporting your model ensures compatibility with different deployment platforms. Ultralytics provides multiple formats, including ONNX, TensorRT, and CoreML. To export your YOLO11 model, follow this guide:
- Utiliza o
export
com o parâmetro de formato pretendido. - Certifica-te de que o modelo exportado se adequa às especificações do teu ambiente de implementação (por exemplo, dispositivos de ponta, nuvem).
Para mais informações, consulta o guia de exportação de modelos.
Quais são as melhores práticas para monitorizar e manter um modelo de visão computacional implementado?
A monitorização e manutenção contínuas são essenciais para o sucesso a longo prazo de um modelo. Implementa ferramentas para acompanhar os indicadores-chave de desempenho (KPI) e detetar anomalias. Treina regularmente o modelo com dados actualizados para contrariar a deriva do modelo. Documenta todo o processo, incluindo a arquitetura do modelo, os hiperparâmetros e as alterações, para garantir a reprodutibilidade e a facilidade de futuras actualizações. Sabe mais no nosso guia de monitorização e manutenção.