Extra Hardware Speciali

DLSS 2.0: Una risoluzione che lascia di stucco? Vi spieghiamo il barbatrucco – Speciale

A fine Marzo Nvidia ha presentato il DLSS (Deep Learning Super Sampling) 2.0, l’ultima evoluzione del sistema di image-processing supportato dalla sua serie di GPU RTX. Mentre una delle tecnologie più utilizzate per il miglioramento delle immagini, il Temporal Anti-Aliasing, manipola in post processing i frames dopo avere effettuato il rendering con la risoluzione finale desiderata (portandosi spesso dietro alcuni effetti indesiderati come il blurring), il DLSS applica il rendering su un set ridotto di pixel, sfruttando la potenza del deep learning per replicare il risultato a risoluzione superiore, dimezzando il lavoro di shading.

La versione precedente del DLSS ha fatto fatica ad esplodere, specie per alcuni problemi di nitidezza nel Full HD e di flessibilità. La rete neurale motore del DLSS 1.0 necessitava una fase di training specifica per ogni gioco. Da qui, la prima fondamentale innovazione portata dalla versione 2.0: una rete con apprendimento più generalizzato su elementi comuni a più giochi (rendering di fiamme, specchi d’acqua, ecc.), col l’obiettivo di accelerare l’integrazione di questa tecnologia sui titoli in uscita.

In più, con il DLSS 2.0 Nvidia promette maggiore nitidezza e stabilità, aumentando lo scaling su tutte le GPU RTX e le risoluzioni (fino ad un upscale della risoluzione di 4 volte, contro il 2x del DLSS 1.0) con un utilizzo più efficiente dei Tensor Core (responsabili dei calcoli ad alta velocità, vedi sotto) per un miglioramento del frame rate complessivo. Questa nuova versione offre tre modalità per impostare la risoluzione di rendering: Quality, Balanced e Performance. Sfruttando la modalità Performance è possibile ottenere in upscaling un frame a 4K da uno a 1080p, mentre per la modalità Quality il 4K è raggiungibile a partire da 1440p.

Attualmente Nvidia DLSS 2.0 è disponibile in Deliver Us The Moon, Wolfenstein: Youngblood, Control e Mechwarrior 5: Mercenaries.

Nelle figure sono evidenti le ottime prestazioni in Deliver Us The Moon. Per la risoluzione in Performance Mode a 4K, una RTX 2060 passa da 15 FPS medi a 40 FPS. Una RTX 2080 Ti, che senza il DLSS va poco sopra i 30 FPS, con il DLSS 2.0 abilitato va oltre i 70 FPS.

Tutto molto bello. Ma come funziona? Ecco il barbatrucco.

DLSS 2.0 utilizza un tipo di rete neurale chiamata Convolutional Autoencoder, che viene allenata a replicare immagini di alta qualità, le ground truth images, a partire da immagini input a risoluzione più bassa, sfruttando i sistemi ad altissime prestazioni per l’AI Nvidia DGX. Le ground truth images vengono ottenute da un supersampling 64x, ovvero effettuando 64 diversi tipi di shading per pixel: l’obiettivo della rete è ottenere in output delle immagini che imitino il più possibile la ground truth, tarando ogni nodo passo passo per minimizzare gli scostamenti tra output e ground truth, detti anche loss. Per facilitare l’apprendimento e migliorare la fluidità nel passaggio da un frame all’altro, viene applicato in input un feedback temporale dall’output precedente, i motion vectors, che indirizzano la rete nella corretta taratura dei dettagli aggiuntivi e delle differenze nel passaggio da un frame all’altro, per un risultato più stabile.

I convolutional autoencoders vengono utilizzati in molti ambiti, specie nelle manipolazioni e ottimizzazioni delle immagini e devono il loro nome all’utilizzo in più stadi, o layers, di filtri convolutivi. Queste particolari reti consistono di tre blocchi concettuali: un encoder, un bottleneck che opera sulla rappresentazione compressa dell’immagine input, e il decoder finale che restituisce l’immagine manipolata.

Riuscire a spiegare nel dettaglio le operazioni di questo sofisticato modello di rete neurale richiederebbe una trattazione molto lunga, ci soffermiamo quindi sul componente principale già menzionato: il filtro convolutivo.

Questi filtri, selezionando le corrette modalità operative e il kernel (la matrice di valori che filtra i pixel dell’immagine, nell’esempio di dimensione 3×3), catturano varie proprietà dell’input, ottenendo operazioni come la riduzione del rumore, l’edge detection e molte altre. Queste operazioni di convoluzione vengono effettuate in cascata per tutte le immagini elaborate dalla rete del DLSS, richiedendo un notevole sforzo computazionale. Già con la tecnologia CUDA, Nvidia permetteva un capacità di calcolo accelerata su GPU, fondamentale per allenare le reti neurali, ma è con l’utilizzo dei Tensor Core (introdotti nell’architettura Volta e notevolmente migliorati con la Turing) che i tempi di apprendimento hanno subito riduzioni massicce. Qual è stata la svolta?

I Tensor Core permettono di svolgere operazioni matriciali in blocco ad ogni ciclo di clock con quattro tipi di precisione in Turing (FP32, FP16, INT8 e INT4), portando la potenza di calcolo disponibile fino a 110 teraflops: a partire da questa incrementata potenza di calcolo, il framework NGX presente nelle schede Turing permette di utilizzare il DLSS 2.0 per ottenere un’ottima qualità grafica e alti frame rate in maniera più efficiente grazie alle previsioni del convolutional autoencoder.

Ad ora non sono molti i titoli che supportano il DLSS 2.0, ma l’introduzione di un branch dedicato dell’Unreal Engine 4 fa ben sperare in una maggiore integrazione di futuro di questa tecnologia che fa un intelligente utilizzo della potenza delle reti neurali convolutive per ottenere migliori esperienze di gioco.

 

Share and Enjoy !

0Shares
0 0

Potrebbero anche interessarti