Vai al contenuto

Tecniche di preelaborazione dei dati per dati annotati di Computer Vision

Introduzione

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



Guarda: Come utilizzare la preelaborazione e l'aumento dei dati per migliorare l'accuratezza del modello in scenari reali 🚀

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 set di dati e la suddivisione dei dati in set di training, convalida e test. Esploriamo le tecniche essenziali e le migliori pratiche per la pulizia dei tuoi dati!

Importanza della pre-elaborazione dei dati

Stiamo già raccogliendo e annotando attentamente i nostri dati tenendo conto di molteplici considerazioni. Allora, cosa rende la preelaborazione dei dati così importante per un progetto di computer vision? Ebbene, la preelaborazione dei dati consiste nel trasformare i dati in un formato adatto per il training, riducendo il carico computazionale e contribuendo 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.
  • Squilibrio: distribuzione non uniforme di classi o categorie nel set di dati.

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 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: Uniforma i valori dei pixel prendendo una media ponderata dei quattro valori dei pixel più vicini.
  • Nearest Neighbor: Assegna il valore del pixel più vicino senza mediare, portando a un'immagine a blocchi ma a un calcolo più veloce.

Per semplificare l'attività di 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 imaging python per aprire, manipolare e salvare file immagine.

Per quanto riguarda YOLO11, 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 modello e del dataset, è 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 a un intervallo standard, il che aiuta a una convergenza più rapida durante l'addestramento e migliora le prestazioni del modello. Ecco alcune tecniche di normalizzazione comuni:

  • Ridimensionamento Min-Max: Ridimensiona 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 YOLO11, la normalizzazione viene gestita in modo trasparente come parte della pipeline di pre-elaborazione durante l'addestramento del modello. YOLO11 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 predefiniti di media e deviazione standard.

Divisione del Dataset

Una volta puliti i dati, si è pronti per dividere il dataset. La suddivisione dei dati in set di training, validazione e test viene eseguita per garantire che il modello possa essere valutato su dati non ancora visti, al fine di valutarne le prestazioni di generalizzazione. Una suddivisione comune è del 70% per il training, del 20% per la validazione e del 10% per il test. Esistono vari strumenti e librerie che è possibile utilizzare per suddividere i dati, come scikit-learn o TensorFlow.

Considera quanto segue quando dividi il tuo dataset:

  • Mantenimento della distribuzione dei dati: Assicurarsi che la distribuzione dei dati delle classi sia mantenuta tra i set di training, validazione e test.
  • Evitare la Data Leakage: Tipicamente, l'aumento dei dati viene eseguito dopo che il dataset è stato suddiviso. L'aumento dei dati e qualsiasi altra pre-elaborazione devono essere applicati solo al set di training per evitare che le informazioni dei set di validazione o di test influenzino il training del modello.
  • Bilanciamento delle Classi: Per dataset sbilanciati, considerare tecniche come il sovra-campionamento della classe minoritaria o il sotto-campionamento della classe maggioritaria all'interno del set di training.

Cos'è l'aumento dei dati?

Il passaggio di pre-elaborazione dei dati più comunemente discusso è l'aumento dei dati. L'aumento dei dati aumenta artificialmente le dimensioni 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 Set di Dati Più Robusto: L'aumento dei dati può rendere il modello più robusto alle variazioni e distorsioni nei dati di input. Questo include cambiamenti di illuminazione, orientamento e scala.
  • Economicamente Vantaggioso: L'aumento dei dati è un modo economicamente vantaggioso per aumentare la quantità di dati di training senza raccogliere ed etichettare nuovi dati.
  • Migliore utilizzo dei dati: Ogni punto dati disponibile viene utilizzato al massimo del suo potenziale creando nuove variazioni

Metodi di aumento dei dati

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

Panoramica degli aumenti dei dati

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

Il repository Ultralytics YOLO11 supporta una vasta gamma di data augmentation. È possibile applicare varie trasformazioni come:

  • Ritagli casuali
  • Ribaltamento: le immagini possono essere ribaltate 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 del pre-processing

Considera un progetto volto a sviluppare un modello per rilevare e classificare diversi tipi di veicoli nelle immagini del traffico utilizzando YOLO11. Abbiamo raccolto immagini del traffico e le abbiamo annotate con bounding box ed etichette.

Ecco come sarebbe ogni fase della preelaborazione per questo progetto:

  • Ridimensionamento Immagini: Poiché YOLO11 gestisce dimensioni di input flessibili ed esegue il ridimensionamento automaticamente, non è richiesto il ridimensionamento manuale. Il modello regolerà la dimensione dell'immagine in base al parametro 'imgsz' specificato durante l'addestramento.
  • Normalizzazione dei valori dei pixel: YOLO11 normalizza automaticamente i valori dei pixel in un intervallo da 0 a 1 durante la pre-elaborazione, quindi non è richiesto.
  • Suddivisione del Dataset: Dividi il dataset in set di training (70%), validazione (20%) e test (10%) utilizzando strumenti come scikit-learn.
  • Data Augmentation: Modifica il file di configurazione del dataset (.yaml) per includere tecniche di data augmentation come ritagli casuali, inversione orizzontale 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

Dopo aver preelaborato e aumentato il tuo dataset, il passo successivo è ottenere informazioni attraverso l'Analisi Esplorativa dei Dati (EDA). L'EDA utilizza tecniche statistiche e strumenti di visualizzazione per comprendere i modelli e le distribuzioni nei tuoi dati. Puoi identificare problemi come squilibri di classe o outlier e prendere decisioni informate su ulteriori preelaborazioni dei dati o modifiche all'addestramento del modello.

Tecniche di EDA statistiche

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 set di dati di immagini, come le distribuzioni dell'intensità dei pixel. Comprendere queste statistiche di base ti aiuta a cogliere la qualità generale e le caratteristiche dei tuoi dati, permettendoti di individuare eventuali irregolarità precocemente.

Tecniche di EDA visiva

Le visualizzazioni sono fondamentali nell'EDA per i set di dati di immagini. Ad esempio, l'analisi dello sbilanciamento delle classi è un altro aspetto fondamentale 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 le anomalie nell'intensità dei pixel o nelle distribuzioni delle caratteristiche. Il rilevamento dei valori anomali impedisce che punti dati insoliti distorcano i risultati.

Gli strumenti comuni per le visualizzazioni includono:

  • I istogrammi e i grafici a scatola: Utili per comprendere la distribuzione dei valori dei pixel e identificare i valori anomali.
  • Grafici a dispersione: Utili per esplorare le relazioni tra le caratteristiche dell'immagine o le annotazioni.
  • Mappe di calore: Efficaci per visualizzare la distribuzione delle intensità dei pixel o la distribuzione spaziale delle caratteristiche annotate all'interno delle immagini.

Utilizzo di Ultralytics Explorer per l'EDA

Nota della community ⚠️

A partire da ultralytics>=8.3.10, il supporto per Ultralytics Explorer è stato deprecato. Ma non preoccuparti! Ora puoi accedere a funzionalità simili e persino migliorate tramite Ultralytics HUB, la nostra intuitiva piattaforma no-code progettata per semplificare il tuo flusso di lavoro. Con Ultralytics HUB, puoi continuare a esplorare, visualizzare e gestire i tuoi dati senza sforzo, il tutto senza scrivere una sola riga di codice. Assicurati di provarlo e di sfruttare le sue potenti funzionalità!🚀

Per un approccio più avanzato all'EDA, è possibile utilizzare lo strumento Ultralytics Explorer. Offre solide funzionalità per l'esplorazione di dataset di computer vision. Supportando la ricerca semantica, le query SQL e la ricerca di similarità vettoriale, lo strumento semplifica l'analisi e la comprensione dei dati. Con Ultralytics Explorer, puoi creare embedding per il tuo dataset per trovare immagini simili, eseguire query SQL per un'analisi dettagliata ed eseguire ricerche semantiche, il tutto attraverso un'interfaccia grafica intuitiva.

Panoramica di Ultralytics Explorer

Contattaci e connettiti

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

Canali per connettersi con la community

  • Problemi su GitHub: visita il repository YOLO11 su GitHub e utilizza la scheda Problemi per porre domande, segnalare bug e suggerire funzionalità. La comunità e i manutentori sono lì per aiutarti con qualsiasi problema tu debba affrontare.
  • Server Discord di Ultralytics: unisciti al server Discord di Ultralytics per entrare in contatto con altri utenti e sviluppatori, ottenere supporto, condividere conoscenze e fare brainstorming di idee.

Documentazione ufficiale

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

Il tuo set di dati è pronto!

Dati ridimensionati, normalizzati e aumentati correttamente 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 set di dati solido. Con il tuo set di dati preelaborato pronto, puoi procedere con sicurezza 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. Affrontando problemi come il rumore, l'incoerenza e lo squilibrio nei dati grezzi, i passaggi di preelaborazione come il ridimensionamento, la normalizzazione, l'aumento e la suddivisione del set di dati aiutano a ridurre il carico computazionale e a migliorare le prestazioni del modello. Per maggiori dettagli, visita i passaggi di un progetto di computer vision.

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

Per l'aumento dei dati con Ultralytics YOLO11, è necessario modificare il file di configurazione del dataset (.yaml). In questo file, è possibile specificare varie tecniche di aumento, come ritagli casuali, capovolgimenti orizzontali e regolazioni della luminosità. Questo può essere fatto efficacemente utilizzando le configurazioni di training 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 adatta i valori dei pixel a un intervallo standard per una convergenza più rapida e prestazioni migliorate durante l'addestramento. Le tecniche comuni includono:

  • Ridimensionamento Min-Max: Ridimensiona 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 YOLO11, la normalizzazione viene gestita automaticamente, inclusa la conversione in RGB e il ridimensionamento del valore dei pixel. Ulteriori informazioni sono disponibili nella sezione sull'addestramento del modello.

Come devo dividere il mio dataset annotato per il training?

Per dividere il tuo dataset, una pratica comune è dividerlo in 70% per l'addestramento, 20% per la convalida e 10% per il test. È importante mantenere la distribuzione dei dati delle classi tra queste divisioni ed evitare la perdita di dati eseguendo l'aumento solo sul set di addestramento. Utilizza strumenti come scikit-learn o TensorFlow per una divisione efficiente del dataset. Consulta la guida dettagliata sulla preparazione del dataset.

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

Sì, Ultralytics YOLO11 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 al contempo le proporzioni. Per una gestione più flessibile dell'input e regolazioni automatiche, consulta la sezione sull'addestramento del modello.



📅 Creato 1 anno fa ✏️ Aggiornato 3 mesi fa

Commenti