NERF论文笔记

NeRF:Representing Scene as Neural Radiance Fields for View Synthesis 笔记

摘要

实现了一个任意视角视图生成算法:输入稀疏的场景图像,通过优化连续的Volumetric场景函数实现;用全连接深度网络表达场景,输入是一个连续的5维坐标,3D坐标+2D角度(航向、俯仰角),输出Volume density和依赖于视图的emitted radiance,查询5维坐标并用经典的Volume Rendering把输出的颜色与强度投影到图像。

介绍

a. march camera rays,我理解为从焦点投射射线到场景,获取3D坐标点。
b. 用3D点 x \bold{x} x与对应的2D角度(用单位向量 d \bold{d} d)输入,输出颜色 c \bold{c} c和强度 σ \sigma σ
c. 合成图像。

Neural Radiance Field场景表达

F θ : ( x , d ) → ( c , σ ) F_{\theta}:(\bold{x},\bold{d})\rarr(\bold{c},\sigma) Fθ:(x,d)(c,σ)
输出 σ \sigma σ只与输入位置坐标 x \bold{x} x有关, c \bold{c} c则与 x \bold{x} x d \bold{d} d有关。

网络结构,输入 x \bold{x} x的8层全连接层,均为256通道,各层带ReLU激活,输出 σ \sigma σ、256维特征,此特征再与 d \bold{d} d聚合,输入一层带ReLU的全连接层,输出 x \bold{x} x

Volume Rendering

位置坐标 x \bold{x} x表达为相机射线 r \bold{r} r r ( t ) = o + t d \bold{r}(t)=\bold{o}+t\bold{d} r(t)=o+td,t是从焦点 o o o出发的长度,积分上下界是远端、近端。
C ( r ) = ∫ t n t f T ( t ) σ ( r ( t ) ) c ( r , d ) d t T ( t ) = e x p ( − ∫ t n t σ ( r ( s ) ) d s ) C(\bold{r})=\int_{t_{n}}^{t_{f}} T(t)\sigma(\bold{r}(t))\bold{c}(\bold{r},d)dt\\T(t)=exp(-\int_{t_{n}}^t\sigma(\bold{r}(s))ds) C(r)=tntfT(t)σ(r(t))c(r,d)dtT(t)=exp(tntσ(r(s))ds)

T ( t ) T(t) T(t)的含义从 t n t_n tn t t t累积的transmittance,“the accumulated transmittance along the ray”,是射线从 t n t_n tn t t t未遇到其他粒子的概率。
求该积分的数值方法,Deterministic quadrature,笔者初步理解是一种数值计算方法,离散化近似:将区间分为N段,从每一段随机取样。
t i ∼ U [ t n + i − 1 N ( t f − t n ) , t n + i N ( t f − t n ) ] t_i\sim U[t_n+\frac{i-1}{N}(t_f-t_n),t_n+\frac{i}{N}(t_f-t_n)] tiU[tn+Ni1(tftn),tn+Ni(tftn)]
参考Volume Rendering综述,
C ^ ( r ) = ∑ i = 1 N T i ( 1 − e x p ( − σ i δ i ) ) c i T i = e x p ( − ∑ j = 1 i − 1 σ j δ j ) δ j = t j + 1 − t j \hat C(\bold{r})=\sum_{i=1}^NT_i(1-exp(-\sigma_i\delta_i))\bold{c}_i\\ T_i=exp(-\sum_{j=1}^{i-1}\sigma_j\delta_j)\\ \delta_j=t_{j+1}-t_j C^(r)=i=1NTi(1exp(σiδi))ciTi=exp(j=1i1σjδj)δj=tj+1tj

两项技术改进

只有上述设计不能达到SOTA,为此添加了两项重要改进,其中第二项是为了高效地实现第一项。

  1. 位置编码

    直接输入上述5维做渲染,在场景中颜色和几何的高频变化的条件下表现较差,有参考证明深度网络偏向于学习低频函数,并发现在输入网络前用高频函数将数据映射到更高维,网络能更好拟合含有高频变化的数据。5维输入的各个元素 p p p被映射为长为2L的向量
    γ ( p ) = ( s i n ( 2 0 π p ) , c o s ( 2 0 π p ) , . . . , s i n ( 2 L − 1 π p ) , c o s ( 2 L − 1 π p ) ) \gamma(p)=(sin(2^0{\pi}p),cos(2^0{\pi}p),...,sin(2^{L-1}{\pi}p),cos(2^{L-1}{\pi}p)) γ(p)=(sin(20πp),cos(20πp),...,sin(2L1πp),cos(2L1πp))
    其中,位置元素L=10,方向元素L=4;各维元素均归一化到 [ − 1 , 1 ] [-1,1] [1,1]
    Transformer有相似处理,但它的目的是给序列提供位置标签,因为Transformer结构不能标记顺序;NERF中的位置编码则是为了将输入升维以使得它的MLP能拟合更高频函数;从投影重建蛋白质3D结构的模型方法也使用了该思路。

  2. 多层采样
    采用两个网络,一个粗略,一个精细。首先用第一个网络生成颜色,每条射线输入 N c N_c Nc个位置,然后用其结果引导重新采样,使得采样集中到体元附近,提高有效信息位置的样本权重。

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

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

相关文章

Unity(第二十部)效果 粒子、线条和拖尾

1、粒子系统 粒子系统介绍 Unity 粒子系统是 Unity 引擎中用于创建和控制粒子效果的工具。它可以模拟各种自然现象,如火焰、烟雾、雨滴等,也可以用于创建特效,如魔法光芒、爆炸效果等。 粒子系统组成 在 Unity 中,粒子系统由发射…

用 Dockerfile为镜像添加SSH服务

1、基础镜像ubuntu:18.04 2、替换为国内的安装源 3、安装openssh-server 4、允许root用户远程登陆 5、暴露端口22 6、服务开机自启动 1.创建目录 [rootopenEuler-node1 db]# mkdir sshd_ubuntu 2.创建 Dockerfile、 run.sh 、authorized_keys、vim aliyun.list 文件 [rootop…

网盘拉新如何对接?盘点最靠谱的一手渠道平台

2024网盘行业再次重燃战火。字节旗下产品头条搜索极速版APP、悟空浏览器APP推出对应的网盘功能,刚刚开放了拉新推广,现在是一个不能错过新项目的好时机。 如果你对网盘拉新推广充满热情,千万不要错过星子助推联合字节推出的网盘项目机会。小…

python自动化之如何利用allure生成测试报告

Allure测试报告框架帮助你轻松实现”高大上”报告展示。本文通过示例演示如何从0到1集成Allure测试框架。重点展示了如何将Allure集成到已有的自动化测试工程中、以及如何实现报表的优化展示。Allure非常强大,支持多种语言多种测试框架,无论是Java/Pytho…

成功的交易没有对错,只有逻辑

大部分人将交易失败归咎于心态,但其实我们是否认真思考过自己的基本功是否扎实呢?这篇文章将引导你换个角度看待交易,让你明白自己应该努力的方向。 曾经,你或许认为资金体量小、信息不对称、技术不过关、心态不过硬是阻碍交易发展…

TikTok外贸系统的核心功能及其源代码分享!

随着全球化的不断推进,外贸业务成为越来越多企业的增长动力,TikTok作为一个全球性的社交媒体平台,其用户基数庞大、活跃度高,为外贸业务提供了无限的商机。 为了帮助企业在TikTok上更好地开展外贸业务,TikTok外贸系统…

【DDD】学习笔记-聚合和聚合根:怎样设计聚合?

今天我们来学习聚合(Aggregate)和聚合根(AggregateRoot)。 我们先回顾下上一讲,在事件风暴中,我们会根据一些业务操作和行为找出实体(Entity)或值对象(ValueObject&…

47、WEB攻防——通用漏洞Java反序列化EXP生成数据提取组件安全

文章目录 序列化和反序列化的概念: 序列化:把java对象转换成字节流的过程;反序列化:把字节流恢复为java对象的过程。 对象的序列化主要有两种用途: 把对象的字节流永久的保存在硬盘上,通常存放在一个文件…

网络分析工具简介及汇总

文章目录 一、网络分析工具软件是什么二、网络分析工具软件作用三、常见的网络分析工具 一、网络分析工具软件是什么 网络分析工具软件是一种用于捕获、分析和解释网络数据包的工具。它们可以直接从网络接口上捕获数据包,并提供详细的信息和统计数据,以帮…

xss.haozi.me:0x0B

<svg><script>(1)</script>

洛谷 B3620 x 进制转 10 进制

题目描述 给一个小整数 x 和一个 x 进制的数 S。将 S 转为 10 进制数。对于超过十进制的数码&#xff0c;用 A&#xff0c;B&#xff0c;…… 表示。 输入格式 第一行一个整数 x; 第二行一个字符串 S。 输出格式 输出仅包含一个整数&#xff0c;表示答案。 输入输出样例…

【JavaScript】面试手撕浅拷贝

【JavaScript】面试手撕浅拷贝 引入 浅拷贝和深拷贝应该是面试时非常常见的问题了&#xff0c;为了能将这两者说清楚&#xff0c;于是打算用两篇文章分别解释下深浅拷贝。 PS: 我第一次听到拷贝这个词&#xff0c;有种莫名的熟悉感&#xff0c;感觉跟某个英文很相似&#xff…

Linux文本处理三剑客:awk(内置函数详解笔记)

Linux系统中&#xff0c;AWK 是一个非常强大的文本处理工具&#xff0c;它的内置函数使得对文本数据进行处理更加高效和便捷。 本文将介绍 AWK 内置函数的几种主要类型&#xff1a; 算数函数字符串函数时间函数位操作函数其他常用函数 我们将使用一个示例文本文件来演示这些函…

局域网如何搭建服务器?

随着网络的普及和应用场景的不断拓展&#xff0c;局域网搭建服务器逐渐成为大家关注的话题。在日常生活和工作中&#xff0c;我们经常需要通过局域网和互联网进行文件共享、资源访问等操作&#xff0c;而搭建服务器则是实现这些功能的重要手段之一。本文将针对局域网搭建服务器…

SwiftUI 如何在运行时从底层动态获取任何 NSObject 对象实例

概览 众所周知,SwiftUI 的推出极大地方便了我们这些秃头码农们搭建 App 界面。不过,有时我们仍然需要和底层的 UIKit 对象打交道。比如:用 SwiftUI 未暴露出对象的接口改变视图的行为或外观。 从上图可以看到,我们 SwiftUI 代码并没有设置视图的背景色,那么它是怎么变成绿…

vscode 本地/远程添加python解释器

文章目录 1. 背景2. 增加python解释器 1. 背景 我们在使用 vscode 去远程调试代码时&#xff0c;如果环境存在多个 Python 版本&#xff08;如用 conda 管理&#xff09;&#xff0c;没有选择正确的 Python 解释器会导致少包、库不适配等各种问题 2. 增加python解释器 windo…

鸿蒙系统适配的流程

鸿蒙系统适配的流程通常涉及以下关键步骤&#xff0c;以下是鸿蒙系统适配的一般流程&#xff0c;具体流程可能会根据项目的具体需求和开发团队的情况进行调整和优化。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 1. 准备工作&#…

超越脆弱:用否定法策略优化考研复试准备

很多情况下,你的想象力会为当前的世界添加一些东西。很抱歉,我会在本章中告诉你,这种方法完全是落后的方法:根据脆弱性和反脆弱性的概念,严格来说,正确的想象就是从未来中排除或削减不属于未来的东西,采用否定法,脆弱的事物终将破碎。——《反脆弱:从不确定性中获益》…

盘点:国家智能算力中心

文章目录 1. Main2. My thoughtsReference 1. Main 按照《中国算力白皮书&#xff08;2022年&#xff09;》的定义&#xff0c;算力主要分为四部分&#xff1a;通用算力、智能算力、超算算力、边缘算力。通用算力以CPU芯片输出的计算能力为主&#xff1b;智能算力以GPU、FPGA、…

【一起学习Arcade】(6):属性规则实例_约束规则和验证规则

一、约束规则 约束规则用于指定要素上允许的属性配置和一般关系。 与计算规则不同&#xff0c;约束规则不用于填充属性&#xff0c;而是用于确保要素满足特定条件。 简单理解&#xff0c;约束规则就是约束你的编辑操作在什么情况下可执行。 如果出现不符合规则的操作&#…