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)
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
- Preparazione dei dati
- Tipi di Convoluzioni
- Gruppo 1 – Pre-Upsampling
- Gruppo 2- Post-Upsampling
- Gruppo 3- Upsampling progressivo
- Gruppo 4 – Campionamento iterativo su e giù
- Funzioni di perdita
- Pixel Loss
- Content Loss
- Texture Loss
- Total Variation Loss
- Adversarial Loss
- Metria
- PSNR
- SSIM
- Altri punteggi IQA
- Conclusione
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.
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.