Vai al contenuto

Capire le fasi chiave di un progetto di computer vision

Introduzione

La computer vision è un sottocampo dell'intelligenza artificiale (AI) che aiuta i computer a vedere e capire il mondo come fanno gli esseri umani. Elabora e analizza immagini o video per estrarre informazioni, riconoscere schemi e prendere decisioni in base ai dati.

Le tecniche di visione artificiale come il rilevamento degli oggetti, la classificazione delle immagini e la segmentazione delle istanze possono essere applicate in diversi settori, dalla guida autonoma alle immagini mediche, per ottenere informazioni preziose.

Panoramica delle tecniche di visione artificiale

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!

Una panoramica di un progetto di visione artificiale

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.

Panoramica delle fasi del progetto di visione artificiale

Ora che sappiamo cosa dobbiamo aspettarci, passiamo subito ai passi da compiere per far avanzare il tuo progetto.

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.

Ecco alcuni esempi di obiettivi di progetto e di attività di computer vision che possono essere utilizzate per raggiungere questi obiettivi:

  • Obiettivo: Sviluppare un sistema in grado di monitorare e gestire il flusso di diversi tipi di veicoli sulle autostrade, migliorando la gestione del traffico e la sicurezza.

    • Attività di visione artificiale: Il rilevamento degli oggetti è ideale per il monitoraggio del traffico perché consente di localizzare e identificare in modo efficiente più veicoli. È meno impegnativo dal punto di vista computazionale rispetto alla segmentazione delle immagini, che fornisce dettagli non necessari per questo compito, garantendo un'analisi più rapida e in tempo reale.
  • Obiettivo: Sviluppare uno strumento che assista i radiologi fornendo contorni precisi, a livello di pixel, dei tumori nelle scansioni di imaging medico.

    • Compito della computer vision: La segmentazione delle immagini è adatta all'imaging medico perché fornisce confini precisi e dettagliati dei tumori, fondamentali per valutare le dimensioni, la forma e la pianificazione del trattamento.
  • Obiettivo: Creare un sistema digitale che categorizzi vari documenti (ad esempio, fatture, ricevute, documenti legali) per migliorare l'efficienza organizzativa e il recupero dei documenti.

    • Attività di visione artificiale: La classificazione delle immagini è ideale in questo caso perché gestisce un documento alla volta, senza dover considerare la posizione del documento nell'immagine. Questo approccio semplifica e accelera il processo di classificazione.

Fase 1.5: Selezione del modello e dell'approccio di formazione giusti

Dopo aver compreso l'obiettivo del progetto e le attività di computer vision adatte, una parte essenziale della definizione dell'obiettivo del progetto è la selezione del modello e dell'approccio di formazione più adatto.

A seconda dell'obiettivo, potresti scegliere di selezionare il modello prima o dopo aver visto quali dati sei in grado di raccogliere nella Fase 2. Ad esempio, supponiamo che il tuo progetto dipenda fortemente dalla disponibilità di determinati tipi di dati. In questo caso, potrebbe essere più pratico raccogliere e analizzare i dati prima di selezionare un modello. D'altra parte, se hai una chiara comprensione dei requisiti del modello, puoi scegliere prima il modello e poi raccogliere i dati che corrispondono alle specifiche.

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.

Formazione da zero contro l'uso dell'apprendimento per trasferimento

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.

Prima di entrare nel vivo di un progetto di computer vision, è importante avere una chiara comprensione di questi dettagli. Prima di passare alla Fase 2, controlla di aver considerato quanto segue:

  • Clearly define the problem you're trying to solve.
  • Determina l'obiettivo finale del tuo progetto.
  • Identificare il compito specifico di computer vision necessario (ad esempio, rilevamento di oggetti, classificazione di immagini, segmentazione di immagini).
  • Decidi se addestrare un modello da zero o se utilizzare l'apprendimento per trasferimento.
  • Seleziona il modello più adatto alle tue attività e alle tue esigenze di distribuzione.

Fase 2: Raccolta e annotazione dei dati

La qualità dei tuoi modelli di computer vision dipende dalla qualità del tuo set di dati. Puoi raccogliere immagini da internet, scattare le tue foto o utilizzare set di dati preesistenti. Ecco alcune ottime risorse per scaricare set di dati di alta qualità: Google Dataset Search Engine, UC Irvine Machine Learning Repository e Kaggle Datasets.

Alcune librerie, come Ultralytics, offrono un supporto integrato per diversi set di dati, rendendo più facile iniziare a lavorare con dati di alta qualità. Queste librerie spesso includono utility per utilizzare i set di dati più diffusi senza problemi, il che può farti risparmiare molto tempo e fatica nelle fasi iniziali del tuo progetto.

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.

Diversi tipi di annotazione delle immagini

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.

Fase 3: Aumento dei dati e suddivisione del set di dati

Dopo aver raccolto e annotato i dati delle immagini, è importante dividere il set di dati in set di formazione, convalida e test prima di eseguire l'aumento dei dati. La suddivisione del set di dati prima dell'incremento dei dati è fondamentale per testare e convalidare il modello sui dati originali e non modificati. Aiuta a valutare con precisione la capacità del modello di generalizzarsi a dati nuovi e sconosciuti.

Ecco come dividere i tuoi dati:

  • Set di addestramento: È la porzione più grande dei dati, in genere il 70-80% del totale, utilizzata per addestrare il modello.
  • Set di validazione: Di solito circa il 10-15% dei dati; questo set viene utilizzato per mettere a punto gli iperparametri e convalidare il modello durante la formazione, aiutando a prevenire l'overfitting.
  • Set di prova: Il restante 10-15% dei dati viene messo da parte come set di prova. Viene utilizzato per valutare le prestazioni del modello su dati non visti al termine dell'addestramento.

Dopo aver suddiviso i dati, puoi eseguire un aumento dei dati applicando trasformazioni come la rotazione, il ridimensionamento e il capovolgimento delle immagini per aumentare artificialmente le dimensioni del tuo set di dati. L'aumento dei dati rende il tuo modello più robusto alle variazioni e ne migliora le prestazioni su immagini non viste.

Esempi di ampliamenti di dati

Librerie come OpenCV, Albumentations e TensorFlow offrono funzioni di incremento flessibili che puoi utilizzare. Inoltre, alcune librerie, come Ultralytics, hanno impostazioni di aumento integrate direttamente nella funzione di addestramento del modello, semplificando il processo.

Per comprendere meglio i tuoi dati, puoi utilizzare strumenti come Matplotlib o Seaborn per visualizzare le immagini e analizzarne la distribuzione e le caratteristiche. La visualizzazione dei dati aiuta a identificare schemi, anomalie e l'efficacia delle tecniche di incremento. Puoi anche utilizzare Ultralytics Explorer, uno strumento per esplorare i dataset di computer vision con ricerca semantica, query SQL e ricerca di similarità vettoriale.

Lo strumento 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.

Fase 4: Formazione del modello

Una volta che il tuo set di dati è pronto per l'addestramento, puoi concentrarti sulla configurazione dell'ambiente necessario, sulla gestione dei set di dati e sull'addestramento del modello.

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

  • Installare librerie e framework essenziali come TensorFlow, PyTorch, o Ultralytics.
  • Se utilizzi una GPU, l'installazione di librerie come CUDA e cuDNN ti aiuterà ad abilitare l'accelerazione della GPU e a velocizzare il processo di formazione.

Quindi, puoi caricare i set di dati di formazione e di convalida nel tuo ambiente. Normalizza e preprocessa i dati attraverso il ridimensionamento, la conversione del formato o l'aumento. Una volta selezionato il modello, configura i livelli e specifica gli iperparametri. Compila il modello impostando la funzione di perdita, l'ottimizzatore e le metriche di performance.

Librerie come Ultralytics semplificano il processo di formazione. Puoi iniziare l'addestramento inserendo i dati nel modello con un codice minimo. Queste librerie gestiscono automaticamente le regolazioni dei pesi, la retropropagazione e la validazione. Offrono inoltre strumenti per monitorare i progressi e regolare facilmente gli iperparametri. Dopo l'addestramento, salva il modello e i suoi pesi con pochi comandi.

È importante ricordare che una corretta gestione dei set di dati è fondamentale per una formazione efficiente. Usa il controllo di versione per i set di dati per tenere traccia delle modifiche e garantire la riproducibilità. Strumenti come il DVC (Data Version Control) possono aiutare a gestire i dataset di grandi dimensioni.

Fase 5: Valutazione e perfezionamento del modello

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.
  • Regolazione degli iperparametri: Regola gli iperparametri per ottimizzare le prestazioni del modello. Tecniche come la ricerca a griglia o la ricerca casuale possono aiutare a trovare i migliori valori degli iperparametri.

  • Messa a punto: Apportare piccole modifiche all'architettura del modello o al processo di formazione per migliorare le prestazioni. Ciò potrebbe comportare la modifica dei tassi di apprendimento, delle dimensioni dei batch o di altri parametri del modello.

Fase 6: Test del modello

In questa fase, puoi assicurarti che il tuo modello funzioni bene su dati completamente sconosciuti, confermando la sua idoneità alla distribuzione. La differenza tra il test del modello e la valutazione del modello è che quest'ultima si concentra sulla verifica delle prestazioni del modello finale piuttosto che sul suo miglioramento iterativo.

È importante testare a fondo e risolvere i problemi più comuni che possono verificarsi. Testa il tuo modello su un set di dati di prova separato che non è stato utilizzato durante l'addestramento o la convalida. Questo set di dati dovrebbe rappresentare scenari reali per garantire che le prestazioni del modello siano coerenti e affidabili.

Inoltre, affronta i problemi più comuni come l'overfitting, l'underfitting e la perdita di dati. Usa tecniche come la convalida incrociata e il rilevamento delle anomalie per identificare e risolvere questi problemi.

Passo 7: Distribuzione del modello

Una volta che il tuo modello è stato testato a fondo, è il momento di distribuirlo. La distribuzione consiste nel rendere il modello disponibile per l'uso in un ambiente di produzione. Ecco i passaggi per distribuire un modello di computer vision:

  • Configurazione dell'ambiente: Configura l'infrastruttura necessaria per l'opzione di distribuzione scelta, sia essa basata sul cloud (AWS, Google Cloud, Azure) o sull'edge (dispositivi locali, IoT).

  • Esportare il modello: Esporta il tuo modello nel formato appropriato (ad esempio, ONNX, TensorRT, CoreML per YOLOv8) per garantire la compatibilità con la tua piattaforma di distribuzione.

  • Distribuzione del modello: Distribuisci il modello impostando le API o gli endpoint e integrandolo con la tua applicazione.
  • Garantire la scalabilità: Implementa bilanciatori di carico, gruppi di autoscaling e strumenti di monitoraggio per gestire le risorse e gestire l'aumento dei dati e delle richieste degli utenti.

Fase 8: Monitoraggio, manutenzione e documentazione

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.

Gli strumenti di monitoraggio possono aiutarti a monitorare gli indicatori chiave di prestazione (KPI) e a rilevare anomalie o cali di accuratezza. Monitorando il modello, puoi accorgerti della deriva del modello, quando le sue prestazioni diminuiscono nel tempo a causa di cambiamenti nei dati di input. Riqualifica periodicamente il modello con dati aggiornati per mantenere l'accuratezza e la pertinenza.

Monitoraggio del modello

Oltre al monitoraggio e alla manutenzione, anche la documentazione è fondamentale. Documenta accuratamente l'intero processo, compresa l'architettura del modello, le procedure di formazione, gli iperparametri, le fasi di pre-elaborazione dei dati e tutte le modifiche apportate durante l'implementazione e la manutenzione. Una buona documentazione garantisce la riproducibilità e facilita gli aggiornamenti futuri o la risoluzione dei problemi. Monitorando, mantenendo e documentando efficacemente il tuo modello, puoi assicurarti che rimanga accurato, affidabile e facile da gestire durante il suo ciclo di vita.

Domande frequenti

Ecco alcune domande comuni che potrebbero sorgere durante un progetto di computer vision:

  • D1: Come cambiano i passaggi se si dispone già di un set di dati o di dati quando si inizia un progetto di computer vision?

    • 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: Puoi utilizzare un modello pre-addestrato per eseguire previsioni su un'immagine senza addestrare un nuovo modello. Consulta la pagina dei documenti diYOLOv8 predict per le istruzioni su come utilizzare un modello preaddestrato di YOLOv8 per fare previsioni sulle tue immagini.
  • D4: Dove posso trovare articoli e aggiornamenti più dettagliati sulle applicazioni di computer vision e su YOLOv8?

Impegnarsi con la comunità

Connettersi con una comunità di appassionati di computer vision può aiutarti ad affrontare con sicurezza qualsiasi problema che ti si presenti mentre lavori al tuo progetto di computer vision. Ecco alcuni modi per imparare, risolvere i problemi e fare rete in modo efficace.

Risorse comunitarie

Documentazione ufficiale

  • Ultralytics YOLOv8 Documentazione: Esplora la documentazione ufficiale di YOLOv8 per trovare guide dettagliate con consigli utili su diverse attività e progetti di computer vision.

L'utilizzo di queste risorse ti aiuterà a superare le sfide e a rimanere aggiornato sulle ultime tendenze e sulle migliori pratiche della comunità della computer vision.

Dai il via al tuo progetto di computer vision oggi stesso!

Intraprendere un progetto di computer vision può essere emozionante e gratificante. Seguendo i passi di questa guida, potrai costruire una solida base per il successo. Ogni passo è fondamentale per sviluppare una soluzione che soddisfi i tuoi obiettivi e funzioni bene in scenari reali. Man mano che acquisisci esperienza, scoprirai tecniche e strumenti avanzati per migliorare i tuoi progetti. Resta curioso, continua a imparare ed esplora nuovi metodi e innovazioni!



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

Commenti