Mip-NeRF算法思想。
Paper explanation Mip-NeRF360 and BlockNeRF
一、NeRF 的缺点
所有采样点都是:光心+像素中心的射线确定的,如果给定的图像分辨率比较低,那么每个像素会很大,中心点是不足以代表整个像素的颜色的;这会导致 NeRF 锯齿化太严重的问题(边缘不是直接从白到黑,而是慢慢渐变)。anti-aliasing
二、Mip-NeRF 的主要创新点
正方形写代码不好写,所以把像素作为一个圆形。那么就从采样点变成了介于两个采样圆形之间的锥台(frustums);为了加速计算,内部使用高斯分布进行模拟,作为 \(c_i\) 和 \(\sigma_i\) 的值。
除了锥台这个方法外,还有种 sample per pixel 方法,也就是一个像素取很多的点进行 ray tracing 采样。效果肯定好,但是计算量翻倍太高,而锥台这个方法平衡了效果和计算量。
一个锥台中,所有 3D 点的 positional encoding 的结果,求期望后,作为 MLP 函数的输入。而且这个结果是和物理上的简谐运动相关。
当施加外力后,最后的结果有个衰减项:\(e^{-x}\)。
只在一个尺度下训练,可以同时在最大、最小尺度都取得很好的效果。
三、Mip-NeRF360
没法把 Mip-NeRF 的采样方式直接套用在 360° 上:Mip-NeRF 中物体距离相机的距离是大致一样,所以可以控制采样点的范围,但是 360° 引入了很远的背景,但我们不知道背景的距离,并且也不能把 bound 设为一个很大的值。
创新一:
把超出一定范围的高斯分布(椭圆形表示)进行压缩,保证它们在指定半径内部,虽然形状不同,但仍保有原来的信息,不会影响最后的渲染。
创新二:采样点的取法不同:
原来的 NeRF 进行了两段式采样,并且 MLP 是 8 层,同时得到颜色和密度;而 Mip-NeRF 使用改良的 4 层 MLP 只得到 \(\sigma\) 的分布,加快这个过程。
创新三:让 \(\sigma\) 分布趋近于 uni-model(只有一个高点)这样的分布。
四、Block NeRF
范围太大了,没法用同一个 DNN 进行训练,人为切分成多个 Block,以某个点为圆心的圆。
重叠区域,引入了 visualbility 图,确定该相信哪张图像。
白天-黑夜的训练:引入 NeRF in the wild 的思路,引入了 appearence embeding 向量,控制输出白天 or 黑夜的结果。
位置太大,导致 colmap 估计的位姿不准,导致衔接处有割裂感。除了训练颜色和密度外,还会训练位姿,使其更准确。
这个算法没有提供 Depth 图,可能并不能证明真正学习到了深度,只是单纯的重现了图片。
标签:采样,NeRF360,IV,MLP,Mip,像素,NeRF From: https://www.cnblogs.com/7ytr5/p/18218718