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

news2024/11/15 14:07:17

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)策略,在射线的某些重要区域进行更密集的细采样。
  • 这些重要区域通常是密度较高的地方,即物体的表面或边缘,这些地方对射线最终的颜色值贡献较大。
  • 通过在这些区域进行更密集的采样,可以更精确地估计射线的最终颜色,提升图像的局部细节和整体质量。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

frameworks 之InputReader

frameworks 之InputReader InputManagerService 初始化InputManagerService 启动InputReader 事件的读取设备节点注册和监听设备输入事件的读取 InputReader 事件的处理设备的添加和删除处理触摸事件的处理数据的加工和分发 android 输入事件 主要分 2个流程 事件读取 和 事件…

先进提示词工程

大型语言模型 (LLM) 的普及彻底改变了我们人类解决问题的方式。在过去,用计算机解决任何任务(例如,重新格式化文档或对句子进行分类)都需要创建一个程序(即根据某种编程语言精确编写的一组命令)。使用 LLM&…

ssrf实现.SSH未创建写shell

一、介绍SSRF漏洞 SSRF (Server-Side Request Forgery,服务器端请求伪造)是一种由攻击者构造请求,由服务端发起请求的安全漏洞。一般情况下,SSRF攻击的目标是外网无法访问的内部系统(正因为请求是由服务端发起的,所以服务端能请求到与自身相…

Openvino2024.3版部署YOLO (C++)

在网上很少看到有2024版的openvino,老版本的接口很多也都不在了,此篇写出来也算是为了防止自己忘记。 openvino下载 下载英特尔发行版 OpenVINO 工具套件 (intel.com) 下载好后解压出来,放C盘D盘都一样,我放在D盘了,…

如何解决 Cloudflare | 使用 Puppeteer 和 Node.JS

我认为,现在自动化任务越多,越能体现它们的价值,因此挑战也变得更加明显和困难。例如,Cloudflare 目前提供了强有力的安全措施来保护网站免受所有形式的自动化工具的侵扰。 但对于从事自动化项目(如网络爬虫、数据提取…

STM32(七):定时器——输入捕获

IC(Input Capture)输入捕获 输入捕获模式下,当通道输入引脚出现指定电平跳变时,当前CNT的值将被锁存到CCR中,可用于测量PWM波形的频率、占空比、脉冲间隔、电平持续时间等参数。 每个高级定时器和通用定时器都拥有4个输…

基于vscode安装EPS-IDF环境与创建例程

安装ESP-IDF 在vscode中安装esp-idf插件 然后打开插件,左侧选择Configure ESP-IDF Extension ![![[Pasted image 20240821221256.png]](https://i-blog.csdnimg.cn/direct/3993e22c37644097b464aef0bbc244a5.png) 点击安装 自动下载ESP-IDF 安装完成&#xff01…

计算机毕业设计推荐- 基于Python的高校岗位招聘数据分析平台

💖🔥作者主页:毕设木哥 精彩专栏推荐订阅:在 下方专栏👇🏻👇🏻👇🏻👇🏻 实战项目 文章目录 实战项目 一、基于Python的高校岗位招聘分…

Gitee的使用方法

是跟着这位up的视频学习的,老师讲的很好 https://www.bilibili.com/video/BV1hf4y1W7yT/share_sourcecopy_web&vd_source985ed259d2e2be1d81c218c58be165b9 需要的安装包我学习完成后,会放到我的gitee仓库里,也当作是练习一下。 insta…

PriorMapNet:Enhancing Online Vectorized HD Map Construction with Priors

参考代码:None 动机与出发点 训练场景中的车道线千变万化会导致query方式预测方式变得较难收敛或者性能较低,之前的一些工作有将mask信息引入到pipeline中为query提供instance-level的语义信息,但是对于point-level信息就需要自己去学习了。…

动态规划:从记忆化搜索到递推 打家劫舍

目录 LeetCode198 打家劫舍 1、递归搜索保存计算结果记忆化搜索 2、1:1翻译成递推 3、空间优化 LeetCode213 打家劫舍II LeetCode198 打家劫舍 1、递归搜索保存计算结果记忆化搜索 回溯三问: (1)当前操作?枚举第i个房子选/不…

计算机的错误计算(七十三)

摘要 计算机的错误计算(七十二)探讨了大数的余割函数的错误计算 。本节讨论另外一类数值: 附近数 的余割函数的计算精度问题。 例1. 已知 计算 csc(x) . 若在 Excel 中计算,则有 若用Java 编程实现 , 即有下列代码&#x…

认知杂谈26

今天分享 有人说的一段争议性的话 I I 上班的双刃剑:安稳与束缚的较量 上班这事儿啊,好多人都觉得那就是稳定的代表。每天按时去打卡,每个月都能稳稳地拿到工资,听起来好像挺美的,就跟理想生活似的。但咱要是仔细琢…

UE管理内容 —— FBX Asset Metadata Pipeline

随着实时3D制作大小和复杂程度的增加,以及构成现代制作流程的工具数量的不断增加,增加智能自动化来提高美术效率变得越发重要;这种智能自动化通常主要依靠元数据:有关资源的自定义数据,在项目中为资源赋予意义&#xf…

基于GA遗传优化的三维空间WSN网络最优节点部署算法matlab仿真

目录 1.程序功能描述 2.测试软件版本以及运行结果展示 3.核心程序 4.本算法原理 空间覆盖度模型 基于GA的优化方法 5.完整程序 1.程序功能描述 基于GA遗传优化的三维空间WSN网络最优节点部署算法matlab仿真。分别对三维空间的节点覆盖率,节点覆盖使用数量进行…

为什么走线宽度不同会引起阻抗畸变

事先说明:内容不是原创,或者只是自己的技术总结。仅仅用于本人日常记录 1 参考博客 参考博客来源: 原博客 2 基本知识点 2.1 为什么阻抗突变会引起反射 信号沿传输线传播时,其路径上的每一步,都有相应的瞬时阻抗&…

项目需求 | vscode远程免密登录Linux服务器指南-含所需的命令和步骤

步骤1:安装Remote - SSH扩展 在VSCode中,打开扩展视图,搜索并安装Remote Development扩展包,它包含了Remote - SSH扩展。 步骤2:生成SSH密钥对 在本地计算机上打开终端或命令提示符,执行以下命令&#…

约瑟夫环问题【算法 06】

约瑟夫环问题 约瑟夫环(Josephus Problem)是一个经典的数学和计算问题,其核心是解决在一群人围成一圈,每隔一定人数就淘汰一个人,最后剩下的那个人的编号。 问题描述 假设有 ( n ) 个人围成一圈,从第一个…

负载调制平衡放大器LMBA理论分析与ADS理想架构仿真

负载调制平衡放大器LMBA理论分析与ADS理想架构仿真 负载调制平衡放大器Load Modulation Balanced PA,简称LMBA是2016年Cripps大佬分析实践的: An Efficient Broadband Reconfigurable Power Amplifier Using Active Load Modulation 本文ADS工程下载链…

回顾MVC

Tomcat是servlet的容器,想用HttpServlet需要导入tomcat jar包 下图是没用springmvc时的场景,首先在web.xml里面配置访问路径为/Hello然后 通过get请求去调用login方法最后重定向到index.jsp中 index.jsp里面的内容 重定向到index.jsp中 在控制台获取到username里面的…