IIC3912 - Tópicos Avanzados de Gráfica Computacional

Francisca T. Gil-Ureta ⋅ 04/05/2026

image.png


Introducción

Hoy vamos a discutir el paper **NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis** de Ben Mildenhall et. al.. Este paper propone una forma de sintetizar nuevas vistas de una escena modelando la función volumétrica de la escena usando una red neuronal.

Pensemos primero en el caso 2D. Podemos entrenar una red neuronal que prediga el color de cada pixel de una imagen? Es decir, que dado el pixel $(i,j)$ la red neuronal predica su color $\mathbf{c}$. Esta network podría memorizar la imagen, encoding los valores de cada pixel en los pesos de la red neuronal.

image.png

Qué pasa cuando queremos extender esta idea a una escena 3D? Podríamos usar voxels (cubos) en vez de pixeles, y que el network memorize el valor de cada voxel. Si bien esto es teóricamente posible, necesitaríamos voxels muy pequeños para poder reconstruir una escena fotorealista.

En vez de usar voxels, el paper propone usar una red neuronal capaz de aprender una función volumétrica continua. La función mapea cada punto $(x,y,z)$ y dirección de vista $(\theta, \phi)$ con una densidad $\sigma$ del punto, y una radiancia emitida en ese dirección $\mathbf{c} = (r,g,b)$.


Neural Radiance Field Representation

La escena es representada como una función continua de 5 dimensiones. El input es una posición 3D $\mathbf{x} = (x, y, z)$ y una dirección en la que se mira $\mathbf{d} = (\theta, \sigma)$. El output de la función es el color emitido $\mathbf{c} = (r,g,b)$ y la densidad volumetrica $\sigma$.

La función es aproximada por una red neuronal (MLP), $F_\Theta : (\mathbf{x}, \mathbf{d}) \rightarrow (\mathbf{c},\sigma)$, donde los pesos $\Theta$ son optimizados para mapear cada input a su output correspondiente.

En particular, la densidad $\sigma$ solo depende de la posición $x$ , y no de la dirección de la vista $d$. Esto ayuda a que la representación tienda a ser consistente entre multiples vistas; el color de un punto puede variar entre vistas para modelar materiales especulares, pero la densidad es constante entre vistas.

image.png

Las imágenes son sintetizadas haciendo un muestreo de las coordenadas (x, y, z) a lo largo de los rayos de la cámara. Esto muestra el diagrama en la izquierda (a), donde tenemos dos imágenes y en cada una se ha dibujado un rayo y las respectivas muestras tomadas (puntos negros). Para cada punto negro, su posición y dirección del rayo es pasada como input al MLP ($F_\Theta$) para producir un color (RGB) y una densidad volumétrica ($\sigma$). Luego de calcular estos valores para varios puntos del rayo, se usan técnicas de volume rendering (c) para componer el color del pixel. La función de rendering volumetrico es diferenciable. Esto permite optimizar la escena (parametros $\Theta$) minimizando el residuo entre las imágenes sintetizadas y las imágenes originales (ground truth).

image.png

Volume Rendering

El color del pixel es calculado integrando las contribuciones a lo largo del rayo que va hacia la escena. Para un rayo parametrizado como $\mathbf{r}(t)=\mathbf{o} + t \mathbf{d}$, el color $C(r)$ del pixel es calculado usando la siguiente ecuación:

image.png