MipNeRF:多尺度、抗混叠NeRF

Mip-NeRF: A Multiscale Representation for Anti-Aliasing Neural Radiance Fields

​ ICCV 2021

原始NeRF的问题

在这里插入图片描述

  1. (a, top) 用full-resolution训练的NeRF能够渲染photo-realistic view,但仅仅是渲染与训练图像相同的scale或resolution时;
  2. (a, bottom) 减小图像分辨率(后拉camera并zooming in或相似的操作。smartphone:人往后退,用双指将屏幕中的图像放大)会导致renderings出现严重的锯齿;注:此处应该是指在full-resolution的NeRF模型上渲染低分辨率图像会导致严重的锯齿,而不是指训练数据用低分辨率;
  3. (b) 在multi-resolution images上训练NeRF稍微改善了这个问题,但会导致跨尺度的渲染质量差:全分辨率时模糊,低分辨率时“锯齿”。
  4. c) MipNeRF也是在multi-resolution images上进行训练,但跨尺度渲染的效果不错。

原因:
在这里插入图片描述
NeRF沿着pixel对应的ray提取point-sampled positional encoding features,这些point-sampled features:

  1. 忽略了ray看到的volume的形状和大小(图中的蓝色和黄色截头圆锥。右边的camera更近,其看到的scene volume如蓝色所示,较小的截头圆锥;而左边的camera更远,看到的应该比右边的要大,如黄色部分所示);
  2. 导致两个不同的camera以不同的scale(可理解为与scene距离不相等的两个camera)对相同的位置(如图中红点)进行成像时可能会提取相同的point-sampled feature(按道理feature应该不一样),从而降低NeRF的性能。

NeRF的Ray Tracing存在ambiguity:不同位置camera对相同空间点提取了相同的point-sampled feature,即无辨识度。

而MipNeRF通过Cone Tracing解决这种ambiguity,如下图所示。因为不同位置camera所cast的cone是不一样大小的,所以对空间同一点所产生的feature不一样(如何产生feature见后文IPE),有辨识度。
在这里插入图片描述
从信号处理的角度解决锯齿/混叠问题:一是增加采样频率(增加采样点数量,每个pixel 用多条rays);二是预滤波,用low-pass filter减小所需的Nyquist频率,这样所需的采样点数量减少(本文属于方式二)。

重点components

Cone Tracing

pixel所cast的不是ray,而是cone,可消除NeRF的ambiguity。

IPE-integrated positional encoding

IPE(integrated positional encoding):MipNeRF将cone划分为N段,即N个截头圆锥,如何获取这些截头圆锥的feature呢?一个直接的方法就是用NeRF中所用的积分方式,公式如下:
在这里插入图片描述
其中 F ( ∗ ) F(*) F()表示某个截头圆锥, γ ( X ) \gamma(X) γ(X)就是截头圆锥某点的positional encoding特征(就是NeRF中的PE)。但是 F ( ∗ ) F(*) F()的分布是未知的,所以上式无法计算。本文用多元高斯函数来近似一个截头圆锥,从而能够计算上式。

如何用多元高斯函数近似一个截头圆锥?具体推导见论文及论文附录。

PE与IPE的差异

NeRF的PE公式:
γ ( x ) = [ s i n ( x ) , c o s ( x ) , . . . , s i n ( 2 L − 1 x ) , c o s ( 2 L − 1 x ) ] \Large \gamma(x) = [sin(x), cos(x), ..., sin(2^{L-1}x),cos(2^{L-1}x)] γ(x)=[sin(x),cos(x),...,sin(2L1x),cos(2L1x)]
MipNeRF的IPE公式
在这里插入图片描述
和NeRF中的PE相比,多了一个指数衰减项,且空间位置X变成了 μ γ \mu_{\gamma} μγ,即截头圆锥均值的PE,是一个统计值。
在这里插入图片描述

参考链接-IPE的特点。一个截头圆锥的统计属性(均值、方差)和它所处的位置相关,意味着IPE特征是用截头圆锥的位置计算的,和PE的本质一样,只不过IPE用的是位置的统计属性。上图中蓝色表示高频、红色表示低频。对于高频部分变化较快,有很多细条(右图中的①);低频部分变化较慢(右图中的②),是宽条。IPE对这些频率进行积分,如果截头圆锥比较大,则最终积分结果中高频趋于0;如果截头圆锥比较小,则高低频都有(此时等价于PE)。

训练数据的结构

用源代码中dataset.py文件进行分析。将synthetic data缩放为不同等级,如800x800, 400x400, 200x200, 100x100的大小,总计400张。代码文件dataset.py中的MultiCamera类即是所使用的多尺度训练数据,其有两个比较重要的成员:self.images, self.rays,前者是图片数据,类型是list,大小为400,每个成员是一张图片,图片大小为上面4种情况;
在这里插入图片描述

后者是一个类似于字典的“类”,包括:directions, far等字段,它们均是list类型,长度均为400(与400张图片相对应)。如viewdirs成员变量,其第一个元素是(800,800,3),表示了(x,y)像素处的view direction(3D空间)。疑问:directions和viewdirs有什么不同?
在这里插入图片描述

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值