Apprendimento di Dizionari e Denoising di Immagini

Come i nostri coetanei hanno già compreso, il motivo per cui l'intero staff si è preso una pausa durante il periodo Gennaio - Marzo sono stati differenti progetti ai quali abbiamo lavorato per scopi universitari. Tutti sono stati decisamente interessanti, così abbiamo deciso di provare ad esporre il lavoro anche sul sito.
Per quanto mi riguarda, ho lavorato per più di un mese fianco a fianco con Federico Becattini per il progetto di Apprendimento Automatico (o Machine Learning); ci è stato chiesto di provare ad applicare particolari tecniche di denoising di immagini per migliorare video a basso frame-rate.
La base teorica dell'elaborato non era un semplice filtro, ma il cosiddetto Apprendimento di Dizionari. Arrivati a questo punto, vi consiglio di ridare un'occhiata all'articolo che avevo fatto per introdurre SVM, dove avevo parlato in maniera piuttosto generale di alcuni concetti di Apprendimento Automatico che saranno utili anche in questo contesto.

Immaginiamo di avere un vettore di feature ; l'obiettivo dell'Apprendimento di Dizionari è quello di trovare una matrice grazie alla quale si possa esprimere il vettore con una combinazione lineare di alcune colonne di . Dopodichè, invece di utilizzare come vettore di feature per predire un vettore o una classe , si utilizza un vettore tale che .

Dagli studi di Julien Mairal e dei suoi collaboratori è risultato che rappresentare un vettore di feature (o una matrice di feature) con un dizionario ha portato ad ottimi risultati in task di ricostruzione di immagini rumorose.

L'idea di Marial è stata quella di apprendere un dizionario a partire da patch, di dimensione fissata e sovrapposte, estratte dall'immagine rumorosa. Esiste un framework apposito per effettuare questo procedimento: SPAMS (SPArse Modeling Software) disponibile per Python, R e Matlab (versione che abbiamo utilizzato per i nostri esperimenti). Codici di esempio da dove partire per questo task sono disponibili in questa pagina. Nella prima parte della presentazione linkata in fondo all'articolo abbiamo cercato di darvi più dettagli teorici possibili sul funzionamento di questa tecnica. Se volete approfondire, questo è un buon punto di partenza, a cui seguono i riferimenti bibliografici da noi utilizzati.

Il nostro piccolo contributo è stato provare ad applicare la stessa tecnica per migliorare video a basso frame-rate in termini di fluidità. L'idea di base era provare a creare nuovi frame tra quelli originali già presenti nel video. Siamo partiti creando "frame rumorosi" prendendo valori dei pixel con una determinata probabilità dal frame precedente o dal successivo. Dopodichè abbiamo appreso un dizionario su ciascun frame rumoroso per il denoising.

Il video seguente è uno degli esempi che abbiamo utilizzato per testare il nostro sistema:

Quello che segue invece è un esempio di ricostruzione. Sebbene la fluidità sia migliorata nettamente, l'effetto visivo non è ancora dei migliori.

Risulta chiaro come affrontare un task del genere senza nessuna conoscenza a priori dei dati non è sufficiente per una buona risoluzione del problema. Sicuramente può essere migliorato il metodo di inizializzazione dei frame da "ricostruire".

Maggiori dettagli li potete trovare nella presentazione seguente:
Dictionary Learning

Come sempre vi invito a lasciare domande tra i commenti o a segnalare eventuali imprecisioni nell'articolo.

Si ringrazia Julien Mairal ed i suoi collaboratori per il codice messo a disposizione online e per la disponibilità nel risponderci alle e-mail. Per gli stessi motivi si ringrazia anche Mike Pekala.

Alessio Antonielli

Ingegnere informatico, appassionato di cinema, musica, videogiochi e serie tv. Insomma, le solite cose che vi aspettereste da un ex studente di Ingegneria Informatica, giusto per rafforzare lo stereotipo…

Federico Becattini

Dottorando in computer vision. Appassionato di informatica e elettronica fai da te, specialmente se per applicazioni futili. Tormenta i suoi amici e colleghi con idee geniali spesso non riconosciute come tali.

Apprendimento di Dizionari e Denoising di Immagini ultima modifica: 2013-04-07T17:58:13+01:00 da Alessio Antonielli


Advertisment ad adsense adlogger