Ultralytics YOLO27:
Get Started

Arricchisci il tuo dataset per addestrare YOLO26 con Albumentations#

Quando crei modelli di computer vision, la qualità e la varietà dei dati di addestramento possono influire notevolmente sulle prestazioni del modello. Albumentations offre un modo rapido, flessibile ed efficiente per applicare un'ampia gamma di trasformazioni alle immagini, che può migliorare la capacità del modello di adattarsi a scenari reali. Si integra facilmente con Ultralytics YOLO26 e può aiutarti a creare dataset robusti per attività di rilevamento degli oggetti, segmentazione e classificazione.

Con Albumentations puoi arricchire i dati di addestramento di YOLO26 con tecniche come le trasformazioni geometriche e le regolazioni del colore. In questo articolo vedremo come Albumentations può migliorare il processo di data augmentation e rendere ancora più efficaci i tuoi progetti YOLO26. Iniziamo!

Albumentations per l'augmentation delle immagini#

Albumentations è una libreria open source per l'aumento dei dati delle immagini, creata nel giugno 2018. È progettata per semplificare e accelerare il processo di aumento dei dati delle immagini nella visione artificiale. Sviluppata tenendo conto di prestazioni e flessibilità, supporta numerose tecniche di aumento dei dati, dalle trasformazioni semplici, come rotazioni e ribaltamenti, a modifiche più complesse, come le variazioni di luminosità e contrasto. Albumentations aiuta gli sviluppatori a generare dataset ricchi e diversificati per attività come la classificazione delle immagini, il rilevamento degli oggetti e la segmentazione.

Puoi usare Albumentations per applicare facilmente augmentation a immagini, maschere di segmentazione, riquadri di delimitazione e punti chiave, assicurandoti che tutti gli elementi del dataset vengano trasformati insieme. Funziona perfettamente con i framework di deep learning più diffusi, come PyTorch e TensorFlow, ed è quindi accessibile per un'ampia gamma di progetti.

Inoltre, Albumentations è un'ottima soluzione per l'augmentation sia con dataset di piccole dimensioni sia su larga scala, nelle attività di computer vision. Garantisce un'elaborazione rapida ed efficiente, riducendo il tempo dedicato alla preparazione dei dati. Al tempo stesso, aiuta a migliorare le prestazioni del modello, rendendo i tuoi modelli più efficaci nelle applicazioni reali.

Funzionalità principali di Albumentations#

Albumentations offre molte funzionalità utili che semplificano le complesse operazioni di augmentation delle immagini per un'ampia gamma di applicazioni di computer vision. Ecco alcune delle funzionalità principali:

  • Ampia gamma di trasformazioni: Albumentations offre oltre 70 trasformazioni diverse, tra cui modifiche geometriche (ad es. rotazione e ribaltamento), regolazioni del colore (ad es. luminosità e contrasto) e aggiunta di rumore (ad es. rumore gaussiano). La varietà di opzioni permette di creare dataset di addestramento molto diversificati e robusti.

Albumentations augmentation examples

  • Ottimizzazione delle prestazioni: Basato su OpenCV e NumPy, Albumentations utilizza tecniche di ottimizzazione avanzate come SIMD (istruzione singola, dati multipli), che elabora simultaneamente più punti dati per accelerare l'elaborazione. Gestisce rapidamente dataset di grandi dimensioni, risultando una delle soluzioni più veloci disponibili per l'augmentation delle immagini.

  • Tre livelli di augmentation: Albumentations supporta tre livelli di augmentation: trasformazioni a livello di pixel, trasformazioni spaziali e trasformazioni di combinazione. Le trasformazioni a livello di pixel modificano solo le immagini di input, senza alterare maschere, riquadri di delimitazione o punti chiave. Le trasformazioni spaziali, invece, modificano sia l'immagine sia i relativi elementi, come maschere e riquadri di delimitazione. Le trasformazioni di combinazione, inoltre, sono un modo particolare di aumentare i dati perché uniscono più immagini in una sola.

Panoramica dei diversi livelli di augmentation

  • Risultati dei benchmark: Nei benchmark, Albumentations supera costantemente le altre librerie, soprattutto con dataset di grandi dimensioni.

Perché usare Albumentations nei tuoi progetti di Vision AI?#

Per quanto riguarda l'augmentation delle immagini, Albumentations si distingue come strumento affidabile per le attività di computer vision. Ecco alcuni motivi importanti per cui dovresti valutare di usarlo nei tuoi progetti di Vision AI:

  • API facile da usare: Albumentations offre un'API unica e intuitiva per applicare un'ampia gamma di operazioni di augmentation a immagini, maschere, riquadri di delimitazione e punti chiave. È progettata per adattarsi facilmente a diversi dataset, rendendo più semplice ed efficiente la preparazione dei dati.

  • Test rigorosi per individuare i bug: I bug nella pipeline di augmentation possono corrompere silenziosamente i dati di input, spesso senza essere rilevati e finendo per ridurre le prestazioni del modello. Albumentations affronta il problema con una suite di test completa che aiuta a individuare i bug nelle prime fasi dello sviluppo.

  • Estensibilità: Albumentations permette di aggiungere facilmente nuove operazioni di augmentation e di usarle nelle pipeline di computer vision tramite un'unica interfaccia, insieme alle trasformazioni integrate.

Come usare Albumentations per aumentare i dati di addestramento di YOLO26#

Ora che abbiamo visto cos'è Albumentations e cosa può fare, vediamo come usarlo per aumentare i dati destinati all'addestramento del modello YOLO26. La configurazione è semplice, perché si integra direttamente nella modalità di addestramento di Ultralytics e viene applicata automaticamente se hai installato il pacchetto Albumentations.

Installazione#

Per usare Albumentations con YOLO26, assicurati innanzitutto di aver installato i pacchetti necessari. Se Albumentations non è installato, le operazioni di augmentation non verranno applicate durante l'addestramento. Una volta completata la configurazione, potrai creare un dataset aumentato per l'addestramento, con Albumentations integrato per migliorare automaticamente il tuo modello.

Installazione
# Install the required packages
pip install albumentations ultralytics

Per istruzioni dettagliate e best practice sulla procedura di installazione, consulta la nostra guida all'installazione di Ultralytics. Se durante l'installazione dei pacchetti necessari per YOLO26 riscontri difficoltà, consulta la nostra guida ai problemi comuni per trovare soluzioni e suggerimenti.

Gli esempi di trasformazioni personalizzate in questa pagina richiedono Albumentations 1.4.22 o versioni successive e, di conseguenza, Python 3.9 o versioni successive.

Utilizzo#

Dopo aver installato i pacchetti necessari, puoi iniziare a usare Albumentations con YOLO26. Quando addestri YOLO26, un insieme di operazioni di augmentation viene applicato automaticamente grazie all'integrazione con Albumentations, semplificando il miglioramento delle prestazioni del modello.

Utilizzo
from ultralytics import YOLO

# Carica un modello preaddestrato
model = YOLO("yolo26n.pt")

# # Addestra il modello con le operazioni di augmentation predefinite
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)

Vediamo ora più da vicino le operazioni di augmentation specifiche applicate durante l'addestramento.

Sfocatura#

La trasformazione Blur di Albumentations applica all'immagine un semplice effetto di sfocatura calcolando la media dei valori dei pixel in una piccola area quadrata, o kernel. L'operazione usa la funzione OpenCV cv2.blur, che aiuta a ridurre il rumore nell'immagine, ma ne riduce leggermente anche i dettagli.

Ecco i parametri e i valori usati in questa integrazione:

  • blur_limit: controlla l'intervallo delle dimensioni dell'effetto di sfocatura. L'intervallo predefinito è (3, 7), il che significa che la dimensione del kernel può variare da 3 a 7 pixel; sono ammessi solo numeri dispari, così da mantenere la sfocatura centrata.

  • p: la probabilità di applicare la sfocatura. Nell'integrazione, p=0.01, quindi c'è l'1% di probabilità che questa sfocatura venga applicata a ciascuna immagine. La bassa probabilità consente di introdurre occasionalmente l'effetto, aggiungendo un po' di varietà per aiutare il modello a generalizzare senza sfocare eccessivamente le immagini.

Albumentations Blur augmentation result

Sfocatura mediana#

La trasformazione MedianBlur di Albumentations applica all'immagine una sfocatura mediana, particolarmente utile per ridurre il rumore preservando i bordi. A differenza dei metodi di sfocatura tipici, MedianBlur usa un filtro mediano, particolarmente efficace nel rimuovere il rumore impulsivo mantenendo la nitidezza dei bordi.

Ecco i parametri e i valori usati in questa integrazione:

  • blur_limit: questo parametro controlla la dimensione massima del kernel di sfocatura. In questa integrazione, l'intervallo predefinito è (3, 7), il che significa che la dimensione del kernel viene scelta casualmente tra 3 e 7 pixel; sono ammessi solo valori dispari per garantire un corretto allineamento.

  • p: imposta la probabilità di applicare la sfocatura mediana. In questo caso, p=0.01, quindi c'è l'1% di probabilità che la trasformazione venga applicata a ciascuna immagine. Questa bassa probabilità fa sì che la sfocatura mediana venga usata con moderazione, aiutando il modello a generalizzare grazie alla visione occasionale di immagini con meno rumore e bordi preservati.

L'immagine seguente mostra un esempio di questa operazione di augmentation applicata a un'immagine.

Albumentations MedianBlur augmentation

Scala di grigi#

La trasformazione ToGray di Albumentations converte un'immagine in scala di grigi, riducendola a un singolo canale e, facoltativamente, replicando questo canale per ottenere un numero specificato di canali di output. È possibile usare metodi diversi per regolare il calcolo della luminosità in scala di grigi, dalla semplice media a tecniche più avanzate per una percezione realistica del contrasto e della luminosità.

Ecco i parametri e i valori usati in questa integrazione:

  • num_output_channels: imposta il numero di canali nell'immagine di output. Se il valore è superiore a 1, il singolo canale in scala di grigi viene replicato per creare un'immagine in scala di grigi multicanale. Per impostazione predefinita, è impostato su 3, generando un'immagine in scala di grigi con tre canali identici.

  • method: definisce il metodo di conversione in scala di grigi. Il metodo predefinito, "weighted_average", applica una formula (0.299R + 0.587G + 0.114B) che rispecchia fedelmente la percezione umana e produce un effetto naturale. Altre opzioni, come "from_lab", "desaturation", "average", "max" e "pca", offrono metodi alternativi per creare immagini in scala di grigi in base a esigenze diverse di velocità, enfasi sulla luminosità o conservazione dei dettagli.

  • p: controlla la frequenza di applicazione della trasformazione in scala di grigi. Con p=0.01, c'è l'1% di probabilità che ogni immagine venga convertita in scala di grigi, consentendo di combinare immagini a colori e in scala di grigi per aiutare il modello a generalizzare meglio.

L'immagine seguente mostra un esempio di questa trasformazione in scala di grigi applicata.

Albumentations grayscale conversion

Equalizzazione adattiva dell'istogramma con contrasto limitato (CLAHE)#

La trasformazione CLAHE di Albumentations applica l'equalizzazione adattiva dell'istogramma con contrasto limitato (CLAHE), una tecnica che migliora il contrasto dell'immagine equalizzando l'istogramma in aree locali (riquadri) anziché sull'intera immagine. CLAHE produce un effetto di miglioramento bilanciato, evitando l'eccessiva amplificazione del contrasto che può derivare dall'equalizzazione standard dell'istogramma, soprattutto nelle aree inizialmente a basso contrasto.

Ecco i parametri e i valori usati in questa integrazione:

  • clip_limit: controlla l'intervallo di miglioramento del contrasto. Impostato sull'intervallo predefinito (1, 4), determina il contrasto massimo consentito in ciascun riquadro. Valori più alti aumentano il contrasto, ma possono anche introdurre rumore.

  • tile_grid_size: definisce la dimensione della griglia di riquadri, in genere come (righe, colonne). Il valore predefinito è (8, 8), il che significa che l'immagine viene suddivisa in una griglia 8x8. Riquadri più piccoli consentono regolazioni più localizzate, mentre quelli più grandi producono effetti più simili all'equalizzazione globale.

  • p: la probabilità di applicare CLAHE. In questo caso, p=0.01 introduce l'effetto di miglioramento solo nell'1% dei casi, assicurando che le regolazioni del contrasto siano applicate con moderazione e introducano una variazione occasionale nelle immagini di addestramento.

L'immagine seguente mostra un esempio della trasformazione CLAHE applicata.

Albumentations CLAHE contrast enhancement

Uso di trasformazioni Albumentations personalizzate#

Sebbene l'integrazione predefinita di Albumentations offra un solido insieme di trasformazioni, potresti volerle personalizzare per il tuo caso d'uso specifico. Con Ultralytics YOLO26 puoi passare facilmente trasformazioni Albumentations personalizzate tramite l'API Python usando il parametro augmentations. Gli esempi di questa sezione richiedono Albumentations 1.4.22 o versioni successive.

Come definire trasformazioni personalizzate#

Puoi definire un tuo elenco di trasformazioni Albumentations e passarlo alla funzione di training. In questo modo sostituisci le trasformazioni Albumentations predefinite, mantenendo attive tutte le altre trasformazioni YOLO (come hsv_h, degrees, mosaic e così via).

Ecco un esempio con trasformazioni più avanzate:

import albumentations as A

from ultralytics import YOLO

# Carica il modello
model = YOLO("yolo26n.pt")

# Definisci trasformazioni personalizzate con diverse tecniche di aumento dei dati
custom_transforms = [
    # Variazioni di sfocatura
    A.OneOf(
        [
            A.MotionBlur(blur_limit=7, p=1.0),
            A.MedianBlur(blur_limit=7, p=1.0),
            A.GaussianBlur(blur_limit=7, p=1.0),
        ],
        p=0.3,
    ),
    # Variazioni del rumore
    A.OneOf(
        [
            A.GaussNoise(std_range=(0.0124, 0.0277), p=1.0),
            A.ISONoise(color_shift=(0.01, 0.05), intensity=(0.1, 0.5), p=1.0),
        ],
        p=0.2,
    ),
    # Regolazioni di colore e contrasto
    A.CLAHE(clip_limit=4.0, tile_grid_size=(8, 8), p=0.5),
    A.RandomBrightnessContrast(brightness_limit=0.3, contrast_limit=0.3, p=0.5),
    A.HueSaturationValue(hue_shift_limit=20, sat_shift_limit=30, val_shift_limit=20, p=0.5),
    # Simula le occlusioni
    A.CoarseDropout(num_holes_range=(1, 8), hole_height_range=(8, 32), hole_width_range=(8, 32), fill=0, p=0.2),
]

# Esegui il training con trasformazioni personalizzate
results = model.train(
    data="coco8.yaml",
    epochs=100,
    imgsz=640,
    augmentations=custom_transforms,
)

Considerazioni importanti#

Quando usi trasformazioni Albumentations personalizzate, tieni presenti questi punti:

  • Configurazione: Crea oggetti di trasformazione personalizzati tramite l'API Python. Puoi anche passare trasformazioni serializzate tramite CLI o file di configurazione YAML, anche quando riprendi il training.
  • Sostituzione delle impostazioni predefinite: Le trasformazioni personalizzate sostituiscono completamente quelle Albumentations predefinite. Le altre trasformazioni YOLO rimangono attive.
  • Gestione delle etichette: Le trasformazioni spaziali, incluse quelle annidate in A.OneOf o A.Compose, spostano insieme all'immagine i riquadri di delimitazione, i poligoni, i keypoint e le maschere di profondità o semantiche. A.RandomGridShuffle non può preservare la topologia di poligoni o keypoint e genera un errore con campioni di segmentazione, posa e OBB.
  • Prestazioni: Alcune trasformazioni richiedono molte risorse di calcolo. Monitora la velocità del training e regolala di conseguenza.
  • Compatibilità con le attività: Le trasformazioni Albumentations personalizzate funzionano con il training per rilevamento, segmentazione, segmentazione semantica, profondità, posa e OBB, ma non con la classificazione (che usa una pipeline di aumento dei dati diversa).

Casi d'uso delle trasformazioni personalizzate#

Applicazioni diverse traggono vantaggio da strategie di aumento dei dati diverse:

  • Imaging medico: Usa deformazioni elastiche, distorsioni a griglia e pattern di rumore specifici
  • Immagini aeree/satellitari: Applica trasformazioni che simulano diverse altitudini, condizioni meteorologiche e angoli di illuminazione
  • Scenari con scarsa illuminazione: Dai risalto all'aggiunta di rumore e alle regolazioni della luminosità per addestrare modelli robusti in condizioni di illuminazione difficili
  • Ispezione industriale: Aggiungi variazioni di texture e difetti simulati per le applicazioni di controllo qualità

Per un elenco completo delle trasformazioni disponibili e dei relativi parametri, consulta la documentazione di Albumentations.

Per esempi più dettagliati e best practice sull'uso di trasformazioni Albumentations personalizzate con YOLO26, consulta la guida all'aumento dei dati YOLO.

Approfondisci Albumentations#

Se vuoi saperne di più su Albumentations, consulta le seguenti risorse per istruzioni ed esempi più approfonditi:

Punti chiave#

In questa guida abbiamo esaminato gli aspetti principali di Albumentations, un'ottima libreria Python per l'aumento dei dati delle immagini. Abbiamo parlato dell'ampia gamma di trasformazioni, delle prestazioni ottimizzate e di come puoi usarla nel tuo prossimo progetto YOLO26.

Inoltre, se vuoi saperne di più sulle altre integrazioni Ultralytics YOLO26, visita la nostra pagina della guida alle integrazioni. Troverai risorse e approfondimenti utili.

Domande frequenti#

  • Albumentations si integra perfettamente con YOLO26 e viene applicato automaticamente durante il training se hai installato il pacchetto. Ecco come iniziare:

    # Installa i pacchetti richiesti
    # !pip install albumentations ultralytics
    from ultralytics import YOLO
    
    # Carica e addestra il modello con gli aumenti automatici
    model = YOLO("yolo26n.pt")
    model.train(data="coco8.yaml", epochs=100)

    L'integrazione include aumenti ottimizzati come sfocatura, sfocatura mediana, conversione in scala di grigi e CLAHE, con probabilità attentamente calibrate per migliorare le prestazioni del modello.

  • Albumentations si distingue per diversi motivi:

    1. Prestazioni: Basato su OpenCV e NumPy con ottimizzazione SIMD per una velocità superiore
    2. Flessibilità: Supporta oltre 70 trasformazioni per l'aumento dei dati a livello di pixel, spaziale e di combinazione
    3. Compatibilità: Funziona perfettamente con framework diffusi come PyTorch e TensorFlow
    4. Affidabilità: Una suite di test completa previene la corruzione silenziosa dei dati
    5. Facilità d'uso: Un'unica API unificata per tutti i tipi di aumento dei dati
  • Albumentations migliora diverse attività di computer vision, tra cui:

    Le diverse opzioni di aumento dei dati della libreria la rendono utile per le attività di visione che richiedono prestazioni robuste del modello. In Ultralytics YOLO26, il training di classificazione usa una propria pipeline di aumento dei dati basata su torchvision e non applica trasformazioni Albumentations.

Commenti