NeRF:从二维图像到三维重建【初识!原理通俗讲解】

NeRF:从二维图像到三维重建

反渲染(Inverse Rendering)可以理解为成像渲染的反过程,是指从一组二维图像重建三维场景的过程,这在计算机视觉和图形学中具有重要意义。NeRF(Neural Radiance Fields)是一种先进的三维重建神经网络方法,能够从一组二维图像生成高质量的三维场景。本文将详细介绍NeRF的各个方面,包括输入前处理、模型结构、体渲染、反渲染的概念及其应用。


在这里插入图片描述

输入的前处理

为了从二维图像生成用于NeRF模型的粒子,需要进行一系列的前处理步骤:

  1. 光线投射(Ray Casting):将每个像素的光线从相机的视点投射到三维空间中。这些光线通过相机的内参和外参计算得到。

  2. 采样点生成:沿着每条光线均匀地生成采样点。例如,从近平面到远平面之间生成64个均匀分布的采样点。

  3. 输入预处理:每个采样点的三维坐标和视角方向作为NeRF模型的输入。

(如图a所示,黑色的点就是粗均匀采样的点)

在这里插入图片描述


模型结构

NeRF模型由两个类似的全连接神经网络组成:粗模型(Coarse Model)细模型(Fine Model)

粗模型(Coarse Model)

  • 输入:位置编码后的三维点坐标 γ ( x ) \gamma(\mathbf{x}) γ(x)和视角方向 γ ( d ) \gamma(\mathbf{d}) γ(d)
  • 网络结构:包含8层,每层256个单元,激活函数为ReLU。在第4层之后,将中间特征与原始输入拼接(skip connection)。
  • 输出:体积密度(不透明度) σ \sigma σ 和颜色 c ∈ ( R G B ) \mathbf{c} \in (RGB) c(RGB)

细模型(Fine Model)

  • 输入:来自粗模型的重要性采样点,位置编码后的三维点坐标 γ ( x ) \gamma(\mathbf{x}) γ(x) 和视角方向 γ ( d ) \gamma(\mathbf{d}) γ(d)
  • 网络结构:与粗模型相似的多层感知机结构,但处理的是更加细化的采样点。

(粗细模型的结构是一样的,只是尺寸不太一样,粗模型处理的是64个采样点的输入,而细模型处理的是64+128=192个采样点的输入。其中,128是在粗模型中输出为高密度的地方进行二次采样的,也就是说这个地方有东西,多采样,重建效果更好)

在这里插入图片描述

粒子的前期均匀采样与细模型的二次采样
  1. 前期均匀采样

    • 在粗模型中,将光线在场景中的每个视点均匀采样,得到一组样本点。
  2. 细模型的二次采样

    • 根据粗模型的输出,通过重要性采样在光线上进行二次采样,得到更多高密度区域的样本点,然后输入细模型进行更精细的重建。

位置编码(Positional Encoding)

为了捕捉高频信息,NeRF对输入的三维位置和视角方向进行位置编码。位置编码的公式如下:
γ ( p ) = ( sin ⁡ ( 2 0 π p ) , cos ⁡ ( 2 0 π p ) , … , sin ⁡ ( 2 L − 1 π p ) , cos ⁡ ( 2 L − 1 π p ) ) \gamma(p) = (\sin(2^0 \pi p), \cos(2^0 \pi p), \ldots, \sin(2^{L-1} \pi p), \cos(2^{L-1} \pi p)) γ(p)=(sin(20πp),cos(20πp),,sin(2L1πp),cos(2L1πp))
其中, p p p是位置或方向, L L L 是编码的频率数量。

在这里插入图片描述

体渲染(Volume Rendering)

NeRF采用体渲染技术来合成最终图像。对于一条光线,计算其在场景中的颜色和透明度,并对其进行积分:
C ( r ) = ∫ t n t f T ( t ) σ ( r ( t ) ) c ( r ( t ) , d )   d t C(\mathbf{r}) = \int_{t_n}^{t_f} T(t) \sigma(\mathbf{r}(t)) \mathbf{c}(\mathbf{r}(t), \mathbf{d}) \, dt C(r)=tntfT(t)σ(r(t))c(r(t),d)dt
其中,透过率 ( T(t) ) 表示光线从眼睛到深度 ( t ) 位置的光线强度衰减。


损失函数(Loss)

NeRF的训练目标是最小化合成图像与真实图像之间的差异,使用的损失函数是均方误差(MSE):
L = 1 N ∑ i = 1 N ∥ C ^ ( r i ) − C ( r i ) ∥ 2 \mathcal{L} = \frac{1}{N} \sum_{i=1}^{N} \| \hat{C}(\mathbf{r}_i) - C(\mathbf{r}_i) \|^2 L=N1i=1NC^(ri)C(ri)2
其中,( \hat{C}(\mathbf{r}_i) ) 是合成图像,( C(\mathbf{r}_i) ) 是真实图像。


训练与推理

NeRF通过优化神经网络的参数来训练模型,使用随机梯度下降(SGD)或其变种,如Adam优化器。训练过程中,NeRF逐步调整网络参数,使其能够准确拟合输入图像的数据分布。

在推理阶段,NeRF使用训练好的网络参数,对新的视角进行渲染。输入新的三维点和视角方向,通过神经网络计算输出的颜色和密度,经过体渲染技术合成新的视图。


总结

简单介绍了NeRF这个三维重建模型的输入前处理、模型结构、位置编码、体渲染及反渲染技术,NeRF实现了从二维图像到三维重建的过程。其在高质量三维重建和细节捕捉方面的出色表现,使其在学术研究和实际应用中都展示了广阔的前景。

版权声明
本博客内容仅供学习交流,转载请注明出处。

  • 14
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值