IIC3912 - Tópicos Avanzados de Gráfica Computacional

Francisca T. Gil-Ureta ⋅ 2026

image.png


Resumen Parte 1

NeRFs son una representación volumétrica codificada en una red neuronal (MLP). No son mallas 3-dimensionales, ni son voxels. En un modelo NeRF, cada punto del espacio tiene una densidad y un color. La densidad describe que tan transparente u opaco es el punto, y el color del punto depende del punto de vista desde donde se mire.

image.png

En la clase pasada vimos que las imágenes son sintetizadas haciendo un muestreo de las coordenadas (x, y, z) a lo largo de los rayos de la cámara. Cada punto muestreado se pasa por la red neuronal para obtener su densidad y color RGB correspondiente. Luego, usando técnicas de renderizado de volumen, se combinan los colores y densidades de cada muestra para obtener el valor del pixel. Finalmente, las imágenes renderizadas se comparan con la imagen original para obtener los residuales. Dado que el rendering es diferenciable, podemos optimizar la escena (parametros $\Theta$) minimizando el residuo entre las imágenes sintetizadas y las imágenes originales.

image.png

Pipeline de Optimización

Muestreo jerárquico del volumen

Para obtener un buen rendering, debemos muestrear muchos puntos a lo largo de cada rayo. Pero esto es muy ineficiente! Las regiones del espacio que están vacías u ocluidas — que no contribuyen al rendering final — son evaluadas en cada iteración de la optimización.

Para mejorar el rendimiento del proceso de rendering, lo ideal es seleccionar las muestras proporcionalmente a su efecto esperado en el render final. Pero cómo podemos saber donde se ubican las muestras que afectan más el resultado?

💡En vez de usar una sola red neuronal, se utilizan dos simultaneamente. Una de baja resolución (coarse) y una de alta resolución (fine).

image.png

Muestreo Estratificado: Primero se obtienen $N_c$ **posiciones usando muestreo estratificado: el rango $[t_n, t_f]$ se divide en $N_c$ bins de igual tamaño, y luego se selecciona una muestra aleatoria uniforme de cada bin. Luego se evalúan estas posiciones con el network de baja resolución y a partir del output coarse se genera un muestreo más informado: se agregan más muestras en las zonas donde el output del network coarse indicó mayor densidad.

Muestreo PDF: Para obtener más muestras en las zonas de alta densidad, vamos a reescribir nuestra función $C(r)$ como una suma ponderada de los colores $c_i$

$\displaystyle \hat{C}c(r) = \sum{i=1}^{N_c} w_i c_i$, donde $w_i = T_i(1 - \exp(-\sigma_i \delta_i))$

Los pesos van a ser normalizados a $\hat{w}i = w_i / \sum{j=1}^{N_c} w_j$, y los vamos a usar para definir una función de densidad de probabilidad (PDF) escalonada (piecewise-constant): cada bin tiene una probabilidad constante, $\hat{w}_i$. Se eligen $N_f$ muestras aleatorias de esta distribución usando inverse transpose sampling.

<aside> 🍎

Inverse Transpose Sampling: primero calculamos la suma acumulada de $\hat{w_i}$ , la cual va de 0 a 1; luego tomamos números al asar $u$ entre 0 y 1 usando una distribución uniforme estándar; finalmente buscamos el valor $u$ en el eje vertical de nuestro grafico de accumulated-sum, y vemos a que distancia corresponde en el eje horizontal.

Mira el gráfico de ejemplo, podemos ver que los bins con $w_i$ más altos tienen escalones más altos, por lo que tienen más probabilidad de ser elegidos.

</aside>

image.png

Although we use a discrete set of samples to estimate the integral, [this] sampling enables us to represent a continuous scene representation because it results in the MLP being evaluated at continuous positions over the course of optimization.