NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis 精读

本文主要是介绍NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis 精读,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1 传统视图合成和NeRF(Neural Radiance Fields)

1.1 联系

传统视图合成和NeRF的共同目标都是从已有的视角图像中生成新的视角图像。两者都利用已有的多视角图像数据来预测或合成从未见过的视角。

1.2 区别

1.2.1 几何表示方式

  • 传统视图合成:通常使用显式几何模型(如深度图、网格、点云)或其他图像处理方法(如基于图像拼接或光流的方法)来生成新的视图。这些方法往往依赖于场景的几何信息,并使用插值或重映射技术来生成新的视角。

  • NeRF:NeRF不使用显式几何模型,而是通过神经网络隐式地表示场景。它通过学习从空间位置和视角方向到颜色和密度的映射,使用体积渲染来合成新的视图

1.2.2 渲染质量与细节

  • 传统视图合成:渲染质量通常依赖于输入数据的质量和几何模型的准确性,可能会在细节或复杂光照情况下失去精度。

  • NeRF:通过体积渲染,NeRF能够捕捉到细腻的光照变化和材质细节,生成的图像质量通常高于传统方法,尤其是在处理具有复杂材质和光照的场景。

1.2.3 处理复杂场景的能力

  • 传统视图合成:在处理简单场景时效果较好,但在处理复杂光照、反射和材质等情况下,可能会产生失真或伪影。此外,显式几何模型的生成和使用可能受到场景复杂度的限制。

  • NeRF:通过神经网络的表达能力,NeRF能够捕捉并重现复杂的光照、反射、折射等效果,生成更加逼真的视图。它不依赖于显式的几何模型,因此在复杂场景中表现更加出色。

2 整体流程

3 NeRF网络

网络的前面 8 层只接受空间坐标的编码(位置编码)输入 \gamma (x) ,得到透明度(体密度)输出 σ (不再作为后续节点的输入);在第9层得到前一层输出的特征向量后再 concat 方向编码输入 \gamma (d),再训练一层,得到辐射度(颜色)输出 c ,即 RGB 

4 NeRF的损失函数

NeRF使用的损失函数是 均方误差损失函数(Mean Squared Error, MSE),其定义如下:

其中:

  • N 是采样的射线数量。
  • r_{i}​ 表示第 i 条射线。
  • \hat{C}(r_{i}) 是模型预测的该射线的颜色值。
  • C(r_{i}) 是该射线的真实颜色值(即从输入图像中获得的像素值)。

损失函数说明

1. 直接衡量颜色差异

  • MSE损失函数直接计算预测图像和真实图像对应像素值的平方差异。这种直接比较像素值的方式简单且有效,适合用于图像生成任务中。这使得模型能够通过最小化像素级的差异来优化生成的图像质量。

2. 稳定且可解释性强

  • MSE是一个非常常用且成熟的损失函数,在神经网络中应用广泛。其数学形式简单明了,优化过程稳定。对于生成图像质量的衡量,MSE的数值大小直接反映了预测图像和真实图像之间的差距,这使得损失的变化容易理解和分析。

3. 梯度计算的便利性

  • MSE损失函数是一个凸函数,具有良好的数学性质。这使得在训练过程中,梯度计算比较简单且稳定,有助于模型的优化和收敛。

4. 对输出范围的直接约束

  • 由于MSE计算的是预测值和真实值之间的差异平方,因此它对输出值的大小和范围提供了直接的约束。这对于NeRF的输出(图像的RGB值)在0到1之间的范围内进行优化是合适的,确保生成的图像不会超出正常的颜色值范围。

5 体渲染

6 位置编码

NeRF的输入通常包括三维空间坐标  (x,y,z) 和视角方向 (θ,ϕ)。这些输入值通常在 [0,1] 或者 [−1,1]的范围内。然而,直接输入这些低维坐标给神经网络(多层感知机MLP)可能会导致模型难以捕捉场景中的高频细节,如纹理、锐边、光照变化等。

为了解决这个问题,NeRF引入了位置编码,将低维输入坐标映射到一个更高维的空间。这种映射通过使用一组正弦和余弦函数,将低频的输入信号转换为包含高频成分的信号,从而使得神经网络能够更好地学习复杂的空间变化。

NeRF中使用的位置编码公式如下:

其中:

  • p 是输入的三维坐标或者视角方向向量中的一个分量(例如 x 或 y 等)。
  • L 是编码的频率级数,即映射后的维度长度。
  •  \gamma (p) 是经过位置编码后的高维向量。

 对于一个三维坐标 (x,y,z),经过位置编码后,它将被转换为一个 6L 维的向量(每个维度的坐标都被映射到 2L 维)。视角方向也通过类似的方式进行编码。

7 分层采样

在NeRF中,合成一条射线上的像素颜色值需要对该射线经过的路径进行采样,并累积这些采样点的颜色和密度值。由于场景中的许多区域(如背景、空白区域等)对最终的像素值贡献较小,进行均匀采样会浪费大量计算资源。因此,需要一种更加智能的采样策略,能够在不显著增加计算成本的前提下,提升渲染效果。

NeRF的分层采样通常包括以下两个步骤:

1. 粗采样(Coarse Sampling)

  • 首先,在射线上均匀地进行粗采样。假设射线在场景中穿过一段空间,NeRF会在这段空间内选择固定数量的采样点。每个采样点通过神经网络预测其颜色和密度。
  • 通过这些采样点的颜色和密度,可以计算出射线的初步颜色值。这一步的目的是快速获取场景的全局信息,确定哪些区域对最终图像有较大贡献。

2. 细采样(Fine Sampling)

  • 基于粗采样得到的信息,NeRF会使用一种重要性采样(Importance Sampling)策略,在射线的某些重要区域进行更密集的细采样。
  • 这些重要区域通常是密度较高的地方,即物体的表面或边缘,这些地方对射线最终的颜色值贡献较大。
  • 通过在这些区域进行更密集的采样,可以更精确地估计射线的最终颜色,提升图像的局部细节和整体质量。

这篇关于NeRF: Representing Scenes as Neural Radiance Fields for View Synthesis 精读的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

BERT 论文逐段精读【论文精读】

BERT: 近 3 年 NLP 最火 CV: 大数据集上的训练好的 NN 模型,提升 CV 任务的性能 —— ImageNet 的 CNN 模型 NLP: BERT 简化了 NLP 任务的训练,提升了 NLP 任务的性能 BERT 如何站在巨人的肩膀上的?使用了哪些 NLP 已有的技术和思想?哪些是 BERT 的创新? 1标题 + 作者 BERT: Pre-trainin

MVC(Model-View-Controller)和MVVM(Model-View-ViewModel)

1、MVC MVC(Model-View-Controller) 是一种常用的架构模式,用于分离应用程序的逻辑、数据和展示。它通过三个核心组件(模型、视图和控制器)将应用程序的业务逻辑与用户界面隔离,促进代码的可维护性、可扩展性和模块化。在 MVC 模式中,各组件可以与多种设计模式结合使用,以增强灵活性和可维护性。以下是 MVC 各组件与常见设计模式的关系和作用: 1. Model(模型)

MFC中App,Doc,MainFrame,View各指针的互相获取

纸上得来终觉浅,为了熟悉获取方法,我建了个SDI。 首先说明这四个类的执行顺序是App->Doc->Main->View 另外添加CDialog类获得各个指针的方法。 多文档的获取有点小区别,有时间也总结一下。 //  App void CSDIApp::OnApp() {      //  App      //  Doc     CDocument *pD

MonoHuman: Animatable Human Neural Field from Monocular Video 翻译

MonoHuman:来自单目视频的可动画人类神经场 摘要。利用自由视图控制来动画化虚拟化身对于诸如虚拟现实和数字娱乐之类的各种应用来说是至关重要的。已有的研究试图利用神经辐射场(NeRF)的表征能力从单目视频中重建人体。最近的工作提出将变形网络移植到NeRF中,以进一步模拟人类神经场的动力学,从而动画化逼真的人类运动。然而,这种流水线要么依赖于姿态相关的表示,要么由于帧无关的优化而缺乏运动一致性

Caused by: android.view.WindowManager$BadTokenException: Unable to add window -- token android.os.B

一个bug日志 FATAL EXCEPTION: main03-25 14:24:07.724: E/AndroidRuntime(4135): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.syyx.jingubang.ky/com.anguotech.android.activity.Init

自定义view中常用到哪些方法作用分别是什么

目录 构造函数onMeasure(int widthMeasureSpec, int heightMeasureSpec)onDraw(Canvas canvas)onLayout(boolean changed, int left, int top, int right, int bottom)onTouchEvent(MotionEvent event)onSizeChanged(int

论文精读-Supervised Raw Video Denoising with a Benchmark Dataset on Dynamic Scenes

论文精读-Supervised Raw Video Denoising with a Benchmark Dataset on Dynamic Scenes 优势 1、构建了一个用于监督原始视频去噪的基准数据集。为了多次捕捉瞬间,我们手动为对象s创建运动。在高ISO模式下捕获每一时刻的噪声帧,并通过对多个噪声帧进行平均得到相应的干净帧。 2、有效的原始视频去噪网络(RViDeNet),通过探

天然药物化学史话:“四大光谱”在天然产物结构鉴定中的应用-文献精读46

天然药物化学史话:“四大光谱”在天然产物结构鉴定中的应用,天然产物化学及其生物合成必备基础知识~ 摘要 天然产物化学研究在药物研发中起着非常重要的作用,结构研究又是天然产物化学研究中最重要的工作之一。在天然药物化学史话系列文章的基础上,对在天然产物结构研究中起绝对主导作用的“四大光谱”分析技术,即红外光谱、紫外光谱、质谱、核磁共振波谱在天然产物结构鉴定中的应用历史进行回顾与总结,并对其发展

A Comprehensive Survey on Graph Neural Networks笔记

一、摘要-Abstract 1、传统的深度学习模型主要处理欧几里得数据(如图像、文本),而图神经网络的出现和发展是为了有效处理和学习非欧几里得域(即图结构数据)的信息。 2、将GNN划分为四类:recurrent GNNs(RecGNN), convolutional GNNs,(GCN), graph autoencoders(GAE), and spatial–temporal GNNs(S

android 动画 ——视图动画(View Animation)

android动画分为视图动画(View Animation)、属性动画(Property Animation) 想看属性动画(Property Animation):请移步至http://blog.csdn.net/u013424496/article/details/51700312 这里我们来说下视图动画(View Animation)的纯代码写法,还有一种是xml调用, 对于xml调