Ultralytics YOLO27:

Migliora il tuo dataset per addestrare YOLO26 usando Albumentations#

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

Usando Albumentations, puoi potenziare 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 tuo processo di aumento dei dati e rendere ancora più efficaci i tuoi progetti YOLO26. Iniziamo!

Albumentations per l'aumento delle immagini#

Albumentations è una libreria open source per l'aumento delle immagini, creata nel giugno 2018. È progettata per semplificare e accelerare il processo di aumento delle immagini nella visione artificiale. Sviluppata con particolare attenzione a prestazioni e flessibilità, supporta numerose tecniche di aumento, da semplici trasformazioni come rotazioni e ribaltamenti a regolazioni 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 aumentazioni a immagini, maschere di segmentazione, bounding box e keypoint, assicurandoti che tutti gli elementi del dataset vengano trasformati insieme. Funziona perfettamente con i framework di deep learning più diffusi come PyTorch e TensorFlow, rendendolo accessibile per un'ampia gamma di progetti.

Inoltre, Albumentations è un'ottima opzione per l'aumento dei dati sia quando gestisci dataset piccoli sia quando lavori con attività di visione artificiale su larga scala. Garantisce un'elaborazione rapida ed efficiente, riducendo il tempo dedicato alla preparazione dei dati. Allo stesso tempo, contribuisce a migliorare le prestazioni del modello, rendendo i tuoi modelli più efficaci nelle applicazioni del mondo reale.

Funzionalità principali di Albumentations#

Albumentations offre molte funzionalità utili che semplificano aumenti complessi delle immagini per un'ampia gamma di applicazioni di visione artificiale. Ecco alcune delle funzionalità principali:

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

Albumentations augmentation examples

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

  • Tre livelli di aumento: Albumentations supporta tre livelli di aumento: trasformazioni a livello di pixel, trasformazioni a livello spaziale e trasformazioni a livello di fusione. Le trasformazioni a livello di pixel interessano solo le immagini di input senza modificare maschere, riquadri di delimitazione o punti chiave. Le trasformazioni a livello spaziale trasformano invece sia l'immagine sia i suoi elementi, come maschere e riquadri di delimitazione. Inoltre, le trasformazioni a livello di fusione offrono un modo unico di aumentare i dati, combinando più immagini in una sola.

Panoramica dei diversi livelli di aumento

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

Perché dovresti usare Albumentations per i tuoi progetti di IA per la visione?#

Per quanto riguarda l'aumento delle immagini, Albumentations si distingue come strumento affidabile per le attività di visione artificiale. Ecco alcuni motivi principali per cui dovresti considerarla per i tuoi progetti di IA per la visione:

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

  • Test rigorosi dei bug: I bug nella pipeline di aumento possono danneggiare silenziosamente i dati di input, spesso senza essere rilevati, degradando infine le prestazioni del modello. Albumentations affronta questo problema con una suite di test completa che aiuta a individuare tempestivamente i bug durante lo sviluppo.

  • Estensibilità: Albumentations consente di aggiungere facilmente nuovi aumenti e di utilizzarli nelle pipeline di visione artificiale tramite un'unica interfaccia, insieme alle trasformazioni integrate.

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

Ora che abbiamo visto cos'è Albumentations e cosa può fare, vediamo come usarla per aumentare i dati durante l'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 è installata, gli aumenti non verranno applicati durante l'addestramento. Una volta completata la configurazione, potrai creare un dataset aumentato per l'addestramento, con Albumentations integrata per migliorare automaticamente il tuo modello.

Installazione
# Install the required packages
pip install albumentations ultralytics

Per istruzioni dettagliate e best practice relative al processo 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 quindi 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 aumenti viene applicato automaticamente tramite l'integrazione con Albumentations, semplificando il miglioramento delle prestazioni del modello.

Utilizzo
from ultralytics import YOLO

# Load a pretrained model
model = YOLO("yolo26n.pt")

# Train the model with default augmentations
results = model.train(data="coco8.yaml", epochs=100, imgsz=640)

Ora esaminiamo più da vicino gli aumenti specifici applicati durante l'addestramento.

Sfocatura#

La trasformazione Blur in Albumentations applica un semplice effetto di sfocatura all'immagine calcolando la media dei valori dei pixel all'interno di una piccola area quadrata, o kernel. Questa operazione usa la funzione OpenCV cv2.blur, che aiuta a ridurre il rumore nell'immagine, riducendone però leggermente 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 per la sfocatura può variare tra 3 e 7 pixel, consentendo solo numeri dispari per mantenere centrata la sfocatura.

  • p: la probabilità di applicare la sfocatura. Nell'integrazione, p=0.01, quindi c'è una probabilità dell'1% che questa sfocatura venga applicata a ciascuna immagine. La bassa probabilità consente effetti di sfocatura occasionali, introducendo una certa variabilità per aiutare il modello a generalizzare senza sfocare eccessivamente le immagini.

Albumentations Blur augmentation result

Sfocatura mediana#

La trasformazione MedianBlur in Albumentations applica un effetto di sfocatura mediana all'immagine, particolarmente utile per ridurre il rumore preservando i bordi. A differenza dei metodi di sfocatura comuni, MedianBlur utilizza un filtro mediano, particolarmente efficace nel rimuovere il rumore sale e pepe mantenendo nitidezza intorno ai 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, il valore predefinito è un intervallo di (3, 7), ovvero la dimensione del kernel viene scelta casualmente tra 3 e 7 pixel, consentendo solo valori dispari per garantire un corretto allineamento.

  • p: imposta la probabilità di applicare la sfocatura mediana. Qui p=0.01, quindi la trasformazione ha una probabilità dell'1% di essere applicata a ciascuna immagine. Questa bassa probabilità garantisce un uso limitato della sfocatura mediana, aiutando il modello a generalizzare grazie all'esposizione occasionale a immagini con rumore ridotto e bordi preservati.

L'immagine seguente mostra un esempio di questo aumento applicato a un'immagine.

Albumentations MedianBlur augmentation

Scala di grigi#

La trasformazione ToGray in Albumentations converte un'immagine in scala di grigi, riducendola a un formato a canale singolo e, facoltativamente, replicando questo canale per adattarlo a un numero specificato di canali di output. È possibile usare metodi diversi per modificare 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 questo valore è maggiore di 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, producendo 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 si allinea strettamente alla percezione umana, producendo un effetto in scala di grigi dall'aspetto naturale. Altre opzioni, come "from_lab", "desaturation", "average", "max" e "pca", offrono metodi alternativi per creare immagini in scala di grigi in base a diverse esigenze di velocità, enfasi sulla luminosità o preservazione dei dettagli.

  • p: controlla la frequenza di applicazione della trasformazione in scala di grigi. Con p=0.01, c'è una probabilità dell'1% di convertire ogni immagine in scala di grigi, rendendo possibile una combinazione di 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 in Albumentations applica l'equalizzazione adattiva dell'istogramma con contrasto limitato (CLAHE), una tecnica che migliora il contrasto dell'immagine equalizzando l'istogramma in regioni localizzate (tile) invece che sull'intera immagine. CLAHE produce un effetto di miglioramento equilibrato, evitando il contrasto eccessivamente amplificato 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 tile. Valori più elevati vengono usati per ottenere un contrasto maggiore, ma possono anche introdurre rumore.

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

  • p: la probabilità di applicare CLAHE. Qui p=0.01 introduce l'effetto di miglioramento solo nell'1% dei casi, assicurando che le regolazioni del contrasto vengano applicate sporadicamente per aggiungere variazioni occasionali alle 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 aumenti, potresti voler personalizzare le trasformazioni 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 il tuo elenco di trasformazioni Albumentations e passarlo alla funzione di addestramento. Questo sostituisce le trasformazioni Albumentations predefinite mantenendo attivi tutti gli altri aumenti di YOLO (come hsv_h, degrees, mosaic, ecc.).

Ecco un esempio con trasformazioni più avanzate:

import albumentations as A

from ultralytics import YOLO

# Load model
model = YOLO("yolo26n.pt")

# Define custom transforms with various augmentation techniques
custom_transforms = [
    # Blur variations
    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,
    ),
    # Noise variations
    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,
    ),
    # Color and contrast adjustments
    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),
    # Simulate occlusions
    A.CoarseDropout(num_holes_range=(1, 8), hole_height_range=(8, 32), hole_width_range=(8, 32), fill=0, p=0.2),
]

# Train with custom transforms
results = model.train(
    data="coco8.yaml",
    epochs=100,
    imgsz=640,
    augmentations=custom_transforms,
)

Considerazioni importanti#

Quando usi trasformazioni Albumentations personalizzate, tieni presenti questi aspetti:

  • Configurazione: crea oggetti di trasformazione personalizzati tramite l'API Python. Le trasformazioni serializzate possono anche essere passate tramite file di configurazione CLI o YAML, anche quando riprendi l'addestramento.
  • Sostituisce le impostazioni predefinite: le tue trasformazioni personalizzate sostituiranno completamente le trasformazioni Albumentations predefinite. Gli altri aumenti di YOLO rimangono attivi.
  • Gestione delle etichette: le trasformazioni spaziali, comprese quelle annidate in A.OneOf o A.Compose, spostano riquadri di delimitazione, poligoni, punti chiave e maschere di profondità o semantiche insieme all'immagine. A.RandomGridShuffle non può preservare la topologia di poligoni o punti chiave e genera un errore su campioni di segmentazione, stima della posta e OBB.
  • Prestazioni: alcune trasformazioni sono costose dal punto di vista computazionale. Monitora la velocità di addestramento e apporta le modifiche necessarie.
  • Compatibilità delle attività: le trasformazioni personalizzate di Albumentations funzionano con l'addestramento per rilevamento, segmentazione, segmentazione semantica, profondità, stima della posa e OBB, ma non con la classificazione (che utilizza una pipeline di aumento diversa).

Casi d'uso delle trasformazioni personalizzate#

Applicazioni diverse traggono vantaggio da strategie di aumento diverse:

  • Imaging medico: usa deformazioni elastiche, distorsioni a griglia e pattern di rumore specializzati
  • Immagini aeree/satellitari: applica trasformazioni che simulano diverse altitudini, condizioni meteorologiche e angoli di illuminazione
  • Scenari con scarsa illuminazione: enfatizza l'aggiunta di rumore e le regolazioni della luminosità per addestrare modelli robusti in condizioni di illuminazione difficili
  • Ispezione industriale: aggiungi variazioni delle texture e difetti simulati per applicazioni di controllo qualità

Per un elenco completo delle trasformazioni disponibili e dei relativi parametri, visita 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 di YOLO.

Continua a imparare su Albumentations#

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

Punti chiave#

In questa guida abbiamo esplorato gli aspetti principali di Albumentations, un'ottima libreria Python per l'aumento delle immagini. Abbiamo illustrato l'ampia gamma di trasformazioni, le prestazioni ottimizzate e come puoi usare la libreria nel tuo prossimo progetto YOLO26.

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

FAQ#

  • Albumentations si integra perfettamente con YOLO26 e viene applicata automaticamente durante l'addestramento se hai installato il pacchetto. Ecco come iniziare:

    # Install required packages
    # !pip install albumentations ultralytics
    from ultralytics import YOLO
    
    # Load and train model with automatic augmentations
    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à accuratamente calibrate per migliorare le prestazioni del modello.

  • Albumentations si distingue per diversi motivi:

    1. Prestazioni: basata su OpenCV e NumPy, con ottimizzazione SIMD per una velocità superiore
    2. Flessibilità: supporta oltre 70 trasformazioni tra aumenti a livello di pixel, spaziali e di fusione
    3. Compatibilità: funziona perfettamente con framework diffusi come PyTorch e TensorFlow
    4. Affidabilità: una suite di test completa impedisce il danneggiamento silenzioso dei dati
    5. Semplicità d'uso: un'unica API unificata per tutti i tipi di aumento
  • Albumentations migliora diverse attività di visione artificiale, tra cui:

    • Rilevamento degli oggetti: migliora la robustezza del modello rispetto alle variazioni di illuminazione, scala e orientamento
    • Segmentazione delle istanze: migliora la precisione della predizione delle maschere attraverso trasformazioni diversificate
    • Classificazione: aumenta la capacità di generalizzazione del modello con aumenti cromatici e geometrici
    • Stima della posa: aiuta i modelli ad adattarsi a diversi punti di vista e condizioni di illuminazione

    Le diverse opzioni di aumento della libreria la rendono utile per qualsiasi attività di visione che richieda prestazioni robuste del modello.

Commenti