论文阅读《Point NeRF:Point-based Neural Radiance Fileds》

论文地址:https://arxiv.org/abs/2201.08845
源码地址:https://xharlie.github.io/projects/project_sites/pointnerf


概述

  体素神经渲染的方法生成高质量的结果非常耗时,且对不同场景需要重新训练(模型不具备泛化能力),而基于MVS的方法可以快速重建场景。Point NeRF结合了两种方法的优点,通过在基于光线进行的渲染管道中聚合场景表面附近的神经点特征来有效渲染。Point NeRF与可以与其他 3D 重建方法结合,并使用一种新的剪枝与生长机制来处理此类方法中的错误与异常值,其重建方法比NeRF提升了30倍。


Point-NeRF 场景表示

在这里插入图片描述

体渲染与辐射场

  经典的体渲染模型可以通过沿着可微的光线来计算预测的结果,如式1所示:
c = ∑ M τ j ( 1 − exp ⁡ ( − σ j Δ j ) ) r j , τ j = exp ⁡ ( − ∑ t = 1 j − 1 σ t Δ t ) . (1) \begin{aligned} c & =\sum_{M} \tau_{j}\left(1-\exp \left(-\sigma_{j} \Delta_{j}\right)\right) r_{j}, \\ \tau_{j} & =\exp \left(-\sum_{t=1}^{j-1} \sigma_{t} \Delta_{t}\right) . \end{aligned}\tag{1} cτj=Mτj(1exp(σjΔj))rj,=exp(t=1j1σtΔt).(1)
其中 τ \tau τ 表示透过率, σ j \sigma_j σj 表示每个点的体密度, r j r_j rj 表示点的颜色 , Δ \Delta Δ 表示相邻采样点之间的距离。
辐射场是使用每个点的3D坐标与方向信息来表示空间中点的颜色与不透明度的一种方式。NeRF使用空间点的坐标与方向信息来回归辐射场。

基于点云的辐射场

  神经点云表示为 P = { ( p i , f i , γ i ) ∣ i = 1 , . . . , N } P=\{(p_i, f_i, \gamma_i)|i=1, ...,N\} P={(pi,fi,γi)i=1,...,N} ,其中 p i p_i pi 表示空间点的位置, f i f_i fi 表示的局部场景信息的特征向量, γ i ∈ [ 0 , 1 ] \gamma_i\in[0,1] γi[0,1] 表示点的置信度(点在物体表明的概率),Point NeRF使用神经点云来回归辐射场。

  给定任意 3D 点的位置 x x x ,得到半径为 R R R 的范围内的 K K K 个邻域神经点。Point-NeRF可以被抽象为一个神经模块——任意点沿着任意方向从邻域点K回归出对应的 σ \sigma σ (不透明度)与 r r r (RGB值):
( σ , r ) =  Point - NeRF ⁡ ( x , d , p 1 , f 1 , γ 1 , … , p K , f K , γ K ) (2) (\sigma, r)=\text { Point -} \operatorname{NeRF}\left(x, d, p_{1}, f_{1}, \gamma_{1}, \ldots, p_{K}, f_{K}, \gamma_{K}\right)\tag{2} (σ,r)= Point -NeRF(x,d,p1,f1,γ1,,pK,fK,γK)(2)
PointNeRF使用类似PointNet的多层MLP结构来回归辐射场。

Per-Point processing:使用基于MLP的F来对 x x x 的邻域神经点处理,得到表示 x x x 位置的特征向量:
f i , x = F ( f i , x − p i ) (3) f_{i, x}=F(f_i, x-p_i)\tag{3} fi,x=F(fi,xpi)(3)
使用了相对位置信息 x − p i x-p_i xpi 有利于提高模型的泛化能力。
View-dependent radiance regression: 对邻域内神经点的特征向量进行加权得到表示位置 x x x 的特征向量:
f x = ∑ i γ i w i ∑ w i f i , x , where  w i = 1 ∥ p i − x ∥ .  (4) f_{x}=\sum_{i} \gamma_{i} \frac{w_{i}}{\sum w_{i}} f_{i, x} \text {, where } w_{i}=\frac{1}{\left\|p_{i}-x\right\|} \text {. }\tag{4} fx=iγiwiwifi,x, where wi=pix1(4)
其中 γ i \gamma_i γi i i i 点的置信度。
  使用基于MLP的 R R R 来回归得到 x x x 位置关于 d d d 方向的RGB值:
r = R ( f x , d ) (5) r = R(f_x, d)\tag{5} r=R(fx,d)(5)
Density regression:使用基于MLP的 T T T 来回归不透明度,并使用邻域点的不透明度进行加权,如式6所示:
σ i = T ( f i , x ) σ = ∑ i σ i γ i w i ∑ w i , w i = 1 ∥ p i − x ∥ (6) \begin{aligned} \sigma_{i} & =T\left(f_{i, x}\right) \\ \sigma & =\sum_{i} \sigma_{i} \gamma_{i} \frac{w_{i}}{\sum w_{i}}, w_{i}=\frac{1}{\left\|p_{i}-x\right\|} \end{aligned}\tag{6} σiσ=T(fi,x)=iσiγiwiwi,wi=pix1(6)
  Point-NeRF在3D层面进行体渲染,通过神经点引导模型在物体表面进行渲染,避免了在大范围深度场景采样,减小了计算量。

Point-NeRF 重建

在这里插入图片描述

Generating initial pointbased radiance fields

神经点的位置与置信度:以多张带有位姿的视图为输入,基于MVSNet获取点云与每个点的置信度:
{ p i , γ i } = G p , γ ( I q , Φ q , I q 1 , Φ q 1 , I q 2 , Φ q 2 , … ) (7) \left\{p_{i}, \gamma_{i}\right\}=G_{p, \gamma}\left(I_{q}, \Phi_{q}, I_{q_{1}}, \Phi_{q_{1}}, I_{q_{2}}, \Phi_{q_{2}}, \ldots\right)\tag{7} {pi,γi}=Gp,γ(Iq,Φq,Iq1,Φq1,Iq2,Φq2,)(7)
神经点特征:使用带有3个下采样层的 VGG 架构 G f G_f Gf 来提取 2D 图像的多尺度特征图 I q I_q Iq
{ f i } = G f ( I q ) (8) \left\{f_{i}\right\}=G_{f}\left(I_{q}\right)\tag{8} {fi}=Gf(Iq)(8)

Optimizing pointbased radiance fields

  初始点云的有空洞与离群点会影响渲染质量,使用点云剪枝与生长来对初始点云进行优化。
剪枝:使用置信度 γ i \gamma_i γi 来对初始点云剪枝,每迭代 10k 次就给将 γ i < 0.1 \gamma_i<0.1 γi<0.1 的点云剔除。
在这里插入图片描述
  同时使用置信度稀疏损失函数,使得模型在优化过程中将置信度趋近于 0 或趋近为 1:
L sparse  = 1 ∣ γ ∣ ∑ γ i [ log ⁡ ( γ i ) + log ⁡ ( 1 − γ i ) ] (9) \mathcal{L}_{\text {sparse }}=\frac{1}{|\gamma|} \sum_{\gamma_{i}}\left[\log \left(\gamma_{i}\right)+\log \left(1-\gamma_{i}\right)\right]\tag{9} Lsparse =γ1γi[log(γi)+log(1γi)](9)
生长:使用点云生长方法来填充空洞区域的点云,选择渲染过程中不透明度最高的点 x j g x_{jg} xjg 为初始点:
α j = 1 − exp ⁡ ( − σ j Δ j ) , j g = argmax ⁡ j α j (10) \alpha_{j}=1-\exp \left(-\sigma_{j} \Delta_{j}\right), \quad j_{g}=\underset{j}{\operatorname{argmax}} \alpha_{j} \tag{10} αj=1exp(σjΔj),jg=jargmaxαj(10)
计算与 x j g x_{jg} xjg 最近的领域点的距离 ϵ j g \epsilon_{jg} ϵjg,如果同时满足 α j g > T o p a c i t y \alpha_{jg}>T_{opacity} αjg>Topacity ϵ j g > T d i s t \epsilon_{jg}>T_{dist} ϵjg>Tdist 则生长一个点,这些天满足在物体表面附近且远离其他点,通过重复迭代这种生长策略来得到覆盖物体表面的点云。
在这里插入图片描述
损失函数
L opt  = L render  + a L sparse  (11) \mathcal{L}_{\text {opt }}=\mathcal{L}_{\text {render }}+a \mathcal{L}_{\text {sparse }}\tag{11} Lopt =Lrender +aLsparse (11)
其中 L render  \mathcal{L}_{\text {render }} Lrender  为渲染过程中的损失函数, α = 2 e − 3 \alpha=2e^{-3} α=2e3


实验结果

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

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

多线程 (六) wait和notify

&#x1f389;&#x1f389;&#x1f389;点进来你就是我的人了 博主主页&#xff1a;&#x1f648;&#x1f648;&#x1f648;戳一戳,欢迎大佬指点!人生格言&#xff1a;当你的才华撑不起你的野心的时候,你就应该静下心来学习! 欢迎志同道合的朋友一起加油喔&#x1f9be;&am…

Qt实践项目:仿Everything软件实现一个QtEverything

⭐️我叫忆_恒心&#xff0c;一名喜欢书写博客的在读研究生&#x1f468;‍&#x1f393;。 如果觉得本文能帮到您&#xff0c;麻烦点个赞&#x1f44d;呗&#xff01; 近期会不断在专栏里进行更新讲解博客~~~ 有什么问题的小伙伴 欢迎留言提问欧&#xff0c;喜欢的小伙伴给个三…

九【springboot】

Springboot一 Spring Boot是什么二 SpringBoot的特点1.独立运行的spring项目三 配置开发环境四 配置开发环境五 创建 Spring Boot 项目1.在 IntelliJ IDEA 欢迎页面左侧选择 Project &#xff0c;然后在右侧选择 New Project&#xff0c;如下图2.在新建工程界面左侧&#xff0c…

GPT-4来了!看看她究竟强在哪里!

GPT-4来了&#xff01;OpenAI老板Sam Altman直接开门见山地介绍说&#xff1a;这是我们迄今为止功能最强大的模型&#xff01;GPT-4是一个超大的多模态模型&#xff0c;也就是说&#xff0c;它的输入可以是文字&#xff08;上限2.5万字&#xff09;&#xff0c;还可以是图像。我…

【洛谷刷题】蓝桥杯专题突破-深度优先搜索-dfs(7)

目录 写在前面&#xff1a; 题目&#xff1a;P1596 [USACO10OCT]Lake Counting S - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 题目描述&#xff1a; 输入格式&#xff1a; 输出格式&#xff1a; 输入样例&#xff1a; 输出样例&#xff1a; 解题思路&#xff1a; …

list底层的简单实现(万字长文详解!)

list底层的简单实现 文章目录list底层的简单实现list_node的实现&#xff01;list_node的构造函数list的迭代器&#xff01;——重点&#xff01;list迭代器的成员变量迭代器的构造函数* 重载前置 重载后置 重载前置-- 重载后置-- 重载! 重载 重载-- 重载list的const迭代器——…

提高曝光率:外贸网站如何充分利用谷歌优化赢得客户

自从我从事外贸行业以来&#xff0c;谷歌优化一直是我关注的重点。 作为一个外贸从业者&#xff0c;我深知提高网站在谷歌搜索引擎中的排名对企业的重要性。 那么&#xff0c;如何利用谷歌优化来提高外贸网站的曝光率&#xff0c;从而赢得更多客户呢&#xff1f; 以下是我在…

单例模式,饿汉与懒汉

文章目录什么是单例模式单例模式的两种形式饿汉模式懒汉模式懒汉模式与饿汉模式是否线程安全懒汉模式的优化什么是单例模式 单例模式其实就是一种设计模式&#xff0c;跟象棋的棋谱一样&#xff0c;给出一些固定的套路帮助你更好的完成代码。设计模式有很多种&#xff0c;单例…

Ubuntu-C语言下的应用

文章目录一、Ubuntu下C语言的应用&#xff08;一&#xff09;如何使用gedit创建/打开/保存/关闭文件&#xff08;二&#xff09;gedit中相关参数配置&#xff1a;首选项&#xff08;三&#xff09;ubuntu下C语言的编译器 -- gcc一、Ubuntu下C语言的应用 &#xff08;一&#x…

GPIO四种输入和四种输出模式

GPIO的结构图如下所示&#xff1a; 最右端为I/O引脚&#xff0c;左端的器件位于芯片内部。I/O引脚并联了两个用于保护的二极管。 输入模式 从I/O引脚进来就遇到了两个开关和电阻&#xff0c;与VDD相连的为上拉电阻&#xff0c;与VSS相连的为下拉电阻。再连接到TTL施密特触发…

机器学习算法——决策树详解

文章目录前言&#xff1a;决策树的定义熵和信息熵的相关概念信息熵的简单理解经典的决策树算法ID3算法划分选择或划分标准——信息增益ID3算法的优缺点C4.5算法信息增益率划分选择或划分标准——Gini系数&#xff08;CART算法&#xff09;Gini系数计算举例CART算法的优缺点其他…

RK3588平台开发系列讲解(显示篇)DP显示调试方法

平台内核版本安卓版本RK3588Linux 5.10Android 12文章目录 一、查看 connector 状态二、强制使能/禁⽤ DP三、DPCP 读写四、Type-C 接口 Debug五、查看 DP 寄存器六、查看 VOP 状态七、查看当前显示时钟八、调整 DRM log 等级沉淀、分享、成长,让自己和他人都能有所收获!😄…

C++成神之路 | 第一课【步入C++的世界】

目录 一、认识C++ 1.1、关于 C++ 1.2、C++的前世今生 1.2.1、C+

【分享NVIDIA GTC大会干货】与Jetson嵌入式平台工程师的深度挖掘问答

Connect with the Experts: A Deep-Dive Q&A with Jetson Embedded Platform Engineers [CWES52132]NVIDIA Jetson 是世界领先的边缘人工智能计算平台。它具有高性能和低功耗的特点&#xff0c;是机器人、无人机、移动医疗成像和智能视频分析等计算密集型嵌入式应用的理想选…

【蓝桥杯集训·每日一题】AcWing 1051. 最大的和

文章目录一、题目1、原题链接2、题目描述二、解题报告1、思路分析2、时间复杂度3、代码详解三、知识风暴线性DP一、题目 1、原题链接 1051. 最大的和 2、题目描述 对于给定的整数序列 A{a1,a2,…,an}&#xff0c;找出两个不重合连续子段&#xff0c;使得两子段中所有数字的和最…

半入耳式蓝牙耳机哪款音质好?音质最好的半入耳蓝牙耳机推荐

蓝牙耳机分为头戴式、入耳式和半入耳式三种&#xff0c;大多数人都会选择入耳式和半入耳式&#xff0c;因为它的体积小&#xff0c;重量轻&#xff0c;更适合于随身携带。半入耳式采用了平头塞设计&#xff0c;大部分都位于耳道之外&#xff0c;所以戴起来更加舒适&#xff0c;…

【kubernetes云原生】k8s标签选择器使用详解

目录 一、标签选择器来源 二、什么是标签选择器 2.1 标签选择器概述 2.2 标签选择器概述属性 三、标签使用场景 四、标签选择器特点 4.1 基本特点 4.2 核心标签选择器 4.3 补充说明 五、标签选择器常用操作命令 5.1 前置准备 5.2 常用操作命令 5.2.1 查看namespac…

使用Android架构模板

使用Android架构模板 项目介绍 为了方便开发者引入最新的Android架构组建进行开发&#xff0c;Google官方给我们引入了一个架构模板&#xff0c;方便我们快速进入开发。 github地址&#xff1a; https://github.com/android/architecture-templates 该模板遵循官方架构指南 …

小白怎么系统的自学计算机科学和黑客技术?

我把csdn上有关自学网络安全、零基础入门网络安全的回答大致都浏览了一遍&#xff0c;最大的感受就是“太复杂”&#xff0c;新手看了之后只会更迷茫&#xff0c;还是不知道如何去做&#xff0c;所以站在新手的角度去写回答&#xff0c;应该把回答写的简单易懂&#xff0c;“傻…

Maven依赖加载不进来? 依赖加载失败? 你值得掌握如何排查的方法

本文目录前言1. 确认是否添加了spring-boot-starter-web依赖2. 如果添加了spring-boot-starter-web依赖&#xff0c;刷新以后还飘红&#xff1f;3. 确认父项目加spring-boot-dependencies了吗&#xff1f;3.1 如果是因为没加spring-boot-dependencies3.2 如果已经加了spring-bo…