YOLO Vision 2026:

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

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



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

Questo passaggio viene dopo aver definito gli obiettivi del tuo progetto e raccolto e annotato i tuoi dati, e si colloca nelle prime fasi del workflow 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. Affronta tre problemi comuni dei dati grezzi:

  • 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 categorie nel dataset.

Tecniche di pre-elaborazione#

Le tecniche principali sono la modifica delle dimensioni, la normalizzazione, la suddivisione del dataset e l'augmentation. Con YOLO26, le prime due sono automatiche, mentre la suddivisione e l'augmentation sono gli aspetti in cui le tue scelte contano di più.

Modifica delle dimensioni delle immagini#

Molti modelli richiedono una dimensione di input coerente, quindi la modifica delle dimensioni uniforma le immagini e riduce la complessità computazionale. Due metodi comuni di interpolazione sono:

  • Interpolazione bilineare: rende più uniformi i valori dei pixel calcolando una media ponderata dei quattro pixel più vicini.
  • Nearest Neighbor: copia il valore del pixel più vicino senza calcolare una media — è più veloce, ma produce un'immagine più pixelata.

Librerie come OpenCV e PIL (Pillow) forniscono queste funzioni, ma con YOLO26 di solito non devi modificare manualmente le dimensioni. L'argomento imgsz gestisce questa operazione. Nel percorso quadrato a dimensione fissa, la validazione e l'inferenza applicano il letterboxing alle immagini verso un input imgsz × imgsz, ad esempio 640 × 640, preservando le proporzioni e aggiungendo un padding grigio (valore 114). Le immagini più grandi vengono ridotte per adattarsi, mentre quelle più piccole non vengono ingrandite quando l'aumento di scala è disabilitato. Nel percorso predefinito di addestramento, invece, mosaic=1.0 dispone quattro immagini su una canvas più grande e ritaglia nuovamente a imgsz; quando close_mosaic disabilita il mosaic nelle epoche finali, le immagini ricevono il letterboxing e vengono comunque trasformate casualmente, anziché passare inalterate. 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ù velocemente durante l'addestramento. Due tecniche comuni sono:

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

YOLO26 gestisce automaticamente la normalizzazione come parte della propria pipeline di pre-elaborazione: converte le immagini in RGB e ridimensiona i valori dei pixel all'intervallo [0, 1] dividendo per 255 (ridimensionamento min-max). YOLO non applica per impostazione predefinita la normalizzazione della media e della deviazione standard nello stile di 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 non visti e misurarne la capacità di 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 semplificano questa operazione.

Tieni presenti questi aspetti quando suddividi i dati:

  • Mantieni la distribuzione delle classi: assicurati che ogni classe sia rappresentata proporzionalmente nei set di addestramento, validazione e test.
  • Bilancia le classi: per i dataset sbilanciati, valuta l'oversampling della classe minoritaria o l'undersampling della classe maggioritaria — solo all'interno del set di addestramento.
Evita la data leakage

Suddividi il dataset prima di applicare qualsiasi augmentation o altra pre-elaborazione, e applica queste trasformazioni solo al set di addestramento. Applicare l'augmentation prima della suddivisione consente alle informazioni provenienti dalle immagini di validazione o test di influenzare l'addestramento, producendo punteggi erroneamente elevati che crollano sui dati del mondo reale.

Augmentation del dataset#

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

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

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

Con YOLO26, l'intensità dell'augmentation viene controllata tramite gli argomenti di addestramento passati a model.train() o ai 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 pose lo dichiarano nel file YAML del dataset per associare le coppie di keypoint sinistro/destra, e YOLO disabilita completamente fliplr e flipud quando manca. Le augmentation integrate includono:

  • Mosaic, 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, spostano, ingrandiscono e deformano le immagini.
  • Variazione dei colori HSV (hsv_h, hsv_s, hsv_v): variano tonalità, saturazione e luminosità.
  • Copy-paste (copy_paste): incolla copie aggiuntive degli oggetti segmentati, riflesse per impostazione predefinita nella stessa immagine oppure prelevate da un'altra immagine con copy_paste_mode=mixup.
  • Scambio dei canali (bgr): scambia l'ordine dei canali RGB in BGR.
  • Trasformazioni per la classificazione (auto_augment, erasing): applicano una policy di augmentation automatica e la cancellazione casuale durante l'addestramento di un classificatore.
Imposta l'intensità dell'augmentation durante l'addestramento
from ultralytics import YOLO

model = YOLO("yolo26n.pt")

# Augmentation is configured with training arguments, not the dataset YAML
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 augmentation e dei relativi valori predefiniti, consulta il riferimento alle impostazioni di augmentation e la guida dedicata all'augmentation dei dati YOLO. Se il pacchetto albumentations è installato, YOLO abilita automaticamente anche le augmentation integrate basate su Albumentations.

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

Considera un progetto per rilevare e classificare veicoli in immagini del traffico con YOLO26, partendo da immagini annotate con bounding box ed etichette. Ecco come si presenta ogni decisione di pre-elaborazione:

  • Modifica delle dimensioni: nessun lavoro manuale — YOLO26 modifica le dimensioni a imgsz durante l'addestramento.
  • Normalizzazione: nessun lavoro manuale — YOLO26 ridimensiona automaticamente i valori dei pixel a [0, 1].
  • Suddivisione: dividi 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.
  • Augmentation: imposta argomenti di addestramento adatti alle scene di traffico — ad esempio fliplr per l'invarianza rispetto alla direzione, hsv_v per l'illuminazione diurna/notturna e mosaic per una densità variabile degli oggetti.

Dopo aver preso queste decisioni, il dataset è pronto per l'analisi esplorativa dei dati (EDA).

Analisi esplorativa dei dati (EDA)#

L'EDA utilizza statistiche e visualizzazioni per rivelare pattern e distribuzioni nei tuoi dati, aiutandoti a individuare problemi come lo sbilanciamento delle classi o gli outlier prima dell'addestramento.

Tecniche statistiche di EDA#

L'EDA statistica inizia con metriche di base — media, mediana, deviazione standard ed escursione — calcolate su proprietà come le distribuzioni dell'intensità dei pixel. Queste forniscono una panoramica rapida della qualità del dataset e fanno emergere presto le irregolarità.

Tecniche visive di EDA#

Le visualizzazioni rivelano pattern che le statistiche riassuntive non mostrano, come lo sbilanciamento delle classi e gli outlier. Gli strumenti comuni includono:

  • Istogrammi e box plot: mostrano la distribuzione dei valori dei pixel ed evidenziano gli outlier nelle distribuzioni dell'intensità o delle caratteristiche.
  • Grafici a barre: rivelano lo sbilanciamento delle classi confrontando il numero di esempi di ciascuna classe.
  • Grafici a dispersione: esplorano le relazioni tra le caratteristiche delle immagini o le annotazioni.
  • Mappe di calore: visualizzano le distribuzioni dell'intensità dei pixel o la distribuzione spaziale delle annotazioni nelle immagini.

Ultralytics Platform per l'EDA#

Per un approccio senza codice all'EDA, carica il tuo dataset su Ultralytics Platform. La scheda Charts del dataset genera automaticamente visualizzazioni EDA fondamentali: distribuzione delle suddivisioni, conteggi delle classi principali, istogrammi della larghezza/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 nelle viste a griglia, compatta o tabellare con sovrapposizioni delle annotazioni, rendendo facile individuare esempi etichettati erroneamente o classi sbilanciate senza scrivere codice.

Conclusioni#

Dati suddivisi, normalizzati e aumentati correttamente riducono il rumore e migliorano la generalizzazione, trasformando una raccolta grezza di immagini in un set di addestramento affidabile. Dopo aver pre-elaborato il dataset, il passaggio successivo è addestrare il tuo modello. Se durante il percorso hai domande, chiedi alla community nel repository Ultralytics su GitHub o nel server Discord di Ultralytics.

FAQ#

  • La pre-elaborazione garantisce che i dati siano puliti, coerenti e in un formato ottimizzato per l'addestramento. Affrontando rumore, incoerenza e sbilanciamento delle classi nei dati grezzi, operazioni come modifica delle dimensioni, normalizzazione, augmentation e suddivisione del dataset riducono il carico computazionale e migliorano le prestazioni del modello. Consulta i passaggi di un progetto di visione artificiale per capire come si inserisce nel workflow più ampio.

  • Configura l'augmentation tramite gli argomenti di addestramento anziché nel file YAML del dataset. Passa argomenti come fliplr, mosaic, hsv_h e degrees a model.train() (o ai flag CLI equivalenti) per impostare la probabilità e l'intensità di ogni trasformazione. Questi argomenti sono definiti nelle impostazioni di augmentation e spiegati nella guida all'augmentation dei dati YOLO. I dataset pose fanno eccezione: la loro mappatura dei keypoint flip_idx si trova nel file YAML del dataset e i ribaltamenti vengono disabilitati in sua assenza.

  • Le due tecniche più comuni sono il ridimensionamento min-max (ridimensionamento dei pixel a un intervallo da 0 a 1) e la normalizzazione z-score (ridimensionamento in base alla media e alla deviazione standard). YOLO26 applica automaticamente il ridimensionamento min-max — convertendo le immagini in RGB e dividendo i valori dei pixel per 255 — quindi non serve un passaggio di normalizzazione manuale. Per impostazione predefinita, non applica la normalizzazione z-score.

  • Una pratica 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 data leakage applicando l'augmentation 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 del dataset nelle fasi precedenti.

  • Sì. L'argomento imgsz controlla la dimensione di input obiettivo senza interventi manuali. Nel percorso quadrato a dimensione fissa, la validazione e l'inferenza applicano il letterboxing alle immagini verso la forma specificata preservando le proporzioni; le immagini più grandi vengono ridotte per adattarsi, mentre quelle più piccole non vengono ingrandite quando l'aumento di scala è disabilitato. Durante l'addestramento, l'augmentation mosaic predefinita raggiunge la dimensione obiettivo disponendo quattro immagini in una griglia e ritagliandole. I batch rettangolari (rect=True) e multi_scale usano forme di input diverse. Consulta la documentazione sull'addestramento dei modelli per i dettagli.

Commenti