NeRF 其二:Mip-NeRF

NeRF 其二:Mip-NeRF

  • 1. 混叠
    • 图像中的混叠现象
  • 2. 如何抗混叠
  • 3. NeRF 中的解决方案
  • 4. 圆锥台近似计算与集成位置编码
    • 4.1 圆锥台采样
    • 4.2 三维高斯逼近圆锥台
    • 4.3 集成位置编码
  • 5. Mip-NeRF 与 NeRF 的比较
    • 5.1 位置编码与集成位置编码
    • 5.2 采样差异
    • 5.3 网络数量

Reference:

  1. 深蓝学院:NeRF基础与常见算法解析

系列文章:

  1. NeRF 其一:NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis
  2. NeRF 其二:Mip-NeRF

相比于 NeRF,Mip-NeRF 主要是在视觉上的改进。混叠会造成视觉质量的下降,将抗混叠应用到 NeRF 里,就生成了 Mip-NeRF。至于什么是混叠,让我们接着看看。

1. 混叠

介绍混叠之前,要介绍一个词:采样,因为混叠是伴随着采样而产生的。

  • 奈奎斯特准则:假设信号的最大频率为 B B B,信号的采样频率为 f s f_s fs,则奈奎斯特率(Nyquist rate) 2 B 2B 2B,奈奎斯特准则是 f s > 2 B f_s>2B fs>2B 时原始信号采样后不会丢失信息。
  • 混叠:当采样频率设置不合理时,即采样频率 f s f_s fs 低于 2 2 2 倍的信号频率( f s < 2 B f_s<2B fs<2B),会导致原本的高频信号被采样成低频信号。这种频谱的重叠导致的失真称为混叠,也就是高频信号被混叠成了低频信号

在这里插入图片描述在图中以 Δ t \Delta _t Δt 的时间间隔去采样,可以得到蓝色点。很显然蓝色信号的频率只有红色信号频率的 1 / 9 1/9 1/9,本身的红色信号是一个高频信号,被采样成了一个低频信号。这样就会导致混叠:
在这里插入图片描述图中的 f m a x f_{max} fmax 为现在采样频率的 1 / 2 1/2 1/2,即 f s 2 \frac{f_s}{2} 2fs

  • 当原始信号频率< f s 2 \frac{f_s}{2} 2fs时,即 f s > 2 B f_s > 2B fs>2B,没有问题;
  • 当原始信号频率> f s 2 \frac{f_s}{2} 2fs时,会导致将高出来的频率部分高频信号采样成低频,原始的低频很好的保留了,而高频这部分采样成了低频,和原始的低频信号有了混合,这就是混叠

只有在采样的问题下(采样频率不合适的情况下)才会产生混叠的概念。

图像中的混叠现象

  1. 锯齿
    在这里插入图片描述 本来图中很细腻的图像,比如将 320 × 240 320\times 240 320×240 采样成 9 × 6 9\times 6 9×6 的图像。在采样率不够的时候就会产生一个个的锯齿。

  2. 摩尔纹
    在这里插入图片描述 在左图采样率好的时候,墙面采样的很好没有产生多的东西,而当采样率设置不正确的时候,就会产生摩尔纹。原始信号是不会长这样的,这是与低频信号混叠后导致的。

2. 如何抗混叠

抗混叠有以下两种方式:

  1. 增加采样频率:提高采样频率可以使信号频率 B B B 不会超过采样频率 f s f_s fs 的一半,从而避免混叠的发
    生。
  2. 使用低通滤波器:将信号通过低通滤波器,可以去除信号中高于采样频率一半的频率分量,从
    而避免混叠。

首先从第一种情况说起:如果采样率已经定下来了,比如上一节锯齿的图像,就想使用 9 × 6 9\times6 9×6 的图像,这时候可以考虑在左图中每个框内都多采一些点,然后合并到右图,就可以让右图每个点的均值平滑一点,而不会像现在右图所示这样生硬。这种方式的缺点在于格子中那么多点得到的一个平均,效率就很低下。这就引出了第二种方法。

使用低通滤波器可以直接将超过的频率剔除掉后再采样,就不会有摩尔纹、锯齿这样的情况了。

大图像没有经过一些技术处理的采样采样,就会得到下面这样的结果。近处还好,远处出现了很明显的摩尔纹:
在这里插入图片描述造成摩尔纹的原因是采样频率过低,既然采样频率不好控制,那么解决方案为:在采样之前,使用低通滤波器去除高于采样频率一半的频率分量。

去除噪声可以用到低通滤波器。噪声点和邻居长得不太像,它属于高频信息,当然除了噪声点外,图像边缘也是高频信息。

在这里插入图片描述在使用低通滤波器后再进行采样,图像就正常了:
在这里插入图片描述但在这里又有一个问题是,假设我们有一个物体,在相机从近往远的过程中,这个杯子所有的像素在这个相机的成像图像上所占像素会越来越小,也就意味着从高分辨率一点点往低分辨率采。如果每采一次,都需要对图像做一次低通滤波,然后再去采样,这样效率就会很差。这个系统的性能就会非常的弱。为了解决这个问题,就引入了一个新的概念,叫做 MipMap

在这里插入图片描述MipMap 的做法是,先将一张大图生成一系列的小图像。在原来方法内每移动一次距离都需要 平滑+采样,这样太慢。MipMap 会将几个尺度的 平滑+采样 的图先存下来,将来相机拉到某一尺度时,就会从一个分辨率接近的图再去做处理,因为分辨率接近,这时候就不需要再做低通滤波了,也就不会再出现混叠的问题。

3. NeRF 中的解决方案

下图展示了原始 NeRF 模型,在摄像机往远离物体的方向移动时,渲染结果存在混叠。每张图下的小数代表 SSIM,是与真值间的距离,值越大,表示模型生成的越好。
在这里插入图片描述为了将下面一行的图像看清,将小图放大到和上面大图一样,实际只有前面的 1 / 8 1/8 1/8

  • 第一列为相近视角下生成的模型,可以看到全分辨率的图像 SSIM 值挺高,而降低分辨率后产生了鬼影,导致了视觉质量下降的相当明显;
  • 第二列将近距离视角和远距离视角混在一起训练来生成模型。这样对远处的 SSIM 确实有提升,但是原来近距离的质量出现出现了下降,这并不是所希望的。

为什么会出现这种现象呢?
因为同一个像素在不同距离上看,颜色是不一样的。下图内黄色为一个像素,当物体比较近的时候,像素是由近处时的物体投影过去的;当物体距离相机比较远时,需要把图像后面把物体更大一块映射到这个像素上(它包含了更多的内容)。假设前面一个映射到像素上的颜色为 C C C;后面一个像素映射为 C ′ C' C,很明显 C C C C ′ C' C 的颜色不一样。

在这里插入图片描述
而如果在传统 NeRF 的情况下,因为视线 d d d 上同一位置的体密度和颜色值是一样的,所以训练出来的 C C C C ′ C' C 的颜色应该是一样的。而真实情况下,这两个像素的颜色是不一样的。
在这里插入图片描述使用不同距离一起训练 NeRF,会使网络学出来一个中间值,它既不趋近 C C C,也不趋近 C ′ C' C

那么前面我们在抗混叠的方式中提到了 增加采样频率的方法------超采样。做法是一个像素点多采样几个光线,将每个像素的体渲染和颜色的结果做一个加权平均,来得到当前像素点结果。但是需要知道的是,辐射场上一条光线的速度已经很慢了,一个像素要是计算多条光线那计算量是不能接受的,所以超采样这条路走不通。

在这里插入图片描述现在考虑另一种抗混叠方案:使用低通滤波器,即 使用圆锥体取代光线:NeRF 一条射线对应 Mip-NeRF 一个圆锥体,NeRF 一个采样点对应 Mip-NeRF 一个圆锥截台

这种方法与超采样的打很多条光线相近,思路为 ①:将圆台内的每一个点都送入神经网络,并由 γ ( x 1 ) \gamma(x_1) γ(x1) γ ( x 2 ) \gamma(x_2) γ(x2) γ ( x n ) \gamma(x_n) γ(xn) 得到 σ 1 c 1 \sigma_1c_1 σ1c1 σ 2 c 2 \sigma_2c_2 σ2c2 σ n c n \sigma_nc_n σncn,最后求一个加权平均,得到 σ ˉ \bar{\sigma} σˉ c ˉ \bar{c} cˉ。它相比原来的好处是考虑了邻域信息的的加权求和,相比 NeRF 方法会更加平滑。但因为每一个点都得走一次神经网络,这里的算力并没有减小。
在这里插入图片描述

于是就有了这种方法的进阶版 ②:既然会对神经网络的结果做一个加权平均,那么现在直接对多个 γ ( x ) \gamma(x) γ(x) 做一次平均,把这个值输入到神经网络 F ( θ ) F(\theta) F(θ) 内,最终得到的值应该也是逼近 σ ˉ \bar{\sigma} σˉ c ˉ \bar{c} cˉ 的。

这种成像过程相比 NeRF 更为真实。

4. 圆锥台近似计算与集成位置编码

4.1 圆锥台采样

在这里插入图片描述
在上一节末我们想实现的方法为:对圆锥台范围内的 γ ( x ) \gamma(x) γ(x) 求加权平均,即求取圆锥台里面每个位置编码的期望值,那么就需要搞清楚,哪些点是属于当前圆台的:

x \boldsymbol{x} x 位于由相机位置 o \boldsymbol{o} o、视线方向 d \boldsymbol{d} d、圆台半径 r ˙ \dot{r} r˙、以及圆台深度区间 [ t 0 , t 1 ] [t_0, t_1] [t0,t1] 定义的圆台中,定义 F ( x , ⋅ ) = 1 F(\boldsymbol{x},\cdot)=1 F(x,)=1
F ( x , o , d , r ˙ , t 0 , t 1 ) = 1 { ( t 0 < d T ( x − o ) ∥ d ∥ 2 < t 1 ) ∧ ( d T ( x − o ) ∥ d ∥ 2 ∥ x − o ∥ 2 > 1 1 + ( r ˙ / ∥ d ∥ 2 ) 2 ) } {F\left(\boldsymbol{x}, \boldsymbol{o}, \boldsymbol{d}, \dot{r}, t_{0}, t_{1}\right)=1\left\{\left(t_{0}<\frac{\boldsymbol{d}^{T}(\boldsymbol{x}-\boldsymbol{o})}{\|\boldsymbol{d}\|_{2}}<t_{1}\right) \wedge\left(\frac{\boldsymbol{d}^{T}(\boldsymbol{x}-\boldsymbol{o})}{\|\boldsymbol{d}\|_{2}\|\boldsymbol{x}-\boldsymbol{o}\|_{2}}>\frac{1}{\sqrt{1+\left(\dot{r} /\|\boldsymbol{d}\|_{2}\right)^{2}}}\right)\right\}} F(x,o,d,r˙,t0,t1)=1 (t0<d2dT(xo)<t1) d2xo2dT(xo)>1+(r˙/∥d2)2 1 该公式的意思是,如果满足条件 ①: t 0 < d T ( x − o ) ∥ d ∥ 2 < t 1 t_{0}<\frac{\boldsymbol{d}^{T}(\boldsymbol{x}-\boldsymbol{o})}{\|\boldsymbol{d}\|_{2}}<t_{1} t0<d2dT(xo)<t1 以及 ②: d T ( x − o ) ∥ d ∥ 2 ∥ x − o ∥ 2 > 1 1 + ( r ˙ / ∥ d ∥ 2 ) 2 \frac{\boldsymbol{d}^{T}(\boldsymbol{x}-\boldsymbol{o})}{\|\boldsymbol{d}\|_{2}\|\boldsymbol{x}-\boldsymbol{o}\|_{2}}>\frac{1}{\sqrt{1+\left(\dot{r} /\|\boldsymbol{d}\|_{2}\right)^{2}}} d2xo2dT(xo)>1+(r˙/∥d2)2 1,则该公式 = 1 =1 =1

  • t 0 < d T ( x − o ) ∥ d ∥ 2 < t 1 t_{0}<\frac{\boldsymbol{d}^{T}(\boldsymbol{x}-\boldsymbol{o})}{\|\boldsymbol{d}\|_{2}}<t_{1} t0<d2dT(xo)<t1:上面很明显为内积公式,即 a ⋅ b = a T b = ∣ a ∣ ∣ b ∣ cos ⁡ ⟨ a , b ⟩ \boldsymbol{a}\cdot\boldsymbol{b}=\boldsymbol{a}^T\boldsymbol{b}=|\boldsymbol{a}||\boldsymbol{b}|\cos\langle\boldsymbol{a},\boldsymbol{b}\rangle ab=aTb=a∣∣bcosa,b,整个公式的意思就是一个模长为 x − o \boldsymbol{x}-\boldsymbol{o} xo d \boldsymbol{d} d 方向向量映射到 x − o \boldsymbol{x}-\boldsymbol{o} xo 方向的长度,表示 x \boldsymbol{x} x 位于下图 t 0 t_0 t0 t 1 t_1 t1 两个圆所在的这个区间之间;

  • d T ( x − o ) ∥ d ∥ 2 ∥ x − o ∥ 2 > 1 1 + ( r ˙ / ∥ d ∥ 2 ) 2 \frac{\boldsymbol{d}^{T}(\boldsymbol{x}-\boldsymbol{o})}{\|\boldsymbol{d}\|_{2}\|\boldsymbol{x}-\boldsymbol{o}\|_{2}}>\frac{1}{\sqrt{1+\left(\dot{r} /\|\boldsymbol{d}\|_{2}\right)^{2}}} d2xo2dT(xo)>1+(r˙/∥d2)2 1:左边和公式 ① 近似,这里多除了一个 ∥ x − o ∥ 2 \|\boldsymbol{x}-\boldsymbol{o}\|_{2} xo2,表示这里计算的是教教的余弦值。右式可从下图中得到:
    在这里插入图片描述 cos ⁡ θ = ∥ d ∥ 2 d 2 + ( r ˙ ) 2 = 1 1 + ( r ˙ / ∥ d ∥ 2 ) 2 \cos\theta=\frac{\|\boldsymbol{d}\|_{2}}{\sqrt{\boldsymbol{d}^2+\left(\dot{r} \right)^{2}}}=\frac{1}{\sqrt{1+\left(\dot{r} /\|\boldsymbol{d}\|_{2}\right)^{2}}} cosθ=d2+(r˙)2 d2=1+(r˙/∥d2)2 1

    又因为 cos ⁡ \cos cos 越大角度越小,所以这里得到的是两夹角的范围。

综上,整个公式的就将三维点区间限制在了圆台内。
圆锥台位置编码的期望可以定义为:
γ ∗ ( o , d , r ˙ , t 0 , t 1 ) = ∫ γ ( x ) F ( x , o , d , r ˙ , t 0 , t 1 ) d x ∫ F ( x , o , d , r ˙ , t 0 , t 1 ) d x {\gamma^{*}\left(\boldsymbol{o}, \boldsymbol{d}, \dot{r}, t_{0}, t_{1}\right)=\frac{\int \gamma(\boldsymbol{x}) F\left(\boldsymbol{x}, \boldsymbol{o}, \boldsymbol{d}, \dot{\boldsymbol{r}}, t_{0}, t_{1}\right) d x}{\int F\left(\boldsymbol{x}, \boldsymbol{o}, \boldsymbol{d}, \dot{r}, t_{0}, t_{1}\right) d x}} γ(o,d,r˙,t0,t1)=F(x,o,d,r˙,t0,t1)dxγ(x)F(x,o,d,r˙,t0,t1)dx可知这里的 γ ∗ = E ( γ ( x ) ) \gamma^*=E(\gamma(\boldsymbol{x})) γ=E(γ(x)),分子为圆台内位置编码的和,分母为圆台内总个数。因为这里是对圆台内所有位置的积分,所以这个位置编码又称为 集成位置编码

那么问题又来了,上面这个公式的计算是非常不容易的,所以需要对它做近似。

4.2 三维高斯逼近圆锥台

因为圆台不好算,所以用一个三维高斯球逼近圆台,让这个三维高斯球里包含的 x \boldsymbol{x} x 个数尽量和圆台内的重叠。这样做是因为使用高斯来计算 γ ( x ) \gamma(\boldsymbol{x}) γ(x) 的期望值是很容易的。(这里应该就不是平均,而是加权平均了吧,即中心点的权重会更高)
在这里插入图片描述定义 μ t \mu_t μt 表示对应圆锥截台到相机的平均距离, σ t 2 \sigma_t^2 σt2 为沿光线方向的距离方差, σ r 2 \sigma_r^2 σr2 为垂直于光线方向的距离方差:
μ t = t μ + 2 t μ t δ 2 3 t μ 2 + t δ 2 σ t 2 = t δ 2 3 − 4 t δ 4 ( 12 t μ 2 − t δ 2 ) 15 ( 3 t μ 2 + t δ 2 ) 2 σ r 2 = r ˙ 2 ( t μ 2 4 + 5 t δ 2 12 − 4 t δ 4 15 ( 3 t μ 2 + t δ 2 ) ) {\mu_{t}=t_{\mu}+\frac{2 t_{\mu} t_{\delta}^{2}}{3 t_{\mu}^{2}+t_{\delta}^{2}} \quad \sigma_{t}^{2}=\frac{t_{\delta}^{2}}{3}-\frac{4 t_{\delta}^{4}\left(12 t_{\mu}^{2}-t_{\delta}^{2}\right)}{15\left(3 t_{\mu}^{2}+t_{\delta}^{2}\right)^{2}} \quad \sigma_{r}^{2}=\dot{r}^{2}\left(\frac{t_{\mu}^{2}}{4}+\frac{5 t_{\delta}^{2}}{12}-\frac{4 t_{\delta}^{4}}{15\left(3 t_{\mu}^{2}+t_{\delta}^{2}\right)}\right)} μt=tμ+3tμ2+tδ22tμtδ2σt2=3tδ215(3tμ2+tδ2)24tδ4(12tμ2tδ2)σr2=r˙2(4tμ2+125tδ215(3tμ2+tδ2)4tδ4)其中, t μ = ( t 0 + t 1 ) / 2 t_\mu=(t_0+t_1)/2 tμ=(t0+t1)/2 t δ = ( t 1 1 − t 0 ) / 2 t_\delta=(t1_1-t_0)/2 tδ=(t11t0)/2 r ˙ \dot{r} r˙ 设置为 1 / 3 1/\sqrt{3} 1/3 倍的像素大小。详细推导请浏览原论文。
在这里插入图片描述从图中可以看出, μ t \mu_t μt σ t 2 \sigma_t^2 σt2 σ r 2 \sigma_r^2 σr2 三个值确定了,高斯球也就确定下来了。

那么为什么要将 r ˙ \dot{r} r˙,即圆台半径设置为 1 / 3 1/\sqrt{3} 1/3 倍的像素大小(单位像素面积)呢?
Ans:圆的面积为 π r 2 = 1 → r = 1 π ≈ 1 / 3 \pi r^2=1\rightarrow r=\frac{1}{\sqrt{\pi}}\approx1/\sqrt{3} πr2=1r=π 11/3

还要将圆台从圆台坐标转换到世界坐标系:
μ = o + μ t d , Σ = σ t 2 ( d d T ) + σ r 2 ( I − d d T ∥ d ∥ 2 2 ) \boldsymbol{\mu} = \boldsymbol{o} + \mu_t\boldsymbol{d},\quad \Sigma=\sigma_t^2(\boldsymbol{d}\boldsymbol{d}^T)+\sigma_r^2(\boldsymbol{I}-\frac{\boldsymbol{d}\boldsymbol{d}^T}{\|\boldsymbol{d}\|_2^2}) μ=o+μtd,Σ=σt2(ddT)+σr2(Id22ddT)其中, o \boldsymbol{o} o 表示相机位置, d \boldsymbol{d} d 表示观察方向。

这里得到的 μ \boldsymbol{\mu} μ 就是 E ( X ) E(X) E(X),但是我们要求的是 E ( γ ( X ) ) E(\gamma(X)) E(γ(X)),所以接下来继续介绍集成位置编码的概念。

4.3 集成位置编码

在上一章内提到的 NeRF 的位置编码 如下:
γ ( q ) = ( sin ⁡ ( 2 0 π q ) , cos ⁡ ( 2 0 π q ) , ⋯   , sin ⁡ ( 2 L − 1 π q ) , cos ⁡ ( 2 L − 1 π q ) ) \gamma(q)=\left(\sin \left(2^0 \pi q\right), \cos \left(2^0 \pi q\right), \cdots, \sin \left(2^{L-1} \pi q\right), \cos \left(2^{L-1} \pi q\right)\right) γ(q)=(sin(20πq),cos(20πq),,sin(2L1πq),cos(2L1πq))该公式在计算上还是比较麻烦,所以想采用一种更简洁的形式表示。
将位置编码写为矩阵的形式
P = [ 1 0 0 2 0 0 2 L − 1 0 0 0 1 0 0 2 0 ⋯ 0 2 L − 1 0 0 0 1 0 0 2 0 0 2 L − 1 ] T , γ ( x ) = [ sin ⁡ ( P x ) cos ⁡ ( P x ) ] \mathbf{P}=\begin{bmatrix}1&0&0&2&0&0&&2^{L-1}&0&0\\0&1&0&0&2&0&\cdots&0&2^{L-1}&0\\0&0&1&0&0&2&&0&0&2^{L-1}\end{bmatrix}^\mathrm{T}, \gamma(x)=\begin{bmatrix}\sin(Px)\\\cos(Px)\end{bmatrix} P= 1000100012000200022L10002L10002L1 T,γ(x)=[sin(Px)cos(Px)] P P P 的维度为 3 L × 3 3L\times3 3L×3 x \boldsymbol{x} x 的维度为 3 × 1 3\times1 3×1,最终 P x P\boldsymbol{x} Px 的维度 3 L × 1 3L\times1 3L×1,与原 NeRF 保持一致。

与原位置编码的差异如下:

  1. 常数 π \pi π 被干掉了,前面只是从周期的角度理解,加上 π \pi π 更自然,但一个固定量对性能的影响并不大;
  2. 原 NeRF 是以 sin ⁡ \sin sin cos ⁡ \cos cos sin ⁡ \sin sin cos ⁡ . . . \cos... cos... 的排列方式。现在将 sin ⁡ \sin sin 放在一起,然后将 cos ⁡ \cos cos 放在一起,这种形式更简单。

已知:
E ( γ ( x ) ) = [ E ( sin ⁡ ( P x ) ) E ( cos ⁡ ( P x ) ) ] = [ E ( sin ⁡ ( p 1 ) ) E ( sin ⁡ ( p 2 ) ) ⋮ E ( cos ⁡ ( p n ) ) ] E(\gamma(x))=\begin{bmatrix}E(\sin(Px))\\E(\cos(Px))\end{bmatrix}=\begin{bmatrix}E(\sin(p_1))\\E(\sin(p_2))\\ \vdots \\E(\cos(p_n))\end{bmatrix} E(γ(x))=[E(sin(Px))E(cos(Px))]= E(sin(p1))E(sin(p2))E(cos(pn)) p p p 服从高斯分布时,计算 sin ⁡ ( p ) \sin (p) sin(p) cos ⁡ ( p ) \cos (p) cos(p) 的期望:
E p ∼ N ( μ , σ 2 ) [ s i n ( p ) ] = s i n ( μ ) e x p ( − ( 1 2 ) σ 2 ) E p ∼ N ( μ , σ 2 ) [ c o s ( p ) ] = c o s ( μ ) e x p ( − ( 1 2 ) σ 2 ) \begin{aligned}E_{p\sim\mathcal{N}(\mu,\sigma^2)}[sin(p)]&=sin(\mu)exp(-(\frac12)\sigma^2)\\E_{p\sim\mathcal{N}(\mu,\sigma^2)}[cos(p)]&=cos(\mu)exp(-(\frac12)\sigma^2)\end{aligned} EpN(μ,σ2)[sin(p)]EpN(μ,σ2)[cos(p)]=sin(μ)exp((21)σ2)=cos(μ)exp((21)σ2)这样就知道了每一项的计算方式,但这时还没有考虑 P P P 带来的影响。
将高斯分布映射到经过位置编码后的空间:
μ γ = P μ , Σ γ = P Σ P T (对角矩阵) \boldsymbol{\mu_\gamma}=\mathbf{P}\boldsymbol{\mu}, \quad \Sigma_\gamma=\mathbf{P}\Sigma\mathbf{P}^T \text{(对角矩阵)} μγ=Pμ,Σγ=PΣPT(对角矩阵)那么集成位置编码 γ ( μ , Σ ) \gamma(\boldsymbol{\mu},\Sigma) γ(μ,Σ) 的期望计算公式如下,其中 ∘ \circ 表示逐元素相乘 d i a g diag diag 表示取对角线元素
γ ( μ , Σ ) = E x ∼ N ( μ γ , Σ γ ) [ γ ( x ) ] = [ sin ⁡ ( μ γ ) ∘ exp ⁡ ( − ( 1 2 ) d i a g ( Σ γ ) ) cos ⁡ ( μ γ ) ∘ exp ⁡ ( − ( 1 2 ) d i a g ( Σ γ ) ) ] \gamma(\mu,\Sigma)=E_{x\sim\mathcal{N}(\mu_{\gamma},\Sigma_{\gamma})}[\gamma(x)]=\begin{bmatrix}\sin(\boldsymbol{\mu}_{\gamma})\circ\exp(-(\frac{1}{2})diag(\Sigma_{\gamma}))\\\\\cos(\boldsymbol{\mu}_{\gamma})\circ\exp(-(\frac{1}{2})diag(\Sigma_{\gamma}))\end{bmatrix} γ(μ,Σ)=ExN(μγ,Σγ)[γ(x)]= sin(μγ)exp((21)diag(Σγ))cos(μγ)exp((21)diag(Σγ)) 集成位置编码 γ ( x ) \boldsymbol{\gamma(x)} γ(x) 的方差计算公式:
d i a g ( Σ γ ) = [ d i a g ( Σ ) , 4 d i a g ( Σ ) , … , 4 L − 1 d i a g ( Σ ) ] T d i a g ( Σ ) = σ t 2 ( d ∘ d ) + σ r 2 ( 1 − d ∘ d ∥ d ∥ 2 2 ) \begin{aligned}diag(\Sigma_\gamma)&=[diag(\Sigma),4diag(\Sigma),\ldots,4^{L-1}diag(\Sigma)]^T\\diag(\Sigma)&=\sigma_t^2(\boldsymbol{d}\circ \boldsymbol{d})+\sigma_r^2(\boldsymbol{1}-\frac{\boldsymbol{d}\circ \boldsymbol{d}}{\|\boldsymbol{d}\|_2^2})\end{aligned} diag(Σγ)diag(Σ)=[diag(Σ),4diag(Σ),,4L1diag(Σ)]T=σt2(dd)+σr2(1d22dd)

5. Mip-NeRF 与 NeRF 的比较

5.1 位置编码与集成位置编码

  • NeRF:位置编码,从图中可以看到,高频位置总是有值,所以会产生混叠;
  • Mip-NeRF:集成位置编码,理论上越往前的圆锥台越小,就越有可能近似到一个点上(当然遇到空气等另说)。越小的时候,积分区域就越小,表明累加得圆锥台越小,就越容易落到一个点上,高频区域就会有信号值;距离远的时候,平均的数量就变多了,本来差别很大的,就给拉平了,导致更不容易学到高频信息,越高频越没有值-----这样就可以自适应的调节了。
    在这里插入图片描述

5.2 采样差异

  • NeRF:以传统方式看一个点,图中都是一个个小圆点,远处和近处看到的都是一样的;
  • Mip-NeRF:看到的圆锥台大小都不一样,说明近处看远处看这个点的内容是不一样的。
    在这里插入图片描述

5.3 网络数量

  • NeRF:使用了两套网络,先取粗再取细。一个网络关注粗粒度,另一个关注细粒度。这两个网络如果放在一起,就粗不粗细不细;
  • Mip-NeRF:因为使用了圆锥台的概念,所有的区域位置信息都会被利用上,所以就没有必要再用两套网络。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/318644.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

力扣2182.构造限制重复的字符串

思路&#xff1a;先记录每个字符的出现次数&#xff0c;构建一个新字符串&#xff0c;从尾取字符&#xff0c;每取一个该字符个数-1&#xff0c;若该字符已经取到有repeatLimit个&#xff0c;则递归取次大的字符&#xff0c;并对应字符个数-1&#xff0c;若没有次大字符了&…

漏洞复现-nginxWebUI runCmd前台远程命令执行漏洞(附漏洞检测脚本)

免责声明 文章中涉及的漏洞均已修复&#xff0c;敏感信息均已做打码处理&#xff0c;文章仅做经验分享用途&#xff0c;切勿当真&#xff0c;未授权的攻击属于非法行为&#xff01;文章中敏感信息均已做多层打马处理。传播、利用本文章所提供的信息而造成的任何直接或者间接的…

TDA4VM,SBL启动

文章目录 参考make BOARD=j721e_evm CORE=mcu1_0 BUILD_PROFILE=release pdk_libs -sj参考:https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1201734/tda4vm-error-while-loading-shared-libraries-libtinfo-so-5-for-building-sdl-in-sdk-0805

【Flutter 开发实战】Dart 基础篇:List 详解

嗨&#xff0c;各位朋友们&#xff0c;欢迎来到这篇博客&#xff01;今天我们将一起踏入 Dart 语言的神奇世界&#xff0c;深入了解 Dart 中的 List 类型。不用担心&#xff0c;我会尽可能用最通俗易懂的语言&#xff0c;让你对 List 有一个更深刻的理解。 Dart 中的 List Li…

机器学习算法理论:线性回归

线性回归 回归的理论解释&#xff1a;回归分析是确定两种或两种以上变数间相互依赖的定量关系的一种统计分析方法。按照自变量和因变量之间的关系类型&#xff0c;可分为线性回归分析和非线性回归分析。 如果在回归分析中&#xff0c;只包括一个自变量和一个因变量&#xff0c;…

跟着cherno手搓游戏引擎【5】layer(层)、Glad

编写基类层&#xff1a; Layer.h:提供Attach链接、Detach解绑、Update刷新、Event事件、GetName方法 #pragma once #include"YOTO/Core.h" #include"YOTO/Event/Event.h" namespace YOTO {class YOTO_API Layer{public:Layer(const std::string& nam…

【软件测试】学习笔记-不同视角的软件性能与性能指标

本篇文章探讨新的测试主题&#xff1a;性能测试&#xff0c;因为性能测试的专业性很强&#xff0c;所以我会以从0到1的入门者视角&#xff0c;系统性地阐述性能测试的方法以及应用领域&#xff0c;用实例去诠释各种性能指标。 本篇文章站在全局的视角&#xff0c;帮你梳理软件性…

【期末不挂科-C++考前速过系列P6】大二C++实验作业-模板(4道代码题)【解析,注释】

前言 大家好吖&#xff0c;欢迎来到 YY 滴C考前速过系列 &#xff0c;热烈欢迎&#xff01; 本章主要内容面向接触过C的老铁 主要内容含&#xff1a; 欢迎订阅 YY滴C专栏&#xff01;更多干货持续更新&#xff01;以下是传送门&#xff01; YY的《C》专栏YY的《C11》专栏YY的《…

统计学-R语言-4.2

文章目录 前言单变量数据的描述分析分类型数据频数表条形图饼图 数值型数据数值型数据数据的集中趋势--均值数据的集中趋势--众数 离散程度离散程度--极差离散程度--四分位数极差离散程度--方差离散程度--加权方差离散程度--标准差离散程度--变异系数 数据的形状数据的形状--偏…

RAG(检索增强生成 )

&#x1f4d1;前言 本文主要是【RAG】——RAG(检索增强生成 )的文章&#xff0c;如果有什么需要改进的地方还请大佬指出⛺️ &#x1f3ac;作者简介&#xff1a;大家好&#xff0c;我是听风与他&#x1f947; ☁️博客首页&#xff1a;CSDN主页听风与他 &#x1f304;每日一句…

最新消息:OpenAI GPT Store 正式上线,GPTs 应用商店来了

OpenAI推出的两款新产品和服务&#xff1a;GPT Store和ChatGPT Team&#xff0c;提供了许多全新的解决方案和功能&#xff0c;旨在帮助用户更轻松地使用和构建GPT工具&#xff0c;同时也增加了公司的收入来源。GPT Store是一个全新的在线平台&#xff0c;允许用户创建和分享自定…

小程序基础学习(多插槽)

先创建插槽 定义多插槽的每一个插槽的属性 在js文件中启用多插槽 在页面使用多插槽 组件代码 <!--components/my-slots/my-slots.wxml--><view class"container"><view class"left"> <slot name"left" ></slot>&…

【DC快速上手教程--1 Setup the DC】

DC快速上手教程--1 Setup the DC 0 Intro1 DC Demo 本篇系列教程介绍总结DC Flow&#xff0c;为了不涉密&#xff0c;在这里以DC labs为Demo做一个入门的介绍&#xff1b;目标&#xff1a;用起来EDA 工具是最基础也是最简单的&#xff1b;重点是如何去分析报告&#xff0c;依据…

Jenkins集成Sonar Qube

下载插件 重启Jenkins 容器 sonarqube 使用令牌 Jenkins 配置 重新构建

Windows平台RTMP推送|轻量级RTSP服务录像模块如何支持中文路径?

技术背景 我们在做Windows平台RTMP推送、轻量级RTSP服务录像模块的时候&#xff0c;部分开发者抱怨路径无法设置中文&#xff0c;只能设置为英文。 以C#的接口为例&#xff0c;早期的设计如下&#xff1a; /** 设置本地录像目录, 必须是英文目录&#xff0c;否则会失败*/[DllI…

YOLOv5改进 | 注意力篇 | CGAttention实现级联群体注意力机制 (全网首发改进)

一、本文介绍 本文给大家带来的改进机制是实现级联群体注意力机制CascadedGroupAttention,其主要思想为增强输入到注意力头的特征的多样性。与以前的自注意力不同,它为每个头提供不同的输入分割,并跨头级联输出特征。这种方法不仅减少了多头注意力中的计算冗余,而且通过增…

Spring | Spring框架最基本核心的jar包、Spring的入门程序、依赖注入

目录&#xff1a; 1.Spring框架最基本、最核心的jar包2.Spring的入门程序3.依赖注入3.1 依赖注入的概念3.2 依赖注入的实现方式 1.Spring框架最基本、最核心的jar包 Spring是一个轻量级框架&#xff0c;Spring最基本、最核心的的jar包括 : beans、context、core、expression。 …

Dobbo---分布式系统通信方式

通信方式 分布式系统通信方式1. RMIRMI 通信实现案例2. RPC常用RPC框架 分布式系统通信方式 1. RMI RMI ( Remote Method Invocation 远程方法调用) 图1.1 客户端-服务端通信方式 客户端将要调用的方法及参数&#xff0c;打包为辅助对象&#xff0c;通过网络socket&#xff…

AI-图片转换中国风动漫人物

&#x1f3e1; 个人主页&#xff1a;IT贫道-CSDN博客 &#x1f6a9; 私聊博主&#xff1a;私聊博主加WX好友&#xff0c;获取更多资料哦~ &#x1f514; 博主个人B栈地址&#xff1a;豹哥教你学编程的个人空间-豹哥教你学编程个人主页-哔哩哔哩视频 目录 1. AI卡通秀原理 2. …

Android WiFi Service启动-Android13

Android WiFi Service启动 - Android13 1、SystemServer中入口2、WifiService启动2.1 关键类概要2.2 启动时序图 Android WiFi基础概览 AOSP > 文档 > 心主题 > WiFi概览 1、SystemServer中入口 编译生成对应的jar包&#xff1a;"/apex/com.android.wifi/javalib…