Bluebabbler

Costruisco cose che prima non c'erano.

NeRF (no, non quei NERF)

NeRF (no, non quei NERF)

Pubblicato da Stefano Castelvetri il 22/04/2024

Non i fucili giocattolo che sparano proiettili di gommapiuma. I NeRF (Neural Radiance Field) sono tecniche che fanno uso delle reti neurali per generare modelli volumetrici tridimensionali a partire da un set limitato di immagini 2D (di solito fotografie).

Sui Campi di radianza neurale (NeRF) ero passato velocemente leggendo qualche articolo, e mi sembrava interessante ma, nel marasma di novità attorno al mondo del machine learning, non avevo ancora dato loro il peso che meritavano. Per fortuna un collega che ha approfondito meglio l'argomento, sfruttando marker e lavagna mi ha spiegato meglio la teoria che c'è dietro, e devo dire che si tratta di una tecnica davvero entusiasmante.

Proverò a riassumerla in modo molto, fin troppo semplice, per quanto possibile, andando anche a ripulire il concetto da dettagli importanti.

Se ti interessa, allegherò anche un mucchio di link per approfondire meglio e ottenere una panoramica più completa.

Se sei abbastanza vecchiə ti ricorderari i primi strumenti basati su ray tracing, ovvero quella tecnica che ci permetteva, dopo ore di calcoli, di ottenere immagini di palle cromate con i riflessi. Il ray tracing infatti consiste in algoritmi che calcolano la traiettoria dei 'raggi' di luce sui solidi di una scena, in base al punto di vista di una 'camera', tenendo conto delle superfici riflettenti, opache o trasparenti nella scena. Ciò, in pratica, che oggi si realizza nella fase di rendering con Blender o altri software per la modellazione 3D.

Mettiamo per un secondo da parte il ray tracing per vedere come si descrivono in genere le scene 3D. Le mesh di poligoni, molto popolari nei videogiochi, identificano un oggetto descrivendone le 'facce' riducendo in genere il modello a un solido piuttosto limitato. Le griglie di voxel invece riempiono una griglia 3D con i corrisponendi tridimensionali dei 'pixel', dando a ogni puntino le caratteristiche visive per poterlo mostrare a video.

Se le mesh di poligoni sono molto limitate e le griglie di voxel costano parecchio in termini di memoria e complessità, usare un neural field, una rete neurale, per descrivere una scena può avere molti benefici tra cui la possibilità di aumentare a piacere la complessità e la precisione della rappresentazione.

Questo perché il NeRF non memorizza la struttura della scena 3D, ma 'impara' come calcolare i singoli punti e le caratteristiche volumetriche della scena. È in grado quindi, date in ingresso le coordinate x,y,z e la direzione della camera, di restituire le caratteristiche di ogni singolo pixel in base alle 'regole' imparate.

E come fa ad imparare?

Questa è la parte interessante e anche quella su cui si stanno vedendo grandi progressi. Come tutte le reti neurali, i NeRF vanno addestrati e in questo caso si usa un metodo di apprendimento non supervisionato che ha in ingresso solo un set di immagini 2D che sono semplicemente delle foto della scena scattate da varie angolazioni.

Ritiriamo in ballo il ray tracing: data una griglia di lavoro, il sistema comincia a ipotizzare i punti da varie angolazioni e calcolarne i punti proiettati su diversi piani. Il riferimento saranno le foto 2D scattate sulla scena, e quindi ogni pixel (o meglio, la funzione che calcola ogni pixel nelle varie direzioni) sarà pesato sulla corrispondenza con le varie foto. Il peso di un 'raggio di luce' che coinciderà perfettamente con una o più foto sarà quindi maggiore del peso di un 'raggio di luce' che non troverà corrispondenze.

Detta così sembra un'impresa titanica che potrebbe richiedere anni di calcoli per arrivare a un risultato accettabile, ma l'evoluzione degli algoritmi e delle tecniche utilizzate (c'entrano anche il caro vecchio Fourier e l'analisi in frequenza, ma questa è un'altra storia) hanno portato questi calcoli a un tempo che varia da qualche ora a pochi giorni.

E ci si aspettano evoluzioni enormi (parliamo di secondi per imparare una scena) con gli Instant NeRF e altre tecniche simili.

Al termine dell'apprendimento, avremo una scena descritta non dalla sua struttura 3D, ma dalle funzioni che calcolano i 'raggi di luce' che trovano corrispondenza con le foto 2D. In termini di vantaggi, avendo una rete neurale, significa che saremo in grado di 'riempire i buchi' aumentando o calando la risoluzione del rendering e variando angolazione a piacere. Inoltre, questi calcoli avranno anche appreso caratteristiche come ombre, riflessi, trasparenze o densità (fumo, polvere), che potranno essere ricalcolati allo stesso modo della struttura.

Questa flessibilità ha il potenziale per dare una 'spinta' notevole a tutto il settore della grafica 3D con importanti applicazioni:

Interessante? Secondo me tantissimo.

Mi scuso se la spiegazione è stata semplicistica, ma non potevo né annoiare troppo, né scrivere un intero libro sull'argomento. Ho comunque raccolto diversi link che approfondiscono meglio alcuni concetti. Li trovi qui sotto.

(wow, e tutto questo senza usare l'espressione 'Intelligenza Artificiale' e senza tirare in ballo questioni etiche o narrazioni fuorvianti)

Crediti e collegamenti: