Link to this sectionComprendere le fasi chiave di un progetto di computer vision#
Link to this sectionIntroduzione#
La computer vision è un sottocampo dell'intelligenza artificiale (AI) che aiuta i computer a vedere e comprendere il mondo come fanno gli esseri umani. Elabora e analizza immagini o video per estrarre informazioni, riconoscere pattern e prendere decisioni basate su tali dati.
Tecniche di computer vision come object detection, image classification e instance segmentation possono essere applicate in svariati settori, dalla guida autonoma all'imaging medico, per ottenere approfondimenti preziosi.
Lavorare ai tuoi progetti di computer vision è un ottimo modo per comprendere e imparare di più sulla computer vision. Tuttavia, un progetto di computer vision può consistere in molte fasi e all'inizio potrebbe sembrare confuso. Alla fine di questa guida, avrai familiarità con le fasi coinvolte in un progetto di computer vision. Analizzeremo tutto, dall'inizio alla fine di un progetto, spiegando perché ogni parte è importante.
Link to this sectionUna panoramica di un progetto di computer vision#
Prima di discutere i dettagli di ogni fase coinvolta in un progetto di computer vision, diamo un'occhiata al processo generale. Se iniziassi un progetto di computer vision oggi, seguiresti questi passaggi:
- La tua prima priorità sarebbe comprendere i requisiti del tuo progetto.
- Poi, raccoglieresti ed etichetteresti accuratamente le immagini che aiuteranno ad addestrare il tuo modello.
- Successivamente, puliresti i tuoi dati e applicheresti tecniche di augmentation per prepararli all'addestramento del modello.
- Dopo l'addestramento del modello, testeresti e valuteresti accuratamente il tuo modello per assicurarti che funzioni in modo coerente in condizioni diverse.
- Infine, distribuiresti (deploy) il tuo modello nel mondo reale e lo aggiorneresti in base a nuove intuizioni e feedback.
Ora che sappiamo cosa aspettarci, immergiamoci direttamente nelle fasi e facciamo avanzare il tuo progetto.
Link to this sectionFase 1: Definire gli obiettivi del tuo progetto#
Il primo passo in qualsiasi progetto di computer vision è definire chiaramente il problema che stai cercando di risolvere. Conoscere l'obiettivo finale ti aiuta a iniziare a costruire una soluzione. Questo è particolarmente vero quando si parla di computer vision, poiché l'obiettivo del tuo progetto influenzerà direttamente su quale task di computer vision devi concentrarti.
Ecco alcuni esempi di obiettivi di progetto e i task di computer vision che possono essere utilizzati 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.
- Task di computer vision: L'object detection è ideale per il monitoraggio del traffico perché localizza e identifica in modo efficiente più veicoli. È meno esigente dal punto di vista computazionale rispetto all'image segmentation, che fornisce dettagli non necessari per questo compito, garantendo un'analisi più rapida 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.
- Task di computer vision: L'image segmentation è adatta all'imaging medico perché fornisce confini accurati e dettagliati dei tumori, fondamentali per valutare dimensioni, forma e pianificazione del trattamento.
-
Obiettivo: Creare un sistema digitale che categorizzi vari documenti (es. fatture, ricevute, documenti legali) per migliorare l'efficienza organizzativa e il recupero dei documenti.
- Task di computer vision: L'image classification è ideale qui poiché gestisce un documento alla volta, senza dover considerare la posizione del documento nell'immagine. Questo approccio semplifica e accelera il processo di smistamento.
Link to this sectionFase 1.5: Selezionare il modello giusto e l'approccio di addestramento#
Dopo aver compreso l'obiettivo del progetto e i task di computer vision idonei, una parte essenziale della definizione dell'obiettivo del progetto è la selezione del modello giusto e dell'approccio di addestramento.
A seconda dell'obiettivo, potresti scegliere di selezionare prima il modello 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 tipi specifici di dati. In tal 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 il modello per primo e poi raccogliere dati che soddisfino tali specifiche.
Scegliere tra l'addestramento da zero (from scratch) o l'utilizzo del transfer learning influisce su come prepari i tuoi dati. L'addestramento da zero richiede un dataset diversificato per costruire la comprensione del modello partendo dalle basi. Il transfer learning, d'altra parte, ti consente di utilizzare un modello pre-addestrato e adattarlo con un dataset più piccolo e più specifico. Inoltre, la scelta di un modello specifico da addestrare determinerà come dovrai preparare i tuoi dati, come ridimensionare le immagini o aggiungere annotazioni, in base ai requisiti specifici del modello.
Nota: quando scegli un modello, considera il suo deployment per garantire compatibilità e prestazioni. Ad esempio, i modelli leggeri sono ideali per l'edge computing grazie alla loro efficienza su dispositivi con risorse limitate. Per saperne di più sui punti chiave relativi alla definizione del tuo progetto, leggi la nostra guida sulla definizione degli obiettivi del progetto e sulla selezione del modello giusto.
Prima di passare al lavoro pratico di un progetto di computer vision, è importante avere una chiara comprensione di questi dettagli. Verifica di aver considerato quanto segue prima di passare alla Fase 2:
- Definisci chiaramente il problema che stai cercando di risolvere.
- Determina l'obiettivo finale del tuo progetto.
- Identifica il task di computer vision specifico necessario (es. object detection, image classification, image segmentation).
- Decidi se addestrare un modello da zero o utilizzare il transfer learning.
- Seleziona il modello appropriato per il tuo compito e per le tue esigenze di deployment.
Link to this sectionFase 2: Raccolta dati e annotazione dei dati#
La qualità dei tuoi modelli di computer vision dipende dalla qualità del tuo dataset. Puoi raccogliere immagini da internet, scattare le tue foto o utilizzare dataset preesistenti. Ecco alcune ottime risorse per scaricare dataset di alta qualità: Google Dataset Search Engine, UC Irvine Machine Learning Repository e Kaggle Datasets.
Alcune librerie, come Ultralytics, forniscono supporto integrato per vari dataset, rendendo più semplice iniziare con dati di alta qualità. Queste librerie includono spesso utilità per utilizzare i dataset più famosi senza soluzione di continuità, il che può farti risparmiare molto tempo e fatica nelle fasi iniziali del tuo progetto.
Tuttavia, se scegli di raccogliere immagini o scattare le tue foto, dovrai annotare i tuoi dati. La data annotation è il processo di etichettatura dei dati per trasmettere conoscenza al tuo modello. Il tipo di annotazione dati con cui lavorerai dipende dalla tua specifica tecnica di computer vision. Ecco alcuni esempi:
- Image Classification: Etichetterai l'intera immagine come una singola classe.
- Object Detection: Disegnerai dei bounding box attorno a ogni oggetto nell'immagine ed etichetterai ogni box.
- Image Segmentation: Etichetterai ogni pixel nell'immagine in base all'oggetto a cui appartiene, creando confini dettagliati dell'oggetto.
La raccolta e l'annotazione dei dati può essere un lavoro manuale dispendioso in termini di tempo. Gli strumenti di annotazione possono aiutare a rendere questo processo più semplice. Ecco alcuni utili strumenti di annotazione open source: Label Studio, CVAT e Labelme.
Link to this sectionFase 3: Data augmentation e suddivisione del dataset#
Dopo aver raccolto e annotato i dati delle tue immagini, è importante suddividere prima il dataset in set di addestramento (training), validazione e test prima di eseguire la data augmentation. Suddividere il dataset prima dell'augmentation è fondamentale per testare e validare il modello su dati originali e non alterati. Aiuta a valutare accuratamente quanto bene il modello si generalizza a dati nuovi e mai visti.
Ecco come suddividere i tuoi dati:
- Training Set: È la parte più grande dei tuoi dati, tipicamente il 70-80% del totale, utilizzata per addestrare il tuo modello.
- Validation Set: Solitamente circa il 10-15% dei tuoi dati; questo set viene utilizzato per regolare gli iperparametri e validare il modello durante l'addestramento, aiutando a prevenire l'overfitting.
- Test Set: Il restante 10-15% dei tuoi dati viene messo da parte come test set. Viene utilizzato per valutare le prestazioni del modello su dati inediti dopo che l'addestramento è completo.
Dopo aver suddiviso i dati, puoi eseguire la data augmentation applicando trasformazioni come rotazione, ridimensionamento e ribaltamento (flipping) delle immagini per aumentare artificialmente la dimensione del tuo dataset. La data augmentation rende il tuo modello più robusto alle variazioni e ne migliora le prestazioni su immagini inedite.
Librerie come OpenCV, Albumentations e TensorFlow offrono funzioni di augmentation flessibili che puoi utilizzare. Inoltre, alcune librerie, come Ultralytics, hanno impostazioni di augmentation integrate direttamente all'interno della sua funzione di addestramento del modello, semplificando il processo.
To understand your data better, you can use tools like Matplotlib or Seaborn to visualize the images and analyze their distribution and characteristics. Visualizing your data helps identify patterns, anomalies, and the effectiveness of your augmentation techniques. The Ultralytics Platform Charts tab can surface many of these insights without any code by automatically generating split distribution, class counts, image-dimension histograms, and annotation-position heatmaps for every uploaded dataset.
Comprendendo, suddividendo e aumentando correttamente i tuoi dati (understanding, splitting, and augmenting your data), puoi sviluppare un modello ben addestrato, validato e testato che funzioni bene in applicazioni del mondo reale.
Link to this sectionFase 4: Addestramento del modello#
Una volta che il tuo dataset è pronto per l'addestramento, puoi concentrarti sull'impostazione dell'ambiente necessario, sulla gestione dei dataset e sull'addestramento del tuo modello.
Innanzitutto, dovrai assicurarti che il tuo ambiente sia configurato correttamente. Tipicamente, questo include quanto segue:
- Installazione di librerie e framework essenziali come TensorFlow, PyTorch o Ultralytics.
- Se stai utilizzando una GPU, l'installazione di librerie come CUDA e cuDNN aiuterà ad abilitare l'accelerazione GPU e ad accelerare il processo di addestramento.
Quindi, puoi caricare i tuoi dataset di training e validazione nel tuo ambiente. Normalizza e pre-elabora i dati tramite ridimensionamento, conversione di formato o augmentation. Con il modello selezionato, configura i layer e specifica gli iperparametri. Compila il modello impostando la loss function, l'ottimizzatore e le metriche di performance.
Librerie come Ultralytics semplificano il processo di addestramento. Puoi iniziare l'addestramento inserendo i dati nel modello con pochissimo codice. Queste librerie gestiscono automaticamente le regolazioni dei pesi, la backpropagation e la validazione. Offrono anche strumenti per monitorare i progressi e regolare facilmente gli iperparametri. Dopo l'addestramento, salva il modello e i suoi pesi con pochi comandi.
È importante tenere a mente che una corretta gestione del dataset è vitale per un addestramento efficiente. Usa il versionamento per i dataset per tracciare le modifiche e garantire la riproducibilità. Strumenti come DVC (Data Version Control) possono aiutare a gestire dataset di grandi dimensioni.
Link to this sectionFase 5: Valutazione del modello e fine-tuning#
È importante valutare le prestazioni del tuo modello utilizzando varie metriche e raffinarlo per migliorare l'accuratezza. La valutazione (evaluating) aiuta a identificare le aree in cui il modello eccelle e dove potrebbe necessitare di miglioramenti. Il fine-tuning assicura che il modello sia ottimizzato per le migliori prestazioni possibili.
- Performance Metrics: Usa metriche come accuratezza, precision, recall e F1-score per valutare le prestazioni del tuo modello. Queste metriche forniscono approfondimenti su quanto bene il tuo modello sta facendo previsioni.
- Hyperparameter Tuning: Regola gli iperparametri per ottimizzare le prestazioni del modello. Tecniche come grid search o random search possono aiutare a trovare i migliori valori degli iperparametri.
- Fine-Tuning: Apporta piccole modifiche all'architettura del modello o al processo di addestramento per migliorare le prestazioni. Questo potrebbe comportare la modifica di learning rates, batch sizes o altri parametri del modello.
Per una comprensione più profonda delle tecniche di valutazione e fine-tuning del modello, dai un'occhiata alla nostra guida sugli approfondimenti della valutazione del modello.
Link to this sectionFase 6: Test del modello#
In questa fase, puoi assicurarti che il tuo modello funzioni bene su dati completamente inediti, confermando la sua prontezza per il deployment. La differenza tra il test del modello e la valutazione del modello è che il test si concentra sulla verifica delle prestazioni finali del modello piuttosto che sul suo miglioramento iterativo.
È importante testare e risolvere a fondo eventuali problemi comuni che potrebbero sorgere. Testa il tuo modello su un test dataset separato che non è stato utilizzato durante l'addestramento o la validazione. Questo dataset dovrebbe rappresentare scenari del mondo reale per garantire che le prestazioni del modello siano coerenti e affidabili.
Inoltre, affronta problemi comuni come l'overfitting, l'underfitting e il data leakage. Usa tecniche come la cross-validation e l'anomaly detection per identificare e risolvere questi problemi. Per strategie di test complete, consulta la nostra guida al test dei modelli.
Link to this sectionFase 7: Deployment del modello#
Una volta che il tuo modello è stato testato a fondo, è il momento di distribuirlo (deploy). Il model deployment consiste nel rendere il tuo modello disponibile per l'uso in un ambiente di produzione. Ecco le fasi per distribuire un modello di computer vision:
- Configurazione dell'ambiente: Configura l'infrastruttura necessaria per l'opzione di deployment scelta, che sia basata su cloud (AWS, Google Cloud, Azure) o su edge (dispositivi locali, IoT).
- Esportazione del modello: Esporta il tuo modello nel formato appropriato (es. ONNX, TensorRT, CoreML per YOLO26) per garantire la compatibilità con la tua piattaforma di deployment.
- Distribuzione del modello: Distribuisci il modello configurando API o endpoint e integrandolo con la tua applicazione.
- Garantire la scalabilità: Implementa bilanciatori di carico, gruppi di auto-scaling e strumenti di monitoraggio per gestire le risorse e gestire l'aumento dei dati e delle richieste degli utenti.
Per una guida più dettagliata sulle strategie di deployment e le best practice, dai un'occhiata alla nostra guida alle pratiche di deployment dei modelli. La Ultralytics Platform fornisce anche endpoint di deployment gestiti con auto-scaling in 43 regioni globali, gestendo automaticamente la configurazione dell'infrastruttura.
Link to this sectionFase 8: Monitoraggio, manutenzione e documentazione#
Una volta che il tuo modello è distribuito, è importante monitorarne continuamente le prestazioni, mantenerlo per gestire eventuali problemi e documentare l'intero processo per riferimenti futuri e miglioramenti.
Gli strumenti di monitoraggio possono aiutarti a tenere traccia dei KPI (Key Performance Indicators) e rilevare anomalie o cali di accuratezza. Monitorando il modello, puoi essere consapevole del model drift, in cui le prestazioni del modello diminuiscono nel tempo a causa di cambiamenti nei dati di input. Riadestra periodicamente il modello con dati aggiornati per mantenere accuratezza e pertinenza.
Oltre al monitoraggio e alla manutenzione, anche la documentazione è fondamentale. Documenta a fondo l'intero processo, inclusi l'architettura del modello, le procedure di addestramento, gli iperparametri, le fasi di pre-elaborazione dei dati e qualsiasi modifica apportata durante il deployment e la manutenzione. Una buona documentazione garantisce la riproducibilità e rende più semplici gli aggiornamenti futuri o la risoluzione dei problemi. Monitorando, mantenendo e documentando efficacemente il tuo modello (monitoring, maintaining, and documenting your model), puoi assicurarti che rimanga accurato, affidabile e facile da gestire durante tutto il suo ciclo di vita.
Link to this sectionCoinvolgimento della community#
Entrare in contatto con una community di appassionati di computer vision può aiutarti ad affrontare con sicurezza qualsiasi problema tu possa incontrare mentre lavori al tuo progetto di computer vision. Ecco alcuni modi per imparare, risolvere i problemi e fare networking in modo efficace.
Link to this sectionRisorse della community#
- GitHub Issues: Dai un'occhiata al repository GitHub di YOLO26 e usa la scheda Issues per fare domande, segnalare bug e suggerire nuove funzionalità. La community attiva e i manutentori sono lì per aiutare con problemi specifici.
- Server Discord di Ultralytics: Unisciti al server Discord di Ultralytics per interagire con altri utenti e sviluppatori, ottenere supporto e condividere intuizioni.
Link to this sectionDocumentazione ufficiale#
- Documentazione di YOLO26 di Ultralytics: Esplora la documentazione ufficiale di YOLO26 per guide dettagliate con suggerimenti utili su diversi task e progetti di computer vision.
L'utilizzo di queste risorse ti aiuterà a superare le sfide e a rimanere aggiornato sulle ultime tendenze e best practice nella community della computer vision.
Link to this sectionProssimi passi#
Intraprendere un progetto di computer vision può essere entusiasmante e gratificante. Seguendo i passaggi di questa guida, puoi costruire una solida base per il successo. Ogni fase è cruciale per sviluppare una soluzione che soddisfi i tuoi obiettivi e funzioni bene negli scenari del mondo reale. Man mano che acquisirai esperienza, scoprirai tecniche e strumenti avanzati per migliorare i tuoi progetti.
Link to this sectionFAQ#
Link to this sectionCome scelgo il task di computer vision giusto per il mio progetto?#
La scelta del task di computer vision giusto dipende dall'obiettivo finale del tuo progetto. Ad esempio, se vuoi monitorare il traffico, l'object detection è adatta poiché può localizzare e identificare più tipi di veicoli in tempo reale. Per l'imaging medico, l'image segmentation è ideale per fornire confini dettagliati dei tumori, aiutando nella diagnosi e nella pianificazione del trattamento. Scopri di più su task specifici come object detection, instance segmentation, semantic segmentation e image classification.
Link to this sectionPerché l'annotazione dei dati è cruciale nei progetti di computer vision?#
L'annotazione dei dati è vitale per insegnare al tuo modello a riconoscere i pattern. Il tipo di annotazione varia in base al task:
- Image Classification: L'intera immagine viene etichettata come una singola classe.
- Object Detection: Bounding box disegnati attorno agli oggetti.
- Image Segmentation: Ogni pixel etichettato in base all'oggetto a cui appartiene.
Strumenti come Label Studio, CVAT e Labelme possono assistere in questo processo. Per maggiori dettagli, consulta la nostra guida alla raccolta e all'annotazione dei dati.
Link to this sectionQuali passaggi dovrei seguire per aumentare e suddividere il mio dataset in modo efficace?#
Suddividere il tuo dataset prima dell'augmentation aiuta a validare le prestazioni del modello su dati originali e non alterati. Segui questi passaggi:
- Training Set: 70-80% dei tuoi dati.
- Validation Set: 10-15% per l'hyperparameter tuning.
- Test Set: Il restante 10-15% per la valutazione finale.
Dopo la suddivisione, applica tecniche di data augmentation come rotazione, ridimensionamento e capovolgimento per aumentare la diversità del dataset. Librerie come Albumentations e OpenCV possono essere d'aiuto. Ultralytics offre anche impostazioni di augmentation integrate per una maggiore comodità.
Link to this sectionCome posso esportare il mio modello di computer vision addestrato per il deployment?#
Esportare il tuo modello garantisce la compatibilità con diverse piattaforme di deployment. Ultralytics fornisce molteplici formati, tra cui ONNX, TensorRT e CoreML. Per esportare il tuo modello YOLO26, segui questa guida:
- Usa la funzione
exportcon il parametro di formato desiderato. - Assicurati che il modello esportato soddisfi le specifiche del tuo ambiente di deployment (ad esempio, dispositivi edge, cloud).
Per ulteriori informazioni, consulta la guida all'esportazione del modello.
Link to this sectionQuali sono le migliori pratiche per monitorare e mantenere un modello di computer vision distribuito?#
Il monitoraggio e la manutenzione continui sono essenziali per il successo a lungo termine di un modello. Implementa strumenti per tracciare i Key Performance Indicators (KPI) e rilevare anomalie. Riadestra regolarmente il modello con dati aggiornati per contrastare il degrado delle prestazioni (model drift). Documenta l'intero processo, inclusi architettura del modello, iperparametri e modifiche, per garantire la riproducibilità e facilitare i futuri aggiornamenti. Scopri di più nella nostra guida al monitoraggio e alla manutenzione.