Un’introduzione alla super risoluzione usando l’apprendimento profondo

La super risoluzione è il processo di recupero di un’immagine ad alta risoluzione (HR) da un’immagine a bassa risoluzione (LR). Un’immagine può avere una “risoluzione inferiore” a causa di una minore risoluzione spaziale (cioè la dimensione) o a causa di un risultato di degradazione (come la sfocatura). Possiamo mettere in relazione le immagini HR e LR attraverso la seguente equazione: LR = degradation(HR)

Un’immagine a bassa risoluzione tenuta accanto alla sua versione ad alta risoluzione. (Foto di Jarrad Horne su Unsplash)

E’ chiaro che, applicando una funzione di degradazione, otteniamo l’immagine LR dall’immagine HR. Ma possiamo fare l’inverso? Nel caso ideale, sì! Se conosciamo l’esatta funzione di degradazione, applicando il suo inverso all’immagine LR, possiamo recuperare l’immagine HR.

Ma qui sta il problema. Di solito non conosciamo la funzione di degradazione a priori. Stimare direttamente la funzione di degradazione inversa è un problema mal posto. Nonostante questo, le tecniche di Deep Learning hanno dimostrato di essere efficaci per la Super Risoluzione.

Questo blog si concentra principalmente sul fornire un’introduzione all’esecuzione della Super Risoluzione con Deep Learning utilizzando metodi di formazione supervisionata. Vengono anche discusse alcune importanti funzioni di perdita e metriche. Molto del contenuto deriva da questa revisione della letteratura a cui il lettore può fare riferimento.

Metodi supervisionati

Come detto prima, l’apprendimento profondo può essere usato per stimare l’immagine ad alta risoluzione (HR) data un’immagine a bassa risoluzione (LR). Usando l’immagine HR come obiettivo (o ground-truth) e l’immagine LR come input, possiamo trattare questo come un problema di apprendimento supervisionato.

In questa sezione, raggruppiamo vari approcci di apprendimento profondo nel modo in cui sono organizzati gli strati di convoluzione. Prima di passare ai gruppi, viene presentato un primer sulla preparazione dei dati e sui tipi di convoluzione. Le funzioni di perdita utilizzate per ottimizzare il modello sono presentate separatamente verso la fine di questo blog.

Preparazione dei dati

Un metodo semplice per ottenere dati LR è quello di degradare i dati HR. Questo viene spesso fatto sfocando o aggiungendo rumore. Le immagini di bassa risoluzione spaziale possono anche essere scalate con un classico metodo di upsampling come l’interpolazione bilineare o bicubica. Anche gli artefatti JPEG e di quantizzazione possono essere introdotti per degradare l’immagine.

Degradare un’immagine ad alta risoluzione per ottenerne una versione a bassa risoluzione. (Foto di Jarrad Horne su Unsplash)

Una cosa importante da notare è che si raccomanda di memorizzare l’immagine HR in un formato non compresso (o compresso senza perdite). Questo per evitare la degradazione della qualità dell’immagine HR a causa della compressione lossy, che può dare prestazioni sub-ottimali.

Tipi di Convoluzioni

Oltre alle classiche Convoluzioni 2D, diverse varianti interessanti possono essere utilizzate nelle reti per ottenere risultati migliori. Le convoluzioni dilatate (Atrose) possono fornire un campo visivo effettivo maggiore, utilizzando quindi informazioni che sono separate da una grande distanza. Skip connections, Spatial Pyramid Pooling e Dense Blocks motivano la combinazione di caratteristiche sia di basso livello che di alto livello per migliorare le prestazioni.

Strategie di progettazione delle reti. (Fonte)

L’immagine sopra menziona un certo numero di strategie di progettazione della rete. Potete fare riferimento a questo documento per ulteriori informazioni. Per un primer sui diversi tipi di convoluzioni comunemente utilizzati nel deep learning, si può fare riferimento a questo blog.

Gruppo 1 – Pre-Upsampling

In questo metodo, le immagini a bassa risoluzione vengono prima interpolate per ottenere un’immagine “grossolana” ad alta risoluzione. Ora, le CNN sono usate per imparare una mappatura end-to-end dalle immagini a bassa risoluzione interpolate alle immagini ad alta risoluzione. L’intuizione è stata che potrebbe essere più facile sovracampionare prima le immagini a bassa risoluzione usando metodi tradizionali (come l’interpolazione bilineare) e poi raffinare il risultato piuttosto che imparare una mappatura diretta da uno spazio bidimensionale a uno spazio ad alta dimensione.

Una tipica rete di pre-sampling. (Fonte)

Puoi fare riferimento a pagina 5 di questo documento per alcuni modelli che utilizzano questa tecnica. Il vantaggio è che dato che l’upsampling è gestito dai metodi tradizionali, la CNN ha solo bisogno di imparare come raffinare l’immagine grezza, il che è più semplice. Inoltre, dato che qui non stiamo usando convoluzioni trasposte, gli artefatti a scacchiera possono essere aggirati. Tuttavia lo svantaggio è che i metodi di upsampling predefiniti possono amplificare il rumore e causare sfocature.

Gruppo 2- Post-Upsampling

In questo caso le immagini a bassa risoluzione vengono passate alle CNN come tali. L’upsampling viene eseguito nell’ultimo strato utilizzando uno strato apprendibile.

Una tipica rete post-upsampling. (Fonte)

Il vantaggio di questo metodo è che l’estrazione delle caratteristiche viene eseguita nello spazio dimensionale inferiore (prima dell’upsampling) e quindi la complessità computazionale è ridotta. Inoltre, utilizzando uno strato di upsampling apprendibile, il modello può essere addestrato end-to-end.

Gruppo 3- Upsampling progressivo

Nel gruppo precedente, anche se la complessità computazionale è stata ridotta, è stata utilizzata una sola convoluzione di upsampling. Questo rende il processo di apprendimento più difficile per grandi fattori di scala. Per affrontare questo inconveniente, un quadro di upsampling progressivo è stato adottato da lavori come Laplacian Pyramid SR Network (LapSRN) e Progressive SR (ProSR). I modelli in questo caso usano una cascata di CNN per ricostruire progressivamente immagini ad alta risoluzione a fattori di scala più piccoli ad ogni passo.

Una tipica rete di upsampling progressivo. (Fonte)

Decomponendo un compito difficile in compiti più semplici, la difficoltà di apprendimento è notevolmente ridotta e si possono ottenere prestazioni migliori. Inoltre, le strategie di apprendimento come l’apprendimento del curriculum possono essere integrate per ridurre ulteriormente la difficoltà di apprendimento e migliorare le prestazioni finali.

Gruppo 4 – Campionamento iterativo su e giù

Un’altra architettura di modello popolare è la struttura a clessidra (o U-Net). Alcune varianti come la rete Stacked Hourglass usano diverse strutture a clessidra in serie, alternando efficacemente il processo di upsampling e downsampling.

Una tipica rete iterativa di up-and-down sampling. (Fonte)

I modelli in questo quadro possono estrarre meglio le relazioni profonde tra le coppie di immagini LR-HR e quindi fornire risultati di ricostruzione di qualità superiore.

Funzioni di perdita

Le funzioni di perdita sono usate per misurare la differenza tra l’immagine ad alta risoluzione generata e l’immagine ad alta risoluzione di verità. Questa differenza (errore) viene poi utilizzata per ottimizzare il modello di apprendimento supervisionato. Esistono diverse classi di funzioni di perdita, ognuna delle quali penalizza un aspetto diverso dell’immagine generata.

Spesso, più di una funzione di perdita viene utilizzata ponderando e sommando gli errori ottenuti da ogni funzione di perdita individualmente. Questo permette al modello di concentrarsi su aspetti che contribuiscono a più funzioni di perdita simultaneamente.

total_loss = weight_1 * loss_1 + weight_ 2 * loss_2 + weight_3 * loss_3

In questa sezione esploreremo alcune classi popolari di funzioni di perdita usate per l’addestramento dei modelli.

Pixel Loss

Pixel-wise loss è la classe più semplice di funzioni di perdita dove ogni pixel dell’immagine generata è direttamente confrontato con ogni pixel dell’immagine ground-truth. Vengono utilizzate funzioni di perdita popolari come la perdita L1 o L2 o varianti avanzate come la perdita L1 liscia.

Plot della perdita L1 liscia. (Fonte)

La metrica PSNR (discussa di seguito) è altamente correlata con la differenza pixel-wise, e quindi minimizzando la perdita di pixel si massimizza direttamente il valore della metrica PSNR (indicando buone prestazioni). Tuttavia, la perdita di pixel non tiene conto della qualità dell’immagine e il modello spesso produce risultati percettivamente insoddisfacenti (spesso manca di dettagli ad alta frequenza).

Content Loss

Questa perdita valuta la qualità dell’immagine in base alla sua qualità percettiva. Un modo interessante per farlo è confrontare le caratteristiche di alto livello dell’immagine generata e l’immagine di verità a terra. Possiamo ottenere queste caratteristiche di alto livello facendo passare entrambe le immagini attraverso una rete di classificazione delle immagini pre-addestrata (come una VGG-Net o una ResNet).

La perdita di contenuto tra un’immagine di verità a terra e un’immagine generata. (Fonte)

L’equazione qui sopra calcola la perdita di contenuto tra un’immagine di verità e un’immagine generata, data una rete pre-addestrata (Φ) e uno strato (l) di questa rete pre-addestrata in cui la perdita è calcolata. Questa perdita incoraggia l’immagine generata ad essere percettivamente simile all’immagine ground-truth. Per questo motivo, è anche conosciuta come perdita percettiva.

Texture Loss

Per permettere all’immagine generata di avere lo stesso stile (texture, colore, contrasto ecc.) dell’immagine di verità a terra, viene utilizzata la perdita di texture (o perdita di ricostruzione dello stile). La texture di un’immagine, come descritto da Gatys et. al, è definita come la correlazione tra diversi canali di caratteristiche. I canali di caratteristica sono di solito ottenuti da una mappa di caratteristica estratta usando una rete di classificazione delle immagini pre-addestrata (Φ).

Compilazione della matrice di Gram. (Fonte)

La correlazione tra le feature map è rappresentata dalla matrice di Gram (G), che è il prodotto interno tra le feature map vettorizzate i e j sullo strato l (mostrato sopra). Una volta calcolata la matrice di Gram per entrambe le immagini, il calcolo della perdita di texture è semplice, come mostrato di seguito:

Computo della perdita di texture. (Fonte)

Utilizzando questa perdita, il modello è motivato a creare texture realistiche e risultati visivamente più soddisfacenti.

Total Variation Loss

La perdita Total Variation (TV) è usata per sopprimere il rumore nelle immagini generate. Prende la somma delle differenze assolute tra pixel vicini e misura quanto rumore c’è nell’immagine. Per un’immagine generata, la perdita TV è calcolata come mostrato di seguito:

Total Variation Loss usata su un’immagine generata ad alta risoluzione. (Fonte)

Qui, i,j,k itera su altezza, larghezza e canali rispettivamente.

Adversarial Loss

Generative Adversarial Networks (GANs) sono state sempre più utilizzate per diverse applicazioni basate su immagini, inclusa la Super Resolution. Le GAN consistono tipicamente in un sistema di due reti neurali – il Generatore e il Discriminatore – che si sfidano a vicenda.

Dato un set di campioni target, il Generatore cerca di produrre campioni che possano ingannare il Discriminatore nel credere che siano reali. Il Discriminatore cerca di risolvere i campioni reali (target) da quelli falsi (generati). Usando questo approccio di addestramento iterativo, alla fine ci ritroviamo con un Generatore che è veramente bravo a generare campioni simili ai campioni target. L’immagine seguente mostra la struttura di un tipico GAN.

GAN in azione. (Fonte)

Sono stati introdotti miglioramenti all’architettura GAN di base per migliorare le prestazioni. Per esempio, Park et. al. hanno usato un discriminatore a livello di caratteristiche per catturare attributi potenziali più significativi di immagini reali ad alta risoluzione. Potete controllare questo blog per un’indagine più elaborata sui progressi nei GAN.

In genere, i modelli addestrati con perdita avversaria hanno una migliore qualità percettiva anche se potrebbero perdere in PSNR rispetto a quelli addestrati con perdita di pixel. Uno svantaggio minore è che il processo di formazione delle GAN è un po’ difficile e instabile. Tuttavia, i metodi per stabilizzare l’addestramento GAN sono attivamente lavorati.

Metria

Una grande domanda è come valutare quantitativamente le prestazioni del nostro modello. Un certo numero di tecniche (o metriche) di valutazione della qualità dell’immagine (IQA) sono utilizzate per la stessa. Queste metriche possono essere ampiamente classificate in due categorie – metriche soggettive e metriche oggettive.

Le metriche soggettive sono basate sulla valutazione percettiva dell’osservatore umano mentre le metriche oggettive sono basate su modelli computazionali che cercano di valutare la qualità dell’immagine. Le metriche soggettive sono spesso più “percettivamente accurate”, tuttavia alcune di queste metriche sono scomode, lunghe o costose da calcolare. Un altro problema è che queste due categorie di metriche possono non essere coerenti tra loro. Quindi, i ricercatori spesso mostrano i risultati usando le metriche di entrambe le categorie.

In questa sezione, esploreremo brevemente un paio di metriche ampiamente utilizzate per valutare le prestazioni del nostro modello di super risoluzione.

PSNR

Peak Signal-to-Noise Ratio (PSNR) è una metrica oggettiva comunemente usata per misurare la qualità della ricostruzione di una trasformazione con perdita. PSNR è inversamente proporzionale al logaritmo dell’errore quadratico medio (MSE) tra l’immagine di verità e l’immagine generata.

Calcolo di PSNR. (Fonte)

Nella formula precedente, L è il massimo valore possibile del pixel (per le immagini RGB a 8 bit, è 255). Non sorprende che, poiché PSNR si preoccupa solo della differenza tra i valori dei pixel, non rappresenta così bene la qualità percettiva.

SSIM

Similitudine strutturale (SSIM) è una metrica soggettiva usata per misurare la somiglianza strutturale tra le immagini, basata su tre confronti relativamente indipendenti, cioè luminanza, contrasto e struttura. Astrattamente, la formula SSIM può essere mostrata come un prodotto ponderato del confronto di luminanza, contrasto e struttura calcolato indipendentemente.

SSIM è un prodotto ponderato di confronti come descritto sopra. (Fonte)

Nella formula di cui sopra, alfa, beta e gamma sono i pesi delle funzioni di confronto di luminanza, contrasto e struttura rispettivamente. La rappresentazione comunemente usata della formula SSIM è la seguente:

Presentazione comunemente usata della formula SSIM. (Fonte)

Nella formula di cui sopra μ(I)rappresenta la media di una particolare immagine, σ(I) rappresenta la deviazione standard di una particolare immagine,σ(I,I') rappresenta la covarianza tra due immagini, e C1, C2 sono costanti impostate per evitare l’instabilità. Per brevità, il significato dei termini e la derivazione esatta non sono spiegati in questo blog e il lettore interessato può controllare la sezione 2.3.2 di questo documento.

A causa della possibile distribuzione non uniforme delle caratteristiche statistiche dell’immagine o delle distorsioni, valutare la qualità dell’immagine localmente è più affidabile che applicarla globalmente. La media SSIM (MSSIM), che divide l’immagine in più finestre e fa la media della SSIM ottenuta in ogni finestra, è uno di questi metodi di valutazione della qualità a livello locale.

In ogni caso, poiché la SSIM valuta la qualità della ricostruzione dalla prospettiva del sistema visivo umano, soddisfa meglio i requisiti della valutazione percettiva.

Altri punteggi IQA

Senza spiegazioni, alcuni altri metodi di valutazione della qualità dell’immagine sono elencati di seguito. Il lettore interessato può fare riferimento a questo documento per maggiori dettagli.

  • Mean Opinion Score (MOS)
  • Task-based Evaluation
  • Information Fidelity Criterion (IFC)
  • Visual Information Fidelity (VIF)

Conclusione

Questo articolo del blog ha trattato del materiale introduttivo e delle procedure per addestrare modelli di deep learning per la Super Resolution. Ci sono infatti tecniche più avanzate introdotte dalla ricerca allo stato dell’arte che possono dare prestazioni migliori. Inoltre, la ricerca su strade come la super risoluzione non supervisionata, migliori tecniche di normalizzazione e migliori metriche rappresentative potrebbero far progredire notevolmente questo campo. Il lettore interessato è incoraggiato a sperimentare le proprie idee innovative partecipando a sfide come la PIRM Challenge.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.