La data augmentation è una tecnica utilizzata nell’addestramento delle reti neurali per aumentare la quantità di dati disponibili e migliorare le prestazioni del modello. Consiste nel creare nuovi esempi di addestramento a partire dai campioni originali, applicando trasformazioni casuali come rotazione, zoom, shift orizzontale o verticale, flip orizzontale o verticale e altri tipi di manipolazioni.
L’obiettivo della data augmentation è quello di generare un insieme più ampio e variegato di dati che il modello può imparare durante l’addestramento. Ciò aiuta a prevenire l’overfitting e migliorare le prestazioni generali del modello su nuovi dati.
Ci sono diverse tecniche implementative per la data augmentation:
- Rotazione: ruotando leggermente le immagini in modo casuale (per esempio tra -10° e +10°) si possono ottenere varianti dell’immagine originale;
- Zoom: ingrandendo / rimpicciolendo in modo casuale l’immagine originale si possono ottenere varianti con oggetti più vicini / distanti;
- Shift orizzontali/verticali: spostando leggermente l’immagine verso sinistra/destra/alto/basso si possono ottenere varianti dell’immagine originale;
- Flip orizzontali/verticalia : ribaltando lateralmente/orizontalmente rispetto all’asse centrale dell’immagine si ottiene una nuova variante simmetrica dall’originale
- Cambiare luminosità/contrastro/saturazione dei pixel dell’immmaginie rende ancora diverso ogni singolo sample.
- altre tecniche specifiche per problem-specific (esempio aggiungere rumore alle immagini mediche)
Inoltre è possibile combinare queste tecniche assieme oppure creandone delle proprie personalizzate.
L’applicazione della data augmentation può essere fatta sia durante la fase di preprocessing dei dati che on-the-fly durante il training stesso attraverso librerie apposite come Keras ImageDataGenerator
o PyTorch torchvision.transforms
eccetera