3D 生成重建005-NeRF席卷3D的表达形式

2023-10-10 17:20

本文主要是介绍3D 生成重建005-NeRF席卷3D的表达形式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

3D生成重建005-NeRF席卷3D的表达形式


文章目录

    • 0 论文工作
    • 1 论文方法
      • 1.1 体渲染
      • 1.2 离散积分
      • 1.3位置编码
      • 1.4分层采样
      • 1.5 影响
    • 2 效果

0 论文工作

NeRF(神经辐射场技术)最早2020年提出用于新视图合成任务,并在这个领域取得了优秀的效果。如下图所示,受到体渲染的启发,论文通过已知的一组相机参数对物体进行图像采集,然后通过这组图像去训练一个MLP,MLP训练好之后能合成新视图的图像,且合成质量很高。
在这里插入图片描述

参考
NeRF: Representing Scenes as Neural Radiance Fields for View Synthes

1 论文方法

虽然我们的输入是图像,但是实际上nerf的基本原理是在射线的层次进行。下图是相机成像的简化原理,主要包括相机光心(小孔),物体,图像平面和虚平面。nerf的相关原理都是在光心,虚平面和3d物体之间展开。
在这里插入图片描述

通过若干已知相机参数对一个物体进行多角度的图像采集后,得到物体环绕一周的密集视图。借助相机将图像拆分成若干条射线进行训练。如下图,以相机中心O通过虚平面想某一像素位置发出的光线为例。训练一个MLP,输入空间点的位置(x,y,z)和相机信息 ( θ 和 ϕ ) (\theta 和\phi) (θϕ)去预测他的密度和颜色 ( σ , R G B ) (\sigma,RGB) (σ,RGB),通过积分的形式用光线上点的 ( σ , R G B ) (\sigma,RGB) (σ,RGB)预预测虚平面上该位置的RGB,然后通过对比损失去优化MLP。简化成 F θ ( X , d ) = ( c , σ ) F_{\theta}(X,d)=(c,\sigma) Fθ(X,d)=(c,σ)输入体空间中任意一点的位置和光线的方向,去预测他的颜色c和密度 σ \sigma σ
在这里插入图片描述

1.1 体渲染

其中 σ x \sigma_{x} σx表示光线在位置为x的例子处终止的概率,也可以叫密度或者不透明度。光线r的颜色表示为 C r C_r Cr,光线表示为 r ( t ) = O + t d r(t)=O+td r(t)=O+td,O表示相机光心,t表示步长,d表示光线的方向,用 t n 和 t f t_n和t_f tntf表示体渲染的边界。那么这条光线的颜色可以表示为 C ( r ) = ∫ t n t f T ( t ) σ ( r ( t ) ) c ( r ( t ) , d ) ) d t C(r)=\int_{t_n}^{t_f}T(t)\sigma(r(t))c(r(t),d))dt C(r)=tntfT(t)σ(r(t)c(r(t),d))dt
上面的公式主要包含了3项其中 σ ( r ( t ) , c ( r ( t ) , d ) \sigma(r(t),c(r(t),d) σ(r(t),c(r(t),d)分别表示位置t处的密度和颜色, T ( t ) = e x p ( − ∫ t n t σ ( r ( s ) ) d s ) T(t)=exp(-\int_{t_n}^t\sigma(r(s))ds) T(t)=exp(tntσ(r(s))ds)表示前面所有点的累计投射率,即光线穿过前面的所有点的概率。
整体的表达就是,光线的颜色等于每一点处累积透射率和终止率和颜色的积分。
显然当点x是连续的时候,这个积分的计算是很困难的,因此下面使用离散积分的情况。

1.2 离散积分

现在把 [ t n , t f ] [t_n,t_f] [tn,tf]N等分那么ti表示一个区间内的点 t i t_i ti~ u [ t n + i − 1 N ( t f − t n ) , t n + i N ( t f − t n ) ] u[t_n+\frac{i-1}{N}(t_f-t_n),t_n+\frac{i}{N}(t_f-t_n)] u[tn+Ni1(tftn),tn+Ni(tftn)]
那么体渲染的积分方程变为 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 ) \hat{C(r)}=\sum_{i=1}^{N}T_i(1-exp(-\sigma_i\delta_i))c_i 其中T_i=exp(-\sum_{j=1}^{i-1}\sigma_j\delta_j) C(r)^=i=1NTi(1exp(σiδi))ci其中Ti=exp(j=1i1σjδj)
上面 的式子中 δ i = t i + 1 − t i \delta_i=t_{i+1}-t_i δi=ti+1ti表示间距。 1 − e x p ( − σ i δ i ) 1-exp(-\sigma_i\delta_i) 1exp(σiδi)等价于原来的 σ \sigma σ
整体上相当于把积分变成每个bin区间的和了。

1.3位置编码

因为MLP在预测xyz这种位置相关的问题时表示高频信息的能力较差,因此通过位置表明的形式将输入转换为高频信息。
γ ( 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))
对于x来说L=10,对于d来说L=4
在这里插入图片描述

1.4分层采样

因为遮挡和空白区域也会产生大量计算,论文使用Hierarchical volume sampling,采用由粗到细的策略,根据粗网络的结果,在细网络中很具重要程度进行采样。改写的公式为
C ( r ) ^ = ∑ i = 1 N c w i c i , 其中 w i = T i ( 1 − e x p ( − σ i δ i ) ) \hat{C(r)}=\sum_{i=1}^{N_c}w_ic_i,其中w_i=T_i(1-exp(-\sigma_i\delta_i)) C(r)^=i=1Ncwici,其中wi=Ti(1exp(σiδi))
重要程度用 w ^ = w i ∑ j = 1 N c w j \hat w=\frac{w_i}{\sum_{j=1}^{N_c}w_j} w^=j=1Ncwjwi表示。

1.5 影响

后续研究者对nerf的渲染速度训练速度和质量进行优化,使得nerf逐渐成为一种很重要的3d表达形式。

2 效果

在这里插入图片描述
在这里插入图片描述

这篇关于3D 生成重建005-NeRF席卷3D的表达形式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

使用Python绘制3D堆叠条形图全解析

《使用Python绘制3D堆叠条形图全解析》在数据可视化的工具箱里,3D图表总能带来眼前一亮的效果,本文就来和大家聊聊如何使用Python实现绘制3D堆叠条形图,感兴趣的小伙伴可以了解下... 目录为什么选择 3D 堆叠条形图代码实现:从数据到 3D 世界的搭建核心代码逐行解析细节优化应用场景:3D 堆叠图

Python实现自动化Word文档样式复制与内容生成

《Python实现自动化Word文档样式复制与内容生成》在办公自动化领域,高效处理Word文档的样式和内容复制是一个常见需求,本文将展示如何利用Python的python-docx库实现... 目录一、为什么需要自动化 Word 文档处理二、核心功能实现:样式与表格的深度复制1. 表格复制(含样式与内容)2

python如何生成指定文件大小

《python如何生成指定文件大小》:本文主要介绍python如何生成指定文件大小的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录python生成指定文件大小方法一(速度最快)方法二(中等速度)方法三(生成可读文本文件–较慢)方法四(使用内存映射高效生成

Maven项目中集成数据库文档生成工具的操作步骤

《Maven项目中集成数据库文档生成工具的操作步骤》在Maven项目中,可以通过集成数据库文档生成工具来自动生成数据库文档,本文为大家整理了使用screw-maven-plugin(推荐)的完... 目录1. 添加插件配置到 pom.XML2. 配置数据库信息3. 执行生成命令4. 高级配置选项5. 注意事

MybatisX快速生成增删改查的方法示例

《MybatisX快速生成增删改查的方法示例》MybatisX是基于IDEA的MyBatis/MyBatis-Plus开发插件,本文主要介绍了MybatisX快速生成增删改查的方法示例,文中通过示例代... 目录1 安装2 基本功能2.1 XML跳转2.2 代码生成2.2.1 生成.xml中的sql语句头2

使用Python自动化生成PPT并结合LLM生成内容的代码解析

《使用Python自动化生成PPT并结合LLM生成内容的代码解析》PowerPoint是常用的文档工具,但手动设计和排版耗时耗力,本文将展示如何通过Python自动化提取PPT样式并生成新PPT,同时... 目录核心代码解析1. 提取 PPT 样式到 jsON关键步骤:代码片段:2. 应用 JSON 样式到

SpringBoot实现二维码生成的详细步骤与完整代码

《SpringBoot实现二维码生成的详细步骤与完整代码》如今,二维码的应用场景非常广泛,从支付到信息分享,二维码都扮演着重要角色,SpringBoot是一个非常流行的Java基于Spring框架的微... 目录一、环境搭建二、创建 Spring Boot 项目三、引入二维码生成依赖四、编写二维码生成代码五

Android与iOS设备MAC地址生成原理及Java实现详解

《Android与iOS设备MAC地址生成原理及Java实现详解》在无线网络通信中,MAC(MediaAccessControl)地址是设备的唯一网络标识符,本文主要介绍了Android与iOS设备M... 目录引言1. MAC地址基础1.1 MAC地址的组成1.2 MAC地址的分类2. android与I

PyQt5+Python-docx实现一键生成测试报告

《PyQt5+Python-docx实现一键生成测试报告》作为一名测试工程师,你是否经历过手动填写测试报告的痛苦,本文将用Python的PyQt5和python-docx库,打造一款测试报告一键生成工... 目录引言工具功能亮点工具设计思路1. 界面设计:PyQt5实现数据输入2. 文档生成:python-

Python使用Matplotlib绘制3D曲面图详解

《Python使用Matplotlib绘制3D曲面图详解》:本文主要介绍Python使用Matplotlib绘制3D曲面图,在Python中,使用Matplotlib库绘制3D曲面图可以通过mpl... 目录准备工作绘制简单的 3D 曲面图绘制 3D 曲面图添加线框和透明度控制图形视角Matplotlib