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.
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.
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 concopy_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.
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
imgszdurante 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
fliplrper l'invarianza rispetto alla direzione,hsv_vper l'illuminazione diurna/notturna emosaicper 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_hedegreesamodel.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 keypointflip_idxsi 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
imgszcontrolla 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) emulti_scaleusano forme di input diverse. Consulta la documentazione sull'addestramento dei modelli per i dettagli.