An Introduction to Super-Resolution using Deep Learning

Una discussione elaborata sui vari componenti, funzioni di perdita e metriche utilizzate per Super Resolution using Deep Learning.

Foto da Jeremy Thomas Unsplash

Introduzione

Super Risoluzione è il processo di recupero di un Alta Risoluzione (HR) immagine da un determinato Bassa Risoluzione (LR) immagine. Un’immagine può avere una “risoluzione inferiore” a causa di una risoluzione spaziale più piccola (cioè dimensioni) 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 mantenuta oltre alla sua versione ad alta risoluzione. (Foto di Jarrad Horne su Unsplash)

Chiaramente, 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 la sua inversa all’immagine LR, possiamo recuperare l’immagine HR.

Ma, lì sta il problema. Di solito non conosciamo la funzione di degradazione prima della mano. Stimare direttamente la funzione di degradazione inversa è un problema mal posto. Nonostante ciò, le tecniche di apprendimento profondo hanno dimostrato di essere efficaci per la Super risoluzione.

Questo blog si concentra principalmente sul fornire un’introduzione all’esecuzione di Super risoluzione utilizzando l’apprendimento profondo utilizzando metodi di allenamento supervisionati. Vengono inoltre discusse alcune importanti funzioni e metriche di perdita. Gran parte del contenuto deriva da questa recensione della letteratura a cui il lettore può fare riferimento.

Metodi supervisionati

Come accennato in precedenza, il deep learning può essere utilizzato per stimare l’immagine ad alta risoluzione (HR) data un’immagine a bassa risoluzione (LR). Usando l’immagine HR come target (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 i livelli di convoluzione sono organizzati. Prima di passare ai gruppi, viene presentato un primer sulla preparazione dei dati e sui tipi di circonvoluzioni. 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 risoluzione spaziale inferiore possono anche essere scalate con un classico metodo di upsampling come l’interpolazione bilineare o bicubica. JPEG e quantizzazione artefatti possono anche 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 consiglia di memorizzare l’immagine HR in un formato non compresso (o compresso senza perdita). Questo per evitare il degrado della qualità dell’immagine HR a causa della compressione con perdita, che può dare prestazioni non ottimali.

Tipi di circonvoluzioni

Oltre alle classiche circonvoluzioni 2D, diverse varianti interessanti possono essere utilizzate nelle reti per ottenere risultati migliori. Le circonvoluzioni dilatate (Atrous) possono fornire un campo visivo più efficace, quindi utilizzando informazioni separate da una grande distanza. Salta le connessioni, il pool piramidale spaziale e i blocchi densi motivano la combinazione di funzionalità di basso livello e di alto livello per migliorare le prestazioni.

Strategie di progettazione della rete. (Source)

L’immagine sopra menziona una serie di strategie di progettazione della rete. È possibile fare riferimento a questo documento per ulteriori informazioni. Per un primer sui diversi tipi di circonvoluzioni comunemente utilizzati in 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, i CNN vengono utilizzati per imparare una mappatura end-to-end dalle immagini interpolate a bassa risoluzione alle immagini ad alta risoluzione. L’intuizione era che potrebbe essere più facile per prima upsample le immagini a bassa risoluzione utilizzando metodi tradizionali (come interpolazione bilineare) e poi affinare il risultante di imparare una mappatura diretta da uno spazio a bassa dimensione ad uno spazio ad alta dimensione.

Una tipica rete di pre-upsampling. (Source)

È possibile fare riferimento alla pagina 5 di questo documento per alcuni modelli che utilizzano questa tecnica. Il vantaggio è che dal momento che l’upsampling è gestito con metodi tradizionali, la CNN ha solo bisogno di imparare come perfezionare l’immagine grossolana, che è più semplice. Inoltre, dal momento che non stiamo usando le circonvoluzioni trasposte qui, gli artefatti a scacchiera potrebbero essere aggirati. Tuttavia il rovescio della medaglia è che i metodi di upsampling predefiniti possono amplificare il rumore e causare sfocatura.

Gruppo 2— Post-Upsampling

In questo caso le immagini a bassa risoluzione vengono passate alle CNNs come tali. L’upsampling viene eseguito nell’ultimo livello utilizzando un livello imparabile.

Una tipica rete post-upsampling. (Source)

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

Gruppo 3— Upsampling progressivo

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

Una tipica rete di upsampling progressivo. (Fonte)

Scomponendo un compito difficile in compiti più semplici, la difficoltà di apprendimento è notevolmente ridotta e si possono ottenere prestazioni migliori. Inoltre, strategie di apprendimento come l’apprendimento curriculum possono essere integrati 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 a clessidra impilata utilizzano diverse strutture a clessidra in serie, alternando efficacemente il processo di upsampling e downsampling.

Una tipica rete di campionamento iterativo su e giù. (Source)

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 vengono utilizzate per misurare la differenza tra l’immagine ad alta risoluzione generata e l’immagine ad alta risoluzione ground truth. Questa differenza (errore) viene quindi utilizzata per ottimizzare il modello di apprendimento supervisionato. Esistono diverse classi di funzioni di perdita in cui ognuna delle quali penalizza un aspetto diverso dell’immagine generata.

Spesso, più di una funzione di perdita viene utilizzata ponderando e sommando individualmente gli errori ottenuti da ciascuna funzione di perdita. Ciò consente al modello di concentrarsi su aspetti apportati da più funzioni di perdita contemporaneamente.

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 utilizzate per addestrare i modelli.

Pixel Loss

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

Trama di perdita L1 liscia. (Source)

La metrica PSNR (discussa di seguito) è altamente correlata con la differenza in termini di pixel, e quindi riducendo al minimo la perdita di pixel massimizza direttamente il valore metrico PSNR (che indica buone prestazioni). Tuttavia, la perdita di pixel non tiene conto della qualità dell’immagine e il modello spesso emette risultati percettivamente insoddisfacenti (spesso privi di dettagli ad alta frequenza).

Perdita di contenuto

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

Perdita di contenuto tra un’immagine ground truth e un’immagine generata. (Source)

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

Perdita di texture

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

Calcolo della matrice Gram. (Fonte)

La correlazione tra la funzionalità di mappe è rappresentato dalla matrice di Gram (G), che è il prodotto interno tra il vettorializzare funzionalità di mappe i e j livello l(mostrato sopra). Una volta calcolata la matrice Gram per entrambe le immagini, calcolare la perdita di texture è semplice, come mostrato di seguito:

Calcolare la perdita di texture. (Source)

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

Perdita di variazione totale

La perdita di variazione totale (TV) viene utilizzata per sopprimere il rumore nelle immagini generate. Prende la somma delle differenze assolute tra i pixel vicini e misura la quantità di rumore presente nell’immagine. Per un’immagine generata, la perdita TV viene calcolata come mostrato di seguito:

Perdita di variazione totale utilizzata su un’immagine generata ad alta risoluzione. (Source)

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

Adversarial Loss

Le reti generative Adversarial (GAN) sono state sempre più utilizzate per diverse applicazioni basate su immagini, tra cui la Super Risoluzione. GANs consistono tipicamente di un sistema di due reti neurali — il generatore e il Discriminatore — duellando a vicenda.

Dato un insieme di campioni target, il Generatore cerca di produrre campioni che possono ingannare il Discriminatore nel credere che siano reali. Il Discriminatore cerca di risolvere campioni reali (target) da campioni falsi (generati). Usando questo approccio di allenamento iterativo, alla fine finiamo con un generatore che è davvero bravo a generare campioni simili ai campioni di destinazione. L’immagine seguente mostra la struttura di un tipico GAN.

GANs in azione. (Source)

Sono stati introdotti progressi nell’architettura GAN di base per migliorare le prestazioni. Per esempio, Parco et. al. utilizzato un discriminatore a livello di funzionalità per acquisire attributi potenziali più significativi di immagini reali ad alta risoluzione. È possibile checkout questo blog per un sondaggio più elaborato sui progressi in GANS.

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

Metriche

Una grande domanda è come valutiamo quantitativamente le prestazioni del nostro modello. Per lo stesso vengono utilizzate diverse tecniche (o metriche) di valutazione della qualità dell’immagine (IQA). Queste metriche possono essere classificate in due categorie: metriche soggettive e metriche oggettive.

Le metriche soggettive si basano sulla valutazione percettiva dell’osservatore umano, mentre le metriche oggettive si basano 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, dispendiose in termini di tempo o costose da calcolare. Un altro problema è che queste due categorie di metriche potrebbero non essere coerenti tra loro. Quindi, i ricercatori spesso visualizzano i risultati utilizzando 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) è comunemente usato metrica oggettiva per misurare la qualità di ricostruzione di una trasformazione lossy. PSNR è inversamente proporzionale al logaritmo dell’Errore Quadrato Medio (MSE) tra l’immagine di verità di terra e l’immagine generata.

Calcolo di PSNR. (Source)

Nella formula precedente, L è il valore massimo possibile di 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

Structural Similarity (SSIM) è una metrica soggettiva utilizzata per misurare la somiglianza strutturale tra immagini, basata su tre confronti relativamente indipendenti, ovvero luminanza, contrasto e struttura. Astrattamente, la formula SSIM può essere mostrata come un prodotto ponderato del confronto tra luminanza, contrasto e struttura calcolata indipendentemente.

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

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

Rappresentazione comunemente usata della formula SSIM. (Fonte)

Nella formula μ(I)rappresenta il valore medio 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 impostare per evitare l’instabilità. Per brevità, il significato dei termini e la derivazione esatta non è spiegato in questo blog e il lettore interessato può checkout Sezione 2.3.2 in questo documento.

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

In ogni caso, poiché SSIM valuta la qualità della ricostruzione dal punto di vista 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)
  • Valutazione basata su attività
  • Information Fidelity Criterion (IFC)
  • Visual Information Fidelity (VIF)

Conclusione

Questo articolo del blog copriva alcuni materiali introduttivi e procedure per la formazione di modelli di apprendimento profondo per la Super Risoluzione. Ci sono infatti tecniche più avanzate introdotte dalla ricerca all’avanguardia che possono produrre prestazioni migliori. Inoltre, la ricerca su strade come la super risoluzione non supervisionata, migliori tecniche di normalizzazione e migliori metriche rappresentative potrebbe favorire notevolmente questo campo. Il lettore interessato è incoraggiato a sperimentare con le loro idee innovative partecipando a sfide come la Sfida PIRM.

Condividi Ora

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.