Campo de radiación neuronal (NeRF)

Dirección original del blog: https://liwen.site/archives/2288

La entrada de NeRF es un vector de cinco dimensiones: la posición del punto espacial (objeto) y ( cámara) dirección de observación. El resultado es la densidad del volumen (puede entenderse como transparencia) y el color del punto espacial del objeto según el ángulo de observación.

Calculando el color y la densidad volumétrica de los puntos espaciales que pasan por cada rayo emitido por la cámara. Luego, según el color obtenido y la densidad de volumen del punto espacial, se realiza la representación de vóxeles (representación de volumen) para obtener el valor de píxel predicho.

Las funciones implementadas por el modelo de red de NeRF (en lo sucesivo denominado modelo NeRF) son en realidad. Se realiza el mapeo desde la posición del punto espacial + ángulo de observación hasta el color del punto espacial + densidad de volumen.

Representación de volumen con campos de radiación

Para cualquier rayo (rayo) emitido por la cámara, podemos usar el modelo NeRF para predecir la ruta correspondiente La transparencia y el color de todos los puntos espaciales .

Aquí suponemos que hay un rayo, y el alcance de este rayo en el espacio es de a. Para cualquier punto, podemos calcular su transparencia y color mediante el modelo NeRF. Para todos los puntos de este rayo, podemos acumular sus valores mediante integración para obtener el valor de píxel proyectado en la imagen.

es la transparencia acumulada del rayo de a , que puede entenderse como la probabilidad de que este rayo no golpee ninguna partícula en el camino de a .

Representación discreta:

Descripción general: en la fase de entrenamiento, ingrese una serie (como 100) imágenes y sus ángulos de cámara de disparo y parámetros internos, escena límite (se puede obtener usando COLMAP). Luego optimice la red NeRF (varias capas de MLP). El NeRF entrenado puede lograr renderizado en cualquier ángulo.

Dos diseños ayudan a mejorar el rendimiento de escenas complejas de alta resolución.

Las redes neuronales tienden a aprender funciones de baja frecuencia [35]. Antes de ingresar a la red, mapear la señal de entrada a un espacio de alta dimensión puede ayudar a la red a adaptarse mejor a los cambios de alta frecuencia. Esta idea se utiliza muchas veces en los artículos de Transformer, es decir, la codificación posicional. El método específico es el siguiente:

Para las tres coordenadas de posición de entrada y ángulos de observación, sus rangos de valores se normalizan a [-1, 1]. Para cada valor numérico, por ejemplo, , se asigna al espacio mediante la función, donde se refiere al número de códigos, para la coordenada de posición, para el ángulo de observación, ;

En comparación con el codificador posicional en Transformer, Transformer lo utiliza principalmente para proporcionar codificación posicional discreta para Token sin el concepto de orden posicional. Nuestra codificación de posición utiliza posiciones espaciales continuas como entrada y se asigna a un espacio continuo de alta dimensión. Esto ayudará a que las cuentas posteriores de la red MLP aprendan información de alta frecuencia.

Comparación de efectos:

Modelo completo V.S. Sin codificación de posición

Muestreo de volumen jerárquico: la velocidad de renderizado es un factor clave. El espacio vacío y el espacio enmascarado no contribuyen a los píxeles renderizados finales y pueden omitirse.

NeRF utiliza dos redes para la optimización: gruesa y fina. Primero, en un rayo, use muestreo estratificado para muestrear puntos, use razonamiento de red aproximado y reescriba la fórmula de representación de vóxeles anterior:

Aquí el peso es la densidad de distribución de probabilidad normalizada (PDF). Luego utilizamos el muestreo de transformación inversa para extraer puntos y colocarlos en la red fina para realizar inferencias. De esta forma, podrás conseguir un total de puntos. Luego use la fórmula de representación de vóxeles anterior para calcular este punto y obtener el valor de píxel final.

En cada iteración de optimización, se selecciona aleatoriamente un conjunto de rayos (rayos) emitidos por la cámara del conjunto de datos, y luego se toman muestras y muestras para entrenar las redes gruesa y fina respectivamente. Según el método de representación de vóxeles, se obtiene el valor de píxel y se compara con la verdad fundamental para calcular la pérdida de MSE. Luego entrene la red neuronal.

En concreto, el tamaño del lote es de 4096 rayos, , . El optimizador es Adam (,,), tasa de aprendizaje, etc. Toda la capacitación requiere entre 100 y 300 mil iteraciones (consulte el documento para obtener más detalles).