【NeRF】Point-NeRF:Point-NeRF: Point-based Neural Radiance Fields阅读记录

文章目录

  • 个人理解
  • 摘要
  • 简介
  • 基于点的NeRF表示
    • 体渲染和辐射场(Volume rendering and radiance fields)
    • 基于点的辐射场(Point-based radiance field)
    • 逐点处理(Per-point processing)
    • 视点相关的辐射率回归(View-dependent radiance regression)
    • 密度回归(Density regression)
  • 基于点的神经辐射场重建(Point-NeRF Reconstruction)
    • 生成初始的基于点的辐射场(Generating initial point-based radiance fields)
    • 点位置和置信度(Point location and confidence)
    • 点特征(Point features)
  • 优化基于点的辐射场(Optimizing point-based radiance fields)
    • 点修剪(Point pruning)
    • 点生长(Point growing)
  • 实施细节(Implementation details )
    • 网络详细信息(Network details)
    • 训练和优化细节
  • 参考

项目地址
论文地址
源码地址
会议/期刊:CVPR 2022

个人理解

此篇文章,在传统NeRF的基础上,先利用MVSNet根据图像生成一个初始点云,再用一个2D卷积神经网络学习图片中的特征,添加到对应点云的点上,这样可以不对空间中位置进行采样,而是只对点云表面附近的点进行采样,提升了计算效率,而且模型具有一定的泛化性。

还提出了两个新方法,点修剪和点生长,迭代优化训练结果,删除置信度小于一定阈值的点,增加置信度大于一定阈值的点。

摘要

传统的NeRF神经绘制方法可以生成高质量的视图合成结果,但由于对每个场景进行了优化,导致重建时间过长。

深度多视图立体(deep multi-view stereo)方法可以通过直接的网络推理快速重建场景几何。

point-nerf结合了这两种方法的优点,使用神经三维点云,与相关的神经特征,以模拟一个辐射场。可以获得比传统NeRF更好的视觉质量,而且训练速度加快30倍。

本文还提出了一种点剪枝和生长技术,可以逐渐提高几何建模和渲染质量。

简介

在这里插入图片描述
基于点的辐射场可以通过多视图图像的网络进行预测,然后针对每个场景进行优化,可以在数十分钟内实现超越 NeRF 的重建质量。

Point-NeRF 还可以利用现成的重建方法,如 COLMAP,并且能够执行点修剪和增长,自动修复这些方法中常见的孔洞和异常值。

基于点的NeRF表示

体渲染和辐射场(Volume rendering and radiance fields)

通过使光线穿过像素、沿射线在 x j x_j xj处采样 M 个着色点 x j ∣ j = 1 , . . . , M {x_j | j = 1, ..., M } xjj=1,...,M 并使用体积密度累积辐射率(我理解为颜色)来计算像素的辐射亮度,如下:
在这里插入图片描述
这个公式与传统NeRF中的体渲染公式基本一致,如果不容易理解可以参考这篇文章。
这里 τ \tau τ表示体积透过率; σ j σ_j σj r j r_j rj x j x_j xj 处每个着色点 j 的体积密度和辐射亮度, Δ t \Delta t Δt 是相邻着色样本之间的距离。
辐射场表示任意 3D 位置处的体积密度 σ 和与视图相关的辐射率 r。

基于点的辐射场(Point-based radiance field)

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 表示神经点云,其中每个点 i 是位于 p i p_i pi 并与编码本地场景内容的神经特征向量 f i f_i fi 相关联的点。

本文为每个点分配了一个尺度置信值 γ i ∈ [ 0 , 1 ] \gamma i \in [0, 1] γi[0,1],表示该点位于实际场景表面附近的可能性。然后从P点云回归辐射场。

给定任何 3D 位置 x,查询其周围一定半径 R 内的 K 个相邻神经点。本文的基于点的辐射场可以抽象为一个神经模块,对于任何位置x,该模块从与其相邻的神经点回归其体积密度 σ \sigma σ 和与视图相关的辐射率 r r r(沿着任何观看方向 d):
( σ , r ) = P o i n t − N e R F ( x , d , p 1 , f 1 , γ 1 , . . . , p K , f K , γ K ) (\sigma,r)=Point-NeRF(x,d,p_1,f_1,\gamma_1,...,p_K,f_K,\gamma_K) (σ,r)=PointNeRF(x,d,p1,f1,γ1,...,pK,fK,γK)

本文使用具有多个子 多层感知机(MLP) 的类似 PointNet 的神经网络来进行此回归。首先对每个神经点进行神经处理,然后聚合多点信息以获得最终的估计。

逐点处理(Per-point processing)

本文使用 MLP F来处理每个相邻神经点,通过以下方式预测着色位置 x 的新特征向量:
f i , x = F ( f i , x − p i ) f_{i,x}=F(f_i,x-p_i) fi,x=F(fi,xpi)
原始特征 f i f_i fi p i p_i pi周围的本地3D场景内容进行编码。该MLP网络表达了一个局部3D函数,该函数输出 x 处的特定神经场景描述 f i , x f_{i,x} fi,x,由其局部框架中的神经点建模。相对位置 x − p x−p xp的使用使网络对于点平移具有不变性,以实现更好的泛化。

视点相关的辐射率回归(View-dependent radiance regression)

本文使用标准反距离加权来聚合从这K个相邻点回归的神经特征 f i , x f_{i,x} fi,x,以获得描述x处场景外观的单个特征 f x f_x fx
f x = ∑ i γ i w i ∑ w i f i , x , w h e r e ( w i = 1 ‖ p i − x ‖ ) f_x = \sum_i \gamma_i \frac{w_i}{\sum w_i} f_{i,x}, where (w_i = \frac{1}{‖p_i − x‖}) fx=iγiwiwifi,x,where(wi=pix1)
然后,在给定观察方向 d 的情况下,MLP R将根据该特征回归与视图相关的辐射率:
r = R ( f x , d ) r = R(f_x,d) r=R(fx,d)

密度回归(Density regression)

同样使用标准反距离加权聚合方法来计算 x 处的体积密度 σ。首先使用 MLP T回归每个点的密度 σ i \sigma_i σi,然后进行基于反距离的加权,如下所示:
σ i = T ( f i , x ) \sigma_i=T(f_{i,x}) σi=T(fi,x)
σ = ∑ i σ i γ i w i ∑ w i , w h e r e ( w i = 1 ‖ p i − x ‖ ) \sigma = \sum_i \sigma_i\gamma_i \frac{w_i}{\sum w_i}, where (w_i = \frac{1}{‖p_i − x‖}) σ=iσiγiwiwi,where(wi=pix1)

可见,每个神经点直接对体积密度做出贡献,并且点置信度 γ i \gamma_i γi 与该贡献明确相关。后面在点删除过程中利用了这一点(原论文第 4.2 节,优化基于点的辐射场)。

基于点的神经辐射场重建(Point-NeRF Reconstruction)

在这里插入图片描述
首先利用跨场景训练的深度神经网络,通过直接网络推理生成初始的基于点的场(初始点云)。通过本文的点生长和修剪技术,这个初始场在每个场景中得到进一步优化,从而实现最终的高质量辐射场重建。该图显示了该工作流程以及初始预测和场景优化的相应梯度更新。

生成初始的基于点的辐射场(Generating initial point-based radiance fields)

本文提出了一个神经生成模块来预测所有神经点属性,包括点位置 p i p_i pi、神经特征 f i f_i fi 和点置信度 γ i \gamma_i γi,通过前馈神经网络进行有效重建。网络直接推理输出良好的基于​​点的初始辐射场。然后可以对初始场进行微调以实现高质量渲染。在很短的时间内,渲染质量更好或与 NeRF 相当,而 NeRF 需要更长的时间来优化。见表。
在这里插入图片描述

点位置和置信度(Point location and confidence)

利用深度 MVS 方法使用基于成本体积的 3D CNN 生成 3D 点位置 [10, 59]。这样的网络可以产生高质量的密集几何结构,并且可以很好地跨领域推广。

对于视点 q 处具有相机参数 ϕ q \phi_q ϕq 的每个输入图像 I q I_q Iq,按照 MVSNet 首先通过扭曲相邻视点的 2D 图像特征来构建平面扫描成本体积,然后使用深度 3D CNN 回归深度概率体积。通过线性组合按概率加权的每平面深度值来计算深度图。我们将深度图投影到 3D 空间以获得每个视图 q 的点云 { p 1 , . . . , p N q } \{p_1, ..., p_{Nq} \} {p1,...,pNq}(这段描述比较长,因为本人没有深入了解MVSNet,这里就理解为用MVSNet方法生成了每个视图的点云)(挖个坑,等读过MVSNet之后再来解释)

由于深度概率描述了点位于表面上的可能性,因此本文对深度概率体积进行三线性采样(挖坑,不懂三线性采样),以获得每个点 p i p_i pi 处的点置信度 γ i \gamma_i γi

该过程用公式表示:
{ p i , γ i } = G p , γ ( I q , ϕ q , I q 1 , ϕ q 1 , I q 2 , ϕ q 2 , . . . ) \{p_i,\gamma_i\}=G_{p,\gamma}(I_q,\phi_q,I_{q1},\phi_{q1},I_{q2},\phi_{q2},...) {pi,γi}=Gp,γ(Iq,ϕq,Iq1ϕq1,Iq2,ϕq2,...)
其中 G p , γ G_{p,\gamma} Gp,γ 是基于 MVSNet 的网络。 I q 1 、 ϕ q 1 、 . . . I_{q1}、\phi_{q1}、... Iq1ϕq1...是 MVS 重建中使用的附加相邻视图;在大多数情况下使用两个附加视图。

总结:用MVSNet网络生成每个点的位置和置信度

点特征(Point features)

使用 2D CNN G f G_f Gf 从每个图像 I q I_q Iq 中提取神经 2D 图像特征图。这些特征图与 G p , γ G_{p,\gamma} Gp,γ 的点(深度)预测对齐,并用于直接预测每点特征 f i f_i fi 为:
{ f i } = G f ( I q ) \{f_i\} = G_f (I_q) {fi}=Gf(Iq)
G f G_f Gf 使用具有三个下采样层的 VGG 网络架构。将不同分辨率下的中间特征组合为 f i f_i fi,提供有意义的点描述来模拟多尺度场景外观。

总结:用2D CNN G f G_f Gf提取每个点的特征

优化基于点的辐射场(Optimizing point-based radiance fields)

初始点云,尤其是来自外部重建方法(例如图 1 中的 Metashape 或 COLMAP)的点云,通常可能包含孔洞和异常值,从而降低渲染质量。在逐场景优化过程中,为了解决这个问题,本文提出了应用新颖的点修剪和生长技术来逐渐提高几何建模和渲染质量。

点修剪(Point pruning)

前面设计了点置信值 γ i \gamma_i γi来描述神经点是否靠近场景表面。利用这些置信值来修剪不必要的异常点。注意,根据前面体积密度回归中的公式可知点置信度与每点的贡献直接相关;因此,低置信度反映了点局部区域的低体积密度,表明该点是空的。本文选择每 10K 迭代修剪 γ i < 0.1 \gamma_i < 0.1 γi<0.1的点。
本文还在点置信度上施加了稀疏损失: L s p a r s e = 1 ∣ γ ∣ ∫ γ i [ l o g ( γ i ) + l o g ( 1 − γ i ) ] L_{sparse} = \frac{1}{|\gamma|}\int_{\gamma_i} [log(\gamma_i) + log(1 − \gamma_i)] Lsparse=γ1γi[log(γi)+log(1γi)] 这迫使置信值接近于零或一。
在这里插入图片描述

点生长(Point growing)

利用在光线行进中采样的每光线着色位置来识别新的候选点 ( 体渲染部分提到的 x j ) (体渲染部分提到的x_j) (体渲染部分提到的xj)。具体来说,确定沿着光线具有最高不透明度的着色位置 x j g x_{j_g} xjg
α j = 1 − e x p ( − σ j Δ j ) , j g = a r g m a x j α j \alpha_j = 1 − exp(−\sigma_j\Delta_j), j_g = argmax_j \alpha_j αj=1exp(σjΔj),jg=argmaxjαj

ϵ j g \epsilon_{j_g} ϵjg 表示 x j g x_{j_g} xjg 到其最近神经点的距离。

α j g 和 ϵ j g \alpha_{j_g}和\epsilon_{j_g} αjgϵjg大于一定阈值就在 x j g x_{j_g} xjg位置添加一个点。通过重复这种增长策略,辐射场可以扩展到覆盖初始点云中缺失的区域。

实施细节(Implementation details )

网络详细信息(Network details)

训练和优化细节

首先使用类似于原始 MVSNet 论文 [59] 的GroundTruth深度来预训练基于 MVSNet 的深度生成网络。然后,纯粹使用 L2 渲染损失 L r e n d e r \mathcal{L}_{render} Lrender 训练完整管道,通过GroundTruth监督光线行进(通过体渲染方程)的渲染像素,以获得最终的 Point-NeRF 重建网络。
在逐场景优化阶段,本文采用结合了渲染和稀疏损失的损失函数
L o p t = L r e n d e r + a L s p a r s e \mathcal{L}_{opt} = \mathcal{L}_{render} + a\mathcal{L}_{sparse} Lopt=Lrender+aLsparse

参考

  1. 论文随记|Point-NeRF: Point-based Neural Radiance Fields
  2. 【论文精读】Point-NeRF:Point-based Neural Radiance Fields
  3. NeRF神经辐射场学习笔记(三)——Point-NeRF论文解读
  4. 有真实参照的图像质量的客观评估指标:SSIM、PSNR和LPIPS

如果发现文章有什么问题,欢迎指出,我会在看到后修改;对于这篇文章有疑问也尽管提出,我尽量解答。欢迎交流。

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

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

相关文章

Kylin基础知识点解析与应用探索

目录 学习目标&#xff1a; 学习内容&#xff1a; 学习时间&#xff1a; 学习产出&#xff1a; Kylin简介 什么是Kylin Kylin的历史和发展 Kylin在大数据领域的地位和作用 Kylin架构 Kylin的组成部分和模块 Kylin的工作原理和流程 Kylin与其他大数据组件的关系和集成 Kylin功能…

el-select如何去掉placeholder属性

功能要求是&#xff1a;当el-select的disabled属性为true的时候不展示“请选择”字样 1、要去掉 el-select 元素的 placeholder 属性&#xff0c;可以在代码中将其设置为空字符串。 <el-select placeholder"" ...></el-select> 注意&#xff1a;这种方…

Keil5软件仿真 定时器互补通道 波形输出(Logic Analyzer)

步骤一&#xff1a;管脚配置确认。 ①配置定时器的管脚模式为复用推挽输出模式&#xff08;GPIO_MODE_AF_PP&#xff09;&#xff01;&#xff01;&#xff01;&#xff0c;注意&#xff1a;复用开漏模式软件仿真时无波形。 步骤二&#xff1a;编译程序。 ①点击编译按钮。 …

生产者和消费者模式

在一个系统中&#xff0c;存在生产者和消费者两种角色&#xff0c;他们通过内存缓冲区进行通信&#xff0c;生产者生产消费者需要的资料&#xff0c;消费者把资料做成产品。 最关键就是内存缓冲区为空的时候消费者必须等待&#xff0c;而内存缓冲区满的时候&#xff0c;生产者…

C# WPF上位机开发(QT vs WPF)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 最近经常收到朋友们的私信&#xff0c;他们对C# WPF开发很感兴趣&#xff0c;但是呢&#xff0c;正当准备学习的时候&#xff0c;又有人告诉他们应…

Vue 的两种实现:VSCode 中配置 vue 模板快捷方式的过程

1、创建配置文件&#xff1a; 其一、打开 VSCode &#xff0c;CtrlShiftP, 打开搜索框&#xff1a; 其二、输入&#xff1a;user, 并点击进去 Snippets:Configure User Snippets 其三、输入 vue3js 并回车&#xff1a; 其四、打开项目&#xff0c;发现配置文件 vue3js.code-sn…

标签 VS 数据指标,概念与区别

一、标签体系相关概念 标签由标签和标签值组成&#xff0c;打在目标对象上&#xff0c;如图所示。 打标签示例 标签由互联网领域逐步推广到其他领域&#xff0c;打标签的对象也由用户、产品等扩展到渠道、营销活动等。 在互联网领域&#xff0c;标签有助于实现精准营销、定向推…

鸿蒙声势浩大,程序员能从中看出什么机遇?

鸿蒙声势浩大&#xff0c;在最近的大厂商合作消息中我们能看到什么未来机遇&#xff1f;&#xff1f; 12 月 22 日消息&#xff0c;据华为开发者联盟服务消息&#xff0c;来自政务、金融、教育等行业的 8 家企业与华为签约并官宣启动鸿蒙原生应用开发。此前&#xff0c;美团、…

Kubernetes pod ip 暴露

1. k8s pod 和 service 网络暴露 借助 iptables 的路由转发功能&#xff0c;打通k8s集群内的pod和service网络&#xff0c;与外部网络联通 # 查看集群的 pod 网段和 service 网段 kubectl -n kube-system describe cm kubeadm-config networking:dnsDomain: cluster.localpod…

Kafka收发消息核心参数详解

文章目录 一、从基础的客户端说起消息发送者主流程消息消费者主流程 二、从客户端属性来梳理客户端工作机制消费者分组消费机制生产者拦截器机制消息序列化机制消息分区路由机制生产者消息缓存机制发送应答机制生产者消息幂等性生产者消息事务 三、客户端流程总结四、SpringBoo…

ubuntu20.04下安装pcl_ubuntu安装pcl

pcl点云数据库&#xff0c;用来进行3D信息的获取与处理&#xff0c;和opencv相比较&#xff0c;opencv是用来处理二维信息&#xff0c;他是学术界与工业界针对点云最全的库&#xff0c;且网络上相关的资料很多。以下是pcl的安装步骤以及遇到的问题。 提前说明&#xff0c;本人…

算法基础之表达整数的奇怪方式

表达整数的奇怪方式 中国剩余定理: 求M 所有m之积 然后Mi M / mi x 如下图 满足要求 扩展中国剩余定理 找到x **使得x mod mi ai**成立 对于每两个式子 都可以推出①式 即 用扩展欧几里得算法 可以算出k1,-k2和m2–m1 判无解 : 若**(m2–m1) % d ! 0** 说明该等式无解 …

无约束优化问题求解(3):共轭梯度法

目录 4. 共轭梯度法4.1 共轭方向4.2 共轭梯度法4.3 共轭梯度法的程序实现4.4 非二次函数的共轭梯度法 Reference 4. 共轭梯度法 4.1 共轭方向 最速下降法的线搜索采取精确线搜索时&#xff0c;由精确线搜索需要满足的条件&#xff1a;迭代点列 x k 1 x k α k d k x_{k1}…

Java中使用JTS实现WKB数据写入、转换字符串、读取

场景 Java中使用JTS实现WKT字符串读取转换线、查找LineString的list中距离最近的线、LineString做缓冲区扩展并计算点在缓冲区内的方位角&#xff1a; Java中使用JTS实现WKT字符串读取转换线、查找LineString的list中距离最近的线、LineString做缓冲区扩展并计算点在缓冲区内…

MFC静态链接+libtiff静态链接提示LNK2005和LNK4098

编译报错 1>msvcrt.lib(ti_inst.obj) : error LNK2005: "private: __thiscall type_info::type_info(class type_info const &)" (??0type_infoAAEABV0Z) 已经在 libcmtd.lib(typinfo.obj) 中定义 1>msvcrt.lib(ti_inst.obj) : error LNK2005: "pr…

电子说明书制作:零基础也可以轻松上手

引言&#xff1a; 在数字化时代&#xff0c;电子说明书成为了传统纸质说明书的现代替代品。电子说明书具有可交互性、易更新、环保等优势&#xff0c;越来越受到企业和个人的青睐。本文将介绍一些简单易用的工具和方法&#xff0c;帮助零基础的用户轻松上手电子说明书的制作。…

Sui 生态排名第一的头部流动性协议 NAVI Protocol 活动进行中

作为在熊市中启动的新生公链&#xff0c;Sui 正在稳步崛起。公链的 TVL 持续攀升&#xff0c;目前已经达到了 1.76亿美元&#xff0c;闯入了公链排名前20榜单。仅过去四个月内&#xff0c;TVL 增加了10倍&#xff0c;并且增长仍在继续&#xff0c;SUI 的价格在近期也有了很亮眼…

智能优化算法应用:基于瞬态优化算法3D无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用&#xff1a;基于瞬态优化算法3D无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用&#xff1a;基于瞬态优化算法3D无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.瞬态优化算法4.实验参数设定5.算法结果6.…

网络调优,部署内网备份冗余和负载分担---实验

目录 网络调优&#xff0c;部署内网备份冗余和负载分担---实验 拓扑 需求 配置步骤&#xff1a; 配置命令: 网络调优&#xff0c;部署内网备份冗余和负载分担---实验 拓扑 需求 主机获取IP地址&#xff0c;访问WEB服务器&#xff0c;WEB服务器网关在SW5上SW5作为VLAN10,V…

Qt配置opencv,cmake编译参考笔记,已成功

Qt版本&#xff1a;Qt5.14.2 opencv&#xff1a;4.5.4&#xff08;不要用4.5.5&#xff01;&#xff01;很坑别问我为什么知道&#xff09; cmake&#xff1a;下的最新版本 前言&#xff1a;为什么非得要用cmake编译呢&#xff1f;跳过cmake不好吗&#xff1f; 之前用的opencv…