NeuRay学习笔记

news2024/11/22 6:47:40

Neural Rays for Occlusion-aware Image-based Rendering

主页:https://liuyuan-pal.github.io/NeuRay/
论文:https://arxiv.org/abs/2107.13421
Code:https://github.com/liuyuan-pal/NeuRay
效果

desktop

摘要

We present a new neural representation, called Neural Ray (NeuRay), for the novel view synthesis task. Recent works construct radiance fields from image features of input views to render novel view images, which enables the generalization to new scenes. However, due to occlusions, a 3D point may be invisible to some input views. On such a 3D point, these generalization methods will include inconsistent image features from invisible views, which interfere with the radiance field construction. To solve this problem, we predict the visibility of 3D points to input views within our NeuRay representation. This visibility enables the radiance field construction to focus on visible image features, which significantly improves its rendering quality. Meanwhile, a novel consistency loss is proposed to refine the visibility in NeuRay when finetuning on a specific scene. Experiments demonstrate that our approach achieves stateof-the-art performance on the novel view synthesis task when generalizing to unseen scenes and outperforms perscene optimization methods after finetuning.
译文:
提出了一种新的神经元表示方法,称为神经射线(NeuRay),用于新的视图合成任务。近年来的研究工作利用输入视图的图像特征构造辐射场来绘制新的视图图像,从而实现对新场景的泛化。然而,由于遮挡,3D点对于某些输入视图可能不可见。在这样的3D点上,这些泛化方法将包括来自不可见视图的不一致图像特征,这干扰辐射场构造。为了解决这个问题,我们预测了NeuRay表示中3D点对输入视图的可见性。这种可见性使得辐射场构造能够集中在可见图像特征上,这显著提高了其渲染质量。同时,提出了一种新的一致性损失算法,用于在NeuRay中对特定场景进行微调时改善可见性。实验结果表明,该方法在泛化到不可见场景时具有最佳的合成性能,在微调后的合成性能优于基于场景的优化方法。

文章工作

问题:

  • 不能推广到看不见的场景,因为它们学习场景特定的网络,这通常需要几个小时或几天的时间来学习单个场景。(场景限制,耗时)
    • NVS的目标是从任意虚拟相机姿态合成场景的图像。
    • 神经辐射场(NeRF)[33]表明,可以通过在神经网络中编码的5D辐射场上进行体绘制来合成新视图的照片级真实感图像,该神经网络将位置和方向映射到密度和颜色。

在这里插入图片描述

图1.(a)没有遮挡,局部图像特征在表面点上是一致的。(b)由于遮挡,局部图像特征在表面点上不一致。(c)局部图像特征在非表面点上不一致。由于特征一致性,泛化方法将正确地向(a)中的表面点分配大密度。然而,当特征在(b)和(c)中不是非常一致时,这些方法相对难以正确地确定密度。

工作

该文章提出了一种新的神经元表示方法–神经射线(NeuRay)。NeuRay由每个输入视图上的像素对齐特征向量组成。在从输入视图上的像素发射的摄像机射线上,该像素上的相关NeuRay特征向量能够预测可见性,以确定特定深度处的3D点是否可见。有了这样的可见性,我们可以很容易地区分图1中遮挡引起的特征不一致性和非表面引起的特征不一致性,这导致更准确的辐射场构造,从而在具有严重自遮挡的困难场景上获得更好的渲染质量。

  • 有助于在不可见场景上构建辐射场,而且能够通过在特定场景上微调来完善自身,并具有新颖的一致性损失。
  • 提出了一个损失,以加强来自NeuRay表示和来自构建的辐射场的表面位置之间的一致性。这种损失使NeuRay能够记住辐射场预测的场景几何结构。同时,NeuRay中存储的场景几何结构反过来将通过提供更好的遮挡推断来改善辐射场构建。
  • 我们的方法也属于基于图像的绘制的范畴,并且也使用来自MVS方法的成本体积或估计深度。然而,我们的方法可以在没有外部MVS算法帮助的情况下从头训练,并且还可以在场景上进行微调以弥补MVS的重建误差。

挑战

  • 如何估计不可见场景中的可见性。这是先有鸡还是先有蛋的问题,因为可见度的估计需要知道表面位置,而估计的可见度旨在用于辐射场构造中的更好的表面估计。为了打破这种循环,我们建议应用精心设计的多视图立体(MVS)算法,如成本体积构建[62]或面片匹配[49],以重建场景几何结构,然后从重建的几何结构中提取NeuRay的像素对齐特征向量。最后,将NeuRay用于可见度的计算,以改善辐射场的构建。
  • 另一个问题是如何在NeuRay中参数化这种可见性。一种直接的方法是预测从视图到3D点沿着摄像机光线的密度,然后累积这些密度以计算透射率作为可见度,如NeRF [33]。然而,使用该策略计算可见性在计算上是不切实际的,因为给定N个输入视图和一个3D点,我们应该沿着从每个输入视图到该3D点的所有N条相机射线累积密度,这意味着我们需要在每条相机射线上采样K个点,并评估所有N × K个采样点上的密度。为了降低计算复杂度,我们使用NeuRay中的累积分布函数(CDF)直接参数化可见性,这避免了沿着射线的密度累积,并且仅需要N个网络前向传递来计算所有N个输入视图的可见性。

Method

Volume rendering

在这里插入图片描述

图2.从输入视图动态构建辐射场,通过体绘制合成测试视图图像。首先在测试射线上采样点,然后聚合输入视图的局部特征确定采样点的alpha值和颜色,最后通过体绘制累积颜色计算输出颜色。我们的方法在输入视图上构建NeuRay来预测样本点的可见性,从而允许在这些样本点上进行遮挡感知特征聚合

Occlusion-aware radiance field construction

  • 辐射场动态构建

    • 与学习特定场景神经辐射场的NeRF [33]相反,泛化渲染方法[5,57,58,65]通过聚集局部特征来动态地构造辐射场。如图2所示,给定一个3D点 p i ∈ R 3 p_i \in R^3 piR3,这些方法首先通过CNN提取输入视图上的特征,然后通过下式聚合该点上输入视图的特征:
      f i = M ( { f i , j ∣ j = 1 , … , N } ) \boldsymbol{f}_{i}=\mathcal{M}\left(\left\{\boldsymbol{f}_{i, j} \mid j=1, \ldots, N\right\}\right) fi=M({fi,jj=1,,N})
    • 其中 f i , j f_{i,j} fij是投影在第 j j j个输入视图上的采样点 p i p_i pi的局部图像特征, M \mathcal{M} M是聚集来自不同视图的特征以产生特征 f i f_i fi的网络。然后,该点 p i p_i pi σ 值 σ i \sigma值\sigma_i σσi和颜色 c i c_i ci将由其他网络从聚合特征 f i f_i fi解码。
  • 遮挡感知构造

    • 该方法与已有方法一样,也可以动态地建立辐射场。另外,我们预测可见性项 v i , j v_{i,j} vij,其示出第j个输入视图对于该3D点 p i p_i pi是否可见,以用于遮挡感知特征聚合
      f i = M ( { f i , j , v i , j ∣ j = 1 , … , N } ) \boldsymbol{f}_{i}=\mathcal{M}\left(\left\{\boldsymbol{f}_{i, j},\boldsymbol{v}_{i,j} \mid j=1, \ldots, N\right\}\right) fi=M({fi,j,vi,jj=1,,N})
    • 在这种情况下,聚合网络 M \mathcal{M} M能够关注聚合特征 f i f_i fi中的可见视图,并且减少来自不可见视图的干扰。

NeuRay representation

给定从输入视图发射的摄像机光线(称为输入光线),NeuRay能够预测可见度函数v(z),该函数指示深度z处的点对于该输入光线是否可见,如图3所示。在每个输入视图上,NeuRay由可见性特征映射 G ∈ R H × W × C G \in R^{H×W×C} GRH×W×C表示。设 G ∈ R C G \in R^{C} GRC为给定输入光线在G上对应的特征向量,我们将计算该输入光线从g的可见度 v ( z ) v(z) vz。显然,一个有效的可见性函数 v ( z ) v(z) vz应该在z上是非增的,并且 0 ≤ v ( z ) ≤ 1 0 ≤ v(z)≤ 1 0vz1。在下文中,我们讨论如何从g参数化可见性函数 v ( z ) v(z) vz

  • 遮挡概率的可见性:
    • 我们用累积密度函数(CDF)t(z)表示可见性函数, v ( z ) = 1 − t ( z ) v(z)= 1− t(z) vz=1tz,如图3所示,它被参数化为logistics distributions的混合.
    • 其中,我们混合 N l N_l Nl个logsitics分布, μ i \mu_ i μi是第i个logsitics分布的均值, σ i \sigma_i σi是标准差, w i wi wi是混合权重,其中 ∑ i w i = 1 , S ( ⋅ ) \sum_ i wi = 1,S(·) iwi=1S是S形函数。所有参数 ∣ μ i , σ i , w i ∣ = F ( g ) |\mu_i,\sigma_i,w_i| = F(g) μiσiwi=Fg由MLP F从特征g解码。作为CDF,t(z)是非递减的,因此1 − t(z)形成有效的可见性函数。
    • t(z)实际上对应于输入射线在深度z之前被遮挡的遮挡概率,并且我们将对应的概率密度函数(PDF)称为命中概率密度。可见度v(z)实际上是z之后PDF曲线下的面积。一般来说,一条射线只会击中一个表面,因此一次logistics分布就足够了。但是,当光线照射到半透明曲面或曲面边时,使用混合logistics 分布可以提高性能。

或者,我们可以用NeRF类密度来参数化可见性。然而,用这种策略计算可见性在计算上过于密集。在该公式中,我们直接解码密度d(z)=(z;g)使用MLP从g出发。为了计算可见度v(z),我们需要先对深度{zk}进行采样,其中zk〈z,计算它们的密度d(zk)和相应的α值αk
= 1 − exp(−ReLU(dk)),最后得到可见度 v ( z ) = ∏ k = 1 K r ( 1 − α k ) v(z)= \prod_{k=1}^{Kr} (1 − αk) vz=k=1Kr1αk。虽然这个公式是一个有效的可见性函数,但它在计算上是不切实际的,因为它需要Kr次对的求值来计算输入视图对一个点的可见性。

在这里插入图片描述

图三,NeuRay中的可见性计算。NeuRay由每个输入视图上的可见性特征图G组成。G上的每个特征向量g都可以通过MLP解码为一个混合的logistics distributions。该分布示出了从位置g发射的输入光线的可见度函数v(z),位置g是深度z之后的曲线下的面积。

Generalize with NeuRay

  • Pipeline:
    • NeuRay在不可见场景中渲染的整个流程如图4所示。在所有输入视图上,通过MVS算法[49,62]估计成本体积或深度图,其由CNN处理以产生可见性特征图G。然后,对于测试射线上的3D样本点,我们计算输入视图对这些点的可见性 v i , j v_{i,j} vij(第3.3)并且聚集局部特征 f i , j f_{i,j} fij以及 v i , j v_{i,j} vij以计算这些点上的 α \alpha α和c。最后,通过体绘制沿测试射线累积 α \alpha α值和颜色,以合成测试图像。

在这里插入图片描述

图4.使用NeuRay渲染的管道。1.在输入视图上,估计成本体积或深度图,其用于由CNN预测可见性特征图。2.可见性特征图用于计算输入视图对3D点的可见性。3.对于3D点,我们聚合输入视图中的局部特征以及可见性,以计算这些点上的alpha值和颜色。4.体积渲染用于累积阿尔法值和颜色以合成图像。

  • Loss:
    • 整个渲染框架可以在训练场景上进行预训练,然后直接应用于不可见场景进行渲染。为了对渲染框架进行预训练,我们随机选择训练场景中的一个视图作为测试视图,并使用其他视图作为输入视图来渲染所选的测试视图,但会有渲染损失:
      ℓ render  = ∑ ∥ c − c g t ∥ 2 \ell_{\text {render }}=\sum\left\|\boldsymbol{c}-\boldsymbol{c}_{g t}\right\|^{2} render =ccgt2

Finetune with NeuRay

  • NeuRay的可训练参数:

    • 图5示出了图4中CNN的详细结构。在每个输入视图上,构造的成本体积(或估计的深度图)和可见性特征图G之间的中间特征图 G ′ ∈ R H × W × C G′ ∈ R^{H×W×C} GRH×W×C被视为该输入视图的NeuRay的可训练参数。我们称G′之前的卷积层为初始化网络,称G′和G之间的卷积层为可见性编码器。参数G′不是从零开始训练的,而是由初始化网络使用构造的成本体或估计的深度图来初始化的。然后,丢弃初始化的网络,同时在微调中优化G′沿着其他网络参数。

    在这里插入图片描述

图5.在对场景进行微调时,将中间特征映射G ′作为NeuRay的可训练参数,由初始化网络初始化。然后,在微调中丢弃初始化网络。

  • 一致性损失:
    • 除了渲染损失,我们还在微调中使用一致性损失。由于构建的辐射场和NeuRay的可见性都描述了场景几何结构,因此我们可以在微调中加强它们之间的一致性。具体地,在微调中,我们在伪测试射线上采样点 p i ≡ p ( z i ) p_i ≡ p(z_i) pipzi,并从构造的辐射场计算采样点上的命中概率 h i h_i hi。同时,伪测试视图也是输入视图,在该输入视图上存在NeuRay表示以解码该伪测试射线的分布t(z)。基于t(z),我们通过下式计算每个采样点 p i p_i pi上的新命中概率 h i h_i hi:
      h ~ i = t ( z i + 1 ) − t ( z i ) \tilde{h}_{i}=t\left(z_{i+1}\right)-t\left(z_{i}\right) h~i=t(zi+1)t(zi)
    • 其中 z i z_i zi是点的深度。因此,我们可以通过加强 h ~ i \tilde h_i h~i h i h_i hi之间的一致性来构造损失:
      ℓ consist  = 1 K t ∑ i = 1 K t C E ( h ~ i , h i ) \ell_{\text {consist }}=\frac{1}{K_{t}} \sum_{i=1}^{K_{t}} C E\left(\tilde{h}_{i}, h_{i}\right) consist =Kt1i=1KtCE(h~i,hi)
    • 式中CE为交叉熵损失;

结果对比

在这里插入图片描述

图6.不同方法的定性结果

在这里插入图片描述

图7.我们的方法比NeRF更清晰地呈现细节。

在这里插入图片描述

图8.比较混合物流分布Nl = 2和单一物流分布Nl = 1的阻塞概率。混合逻辑分布改善了深度突然变化的边缘上的结果(红色矩形)。

在这里插入图片描述

NeRF合成数据集上的PSNR和训练步骤/时间。

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

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

相关文章

一文读懂 UniProt 数据库(2023 最新版)

一、UniProt 数据库介绍 Uniprot (Universal Protein )是包含蛋白质序列,功能信息,研究论文索引的蛋白质数据库,整合了包括EBI( European Bioinformatics Institute),SIB&#xff0…

【面试题】前端最新面试题-浏览器 dom、bom篇

原文见:语雀(https://www.yuque.com/deepstates/interview/fsitlt) ● BOM ● window对象 ○ frames ■ iframe ■ 跨窗口通信 ■ 同源策略/跨域 ○ navigator ● DOM ○ DOM结构 ○ DOM操作 ○ DOM事件 ■ 表单事件 ● 浏览器渲染 ○ 进程、…

Vue组件化编程的组件通信

对于组件化编程,组件之间的通信技术无疑是非常重要的内容,需要将细节牢牢把握。 组件通信,就是子组件放置在父组件内之后,父组件如何向子组件传递参数以及子组件如何与外部组件进行互动。 这部分的知识很重要,需要展开…

基于Ubuntu20.04搭建OpenHarmony v3.0.6的qemu仿真环境

基于Ubuntu20.04搭建OpenHarmony v3.0.6的qemu仿真环境0. 前言1. 安装Ubuntu1.1 更换华为源1.2 安装必要工具2. 下载代码2.1 解压与目录设置3. 配置环境3.1 安装库和工具3.2 设置python版本3.3 安装编译工具hb3.4 切换dash为bash4. 编译4.1 hb构建4.2 启动qemu5. 第二种环境配置…

Java之日期与时间、JDK8新增日期类、包装类、正则表达式、Arrays类、常见算法和Lambda表达式

目录日期与时间DateSimpleDateFormatCalendar概述JDK8新增日期类概述、LocalTime /LocalDate / LocalDateTimeInstantDateTimeFormatterDuration/PeriodchronoUnit包装类正则表达式Arrays类Arrays类概述,常用功能演示Arrays类对于Comparator比较器的支持常见算法选择…

[论文翻译] GIKT: A Graph-based Interaction Model forKnowledge Tracing

摘要随着在线教育的快速发展,知识追踪(KT)已成为追踪学生知识状态并预测他们在新问题上的表现的基本问题。在线教育系统中的问题通常很多,并且总是与更少的技能相关联。然而,以往的文献未能将问题信息与高阶问题-技能相…

计网必会:电路交换和分组交换

电路交换和分组交换的概念和区别,为什么分组交换更有效? 电路交换:由于电路交换在通信之前要在通信双方之间建立一条被双方独占的物理通路(由通信双方之间的交换设备和链路逐段连接而成) 特点是源和目标点建立起名副其…

C语言中的void*是什么?

目录1.void *是什么2.void*的解引用3.void*类型的应用场景1.void *是什么 我们之前学过许多类型的指针变量,如整形指针,字符指针,甚至数组指针,函数指针等。 int a 10; int *pa &a;//整形指针pa接受一个整形变量a的地址但…

阻塞队列-BlockingQueue

一、BlockingQueue介绍BlockingQueue 继承了 Queue 接口,是队列的一种。Queue 和 BlockingQueue 都是在 Java 5 中加入的。阻塞队列(BlockingQueue)是一个在队列基础上又支持了两个附加操作的队列,常用解耦。两个附加操作:支持阻塞…

Win10 每天蓝屏多次,蓝屏代码0x3B:SYSTEM_SERVICE_EXCEPTION

环境: 联想E14笔记本 Win10 专业版 问题描述: Win10 每天发生蓝屏多次,蓝屏代码0x3B:SYSTEM_SERVICE_EXCEPTION 查看事件查看器,系统日志筛选ID1001的事件,蓝屏多次基本上都是3B这错误代码 解决方案: 1.禁用AMD显…

vue3 pinia 状态管理(清晰明了)

前言 最近学习cloud项目,前端使用到 vue3 ts 等技术,其中包括 pinia ,从一脸懵到渐渐清晰过程,在此记录一下,若有不足,希望大佬可以指出。 中文官方文档:https://pinia.web3doc.top/ 一、什…

2022年海南省职业院校技能大赛“网络安全”比赛任务书

2022年海南省职业院校技能大赛“网络安全” 比赛任务书 一、竞赛时间 总计:360分钟 二、竞赛任务书内容 (一)拓扑图 (二)A模块基础设施设置/安全加固(350分) 一、项目和任务描述&#xff…

服务器怎么防勒索病毒

行业背景 随着金融行业信息化建设的飞速发展,金融行业信息化系统经过多年的发展建设,目前信息化程度已经达到了较高水平。信息技术在提高管理水平、促进业务创新、提升企业竞争力方面发挥着日益重要的作用。 需求分析 随着金融信息化的深入发展&#…

Linux调试器-gdb使用

目录 1. 背景 2. 开始使用 3. 理解 创建需要调试的代码 debug&&release 4 详细调试 list/l 行号 list/l 函数名 r或run break(b) info b(reak) d num disable breakpoints enable breakpoints n (next) s(step) breaktrac…

ConcurrentHashMap 的优化及其与HashTable, HashMap的区别

目录 1.优化一:减小锁粒度 2.优化二:只针对写操作加锁 3.优化三:CAS 4.优化四:扩容方式 HashMap是线程不安全的,HashTable是线程安全的,关键方法加锁了.我们更推荐的是ConcurrentHashMap ,更优化的线程安全哈希表 接下来我们总结一下ConcurrentHashMap 进行了哪些优化,比H…

Nessus 扫描log4J漏洞

系列文章 Nessus介绍与安装 Nessus Host Discovery Nessus 高级扫描 Nessus 扫描web服务 Nessus 扫描log4J漏洞 1.扫描环境搭建 1.centos7 安装装宝塔面板 2.面板里下载docker 3.进入centos检查docker是否生效 docker --version4.安装docker-compose Docker Compose是一个…

使用WordPress搭建知识库门户网站的优缺点

使用知识库软件进行知识管理,帮助企业节约成本,为客户提供一个自助服务平台,提高客户满意度,据调查,73%的客户宁愿在网上搜索答案,而不是给工作人员打电话或者发短信,搭建一个知识库可能会耗费时…

TCP如何保证可靠传输,为什么应用层还需要确认机制

TCP的可靠传输实现 以下区别: 1、可靠传输(有序,保证对方一定接受到) 2、流量控制 这两个功能都是依靠滑动窗口来实现的 TCP实现可靠传输依靠的有 序列号、自动重传、滑动窗口、确认应答等机制。 序列号 首先我们说下序列号&am…

文件操作相关知识

1、为什么使用文件 前面我们在实现通讯录时,每次运行结束后,我们所存储的数据都会消失。这是因为我们将数据存储在栈区、堆区等内存上,而内存是不具有持久性的,程序退出时,权限还给操作系统,这些数据就会丢…

Unity 3D PC平台发布|| Unity 3D Web 平台发布||Unity 3D Android平台发布

Unity 3D PC平台发布 PC 是最常见的游戏运行平台。 随着欧美游戏的崛起,PC 平台随之发生游戏登陆大潮。 在 PC 平台上发布游戏的步骤: 打开要发布的 Unity 3D 工程,执行 File → Build Settings 菜单命令。在 Platform 列表框中选择 PC&am…