NeRF神经辐射场学习笔记(四)——Mip NeRF论文创新点解读

2023-11-01 20:41

本文主要是介绍NeRF神经辐射场学习笔记(四)——Mip NeRF论文创新点解读,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

NeRF神经辐射场学习笔记(四)——Mip NeRF论文创新点解读

  • 声明
  • 论文概述
  • 混叠定义
  • 1.Cone Tracing(基于conical frustums的渲染采样)
  • 2.IPE(integrated Positional Encoding)
    • IPE的优点
  • 3.单一的多尺度MLP的应用(the use of a single multiscale MLP)
  • 参考文献和资料

声明

本人书写本系列博客目的是为了记录我学习三维重建领域相关知识的过程和心得,不涉及任何商业意图,欢迎互相交流,批评指正。

论文概述

“mip”来自于拉丁语 multum in parvo 的首字母,意思是“放置很多东西的小空间”,例如mipmapping——就是一种减少图像锯齿的技术;Mip NeRF是针对NeRF原始方法渲染时由于同一场景对应的多个图片分辨率不一致而出现模糊和锯齿的现象提出的,对于Mip NeRF而言,主要的创新点分为三个方面:

  1. Mip NeRF的渲染过程是基于抗锯齿的圆锥体(anti-aliased conical frustums);
  2. Mip NeRF提出了新的位置编码的方法——IPE(Integrated Positional Encoding);
  3. Mip NeRF将coarse和fine的MLP减少到一个单一的多尺度MLP(a single multiscale MLP);

混叠定义

根据笔记作者(什么是混叠?)的解释来看,当采样频率设置不合理时,即采样频率低于2倍的信号频率时,会导致原本的高频信号被采样成低频信号。如下图所示,红色信号是原始的高频信号,但是由于采样频率不满足采样定理的要求,导致实际采样点如图中蓝色实心点所示,将这些蓝色实际采样点连成曲线,可以明显地看出这是一个低频信号。在图示的时间长度内,原始红色信号有18个周期,但采样后的蓝色信号只有2个周期。也就是采样后的信号频率成分为原始信号频率成分的1/9,这就是所谓的混叠:高频混叠成低频了。
在这里插入图片描述
对连续信号进行等时间采样时,如果采样频率不满足采样定理,采样后的信号频率就会发生混叠,即高于奈奎斯特频率(采样频率的一半)的频率成分将被重构成低于奈奎斯特频率的信号。这种频谱的重叠导致的失真称为混叠,也就是高频信号被混叠成了低频信号。
锯齿产生的本质就源自于采样频率低于真实原始信号的频率,即信号处理中的“混叠”现象,所以要想改变NeRF渲染固定位置相机场景的局限性,需要替代渲染时的采样方式或者采样数量,而将one ray per pixel的采样数量提升到multiple rays per pixel能够使采样更接近奈奎斯特频率,但是时间成本太高,故Mip NeRF在渲染过程中使用圆锥体替代光线进行采样。

1.Cone Tracing(基于conical frustums的渲染采样)

在这里插入图片描述
当观察方向产生远近或者方向变化时,利用NeRF基于ray的采样方式对于此种变化不敏感,因此可能会产生相同的采样特征,从而显著降低NERF的性能。而基于圆锥体采样的方式显示地建模了每个采样圆锥台(图中梯形)体积变化,从而解决了这种模糊性。
在这里插入图片描述

对于任意一个像素点,从相机的投影中心 o \textbf{o} o沿着穿过像素中心的方向 d \textbf{d} d投射出一个圆锥体,该圆锥体的顶点位于 o \textbf{o} o,并且在图像平面 o+d \textbf{o+d} o+d处的圆锥面的半径参数设为 r ˙ \dot{r} r˙。我们将 r ˙ \dot{r} r˙设置为世界坐标中像素的宽度,按 2 / 12 2/\sqrt{12} 2/12 缩放,它产生一个锥体,其在图像平面上的截面在x和y方向中有方差,该方差与像素足迹的方差相匹配(which yields a conewhose section on the image plane has a variance in x and y that matches the variance of the pixel’s footprint.),位于两个t值 [ t 0 , t 1 ] [t_0,t_1] [t0,t1]之间的圆锥台内的位置 x \textbf{x} x的集合可以表示为: F ( x , o , d , r ˙ , t 0 , t 1 ) = 1 { ( t 0 < d T ( x-o ) ∣ ∣ d ∣ ∣ 2 2 < t 1 ) ∧ ( d T ( x-o ) ∣ ∣ d ∣ ∣ 2 ∣ ∣ x-o ∣ ∣ 2 > 1 1 + ( r ˙ / ∣ ∣ d ∣ ∣ 2 ) 2 ) } F(\textbf{x},\textbf{o},\textbf{d},\dot{r},t_0,t_1)=\mathbb{1}\left\{ \left( t_0<\frac{\text{d}^T(\textbf{x-o})}{||\textbf{d}||^2_2}<t_1\right)\land \left(\frac{\text{d}^T(\textbf{x-o})}{||\textbf{d}||_2||\textbf{x-o}||_2}>\frac{1}{\sqrt{1+(\dot{r}/||\textbf{d}||_2)^2}}\right)\right\} F(x,o,d,r˙,t0,t1)=1{(t0<∣∣d22dT(x-o)<t1)(∣∣d2∣∣x-o2dT(x-o)>1+(r˙/∣∣d2)2 1)}其中 1 { ⋅ } \mathbb{1}\{\cdot\} 1{}是一个指示函数(indicator function):即如果 x \textbf{x} x介于 ( o , d , r ˙ , t 0 , t 1 ) (\textbf{o},\textbf{d},\dot{r},t_0,t_1) (o,d,r˙,t0,t1)定义的圆锥体内,则 F ( x , ⋅ ) = 1 F(\textbf{x},\cdot)=1 F(x,)=1

2.IPE(integrated Positional Encoding)

针对基于圆锥体采样方式,原始的位置编码表达式的积分没有封闭形式的解,不能有效地计算。故文章采用了一个多元高斯函数(multivariate Gaussian)来近似圆锥截面,这可以有效地近似成所需要的特征(allows for an efficient approximation to the desired feature)。为了用多元高斯函数逼近圆锥台,我们必须计算 F ( x , ⋅ ) F(\textbf{x},\cdot) F(x,)的均值和协方差,因为每个圆锥台假定是圆形的,而且圆锥台绕锥体的轴线是对称的,所以除了 o \textbf{o} o d \textbf{d} d以外,这种高斯模型完全由3个值来表示: μ t \mu_t μt(沿射线的平均距离)、 σ t 2 \sigma^2_t σt2(沿射线方向的方差)、 σ r 2 \sigma^2_r σr2(沿射线垂直方向的方差): μ t = t μ + 2 t μ t δ 2 3 t μ 2 + t δ 2 , σ t 2 = t 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{2t_{\mu}t^2_{\delta}}{3t^2_{\mu}+t^2_{\delta}}, \sigma^2_t=\frac{t^2_t}{3}-\frac{4t^4_{\delta}(12t^2_{\mu}-t^2_{\delta})}{15(3t^2_{\mu}+t^2_{\delta})^2}, \sigma^2_r=\dot{r}^2\left(\frac{t^2_{\mu}}{4}+\frac{5t^2_{\delta}}{12}-\frac{4t^4_{\delta}}{15(3t^2_{\mu}+t^2_{\delta})}\right) μt=tμ+3tμ2+tδ22tμtδ2,σt2=3tt215(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 ) t_{\mu}=(t_0+t_1) tμ=(t0+t1),半宽为 t δ = ( t 1 − t 0 ) / 2 t_{\delta}=(t_1-t_0)/2 tδ=(t1t0)/2,上述变量都是根据这两个参数定义的,并且对数值稳定性至关重要。
紧接着可以将这个高斯模型从圆锥台的坐标系转换成世界坐标,得到最终的多元高斯模型: μ = o + μ t d , Σ = σ t 2 ( d d T ) + σ r 2 ( I − d d T ∣ ∣ d ∣ ∣ 2 2 ) \mu=\textbf{o}+\mu_t\textbf{d}, \Sigma=\sigma^2_t(\textbf{d}\textbf{d}^T)+\sigma^2_r\left(\textbf{I}-\frac{\textbf{d}\textbf{d}^T}{||\textbf{d}||^2_2}\right) μ=o+μtd,Σ=σt2(ddT)+σr2(I∣∣d22ddT)接下来推导IPE,它是根据前面提到的高斯分布的位置编码坐标的期望,即:IPE为高斯分布的positional encoding的期望值。首先将位置编码改写为矩阵形式(Fourier feature): 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 ) = [ s i n ( Px ) c o s ( Px ) ] \textbf{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}^T, \gamma(\textbf{x})=\begin{bmatrix}sin(\textbf{Px} )\\ cos(\textbf{Px})\end{bmatrix} P= 1000100012000200022L10002L10002L1 T,γ(x)=[sin(Px)cos(Px)]利用协方差性质( C o v [ Ax , By ] = A C o v [ x , y ] B T Cov[\textbf{Ax},\textbf{By}]=\textbf{A}Cov[\textbf{x},\textbf{y}]\textbf{B}^T Cov[Ax,By]=ACov[x,y]BT),若对高斯模型进行位置编码,则位置编码必然服从于高斯分布,且期望和方差为: μ γ = P μ , Σ γ = P Σ P T \mu_{\gamma}=\textbf{P}\mu, \Sigma_{\gamma}=\textbf{P}\Sigma\textbf{P}^T μγ=Pμ,Σγ=PΣPT,再有如果 x \textbf{x} x服从高斯分布,则sin(x)和cos(x)的期望表示为 E x ∼ N ( μ , σ 2 ) [ s i n ( x ) ] = s i n ( μ ) e x p ( − ( 1 / 2 ) σ 2 ) E x ∼ N ( μ , σ 2 ) [ c o s ( x ) ] = c o s ( μ ) e x p ( − ( 1 / 2 ) σ 2 ) E_{x\thicksim\mathcal{N}(\mu,\sigma^2)}[sin(x)]=sin(\mu)exp(-(1/2)\sigma^2)\\E_{x\thicksim\mathcal{N}(\mu,\sigma^2)}[cos(x)]=cos(\mu)exp(-(1/2)\sigma^2) ExN(μ,σ2)[sin(x)]=sin(μ)exp((1/2)σ2)ExN(μ,σ2)[cos(x)]=cos(μ)exp((1/2)σ2)所以结合以上的原理如果想要计算IPE——即高斯分布的positional encoding的期望值,表达式为: γ ( μ , Σ ) = E x ∼ N ( μ γ , σ γ ) [ γ ( x ) ] = [ s i n ( μ γ ) ∘ e x p ( − ( 1 / 2 ) d i a g ( Σ γ ) ) c o s ( μ γ ) ∘ e x p ( − ( 1 / 2 ) d i a g ( Σ γ ) ) ] \gamma(\mu,\Sigma) = E_{\textbf{x}\thicksim\mathcal{N}(\mu_{\gamma},\sigma_{\gamma})}[\gamma(\textbf{x})] \\ =\begin{bmatrix}sin(\mu_{\gamma})\circ exp(-(1/2)diag(\Sigma_{\gamma}))\\ cos(\mu_{\gamma})\circ exp(-(1/2)diag(\Sigma_{\gamma}))\end{bmatrix} γ(μ,Σ)=ExN(μγ,σγ)[γ(x)]=[sin(μγ)exp((1/2)diag(Σγ))cos(μγ)exp((1/2)diag(Σγ))]其中 ∘ \circ 表示按元素相乘,并且为了减少不必要的计算量,对于模型的协方差直接用 Σ γ \Sigma_{\gamma} Σγ的对角线元素来替代: d i a g ( Σ γ ) = [ d i a g ( Σ ) , 4 d i a g ( Σ ) , … , 4 L − 1 d i a g ( Σ ) ] T diag(\Sigma_{\gamma})=[diag(\Sigma),4diag(\Sigma),\dots,4^{L-1}diag(\Sigma)]^T diag(Σγ)=[diag(Σ),4diag(Σ),,4L1diag(Σ)]T,而 d i a g ( Σ ) = σ t 2 ( d ∘ d ) + σ r 2 ( 1 − d ∘ d ∣ ∣ d ∣ ∣ 2 2 ) diag(\Sigma)=\sigma^2_t(\textbf{d}\circ\textbf{d})+\sigma^2_r\left(\textbf{1}-\frac{\textbf{d}\circ\textbf{d}}{||\textbf{d}||^2_2}\right) diag(Σ)=σt2(dd)+σr2(1∣∣d22dd),如果直接计算这些对角线,IPE特征与PE特征构造的代价大致相同。

IPE的优点

  1. PE的计算中所有频段都会被考虑到,也包括了可能超出采样频率的高频信息(这是前文中提到的锯齿(混叠)产生的主要原因)。而IPE通过计算期望,只需要考虑到 γ ( x ) \gamma(x) γ(x)的边缘分布,集成了PE特征,当存在频率周期小于被集成的频率周期时,IPE的高频维度将向零收缩,从而具有更好的抗锯齿性能;
    在这里插入图片描述

  2. 由于1中提到的原因,PE的表现依赖于超参数L(PE中的sin/cos阶数),可以看到,当L增大时,高频信息增加,效果也急剧下降了。而IPE的高频维度收缩能够使其摆脱超参数L的限制。
    在这里插入图片描述

3.单一的多尺度MLP的应用(the use of a single multiscale MLP)

NeRF使用具有两个不同MLP的分层抽样过程——fine和coarse。 这在NeRF中是必要的,因为它的PE特性意味着它的MLP只能学习单一规模的场景模型。 但是Mip NeRF服从高斯分布的位置编码可以自动在采样频率较低时(IPE特征间隔较宽时)弱化高频特征,从而缓解混叠现象。这种采样设计本身决定了其适用于多尺度情况,因此,Nerf的两个MLP可以合并为一个MLP。

参考文献和资料

[1]Mip-NeRF:抗混叠的多尺度神经辐射场ICCV2021
[2]Mip-NeRF论文笔记
[3]Mip-NeRF阅读笔记
[4]Mip NeRF原文

这篇关于NeRF神经辐射场学习笔记(四)——Mip NeRF论文创新点解读的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/325612

相关文章

HarmonyOS学习(七)——UI(五)常用布局总结

自适应布局 1.1、线性布局(LinearLayout) 通过线性容器Row和Column实现线性布局。Column容器内的子组件按照垂直方向排列,Row组件中的子组件按照水平方向排列。 属性说明space通过space参数设置主轴上子组件的间距,达到各子组件在排列上的等间距效果alignItems设置子组件在交叉轴上的对齐方式,且在各类尺寸屏幕上表现一致,其中交叉轴为垂直时,取值为Vert

Ilya-AI分享的他在OpenAI学习到的15个提示工程技巧

Ilya(不是本人,claude AI)在社交媒体上分享了他在OpenAI学习到的15个Prompt撰写技巧。 以下是详细的内容: 提示精确化:在编写提示时,力求表达清晰准确。清楚地阐述任务需求和概念定义至关重要。例:不用"分析文本",而用"判断这段话的情感倾向:积极、消极还是中性"。 快速迭代:善于快速连续调整提示。熟练的提示工程师能够灵活地进行多轮优化。例:从"总结文章"到"用

【前端学习】AntV G6-08 深入图形与图形分组、自定义节点、节点动画(下)

【课程链接】 AntV G6:深入图形与图形分组、自定义节点、节点动画(下)_哔哩哔哩_bilibili 本章十吾老师讲解了一个复杂的自定义节点中,应该怎样去计算和绘制图形,如何给一个图形制作不间断的动画,以及在鼠标事件之后产生动画。(有点难,需要好好理解) <!DOCTYPE html><html><head><meta charset="UTF-8"><title>06

学习hash总结

2014/1/29/   最近刚开始学hash,名字很陌生,但是hash的思想却很熟悉,以前早就做过此类的题,但是不知道这就是hash思想而已,说白了hash就是一个映射,往往灵活利用数组的下标来实现算法,hash的作用:1、判重;2、统计次数;

零基础学习Redis(10) -- zset类型命令使用

zset是有序集合,内部除了存储元素外,还会存储一个score,存储在zset中的元素会按照score的大小升序排列,不同元素的score可以重复,score相同的元素会按照元素的字典序排列。 1. zset常用命令 1.1 zadd  zadd key [NX | XX] [GT | LT]   [CH] [INCR] score member [score member ...]

【机器学习】高斯过程的基本概念和应用领域以及在python中的实例

引言 高斯过程(Gaussian Process,简称GP)是一种概率模型,用于描述一组随机变量的联合概率分布,其中任何一个有限维度的子集都具有高斯分布 文章目录 引言一、高斯过程1.1 基本定义1.1.1 随机过程1.1.2 高斯分布 1.2 高斯过程的特性1.2.1 联合高斯性1.2.2 均值函数1.2.3 协方差函数(或核函数) 1.3 核函数1.4 高斯过程回归(Gauss

AI hospital 论文Idea

一、Benchmarking Large Language Models on Communicative Medical Coaching: A Dataset and a Novel System论文地址含代码 大多数现有模型和工具主要迎合以患者为中心的服务。这项工作深入探讨了LLMs在提高医疗专业人员的沟通能力。目标是构建一个模拟实践环境,人类医生(即医学学习者)可以在其中与患者代理进行医学

【学习笔记】 陈强-机器学习-Python-Ch15 人工神经网络(1)sklearn

系列文章目录 监督学习:参数方法 【学习笔记】 陈强-机器学习-Python-Ch4 线性回归 【学习笔记】 陈强-机器学习-Python-Ch5 逻辑回归 【课后题练习】 陈强-机器学习-Python-Ch5 逻辑回归(SAheart.csv) 【学习笔记】 陈强-机器学习-Python-Ch6 多项逻辑回归 【学习笔记 及 课后题练习】 陈强-机器学习-Python-Ch7 判别分析 【学

MCU7.keil中build产生的hex文件解读

1.hex文件大致解读 闲来无事,查看了MCU6.用keil新建项目的hex文件 用FlexHex打开 给我的第一印象是:经过软件的解释之后,发现这些数据排列地十分整齐 :02000F0080FE71:03000000020003F8:0C000300787FE4F6D8FD75810702000F3D:00000001FF 把解释后的数据当作十六进制来观察 1.每一行数据

Java ArrayList扩容机制 (源码解读)

结论:初始长度为10,若所需长度小于1.5倍原长度,则按照1.5倍扩容。若不够用则按照所需长度扩容。 一. 明确类内部重要变量含义         1:数组默认长度         2:这是一个共享的空数组实例,用于明确创建长度为0时的ArrayList ,比如通过 new ArrayList<>(0),ArrayList 内部的数组 elementData 会指向这个 EMPTY_EL