Ultralytics YOLO27:
Get Started

Tecniche di pre-elaborazione dei dati annotati per la visione artificiale#

La pre-elaborazione dei dati trasforma le immagini grezze annotate negli input puliti e coerenti di cui un modello di visione artificiale ha bisogno per addestrarsi efficacemente. Con Ultralytics YOLO26, le operazioni fondamentali sui pixel — conversione RGB, ridimensionamento a [0, 1] e ridimensionamento delle immagini — vengono eseguite automaticamente nella pipeline di addestramento; il lavoro che resta consiste quindi nel suddividere correttamente il dataset, bilanciare le classi e scegliere le trasformazioni di aumento dei dati. Questa guida illustra queste tecniche essenziali: ridimensionamento, normalizzazione, suddivisione del dataset, aumento dei dati e analisi esplorativa dei dati (EDA).



Guarda: Come usare il preprocessing e l'aumento dei dati per migliorare la precisione dei modelli in scenari reali 🚀

Questo passaggio si svolge dopo aver definito gli obiettivi del tuo progetto e raccolto e annotato i tuoi dati, e si colloca nelle fasi iniziali del flusso di lavoro di un progetto di visione artificiale.

Perché la pre-elaborazione è importante#

La pre-elaborazione prepara i dati in un formato che riduce il carico computazionale e migliora le prestazioni del modello. Risolve tre problemi comuni dei dati grezzi:

  • Rumore: variazioni irrilevanti o casuali nei dati.
  • Incoerenza: differenze nelle dimensioni, nei formati e nella qualità delle immagini.
  • Squilibrio: distribuzione disomogenea di classi o categorie nel dataset.

Tecniche di pre-elaborazione#

Le tecniche principali sono il ridimensionamento, la normalizzazione, la suddivisione del dataset e l'aumento dei dati. Con YOLO26, le prime due operazioni sono automatiche, mentre le scelte più importanti riguardano la suddivisione e l'aumento dei dati.

Ridimensionamento delle immagini#

Molti modelli richiedono una dimensione di input uniforme; il ridimensionamento rende quindi le immagini omogenee e riduce la complessità computazionale. Due metodi di interpolazione comuni sono:

  • Interpolazione bilineare: attenua i valori dei pixel calcolando la media ponderata dei quattro pixel più vicini.
  • Interpolazione del vicino più prossimo: copia il valore del pixel più vicino senza calcolare la media; è più rapida, ma produce immagini più sgranate.

Librerie come OpenCV e PIL (Pillow) forniscono queste funzioni, ma con YOLO26 in genere non devi ridimensionare manualmente le immagini. Se ne occupa l'argomento imgsz. Nel percorso a dimensione quadrata fissa, validazione e inferenza adattano le immagini con il letterboxing a un input imgsz × imgsz, come 640 × 640, mantenendo le proporzioni e aggiungendo padding grigio (valore 114). Le immagini più grandi vengono ridotte per adattarle, mentre quelle più piccole non vengono ingrandite se l'aumento di scala è disabilitato. Nel percorso predefinito di addestramento, invece, mosaic=1.0 dispone quattro immagini su una tela più grande e ritaglia l'immagine risultante a imgsz; quando close_mosaic disabilita il mosaico nelle ultime epoche, le immagini vengono adattate con il letterboxing e poi sottoposte comunque a trasformazioni casuali, anziché essere usate senza modifiche. I batch rettangolari (rect=True) e multi_scale usano forme di input diverse.

Normalizzazione dei valori dei pixel#

La normalizzazione ridimensiona i valori dei pixel a un intervallo standard, aiutando il modello a convergere più rapidamente durante l'addestramento. Due tecniche comuni sono:

  • Ridimensionamento min-max: ridimensiona i valori dei pixel a un intervallo compreso tra 0 e 1.
  • Normalizzazione z-score: ridimensiona i valori dei pixel in base alla media e alla deviazione standard.

YOLO26 gestisce automaticamente la normalizzazione nella propria pipeline di pre-elaborazione: converte le immagini in RGB e ridimensiona i valori dei pixel all'intervallo [0, 1] dividendoli per 255 (ridimensionamento min-max). Per impostazione predefinita, YOLO non applica la normalizzazione media/deviazione standard in stile ImageNet (z-score), quindi non è necessario alcun passaggio di normalizzazione manuale.

Suddivisione del dataset#

Suddividere i dati in set di addestramento, validazione e test ti permette di valutare il modello su dati mai visti e misurarne la generalizzazione. Una suddivisione comune prevede il 70% per l'addestramento, il 20% per la validazione e il 10% per il test. Strumenti come scikit-learn o TensorFlow rendono semplice questa operazione.

Tieni presenti questi aspetti quando suddividi i dati:

  • Mantieni la distribuzione delle classi: assicurati che ciascuna classe sia rappresentata proporzionalmente nei set di addestramento, validazione e test.
  • Bilancia le classi: se i dataset sono sbilanciati, valuta il sovracampionamento della classe minoritaria o il sottocampionamento di quella maggioritaria, ma solo nel set di addestramento.
Evita la contaminazione dei dati

Suddividi il dataset prima di applicare qualsiasi aumento dei dati o altra pre-elaborazione e applica queste trasformazioni solo al set di addestramento. Se aumenti i dati prima della suddivisione, le informazioni delle immagini di validazione o test possono influenzare l'addestramento, producendo punteggi fuorvianti che crollano con i dati del mondo reale.

Aumento dei dati del dataset#

L'aumento dei dati incrementa artificialmente le dimensioni di un dataset creando versioni modificate delle immagini esistenti. Aiuta a ridurre l'overfitting e migliora la generalizzazione, offrendo diversi vantaggi:

  • Modelli più robusti: le variazioni di illuminazione, orientamento e scala rendono il modello più resistente alle distorsioni del mondo reale.
  • Conveniente: ampli il set di addestramento senza raccogliere ed etichettare nuovi dati.
  • Migliore utilizzo dei dati: ogni immagine annotata genera molteplici varianti di addestramento.

Examples of data augmentation techniques including flips, rotations, scaling, and color adjustments applied to a sample image

Con YOLO26, l'intensità dell'aumento dei dati si controlla tramite gli argomenti di addestramento passati a model.train() o tramite i flag CLI equivalenti, non modificando il file YAML del dataset, che definisce metadati come percorsi, nomi delle classi e suddivisioni. L'unica eccezione è flip_idx: i dataset di pose lo dichiarano nel file YAML del dataset per mappare le coppie di punti chiave sinistra/destra e, se manca, YOLO disabilita del tutto fliplr e flipud. Le trasformazioni di aumento dei dati integrate includono:

  • Mosaico, MixUp e CutMix (mosaic, mixup, cutmix): combinano più immagini in un unico campione di addestramento.
  • Ribaltamenti (fliplr, flipud): riflettono le immagini orizzontalmente o verticalmente.
  • Trasformazioni geometriche (degrees, translate, scale, shear, perspective): ruotano, traslano, ingrandiscono e deformano le immagini.
  • Variazioni cromatiche HSV (hsv_h, hsv_s, hsv_v): modificano tonalità, saturazione e luminosità.
  • Copia e incolla (copy_paste): incolla copie aggiuntive di oggetti segmentati, specchiandole per impostazione predefinita all'interno della stessa immagine oppure prelevandole da un'altra immagine con copy_paste_mode=mixup.
  • Scambio dei canali (bgr): scambia l'ordine dei canali RGB con BGR.
  • Trasformazioni per la classificazione (auto_augment, erasing): applicano una politica automatica di aumento dei dati e la cancellazione casuale durante l'addestramento di un classificatore.
Imposta l'intensità dell'aumento dei dati durante l'addestramento
from ultralytics import YOLO

model = YOLO("yolo26n.pt")

# L'aumento dei dati si configura tramite gli argomenti di addestramento, non nel file YAML del dataset
model.train(data="coco8.yaml", epochs=10, hsv_h=0.015, fliplr=0.5, mosaic=1.0, degrees=10.0)

Per l'elenco completo degli argomenti di aumento dei dati e dei relativi valori predefiniti, consulta il riferimento alle impostazioni di aumento dei dati e la guida dedicata all'aumento dei dati in YOLO. Se è installato il pacchetto albumentations, YOLO attiva automaticamente anche le trasformazioni integrate basate su Albumentations.

Caso di studio: pre-elaborazione per il rilevamento dei veicoli#

Immagina un progetto che usa YOLO26 per rilevare e classificare veicoli nelle immagini del traffico, partendo da immagini annotate con riquadri di delimitazione ed etichette. Ecco come si presenta ciascuna decisione di pre-elaborazione:

  • Ridimensionamento: nessun intervento manuale; YOLO26 ridimensiona le immagini a imgsz durante l'addestramento.
  • Normalizzazione: nessun intervento manuale; YOLO26 ridimensiona automaticamente i valori dei pixel a [0, 1].
  • Suddivisione: suddividi il dataset in 70% per l'addestramento, 20% per la validazione e 10% per il test, mantenendo coerente la distribuzione delle classi tra le suddivisioni.
  • Aumento dei dati: imposta argomenti di addestramento adatti alle scene di traffico, per esempio fliplr per l'invarianza direzionale, hsv_v per l'illuminazione diurna e notturna e mosaic per densità variabili degli oggetti.

Una volta definite queste scelte, il dataset è pronto per l'analisi esplorativa dei dati (EDA).

Analisi esplorativa dei dati (EDA)#

L'EDA usa statistiche e visualizzazioni per rivelare schemi e distribuzioni nei dati, aiutandoti a individuare problemi come lo squilibrio tra classi o i valori anomali prima dell'addestramento.

Tecniche statistiche di EDA#

L'EDA statistica parte da metriche di base — media, mediana, deviazione standard e intervallo — calcolate su proprietà come la distribuzione dell'intensità dei pixel. Queste metriche forniscono una rapida panoramica della qualità del dataset e fanno emergere presto eventuali irregolarità.

Tecniche di EDA visiva#

Le visualizzazioni rivelano schemi che le statistiche riassuntive non mostrano, come lo squilibrio tra classi e i valori anomali. Tra gli strumenti più comuni troviamo:

  • Istogrammi e diagrammi a scatola e baffi: mostrano la distribuzione dei valori dei pixel e segnalano valori anomali nelle distribuzioni dell'intensità o delle caratteristiche.
  • Grafici a barre: rivelano lo squilibrio tra classi confrontando il numero di esempi di ciascuna classe.
  • Grafici a dispersione: esplorano le relazioni tra caratteristiche delle immagini o annotazioni.
  • Mappe di calore: visualizzano la distribuzione dell'intensità dei pixel o la distribuzione spaziale delle annotazioni nelle immagini.

Ultralytics Platform per l'EDA#

Per eseguire l'EDA senza scrivere codice, carica il tuo dataset su Ultralytics Platform. La scheda Charts del dataset genera automaticamente visualizzazioni EDA fondamentali: distribuzione delle suddivisioni, conteggio delle classi più frequenti, istogrammi di larghezza e altezza delle immagini e mappe di calore 2D delle posizioni delle annotazioni e delle dimensioni delle immagini. La scheda Images ti permette di esplorare i dati in una griglia, in modalità compatta o in una tabella, con sovrapposizioni delle annotazioni; è così facile individuare esempi etichettati in modo errato o classi sbilanciate senza scrivere codice.

Conclusione#

Suddividere, normalizzare e aumentare correttamente i dati riduce il rumore e migliora la generalizzazione, trasformando una raccolta grezza di immagini in un set di addestramento affidabile. Una volta completata la pre-elaborazione del dataset, il passaggio successivo è addestrare il tuo modello. Se hai domande, chiedi alla community nel repository GitHub di Ultralytics o nel server Discord di Ultralytics.

Domande frequenti#

  • La pre-elaborazione assicura che i dati siano puliti, coerenti e in un formato ottimizzato per l'addestramento. Affrontando il rumore, l'incoerenza e lo squilibrio tra classi nei dati grezzi, passaggi come il ridimensionamento, la normalizzazione, l'aumento dei dati e la suddivisione del dataset riducono il carico computazionale e migliorano le prestazioni del modello. Consulta i passaggi di un progetto di visione artificiale per scoprire come si inserisce nel flusso di lavoro complessivo.

  • Configura l'aumento dei dati tramite gli argomenti di addestramento anziché nel file YAML del dataset. Passa a model.train() argomenti come fliplr, mosaic, hsv_h e degrees (o i flag CLI equivalenti) per impostare la probabilità e l'intensità di ciascuna trasformazione. Gli argomenti sono elencati nelle impostazioni di aumento dei dati e descritti nella guida all'aumento dei dati in YOLO. I dataset di pose fanno eccezione: la mappatura dei punti chiave flip_idx si trova nel file YAML del dataset e, se manca, i ribaltamenti vengono disabilitati.

  • Le due tecniche più comuni sono il ridimensionamento min-max (che riporta i pixel a un intervallo compreso tra 0 e 1) e la normalizzazione z-score (che ridimensiona i valori in base alla media e alla deviazione standard). YOLO26 applica automaticamente il ridimensionamento min-max — converte le immagini in RGB e divide i valori dei pixel per 255 — quindi non è necessario normalizzare manualmente i dati. Per impostazione predefinita, non applica la normalizzazione z-score.

  • Una suddivisione comune prevede il 70% per l'addestramento, il 20% per la validazione e il 10% per il test. Mantieni la distribuzione delle classi in tutte e tre le suddivisioni ed evita la contaminazione dei dati applicando l'aumento dei dati solo al set di addestramento, dopo la suddivisione. Strumenti come scikit-learn o TensorFlow gestiscono la suddivisione in modo efficiente. Consulta la guida alla raccolta e all'annotazione dei dati per la preparazione preliminare del dataset.

  • Sì. L'argomento imgsz controlla la dimensione di input desiderata senza bisogno di interventi manuali. Nel percorso a dimensione quadrata fissa, validazione e inferenza adattano le immagini alla forma specificata con il letterboxing, mantenendo le proporzioni; le immagini più grandi vengono ridotte per adattarle, mentre quelle più piccole non vengono ingrandite se l'aumento di scala è disabilitato. Durante l'addestramento, l'aumento dei dati con mosaico, attivo per impostazione predefinita, raggiunge la dimensione desiderata disponendo quattro immagini in mosaico e ritagliandole. I batch rettangolari (rect=True) e multi_scale usano forme di input diverse. Per maggiori dettagli, consulta la documentazione sull'addestramento dei modelli.

Commenti