Skip to main content
Overview

Preprocessing

August 24, 2021
2 min read

Preprocessing

Bounding Box

Filtrare le informazioni superflue. Il problema e che di solito ti danno solo l’immagine grezza. Lo sviluppatore deve trovare l’approccio giusto da solo. Si potrebbe usare YOLO come insegnato a lezione, oppure dato che la maggior parte delle foto con mascherina sono centrate, basterebbe un ritaglio centrale… Bisogna provare varie cose.

Resize

Sarebbe bello calcolare alla dimensione originale, ma considerando larghezza, altezza e canali dell’immagine, la quantita di informazioni e enorme. Bisogna trovare un equilibrio tra perdita di informazioni ed efficienza computazionale. A volte ridurre un po’ i calcoli per fare piu iterazioni di training e piu efficiente.

Usare la conoscenza di dominio

Ho preso un’immagine di dati oculari da Kaggle. L’immagine originale non e stata usata tal quale; e stato applicato un po’ di preprocessing. Sembra che la luminosita sia stata aumentata e la saturazione leggermente ridotta. Se sembra appropriato per il dominio, usatelo subito.

Data Augmentation

Bias, Varianza

E la quarta volta che studio questo argomento in due anni. Ma la prospettiva e leggermente diversa. Prima studiavo questo per capire modelli che generalizzano bene.

Ora posso pensarci dalla prospettiva del rumore. Dati perfettamente ideali non esistono nel mondo reale, e i problemi reali hanno molto rumore. Quindi per addestrare un modello che gestisca bene questo rumore, servono preprocessing e augmentation per il rumore.

Train, Validation

Quando ho visto PyTorch per la prima volta l’anno scorso, ero curioso su questo. Pensavo che i risultati del validation set venissero retroalimentati nel training per regolare i pesi. Ma guardando il codice PyTorch, semplicemente guarda i risultati della validation e finisce il training, il che mi confondeva.

Il motivo per cui ci si prende la briga di separare un validation set e che serve una distribuzione di dati non usata nel training. Senza, non c’e modo di sapere se il training e andato bene fino a quando non si testa il modello sul test set. Il mio codice sarebbe semplicemente un modello fittato sul training set, il che e ovvio col senno di poi.

Percio si crea deliberatamente un validation set dal training set. Permette agli umani di verificare se il training sta andando bene, e puo anche essere usato come metrica per il tuning degli iperparametri.

Non toccare mai il test set!! Guardarlo e solo barare, e danneggia anche la generalizzazione.

Data Augmentation

Il processo di generalizzazione dei dati. Variare i casi e gli stati che i dati possono avere per generalizzarli.

Per esempio, supponiamo di avere una foto di un’auto. Potremmo addestrare solo con questa foto, ma gli stati e i casi delle immagini sono molto diversi. Potremmo supporre che non sia luminosa come nella foto, o che stia piovendo.

E nella realta il modello deve funzionare in queste situazioni diverse. Quindi aggiungendo rumore ai dati per aumentare la varianza, possiamo costruire un modello piu robusto.

torchvision.transforms

https://www.cse.iitb.ac.in/~vkaushal/talk/auto-augment/

Come mostrato, le immagini vengono trasformate in vari modi per aumentare la varianza. L’importante e considerare varianze che potrebbero plausibilmente esistere nel mondo reale.

Per esempio, questa competizione di immagini riguarda il rilevamento di foto con mascherina. L’obiettivo e rilevare foto scattate ai clienti davanti ai negozi. A meno che i clienti non siano appesi al soffitto, non ci si aspettano foto capovolte verticalmente. Non serve includere il capovolgimento verticale nelle trasformazioni.

Usare la conoscenza di dominio in modo proattivo.

Albumentations

Si dice che sia piu veloce e vario delle trasformazioni di PyTorch. Vale la pena provarlo.

Non c’e un metodo che si deve assolutamente usare, e non c’e un metodo universalmente buono. Validare attraverso ipotesi ed esperimenti.

Loading comments...