Link to this sectionTecniche di pre-elaborazione dei dati per dati di Computer Vision annotati#
Link to this sectionIntroduzione#
Dopo aver definito gli obiettivi del tuo progetto di computer vision e aver raccolto e annotato i dati, il passaggio successivo consiste nel pre-elaborare i dati annotati e prepararli per l'addestramento del modello. Dati puliti e coerenti sono vitali per creare un modello che offra buone prestazioni.
Watch: How to Use Data Preprocessing and Augmentation to Improve Model Accuracy in Real-World Scenarios 🚀
La pre-elaborazione è un passaggio nel 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!
Link to this sectionImportanza della pre-elaborazione dei dati#
Stiamo già raccogliendo e annotando i nostri dati con cura, tenendo a mente molteplici considerazioni. Allora, cosa rende la pre-elaborazione dei dati così importante per un progetto di computer vision? Ebbene, la pre-elaborazione 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 pre-elaborazione risolve:
- Rumore: variazioni irrilevanti o casuali nei dati.
- Incoerenza: variazioni nelle dimensioni, nei formati e nella qualità delle immagini.
- Sbilanciamento: distribuzione ineguale di classi o categorie nel dataset.
Link to this sectionTecniche 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 richiedono una dimensione di input coerente. Ridimensionare le immagini le rende uniformi e riduce la complessità computazionale.
Link to this sectionRidimensionamento delle immagini#
Puoi ridimensionare le tue immagini utilizzando i seguenti metodi:
- Interpolazione bilineare: attenua i valori dei pixel calcolando una media ponderata dei quattro valori di pixel più vicini.
- Nearest Neighbor: assegna il valore del pixel più vicino senza calcolare la media, portando a un'immagine a blocchi ma con un calcolo più veloce.
Per rendere il ridimensionamento un compito più semplice, puoi utilizzare i seguenti strumenti:
- OpenCV: una popolare libreria di computer vision con ampie funzioni per l'elaborazione delle immagini.
- PIL (Pillow): una Python Imaging Library 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 ridimensiona le immagini in input in modo che la loro dimensione maggiore sia di 640 pixel, mantenendo al contempo il rapporto d'aspetto originale.
Valutando le esigenze specifiche del tuo modello e del tuo dataset, puoi determinare se il ridimensionamento sia un passaggio di pre-elaborazione necessario o se il tuo modello possa gestire in modo efficiente immagini di dimensioni variabili.
Link to this sectionNormalizzazione dei valori dei pixel#
Un'altra tecnica di pre-elaborazione è la normalizzazione. La normalizzazione ridimensiona 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 pre-elaborazione durante l'addestramento del modello. YOLO26 esegue automaticamente diversi passaggi di pre-elaborazione, 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.
Link to this sectionSuddivisione del dataset#
Una volta puliti i dati, sei pronto per suddividere il dataset. La suddivisione dei dati in set di addestramento, validazione e test viene effettuata per garantire che il modello possa essere valutato su dati non visti, al fine di valutare le sue 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 utilizzare 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 il Data Leakage: in genere, l'aumento dei dati viene eseguito dopo che il dataset è stato suddiviso. L'aumento dei dati e qualsiasi altra pre-elaborazione dovrebbero essere applicati solo al set di addestramento per evitare che le informazioni dai set di validazione o di test influenzino l'addestramento del modello.
- Bilanciamento delle classi: per dataset sbilanciati, prendi in considerazione tecniche come l'oversampling della classe minoritaria o l'undersampling della classe maggioritaria all'interno del set di addestramento.
Link to this sectionCos'è l'aumento dei dati?#
Il passaggio di pre-elaborazione 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 utilizzato al massimo del suo potenziale creando nuove variazioni.
Link to this sectionMetodi di aumento dei dati#
Le tecniche di aumento comuni includono il ribaltamento (flipping), la rotazione, il ridimensionamento e le regolazioni del colore. Diverse librerie, come Albumentations, Imgaug e ImageDataGenerator di TensorFlow, possono generare questi aumenti.
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 desideri aumentare i tuoi dati.
Il repository Ultralytics YOLO26 supporta un'ampia gamma di aumenti dei dati. Puoi applicare varie trasformazioni come:
- Ritagli casuali
- Ribaltamento: 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.
Link to this sectionUn caso di studio sulla pre-elaborazione#
Considera un progetto volto a sviluppare un modello per rilevare e classificare diversi tipi di veicoli nelle immagini del traffico utilizzando YOLO26. Abbiamo raccolto immagini del traffico e le abbiamo annotate con riquadri di delimitazione (bounding box) ed etichette.
Ecco come apparirebbe ogni passaggio della pre-elaborazione 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 pre-elaborazione, quindi non è richiesto.
- Suddivisione del dataset: suddividi il dataset in set di addestramento (70%), validazione (20%) e test (10%) utilizzando 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, ribaltamenti orizzontali e regolazioni della luminosità.
Questi passaggi assicurano che il dataset sia preparato senza problemi potenziali e sia pronto per l'analisi esplorativa dei dati (EDA).
Link to this sectionTecniche di analisi esplorativa dei dati (EDA)#
Dopo aver pre-elaborato e aumentato il tuo dataset, il passaggio successivo è ottenere approfondimenti attraverso l'analisi esplorativa dei dati. 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 pre-elaborazioni dei dati o aggiustamenti nell'addestramento del modello.
Link to this sectionTecniche 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 a cogliere la qualità e le caratteristiche generali dei tuoi dati, permettendoti di individuare precocemente eventuali irregolarità.
Link to this sectionTecniche 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 delle diverse classi o categorie di immagini utilizzando grafici a barre può rivelare rapidamente eventuali sbilanciamenti. 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 a punti dati insoliti di distorcere 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.
- Grafici a dispersione (Scatter plots): utili per esplorare le relazioni tra caratteristiche delle immagini o annotazioni.
- Mappe di calore (Heatmaps): efficaci per visualizzare la distribuzione delle intensità dei pixel o la distribuzione spaziale delle caratteristiche annotate all'interno delle immagini.
Link to this sectionUtilizzo della piattaforma Ultralytics per l'EDA#
Per un approccio all'EDA senza codice (no-code), carica il tuo dataset sulla piattaforma Ultralytics. La scheda Charts del dataset genera automaticamente le visualizzazioni sopra descritte: distribuzione della suddivisione, conteggio delle classi principali, istogrammi di larghezza/altezza delle immagini e mappe di calore 2D delle posizioni delle annotazioni e delle dimensioni delle immagini. La scheda Images ti consente di sfogliare i tuoi dati in viste 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.
Link to this sectionContatta 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:
Link to this sectionCanali per connettersi con la community#
- GitHub Issues: visita il repository GitHub di YOLO26 e utilizza la scheda Issues per sollevare domande, segnalare bug e suggerire funzionalità. La community e i manutentori sono lì per aiutarti 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.
Link to this sectionDocumentazione ufficiale#
- Documentazione di Ultralytics YOLO26: fai riferimento alla documentazione ufficiale di YOLO26 per guide approfondite e preziose informazioni su numerosi compiti e progetti di computer vision.
Link to this sectionIl 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 pre-elaborazione e le migliori pratiche descritte in questa guida, puoi creare un dataset solido. Con il tuo dataset pre-elaborato pronto, puoi procedere con sicurezza ai passaggi successivi del tuo progetto.
Link to this sectionFAQ#
Link to this sectionQual è 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 del modello. Affrontando problemi come rumore, incoerenza e sbilanciamento nei dati grezzi, passaggi di pre-elaborazione 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 i passaggi di un progetto di computer vision.
Link to this sectionCome posso usare 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, ribaltamenti 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, ridurre l'overfitting e migliorare la generalizzazione del modello.
Link to this sectionQuali 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 migliorate 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ù nella sezione sull'addestramento del modello.
Link to this sectionCome 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 il data leakage applicando l'aumento solo al set di addestramento. Usa strumenti come scikit-learn o TensorFlow per una suddivisione efficiente del dataset. Vedi la guida dettagliata sulla preparazione del dataset.
Link to this sectionPosso gestire dimensioni delle immagini variabili in YOLO26 senza ridimensionamento manuale?#
Sì, Ultralytics YOLO26 può gestire dimensioni delle immagini variabili 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 il rapporto d'aspetto. Per una gestione dell'input più flessibile e aggiustamenti automatici, controlla la sezione sull'addestramento del modello.