Tecniche di preelaborazione dati per dati di Computer Vision annotati

Introduzione

Dopo aver definito gli obiettivi del tuo progetto di computer vision e aver raccolto e annotato i dati, il passaggio successivo consiste nel preelaborare i dati annotati e prepararli per l'addestramento del modello. Dati puliti e coerenti sono fondamentali per creare un modello che abbia buone prestazioni.



Watch: How to Use Data Preprocessing and Augmentation to Improve Model Accuracy in Real-World Scenarios 🚀

La preelaborazione è una fase del flusso di lavoro del progetto di computer vision che include il ridimensionamento delle immagini, la normalizzazione dei valori dei pixel, l'aumento del dataset e la suddivisione dei dati in set di addestramento, validazione e test. Esploriamo le tecniche essenziali e le migliori pratiche per pulire i tuoi dati!

Importanza della preelaborazione dei dati

Stiamo già raccogliendo e annotando i nostri dati con cura, tenendo a mente molteplici considerazioni. Quindi, cosa rende la preelaborazione dei dati così importante per un progetto di computer vision? Beh, la preelaborazione dei dati serve a portare i tuoi dati in un formato adatto all'addestramento, che riduca il carico computazionale e aiuti a migliorare le prestazioni del modello. Ecco alcuni problemi comuni nei dati grezzi che la preelaborazione risolve:

  • Rumore: Variazioni irrilevanti o casuali nei dati.
  • Incoerenza: Variazioni nelle dimensioni, nei formati e nella qualità delle immagini.
  • Sbilanciamento: Distribuzione non uniforme delle classi o delle categorie nel dataset.

Tecniche di preelaborazione dei dati

Uno dei primi e più importanti passaggi nella preelaborazione dei dati è il ridimensionamento. Alcuni modelli sono progettati per gestire dimensioni di input variabili, ma molti richiedono una dimensione di input coerente. Il ridimensionamento delle immagini le rende uniformi e riduce la complessità computazionale.

Ridimensionamento delle immagini

Puoi ridimensionare le tue immagini usando i seguenti metodi:

  • Interpolazione bilineare: Smussa i valori dei pixel calcolando una media ponderata dei quattro valori di pixel più vicini.
  • Vicino più prossimo (Nearest Neighbor): Assegna il valore del pixel più vicino senza fare la media, portando a un'immagine pixelata ma con un calcolo più veloce.

Per semplificare l'operazione di ridimensionamento, puoi utilizzare i seguenti strumenti:

  • OpenCV: Una popolare libreria di computer vision con estese funzioni per l'elaborazione delle immagini.
  • PIL (Pillow): Una libreria Python Imaging per aprire, manipolare e salvare file immagine.

Per quanto riguarda YOLO26, il parametro 'imgsz' durante l'addestramento del modello consente dimensioni di input flessibili. Quando impostato su una dimensione specifica, come 640, il modello ridimensionerà le immagini di input in modo che la loro dimensione maggiore sia di 640 pixel, mantenendo al contempo le proporzioni originali.

Valutando le esigenze specifiche del tuo modello e del tuo dataset, puoi determinare se il ridimensionamento sia un passaggio di preelaborazione necessario o se il tuo modello possa gestire in modo efficiente immagini di dimensioni variabili.

Normalizzazione dei valori dei pixel

Un'altra tecnica di preelaborazione è la normalizzazione. La normalizzazione scala i valori dei pixel in un intervallo standard, il che aiuta a ottenere una convergenza più rapida durante l'addestramento e migliora le prestazioni del modello. Ecco alcune tecniche di normalizzazione comuni:

  • Min-Max Scaling: Scala i valori dei pixel in un intervallo da 0 a 1.
  • Normalizzazione Z-Score: Scala i valori dei pixel in base alla loro media e deviazione standard.

Per quanto riguarda YOLO26, la normalizzazione viene gestita senza problemi come parte della sua pipeline di preelaborazione durante l'addestramento del modello. YOLO26 esegue automaticamente diversi passaggi di preelaborazione, tra cui la conversione in RGB, il ridimensionamento dei valori dei pixel nell'intervallo [0, 1] e la normalizzazione utilizzando valori di media e deviazione standard predefiniti.

Suddivisione del dataset

Una volta puliti i dati, sei pronto a suddividere il dataset. La suddivisione dei dati in set di addestramento, validazione e test viene eseguita per garantire che il modello possa essere valutato su dati non visti, al fine di valutarne le prestazioni di generalizzazione. Una suddivisione comune è il 70% per l'addestramento, il 20% per la validazione e il 10% per il test. Esistono vari strumenti e librerie che puoi usare per suddividere i tuoi dati, come scikit-learn o TensorFlow.

Considera quanto segue quando suddividi il tuo dataset:

  • Mantenimento della distribuzione dei dati: Assicurati che la distribuzione dei dati delle classi sia mantenuta nei set di addestramento, validazione e test.
  • Evitare la perdita di dati (Data Leakage): In genere, l'aumento dei dati viene eseguito dopo la suddivisione del dataset. L'aumento dei dati e qualsiasi altra preelaborazione dovrebbero essere applicati solo al set di addestramento per evitare che informazioni dai set di validazione o di test influenzino l'addestramento del modello.
  • Bilanciamento delle classi: Per dataset sbilanciati, considera tecniche come l'oversampling della classe minoritaria o l'undersampling della classe maggioritaria all'interno del set di addestramento.

Cos'è l'aumento dei dati (Data Augmentation)?

Il passaggio di preelaborazione dei dati più comunemente discusso è l'aumento dei dati. L'aumento dei dati aumenta artificialmente la dimensione del dataset creando versioni modificate delle immagini. Aumentando i tuoi dati, puoi ridurre l'overfitting e migliorare la generalizzazione del modello.

Ecco alcuni altri vantaggi dell'aumento dei dati:

  • Crea un dataset più robusto: L'aumento dei dati può rendere il modello più robusto a variazioni e distorsioni nei dati di input. Ciò include cambiamenti nell'illuminazione, nell'orientamento e nella scala.
  • Conveniente: L'aumento dei dati è un modo conveniente per aumentare la quantità di dati di addestramento senza raccogliere ed etichettare nuovi dati.
  • Miglior utilizzo dei dati: Ogni punto dati disponibile viene sfruttato al massimo potenziale creando nuove variazioni.

Metodi di aumento dei dati

Le tecniche di aumento comuni includono capovolgimento (flipping), rotazione, ridimensionamento e regolazioni del colore. Diverse librerie, come Albumentations, Imgaug e ImageDataGenerator di TensorFlow, possono generare questi aumenti.

Overview of Data Augmentations

Per quanto riguarda YOLO26, puoi aumentare il tuo dataset personalizzato modificando il file di configurazione del dataset, un file .yaml. In questo file, puoi aggiungere una sezione di aumento con parametri che specificano come vuoi aumentare i tuoi dati.

Il repository Ultralytics YOLO26 supporta un'ampia gamma di aumenti dei dati. Puoi applicare varie trasformazioni come:

  • Ritagli casuali (Random Crops)
  • Capovolgimento: Le immagini possono essere capovolte orizzontalmente o verticalmente.
  • Rotazione: Le immagini possono essere ruotate di angoli specifici.
  • Distorsione

Inoltre, puoi regolare l'intensità di queste tecniche di aumento tramite parametri specifici per generare una maggiore varietà di dati.

Un caso di studio sulla preelaborazione

Considera un progetto mirato allo sviluppo di un modello per rilevare e classificare diversi tipi di veicoli in immagini di traffico usando YOLO26. Abbiamo raccolto immagini di traffico e le abbiamo annotate con riquadri di delimitazione (bounding box) ed etichette.

Ecco come apparirebbe ogni passaggio della preelaborazione per questo progetto:

  • Ridimensionamento delle immagini: Poiché YOLO26 gestisce dimensioni di input flessibili ed esegue il ridimensionamento automaticamente, il ridimensionamento manuale non è richiesto. Il modello regolerà la dimensione dell'immagine in base al parametro 'imgsz' specificato durante l'addestramento.
  • Normalizzazione dei valori dei pixel: YOLO26 normalizza automaticamente i valori dei pixel in un intervallo da 0 a 1 durante la preelaborazione, quindi non è richiesto.
  • Suddivisione del dataset: Dividi il dataset in set di addestramento (70%), validazione (20%) e test (10%) usando strumenti come scikit-learn.
  • Aumento dei dati: Modifica il file di configurazione del dataset (.yaml) per includere tecniche di aumento dei dati come ritagli casuali, capovolgimenti orizzontali e regolazioni della luminosità.

Questi passaggi assicurano che il dataset sia preparato senza potenziali problemi e sia pronto per l'analisi esplorativa dei dati (EDA).

Tecniche di analisi esplorativa dei dati (EDA)

Dopo aver preelaborato e aumentato il tuo dataset, il passaggio successivo è ottenere informazioni attraverso l'analisi esplorativa dei dati (EDA). L'EDA utilizza tecniche statistiche e strumenti di visualizzazione per comprendere i pattern e le distribuzioni nei tuoi dati. Puoi identificare problemi come sbilanciamenti di classe o valori anomali e prendere decisioni informate su ulteriori preelaborazioni dei dati o aggiustamenti nell'addestramento del modello.

Tecniche statistiche di EDA

Le tecniche statistiche spesso iniziano con il calcolo di metriche di base come media, mediana, deviazione standard e intervallo. Queste metriche forniscono una rapida panoramica delle proprietà del tuo dataset di immagini, come le distribuzioni dell'intensità dei pixel. Comprendere queste statistiche di base ti aiuta ad afferrare la qualità complessiva e le caratteristiche dei tuoi dati, consentendoti di individuare precocemente eventuali irregolarità.

Tecniche visive di EDA

Le visualizzazioni sono fondamentali nell'EDA per i dataset di immagini. Ad esempio, l'analisi dello sbilanciamento delle classi è un altro aspetto vitale dell'EDA. Aiuta a determinare se alcune classi sono sottorappresentate nel tuo dataset. Visualizzare la distribuzione di diverse classi o categorie di immagini usando grafici a barre può rivelare rapidamente eventuali squilibri. Allo stesso modo, i valori anomali possono essere identificati utilizzando strumenti di visualizzazione come i box plot, che evidenziano anomalie nell'intensità dei pixel o nelle distribuzioni delle caratteristiche. Il rilevamento dei valori anomali impedisce che punti dati insoliti distorcano i tuoi risultati.

Gli strumenti comuni per le visualizzazioni includono:

  • Istogrammi e Box Plot: Utili per comprendere la distribuzione dei valori dei pixel e identificare valori anomali.
  • Scatter Plot (Grafici a dispersione): Utili per esplorare le relazioni tra le caratteristiche delle immagini o le annotazioni.
  • Heatmap (Mappe di calore): Efficaci per visualizzare la distribuzione delle intensità dei pixel o la distribuzione spaziale delle caratteristiche annotate all'interno delle immagini.

Utilizzo della piattaforma Ultralytics per l'EDA

Per un approccio senza codice all'EDA, carica il tuo dataset sulla piattaforma Ultralytics. La scheda Charts del dataset genera automaticamente le visualizzazioni descritte sopra: distribuzione della suddivisione, conteggi delle classi principali, istogrammi di larghezza/altezza delle immagini e heatmap 2D delle posizioni delle annotazioni e delle dimensioni delle immagini. La scheda Images ti consente di sfogliare i tuoi dati in visualizzazioni a griglia, compatte o tabellari con sovrapposizioni di annotazioni, rendendo facile individuare esempi etichettati erroneamente o classi sbilanciate senza scrivere una sola riga di codice.

Contatta e connettiti

Discutere del tuo progetto con altri appassionati di computer vision può darti nuove idee da prospettive diverse. Ecco alcuni ottimi modi per imparare, risolvere problemi e fare networking:

Canali per connettersi con la community

  • GitHub Issues: Visita il repository GitHub di YOLO26 e usa la scheda Issues per sollevare domande, segnalare bug e suggerire funzionalità. La comunità e i manutentori sono lì per aiutare con qualsiasi problema tu debba affrontare.
  • Server Discord di Ultralytics: Unisciti al server Discord di Ultralytics per connetterti con altri utenti e sviluppatori, ottenere supporto, condividere conoscenze e fare brainstorming di idee.

Documentazione ufficiale

  • Documentazione di Ultralytics YOLO26: Fai riferimento alla documentazione ufficiale di YOLO26 per guide approfondite e intuizioni preziose su numerosi task e progetti di computer vision.

Il tuo dataset è pronto!

Dati correttamente ridimensionati, normalizzati e aumentati migliorano le prestazioni del modello riducendo il rumore e migliorando la generalizzazione. Seguendo le tecniche di preelaborazione e le migliori pratiche descritte in questa guida, puoi creare un dataset solido. Con il tuo dataset preelaborato pronto, puoi procedere con fiducia ai passaggi successivi del tuo progetto.

FAQ

Qual è l'importanza della preelaborazione dei dati nei progetti di computer vision?

La preelaborazione dei dati è essenziale nei progetti di computer vision perché garantisce che i dati siano puliti, coerenti e in un formato ottimale per l'addestramento del modello. Risolvendo problemi come rumore, incoerenza e sbilanciamento nei dati grezzi, i passaggi di preelaborazione come ridimensionamento, normalizzazione, aumento e suddivisione del dataset aiutano a ridurre il carico computazionale e a migliorare le prestazioni del modello. Per maggiori dettagli, visita gli step di un progetto di computer vision.

Come posso utilizzare Ultralytics YOLO per l'aumento dei dati?

Per l'aumento dei dati con Ultralytics YOLO26, devi modificare il file di configurazione del dataset (.yaml). In questo file, puoi specificare varie tecniche di aumento come ritagli casuali, capovolgimenti orizzontali e regolazioni della luminosità. Questo può essere fatto efficacemente utilizzando le configurazioni di addestramento spiegate qui. L'aumento dei dati aiuta a creare un dataset più robusto, a ridurre l'overfitting e a migliorare la generalizzazione del modello.

Quali sono le migliori tecniche di normalizzazione dei dati per i dati di computer vision?

La normalizzazione scala i valori dei pixel in un intervallo standard per una convergenza più rapida e prestazioni migliori durante l'addestramento. Le tecniche comuni includono:

  • Min-Max Scaling: Scala i valori dei pixel in un intervallo da 0 a 1.
  • Normalizzazione Z-Score: Scala i valori dei pixel in base alla loro media e deviazione standard.

Per YOLO26, la normalizzazione viene gestita automaticamente, inclusa la conversione in RGB e il ridimensionamento dei valori dei pixel. Scopri di più al riguardo nella sezione di addestramento del modello.

Come dovrei suddividere il mio dataset annotato per l'addestramento?

Per suddividere il tuo dataset, una pratica comune è dividerlo in 70% per l'addestramento, 20% per la validazione e 10% per il test. È importante mantenere la distribuzione dei dati delle classi in queste suddivisioni ed evitare la perdita di dati (data leakage) eseguendo l'aumento solo sul set di addestramento. Usa strumenti come scikit-learn o TensorFlow per una suddivisione efficiente del dataset. Vedi la guida dettagliata sulla preparazione del dataset.

Posso gestire dimensioni variabili delle immagini in YOLO26 senza ridimensionamento manuale?

Sì, Ultralytics YOLO26 può gestire dimensioni variabili delle immagini tramite il parametro 'imgsz' durante l'addestramento del modello. Questo parametro assicura che le immagini vengano ridimensionate in modo che la loro dimensione maggiore corrisponda alla dimensione specificata (ad esempio, 640 pixel), mantenendo le proporzioni. Per una gestione dell'input più flessibile e regolazioni automatiche, controlla la sezione di addestramento del modello.

Commenti