神经辐射场与三维场景重建

NeRF

原理介绍

我们知道神经网络是一个万能的拟合工具,现在给定一个图片,我们可不可以通过图片推导出空间物体的体素呢?答案是可以的,对于这个神经网络,我们叫他神经辐射场,他有像素坐标向量和姿态向量拼接而成作为输入,输出为物体与镜头的距离和颜色,其中我们看到输入为:(x,y,z,θ,φ),后两者为从陀螺仪获取到的偏航角和俯仰角。姿态可以用四元数表示。

我们可以对神经网络输入一大堆姿态和图片数据,这样可以返回出相对的体素。

1

我们可以归纳分析出NeRF的要素:

  • 一个物体有多个数据输入,包括各种姿态的摄像头数据
  • 使用关键点作为输入,输出深度数据和颜色信息
  • 处理后可以输出二维图作为最终输出

结构

2

我们把图片和姿态组合到一起,得到了NeRF的新概念,相机射线。

我们看到中间的函数可以直接使用MLP结构进行前向传播,最后利用值频率的区别用标准的平方损失函数进行计算,然后就可以反向传播了。

最后我们需要进行渲染,我们给出渲染方程:
$$
C(r)=\int^{t_f}_{t_n}T(t)\sigma(r(t))c(r(t),d)dt
$$

其中:

$$
T(t)=exp(-\int^t_{t_n}\sigma(r(s))ds)
$$
3

神经结构如图所示。

运行

开源项目:https://github.com/yenchenlin/nerf-pytorch.git

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
C:\Users\28211\Desktop\nerf-pytorch-master>python run_nerf.py --config configs/lego.txt
Loaded blender (138, 400, 400, 4) torch.Size([40, 4, 4]) [400, 400, 555.5555155968841] ./data/nerf_synthetic/lego
Found ckpts []
Not ndc!
Begin
TRAIN views are [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
96 97 98 99]
TEST views are [113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130
131 132 133 134 135 136 137]
VAL views are [100 101 102 103 104 105 106 107 108 109 110 111 112]
0%| | 0/200000 [00:00<?, ?it/s]C:\Users\28211\AppData\Local\Programs\Python\Python39\lib\site-packages\torch\functional.py:504: UserWarning: torch.meshgrid: in an upcoming release, it will be required to pass the indexing argument. (Triggered internally at C:\actions-runner\_work\pytorch\pytorch\builder\windows\pytorch\aten\src\ATen\native\TensorShape.cpp:3191.)
return _VF.meshgrid(tensors, **kwargs) # type: ignore[attr-defined]
[Config] Center cropping of size 200 x 200 is enabled until iter 500
[TRAIN] Iter: 100 Loss: 0.2236647605895996 PSNR: 9.502138137817383
0%| | 133/200000 [00:36<14:34:51, 3.81it/s]

我的GPU是4060,卡的很,有想法可以租一个按量计费的GPU服务器炼丹。

MirrorNeRF

这种NeRF可以把镜子处理掉,没什么细节


神经辐射场与三维场景重建
https://blog.minloha.cn/posts/200913bea931fe2023080941.html
作者
Minloha
发布于
2023年8月9日
更新于
2024年2月21日
许可协议