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