Loading [MathJax]/jax/output/CommonHTML/jax.js

IV. Mip-NeRF

Mip-NeRF算法思想。

Paper explanation Mip-NeRF360 and BlockNeRF

一、NeRF 的缺点

所有采样点都是:光心+像素中心的射线确定的,如果给定的图像分辨率比较低,那么每个像素会很大,中心点是不足以代表整个像素的颜色的;这会导致 NeRF 锯齿化太严重的问题(边缘不是直接从白到黑,而是慢慢渐变)。anti-aliasing

二、Mip-NeRF 的主要创新点

正方形写代码不好写,所以把像素作为一个圆形。那么就从采样点变成了介于两个采样圆形之间的锥台(frustums);为了加速计算,内部使用高斯分布进行模拟,作为 ciσi 的值。
5f0c4c36dab7730f81cce910979ff544.png

除了锥台这个方法外,还有种 sample per pixel 方法,也就是一个像素取很多的点进行 ray tracing 采样。效果肯定好,但是计算量翻倍太高,而锥台这个方法平衡了效果和计算量。

一个锥台中,所有 3D 点的 positional encoding 的结果,求期望后,作为 MLP 函数的输入。而且这个结果是和物理上的简谐运动相关。
b96b156a031831145b54e5752856ea66.png
当施加外力后,最后的结果有个衰减项:ex

只在一个尺度下训练,可以同时在最大、最小尺度都取得很好的效果。

三、Mip-NeRF360

Mip-NeRF360

没法把 Mip-NeRF 的采样方式直接套用在 360° 上:Mip-NeRF 中物体距离相机的距离是大致一样,所以可以控制采样点的范围,但是 360° 引入了很远的背景,但我们不知道背景的距离,并且也不能把 bound 设为一个很大的值。

创新一:
8be4527d09e64d3a1c1a93dac811d8e0.png
把超出一定范围的高斯分布(椭圆形表示)进行压缩,保证它们在指定半径内部,虽然形状不同,但仍保有原来的信息,不会影响最后的渲染。

创新二:采样点的取法不同:
20535caca2a5b1c226298d0df4f48dd7.png
原来的 NeRF 进行了两段式采样,并且 MLP 是 8 层,同时得到颜色和密度;而 Mip-NeRF 使用改良的 4 层 MLP 只得到 σ 的分布,加快这个过程。

创新三:让 σ 分布趋近于 uni-model(只有一个高点)这样的分布。
b651c1422822b0ca2fefd56df418440f.png

四、Block NeRF

范围太大了,没法用同一个 DNN 进行训练,人为切分成多个 Block,以某个点为圆心的圆。
8eeefdf1770f31f99f956bb89c44be23.png

重叠区域,引入了 visualbility 图,确定该相信哪张图像。

白天-黑夜的训练:引入 NeRF in the wild 的思路,引入了 appearence embeding 向量,控制输出白天 or 黑夜的结果。

位置太大,导致 colmap 估计的位姿不准,导致衔接处有割裂感。除了训练颜色和密度外,还会训练位姿,使其更准确。

这个算法没有提供 Depth 图,可能并不能证明真正学习到了深度,只是单纯的重现了图片。

posted @   7hu95b  阅读(127)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示