Salta para o conteúdo

Compreender os principais passos de um projeto de visão computacional

Introdução

A visão por computador é um subcampo da inteligência artificial (IA) que ajuda os computadores a ver e a compreender o mundo como os humanos. Processa e analisa imagens ou vídeos para extrair informações, reconhecer padrões e tomar decisões com base nesses dados.

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.

Visão geral das técnicas de visão por computador

Working on your own computer vision projects is a great way to understand and learn more about computer vision. However, a computer vision project can consist of many steps, and it might seem confusing at first. By the end of this guide, you'll be familiar with the steps involved in a computer vision project. We'll walk through everything from the beginning to the end of a project, explaining why each part is important. Let's get started and make your computer vision project a success!

Uma visão geral de um projeto de visão por computador

Before discussing the details of each step involved in a computer vision project, let's look at the overall process. If you started a computer vision project today, you'd take the following steps:

  • Your first priority would be to understand your project's requirements.
  • Then, you'd collect and accurately label the images that will help train your model.
  • Next, you'd clean your data and apply augmentation techniques to prepare it for model training.
  • After model training, you'd thoroughly test and evaluate your model to make sure it performs consistently under different conditions.
  • Finally, you'd deploy your model into the real world and update it based on new insights and feedback.

Visão computacional Visão geral das etapas do projeto

Agora que sabemos o que esperar, vamos mergulhar nos passos e fazer avançar o teu projeto.

Step 1: Defining Your Project's Goals

The first step in any computer vision project is clearly defining the problem you're trying to solve. Knowing the end goal helps you start to build a solution. This is especially true when it comes to computer vision because your project's objective will directly affect which computer vision task you need to focus on.

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.

    • Tarefa de visão computacional: A classificação de imagens é ideal neste caso, uma vez que trata um documento de cada vez, sem ter de considerar a posição do documento na imagem. Esta abordagem simplifica e acelera o processo de classificação.

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.

Treinar do zero vs. utilizar a aprendizagem por transferência

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:

  • Clearly define the problem you're trying to solve.
  • 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.

However, if you choose to collect images or take your own pictures, you'll need to annotate your data. Data annotation is the process of labeling your data to impart knowledge to your model. The type of data annotation you'll work with depends on your specific computer vision technique. Here are some examples:

  • Image Classification: You'll label the entire image as a single class.
  • 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.

Diferentes tipos de anotação de imagens

Data collection and annotation can be a time-consuming manual effort. Annotation tools can help make this process easier. Here are some useful open annotation tools: LabeI Studio, CVAT, and Labelme.

Passo 3: Aumento de dados e divisão do conjunto de dados

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.
  • Conjunto de validação: Normalmente, cerca de 10-15% dos teus dados; este conjunto é utilizado para afinar os hiperparâmetros e validar o modelo durante o treino, ajudando a evitar o sobreajuste.
  • 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.

Exemplos de ampliações de dados

Bibliotecas como OpenCV, Albumentations e TensorFlow oferecem funções de aumento flexíveis que podem ser utilizadas. Além disso, algumas bibliotecas, como a Ultralytics, têm definições de aumento incorporadas diretamente na sua função de formação de modelos, simplificando o processo.

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.

A ferramenta Ultralytics Explorer

By properly understanding, splitting, and augmenting your data, you can develop a well-trained, validated, and tested model that performs well in real-world applications.

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.

First, you'll need to make sure your environment is configured correctly. Typically, this includes the following:

  • Instala bibliotecas e estruturas essenciais como TensorFlow, PyTorch, ou Ultralytics.
  • Se estiveres a utilizar uma GPU, a instalação de bibliotecas como CUDA e cuDNN ajudará a ativar a aceleração da GPU e a acelerar o processo de formação.

Depois, podes carregar os conjuntos de dados de treino e validação no teu ambiente. Normaliza e pré-processa os dados por meio de redimensionamento, conversão de formato ou aumento. Com o modelo selecionado, configura as camadas e especifica os hiperparâmetros. Compila o modelo definindo a função de perda, o otimizador e as métricas de desempenho.

Bibliotecas como Ultralytics simplificam o processo de treino. Podes começar a treinar introduzindo dados no modelo com o mínimo de código. Estas bibliotecas tratam automaticamente dos ajustes de peso, da retropropagação e da validação. Também oferecem ferramentas para monitorizar o progresso e ajustar facilmente os hiperparâmetros. Após o treino, guarda o modelo e os seus pesos com alguns comandos.

É 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.

Etapa 5: Avaliação do modelo e aperfeiçoamento do modelo

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.

  • Ajuste fino: Faz pequenos ajustes na arquitetura do modelo ou no processo de formação para melhorar o desempenho. Isto pode envolver o ajuste de taxas de aprendizagem, tamanhos de lote ou outros parâmetros do modelo.

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.

Além disso, aborda problemas comuns como o sobreajuste, o subajuste e a fuga de dados. Utiliza técnicas como a validação cruzada e a deteção de anomalias para identificar e corrigir estes problemas.

Passo 7: Implementação do modelo

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 no limite (dispositivos locais, IoT).

  • Exportando o modelo: Exporta o modelo para o formato apropriado (por exemplo, ONNX, TensorRT, CoreML para YOLOv8) para garantir a compatibilidade com sua plataforma de implantação.

  • 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

Once your model is deployed, it's important to continuously monitor its performance, maintain it to handle any issues, and document the entire process for future reference and improvements.

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.

Monitorização de modelos

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.

FAQs

Aqui estão algumas perguntas comuns que podem surgir durante um projeto de visão computacional:

  • P1: Como é que os passos mudam se eu já tiver um conjunto de dados ou dados ao iniciar um projeto de visão computacional?

    • A1: Starting with a pre-existing dataset or data affects the initial steps of your project. In Step 1, along with deciding the computer vision task and model, you'll also need to explore your dataset thoroughly. Understanding its quality, variety, and limitations will guide your choice of model and training approach. Your approach should align closely with the data's characteristics for more effective outcomes. Depending on your data or dataset, you may be able to skip Step 2 as well.
  • Q2: I'm not sure what computer vision project to start my AI learning journey with.

  • Q3: I don't want to train a model. I just want to try running a model on an image. How can I do that?

    • A3: Podes utilizar um modelo pré-treinado para executar previsões numa imagem sem treinar um novo modelo. Consulta a página de documentosYOLOv8 predict para obteres instruções sobre como utilizar um modelo YOLOv8 pré-treinado para fazer previsões nas tuas imagens.
  • Q4: Onde posso encontrar artigos mais detalhados e actualizados sobre aplicações de visão por computador e YOLOv8?

    • A4: Para artigos mais detalhados, actualizações e informações sobre aplicações de visão por computador e YOLOv8, visita a página do blogueUltralytics . O blogue abrange uma vasta gama de tópicos e fornece informações valiosas para o ajudar a manter-se atualizado e a melhorar os seus projectos.

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

  • Problemas do GitHub: Consulta o repositórioYOLOv8 GitHub e utiliza o separador Problemas para colocar questões, comunicar erros e sugerir novas funcionalidades. A comunidade ativa e os mantenedores estão lá para ajudar com problemas específicos.
  • 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 YOLOv8 Documentação: Explora a documentação oficial do YOLOv8 para obter guias detalhados com dicas úteis sobre diferentes tarefas e projectos de visão computacional.

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!



Created 2024-05-29, Updated 2024-06-10
Authors: glenn-jocher (4), abirami-vina (2)

Comentários