NeRF:Representing Scenes as Neural Radiance Fields for View Synthesis
目录
简介
Pipeline
细节讲解
结果
简介
什么是NeRF?NeRF翻译为神经辐射场。
下面两句话取自于Neural Fields in Visual Computing and Beyond。
A field is a quantity defined for all spatial and/or temporal coordinates.
场是为所有空间和/或时间坐标定义的量。
A neural field is a field that is parameterized fully or in part by a neural network.
神经场是完全或部分由神经网络参数化的场。
他要解决的问题是给定一些角度的拍摄视图,如何生成新视图下的图。
Pipeline
总体的Pipeline如下图所示:
首先输入已知相机位置(已知视角)的图片,通过SFM技术提取点的3D坐标和2D观察角度。Structure from Motion(SfM)是一个估计相机参数及三维点位置的问题。之后通过hierarchical asmpling 和 positional encoding操作后,输入进NeRF中,得到对应的体素密度和RGB颜色,最后通过渲染得到相应的视图。
细节讲解
对于在空间中的每个点。我们有:
1、RGB颜色
2、不透明度
如上图所示,本文的体渲染技术使用的是ray matching。ray marching 算法的思想是首先有一个3D的体纹理,然后从相机发射n条射线,射线有一个采样的步长,当涉嫌在体纹理中时,每个步长采一次样,获得纹理值,计算光照,然后和该条射线当前积累的颜色值进行混合。具体的颜色计算公式在下文中会有介绍。
有一个问题值得思考,为什么这种方法是有效的呢,为什么就可以选染成正确的颜色,正确的图案呢?这个道理很简单,因为光路是可逆的,从光源射出的光线经过散射,最终进入摄像机的效果等同于从摄像机发出的射线进行着色和采样。
Rendering model for ray r(t) = o + td
r(t) 是射线公式,其中的o是原点,是相机的位置,d是射线的方向,而t是步长,t是有范围的,如图中的t1和tN。
对于颜色计算,公式如下:
其中T是权重,表示的是某个点之前被遮挡的多少,或者说是,现在的这个点对于该方向颜色还可以贡献多少。
α表示某点对该条射线上的颜色所做的贡献:
想要得到空间中某个点的颜色和透明度。输入空间中的这个点它的坐标,输出是一个点它的颜色是多少,透明度是多少。本质上需要维护一个映射的关系,把空间的坐标映射成这个rgb的值,为了实现这个映射,最简单的方法就是在计算机里存一个大的tensor,覆盖这个物体的范围,如右上图所示,需要很大的空间。本文提出用一个网络来替代之前的tensor.
NeRF的框架如下:
该图的总体流程为首先输入体素的三维坐标,通过八个全连接层后,得到Volume density体素密度和深度特征,由于尚未输入2D的观察角度,所以空间中某点的不透明度是跟观察角度无关。之后输入2D观察角度,与深度特征一并进入全连接层得到最后的颜色RGB,所以可以得出结论,颜色是与观察角度有关系的。关于颜色跟观察角度有关系是很容易想象到的,就像我们现实生活中,由于光线角度的问题会有颜色差异,如下图所示:
我们可以到,两个不同的视角View1和View2,对于图中的观测点,颜色是不一样的。
NeRF结构的其他表示:
该图与上面的所给的结构是同一个意思,黄色是输入,红色是输出。不同的是,可以到,黄色框里的数字改成了60和24。这是因为加入了位置信息。Rahaman等人提出将输入传递到网络之前,使用高频函数将输入映射到高维空间,可以更好的拟合包含高频变化的数据。因此通过Positional encoding 将5D信号变成高维度信号。公式如下:
加入了位置信号后,其结果也是比较明显的。效果图如下所示:
Hierarchical sampling strategy
Volume Rendering中是在每条相机光线上的N个查询点密集地评估神经辐射场网络,这是低效的(仍然重复采样与渲染图像无关的自由空间和遮挡区域),于是提出一种分层体积采样的做法,同时优化一个“粗糙”的网络和一个“精细”的网络。 做法是:首先使用分层抽样对第一组Nc位置进行采样,并在这些位置评估“粗糙”网络。给出这个“粗糙”网络的输出,然后我们对每条射线上的点进行更明智的采样,即利用反变换采样从这个分布中采样第二组Nf位置,然后将Nc+Nf采样得到的数据输入“精细”网络,并计算最终渲染的光线颜色C。 核心操作即先通过第一次采样把大概的分布采出来,然后第二次采样利用反变换采样(用的是概率论中的拒绝采样),对第一次采到的大概的分布再采一次,达到了重要性采样的目的。新的合成颜色函数:
结果
NeRF:Representing Scenes as Neural Radiance Fields for View Synthesis相关推荐
- 读论文12——NeRF:Representing Scenes as Neural Radiance Fields for View Synthesis
目录 Abstract Introduction Related Work Neural Radiance Field Scene Representation Volume Rendering wi ...
- NeRF拜读:Representing Scenes as Neural Radiance Fields for View Synthesis
神经辐射场 非显式地将一个复杂的静态场景用神经网络来建模.训练完成后,可以从任意视角渲染出清晰的场景图片. 过程 大量已知相机参数的图片作为输入 通过输入训练MLP神经网络,隐式地学习静态3D场景 利 ...
- Nerf(Representing Scenes as Neural Radiance Fields for View Synthesis)代码复现笔记
前言:本文旨在帮助小白快速了解or学习复现出Nerf的代码,整体结构保持不变,不过会针对部分细节为了更好理解进行了修改. 本文会相应更新讲解视频于B站,id 出门吃三碗饭,有问题到b站评论区留言 同步 ...
- 论文笔记:NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis
目录 文章摘要 1 Neural Radiance Field Scene Representation (基于神经辐射场的场景表示) 2 Volume Rendering with Radiance ...
- [非卷积5D中文翻译及学习笔记] 神经辐射场 NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis
不使用3D建模,使用静态图片进行训练,用(非卷积)深度网络表示场景的5D连续体表示,再通过ray marching进行渲染. 本中文翻译使用"机器学习+人工校准/注解"的方式完成. ...
- 【论文笔记 - NeRFs - ECCV2020】NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis
NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis 0背景介绍 用神经辐射场来表征场景,用于新视角图像生成任务 ...
- 文献翻译阅读-NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis
目录 信息 简介 相关工作 神经3D表示 视角合成和基于图像的渲染 方法 体渲染技术(用离散形式表示连续积分) 优化神经场的技术 位置编码 分层体积抽样 实施细节 结果 结论 参考 信息 NeRF,即 ...
- 【论文精读】NeRF —— 解读《NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis》
NeRF的核心点是实现了复杂静态场景的隐式表达,用一个神经网络来建模. Abstract 本文提出了一种新方法,通过使用稀疏的输入视图集优化底层连续的体积场景函数,实现了合成复杂场景的新视图的SOTA ...
- 论文笔记NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis
NeRF使用神经网络来表示场景.给定一个场景,输入该场景一些视角的图片,NeRF可以合成该场景新视角的图片. 神经辐射场 神经辐射场(neural radiance field,NeRF)使用5D的向 ...
最新文章
- 数据库索引背后的数据结构
- “团队禁止使用Lombok”,被我狠狠的反驳了!
- k近邻回归算法python_K近邻算法用作回归的使用介绍(使用Python代码)
- Java里的class对象 - class object
- 李宏毅《机器学习》完整版笔记发布
- #把函数当作参数传给另一个函数
- fastdfs暗转 linux_Linux下安装fastDFS
- nginx的upstream实现负载均衡自带坏点自动剔除功能
- 嵌入式工程师是青春饭吗?越老越吃香吗?
- MATLAB画圆时却显示椭圆?一个命令解决问题!
- 关于主机的思维导图_思维导图可以整理哪些东西?
- Matlab2017b安装教程及破解失败方法
- POJ 3083 dfs + bfs
- 盘点那些被AI换脸、一键“脱”衣所滥用的AI模型
- App上线后,如何使用二维码进行推广
- 树莓派安装FISCO-BCOS
- 安装与配置VMware虚拟机 https://www.vmware.com/cn/products/workstation-pro/workstation-pro-evaluation.html
- 产品30讲之产品周期
- ZZULIOJ 1800: 少水群多刷题
- Ambari 自定义服务集成 | quicklinks 快速链接不显示的排查方案