Tutti sappiamo che ridurre la risoluzione di un'immagine è un'operazione semplice e facilmente realizzabile con buoni risultati. È possibile farlo sfruttando interpolazioni di vario tipo (ad esempio bilineare o bicubica), in modo da applicare semplici filtri e ridurre l'aliasing. Il problema, però, è molto più complesso quando vogliamo effettuare l'operazione inversa: se proviamo a incrementare le dimensioni di un'immagine molto piccola (ad esempio 200 x 200 pixel), portandola a risoluzioni elevate (per esempio 2000 x 2000), il risultato sarà inevitabilmente "pixelato".
Come migliorare la qualità aumentando la risoluzione?
Le tecniche tradizionali finalizzate al miglioramento della qualità delle immagini "ingrandite" si basano su filtraggi che "sfocano" leggermente alcuni dettagli. Altre soluzioni sfruttano invece tecniche di regressione, che tendono a stimare il valore dei pixel sulla base dei vicini più prossimi. In ogni caso, si tratta di tecniche che generalmente portano a risultati abbastanza limitati.
Esistono vari strumenti online che consentono di incrementare la dimensione di un'immagine, sfruttando tecniche diverse ma spesso non lontane da quelle appena menzionate per ridurre l'effetto "pixelato". In alcuni casi, però, l'introduzione di nuove tecniche basate sull'intelligenza artificiale sembra portare a risultati abbastanza interessanti.
In linea di principio, infatti, è possibile immaginare un algoritmo che, basandosi su un dataset di immagini ad alta risoluzione, generi dapprima una nuovo dataset con le stesse immagini a risoluzione inferiore. A questo punto, si può addestrare un algoritmo che, a partire dal dataset "riscalato", provi ad ottenere le immagini originali.
Chiaramente, dalla teoria alla pratica c'è di mezzo una enorme quantità di dati, un'altrettanto impressionante potenza di calcolo, e la necessità di raffinare gli algoritmi di machine learning coinvolti in un processo del genere. Sono comunque stati fatti vari tentativi, e uno di questi, sviluppato dai ricercatori di Google, ha portato a risultati particolarmente impressionanti.
SR3: il nuovo modello di Google per incrementare la risoluzione delle immagini
La nuova tecnologia di Google si basa sulla composizione di due tecniche. La prima è nota come Super-Resolution via Repeated Refinements (abbreviata in SR3), ed è utilizzata per migliorare la qualità delle immagini aggiungendo ad essa del rumore gaussiano. Partendo dall'immagine così corrotta, ed avendo addestrato un algoritmo basato su GAN con immagini a varie gradazione di rumore, si riesce ad ottenere una qualità dell'immagine riscalata particolarmente buona.
A questa tecnologia, già particolarmente impressionante, Google aggiunge un ulteriore componente, chiamato Cascaded Diffusion Model (CDM), che migliora ulteriormente le performance di SR3 introducendo una pipeline di generazione di immagini a partire da rumore, ma in cascata, a risoluzioni crescenti.
La combinazione di queste due tecniche riesce a incrementare la qualità delle immagini con risultati sorprendenti, che superano anche i livelli di altri algoritmi analoghi come BigGAN-Deep e VQ-VAE-2, finora accreditati come lo stato dell'arte in questo ambito.
Secondo quanto riportato da Google nel blog ufficiale, i risultati offerti da questa tecnologia sono di ottimo livello per immagini di volti e di elementi naturali, riuscendo ad incrementare la dimensione delle immagini fino a otto volte più delle dimensioni originali.