Vai al contenuto

Tecniche di pre-elaborazione dei dati per i dati di visione artificiale con annotazioni

Introduzione

Dopo aver definito gli obiettivi del tuo progetto di computer vision e aver raccolto e annotato i dati, il passo successivo è quello di preelaborare i dati annotati e prepararli per la formazione del modello. Dati puliti e coerenti sono fondamentali per creare un modello che funzioni bene.

La pre-elaborazione è una fase del flusso di lavoro dei progetti di computer vision che comprende il ridimensionamento delle immagini, la normalizzazione dei valori dei pixel, l'incremento del set di dati e la suddivisione dei dati in set di formazione, convalida e test. Esploriamo le tecniche essenziali e le migliori pratiche per la pulizia dei dati!

Importanza della pre-elaborazione dei dati

Stiamo già raccogliendo e annotando attentamente i nostri dati tenendo conto di molteplici considerazioni. Quindi, cosa rende la pre-elaborazione dei dati così importante per un progetto di visione artificiale? La pre-elaborazione dei dati consiste nell'ottenere i dati in un formato adatto per il training che riduce il carico computazionale e aiuta a migliorare le prestazioni del modello. Di seguito sono riportati alcuni problemi comuni nei dati non elaborati risolti dalla pre-elaborazione:

  • Rumore: variazioni irrilevanti o casuali nei dati.
  • Incoerenza: Variazioni nelle dimensioni, nei formati e nella qualità delle immagini.
  • Squilibrio: Distribuzione disuguale di classi o categorie nel set di dati.

Tecniche di pre-elaborazione dei dati

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

Ridimensionamento delle immagini

È possibile ridimensionare le immagini utilizzando i seguenti metodi:

  • Interpolazione bilineare: Attenua i valori dei pixel prendendo una media ponderata dei valori dei quattro pixel più vicini.
  • Vicino più vicino: Assegna il valore del pixel più vicino senza calcolare la media, ottenendo un'immagine a blocchi ma con un calcolo più veloce.

Per semplificare il ridimensionamento, è possibile utilizzare i seguenti strumenti:

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

Per quanto riguarda YOLOv8, il parametro "imgsz" durante l'addestramento del modello consente di utilizzare dimensioni di input flessibili. Se impostato su una dimensione specifica, ad esempio 640, il modello ridimensionerà le immagini in ingresso in modo che la loro dimensione maggiore sia di 640 pixel, mantenendo il rapporto d'aspetto originale.

Valutando le esigenze specifiche del modello e del set di dati, è possibile determinare se il ridimensionamento è un passaggio di pre-elaborazione necessario o se il modello è in grado di gestire in modo efficiente immagini di dimensioni variabili.

Normalizzazione dei valori dei pixel

Un'altra tecnica di pre-elaborazione è la normalizzazione. La normalizzazione ridimensiona i valori dei pixel in base a un intervallo standard, che consente una convergenza più rapida durante il training e migliora le prestazioni del modello. Di seguito sono riportate alcune tecniche di normalizzazione comuni:

  • Scala Min-Max: 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 YOLOv8, la normalizzazione viene gestita senza problemi come parte della pipeline di pre-elaborazione durante il training del modello. YOLOv8 esegue automaticamente diverse fasi di pre-elaborazione, tra cui la conversione in RGB, il ridimensionamento dei valori dei pixel nell'intervallo [0, 1] e la normalizzazione utilizzando valori medi e deviazione standard predefiniti.

Suddivisione del set di dati

Dopo aver pulito i dati, è possibile dividere il set di dati. La suddivisione dei dati in set di training, convalida e test viene eseguita per garantire che il modello possa essere valutato su dati non visualizzati per valutarne le prestazioni di generalizzazione. Una suddivisione comune è 70% per il training, 20% per la convalida e 10% per i test. Ci sono vari strumenti e librerie che puoi usare per dividere i tuoi dati come scikit-learn o TensorFlow.

Quando si divide il set di dati, tenere presente quanto segue:

  • Mantenimento della distribuzione dei dati: Assicurati che la distribuzione dei dati delle classi sia mantenuta nei set di formazione, convalida e test.
  • Evitare la perdita di dati: In genere, l'aumento dei dati viene effettuato dopo che il set di dati è stato suddiviso. L'aumento dei dati e qualsiasi altra pre-elaborazione devono essere applicati solo all'insieme di formazione per evitare che le informazioni provenienti dagli insiemi di validazione o di test influenzino la formazione del modello. -Bilanciamentodelle classi: Per i set di dati sbilanciati, considera tecniche come il sovracampionamento della classe minoritaria o il sottocampionamento della classe maggioritaria all'interno del set di formazione.

Che cos'è l'aumento dei dati?

La fase di pre-elaborazione dei dati più comunemente discussa è l'aumento dei dati. L'aumento dei dati aumenta artificialmente le dimensioni del set di dati creando versioni modificate delle immagini. Aumentando i dati, è possibile ridurre l'overfitting e migliorare la generalizzazione del modello.

Ecco alcuni altri vantaggi dell'aumento dei dati:

  • Crea un set di dati più robusto: L'aumento dei dati può rendere il modello più robusto alle variazioni e alle distorsioni dei dati di input. Ciò include cambiamenti di illuminazione, orientamento e scala.
  • Efficace dal punto di vista dei costi: L'aumento dei dati è un modo economico per aumentare la quantità di dati di formazione senza raccogliere ed etichettare nuovi dati.
  • Migliore utilizzo dei dati: Ogni punto di dati disponibile viene utilizzato al massimo delle sue potenzialità creando nuove variazioni.

Metodi di aumento dei dati

Le tecniche di aumento più comuni includono il capovolgimento, la rotazione, il ridimensionamento e le regolazioni del colore. Diverse librerie, come Albumentations, Imgaug, e TensorFlowImageDataGenerator, può generare questi aumenti.

Panoramica degli ampliamenti di dati

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

Il repositoryUltralytics YOLOv8 supporta un'ampia gamma di ampliamenti dei dati. Puoi applicare varie trasformazioni come:

  • Colture casuali
  • Capovolgimento: le immagini possono essere capovolte orizzontalmente o verticalmente.
  • Rotazione: le immagini possono essere ruotate da angolazioni specifiche.
  • Distorsione

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

Un caso di studio di pre-elaborazione

Si consideri un progetto volto a sviluppare un modello per rilevare e classificare diversi tipi di veicoli nelle immagini del traffico utilizzando YOLOv8. Abbiamo raccolto le immagini del traffico e le abbiamo annotate con riquadri di delimitazione ed etichette.

Ecco come apparirebbe ogni fase della pre-elaborazione per questo progetto:

  • Ridimensionamento delle immagini: dal momento che YOLOv8 Gestisce dimensioni di input flessibili ed esegue automaticamente il ridimensionamento, non è necessario il ridimensionamento manuale. Il modello regolerà le dimensioni dell'immagine in base al parametro 'imgsz' specificato durante l'addestramento.
  • Normalizzazione dei valori dei pixel: YOLOv8 normalizza automaticamente i valori dei pixel in un intervallo compreso tra 0 e 1 durante la pre-elaborazione, quindi non è necessario.
  • Suddivisione del set di dati: suddividere il set di dati in set di training (70%), convalida (20%) e test (10%) usando strumenti come scikit-learn.
  • Aumento dei dati: modificare il file di configurazione del set di dati (con estensione yaml) per includere tecniche di aumento dei dati, ad esempio ritagli casuali, capovolgimenti orizzontali e regolazioni della luminosità.

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

Tecniche di analisi esplorativa dei dati

Dopo la pre-elaborazione e l'aumento del set di dati, il passaggio successivo consiste nell'ottenere informazioni dettagliate tramite l'analisi esplorativa dei dati. EDA utilizza tecniche statistiche e strumenti di visualizzazione per comprendere i modelli e le distribuzioni nei dati. È possibile identificare problemi come squilibri di classe o valori anomali e prendere decisioni informate su ulteriori pre-elaborazioni dei dati o modifiche del training del modello.

Tecniche statistiche 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 set di dati dell'immagine, ad esempio le distribuzioni dell'intensità dei pixel. La comprensione di queste statistiche di base consente di comprendere la qualità e le caratteristiche complessive dei dati, consentendo di individuare tempestivamente eventuali irregolarità.

Tecniche di Visual EDA

Le visualizzazioni sono fondamentali in EDA per i set di dati di immagini. Ad esempio, l'analisi dello squilibrio di classe è un altro aspetto vitale dell'EDA. Aiuta a determinare se alcune classi sono sottorappresentate nel set di dati, la visualizzazione della distribuzione di diverse classi o categorie di immagini utilizzando 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 ai punti dati insoliti di distorcere i risultati.

Gli strumenti comuni per le visualizzazioni includono:

  • Istogrammi e Box Plot: utili per comprendere la distribuzione dei valori dei pixel e identificare i valori anomali.
  • Grafici a dispersione: utili per esplorare le relazioni tra le feature o le annotazioni dell'immagine.
  • Mappe di calore: efficaci per visualizzare la distribuzione delle intensità dei pixel o la distribuzione spaziale delle caratteristiche annotate all'interno delle immagini.

Utilizzando Ultralytics Explorer per EDA

Per un approccio più avanzato all'EDA, è possibile utilizzare il comando Ultralytics Strumento Esplora. Offre funzionalità affidabili per l'esplorazione di set di dati di visione artificiale. Supportando la ricerca semantica, le query SQL e la ricerca per somiglianza vettoriale, lo strumento semplifica l'analisi e la comprensione dei dati. Con Ultralytics Explorer, è possibile creare incorporamenti per il set di dati per trovare immagini simili, eseguire query SQL per analisi dettagliate ed eseguire ricerche semantiche, il tutto tramite un'interfaccia grafica intuitiva.

Panoramica di Ultralytics Explorer

Contattaci e connettiti

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

Canali per connettersi con la community

  • Problemi su GitHub: Visita il repository GitHub di YOLOv8 e utilizza la scheda Issues per porre domande, segnalare bug e suggerire funzionalità. La comunità e i manutentori sono a disposizione per aiutarti a risolvere qualsiasi problema.
  • Ultralytics Server Discord: Unisciti al server Discord diUltralytics per connetterti con altri utenti e sviluppatori, ricevere supporto, condividere conoscenze e fare brainstorming di idee.

Documentazione ufficiale

  • Ultralytics YOLOv8 Documentazione: Consulta la documentazione ufficiale di YOLOv8 per trovare guide approfondite e informazioni preziose su numerose attività e progetti di computer vision.

Il tuo set di dati è pronto!

I dati correttamente ridimensionati, normalizzati e aumentati migliorano le prestazioni del modello riducendo il rumore e migliorando la generalizzazione. Seguendo le tecniche di pre-elaborazione e le procedure consigliate descritte in questa guida, è possibile creare un set di dati solido. Con il set di dati pre-elaborato pronto, è possibile procedere con sicurezza ai passaggi successivi del progetto.

DOMANDE FREQUENTI

Qual è l'importanza della pre-elaborazione dei dati nei progetti di computer vision?

La pre-elaborazione dei dati è essenziale nei progetti di computer vision perché garantisce che i dati siano puliti, coerenti e in un formato ottimale per l'addestramento dei modelli. Affrontando problemi come il rumore, l'incoerenza e lo squilibrio dei dati grezzi, le fasi di pre-elaborazione come il ridimensionamento, la normalizzazione, l'aumento e la suddivisione dei set di dati aiutano a ridurre il carico computazionale e a migliorare le prestazioni del modello. Per maggiori dettagli, visita le fasi di un progetto di computer vision.

Come posso utilizzare Ultralytics YOLO per aumentare i dati?

Per aumentare i dati con Ultralytics YOLOv8 , devi modificare il file di configurazione del dataset (.yaml). In questo file puoi specificare varie tecniche di incremento 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 set di dati più robusto, a ridurre l'overfitting e a migliorare la generalizzazione del modello.

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

La normalizzazione scala i valori dei pixel a un intervallo standard per velocizzare la convergenza e migliorare le prestazioni durante la formazione. Le tecniche più comuni includono:

  • Scala Min-Max: 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 YOLOv8, la normalizzazione viene gestita automaticamente, compresa la conversione in RGB e la scalatura dei valori dei pixel. Per saperne di più, consulta la sezione dedicata all'addestramento del modello.

Come devo dividere il mio dataset annotato per la formazione?

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

Posso gestire immagini di dimensioni diverse in YOLOv8 senza ridimensionamento manuale?

Sì, Ultralytics YOLOv8 può gestire immagini di dimensioni diverse attraverso il parametro "imgsz" durante l'addestramento del modello. Questo parametro assicura che le immagini vengano ridimensionate in modo che la loro dimensione maggiore corrisponda a quella specificata (ad esempio 640 pixel), mantenendo il rapporto d'aspetto. Per una gestione più flessibile degli input e delle regolazioni automatiche, consulta la sezione dedicata all'addestramento del modello.



Creato 2024-05-31, Aggiornato 2024-07-05
Autori: glenn-jocher (4), abirami-vina (1)

Commenti